控制任務
讓單個直流電機在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 }
程序運行效果
制動狀態開始正轉加速,正轉全速,正轉減速,自由停車,反轉加速,反轉全速,反轉減速,自由停車,循環。