产品选型

51单片机控制电机正反转 51单片机控制步进电机正反转

小编 2025-07-12 产品选型 23 0

51单片机控制步进电机正反转

因为最近疫情还是挺严重的,在家闲着无聊便想着做些东西玩玩,翻箱倒柜就找到了一个51单片机开发板和步进电机,那就先控制步进电机转动吧。

四相五线步进电机

这个电机是四项五线步进电机,使用ULN2003驱动板进行驱动。只需按照下面顺序给驱动板信号就可以使电机转动起来了。

本次使用三个按键控制电机的动作,分别控制电机正转、反转和停止。

51单片机控制四线步进电机驱动实现正反转和任意角度速度控制

最近有好多小伙伴私信我说,导师给他们布置了关于四线步进电机控制的相关设计,问我能不能写个类似的文章,今天我刚好有点时间,我们就一起探讨一下吧。

想要弄清楚步进电机的控制方式先要弄清楚它的接线方式和工作原理

步进电机结构和工作原理:

1.步进电机是将电脉冲信号转变为角位移或线位移的开环控制元件。在非超载的情况下,电动机的转速、停止的位置只取决于控制脉冲信号的频率和脉冲数。

2.脉冲数越多,电机转动的角度越大。

3.脉冲的频率越高,电机转速越快,但不能超过最高频率,否则电机的力矩迅速减小,电机不转。按力矩产生的原理可以分为:

(1)反应式:转子无绕组,由被激磁的定子绕组产生反应力矩实现步进运行

(2)激磁式:定、转子均有激磁绕组(或转子用永久磁钢),由电磁力矩实现步进运行按输出力矩大小可分为:

(1)伺服式:输出力矩在百分之几之几至十分之几(N.m)只能驱动较小的负载,要与液压扭矩放大器配用,才能驱动机床工作台等较大的负载

(2)功率式:输出力矩在5~50 N.m以上,可以直接驱动机床工作台等较大的负载按定子数可分为:

(1)单定子式(2)双定子式(3)三定子式(4)多定子式按各相绕组分布可分为;

(1)径向分布式:电机各相按圆周依次排列

步进电机和驱动板的连接方式:

鉴于时间原因我就用仿真软件做了一个单片机四线步进电机驱动项目 供大家参考学习,希望你看完后会有所收获。

项目软件程序功能:当按下SW1时步进电机正转,按下SW2后步进电机反转,并可以根据源码任意调节旋转速度和每一个脉冲旋转角度

以下是仿真图:

程序参考源代码如下:经过实际验证,软硬件可以实现设计功能,实验成功。

/C语言程序:/

#include <reg52.h> //

#define uchar unsigned char

#define uint unsigned int

uchar table_begin;

uint maichong; //脉冲

uchar zhuansu; //转速

uchar flag; //方向

sbit key_fuwei=P3^0; //复位键

sbit key_z=P3^1; //正转键

sbit key_f=P3^2; //反转键

sbit key_jia=P3^3; //加速键

sbit key_jian=P3^6; //减速键

sbit A1=P2^0;

sbit A2=P2^1;

sbit A3=P2^2;

sbit A4=P2^3;

void display();

void delayms(xms);

void delay(uchar x)

{

uchar i,j; //延时

for(i=0;i<x;i++)

for(j=100;j>0;j–);

}

void fuwei(void) //复位

{

flag=2;

zhuansu=0;

}

