STC89C52RC单片机控制直流电机时不稳定
本帖最后由 Pickupmeizz 于 2019-4-24 14:20 编辑毕设要用52单片机控制直流电机的正反转,我用L9110H芯片作为电机的驱动芯片,单片机引脚接了上拉电阻,然后接到L9110H的控制端,想实现电机的正转,反转和停止控制。在调试的过程中,我发了正转指令后,电机正转,可是在运行一段时间后就会停止,而且是在我没发送停止指令的情况下,不知道为什么,有的时候它又能稳定运行一段时间,有的时候就只能运行一会会儿,单片机咋就不听话了呢?我感觉是电机对它造成了干扰,但不知道为什么?该怎么解决这个不稳定的问题?恳请各路大侠来指点迷津,不胜感激。
抛硬币猜吧,不贴代码,不贴原理图,抛硬币比较靠谱。 wono01 发表于 2019-4-24 13:48
抛硬币猜吧,不贴代码,不贴原理图,抛硬币比较靠谱。
见笑了,见笑了 看了一下程序,感觉是整个程序的架构有问题。
主函数里的while(1)里的死循环部分,与串口中断。都会对电机的正反转有控制。导致有时候串口收到正转或反转,在进入while(1)里,被执行其他的动作,从而产生莫名其妙的误动作。
我建议你再仔细看一下,调一下 rankey 发表于 2019-4-25 12:54
看了一下程序,感觉是整个程序的架构有问题。
主函数里的while(1)里的死循环部分,与串口中断。都会对 ...
我的想法是用串口中断接收指令并对指令进行识别,针对不同的指令对各标志位赋值,用子循环实现电机的持续转动,直到触发中断,回到主循环,对各标志位进行逻辑运算以改变电机的工作状态,在调试的过程中,是可以通过指令使得电机按照要求转动的,只是在电机的运行过程中,过一定时间,它会自动进入停止状态,比如,我只发送正转指令,则电机开始正转,然后我什么都不做,它会自己停下来,可能是硬件上的问题,没有把电机和单片机隔离开来,昨天我去图书馆翻了翻书,说单片机的电源不稳定的话会使它工作不稳定,当单片机掉电时,它停止工作,电源恢复后又重新把程序走一遍,我估摸着是电机对单片机电源造成了影响,希望可以早点解决这个不稳定的问题吧 可以考虑对芯片的VCC输入端,搭建π型滤波电路,以平滑VCC的电压波形,抑制来自电机的高频干扰信号。
但程序里,有一个疑问:
/******电机停止********/
motor_p=1;
motor_n=1;
/*******************/
可见,端口拉高,电机是停转的。
可是这段代码: if(mode) //工作在自动模式
{
while(auto_z) //窗帘未完全打开 且天亮-----把窗帘打开
{
motor_p=1; //电机正转,窗帘打开
motor_n=0;
delay(100);
motor_n=1;
delay(100);
}
以上这段代码是想实现自动模式下的正转吧?
可是motor_p=1;motor_n=0;是正转停止,反转开启的意思啊!
这代码是不是又问题哦?
rankey 发表于 2019-4-26 09:31
可以考虑对芯片的VCC输入端,搭建π型滤波电路,以平滑VCC的电压波形,抑制来自电机的高频干扰信号。
...
这是根据L9110H电机驱动芯片来写的代码,实现电机的正反转控制,其实正转,反转改起来还是很方便的,现在的问题主要是电机运行不稳定。 用两路独立电源供电,一路供给单片机,一路供给直流电机,不稳定问题得到解决。 可以的!
用双电源,固然解决了问题。但也要想一想,如何用单电源,也能稳定的工作。 时隔多年,再重新看自己曾经做过的**玩意,简直太low了,此问题的根源是当时使用电脑USB接口供电,而马达运转的额定电流大于USB接口的最大输出电流,触发USB接口的保护电路,USB接口断电,输出电流消失,解除保护机制,USB接口重新上电,然后程序重新运行。所以任何一个电路的稳定运行都需要一个稳定的电源电路。电学问题,抓住3个点:电压,电流,功率。 轻易不电脑USB做什么试验怕电脑费了 本帖最后由 mikizhang 于 2023-5-5 15:40 编辑
听说STCAI现在有自带硬件USB下载和USB仿真的STC8H8K64U的芯片,还有免费的核心功能实验板可以撸,大家快去www.STCAIMCU去薅羊毛 Pickupmeizz 发表于 2023-4-12 13:38
时隔多年,再重新看自己曾经做过的**玩意,简直太low了,此问题的根源是当时使用电脑USB接口供电,而马达运 ...
并不是这个原因。你不信你在单片机VCC那里加一个大电容也可以。
页:
[1]