hc89s003-51单片机的串口16路舵机控制器

1年前

简介:使用hc89s003f4单片机制作一个用串口命令控制的16路舵机控制器

开源协议: TAPR Open Hardware License

  • 1.4k
  • 1
  • 12

描述

使用hc89s003f4单片机制作一个用串口命令控制的16路舵机控制器,会仅适用与数字舵机; 程序功能说明: 1.串口接收到头:0x66后,程序开始接收16位代表1-16路舵机的开启与关闭标志; 2.16位开启与关闭标志:1为开启,0为关闭。如:收到0xB6 0x49 ,换位二进制为 1011 0110 0100 1001 ,则表示1开启2关闭3开启4开启,5关闭6开启7开启8关闭, 9关闭10开启11关闭12关闭,13开启14关闭15关闭16开启; 3.16位开启与关闭标志接收完毕后,开始接收168位角度数据,以0x00代表0度,0xb4带表180度,pwm1角度数据先送入控制板,pwm16角度最后送入控制板; 4.角度数据接收完后,再送入尾:0x99更新舵机角度; 5.oled显示每路角度与输出状态。 特别说明: 此次程序版本使用单片机内含12位pwm脉宽调制器,因为只有3个12位脉宽调制器,所以一次只能控制6路脉宽,分三次完成16路脉宽输出,每一次只输出20个周期, 控制舵机需要50Hzpwm,0.02203=1.2s,也就是说完成一次16路输出至少需要1.2s,感觉时间很长,但是舵机从0度转到180度要20个周期才能保证走完,其实也可 以减少每一次发送的周期数,多发送几次0x99来刷新pwm输出来提高实时性,!这是个不错的想法啊,嗯,说明写完就去试试。 *更正:控制数字舵机300Hz的占空比之前一直错了,导致不能用300Hz使用,现在更正后,只需两个周期总共六个周期就可以完成舵机的角度控制,刷新舵机的角度的频率提升到50Hz,也就是*0.02s*可以刷新一次,当然这只是理论上的刷新速度,实际上舵机运行到指定角度还是需要一定时间的最长1s。* 前面提到一次只能控制六个pwm输出,要控制16个pwm,自然就有优先级了,所以我添加了外部优先级输入功能,使用这个功能只要将头:0x66替换为0x67,在‘16位开启与关闭标志’发送完后插入168位优先级数据(包含0x00,0x01,0x02,0x03四种状态,0x00表示不开启,其余表示开启,0x01优先级最高,0x03优先级最低),程序会判断是否在同一优先级使用了两个以上由同一pwm脉宽调制器同一通道控制的管脚,如果发现的话将按照前面发送的‘16位开启与关闭标志’来重新规划优先级。 电路部分: 电路部分比较简单,将单片机所有可用IO口引出,16个管脚控制pwm,2个用于串口通信,引出JTAG调试口,16个pwm输出管脚用74hc245与外部隔离,74hc245输出脚均下拉。 16个脚中两个脚复用为IIC控制oled。 串口引出线序位常见的hc-05蓝牙模块线序,方便蓝牙无线操控。 下面展示驱动板的图片 舵机板图.jpg 环境有点黑,我感觉这小家伙还挺漂亮的。 日志1:程序将已知的错误修改,能否运行未知,明天到实验室去调试,暂时未添加显示程序。2019-9-19; 日志2:程序调试完成,明天画驱动板。2019-9-20; 日志3:编译器有bug,换了输入数据格式,程序终于能在开发板上成功运行了。2019-9-26; 日志4:今天开始话电路板,完成了原理图部分。2019-9-27; 日志5:今天将pcb画完了。2019-9-28; 日志6:上传定时器版本。2019-9-30; 日志7:定时器版本不能完美正常运行,有兴趣的可以自行修改。重新上传pwm调制器版,修改已知bug,修改为间断循环输出,频率改为300Hz,可间隔63ms发送一次最新指令。成功在打样的板子上运行。2019-10-12;

文档

16路舵机驱动

在编辑器中打开

BOM

ID Name Designator Footprint Quantity BOM_Manufacturer Part BOM_Manufacturer BOM_Supplier BOM_Supplier Part
1 HC89S003F4 U3 TSSOP20 1 HC89S003F4 Shanghai Holychip Elec LCSC C165199
2 LM1117S-5.0 U1 SOT-223 1 LM1117S-5.0 HTC LCSC C126028
3 10uF C3,C2 0805 2 CL21A106KAYNNNE SAMSUNG LCSC C15850
4 100nF C1,C4 0805 2 CC0805KRX7R9BB104 YAGEO LCSC C49678
5 74HC245D,653 U2,U4 SOIC-20_300MIL 2 74HC245D,653 Nexperia LCSC C5625
6 Header 9X2 PWMA P2 HDR2X9 1 2.54mm 2x40P BOOMELE LCSC C2333
7 Header 9X2 PWMB P3 HDR2X6 1 2.54mm 2x40P BOOMELE LCSC C2333
8 Header 9X2 PWMC P5 HDR2X9 1 2.54mm 2x40P BOOMELE LCSC C2333
9 10K R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12,R13,R14,R15,R16 0805 16 0805W8F1002T5E UniOhm LCSC C17414
10 OLED-0.96-4P U5 OLED0.96 1 220S-1*4P H=8.5MM Ytype Gold-plated Ckmtw LCSC C124413
11 ispx4 P1 HDR1X4 1 220S-1*4P H=8.5MM Ytype Gold-plated Ckmtw LCSC C124413
12 JTAG J1 HDR2.54-LI-2X5P 1 MTB110-10S MINTRON LCSC C358743
13 WJ300V-5.0-2P P4 WJ300V-5.00-2P 1 WJ300V-5.0-2P ReliaPro LCSC C8385
14 100uF C5,C6 CASE-D_7343 2 CA45-D-16V-100UF-K CEC LCSC C129274
15 100uF C7,C8 CAP-D6.3XH7.7 2 MV101M016E077A CapXon LCSC C65206

展开

服务时间

周一至周五 9:00~18:00
  • 153 6159 2675

服务时间

周一至周五 9:00~18:00
  • 立创EDA微信号

    easyeda

  • QQ交流群

    664186054

  • 立创EDA公众号

    lceda-cn