/*void Display(void) //显示

{

unsigned char b1, b2;

b1=zhuansu/10;

b2=zhuansu%10;

if(flag == 0) //0

P0=0x71;//显示F

else

P0=0x79;

A1=0;

delayms(3);

A1=1;

P0=0x40;

A2=0; //显示--

delayms(3);

A2=1;

P0=table2[b1];

A3=0; //显示十位

delayms(3);

A3=1;

P0=table2[b2];

A4=0;

delayms(3); //显示个位

A4=1;

void display()

{

uchar b1,b2,b3,b4;

if(flag0)

P0=0x71;//显示F

else

P0=0x79;

if(flag1)

P0=0x7c;//显示b

else

P0=0x71;

b1=10;

b2=0x3f;

b3=zhuansu/10;

b4=zhuansu%10;

//P0=table2;

A1=0; //P2.0

delay(1);

A1=1;

P0=b2;

A2=0; //P2.1

delay(1);

A2=1;

P0=table2[b3];

A3=0; //P2.3

delay(1);

A3=1;

P0=table2[b4];

A4=0; //P2.4

delay(1);

A4=1;

}

void key() //按键扫描

{

if(key_fuwei0)

{

delay(5);

if(key_fuwei0)

fuwei();

}

if(key_z0)

{

delay(5);

if(key_z0)

{

flag=0;

zhuansu=10;

while(key_z0);

}

}

if(key_f0)

{

delay(5);

if(key_f0)

{

flag=1;

zhuansu=10;

while(key_f0);

}

}

if(key_jia0)

{

delay(5);

if(key_jia0)

{

zhuansu++;

if(zhuansu21)

zhuansu=20;

while(key_jia0);

}

}

if(key_jian0)

{

delay(5);

if(key_jian0)

{

zhuansu–;

if(zhuansu<=0)

zhuansu=0;

while(key_jian==0);

}

}

}

void dispose() //脉冲函数

{

switch(zhuansu)

{

case 0: flag=2; break;

case 1: maichong=300; break;

case 2: maichong=295; break;

case 3: maichong=290; break;

case 4: maichong=280; break;

case 5: maichong=260; break;

case 6: maichong=240; break;

case 7: maichong=200; break;

case 8: maichong=180; break;

case 9: maichong=160; break;

case 10: maichong=120; break;

case 11: maichong=80; break;

case 12: maichong=70; break;

case 13: maichong=60; break;

case 14: maichong=40; break;

case 15: maichong=35; break;

case 16: maichong=30; break;

case 17: maichong=25; break;

case 18: maichong=20; break;

case 19: maichong=15; break;

case 20: maichong=10; break;

}

if(flag0)

table_begin=0;

else

if(flag1)

table_begin=4;

}

void zhuandong(void)

{

uint i,j;

if(zhuansu>0&&zhuansu<=20)

{

for(j=0+table_begin;j<4+table_begin;j++)

{

P1=table1[j];

for(i=0;i<maichong;i++)

display();

}

}

}

……………………

最后,如果有什么意见或者建议欢迎您留言给我,让我们共同学习一起进步,

如果需要 程序完整的源代码和 设计文件,请在下方留言或者私信我,看到后会第一时间回复。

如果喜欢我的文章请评论转发加关注哦。

相关问答

51单片机控制 步进 电机正反转 ?

用51单片机直驱步进电机时,只要改变步进电机驱动脉冲的时序关系,就可以控制步进电机的正反转。以两极步进电机为例,单片机使用AB两个脉冲信号驱动步进电机,...

怎么用电脑 控制电机正反转 -ZOL问答

一个接触器无法控制电机的正反转,需要两个接触器控制。因为要用两个接触器倒电机的相序,一个接触器无法完成。短路用空开,过载失压保护用现在比较可靠的电动机...

怎样把时间继电器接入电动机 正反转 ?

控制方法:1、单片机输出端接光电耦合器,加上三极管、继电器组合的电路。2、看继电器对应的是多大电压驱动,继电器有一端要接上这个电压,另一端接三极管。3...

单相 电机 自动 正反转 ?

对于单相电动机怎么实现自动正反转问题。首先我们要先了解单相电动机的结构和工作原理。能够实现正反转的单相电动机由两个互为90度电角度的线圈组成,一个称为...

12v 电机 减速器怎样可以 正反转 ?

12V电机减速器可以通过改变电流方向来实现正反转。原因:12V电机减速器是电动机驱动机械装置,实现正反转需要改变电路中电流的方向。电机正反转的方法有两种,一...

单片机 和一路继电器 控制 直流 电机正反转 ,接了继电器,不知道怎么把直流电机和继电器接一起?

单片机控制直流电机正反转,最简单的方法是两个I/O口控制两个继电器(一组常开、常闭)的就可以,电机两个极接两个继电器的动触点,两个继电器的常开点...

单片机 如何测 电机 相序?

单片机可以通过读取电机的三个相的电压值,然后分析它们的相位差来确定电机的相序。具体的方法是使用单片机内置的模拟转换器将电机三个相的电压转换成数字信号...

运用变频器多段速端子 控制 制动 电机 正反转 ?

用开关量输出,控制变频。变频的开关量输入端子,正转端子得信号就正转。反转端子的信号就反转。如变频没正反输入端子,用单片机开关量输出控制接触器,正反转...

单片机 驱动交流接触器的方法

[回答]在各种自动控制设备中,都存在一个低压的自动控制电路与高压电气电路的互相连接问题,一方面要使低压的电子电路的控制信号能够控制高压电气电路的执...

两个接近开关怎么实现 正反转 和转速检测?

前言:谢谢您关注,关注我有更多专业电工电子知识。一、怎样用接近开关直接控制电机正反转?用接近开关直接控制电机正反转方法如下:互锁是2个接触器...前言:谢...

猜你喜欢