数码之家

 找回密码
 立即注册
搜索
查看: 3834|回复: 6

[C51] 驱动一个微型6线步进电机

[复制链接]
发表于 2019-3-30 11:47:43 | 显示全部楼层 |阅读模式
玩了好久单片机最近没啥感兴趣的东西了,打理抽屉是翻出了一个小电机,是很多年前在废了的传真机上拆下来的,有6根引线分别是:两根红色、黑、橙、棕、黄色;此时,我对步进电机的知识为0,百度补课后大致了解了这种电机的原理,但是没能确认我手里这个电机的型号,有说是两相6(5)线步进电机,也有说是四相6(5)线电机,究竟是两相还是四相我至今不懂,再此也希望各位先知能够指点一下,接下来经过网络搜索仍然没有解决如何接线到单片机的明确内容,于是准备拆开电机查看,不想仅仅轻轻一撬电机壳没有开启但接线盒却开了,接线方法一目了然就摆在眼前了,如下图:


接下来就是找驱动方法了,这一部分网上资料多如牛毛不在此详细描述,只是简单的说,这种电机有两种驱动模式,一是4拍模式:AB-BC-CD-DA;另一种为8拍模式:A-AB-B-BC-C-CD-D-DA;
再接下来就是驱动原理中的ABCD端如何与黄、棕、橙、黑线对应上,在这一步骤时我迷糊了两天,后来搞好了的时候才发现,不是原理有多难而是我想的太多了,其实电机的输出线的排列方式以及与驱动顺序对应好了,根本不必要走心考虑了,接下来做了一个三极管驱动的板子即可连线测试了。
接线如图:

晶体管驱动原理图如下:

说到这里关于电机方面的事情就说清楚了,要说一点经验的话就是驱动步进电机的编程与驱动LED数码管的方法类似,关键是要画一个表格而后再根据表格弄出来驱动码,其他就毫无悬念了。
表格如图所示:

演示装置如图:(图片拍虚了凑合看吧)

下面是驱动代码,单片机为STC12C5A32S2,晶振12MHz
重要提示:驱动仅用于演示,尚未经过实用检验,单片机仅用于电机驱动所以使用了软件延时,如果是实用系统需要开启定时器进行延时控制。
还是老办法复制粘贴代码即可用于实验:
#include <STC12C5A60S2.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
uchar code timing[8]={0x01,0x03,0x02,0x06,0x04,0x0c,0x08,0x09}; //八拍驱动(正转)
//A-AB-B-BC-C-CD-D-AD
//uchar code timing[4]={0x03,0x06,0x0c,0x09}; //四拍驱动(正转)
//AB-BC-CD-AD
//-----------------------------------------
void delay1ms(uchar n)  [url=]//@12.000MHzuchar[/url] n ms
{
uchar i,j;
while(--n)
{
_nop_();
_nop_();
i = 12;
j = 168;
do
{
while (--j);
} while (--i);
}
}
//--------------------------------------------
void delay1s(void)
{
unsigned char i,j,k;
for(i=93;i>0;i--)
for(j=235;j>0;j--)
for(k=125;k>0;k--);
}
//------------------------------------------
void turn_right()
{
uint i;
uchar n;
for(i=0;i<200;i++) // 转100 步
{
for(n=0;n<8;n++)
{
P2=timing[n];
delay1ms(10);//经过测试延时低于7ms是电机不能启动
}
}
P2=0xf0; // 关闭低4位
}
//------------------------------------------------
void turn_left()
{
uint i;
uchar n;
for(i=0;i<200;i++) // 转100 步
{
for(n=8;n>0;n--)
{
P2=timing[n-1];
delay1ms(10);//经过测试延时低于7ms是电机不能启动
}
}
P2=0xf0; // 关闭低4位
}
//-------------------------------------------------------
void main(void)
{
P2M1 = 0x00; // P2推挽输出
P2M0 = 0x0f;
while(1)
{
turn_right();
delay1s();
turn_left();
delay1s();
}
}

本帖子中包含更多资源

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

x

打赏

参与人数 6家元 +148 收起 理由
myhaly + 20
aec + 18 謝謝分享
girlstorm + 20 謝謝分享
数码家园 + 20
200birds + 20
家睦 + 50

查看全部打赏

发表于 2019-3-30 22:05:28 来自手机浏览器 | 显示全部楼层
老哥开始烧电机了…
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-3-31 10:43:15 | 显示全部楼层
触景情伤 发表于 2019-3-30 22:05
老哥开始烧电机了…

哈哈,纯属瞎玩、摸着啥玩啥,能亮的亮起来能转的转起来就会心情大好。
回复 支持 反对

使用道具 举报

发表于 2019-3-31 11:36:23 | 显示全部楼层
厉害我的哥 我也喜欢玩这些小东西
回复 支持 反对

使用道具 举报

发表于 2019-3-31 12:06:23 来自手机浏览器 | 显示全部楼层
这个应该是打印机的步进电机,从_!旧打印机拆过两个,其中一个与这个一样已改成两相的。

打赏

参与人数 3家元 +36 收起 理由
zx61107 + 10 歡迎探討
慕名而来 + 16 驱动是一样的方法吧。
myhaly + 10

查看全部打赏

回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-1 10:05:39 | 显示全部楼层
aec 发表于 2019-3-31 12:06
这个应该是打印机的步进电机,从_!旧打印机拆过两个,其中一个与这个一样已改成两相的。 ...

我的这个是传真机里拆的,好多年了,当时公司的传真机淘汰了窃喜,因为那上面有1602LCD,后来又发现了这个电机就一并拆了,现在手里有两个了但找不到用途,玩明白了继续吃灰。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-4-1 10:08:16 | 显示全部楼层
huixing122 发表于 2019-3-31 11:36
厉害我的哥 我也喜欢玩这些小东西

有闲工夫的话,玩玩无妨。
回复 支持 反对

使用道具 举报

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

本版积分规则

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

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-8 18:40 , Processed in 0.343200 second(s), 13 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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