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

專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> Arduino >> 瀏覽文章

Arduino UNo 通過LM298n控制直流電機(jī)

作者:goingxu   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年04月21日   【字體:

控制直流電機(jī)比較簡(jiǎn)單,主要利用Lm298n構(gòu)成H橋來控制電機(jī)正反轉(zhuǎn)。。

 

器件:

            LM298N模塊1塊;arduino uno 1塊;直流電機(jī) 1個(gè)。

 

接線:

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

   輸入端還有兩條線EnA、EnB分別用于輸入pwm波對(duì)兩個(gè)電機(jī)調(diào)速。

  In1:High,In2:Low 時(shí),電機(jī)正傳(其實(shí)無所謂方向正負(fù))。反之,反轉(zhuǎn)。

 

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

 

程序:

 對(duì)網(wǎng)上找的的程序進(jìn)行修改,實(shí)測(cè)可用:

 

 #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)  //定義一個(gè)電機(jī)轉(zhuǎn)動(dòng)函數(shù)
{
    pinMode(motorpin1,OUTPUT);                              //輸出第一個(gè)引腳
    pinMode(motorpin2,OUTPUT);                             //輸出第二個(gè)引腳
    digitalWrite(motorpin2,0);                                    //將第二個(gè)引腳置低
    digitalWrite(motorpin1,1);                                     //將第一個(gè)引腳抬高
    analogWrite(motorpwm,val);                                //給EN引腳設(shè)定模擬值,設(shè)定轉(zhuǎn)速
}
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++) //讓電機(jī)的轉(zhuǎn)速從100到255轉(zhuǎn)動(dòng),A,B轉(zhuǎn)速不一樣,完成轉(zhuǎn)向
//  {
//  //  motor(motor2pin1,motor2pin2,motor2pwm,255);             //電機(jī)B保持255勻速轉(zhuǎn)動(dòng)
//    motor(motor1pin1,motor1pin2,motor1pwm,i);                  //電機(jī)A從100到255轉(zhuǎn)動(dòng)
//    delay(500);                                                              //間隔500ms
//  }
//  for(i=100;i<=255;i++)                                  //讓電機(jī)從100到255轉(zhuǎn)動(dòng),功能同上
//  {
//    motor(motor1pin1,motor1pin2,motor1pwm,255);
//  //  motor(motor2pin1,motor2pin2,motor2pwm,i);
//    delay(500);
//  }
  motor(motor1pin1,motor1pin2,motor1pwm,125);                 //電機(jī)A以  轉(zhuǎn)速轉(zhuǎn)動(dòng)
  delay(500);
   motor(motor1pin1,motor1pin2,motor1pwm,0);               
  delay(500);
  motor(motor1pin2,motor1pin1,motor1pwm,125);                //電機(jī)A反向轉(zhuǎn)動(dòng)
  delay(500);
   motor(motor1pin1,motor1pin2,motor1pwm,0);               
  delay(500);
}

 

結(jié)論:

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

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

關(guān)閉窗口

相關(guān)文章

主站蜘蛛池模板: 午夜视频精品 | 国产一区二区三区四区五区加勒比 | 正在播放国产精品 | 亚洲二区在线观看 | 亚州视频在线 | 91精品国产高清久久久久久久久 | 先锋资源网站 | 午夜免费在线电影 | 四虎网站在线观看 | 日韩a v在线免费观看 | 国产精品99久久免费观看 | 久草.com | 国产成人一区二区三区 | 国产精品毛片久久久久久久 | 国产91亚洲精品一区二区三区 | 免费在线视频精品 | 亚洲一区视频在线 | 国产91久久久久久久免费 | 欧美日韩综合视频 | 欧美国产精品 | 欧美在线视频a | 在线视频成人 | 国产精品视频在线观看 | 国产精品18hdxxxⅹ在线 | 瑟瑟激情| 综合久久99 | 伊人久久综合 | 国产一区二区三区四区五区加勒比 | 国产高清视频一区 | 国产免费又黄又爽又刺激蜜月al | av国产精品 | 在线观看成年人视频 | 91精品国产麻豆 | 不卡av电影在线播放 | 91国产精品 | 羞羞视频在线免费 | 国产精品精品视频一区二区三区 | 日韩中文字幕在线视频观看 | 成年人黄色小视频 | 日韩精品视频网 | 无人区国产成人久久三区 |