当前位置: 首页>編程日記>正文

51单片机驱动步进电机——使用ULN2003芯片

51单片机驱动步进电机——使用ULN2003芯片

驱动步进电机——使用ULN2003芯片

在这里插入图片描述
在这里插入图片描述

用ULN2003芯片,来驱动5V四相五线步进电机。

工作准则

步进电机是一种分步旋转的无刷直流电机。这非常有用,因为它可以在没有任何反馈传感器的情况下精确定位,这代表了一个开环控制器。步进电机由通常为永磁体的转子组成,转子被定子的绕组包围。当我们以特定顺序逐步激活绕组并让电流流过它们时,它们将磁化定子并分别形成电磁极,从而推动电机。这就是步进电机的基本工作原理。

驾驶模式

有几种不同的方式来驱动步进电机。第一个是波驱动或单线圈励磁。在这种模式下,我们一次只激活一个线圈,这意味着对于这个有 4 个线圈的电机示例,转子将分 4 步完成整个循环。接下来是全步驱动模式,它提供更高的扭矩输出,因为在给定时间我们总是有 2 个活动线圈。然而,这并没有提高步进器的分辨率,并且转子将再次以 4 步完成一个完整的循环。为了提高步进器的分辨率,我们使用半步驱动模式。这种模式实际上是前两种模式的结合。
这里我们有一个有源线圈,然后是 2 个有源线圈,然后是一个有源线圈,然后是 2 个有源线圈,依此类推。因此,使用这种模式,我们可以在相同结构的情况下获得双倍的分辨率。现在转子将分 8 步完成整个循环。

直接上代码

正反转代码

