单片机控制两相四线步进电机控制

眉间皱痕 提交于 2020-12-25 05:55:04

先来图看看,没忍住全部抄下来:(感谢万能的淘宝,以及商家 8毛钱一个还要啥自行车  @ https://item.taobao.com/item.htm?spm=a230r.1.14.65.472f69f3zFqx6H&id=590142046187&ns=1&abbucket=8#detail)

 

 手头有个STC89C51开发板,送的就是上边的步进电机。也不太懂这四个线的作用,好在有百度。百度了是arduino,单片机的也有。

控制方法见这里:https://wenku.baidu.com/view/8579bf2349649b6649d747ea.html 第四页下侧。

看了之后该电机可以4拍8拍的运行。步进电机的特点是,误差不累积。

单片机不能直接控制它,因为电流不够。开发板上有个 TC1508S (https://wenku.baidu.com/view/6e6dbe0302d8ce2f0066f5335a8102d276a261b7.html)

专门是用来做玩具马达的。这个片子很容易,输入四个 ,输出四个 可以控制两个直流电机(突然我有开玩具厂做遥控车的想法,哈哈)做到真正的四驱。

这里也可以控制好输出的时序来控制这个两线四相的步进电机。关于连线附属电容参看TC1508S的内容。

用了P1的0,1,2,3端口 接 TC1508S的 ina inb inc ind  关于真值表看文档

TC1508S的 outa outb outc outd 接到 步进电机的 A+ A- B+ B- 

按上边的就是间接的用 0,1,2,3口控制步进电机的 A+ A- B+ B-

代码我在贴吧看到一个,拷过来能用,是4拍的:

sbit   A_OUT=P1^0;              //位定义
sbit   B_OUT=P1^1;              //位定义
sbit   C_OUT=P1^2;              //位定义
sbit   D_OUT=P1^3;             //位定义
void delay(i)//延时函数
{
unsigned char  j,k;
for(j=0;j<3;j++)
for(k=0;k<i;k++);
}

FuncNum=200;
while (--FuncNum) {
A_OUT=1;
B_OUT=0;
C_OUT=1;
D_OUT=0;
delay(y);
//
A_OUT=0;
B_OUT=1;
C_OUT=1;
D_OUT=0;
delay(y);
   //
A_OUT=0;
B_OUT=1;
C_OUT=0;
D_OUT=1;
delay(y);
   //
A_OUT=1;
B_OUT=0;
C_OUT=0;
D_OUT=1;
delay(y);
    }
P1=0;   //恢复低电平,防止烧坏电机

至于八拍的就看上边的关于步进电机的文档补充上就好了。

 

这个电机虽小,可以做很多有意思的东西。

 

另外如果接TC1508S的 outa outb , outc outd 可以分两组控制两个普通马达,小时候最喜欢四驱车就是这个,淘宝2快两个,想当年四驱车暴利啊。

 

现在越来越喜欢单片机了。能控制能动的马达,无限的想象力就来了。

 为什么放在QT因为我在做上位机和下位机控制。串口通信把小马达们控制起来,加个蓝牙,无线模块,无限可能有木有。

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!