如何使用单片机控制步进电机?

打算做一个绕线机。一个电机旋转绕线,另一个电机带着线做水平运动。如何使用单片机进行控制呢?怎么编写相应的C语言程序?
完全没有头绪。请诸位帮忙理清思路。谢谢

先看步进电机控制电机转动原理,把时序搞清楚,单片机控制驱动按照时序置管脚就OK
1、本程序用于测试4相步进电机常规驱动
2、需要用跳帽或者杜邦线把信号输出端和对应的步进电机信号输入端连接起来
3、速度不可以调节的过快,不然就没有力矩转动了
4、按s4(设置成独立按键模式)可以控制正反转
------------------------------------------------*/

#include <reg52.h>

bit Flag;//定义正反转标志位

unsigned char code F_Rotation[4]={0xf1,0xf2,0xf4,0xf8}; //正转表格
unsigned char code B_Rotation[4]={0xf8,0xf4,0xf2,0xf1}; //反转表格
/******************************************************************/
/* 延时函数 */
/******************************************************************/
void Delay(unsigned int i)//延时
{
while(--i);
}
/******************************************************************/
/* 主函数 */
/******************************************************************/
main()
{

unsigned char i;

EX1=1; //外部中断0开
IT1=1; //边沿触发
EA=1; //全局中断开

while(!Flag)
{
P0=0x71;//显示 F 标示正转
for(i=0;i<4;i++) //4相
{
P1=F_Rotation[i]; //输出对应的相 可以自行换成反转表格
Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
while(Flag)
{
P0=0x7C;//显示 b 标示反转
for(i=0;i<4;i++) //4相
{
P1=B_Rotation[i]; //输出对应的相
Delay(500); //改变这个参数可以调整电机转速 ,数字越小,转速越大
}
}
}
/******************************************************************/
/* 中断入口函数 */
/******************************************************************/
void ISR_Key(void) interrupt 2 using 1
{
Delay(300);

Flag=!Flag; //s3按下触发一次,标志位取反
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2017-11-24
根据电机相数买个驱动器。然后用单片机产生脉冲来控制电机的转动以及正反转。单片机产生脉冲的方法和单片机控制流水灯是一样的。希望我的回答能给你点思路。追问

脉冲产生方法是不是:1.电平变换,由低变高或由高变低。2.用for循环延时一段时间?
电机要我自己选择,我应该选择几相电机?只需要一个比较小功率的就好。

本回答被提问者采纳
第2个回答  2021-01-10

单片机控制步进电机,学会了这个就可以做一个电动玩具小车了

第3个回答  2011-03-21

笔者将电路图发给你了!希望好使!