前面写了舵机驱动板(PCA9685)的控制程序,现在通过这个驱动板实现一个机械臂的功能。
先采购机械臂的套件,我选的是这个样子:
现在舵机套件的样式很多,控制方式基本类似。我的需求就是结构简单,结实易用,实现容易。
接线的样子:
硬件清单:
hi3861板,机械臂的核心控制。
pca9685舵机驱动板,控制舵机运行。
ssd1306液晶模块,显示运行数据。
hx1838红外遥控器,舵机调试。
18650锂电池,给舵机供电。
20GK舵机,运行机械臂。
起初的想法是先实现1个舵机的控制,然后多个舵机堆加到一起。随着一步步推进,基本情况也是这样的,但是想法和实际的情况还是有些不同的,最后多舵机的控制复杂度太高,单片机的处理能力就不足,然后通过联网,用上位机完成控制。
第一步实现1台舵机的控制:
机械臂不能一开始就组装好,需要先将舵机的转向居中,在居中的位置安装结构。
先写一个舵机控制程序。通过红外遥控器输入指令,然后根据指令驱动舵机,运行结果通过液晶模块显示出来。
代码entry.c是入口程序,也是主业务部位。engine.c是舵机控制部分。其他部分是需要用到功能的驱动,hx1838红外遥控器,ssd1306液晶模块,pca9685舵机驱动。
开机后舵机定位居中,然后通过红外遥控器控制运行。
主要功能:
1. 1度1度的转向,1次转1度,加个时间延迟,再转1度,这种方式主要是防止舵机砸机,一次转到预定角度速度过快,20KG的力量容易出现意想不到的事故。在运行中可以随时按键停止。
2. 按预设跨度转向,我预设了3个跨度,1, 10, 30。方便微调。
3. 一步到位也是必须的,我加个延时切换变量,切换到关闭延时,就是一步转向到预定角度。
4. 设置3个主要方向, 左边, 右边 ,居中,可以一键到位。
5. 液晶实时显示舵机数据。
操作演示:
舵机控制演示
先写这里,下一步整理好再发出来。