通用舵机控制器(pwm信号发生器)
拿到一个机械臂时你会怎么办?搭电路,写程序,控制这个机械臂,然后这套电路一直放在机械臂上。
拿到一个电调呢?找航模遥控器来测试电调?也是一个不错的办法~然而有没有更方便的办法呢?
博主最近很空虚,冥冥之中感觉生命中缺少一个美妙的通用舵机控制器,能够让我把舵机和电调快速地撸起来~
工程放在github上:https://github.com/nicekwell/servo_controller
可以直接下载此工程:https://github.com/nicekwell/servo_controller/archive/master.zip
有关PPM信号相关的知识可参考:PPM信号介绍
演示视频:
以下内容从工程README复制:
功能
可以产生7路PWM信号。
周期固定为20ms,脉宽可调,精度为10us。
上方7路输出通道,最上面为信号脚,中间是VCC,下面是GND。
下方7个按钮选择当天调节哪路信号,按下按钮后,上方对应通道的led灯点亮,同时显示屏相应通道也会有闪烁。
右边5个按钮调节当前通道的脉宽,从上到下功能依次为:加100,加10,复位(设置为1500us),减10,减100。
脉宽调节没有范围限制!!所以调节时一定要注意。
开机后默认所有路通道脉宽为1500us。
硬件
【单片机】12C5A32S2
【晶振】24MHz
【引脚连接】
功能 | 引脚 | 备注 |
---|---|---|
舵机控制脚1 | P1.6 | |
舵机控制脚2 | P1.5 | |
舵机控制脚3 | P1.4 | |
舵机控制脚4 | P1.3 | |
舵机控制脚5 | P1.2 | |
舵机控制脚6 | P1.1 | |
舵机控制脚7 | P1.0 | |
led1 | P0.6 | 推挽输出,高电平点亮,所有负极接在一起串联了电阻,一次只能点亮一个灯 |
led2 | P0.5 | |
led3 | P0.4 | |
led4 | P0.3 | |
led5 | P0.2 | |
led6 | P0.1 | |
led7 | P0.0 | |
通道开关1 | P2.0 | 所有开关按下是低电平 |
通道开关2 | P2.1 | |
通道开关3 | P2.2 | |
通道开关4 | P2.3 | |
通道开关5 | P2.4 | |
通道开关6 | P2.5 | |
通道开关7 | P2.6 | |
开关-100 | P3.7 | |
开关-10 | P3.6 | |
开关复位 | P3.5 | |
开关+10 | P3.4 | |
开关+100 | P3.3 | |
显示屏SCL | P0.7 | |
显示屏SDA | P1.7 |
程序结构
定时器10us一次中断,在定时器中断中完成 7路pwm通道脉宽控制 和 按键扫描 任务,其中按键扫描分成了三个函数分别进行。(广告:想了解这样做的原因,以及更多单片机编程结构相关的内容请访问http://nicekwell.net/pages/dan-pian-ji-bian-cheng.html) 主进程完成显示屏显示任务。
定时器进程检测到按键操作后,会发送标志给主进程刷新显示。
本站所有文章欢迎转载,但请保留作者信息和原文地址。