/*******************************************************
接线方式:
IN1 ---- P10
IN2 ---- P11
IN3 ---- P12
IN4 ---- P13
+   ---- +5V
-   ---- GND
*********************/
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
#define MotorData P1                    //步进电机控制接口定义
uchar phasecw[4] ={0x08,0x04,0x02,0x01};//正转 电机导通相序 D-C-B-A
uchar phaseccw[4]={0x01,0x02,0x04,0x08};//反转 电机导通相序 A-B-C-D
//ms延时函数
void Delay_xms(uint x)
{uint i,j;for(i=0;i<x;i++)for(j=0;j<112;j++);
}
//顺时针转动
void MotorCW(void)
{uchar i;for(i=0;i<4;i++){MotorData=phasecw[i];Delay_xms(15);//转速调节}
}
//逆时针转动
void MotorCCW(void)
{uchar i;for(i=0;i<4;i++){MotorData=phaseccw[i];Delay_xms(15);//转速调节}
}
//停止转动
void MotorStop(void)
{MotorData=0x00;
}
//主函数
void main(void)
{uint i;Delay_xms(50);//等待系统稳定while(1){for(i=0;i<500;i++){MotorCW();   //顺时针转动} MotorStop();  //停止转动Delay_xms(500);for(i=0;i<500;i++){MotorCCW();  //逆时针转动} MotorStop();  //停止转动Delay_xms(500);  }
}

加速代码

/*接线方式:
IN1 ---- P10
IN2 ---- P11
IN3 ---- P12
IN4 ---- P13
+   ---- +5V
-   ---- GND
*********************/
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
#define MotorData P1                    //步进电机控制接口定义
uchar phasecw[4] ={0x08,0x04,0x02,0x01};//正转 电机导通相序 D-C-B-A
uchar phaseccw[4]={0x01,0x02,0x04,0x08};//反转 电机导通相序 A-B-C-D
uchar speed;
//ms延时函数
void Delay_xms(uint x)
{uint i,j;for(i=0;i<x;i++)for(j=0;j<112;j++);
}
//顺时针转动
void MotorCW(void)
{uchar i;for(i=0;i<4;i++){MotorData=phasecw[i];Delay_xms(speed);//转速调节}
}
//停止转动
void MotorStop(void)
{MotorData=0x00;
}
//主函数
void main(void)
{uint i;Delay_xms(100);//等待系统稳定speed=50;while(1){for(i=0;i<10;i++){MotorCW();  //顺时针转动}  speed--;     //减速 if(speed<4)  {speed=50;    //重新开始减速运动MotorStop();Delay_xms(500);}  }
}

减速代码

/*接线方式:
IN1 ---- P00
IN2 ---- P01
IN3 ---- P02
IN4 ---- P03
+   ---- +5V
-   ---- GND
*********************/
#include<reg52.h>
#define uchar unsigned char
#define uint  unsigned int
#define MotorData P0                    //步进电机控制接口定义
uchar phasecw[4] ={0x08,0x04,0x02,0x01};//正转 电机导通相序 D-C-B-A
uchar phaseccw[4]={0x01,0x02,0x04,0x08};//反转 电机导通相序 A-B-C-D
uchar speed;
//ms延时函数
void Delay_xms(uint x)
{uint i,j;for(i=0;i<x;i++)for(j=0;j<112;j++);
}
//顺时针转动
void MotorCW(void)
{uchar i;for(i=0;i<4;i++){MotorData=phasecw[i];Delay_xms(speed);//转速调节}
}
//停止转动
void MotorStop(void)
{MotorData=0x00;
}
//主函数
void main(void)
{uint i;Delay_xms(50);//等待系统稳定speed=4;while(1){for(i=0;i<10;i++){MotorCW();  //顺时针转动}  speed++;     //减速 if(speed>25)  {speed=4;    //重新开始减速运动MotorStop();Delay_xms(500);}  }
}


https://www.fengoutiyan.com/post/15383.html

相关文章:

  • uln2003驱动步进电机电路图
  • 51单片机驱动电机
  • 单片机步进电机
  • 单片机与步进电机驱动电路
  • uln2003步进电机
  • 42步进电机驱动芯片
  • 51单片机控制步进电机驱动器
  • uln2003驱动步进电机
  • 鏡像模式如何設置在哪,圖片鏡像操作
  • 什么軟件可以把圖片鏡像翻轉,C#圖片處理 解決左右鏡像相反(旋轉圖片)
  • 手機照片鏡像翻轉,C#圖像鏡像
  • 視頻鏡像翻轉軟件,python圖片鏡像翻轉_python中鏡像實現方法
  • 什么軟件可以把圖片鏡像翻轉,利用PS實現圖片的鏡像處理
  • 照片鏡像翻轉app,java實現圖片鏡像翻轉
  • 什么軟件可以把圖片鏡像翻轉,python圖片鏡像翻轉_python圖像處理之鏡像實現方法
  • matlab下載,matlab如何鏡像處理圖片,matlab實現圖像鏡像
  • 圖片鏡像翻轉,MATLAB:鏡像圖片
  • 鏡像翻轉圖片的軟件,圖像處理:實現圖片鏡像(基于python)
  • canvas可畫,JavaScript - canvas - 鏡像圖片
  • 圖片鏡像翻轉,UGUI優化:使用鏡像圖片
  • Codeforces,CodeForces 1253C
  • MySQL下載安裝,Mysql ERROR: 1253 解決方法
  • 勝利大逃亡英雄逃亡方案,HDU - 1253 勝利大逃亡 BFS
  • 大一c語言期末考試試題及答案匯總,電大計算機C語言1253,1253《C語言程序設計》電大期末精彩試題及其問題詳解
  • lu求解線性方程組,P1253 [yLOI2018] 扶蘇的問題 (線段樹)
  • c語言程序設計基礎題庫,1253號C語言程序設計試題,2016年1月試卷號1253C語言程序設計A.pdf
  • 信奧賽一本通官網,【信奧賽一本通】1253:抓住那頭牛(詳細代碼)
  • c語言程序設計1253,1253c語言程序設計a(2010年1月)
  • 勝利大逃亡英雄逃亡方案,BFS——1253 勝利大逃亡
  • 直流電壓測量模塊,IM1253B交直流電能計量模塊(艾銳達光電)
  • c語言程序設計第三版課后答案,【渝粵題庫】國家開放大學2021春1253C語言程序設計答案
  • 18轉換為二進制,1253. 將數字轉換為16進制
  • light-emitting diode,LightOJ-1253 Misere Nim
  • masterroyale魔改版,1253 Dungeon Master
  • codeformer官網中文版,codeforces.1253 B
  • c語言程序設計考研真題及答案,2020C語言程序設計1253,1253計算機科學與技術專業C語言程序設計A科目2020年09月國家開 放大學(中央廣播電視大學)
  • c語言程序設計基礎題庫,1253本科2016c語言程序設計試題,1253電大《C語言程序設計A》試題和答案200901
  • 肇事逃逸車輛無法聯系到車主怎么辦,1253尋找肇事司機