这次要演示的是控制伺服电机,用输入脉冲数控制旋转角度。
左侧是个低功率的步进电机,连接至右侧的伺服控制器,把复杂的相位控制转换成了简单的脉冲控制:只需确定旋转方向,输入指定数量脉冲,就能获得想要的角度。
如何让控制板输出想要的脉冲?之前演示过gpio命令可以翻转引脚电平高低从而产生脉冲,但在这个场景下明显效率太低,脉冲宽度也不能保证。这里要用到MCUSH提供的另一个实用命令“pulse”,可以产生指定数量脉冲,并保证脉冲宽度。
打开控制台,看看语法说明:
=>pulse --help
usage: pulse [--delay=] [-p ] [-I] [-D] [--invert]
options:
--delay default 5
-p/--pin default 0.0
-I/--init init
-D/--deinit deinit
--invert invert
number number
=>
首先初始化需要的端口,确定脉冲时间宽度,以及脉冲是否电平翻转。
=>pulse -p0.0 --delay=50 -I
=>
然后指定需要的脉冲数即可,所有脉冲全部输出完成后返回。
=>pulse 3
=>
上面的命令使得PA0口生成了3个脉冲,脉冲宽度50us,示波器检验如下:
需要注意的是脉冲的宽度是保证的(此时固件实时操作系统进入“临界区”,禁止任务抢占调度)