久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> Arduino >> 瀏覽文章

Arduino UNo 通過LM298n控制直流電機

作者:goingxu   來源:本站原創   點擊數:  更新時間:2014年04月21日   【字體:

控制直流電機比較簡單,主要利用Lm298n構成H橋來控制電機正反轉。。

 

器件:

            LM298N模塊1塊;arduino uno 1塊;直流電機 1個。

 

接線:

    LM298n除了控制部分和電機輸入電源線各2根外,輸入In1~In4,分別對應輸出OUT1~OUT4. 接直流電機時OUT1、2接電機1的兩條電源線;OUT3、4接電機2。這里只用了一個直流電機所以直接out1、2.

   輸入端還有兩條線EnA、EnB分別用于輸入pwm波對兩個電機調速。

  In1:High,In2:Low 時,電機正傳(其實無所謂方向正負)。反之,反轉。

 

  In1--》P13;in2--》p12; EnA--》P11(需要可以輸出pwm波的端口)

 

程序:

 對網上找的的程序進行修改,實測可用:

 

 #define motor1pin1 13                              //定義IN1引腳
#define motor1pin2 12                              //定義IN2引腳
#define motor1pwm 11                             //定義ENA引腳(我的是Mega2560的板子)
#define motor2pin1 9                              //定義IN3引腳
#define motor2pin2 8                               //定義IN4引腳
#define motor2pwm 10                              //定義ENB引腳

unsigned long lastMillis =0;
unsigned long currentMillis =0;

unsigned long lastMicros =0;
unsigned long currentMicros =0;

unsigned long intervalMillis =0 ;
unsigned long intervalMicros =0;

void motor(int motorpin1,int motorpin2,int motorpwm,int val)  //定義一個電機轉動函數
{
    pinMode(motorpin1,OUTPUT);                              //輸出第一個引腳
    pinMode(motorpin2,OUTPUT);                             //輸出第二個引腳
    digitalWrite(motorpin2,0);                                    //將第二個引腳置低
    digitalWrite(motorpin1,1);                                     //將第一個引腳抬高
    analogWrite(motorpwm,val);                                //給EN引腳設定模擬值,設定轉速
}
void setup()

    Serial.begin(9600);
}
void loop()
{
  int i;
  currentMicros=micros();
  intervalMicros = currentMicros - lastMicros;
   Serial.println(intervalMicros);
   lastMicros=currentMicros;
//  for(i=100;i<=255;i++) //讓電機的轉速從100到255轉動,A,B轉速不一樣,完成轉向
//  {
//  //  motor(motor2pin1,motor2pin2,motor2pwm,255);             //電機B保持255勻速轉動
//    motor(motor1pin1,motor1pin2,motor1pwm,i);                  //電機A從100到255轉動
//    delay(500);                                                              //間隔500ms
//  }
//  for(i=100;i<=255;i++)                                  //讓電機從100到255轉動,功能同上
//  {
//    motor(motor1pin1,motor1pin2,motor1pwm,255);
//  //  motor(motor2pin1,motor2pin2,motor2pwm,i);
//    delay(500);
//  }
  motor(motor1pin1,motor1pin2,motor1pwm,125);                 //電機A以  轉速轉動
  delay(500);
   motor(motor1pin1,motor1pin2,motor1pwm,0);               
  delay(500);
  motor(motor1pin2,motor1pin1,motor1pwm,125);                //電機A反向轉動
  delay(500);
   motor(motor1pin1,motor1pin2,motor1pwm,0);               
  delay(500);
}

 

結論:

    對直流電機的方向和速度控制簡單。一個電機需要3個I/o口,因此一片arduino uno 只能控制4個電機,而且無法增加反饋。實際測量A0~A5也是可以輸出數字信號的,如果可以加入,最多可控制6個電機,這個以后看看avr的接口再說。

    電機自帶一個霍爾元件構成的碼盤,測量成功,但還沒用于電機速度位置控制,在網上搜了一下閉環控制的內容,發現首先需要采集足夠多的編碼器信號,如果對編碼器進行4倍頻,又需要占用1個中斷2個接口,多個電機時處理速度上不知道是否可以保證;pid控制方面的例子也比較少,只好拔了一下arduino.cc,發現有人提供了庫函數。后面有時間試試。

關閉窗口

相關文章

主站蜘蛛池模板: 在线免费观看视频你懂的 | 在线色网 | 久久久久久亚洲精品 | 91社区在线观看 | 欧美日韩在线视频一区二区 | 国产在线第一页 | 午夜免费网 | 国产精品成人一区二区三区 | www.日日操 | 成人欧美一区二区三区在线播放 | 精品一区欧美 | 精品久久久久久久久久 | 亚洲一区电影 | 国产欧美一区二区三区另类精品 | 国产精品久久久久久久一区探花 | 成人性生交大片免费看r链接 | 在线欧美| 免费视频一区 | 精品毛片 | 国产视频在线一区二区 | 国产精品不卡 | 欧美精品日韩精品 | 精品日本久久久久久久久久 | 国产日韩欧美在线观看 | 日韩成人在线免费视频 | 欧美日韩在线视频一区二区 | 伊人网伊人 | 国产精品三级久久久久久电影 | 99在线精品视频 | 亚洲v日韩v综合v精品v | 免费观看一级特黄欧美大片 | 免费在线观看av的网站 | 亚洲精品免费视频 | 亚洲色图网址 | 亚洲免费精品 | 国产目拍亚洲精品99久久精品 | 成人欧美一区二区三区黑人孕妇 | 日韩电影一区 | 日韩中文一区二区三区 | 国产极品车模吞精高潮呻吟 | 一级黄片一级毛片 |