日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 综合教程 >内容正文

综合教程

A4988驱动步进电机「建议收藏」

發(fā)布時(shí)間:2023/12/19 综合教程 28 生活家
生活随笔 收集整理的這篇文章主要介紹了 A4988驱动步进电机「建议收藏」 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

A4988一般用arduino來(lái)驅(qū)動(dòng),我是用STM32F103驅(qū)動(dòng)的。

首先推一個(gè)網(wǎng)頁(yè),https://www.pololu.com/product/1182,上面有比較詳細(xì)和專業(yè)的說(shuō)明,還有一個(gè)關(guān)于限制電流使細(xì)分更精確的視頻講解,總之,專業(yè)。然后推一個(gè)datasheet,https://www.pololu.com/file/0J450/a4988_DMOS_microstepping_driver_with_translator.pdf

我用的是
驅(qū)動(dòng)比較好寫(xiě),首先要弄清楚接線方式。

代碼:

motor.c
//IO初始化
void MOTOR_Init(void)
{
  RCC->APB2ENR|=1<<3;
  GPIOB->CRH&=0xff000000;
  GPIOB->CRH|=0x00333333;
}
//細(xì)分
// x==1 全步
// x==2 半步 
// x==4 1/4步
// x==8 1/8步
// x==16 1/16步
void Step_Micr(u16 x)
{
    switch(x)
    {
        case 1:Full_step;break;
        case 2:Half_step;break;
        case 4:Quarter_step;break;
        case 8:Eighth_step;break;
        case 16:Sixteenth_step;break;
        default:break;
    }   
}
//參數(shù)
// dir:FALSE 正轉(zhuǎn)TRUE反轉(zhuǎn)
// period 周期
// step 脈沖
void Step_Control(u8 dir,u16 period,u32 steps)
{
    u32 i;
  for(i=0; i <= steps;i++)
  {
        DIR = dir;
    STEP = 1;
    delay_us(1);
    STEP = 0;
    delay_us(period);//period??D?£?×a?ù???ì£?2?òaD?óú1000
  }
}
//此函數(shù)可抱死
// 0 抱死
// 1 正常
void Step_Enable()
{
    ENABLE = 0;
}


motor.h
#define STEP PBout(8) //step
#define DIR PBout(9) //dir
#define MS1 PBout(10)//MS1
#define MS2 PBout(11)//MS2
#define MS3 PBout(12)//MS3
#define ENABLE PBout(13)//ENABLE
//細(xì)分宏定義
#define Full_step {MS1 = 0;MS2 = 0;MS3 = 0;} 
#define Half_step {MS1 = 1;MS2 = 0;MS3 = 0;}
#define Quarter_step {MS1 = 0;MS2 = 1;MS3 = 0;} 
#define Eighth_step {MS1 = 1;MS2 = 1;MS3 = 0;}
#define Sixteenth_step {MS1 = 1;MS2 = 1;MS3 = 1;} 

void MOTOR_Init(void);
void Step_Micr(u16 x);
void Step_Enable(void);
void Step_Control(u8 dir,u16 period,u32 steps);

main.c
int main(void)
{
    int i=0;
  Stm32_Clock_Init(9);
  delay_init(72);
  MOTOR_Init();
    Step_Micr(1);//1/2/4/8/16 
    for(i=0;i<10;i++)
    {
        Step_Control(FALSE,1600,200);//正轉(zhuǎn)
    delay_ms(1000);
        Step_Control(TRUE,1600,200);//反轉(zhuǎn)
    delay_ms(1000);
    }
    Step_Enable();//抱死
  while(1)
  {

  }
}

實(shí)現(xiàn)全步狀態(tài)下正轉(zhuǎn)一圈,反轉(zhuǎn)一圈,持續(xù)一會(huì)兒后抱死。

總結(jié)

以上是生活随笔為你收集整理的A4988驱动步进电机「建议收藏」的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。