控制任务
让单个直流电机在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 }
程序运行效果
制动状态开始正转加速,正转全速,正转减速,自由停车,反转加速,反转全速,反转减速,自由停车,循环。