打印
[STC单片机]

STC89C52RC单片机控制直流电机时不稳定

[复制链接]
2025|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 Pickupmeizz 于 2019-4-24 14:20 编辑

毕设要用52单片机控制直流电机的正反转,我用L9110H芯片作为电机的驱动芯片,单片机引脚接了上拉电阻,然后接到L9110H的控制端,想实现电机的正转,反转和停止控制。在调试的过程中,我发了正转指令后,电机正转,可是在运行一段时间后就会停止,而且是在我没发送停止指令的情况下,不知道为什么,有的时候它又能稳定运行一段时间,有的时候就只能运行一会会儿,单片机咋就不听话了呢?我感觉是电机对它造成了干扰,但不知道为什么?该怎么解决这个不稳定的问题?恳请各路大侠来指点迷津,不胜感激。

857905cbffe655a2c4.png (419.58 KB )

857905cbffe655a2c4.png

新建文件夹.zip

14.3 KB

使用特权

评论回复

相关帖子

沙发
wono01| | 2019-4-24 13:48 | 只看该作者
抛硬币猜吧,不贴代码,不贴原理图,抛硬币比较靠谱。

使用特权

评论回复
板凳
Pickupmeizz|  楼主 | 2019-4-24 14:21 | 只看该作者
wono01 发表于 2019-4-24 13:48
抛硬币猜吧,不贴代码,不贴原理图,抛硬币比较靠谱。

见笑了,见笑了

使用特权

评论回复
地板
rankey| | 2019-4-25 12:54 | 只看该作者
  看了一下程序,感觉是整个程序的架构有问题。
   主函数里的while(1)里的死循环部分,与串口中断。都会对电机的正反转有控制。导致有时候串口收到正转或反转,在进入while(1)里,被执行其他的动作,从而产生莫名其妙的误动作。
    我建议你再仔细看一下,调一下

使用特权

评论回复
5
Pickupmeizz|  楼主 | 2019-4-25 17:19 | 只看该作者
rankey 发表于 2019-4-25 12:54
看了一下程序,感觉是整个程序的架构有问题。
   主函数里的while(1)里的死循环部分,与串口中断。都会对 ...

我的想法是用串口中断接收指令并对指令进行识别,针对不同的指令对各标志位赋值,用子循环实现电机的持续转动,直到触发中断,回到主循环,对各标志位进行逻辑运算以改变电机的工作状态,在调试的过程中,是可以通过指令使得电机按照要求转动的,只是在电机的运行过程中,过一定时间,它会自动进入停止状态,比如,我只发送正转指令,则电机开始正转,然后我什么都不做,它会自己停下来,可能是硬件上的问题,没有把电机和单片机隔离开来,昨天我去图书馆翻了翻书,说单片机的电源不稳定的话会使它工作不稳定,当单片机掉电时,它停止工作,电源恢复后又重新把程序走一遍,我估摸着是电机对单片机电源造成了影响,希望可以早点解决这个不稳定的问题吧

使用特权

评论回复
6
rankey| | 2019-4-26 09:31 | 只看该作者
可以考虑对芯片的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;是正转停止,反转开启的意思啊!
      这代码是不是又问题哦?
                  

使用特权

评论回复
7
Pickupmeizz|  楼主 | 2019-4-26 15:29 | 只看该作者
rankey 发表于 2019-4-26 09:31
可以考虑对芯片的VCC输入端,搭建π型滤波电路,以平滑VCC的电压波形,抑制来自电机的高频干扰信号。
     ...

这是根据L9110H电机驱动芯片来写的代码,实现电机的正反转控制,其实正转,反转改起来还是很方便的,现在的问题主要是电机运行不稳定。

使用特权

评论回复
8
Pickupmeizz|  楼主 | 2019-4-28 11:49 | 只看该作者
用两路独立电源供电,一路供给单片机,一路供给直流电机,不稳定问题得到解决。

使用特权

评论回复
9
rankey| | 2019-4-28 12:18 | 只看该作者
可以的!
   用双电源,固然解决了问题。但也要想一想,如何用单电源,也能稳定的工作。

使用特权

评论回复
10
Pickupmeizz|  楼主 | 2023-4-12 13:38 | 只看该作者
时隔多年,再重新看自己曾经做过的**玩意,简直太low了,此问题的根源是当时使用电脑USB接口供电,而马达运转的额定电流大于USB接口的最大输出电流,触发USB接口的保护电路,USB接口断电,输出电流消失,解除保护机制,USB接口重新上电,然后程序重新运行。所以任何一个电路的稳定运行都需要一个稳定的电源电路。电学问题,抓住3个点:电压,电流,功率。

使用特权

评论回复
评论
一叶倾城wwq 2023-4-14 11:04 回复TA
赞一个,楼主还翻出以前的贴子复盘 
11
集成| | 2023-5-5 15:01 | 只看该作者
轻易不电脑USB做什么试验怕电脑费了

使用特权

评论回复
12
mikizhang| | 2023-5-5 15:37 | 只看该作者
本帖最后由 mikizhang 于 2023-5-5 15:40 编辑

听说STCAI现在有自带硬件USB下载和USB仿真的STC8H8K64U的芯片,还有免费的核心功能实验板可以撸,大家快去www.STCAIMCU去薅羊毛

使用特权

评论回复
13
专注于嵌入式| | 2023-5-6 08:49 | 只看该作者
Pickupmeizz 发表于 2023-4-12 13:38
时隔多年,再重新看自己曾经做过的**玩意,简直太low了,此问题的根源是当时使用电脑USB接口供电,而马达运 ...

并不是这个原因。你不信你在单片机VCC那里加一个大电容也可以。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

19

帖子

0

粉丝