0 前言
根据https://blog.csdn.net/sinat_37939098/article/details/87915031的内容,可以知道,USB设备的性能真不咋滴,最低1ms的通讯延迟做控制的都想砍人了,所以USB转TTL来控制舵机还是不太行,而用嵌入式系统或树莓派类的SBC来控制舵机更为可靠。 具体方案为UART转TTL信号对舵机进行控制,这篇文档将详细阐述如何配置相关参数,实现对TTL舵机的控制。
1 环境
主控:树莓派 4B
舵机:Dynamixel XL330-M288-T
UART转TTL:Fashionstar Rasprobo2 / Zlink(都测试过,均可行,后文以Rasprobo2为例)
2 实验
首先进行线路连接:将Rasprobo2插在树莓派上,电源端子供6V,同时给舵机及树莓派供电。连接Dynamixel到Rasprobo2,电机闪红灯一次则说明正常上电。
接着进行串口链接配置:树莓派原生serial0软链接的是ttyS0,该设备性能较弱,需要改为强悍的ttyAMA0,只需要进行:
sudo vim /boot/config.txt
最后加入:
dtoverlay=pi3-miniuart-bt
重启后,输入ls -l /dev确定serial0是否链接到/dev/ttyAMA0。
然后进行串口使能配置:树莓派串口自带SSH,很好用也很坑,需要关掉。输入:
sudo raspi-config
进入Interfacing option->Serial,关闭SSH,打开Seria通讯。
到此为止,配置完成。
通过代码给电机发指令,通讯接口为/dev/ttyAMA0,设定通讯波特率为3M。
电机成功转动,但是很奇怪,经测试发送数据只需要0.12ms,收数据居然需要15ms,真是奇了怪。