数码之家

 找回密码
 立即注册

QQ登录

只需一步,快速开始

微信登录

微信扫一扫,快速登录

搜索
查看: 1136|回复: 19

[工仪] 四线步进电机驱动

[复制链接]
发表于 2025-4-1 08:27:33 | 显示全部楼层 |阅读模式












本帖子中包含更多资源

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

x
发表于 2025-4-1 08:40:37 | 显示全部楼层


还以为是手拿住的,原来是插进去的、、、、鸟。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-1 08:41:58 | 显示全部楼层
开心的果 发表于 2025-4-1 08:40
还以为是手拿住的,原来是插进去的、、、、鸟。

哈哈,你想多鸟
回复 支持 反对

使用道具 举报

发表于 2025-4-1 08:58:24 | 显示全部楼层
用的啥芯片,教教我啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-1 09:01:03 | 显示全部楼层
sadfun 发表于 2025-4-1 08:58
用的啥芯片,教教我啊

哈哈,自己做着玩的,有成品芯片不用这么搞
回复 支持 反对

使用道具 举报

发表于 2025-4-1 11:12:50 | 显示全部楼层
这么小的四线步进电机,用在哪里的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-1 11:14:54 | 显示全部楼层
wqwq212 发表于 2025-4-1 11:12
这么小的四线步进电机,用在哪里的。

没啥用,哈哈
回复 支持 反对

使用道具 举报

发表于 2025-4-1 20:48:20 | 显示全部楼层
看小台钳的比例,电机确实挺小的。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2025-4-2 08:09:51 | 显示全部楼层
xjmar 发表于 2025-4-1 20:48
看小台钳的比例,电机确实挺小的。

哈哈,小电机
回复 支持 反对

使用道具 举报

发表于 2025-5-28 10:28:34 来自手机浏览器 | 显示全部楼层
四线步进电机用两个H桥驱动
回复 支持 反对

使用道具 举报

发表于 前天 11:16 | 显示全部楼层
我不会玩,但是想做个驱动步进电机(目的是想定时喂鸡饲料),找别人的程序又不会改,移植到STC8G1K08一大堆报错,这搞搞哪搞搞,蒙圈了

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 前天 20:26 | 显示全部楼层
pxhxkij 发表于 2025-7-23 11:16
我不会玩,但是想做个驱动步进电机(目的是想定时喂鸡饲料),找别人的程序又不会改,移植到STC8G1K ...

你的功能应该不难:无非就是到了一定的时间,或者说间隔一定的时间,让步进电机转动一定的时间(角度)就可以了。
回复 支持 反对

使用道具 举报

发表于 昨天 08:28 | 显示全部楼层
本帖最后由 pxhxkij 于 2025-7-24 09:14 编辑
ahyu99 发表于 2025-7-23 20:26
你的功能应该不难:无非就是到了一定的时间,或者说间隔一定的时间,让步进电机转动一定的时间(角度)就 ...

诶,懂的不难,我这菜鸟就很难了,89C52上测试可以连续正反转,但是停下后反转单独测试无法运行。不知道我用的共阳输入问题还是别的,没找到原因。

