搜索
bottom↓
回复: 20
打印 上一主题 下一主题

[求教]FOC电机控制板的电源上电顺序不同会导致程序卡死

[复制链接]

出0入0汤圆

跳转到指定楼层
1
发表于 2024-6-18 22:30:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 NFYG2022 于 2024-6-18 22:31 编辑

控制板上有12V的电机电源和3.3V的单片机电源

往常调试时,都先通3.3V单片机电源,再通12V电源(来自一个数字电源,稳定性有保证),此时没问题,电机的速度、位置闭环控制都很好。

今天在12V接通的情况下,拔了3.3V电源,然后再插上去。按照预期,单片断电再上电应当视为重启,但奇怪的是单片机直接卡死了。重新下载、3.3V电源重新上电都没用。

用LED点灯法发现卡死在某个函数里面(并非某个函数的问题,若交换代码的顺序,也会卡死在其他代码处),“卡死”并非进入了某个while循环,也没有反复进入中断,单纯就是程序执行完上一条语句后就不再继续执行,C程序只运行了开头的一小部分。







只有在断开12V电源的情况下,重新下载或3.3V上电才能恢复正常。

也就是说,貌似这上电顺序直接决定功能是否正常......这太奇怪了,有哪位大佬见过这种BUG吗?

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出40入518汤圆

2
发表于 2024-6-18 22:52:49 | 只看该作者
电路上看看,12V电源的存在对单片机有什么改变了

出330入1925汤圆

3
发表于 2024-6-18 23:11:55 | 只看该作者
在拔掉3.3V时接通12V,看看此时3.3V电源线上的电压是多少,应该是有电流从信号线窜进IO然后顺着芯片内部二极管上到电源导致MCU有一个不正常的电源电压

出0入0汤圆

4
 楼主| 发表于 2024-6-18 23:49:01 | 只看该作者
cne53102 发表于 2024-6-18 23:11
在拔掉3.3V时接通12V,看看此时3.3V电源线上的电压是多少,应该是有电流从信号线窜进IO然后顺着芯片内部二 ...
(引用自3楼)

3.3V断开,12V接通时,3.3V引脚读数为0
12V断开,3.3V接通时,12V引脚读数~2.3V

出0入0汤圆

5
 楼主| 发表于 2024-6-19 00:04:17 | 只看该作者
智涅 发表于 2024-6-18 22:52
电路上看看,12V电源的存在对单片机有什么改变了
(引用自2楼)

我猜有以下几种可能
没有区分功率地和数字地,有可能是通过地平面干扰的;
有3.3V的内电层,也可能是3.3V的内电层和不同层的12V相互干扰的(我已经特意让12V的线远离单片机了);

测试发现断开12V,接通3.3V时,12V引脚上会有~2.3V电压

出330入1925汤圆

6
发表于 2024-6-19 00:13:12 | 只看该作者
NFYG2022 发表于 2024-6-18 23:49
3.3V断开,12V接通时,3.3V引脚读数为0
12V断开,3.3V接通时,12V引脚读数~2.3V
(引用自4楼)

那应该不是这个原因

出40入518汤圆

7
发表于 2024-6-19 00:44:26 | 只看该作者
贴下原理图或者框图?
在main函数第一行就弄循环闪烁灯,不会死机是吗?是的话就有一定条件,看初始化了啥导致

出105入79汤圆

8
发表于 2024-6-19 01:15:27 | 只看该作者
通过电机pwm口进来弱电了,一般是mcu复位问题,加一个电源监控芯片,让mcu保持复位。

出20入62汤圆

9
发表于 2024-6-19 08:19:47 | 只看该作者
按照你的说法复现率100%,不像是干扰,干扰不会100%复现。
软件问题的概率大。你把电机驱动部分都屏蔽掉,初始化成最小系统,干干净净的就点个灯试试。

出0入0汤圆

10
发表于 2024-6-19 08:23:24 | 只看该作者
有可能单片机复位不正常。

出0入4汤圆

11
发表于 2024-6-19 11:43:06 | 只看该作者
不是软件问题,是由于IO灌电,导致MCU内部有了电压,处于一种不正常的运行状态。一般叫做假跑

出0入45汤圆

12
发表于 2024-6-19 11:58:46 | 只看该作者
应该是11楼的原因;

12V电源干扰3.3V电源的可能性不大,用示波器抓一下上电时3.3V的波形就清楚了

出0入0汤圆

13
 楼主| 发表于 2024-6-19 15:43:27 | 只看该作者
yunqing_abc 发表于 2024-6-19 11:43
不是软件问题,是由于IO灌电,导致MCU内部有了电压,处于一种不正常的运行状态。一般叫做假跑 ...
(引用自11楼)

