微型直流電機控制基本方法 L298N模塊


控制任務

讓單個直流電機在L298N模塊驅動下,完成制動、自由停車,正反轉,加減速等基本動作

芯片模塊及電路設計

                        

圖1 L298N芯片引腳

  

圖2 L298N驅動模塊

表1 L298N驅動模塊的控制引腳

 使用注意  短路帽連接后內置5V輸出使能。調速時,只需要在使能端輸入PWM信號就行。使能端低電平時,電機自由停止。通過ENA,IN1,IN2控制電機A,通過ENB,IN3,IN4控制電機B。

 

圖3 L298N驅動模塊的Fritzing元件圖

  

圖4 單片機控制板Aduino UNO

 

圖5 Aduino UNO 與L298N驅動模塊的接線

 

圖6 整個系統的接線

 

圖7 電機控制系統接線原理示意圖1

 

圖8 電機控制系統接線原理示意圖2

實際接線:Arduino的引腳6,8,7分別接L298N驅動板的ENA,IN1,IN2

程序設計

本程序只對單電機進行控制

  1 //控制板引腳定義
  2 int motor_c_ENA=6;
  3 int motor_c_IN1=8;
  4 int motor_c_IN2=7;
  5 
  6 //子函數定義
  7 void go_forward_high_speed()   //正轉 全速
  8 {
  9     digitalWrite(motor_c_ENA,1);    
 10     digitalWrite(motor_c_IN1,0); 
 11     digitalWrite(motor_c_IN2,1);
 12 }
 13 
 14 void go_backward_high_speed()  //反轉 全速
 15 {
 16     digitalWrite(motor_c_ENA,1);    
 17     digitalWrite(motor_c_IN1,1);  
 18     digitalWrite(motor_c_IN2,0);
 19 }
 20 
 21 void stop_with_brake()  //制動
 22 {
 23     digitalWrite(motor_c_ENA,1);    
 24     digitalWrite(motor_c_IN1,1);  
 25     digitalWrite(motor_c_IN2,1) ; 
 26 }
 27 
 28 void stop_free()    //自由停車
 29 {
 30     digitalWrite(motor_c_ENA,0);    
 31     digitalWrite(motor_c_IN1,0);  
 32     digitalWrite(motor_c_IN2,0) ; 
 33 }
 34 
 35 void go_forward_speed_up()  //正轉 加速
 36 {
 37     digitalWrite(motor_c_IN1,0);   
 38     digitalWrite(motor_c_IN2,1);
 39     for (int a=100;a<=255;a++)  
 40      {
 41         analogWrite(motor_c_ENA,a);
 42         delay(200);
 43      }
 44 }
 45 
 46 void go_backward_speed_up()  //反轉 加速
 47 {
 48     digitalWrite(motor_c_IN1,1);   
 49     digitalWrite(motor_c_IN2,0);
 50     for (int a=100;a<=255;a++)  
 51      {
 52         analogWrite(motor_c_ENA,a);
 53         delay(200);
 54      }
 55 }
 56 void go_forward_speed_down()  //正轉 減速
 57 {
 58     digitalWrite(motor_c_IN1,0);   
 59     digitalWrite(motor_c_IN2,1);
 60     for (int a=255;a<=100;a--)  
 61      {
 62         analogWrite(motor_c_ENA,a);
 63         delay(200);
 64      }
 65 }
 66 
 67 void go_backward_speed_down()  //反轉 減速
 68 {
 69     digitalWrite(motor_c_IN1,1);   
 70     digitalWrite(motor_c_IN2,0);
 71     for (int a=255;a<=100;a--)  
 72      {
 73         analogWrite(motor_c_ENA,a);
 74         delay(200);
 75      }
 76 }
 77 
 78 
 79 void setup() 
 80 {
 81      pinMode(motor_c_ENA,OUTPUT);  //電機C使能和PWM調速口
 82     pinMode(motor_c_IN1,OUTPUT);   //電機C控制口
 83     pinMode(motor_c_IN2,OUTPUT);   //電機C控制口
 84 }
 85 
 86 void loop() 
 87 {
 88    stop_with_brake(); //制動2秒
 89   delay(2000);
 90 
 91    go_forward_speed_up();   //正轉 加速 50秒
 92   delay(50000);
 93    go_forward_high_speed();   //正轉 全速10秒
 94   delay(10000);
 95    go_forward_speed_down();   //正轉 減速50秒
 96   delay(50000);
 97    stop_free();    //自由停車5秒
 98   delay(5000);
 99 
100    go_backward_speed_up();   //反轉 加速 50秒
101   delay(50000);
102    go_backward_high_speed();   //反轉 全速10秒
103   delay(10000);
104    go_backward_speed_down();   //反轉 減速50秒
105   delay(50000);
106    stop_free();    //自由停車5秒
107   delay(5000);
108 }

程序運行效果

制動狀態開始正轉加速,正轉全速,正轉減速,自由停車,反轉加速,反轉全速,反轉減速,自由停車,循環。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM