whyx:proj:labview0:steering

舵机控制

舵机是一种位置伺服的驱动器,广泛用于需要控制角度的系统中。
本实验采用9g舵机,其具有三个引脚: 黄色——信号线;红色——电源;棕色——地线

工作过程中,控制器发出PWM信号,舵机内部有基准信号可与控制器信号比对,
驱动芯片通过压差大小及正负控制电机正负旋转。

本实验舵机采用比对用基准为标准PWM脉宽0.5ms~2.5ms,周期为20ms,对应频率50Hz,为了与0~180°转角对应,我们取2.48ms为上限,
得到整数间隔 (2.48 - 0.5)ms / 180 = 11μs,进而,脉宽相应改变11μs,变化电机转动1°。反之,当我们希望电机转动1°时,占空比需要变化11μs/1980μs。

(本实验电压要求较高,故程序不能正常运行时不要过度伤心,先查看下电源情况,
同时用示波器查看自己的PWM信号输出电压是否正常、周期是否正确,波形正确的情况下应当对自己的程序保持信心!)

(实验用舵机为Tower Pro SG90,工作电压为4.2-6V。建议不要使用锂电池,因为其运转耗电量太大,锂电池容量不足,可以使用类似arduino板卡提供的5V输出,这样的电压稳定持续)

MPS-010602采集卡可以输出PWM信号,前面LED亮度渐变实验已经利用之,根据MPS说明书第12页,采样率不同PWM输出将对应两种频率,
1:时基为24M,16bit输出 —— 24*10^{6}次计数为1s,以此为时间基准,每次输出占 2^{16} = 65536次,故信号频率为 24*10^{6}÷65536=366Hz

2:时基为2M,8bit输出,信号频率为2*10^{6}÷2^{8} =7.8kHz

显然,这两种频率与舵机使用的标准频率均不匹配,我们先用自行构建PWM输出。
同学们也可以将GND和EX3信号接出到示波器,实际观察信号频率,这在参数位置的情况下是便捷和直观的。
下面,将介绍利用模拟信号输出数字信号输出构造PWM信号的方法。

信号输出在科研实践和工业中是常用的,例如,光学实验室中可以使用labVIEW控制脉冲信号形状和输出,达到精确控制光信号的目的。
所以,下面介绍的两种信号产生方式是常用和重要的。

模拟信号构造PWM

如下图,选择信号生成函数,选择模式为“方波”,频率“50Hz”,采样率50000,采样数1024(以上参数请严格设置)
模拟输出电压范围:0-2.5V,置“偏置offset”为1.25V “幅度Amplitude”为1.2V,则对应输出电压为 1.25±1.2 为0.05-2.45V
注意到有“占空比Duty Cycle(%)”一栏,这正是我们控制舵机的关键所在

如前所述,标准PWM脉宽为0.5ms~2.5ms,周期为20ms,我们只要控制占空比在2.5%到12.5%之间,就可以对应0-180°角度
对应关系为 占空比 = ((angle÷180)*2ms+0.5ms)÷20ms*100 ,最后*100是因为输入格式要求为“XX%”

说明:

  • 工作时钟采样率一样时,“频率转换设定”是无用的;但二者不一时,框图中“频率转换设定”部分保证了波形的不变,有兴趣的同学可以思考原因,还可以外接示波器观察波形不进行转换时波形的变化(此时与舵机基准PWM信号不再匹配)。
  • 框图中参数设置处“工作时钟”是在该接口“右键单击——新建——控制量(Control)”设置的;“频率转换设定”的“工作时钟”是由“右键单击后面板设置参数处“工作时钟”图标——新建——局部变量”设置的,二者值同步变化,创建好之后右键设置为“从其读取值”。
  • 发送数据处的采样数设置应当与方波初始设置相同。

数字信号构造PWM

我们使用数字接口,输出高低电平,相对用模拟信号去构造PWM,这更接近PWM的本意
上面的例子已经成功运行了,接线相同,我们本次的目标是用数字接口输出和上例完全一样的波形信号!

甚至,还可以使用信号发生器直接调制方波信号,改变占空比模拟PWM来控制舵机!

右键单击参数设置“DIO模式”,“创建常量”,将数字接口均设为输出
与模拟信号调制PWM不同的是此次使用信号端口D1输出,且利用了“方波生成函数”,设置方法如下:

要注意的是,与前例模拟信号调制PWM一样,要特别当心采样率工作时钟的匹配,以及生成信号采样数与发送信号采样数的匹配性
另外,数字接口只能输出3.3V高电平和0V低电平。

连线图与前图基本一致,只需要把DA1接口换做D1即可。
原则上,只要本次输出控制信号波形与模拟信号方式完全相同就可以认为成功了,
示波器连接两种输出端口(D1、DA1),同时显示在示波器上,比较波形以验证效果。

  • whyx/proj/labview0/steering.txt
  • 最后更改: 2016/05/12 16:24
  • (外部编辑)