板子上主要有三部分

3.3V供电的单片机

12V供电的电机驱动芯片

12V驱动的三路NMOS半桥

其中单片机通过6路GPIO口向电机驱动芯片输出PWM控制信号,电机驱动芯片再控制三路NMOS半桥的通断

如果真是IO倒灌,那只能是通过6根PWM线了。

该怎么解决IO倒灌?给PWM线加个10ohm的限流电阻?还是串联个肖特基二极管?或者给电机驱动芯片的12V电源串联个NMOS,单片机掉电,NMOS自动关断?

出0入0汤圆

14
 楼主| 发表于 2024-6-19 19:17:54 | 只看该作者
智涅 发表于 2024-6-19 00:44
贴下原理图或者框图?
在main函数第一行就弄循环闪烁灯,不会死机是吗?是的话就有一定条件,看初始化了啥 ...
(引用自7楼)


单纯地LED闪烁不会死机,我逐个解除代码注释,发现只要定时器TIMER1的初始化代码被执行了,就会卡死。TIMER1用来输出6路PWM信号给电机驱动芯片(12V供电)。

具体的说,是TIMER1初始化代码中最后的PWM输出使能,一旦在通12V的情况下被执行了,就会卡死。

而且3.3V的MCU和12V的电机驱动芯片恰恰是通过6路PWM连接的,所以从软硬件的角度考虑,我猜根源就在这。

12V通电时,电机驱动芯片通过6路PWM对单片机存在干扰,如果此时单片机使能6路PWM输出,相当于给外部干扰开放通路,导致整个单片机卡死。

出105入79汤圆

15
发表于 2024-6-20 01:45:17 | 只看该作者
NFYG2022 发表于 2024-6-19 19:17
单纯地LED闪烁不会死机,我逐个解除代码注释,发现只要定时器TIMER1的初始化代码被执行了,就会卡死。TIM ...
(引用自14楼)

pwm芯片EN脚要由MCU控制

出0入0汤圆

16
 楼主| 发表于 2024-6-20 04:31:39 | 只看该作者

用的邵峰的FD6288Q,没有使能引脚......看来只能在FD6288Q的供电口加NMOS了,用一个GPIO控制NMOS的通断

出0入45汤圆

17
发表于 2024-6-20 09:15:26 | 只看该作者
默认上电时浮空输入;
MCU上电时优先初始化6个PWM的GPIO,试一下初始化成下拉输出,或者下拉输入,看行不行?

出105入79汤圆

18
发表于 2024-6-20 09:34:38 | 只看该作者
NFYG2022 发表于 2024-6-20 04:31
用的邵峰的FD6288Q,没有使能引脚......看来只能在FD6288Q的供电口加NMOS了,用一个GPIO控制NMOS的通断 ...
(引用自16楼)

MCU使用复位芯片,让mcu在VDD低于3.3V时保持复位试下

出0入4汤圆

19
发表于 2024-6-20 09:47:32 | 只看该作者
qwe2231695 发表于 2024-6-20 09:34
MCU使用复位芯片,让mcu在VDD低于3.3V时保持复位试下
(引用自18楼)

这个方案应该也可以。
上边说的找到IO灌电的来源,断开这个来源,也可以

出0入0汤圆

20
 楼主| 发表于 2024-6-20 11:23:57 | 只看该作者
Arm2048 发表于 2024-6-20 09:15
默认上电时浮空输入;
MCU上电时优先初始化6个PWM的GPIO,试一下初始化成下拉输出,或者下拉输入,看行不行 ...
(引用自17楼)


这倒是启发我了,既然能通过PWM口倒灌影响MCU内部,那我把引脚浮空就行了。

复位后GPIO是浮空输入模式(用的AT32F421),对MCU的VDD和VSS无法施加影响。

先初始化TIMER1,使能PWM输出(我猜测倒灌只发生在PWM使能后的一小段时间内),但不初始化GPIO,这样就算倒灌也不影响MCU内部。使能PWM输出后延时5ms,再初始化对应的GPIO为推挽输出。

试了下果然没有卡死(至少这十几分钟没有卡死......)



不过这只是从软件层面规避bug,倒灌毕竟还是存在的,硬件设计也要防范潜在的倒灌。

出0入45汤圆

21
发表于 2024-6-20 14:04:27 | 只看该作者
软件能解决最好,只要测试运行稳定,没必要搞硬件;

硬件的话,GPIO与6288之间加一片74HC244,或者做光耦隔离;
但我看到的应用电路都是直接GPIO驱动6288。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-16 21:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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