你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32停机问题  

[复制链接]
科科1987 提问时间:2018-1-17 20:08 /
本帖最后由 科科1987 于 2018-1-17 20:11 编辑

大家好,请教一个问题:我用stm32f103c8作为主控通过功率驱动电路来控制一个有刷直流电机,当电机速度增大(增大PWM占空比)到一定程度时,stm32就停机了,PWM停止没有输出,其他功能也停止了工作,按理说应该是stm32受到干扰代码跑飞了,但奇怪的是,当我去转动几下电机轴后stm32又接着开始正常工作了(没有重启,速度还是停机前的速度),过一会又停机了,再转动几下电机轴后stm32又接着开始正常工作了,非常奇怪的是在stm32停机的时候它处于一个什么状态?难道是时钟停止了工作?请各位分析一下原因,谢谢。
收藏 评论52 发布时间:2018-1-17 20:08

举报

52个回答
科科1987 回答时间:2018-1-18 19:35:39
本帖最后由 科科1987 于 2018-1-18 19:38 编辑
zhjb1 发表于 2018-1-18 16:14
看了讨论很是有感,技术就是不论不清楚。既然程序没有跑飞、说明MCU的电源电压无大问题;芯片晶振还有,核 ...

谢谢! 这是定时器的配置,没有开中断,今天测试发现其他有的GPIO输出也失效了(再次转动电机后又恢复正常了),但输入一直有效。stm32的gpio口会不会在受到干扰后锁死呢?
TIM截图20180118193034.png TIM截图20180118193044.png TIM截图20180118193056.png TIM截图20180118193108.png
zhjb1 回答时间:2018-1-18 16:14:18
看了讨论很是有感,技术就是不论不清楚。既然程序没有跑飞、说明MCU的电源电压无大问题;芯片晶振还有,核心频率也无问题;仅仅是PWM波没有了?可以从这几个地方考虑:1.产生PWM波是否采用了中断,中断程序有无检测某些信号造成信号未返回而停止在这块等着?这个可能性较大!2.PWM处于死区自锁,这个可能性不太大,因为您是控制普通电机,如果没有反馈监测死区可能问题不大。其他的没有遇到过,因为想不起来了,试试吧

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

努力的人 回答时间:2018-1-19 09:00:31
1、如果你觉得有干扰的话,在STM32和驱动芯片之间增加光耦,这样控制端就不会受电机侧的干扰。
2、不知道你这个是不是H桥,H桥的话你要确定桥臂上管和下管的驱动之间要有死区时间,感觉有可能是你死区时间设置过小,在增加PWM占空比过大时,出现了上下管近似同时导通的状态,
3、还有一个就是监控一下你的直流母线电压,看在发生你这个问题时,电压是否变化,看是不是电源功率不够,带不起来

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

wenyangzeng 回答时间:2018-1-17 20:14:51
“转动几下电机轴后stm32又接着开始正常工作了”并不能说明是PWM没有输出所致,除非你在故障时用示波器测试PWM没有输出。
是否可能是电机本身过流保护了。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

科科1987 回答时间:2018-1-17 20:20:30
本帖最后由 科科1987 于 2018-1-17 20:22 编辑
wenyangzeng 发表于 2018-1-17 20:14
“转动几下电机轴后stm32又接着开始正常工作了”并不能说明是PWM没有输出所致,除非你在故障时用示波器测试 ...

谢谢指导,硬件电路没有过流保护功能,stm32时钟电路受干扰会不会停止工作?
wenyangzeng 回答时间:2018-1-17 21:33:33
科科1987 发表于 2018-1-17 20:20
谢谢指导,硬件电路没有过流保护功能,stm32时钟电路受干扰会不会停止工作? ...

一般说来,即使受到干扰,时钟也不会停止,只能是程序跑飞了。一旦跑飞了,是回不来的。而你转动一下电机,又能正常工作,所以个人认为时钟和程序应该都一直在正常工作,问题应该出在电机硬件上。
七哥 回答时间:2018-1-17 22:10:30
用示波器看一下PWM波形,电机两端的电压。电压低带不动电机也有可能,或者电机在某个位置时的力矩不够。
前段时间弄个直流电机,PWM有输出,但是电机不转。是因为电压不够,我用了5V供电,PWM占空比是25%。当设置占空比到50%后,电机转起来了,然后再降回25%,依然在转。

评分

参与人数 1蝴蝶豆 +3 收起 理由
zero99 + 3

查看全部评分

科科1987 回答时间:2018-1-18 09:17:05
wenyangzeng 发表于 2018-1-17 21:33
一般说来,即使受到干扰,时钟也不会停止,只能是程序跑飞了。一旦跑飞了,是回不来的。而你转动一下电机 ...

谢谢指导!在停机时用示波器看stm32的PWM输出引脚没有PWM波形,难道stm32受到干扰后寄存器会随机改变吗,比如像这种现象是不是pwm控制寄存器受到干扰而改变了?
科科1987 回答时间:2018-1-18 09:20:00
toofree 发表于 2018-1-17 22:10
用示波器看一下PWM波形,电机两端的电压。电压低带不动电机也有可能,或者电机在某个位置时的力矩不够。
前 ...

谢谢!  停机时,用示波器查看了STM32的PWM波形和电机两端电压,pwm停止输出了,电机两端也没有了电压。而且这种现象比较随机,不是每次都出现,10次可能就会出现2两次。
Inc_brza 回答时间:2018-1-18 09:29:39
科科1987 发表于 2018-1-18 09:20
谢谢!  停机时,用示波器查看了STM32的PWM波形和电机两端电压,pwm停止输出了,电机两端也没有了电压。 ...

先测试一下空载,确保空载时PWM正常。
然后建议换一个电机试试看,电机前端加上电容了吗?
电机调速时,用示波器检测MCU供电电压是否有被拉。
最好提供必要的现象证据以供分析。

评分

参与人数 1蝴蝶豆 +4 收起 理由
zero99 + 4

查看全部评分

科科1987 回答时间:2018-1-18 09:57:05
Inc_brza 发表于 2018-1-18 09:29
先测试一下空载,确保空载时PWM正常。
然后建议换一个电机试试看,电机前端加上电容了吗?
电机调速时, ...

谢谢!都是在空载的情况下测试的,电机前端加过电容,现象依然会出现,stm32程序没有跑飞,也没有复位,只是停在那里不动了,如果转动几下电机有可以继续运行,就这点想不明白。
Inc_brza 回答时间:2018-1-18 10:42:09
科科1987 发表于 2018-1-18 09:57
谢谢!都是在空载的情况下测试的,电机前端加过电容,现象依然会出现,stm32程序没有跑飞,也没有复位, ...

示波器测试一下晶振是否有停振?cpu不会无缘无故停在那里不动,除非进入halt之类模式,除非停振。

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

科科1987 回答时间:2018-1-18 11:01:12
Inc_brza 发表于 2018-1-18 10:42
示波器测试一下晶振是否有停振?cpu不会无缘无故停在那里不动,除非进入halt之类模式,除非停振。 ...

谢谢!
也怀疑过外部晶振停止,程序改成内部时钟后也会出现这种现象;如果进入halt就不会继续接着运行了。
科科1987 回答时间:2018-1-18 15:45:21
晶振没有停振,波形正常。

晶振波形

晶振波形


科科1987 回答时间:2018-1-18 21:11:22
通过测试发现,程序并没有跑飞,还在继续运行,但是有的外设停止工作(pwm输出口和其他几个IO停止工作,比如LED输出没有反应)。各位遇到过这种情况吗?
1234下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版