OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7818|回复: 15

数字舵机问题,突然不动了

[复制链接]

41

主题

278

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2357
金钱
2357
注册时间
2019-10-29
在线时间
380 小时
发表于 2022-6-22 11:31:22 | 显示全部楼层 |阅读模式
1金钱
单片机控制数字舵机输出波形如下图

现象:

分三段
第1段.正常输出波形,此时是能正常控制舵机转动
第2段.暂时关闭一段时间(这个关闭时间,会影响到再次输出情况)
第3段.再次输出正常波形,但是当第2段关闭时间过长,第3段虽然输出了波形,但是舵机不会动(实测中测出中间关闭1.4S,然后在输出波形,数字舵机不会动)

问题:

1.还有当输出脚通过Y线,连上数字舵机和逻辑分析仪时,即使中间关闭1.4S,再次输出波形时,也能正常控制?
2.当连的模拟舵机时,中间关闭好几秒,再次输出波形,模拟舵机是能正常控制的,为啥数字舵机就会出现不能控制的呢?



微信图片_20220622113137.png

最佳答案

查看完整内容[请看2#楼]

没下拉的话,由于有分布电容的存在,PWM信号就变成了高电平信号,数字舵机会认为没有PWM信号,也会停止工作。 [/backcolor] 逻辑分析仪[/backcolor]内部是有下拉的,所以信号变会得正常。 模拟舵机可能是舵机内部有下拉电阻。 数字舵机的输入端估计是高阻态。
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8464
金钱
8464
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-6-22 11:31:23 | 显示全部楼层
本帖最后由 LcwSwust 于 2022-6-22 15:16 编辑
chenyuan 发表于 2022-6-22 14:22
现在问题解决了,是我端口IO配置时没有下拉,
之前IO配置的是无上下拉的,GPIO_NOPULL
然后我将其配置 ...

没下拉的话,由于有分布电容的存在,PWM信号就变成了高电平信号,数字舵机会认为没有PWM信号,也会停止工作。

逻辑分析仪内部是有下拉的,所以信号变会得正常。
模拟舵机可能是舵机内部有下拉电阻。
数字舵机的输入端估计是高阻态。



专治疑难杂症
回复

使用道具 举报

2

主题

369

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
4241
金钱
4241
注册时间
2020-7-24
在线时间
714 小时
发表于 2022-6-22 11:52:51 | 显示全部楼层
帮顶  
回复

使用道具 举报

1

主题

385

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1023
金钱
1023
注册时间
2019-9-21
在线时间
269 小时
发表于 2022-6-22 12:05:32 | 显示全部楼层
帮顶一下
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8464
金钱
8464
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-6-22 14:02:26 | 显示全部楼层
我手里的MG90S舵机试了一下,将PWM信号短接到地,舵机会不动作,可用手扳动使其自由转动,恢复信号后运转正常。
要不再用示波器监测一下信号波形?
专治疑难杂症
回复

使用道具 举报

41

主题

278

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2357
金钱
2357
注册时间
2019-10-29
在线时间
380 小时
 楼主| 发表于 2022-6-22 14:22:26 | 显示全部楼层
LcwSwust 发表于 2022-6-22 14:02
我手里的MG90S舵机试了一下,将PWM信号短接到地,舵机会不动作,可用手扳动使其自由转动,恢复信号后运转正 ...

现在问题解决了,是我端口IO配置时没有下拉,
之前IO配置的是无上下拉的,GPIO_NOPULL
然后我将其配置为下拉的时候,GPIO_PULLDOWN,暂停输出一段时间,然后在恢复,也是可以了
将其配置为上拉的时候,是不能控制舵机的。

------------关于上下拉的基础知识------------
先来一点最基础的知识
上拉和下拉:
当我们闭合上拉电阻的开关,断开下拉电阻的开关的时候,也就是此时为上拉通路导通。根据我们最基础的电路知识,如果I/O口断开不接外设,或者接了外设但是电路也断开,此时整条回路是断路的时候,电阻相当于不存在,此时O点的电位,也就被钳制在了VDD(供电电压正极),于是O点就处于高电平。
同理,闭合上拉电阻的开关,断开下拉电阻的开关,那么在电路断开的时候,根据电路知识,电阻相当于不存在,O点的电压就就被钳制在了VSS(GND),也就是O点处于低电平。
-----------------------------------------------

现在不是很清楚为啥IO口的上下拉会影响到数字舵机的转动,而模拟舵机就没这问题了???
回复

使用道具 举报

5

主题

134

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1389
金钱
1389
注册时间
2019-5-29
在线时间
163 小时
发表于 2022-6-22 14:32:20 | 显示全部楼层
要么是功率不够,舵机需要的电流相比较mcu还是挺大的,供电方式注意一下。
还有就是有可能卡死了,比如舵机运动过程输入错误的程序,导致舵机运动超过角度,这个时候用扳手给纠正就好了
偷偷摸鱼
回复

使用道具 举报

41

主题

278

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2357
金钱
2357
注册时间
2019-10-29
在线时间
380 小时
 楼主| 发表于 2022-6-22 16:34:39 | 显示全部楼层
LcwSwust 发表于 2022-6-22 15:12
没下拉的话,由于有分布电容的存在,PWM信号就变成了高电平信号,数字舵机会认为没有PWM信号,也会停止工 ...

好的 好的 感谢大佬指点
回复

使用道具 举报

41

主题

278

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2357
金钱
2357
注册时间
2019-10-29
在线时间
380 小时
 楼主| 发表于 2022-6-27 10:40:20 | 显示全部楼层
LcwSwust 发表于 2022-6-22 11:31
没下拉的话,由于有分布电容的存在,PWM信号就变成了高电平信号,数字舵机会认为没有PWM信号,也会停止工 ...

大佬 有个问题想问下
我在接收机上插个数字舵机,用3.7V的锂电池供电,中间低电平时间很长,然后再恢复接收机的波形输出,舵机能正常控制;
然后我把接收机放到遥控车上控制,用的遥控车上的电池供电,接上遥控车的油门和方向通道,发现基于定时器3的输出端口,在低电平断开一段时间,在重新输出波形时,该端口控制不了数字舵机了。

图片是我测试的情况,目前猜测是:
遥控车上的油门信号对接收机定时3的输出端口有所干扰,但是后续不清楚该如何进行了,望大佬指点,谢谢!
芯片用的是STM32F030

snipaste_20220627_094414.png
snipaste_20220627_103710.png
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8464
金钱
8464
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-6-27 10:52:07 | 显示全部楼层
chenyuan 发表于 2022-6-27 10:40
大佬 有个问题想问下
我在接收机上插个数字舵机,用3.7V的锂电池供电,中间低电平时间很长,然后再恢复 ...

用示波器看看波形。
“遥控车上的油门信号对接收机定时3的输出端口有所干扰”
我没看懂,莫非是两个东西输出信号接一起?那当然不行。
接收机和STM32单片机是什么关系?不是同一个?
专治疑难杂症
回复

使用道具 举报

41

主题

278

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2357
金钱
2357
注册时间
2019-10-29
在线时间
380 小时
 楼主| 发表于 2022-6-27 11:32:50 | 显示全部楼层
LcwSwust 发表于 2022-6-27 10:52
用示波器看看波形。
“遥控车上的油门信号对接收机定时3的输出端口有所干扰”
我没看懂,莫非是两个东 ...

接收机是用的STM32F030芯片做的,然后引出了一些端口输出,当单纯拿两个数字舵机接在接收机的端口1 4,进行暂时关闭再输出波形的实验是能正常控制的;
但是当接收机的端口1接遥控器的油门信号线,端口4接遥控车的方向数据线(实际就是个数字舵机),进行暂时关闭再输出波形的实验,端口1是能正常控制油门,但是端口4是无法控制方向(要重新拔插下方向数据线,才能正常控制);

手上没有示波器,只有逻辑分析仪,然后用逻辑分析仪采集数据(用Y线连接逻辑分析仪 和 方向舵机),现象又正常了,逻辑分析仪也没发现什么异常的数据
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8464
金钱
8464
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-6-27 11:40:04 | 显示全部楼层
chenyuan 发表于 2022-6-27 11:32
接收机是用的STM32F030芯片做的,然后引出了一些端口输出,当单纯拿两个数字舵机接在接收机的端口1 4,进 ...

哦,明白了。估计还是上拉下拉的问题,话说你的PWM输出脚不能设置成推挽模式么?
专治疑难杂症
回复

使用道具 举报

41

主题

278

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2357
金钱
2357
注册时间
2019-10-29
在线时间
380 小时
 楼主| 发表于 2022-6-27 11:52:42 | 显示全部楼层
LcwSwust 发表于 2022-6-27 11:40
哦,明白了。估计还是上拉下拉的问题,话说你的PWM输出脚不能设置成推挽模式么?

GPIO_InitStruct.Pin = CH4_Pin;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.Pull = GPIO_PULLDOWN;//GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    GPIO_InitStruct.Alternate = GPIO_AF1_TIM3;
    HAL_GPIO_Init(CH4_GPIO_Port, &GPIO_InitStruct);

这引脚复用到了定时器3,这个Mode还能选用GPIO_MODE_OUTPUT_PP(推挽输出)吗?
另外我记的这个带_PP的就是推挽的意思吧?

回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8464
金钱
8464
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-6-27 12:24:52 | 显示全部楼层
chenyuan 发表于 2022-6-27 11:52
GPIO_InitStruct.Pin = CH4_Pin;
    GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
    GPIO_InitStruct.P ...

_PP是推挽,那得再检查检查,F030我不了解。
示波器还是有必要的。
专治疑难杂症
回复

使用道具 举报

41

主题

278

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2357
金钱
2357
注册时间
2019-10-29
在线时间
380 小时
 楼主| 发表于 2022-6-30 10:12:15 | 显示全部楼层
LcwSwust 发表于 2022-6-27 12:24
_PP是推挽,那得再检查检查,F030我不了解。
示波器还是有必要的。

挣扎了下  让硬件工程师用示波器测了,也没有这种现象,波形也正常的,和插上逻辑分析仪情况一样;
然后换了个芯片,正常了.......
我软件代码是用的STM32F030的来着,以为芯片也是这个,后面发现用的是国产的030的芯片,说是完全适配st的;
后面换成了ST的030芯片,相同代码,就没有这问题了...
回复

使用道具 举报

12

主题

3344

帖子

1

精华

论坛元老

Rank: 8Rank: 8

积分
8464
金钱
8464
注册时间
2020-5-11
在线时间
3904 小时
发表于 2022-6-30 11:48:18 | 显示全部楼层
chenyuan 发表于 2022-6-30 10:12
挣扎了下  让硬件工程师用示波器测了,也没有这种现象,波形也正常的,和插上逻辑分析仪情况一样;
然后 ...

     
专治疑难杂症
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-26 19:48

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表