数码之家

 找回密码
 立即注册
搜索
查看: 1168|回复: 28

[C51] STC单片机驱动直流电机,为啥驱动不起来?

[复制链接]
发表于 2024-8-28 21:18:58 | 显示全部楼层 |阅读模式

爱科技、爱创意、爱折腾、爱极致,我们都是技术控

您需要 登录 才可以下载或查看,没有账号?立即注册

x
捡垃圾捡了一个锂电钉枪,结果主板坏了。

遂想自己做一个主板,单片机用的STC8G1K08 8脚单片机,3-5.5电压供电
原理如下


自己写了点代码,


代码在开发板上测试LED,可以正常点亮和熄灭。

但是接电机后,就是无法启动,P5.5的电平要不是高电平,按了K3不变低,要不是低电平,按了K1+K2不变高。

有哪位大婶帮我看看,到底哪里出了问题。
发表于 2024-8-28 21:47:07 来自手机浏览器 | 显示全部楼层
程序看不懂 U2处缺一个续流二极管
回复 支持 反对

使用道具 举报

发表于 2024-8-28 21:59:44 来自手机浏览器 | 显示全部楼层
  1. while(1)
  2. {
  3.   while(K1 ==0 && K2 ==0 && K3==1) //任意条件不满足电机停转
  4.   {dianji = 1;}
  5.   dianji = 0;
  6. }
复制代码

这样行吗?+
回复 支持 反对

使用道具 举报

发表于 2024-8-28 22:15:12 | 显示全部楼层
程序的逻辑似乎是这样:
(按下K1 && 按下K2 && 松开K3)-->等待-->((松开K1 || 松开K2) && 松开K3)-->电机=高电平
按下K3---->等待-->松开K3-->电机=低电平

我猜钉枪应该是这样工作的:(按下K1 && 按下K2)-->电机=高电平(钉枪动作)-->松开K3(弹簧到位,动作完成)-->电机=低电平。
这个程序逻辑基本上是可以工作的,只是电机=高电平的时间是松开K1/K2时,电机=低电平是时间是松开K3时。
回复 支持 反对

使用道具 举报

发表于 2024-8-28 22:29:19 | 显示全部楼层
用LED测试过正常,接电机不正常可能是因为电机启动电流较大,电路驱动能力不足或者电源容量不足。改进方法1:增加电源驱动能力。2:MOS管前加一级驱动。可以试一下按下开关后扭一下电机看看能不能转起来。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-29 08:14:45 | 显示全部楼层
wuyaozi 发表于 2024-8-28 21:47
程序看不懂 U2处缺一个续流二极管

你的意思是电机上并联的二极管吗?

电机上并联的有一个二极管,所以我图里面就没画出来
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-29 08:15:20 | 显示全部楼层

这个比我的简约多了,应该是可行的!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-8-29 08:19:05 | 显示全部楼层
mmxx2015 发表于 2024-8-28 22:15
程序的逻辑似乎是这样:
(按下K1 && 按下K2 && 松开K3)-->等待-->((松开K1 || 松开K2) && 松开K3)-->电机= ...

K1是保险,钉枪抵着(K1按下)然后按下扳机(K2),才能激发dianji(电机运行带动弹簧),弹簧压缩到一定程度(K3被下压)后立即释放,发射射钉同时电机停止运行。
回复 支持 反对

使用道具 举报

发表于 2024-8-29 08:49:11 | 显示全部楼层
无图无真相
回复 支持 反对

使用道具 举报

发表于 2024-8-29 08:56:16 | 显示全部楼层
myseil 发表于 2024-8-29 08:19
K1是保险,钉枪抵着(K1按下)然后按下扳机(K2),才能激发dianji(电机运行带动弹簧),弹簧压缩到一定 ...

抵着后按下K2时立刻就转还是要松开K2才让它转?
回复 支持 反对

使用道具 举报