网络上找的代码。

  1. //程序说明:

  2. //当单片机P2.0口得到一个低电平信号时,步进电机正转;
  3. //当单片机P2.1口得到一个低电平信号时,步进电机反转;
  4. //当单片机P2.2口得到一个低电平信号时,步进电机加速运转;
  5. //当单片机P2.3口得到一个低电平信号时,步进电机减速运转;

  6. //*********************************************************************/

  7. #include<reg52.h>
  8. //#include<__STC8G_H__.h>
  9. //#define__STC8G_H__
  10. #define uchar unsigned char
  11. #define uint unsigned int
  12. uchar Y=10; //初始化速度
  13. uint qs=0;
  14. /********************************************************
  15.                                                  控制位定义
  16. ********************************************************/

  17. sbit shi_neng=P1^0;  //        使能控制位
  18. sbit fang_xiang=P1^1;//        旋转方向控制位
  19. sbit mai_chong=P1^2; // 脉冲控制位

  20. sbit zheng_zhuan=P2^0;  //        正转
  21. sbit fan_zhuan=P2^1;    //        反转
  22. sbit jia_su=P2^2;         // 加速
  23. sbit jian_su=P2^3;   // 减速

  24. /********************************************************
  25.                                                  延时函数
  26. ********************************************************/
  27. void delay(uchar i)//延时函数
  28. {
  29.         uchar j,k;
  30.         for(j=0;j<i;j++)
  31.         for(k=0;k<180;k++);
  32. }
  33. /********************************************************
  34.                                                  加速函数
  35. ********************************************************/
  36. void jia()
  37. {

  38. Y=Y-1;
  39. if(Y<=1){Y=1;}//如果速度值小于等于1,值保持不变

  40. }
  41. /********************************************************
  42.                                                  减速函数
  43. ********************************************************/
  44. void jian()
  45. {

  46. Y=Y+1;
  47. if(Y>=100){Y=100;}

  48. }
  49. /********************************************************
  50.                                                  主函数
  51. ********************************************************/

  52. main()
  53. {
  54.         shi_neng=0;  //        使能控制位
  55.         fang_xiang=1;//        旋转方向控制位
  56.         mai_chong=1; // 脉冲控制位
  57.         while(1)
  58.         {

  59.                 if(zheng_zhuan==0){shi_neng=1;fang_xiang=1;qs=0;while(!zheng_zhuan);delay(10);}
  60.                 if(fan_zhuan==0){shi_neng=1;fang_xiang=0;}
  61.                 if(jia_su==0){delay(10);while(!jia_su);jia();}
  62.                 if(jian_su==0){delay(10);while(!jian_su);jian();}
  63.                 if(qs<=3200)
  64.                 {
  65.                 qs++;
  66.                 mai_chong=~mai_chong; //输出时钟脉冲
  67.                    }
  68.                 delay(1);                          //延时(括号内数值越小,电机转动速度越快)
  69.                
  70.         }
  71. }
  72. /********************************************************
  73.                                                  结束
  74. ********************************************************/
复制代码
73行没有延时,加上后反转可以运行了。

本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 昨天 11:26 | 显示全部楼层
理论上,51、52单片机的代码可以用在STC8G、8H上,但是有点你要注意:STC8G、8H的GPIO输入的时候,设置为高阻输入模式,输出的时候,设置为普通IO模式也可以,但是,对于你的步进电机驱动,设置为推挽输出比较可靠。还有就是时钟频率问题,STC8G、8H都是1T单片机,原来的软件延时就可能不适用了。
回复 支持 反对

使用道具 举报

发表于 昨天 12:15 | 显示全部楼层
都差不多赶上光驱上的步进电机了
回复 支持 反对

使用道具 举报

发表于 昨天 16:52 | 显示全部楼层
pxhxkij 发表于 2025-7-23 11:16
我不会玩,但是想做个驱动步进电机(目的是想定时喂鸡饲料),找别人的程序又不会改,移植到STC8G1K ...

俺也一样,俺是为了驱动自制车床的小车,最后只能买了成品
回复 支持 反对

使用道具 举报

发表于 昨天 17:09 | 显示全部楼层
参考说明书








本帖子中包含更多资源

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

x
回复 支持 反对

使用道具 举报

发表于 14 小时前 | 显示全部楼层
ahyu99 发表于 2025-7-24 11:26
理论上,51、52单片机的代码可以用在STC8G、8H上,但是有点你要注意:STC8G、8H的GPIO输入的时候,设置为高 ...

谢谢指导,等会安妮的方法设置8G的IO口看看结果。
回复 支持 反对

使用道具 举报

发表于 12 小时前 | 显示全部楼层
从你的驱动器的说明书看,那个脉冲的宽度至少要有2.5us,所以,脉冲的频率最高不能超过400kHz。再结合你的步进电机本身的参数,来确定一个适合的频率就可以了。可以用延时的方式,也可以用定时器的方式来输出脉冲。
将单片机连端口接到对应的ENA、PUL、DIR上面,设置成推挽输出模式,ENA端口输出高电平,PUL输出脉冲,理论上就可以让电机转动起来了。只是方向你要看DIR引脚的电平高低。
回复 支持 反对

使用道具 举报

发表于 12 小时前 | 显示全部楼层
pxhxkij 发表于 2025-7-24 08:28
诶,懂的不难,我这菜鸟就很难了,89C52上测试可以连续正反转,但是停下后反转单独测试无法运行。不知道我 ...

找deepseek帮你写个,应该轻轻松松
回复 支持 反对

使用道具 举报

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

本版积分规则

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

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-7-25 22:41 , Processed in 0.249600 second(s), 8 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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