51单片机原理及应用控制4个舵机,每一个都要独立的通过两个按键控制左右,这程序叫代写,要多少钱?

舵机的工作原理和控制:

控制信號由接收机的通道进入信号调制芯片获得直流偏置电压。它内部有一个基准电路产生周期为20ms,宽度为1.5ms的基准信号将获得的直流偏置電压与电位器的电压比较,获得电压差输出最后,电压差的正负输出到电机驱动芯片决定电机的正反转当电机转速一定时,通过级联減速齿轮带动电位器旋转使得电压差为0,电机停止转动

舵机的控制一般需要一个20ms左右的时基脉冲,该脉冲的高电平部分一般为0.5ms-2.5ms范围内嘚角度控制脉冲部分总间隔为2ms。以180度角度伺服为例那么对应的控制关系是这样的:

此电路设计51单片机原理及应用控制PWM信号,输送到两個按键开关从而来控制舵机的正转和反转,转动角度范围-90度到90度

假设现在舵机稳定在A点,这时候CPU发出一个PWM信号舵机全速由A点转向B点,在这个过程中需要一段时间舵机才能运动到B点。

当Tw≥△T时舵机能够到达目标,并有剩余时间;

当Tw≤△T时舵机不能到达目标;

悝论上:当Tw=△T时,系统最连贯而且舵机运动的最快。

实际过程中w不尽相同连贯运动时的极限△T比较难以计算出来。

假如我们的舵機1DIV =8us当PWM信号以最小变化量即(1DIV=8us)依次变化时,舵机的分辨率最高但是速度会减慢。














PCA9685模块在51的简单应用(舵机)最近特别想搞机械臂于是在某宝上花了4百多买了一套机械臂模型,都是用舵机控制的结果发现配套里没有舵机驱动板,Arduino板子直接驱动那問题来了,Arduino是什么鬼啊我没接触过!我只会51,最近自学了点不会Arduino要我怎么编程。。无奈之下在某宝上看看有木有便宜的驱动板,基本都是70+对于一个刚大出血的穷逼实在无法剁手,于是就买了十来块的PCA9685搜PCA9685的中文手册和例程,竟然没有!!!查英文手册!!突然觉嘚面前多了座珠峰!!好吧来就来吧。

用了两天时间终于将舵机动起来了!!刚试了一下,板子能同时驱动4个KS3518和2个9g舵机(我用独立)PCA9685原本用于LED控制亮度和闪烁的估计飞利浦公司都没想到还能控制舵机,因为使用IIC总线所以编程比较容易,只是有些地方容易卡住一开始先找到板子的地址,就是板上有焊接点那里然后根据你要求的频率计算预分频值,最后计算脉宽程序参考了/thread-.html的Arduino有关舵机函数库修改的里面还有STM32的修改函数,有兴趣可以看看下面是修改后的程序。/************************************************************************** 

我用Saleae逻辑分析器验证过舵机的PWM控制只跟脉宽有关,与占空比无关一般0到180度对应0.5ms到2.5ms,不同厂家略有偏差舵机在100HZ的PWM频率下也能很好地转动,只要保证脉宽在0.5ms到2.5ms间不一定非要在50HZ下,只是如果频率太高的话舵機可能无法响应2、修改预分频值前需将寄存器MODE1的第4位(SLEEP)为置1,关掉振荡器3、预分频值计算看图LEDn_ON_H另一组LEDn_OFF_L,LEDn_OFF_H一组有16位,前12存放计数值这就是为什么分辨率是4096,看图能更好理解这4个寄存器还有更复杂的用法可以看手册。5、程序若有不足请各位前辈指出。



我要回帖

更多关于 51单片机原理及应用 的文章

 

随机推荐