基于PIC单片机的仿生机器鱼的舵机控制

[09-12 16:05:35]   来源:http://www.88dzw.com  单片机学习   阅读:8738

文章摘要:从上面的程序可知,通过改变delay 函数的形参j,可以根据需要,得到具有相应脉冲宽度和周期的脉冲信号。例如,改变以上程序段的1 至4 行为:得到输出脉冲宽度为1ms,周期为20ms 的脉冲信号,然后借助for 循环,将能得到所需要的周期性脉冲信号,驱动舵机输出轴达到-90°到90° 之间的转角。3.2.2 多舵机不同角度的控制:通过多舵机不同角度的控制,可以控制几个舵机同时向不同角度扭转,以达到预期的控制目的。具体的实现方法是:在定时器延时函数中设定一个计时值t(在程序中t 在初始化时值为0),使t 在每次定时器计时完毕时加1。例如,定时器一周期的定时时间为0.25ms,则t值每加1 就相当

基于PIC单片机的仿生机器鱼的舵机控制,标签:单片机开发,单片机原理,单片机教程,http://www.88dzw.com

  从上面的程序可知,通过改变delay 函数的形参j,可以根据需要,得到具有相应脉冲宽度和周期的脉冲信号。例如,改变以上程序段的1 至4 行为:

  得到输出脉冲宽度为1ms,周期为20ms 的脉冲信号,然后借助for 循环,将能得到所需要的周期性脉冲信号,驱动舵机输出轴达到-90°到90° 之间的转角。

3.2.2 多舵机不同角度的控制:

  通过多舵机不同角度的控制,可以控制几个舵机同时向不同角度扭转,以达到预期的控制目的。

  具体的实现方法是:在定时器延时函数中设定一个计时值t(在程序中t 在初始化时值为0),使t 在每次定时器计时完毕时加1。例如,定时器一周期的定时时间为0.25ms,则t值每加1 就相当于0.25ms。当t 的代表值达到20ms 也就是当t 等于80 时清零,这样就可以将脉冲周期控制在20ms,再通过使用if 语句查询方式,可以调节同一周期脉冲的脉冲宽度,即能使多舵机同时向不同角度旋转。

  程序示例:(晶振为:4MHZ,脉冲从PORTDbits.RD0,PORTDbits.RD1,PORTDbits.RD2三个端口中输出)


  通过以上程序再配合for 循环,便能在PORTDbits.RD0,PORTDbits.RD1,PORTDbits.RD2三个端口得到脉冲宽度分别为1ms,1.5ms,2ms,周期同为20ms 的三种周期脉冲信号,从而达到对三个舵机同时进行不同控制的要求。当然利用以上的方法,可以很轻松地对3 个以上的多个舵机同时进行控制。

3.3 舵机的速度控制

  通过舵机的特性可以了解到舵机的瞬时运动速度是由其内部的直流电动机和变速齿轮组的配合来决定的,在恒定的电压驱动下,其数值是恒定的。但舵机的平均运动速度可通过分段停顿的控制方式来改变,例如,把动作幅度为90°的转动细分为128 个停顿点,通过控制每个停顿点的时间长短来实现0°到90°变化的平均速度。也就是说,将90 度的连贯一步转动变为128 个停顿的步进转动,通过每步之间的短暂停顿可实现减速的目的,因为停顿时间非常短因此可看做是90°的连贯转动,由于篇幅的限制,这里不再给出相应的程序实例,感兴趣的读者可以自己参考上面的程序实例进行编写。

4.结束语

  本文介绍的这种方法产生的PWM 波形精度高,能够很好的完成舵机的控制工作,舵机工作稳定,我们设计制作的机器鱼成功地实现了鱼类的一些基本运动动作,如前游,加速,停止,前进中转弯等,这也验证了所采用的多关节驱动方式和对多舵机的控制方法是行之有效的。本文通过以仿生机器鱼为载体进行撰文,意在抛砖引玉,希望对其它的舵机控制应用起到帮助。


上一页  [1] [2] 


Tag:单片机学习单片机开发,单片机原理,单片机教程单片机学习
分类导航
最新更新
热门排行