标题: 步进电机停不下来,又锁不住 程序错在哪里,帮帮新手吧! [打印本页]
作者: tmxk0574 时间: 2017-6-13 13:49
标题: 步进电机停不下来,又锁不住 程序错在哪里,帮帮新手吧!
要求步进电机转过90度后,把电机轴锁住。结果既停不下来,又锁不住。程序错在哪里?求大家帮一帮。
- #include <reg51.h> //要求步进电机转过90度后,把电机轴锁住。
- unsigned char code up_data[8]={ 0xf9,0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8};
- /********以下是延时函数,延时时间为speed×1ms********/
- void Delay(unsigned int speed)
- {
- unsigned int i,j;
- for(i=speed;i>0;i--)
- for(j=110;j>0;j--);
- }
- /********以下是主函数********/
- void main()
- {
- unsigned char i;
- unsigned int cnt=0;
- for (i=0; i<8; i++) //1个脉冲转5.625度,(16个脉冲转了90度)
- {
- P1 = up_data[i];
- Delay(5);
- cnt++;
- if (cnt==16)
- {
- P1 = up_data[i]; //达到16个脉冲后,把电机轴锁住20秒钟。
- Delay(20000);
- }
- }
- }
复制代码
作者: tmxk0574 时间: 2017-6-14 11:42
订正一下,方括号中的是数字1,我的原意是去读取0xf9,然后延时20秒使电机不断电而把电机锁住,不知道这样做对吗?
P1 = up_data[1]; //达到16个脉冲后,把电机轴锁住20秒钟。
作者: HC6800-ES-V2.0 时间: 2017-6-14 13:42
你没有图片,我不知道你是用的什么步进电机、什么驱动电路。
我这里有一个程序及资料,分享给你参考。
51单片机STC89C51RC
ULN2003步进电机驱动模块+步进电机套件
用按键控制:正转、反转、加减转速、只转90度、只转180度。
好像符合你的要求。
你只要根据自己的电路,作适当修改就可以了。
-
-
步进电机.rar
176.84 KB, 下载次数: 58
作者: zl2168 时间: 2017-6-14 16:12
本帖最后由 zl2168 于 2017-6-14 16:14 编辑
实例99 驱动二相步进电机
先Proteus仿真一下,确认有效。
实例99 二相步进电机.rar
(36.2 KB, 下载次数: 25)
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1,内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行。书中电路和程序设计有详细说明,程序语句条条有注解。仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。
作者: zl2168 时间: 2017-6-14 16:14
实例98 驱动四相步进电机
实例98 四相步进电机.rar
(35.83 KB, 下载次数: 16)
先Proteus仿真一下,确认有效。
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1,内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行。书中电路和程序设计有详细说明,程序语句条条有注解。仿真电路和Hex文件能在清华出版社网站免费下载,程序源代码只能到书上看了。到图书馆借,或到新华书店翻阅,或到网上书店打折购买。
作者: 奔波儿灞1 时间: 2017-6-14 16:16
貌似这个for循环写的不对把,感觉怪怪的
作者: tmxk0574 时间: 2017-6-14 22:06
回HC6800-ES-V2.0 ,我用的是28BYJ-48步进电机(去掉了减速部分) 、步距角5.625度,驱动器为ULN2003。
我的要求是:电机轴转过一个角度后(例如90度)停止转动,但要求某一组线圈仍要通电,目的是把电机轴“锁住”,(用手去拧轴,轴不会转了),这个状态要求持续20秒钟。
作者: HC6800-ES-V2.0 时间: 2017-6-15 08:18
抱歉,你给你的程序,只控制了转动90,没能“锁住”。我用的电机步距角也是5.625度,但是减速电机,减速比64:1,所以转动90度,要1024个脉冲,才能转动90度。昨天忘说了。锁住功能我也不会。
作者: 宫本无三四 时间: 2017-6-15 11:32
1,查查驱动板是否带锁死功能
2、如果驱动板没有,可以保持最后通电绕组通电来锁死
作者: hebinhao 时间: 2017-6-15 15:13
仔细检查下程序
作者: tmxk0574 时间: 2017-6-15 20:47
您好!我说的正是您第二点所说的意思,“保持最后通电绕组通电来锁死”,但在程序上怎么处理搞不明白,希望得到支持
作者: 湖南 时间: 2020-6-28 17:23
仔细检查自己的步进电机函数有没有编写错误,是否处于死循环里面出不去了
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |