找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3449|回復(fù): 1
收起左側(cè)

arduino nano板控制步進(jìn)電機(jī)正反轉(zhuǎn),用于測試編碼器壽命

[復(fù)制鏈接]
ID:465009 發(fā)表于 2021-6-10 15:06 | 顯示全部樓層 |閱讀模式
#include "U8glib.h"

U8GLIB_SSD1306_128X64 u8g(U8G_I2C_OPT_NONE|U8G_I2C_OPT_DEV_0);  // I2C / TWI
int t1 = 0 ;
int t2 = 0 ;
int t3 = 0 ;
int m1 = 100 ;
int n1 = 100 ;
void draw(void) {

// graphic commands to redraw the complete screen should be placed here

  u8g.setFont(u8g_font_unifont);

  u8g.setPrintPos(0, 15);
  u8g.print(t1);
  u8g.setPrintPos(65, 15);
  u8g.print(t2);
  u8g.setPrintPos(65, 35);
  u8g.print(t3);
  u8g.setPrintPos(0, 55);
  u8g.print(m1);
  u8g.setPrintPos(65, 55);
  u8g.print(n1);
}

// A4988連接Arduino引腳號
const int dirPin   = 2;   // Direction
const int stepPin  = 3;   // Step
const int sleepPin = 4;   // Sleep
const int resetPin = 5;   // Reset
const int ms2Pin   = 6;   // Ms3
const int ms1Pin   = 7;   // Ms2
const int ms0Pin   = 8;   // Ms1
const int enPin    = 9;   // Enable

// 電機(jī)每圈步數(shù)
const int STEPS_PER_REV = 982;

void setup() {

   // 設(shè)置引腳模式
  pinMode(stepPin,OUTPUT);
  pinMode(dirPin,OUTPUT);
  pinMode(sleepPin,OUTPUT);
  pinMode(resetPin,OUTPUT);  
  pinMode(ms2Pin,OUTPUT);  
  pinMode(ms1Pin,OUTPUT);  
  pinMode(ms0Pin,OUTPUT);
  pinMode(enPin,OUTPUT);   
  pinMode(13,OUTPUT);  
  // 初始化引腳狀態(tài)
  digitalWrite(sleepPin, HIGH);  
  digitalWrite(resetPin, HIGH);
  digitalWrite(enPin, LOW);

  // 初始化電機(jī)步進(jìn)模式為1/4步進(jìn)
  digitalWrite(ms0Pin, LOW);
  digitalWrite(ms1Pin, LOW);
  digitalWrite(ms2Pin, LOW);
}
void loop() {

            if (t2 < m1){
                           digitalWrite(sleepPin, HIGH); //開啟點(diǎn)擊驅(qū)動芯片

                            for(int i = 0; i < n1; i++)
                                   {   
                                          u8g.firstPage();
                                          do {
                                                  draw();
                                              } while( u8g.nextPage() );


                                         delay(10);
                                         digitalWrite(dirPin,LOW);     //電機(jī)正轉(zhuǎn),1/4步,執(zhí)行一圈+延時共2.5秒
                                          for(int x = 0; x < STEPS_PER_REV; x++)
                                                          {
                                                              digitalWrite(stepPin,HIGH);
                                                              delayMicroseconds(1500);
                                                              digitalWrite(stepPin,LOW);
                                                              delayMicroseconds(1500);

                                                           }                                
                                          delay(500);  

                                          digitalWrite(dirPin,HIGH);    //電機(jī)反轉(zhuǎn),1/4步,執(zhí)行一圈+延時共2.5秒
                                          for(int x = 0; x < STEPS_PER_REV; x++)
                                                           {
                                                               digitalWrite(stepPin,HIGH);
                                                               delayMicroseconds(1500);
                                                               digitalWrite(stepPin,LOW);
                                                               delayMicroseconds(1500);

                                                 }

                                         delay(500);
                                         t1 = t1+1;
                                         t3 = t2 * n1 + t1 ;

                                     }

                            digitalWrite(sleepPin, LOW);
                            t1 = 0 ;//圈數(shù)歸零
                            t2 = t2+1;
                            t3 = t2 * n1 + t1 ;
                            u8g.firstPage();
                                          do {
                                                  draw();
                                              } while( u8g.nextPage() );
                            delay(10);  

                            for(int j = 0; j < 20; j++)
                                        {
                                            digitalWrite(13, HIGH);//指示燈閃爍
                                            delay(3000);
                                            digitalWrite(13, LOW);
                                            delay(3000);  
                                        }


                        } else {

                                 digitalWrite(13, HIGH);//指示燈閃爍
                                 delay(500);
                                 digitalWrite(13, LOW);
                                 delay(500);

                                 }








}

控制板

控制板

控制板+步進(jìn)電機(jī)

控制板+步進(jìn)電機(jī)

評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報(bào)

ID:138707 發(fā)表于 2021-7-3 21:05 | 顯示全部樓層
你好樓主,有接線原理圖可否發(fā)附件一份,謝謝
回復(fù)

使用道具 舉報(bào)

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表