发表于 2024-8-29 09:08:49 | 显示全部楼层
我觉得得分步来,控制电路先单独接电机,单独测试按下开关电机转不转;
电机控制没问题了再加上剩余电路调逻辑。

一上来就接好所有电路、写好所有程序,那可有的折腾了,找问题去吧
回复 支持 反对

使用道具 举报

发表于 2024-8-29 09:17:37 | 显示全部楼层
wangxiangtan2 发表于 2024-8-29 09:08
我觉得得分步来,控制电路先单独接电机,单独测试按下开关电机转不转;
电机控制没问题了再加上剩余电路调 ...

他的逻辑似乎是有问题的,电机=1貌似只在某个符合条件的瞬间,不会持续
回复 支持 反对

使用道具 举报

发表于 2024-8-29 09:20:48 来自手机浏览器 | 显示全部楼层
本帖最后由 mmxx2015 于 2024-8-29 09:22 编辑
myseil 发表于 2024-8-29 08:19
K1是保险,钉枪抵着(K1按下)然后按下扳机(K2),才能激发dianji(电机运行带动弹簧),弹簧压缩到一定 ...

那程序就有个问题:如果一直抵着按着K2,电机就不会动作直到释放其中一个,显然,释放K1是不可能的。
回复 支持 反对

使用道具 举报

发表于 2024-8-29 09:22:41 | 显示全部楼层
逻辑有点不理解,在电机动作前一直while循环检测,那就是按键要翻转瞬间才过,但此时就会进入else里面,问题是else里面又while循环检测,个人理解逻辑不通.
回复 支持 反对

使用道具 举报

发表于 2024-8-29 09:30:02 | 显示全部楼层
建议先不要搞复杂的条件,简单点直接给电机=1一段时间看转不转得起来,转不起来那就是其他问题了,转得起来就是逻辑问题
回复 支持 反对

使用道具 举报

发表于 2024-8-29 10:14:59 来自手机浏览器 | 显示全部楼层
myseil 发表于 2024-8-29 08:19
K1是保险,钉枪抵着(K1按下)然后按下扳机(K2),才能激发dianji(电机运行带动弹簧),弹簧压缩到一定 ...

用门电路?
回复 支持 反对

使用道具 举报

发表于 2024-8-29 10:20:41 | 显示全部楼层
三个按键组合起来同时消抖容易出逻辑错误
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-1 11:49:33 | 显示全部楼层
南天音乐 发表于 2024-8-29 10:20
三个按键组合起来同时消抖容易出逻辑错误

我昨天用硬件消抖,使用K1按下,电机通电,K1松开电机断电。
电机能正常运行,但是没试几次,单片机挂了!
换了一片单片机,电机接万用表,发现有几次电压上升到7-8v左右,远远高于单片机最高供电电压。
不知道怎么处理了。

是不是单片机供电要加一个稳压二极管???
回复 支持 反对

使用道具 举报

 楼主| 发表于 2024-9-1 11:50:02 | 显示全部楼层
mmxx2015 发表于 2024-8-29 09:20
那程序就有个问题:如果一直抵着按着K2,电机就不会动作直到释放其中一个,显然,释放K1是不可能的。 ...

我昨天用硬件消抖,使用K1按下,电机通电,K1松开电机断电。
电机能正常运行,但是没试几次,单片机挂了!
换了一片单片机,电机接万用表,发现有几次电压上升到7-8v左右,远远高于单片机最高供电电压。
不知道怎么处理了。

是不是单片机供电要加一个稳压二极管???
回复 支持 反对

使用道具 举报

发表于 2024-9-1 12:09:46 来自手机浏览器 | 显示全部楼层
myseil 发表于 2024-9-1 11:50
我昨天用硬件消抖,使用K1按下,电机通电,K1松开电机断电。
电机能正常运行,但是没试几次,单片机挂了 ...

加一个RCD尖峰吸收电路。
回复 支持 反对

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-22 20:31 , Processed in 0.249600 second(s), 12 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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