通过上位机软件测试总线舵机


前言

初次接触硬件相关知识,此次研究的是对舵机的相关操作,本文主要介绍通过上位机软件测试总线舵机,修改舵机ID号,PWM值,读取舵机工作模式等操作。


一、准备工作

1:上位机软件的下载安装

本人是通过联系卖家获取的资料,上位机软件界面如下:
在这里插入图片描述

2:总线转接板USB和ZX接口短接

示例如下:
在这里插入图片描述
PS:注意红圈圈住的部分,本文介绍的使用上位机软件对舵机的相关操作,因此红圈标注的USB和ZX接口需短接。

二、熟悉总线舵机的控制协议

基本协议如下:
在这里插入图片描述

三、上位机软件基本的重要操作

1:串口位置与发送数据框

在这里插入图片描述
将舵机通过USB转接器连接电脑,选择此时你所接入的串口号。显示是绿色代表已连接。
发送数据框的内容即上文所介绍的控制协议中的指令,如发送"#000PULK!",即即将命令下达到id号为000的舵机使它释放扭力,发送完此条指令即可手动转动调节000号舵机的位置(角度)。还可以读取舵机的位置(角度),如发送“#001PRAD!”,发送下面的框框会返回001号舵机的位置,如返回“#001P1500!”,意思即是001号舵机此时处在1500的位置。

2:窗口配置及总线配置

在这里插入图片描述

窗口配置处你所勾选的即是ID号不同的舵机,如果只有一个舵机,只需勾选s00即可,s00的意思是id号为000的舵机。也可以修改000号舵机的id,可以在总线配置中将ID号修改,点击“写”即修改完成,点击“读”,即可在数据接收框收到此时的ID号。当有多个舵机串联时,则需要修改不同舵机的ID号,使不同的舵机对应唯一的ID号,方便对不同舵机的操作。
总线配置处可以进行ID修改,选择舵机的模式,释放扭力等操作。

3:动作区

在这里插入图片描述
选择在线运行,如果选择脱机运行则不会执行你写的动作组。起始0的意思即为从G0000开始,终止:1表示终止到G0001这个动作组,次数:0表示无限次循环执行,次数:n表示循环执行从G0000动作组到G0001动作组n次。(数字都可自行修改)。除G0000(偏差调节组),其他动作组的PWM和Time都可以修改。PWM是舵机位置,可以通过“#000PRAD!”指令读取舵机角度记录,Time是指上一组动作到这一组动作花费的时间,注意值不能太小,因为时间太短动作可能来不及执行。
除此之外也可以通过鼠标拖动PWM来控制舵机角度,示例如下:
在这里插入图片描述
可自行拖动PWM观察000号舵机可以发现它随PWM值不同而转的角度发生变化。Time也可在此修改。

总结

经过多次操作,发现有时调节舵机的PWM舵机并不会有反应,此时我们可以重新读取ID并写入舵机工作模式,再调节PWM值可以看到舵机角度位置发生改变。如果忘记舵机ID号,可以在总线配置里id号输入255修改ID号。

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论
好的,下面是一个简单的程序段,可以通过上位机控制舵机: ``` #include "stm32f10x.h" void Delay(uint32_t nCount); int main(void) { GPIO_InitTypeDef GPIO_InitStructure; TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_OCInitTypeDef TIM_OCInitStructure; // 配置时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO | RCC_APB2Periph_TIM1, ENABLE); // 配置 PA8 为复用推挽输出 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); // 配置 TIM1 TIM_TimeBaseStructure.TIM_Period = 20000 - 1; // PWM 周期为 20ms TIM_TimeBaseStructure.TIM_Prescaler = 72 - 1; // 时钟预分频为 72 TIM_TimeBaseStructure.TIM_ClockDivision = 0; TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure); // 配置 TIM1 的通道 1 TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 1500; // PWM 脉宽为 1.5ms TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OC1Init(TIM1, &TIM_OCInitStructure); TIM_Cmd(TIM1, ENABLE); while (1) { // 通过上位机传输数据,控制舵机 // 将接收到的数据转换为 PWM 脉宽值 uint16_t pulse_width = ...; TIM_SetCompare1(TIM1, pulse_width); Delay(10); } } void Delay(uint32_t nCount) { for (uint32_t i = 0; i < nCount * 72000; ++i); } ``` 在程序中需要注意以下几点: 1. 需要配置 GPIO 和 TIM 的时钟; 2. 需要配置舵机的 PWM 周期和脉宽; 3. 在主循环中通过上位机传输数据,将接收到的数据转换为 PWM 脉宽值,并设置 TIM 的通道 1 的 PWM 脉宽; 4. 为了让舵机能够稳定工作,需要在主循环中加入适当的延迟。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

向丞哥学习。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值