直流電機兩輪驅動小車行走基本控制


控制任務

對2驅動輪1從動輪的小車基本行走控制方法進行設計

實物圖與電路設計

                       

圖1 雙輪驅動小車1

 

圖2 雙輪驅動小車2

 

圖3 雙輪驅動小車3

  

圖4 雙輪驅動小車控制系統接線圖

實際接線

Arduino的引腳6,8,7分別接L298N驅動板的ENA,IN1,IN2,控制左電機,Arduino的引腳3,2,4分別接L298N驅動板的ENB,IN3,IN4,控制右電機,

程序設計

  1 //控制板引腳定義
  2 int motor_L_ENA = 6; //左電機控制端連接於Arduino板的6,8,7引腳
  3 int motor_L_IN1 = 8;
  4 int motor_L_IN2 = 7;
  5 int motor_R_ENB = 2; //右電機控制端連接於Arduino板的2,3,4引腳
  6 int motor_R_IN3 = 3;
  7 int motor_R_IN4 = 4;
  8 int low_speed = 100; //左轉右轉時的高速低速設定,可調整
  9 int high_speed = 200;
 10 
 11 
 12 
 13 //子函數定義
 14 void go_forward_high_speed()   //小車前進 全速
 15 {
 16   digitalWrite(motor_L_ENA, 1);  //左電機正轉
 17   digitalWrite(motor_L_IN1, 0);
 18   digitalWrite(motor_L_IN2, 1);
 19 
 20   digitalWrite(motor_R_ENB, 1);   //右電機正轉
 21   digitalWrite(motor_R_IN3, 0);
 22   digitalWrite(motor_R_IN4, 1);
 23 }
 24 
 25 void go_backward_high_speed()  //小車后退 全速
 26 {
 27   digitalWrite(motor_L_ENA, 1);  //左電機反轉
 28   digitalWrite(motor_L_IN1, 1);
 29   digitalWrite(motor_L_IN2, 0);
 30 
 31   digitalWrite(motor_R_ENB, 1);  //右電機反轉
 32   digitalWrite(motor_R_IN3, 1);
 33   digitalWrite(motor_R_IN4, 0);
 34 }
 35 
 36 void stop_with_brake()  //小車制動
 37 {
 38   digitalWrite(motor_L_ENA, 1);  //左電機制動
 39   digitalWrite(motor_L_IN1, 1);
 40   digitalWrite(motor_L_IN2, 1) ;
 41 
 42   digitalWrite(motor_R_ENB, 1);  //右電機制動
 43   digitalWrite(motor_R_IN3, 1);
 44   digitalWrite(motor_R_IN4, 1) ;
 45 }
 46 
 47 void stop_free()    //小車自由停止
 48 {
 49   digitalWrite(motor_L_ENA, 0); //左電機自由停止
 50   digitalWrite(motor_L_IN1, 0);
 51   digitalWrite(motor_L_IN2, 0) ;
 52 
 53   digitalWrite(motor_R_ENB, 0);   //右電機自由停止
 54   digitalWrite(motor_R_IN3, 0);
 55   digitalWrite(motor_R_IN4, 0) ;
 56 }
 57 
 58 void go_forward_speed_up()  //小車前進 加速
 59 {
 60   digitalWrite(motor_L_IN1, 0); //左輪加速
 61   digitalWrite(motor_L_IN2, 1);
 62   for (int a = 100; a <= 255; a++)
 63   {
 64     analogWrite(motor_L_ENA, a);
 65     delay(200);
 66   }
 67 
 68   digitalWrite(motor_R_IN3, 0); //右輪加速
 69   digitalWrite(motor_R_IN4, 1);
 70   for (int a = 100; a <= 255; a++)
 71   {
 72     analogWrite(motor_R_ENB, a);
 73     delay(200);
 74   }
 75 }
 76 
 77 void go_forward_speed_down()  //小車前進 減速
 78 {
 79   digitalWrite(motor_L_IN1, 0);  //左輪減速
 80   digitalWrite(motor_L_IN2, 1);
 81   for (int a = 255; a <= 100; a--)
 82   {
 83     analogWrite(motor_L_ENA, a);
 84     delay(200);
 85   }
 86 
 87   digitalWrite(motor_R_IN3, 0);  //右輪減速
 88   digitalWrite(motor_R_IN4, 1);
 89   for (int a = 255; a <= 100; a--)
 90   {
 91     analogWrite(motor_R_ENB, a);
 92     delay(200);
 93   }
 94 }
 95 
 96 void go_forward_left()  //小車左轉
 97 {
 98   digitalWrite(motor_L_IN1, 0);
 99   digitalWrite(motor_L_IN2, 1);
100   analogWrite(motor_L_ENA, low_speed); //左輪低速
101 
102   digitalWrite(motor_R_IN3, 0);
103   digitalWrite(motor_R_IN4, 1);
104   analogWrite(motor_R_ENB, high_speed);  //右輪高速
105 }
106 
107 void go_forward_right()  //小車右轉
108 {
109   digitalWrite(motor_L_IN1, 0);
110   digitalWrite(motor_L_IN2, 1);
111   analogWrite(motor_L_ENA, high_speed); //左輪高速
112 
113   digitalWrite(motor_R_IN3, 0);
114   digitalWrite(motor_R_IN4, 1);
115   analogWrite(motor_R_ENB, low_speed);  //右輪低速
116 }
117 
118 
119 void setup()
120 {
121   pinMode(motor_L_ENA, OUTPUT); //左電機使能和PWM調速口
122   pinMode(motor_L_IN1, OUTPUT);  //左電機控制口1
123   pinMode(motor_L_IN2, OUTPUT);  //左電機控制口2
124 
125   pinMode(motor_R_ENB, OUTPUT); //右電機使能和PWM調速口
126   pinMode(motor_R_IN3, OUTPUT);  //右電機控制口3
127   pinMode(motor_R_IN4, OUTPUT);  //左電機控制口4
128 }
129 
130 void loop()
131 {
132   stop_with_brake(); //制動2秒
133   delay(2000);
134 
135   go_forward_speed_up();   //前進 加速 50秒
136   delay(50000);
137   go_forward_high_speed();   //前進 全速10秒
138   delay(10000);
139   go_forward_speed_down();   //前進 減速50秒
140   delay(50000);
141   stop_free();    //自由停車5秒
142   delay(5000);
143 
144   go_forward_left();  //小車左轉10秒,時間可調整
145   delay(10000);
146   go_forward_right();  //小車右轉10秒,時間可調整
147   delay(10000);
148   stop_free();    //自由停車5秒
149   delay(5000);
150 }

運行效果

包括下列動作:小車制動,加速前進,全速前進,減速前進,自由停車,小車左轉,小車右轉,自由停車,循環

進一步練習

設計程序控制小車走圓形曲線或者走口字


免責聲明!

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



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