?
一、環(huán)境介紹
二、硬件介紹
開發(fā)板采用STM32F103ZET6 最小系統(tǒng)板
![](https://file.elecfans.com//web2/M00/36/CC/poYBAGI31DmAJy6XAAq_IjOkCmw908.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9sb25nMTEyNjYyNjQ5Nw==,size_16,color_FFFFFF,t_70)
![poYBAGDYdXCAWkKMAAAAK8RNs4s030.png](http://file.elecfans.com/web2/M00/03/FB/poYBAGDYdXCAWkKMAAAAK8RNs4s030.png)
?
電機(jī)驅(qū)動板采用的是ULN2003
![](https://file.elecfans.com//web2/M00/36/D2/pYYBAGI31DqAHJxFAAUnuV_j578521.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9sb25nMTEyNjYyNjQ5Nw==,size_16,color_FFFFFF,t_70)
![poYBAGDYdXCAWkKMAAAAK8RNs4s030.png](http://file.elecfans.com/web2/M00/03/FB/poYBAGDYdXCAWkKMAAAAK8RNs4s030.png)
?
步進(jìn)電機(jī)采用的是28BYJ4 (5V 4相5線步進(jìn)電機(jī))
![](https://file.elecfans.com//web2/M00/36/CC/poYBAGI31DqAcWp7AAFVtlN6hR4809.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9sb25nMTEyNjYyNjQ5Nw==,size_16,color_FFFFFF,t_70)
![poYBAGDYdXCAWkKMAAAAK8RNs4s030.png](http://file.elecfans.com/web2/M00/03/FB/poYBAGDYdXCAWkKMAAAAK8RNs4s030.png)
?
![](https://file.elecfans.com//web2/M00/36/D2/pYYBAGI31DuAbxFeAAgC4vBRQQo080.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9sb25nMTEyNjYyNjQ5Nw==,size_16,color_FFFFFF,t_70)
![poYBAGDYdXCAWkKMAAAAK8RNs4s030.png](http://file.elecfans.com/web2/M00/03/FB/poYBAGDYdXCAWkKMAAAAK8RNs4s030.png)
?
三、驅(qū)動代碼
![](https://file.elecfans.com//web2/M00/36/D2/pYYBAGI31D6AZESdAByQOwN045o508.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3hpYW9sb25nMTEyNjYyNjQ5Nw==,size_16,color_FFFFFF,t_70)
![poYBAGDYdXCAWkKMAAAAK8RNs4s030.png](http://file.elecfans.com/web2/M00/03/FB/poYBAGDYdXCAWkKMAAAAK8RNs4s030.png)
?
3.1 motor.c
#include "motor.h"
//步進(jìn)電機(jī)正反轉(zhuǎn)數(shù)組1
u16 PositiveSequence[4] ={0x0200,0x0100,0x0080,0x0040};// D-C-B-A
u16 ReverseOrder[4]={0x0040,0x0080,0x0100,0x0200};// A-B-C-D.
void motor_delay_ms(u32 ms)
{
u32 i,j;
for(i=0;iAPB2ENR|=1<<4;
GPIOC->CRL&=0x00FFFFFF;
GPIOC->CRL|=0x33000000;
GPIOC->CRH&=0xFFFFFF00;
GPIOC->CRH|=0x00000033;
// IN4: PC9 d
// IN3: PC8 c
// IN2: PC7 b
// IN1: PC6 a
}
void GPIO_Write(GPIO_TypeDef* GPIOx, u16 PortVal)
{
GPIOx->ODR = PortVal;
}
void motor_just(int speed) //一個脈沖
{
uint8_t i;
for(i=0;i<4;i++)
{
GPIO_Write(GPIOC,PositiveSequence[i]);
motor_delay_ms(speed);
}
}
void motor_back(int speed)
{
uint8_t i;
for(i=0;i<4;i++)
{
GPIO_Write(GPIOC,ReverseOrder[i]);
motor_delay_ms(speed);
}
}
//由于 *一個脈沖* *輸出軸* 轉(zhuǎn)0.08789度(電機(jī)實轉(zhuǎn)0.08789*64=5.625度),即步進(jìn)角為5.625度。則轉(zhuǎn)完A-B-C-D為 *8個脈沖*
//,即0.08789*8=0.70312度。若稱A-B-C-D為一個周期,則j為需要的轉(zhuǎn)完angle角度所需的周期數(shù)。
//步進(jìn)電機(jī)正轉(zhuǎn)角度函數(shù)
void motor_just_angle(int angle,int speed)
{
int i,j;
j=(int)(angle/0.70312);
for(i=0;i;i++)>;i++)>
![poYBAGDYdXCAWkKMAAAAK8RNs4s030.png](http://file.elecfans.com/web2/M00/03/FB/poYBAGDYdXCAWkKMAAAAK8RNs4s030.png)
3.2 motor.h
#ifndef _MOTOR_H
#define _MOTOR_H
#include "sys.h"
void motor_delay_ms(u32 x);//延時函數(shù)
void motor_init(void); //步進(jìn)電機(jī)初始化
void motor_just(int speed); //步進(jìn)電機(jī)正轉(zhuǎn)函數(shù)
void motor_back(int speed); //步進(jìn)電機(jī)反轉(zhuǎn)函數(shù)
void motor_just_angle(int angle,int speed); //步進(jìn)電機(jī)正轉(zhuǎn)角度函數(shù)
void motor_back_angle(int angle,int speed); //步進(jìn)電機(jī)反轉(zhuǎn)角度函數(shù)
void motor_stop(void); //步進(jìn)電機(jī)停止函數(shù)
void motor_just_circle(int ring ,int speed); //步進(jìn)電機(jī)正轉(zhuǎn)圈函數(shù)
void motor_back_circle(int ring ,int speed);//步進(jìn)電機(jī)反轉(zhuǎn)圈函數(shù)
//IN
#define MOTOR_1 PCout(6)
#define MOTOR_2 PCout(7)
#define MOTOR_3 PCout(8)
#define MOTOR_4 PCout(9)
#endif
![poYBAGDYdXCAWkKMAAAAK8RNs4s030.png](http://file.elecfans.com/web2/M00/03/FB/poYBAGDYdXCAWkKMAAAAK8RNs4s030.png)
3.3 main.c
/*
ULN2003控制28BYJ-48步進(jìn)電機(jī)接線:
ULN2003接線:
IN4: PC9 d
IN3: PC8 c
IN2: PC7 b
IN1: PC6 a
+ : 5V
- : GND
*/
int main()
{
u8 time_cnt=0;
u8 key;
LED_Init();
KEY_Init();
USART1_Init(115200);
motor_init(); //步進(jìn)電機(jī)初始化
USART1_Printf("程序初始化.....\r\n");
while(1)
{
//按鍵可以測試開鎖和關(guān)鎖
key=KEY_Scan(0);
if(key==1)
{
LED1=0; //亮燈--表示開鎖
motor_just_circle(1,300); //電機(jī)正轉(zhuǎn)1圈
}
else if(key==2)
{
LED1=1; //滅燈--表示關(guān)鎖
motor_back_circle(1,300); //電機(jī)反轉(zhuǎn)1圈
}
DelayMs(10);
time_cnt++;
if(time_cnt>=50)
{
time_cnt=0;
LED2=!LED2;
}
}
}
![poYBAGDYdXCAWkKMAAAAK8RNs4s030.png](http://file.elecfans.com/web2/M00/03/FB/poYBAGDYdXCAWkKMAAAAK8RNs4s030.png)
![poYBAGDYdXCAWkKMAAAAK8RNs4s030.png](http://file.elecfans.com/web2/M00/03/FB/poYBAGDYdXCAWkKMAAAAK8RNs4s030.png)
?
審核編輯:湯梓紅
?
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。
舉報投訴
-
STM32
+關(guān)注
關(guān)注
2273文章
10926瀏覽量
357821 -
硬件
+關(guān)注
關(guān)注
11文章
3406瀏覽量
66499 -
步進(jìn)電機(jī)
+關(guān)注
關(guān)注
152文章
3120瀏覽量
147903
發(fā)布評論請先 登錄
相關(guān)推薦
STM32+ULN2003驅(qū)動28BYJ4步進(jìn)電機(jī)的驅(qū)動代碼是什么?
STM32+ULN2003驅(qū)動28BYJ4步進(jìn)電機(jī)的硬件有哪些?STM32+ULN2003
發(fā)表于 06-29 08:53
STM32+ULN2003驅(qū)動28BYJ4步進(jìn)電機(jī)相關(guān)資料分享
一、環(huán)境介紹MCU: STM32F103ZET6編程軟件: Keil5二、硬件介紹開發(fā)板采用STM32F103ZET6 最小系統(tǒng)板電機(jī)驅(qū)動板采用的是
發(fā)表于 06-29 06:15
STM8S103F3P6+步進(jìn)電機(jī)28BYJ-48+ULN2003實現(xiàn)簡單的正反轉(zhuǎn)demo
STM32F103+步進(jìn)電機(jī)28BYJ-48+ULN2003 實現(xiàn)簡單的正反轉(zhuǎn)demo這篇文章的拓展,針對此文章的程序
發(fā)表于 06-29 07:16
Arduino,ULN2003和28YJ-48步進(jìn)電機(jī)執(zhí)行控制 相關(guān)資料下載
使用ULN2003驅(qū)動板和Arduino控制28BYJ-48步進(jìn)電機(jī)的所有信息。我提供了數(shù)據(jù)表,接線圖和許多示例代碼!在每個示例之后,我都會
發(fā)表于 07-08 09:26
28BYJ-48步進(jìn)電機(jī)+ULN2003驅(qū)動程序是什么
28BYJ-48步進(jìn)電機(jī)+ULN2003驅(qū)動程序(STM32)
發(fā)表于 07-08 07:13
如何根據(jù)STM32F103+步進(jìn)電機(jī)28BYJ-48+ULN2003實現(xiàn)簡單的正反轉(zhuǎn)?
如何根據(jù)STM32F103+步進(jìn)電機(jī)28BYJ-48+ULN2003實現(xiàn)簡單的正反轉(zhuǎn)?
發(fā)表于 10-15 07:57
STM32F103+步進(jìn)電機(jī)28BYJ-48+ULN2003如何實現(xiàn)簡單的正反轉(zhuǎn)?
STM32F103+步進(jìn)電機(jī)28BYJ-48+ULN2003如何實現(xiàn)簡單的正反轉(zhuǎn)?
發(fā)表于 10-15 09:15
分享一個不錯的28BYJ-48步進(jìn)電機(jī)+ULN2003驅(qū)動程序
分享一個不錯的28BYJ-48步進(jìn)電機(jī)+ULN2003驅(qū)動程序
發(fā)表于 12-21 06:31
ULN2003APG芯片是如何驅(qū)動28BYJ-48步進(jìn)電機(jī)的
ULN2003APG芯片是如何驅(qū)動28BYJ-48步進(jìn)電機(jī)的?
發(fā)表于 12-21 07:11
ULN2003驅(qū)動28BYJ48步進(jìn)電機(jī)STM32F103版庫函數(shù)合集免費下載
ULN2003驅(qū)動28BYJ48步進(jìn)電機(jī)STM32F103版庫函數(shù)合集免費下載
發(fā)表于 03-10 08:00
?0次下載
![<b class='flag-5'>ULN2003</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>28BYJ</b>48<b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b><b class='flag-5'>STM32</b>F103版庫函數(shù)合集免費下載](https://file.elecfans.com/web1/M00/B5/71/o4YBAF5nPy2ATtvmAASW_RmAm4I022.png)
STM32+ULN2003驅(qū)動28BYJ4步進(jìn)電機(jī)(根據(jù)圈數(shù)正轉(zhuǎn)、反轉(zhuǎn))
一、環(huán)境介紹MCU: STM32F103ZET6編程軟件: Keil5二、硬件介紹開發(fā)板采用STM32F103ZET6 最小系統(tǒng)板電機(jī)驅(qū)動板采用的是
發(fā)表于 12-05 19:21
?47次下載
![<b class='flag-5'>STM32+ULN2003</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>28BYJ4</b><b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b>(根據(jù)圈數(shù)正轉(zhuǎn)、<b class='flag-5'>反轉(zhuǎn)</b>)](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM8S103F3P6+步進(jìn)電機(jī)28BYJ-48+ULN2003 實現(xiàn)簡單的正反轉(zhuǎn)demo
STM32F103+步進(jìn)電機(jī)28BYJ-48+ULN2003 實現(xiàn)簡單的正反轉(zhuǎn)demo這篇文章的拓展,針對此文章的程序
發(fā)表于 12-27 18:28
?24次下載
![STM8S103F3P6+<b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b><b class='flag-5'>28BYJ-48+ULN2003</b> 實現(xiàn)簡單的<b class='flag-5'>正反轉(zhuǎn)</b>demo](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32F103RCT6利用ULN2003驅(qū)動步進(jìn)電機(jī)正反轉(zhuǎn)
接通電源后,電機(jī)開始正轉(zhuǎn),轉(zhuǎn)夠一圈后,電機(jī)開始反轉(zhuǎn),同時在OLED上會顯示forward和reverse分別表示正反轉(zhuǎn)
器件 :STM32
發(fā)表于 03-24 09:55
?13次下載
![<b class='flag-5'>STM32</b>F103RCT6利用<b class='flag-5'>ULN2003</b><b class='flag-5'>驅(qū)動</b><b class='flag-5'>步進(jìn)</b><b class='flag-5'>電機(jī)</b><b class='flag-5'>正反轉(zhuǎn)</b>](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論