目录
一、实验目的
(1)熟悉L298N电机驱动模块原理与功能;
(2)掌握L298N驱动电机的程序控制方法;
(3)熟悉PS2双轴摇杆传感器模块的原理与功能;
(4)编写L298N电机驱动控制程序。
二、实验设备与环境
Arduino UNO套件、Arduino IDE、计算机、L298N驱动模块、直流电机、电位器、PS/3双轴摇杆传感器等
三、实验重点
(1)L298N电机驱动模块原理与功能;(2)PS2双轴摇杆传感器模块的原理;(3)L298N电机驱动程序控制
四、实验难点
(1)L298N电机驱动的程序控制
五、实验内容
5.1实验任务
任务描述:PS2双轴摇杆测试;L298N直流电机驱动电路连接;L298N直流电机驱动程序编写与调试
5.2实验原理
1.PS/3双轴摇杆传感器
JoyStick摇杆采用原装优质金属PS2摇杆电位器制作,具有(X,Y)2轴analog输出,(Z)1路按钮digital输出,3路信号分别通过杜邦线线接到Arduino传感器扩展板,只需占用2个模拟输入端口、1个数字输入端口,就可以实现控制。
摇杆的技术规格:
电源要求:+3.3-5V
模拟输出:X、Y2轴模拟输出
数字输出:Z,数字按键输出
PS/3摇杆工作原理
摇杆实际上是由两个电位器连接到Arduino的模拟输入,它们的值从0到1023。操纵杆保持在垂直状态的中心位置时,电位器X/Y轴的值在512左右。如果以512左右的值为中心,摇动操纵杆X轴,数值低于512时可使电机向一个方向旋转,当数值高于512时可控制电机旋转方向反向;将X轴的读取值0-511映射换为255-0,X轴的读取值512-1023映射为0-255,通过转换为PWM值控制电机的速度。
PS/3摇杆Z轴等效于按键开关,当垂直按下摇杆时,开关闭合,松开时开关断开。
2.H-Bridge桥控制直流电机的正反转原理
直流电机的旋转方向要进行逆转,需要改变流过直流电流的方向,由晶体管(BJT或MOSFET)组成的四个开关元件构成类似H的结构,通过同时激活两个特定的开关,改变流过电机电流的方向,驱动电机改变旋转方向而不需要切换引线。
通过4个晶体管的H桥连接,改变A、B控制端高低电平的方向,实现驱动电流方向改变,并改变电机的转动方向,如图所示:
3.L298N电机驱动模块
L298N是ST公司生产的一种高电压、大电流电机驱动芯片。该芯片采用15脚封装。含两个H桥的高电压大电流全桥式驱动器,可以用来驱动直流电动机和步进电动机、继电器线圈等感性负载。
L298NH桥式双电机驱动模块 L298NH桥式双电机驱动电路
L298N双H桥驱动模块技术指标:
驱动芯片:双H桥直流电机驱动芯片
L298N驱动端供电范围VS:+5V~ +35V
驱动板供电范围VS:+7V~ +35V
逻辑部分供电范围VSS:+5V ~ +7V(板内取电+5V)
逻辑部分峰值电流范围:0 ~ 36mA
最大功耗:20W
存储温度:-25°C ~ +130°C
L298N驱动模块的使用方法
L298N驱动模块采用标准逻辑电平信号IN1\IN2\IN3\IN4控制;具有两个使能控制端ENA\ENB,在不受输入信号影响的情况下,可(高电平)允许或(低电平)禁止驱动器件工作;有5V逻辑电源输入端,使内部逻辑电路部分工作在低电压下。L298N芯片片可以驱动一台两相步进电机或四相步进电机,也可以驱动两台直流电机。
L298N驱动模块的供电电源。在独立供电电源接12V供电输入端输入7-12V电源电压时,短接跳线冒处于短接状态,可以通过5V接口接入Arduino开发板的“Vin+GND”端口反向Arduino供5V电。当独立供电电源是12-24V时候,必须拔下短接跳线帽,此时独立供电电源对驱动板逻辑电路电机供电,不对外供电输出。
L298N驱动模块控制直流电机
L298N驱动模块可以驱动两台直流电机MA和MB。
直流电机速度的调节与控制。①直流电机可通过IN1/IN2、IN3/IN4接口输入PWM信号对电机转速进行控制;②也可以通过使能端ENA和ENB输入PWM脉宽调制信号对直流电机转速进行调节控制(ENA、ENA短接跳线帽,为5V,电机工作于最高速状态)。
直流电机的正反转控制。信号输入端IN1=HIGH、N2=LOW或者IN1(PWM)>IN2(PWM),电机MA正转;信号输入端N1=LOW、IN2=HIGH或者IN1(PWM)>IN2(PWM),电机MA反转。直流电机MB同理。
4.PS2摇杆控制L298N驱动电机实验电路
电路图
电路原理图
5.3实验内容
1.PS2双轴摇杆传感器参数测试
步骤1:连接电路
步骤2:编写程序
int xPin = A0;
int yPin = A1;
int zPin = 2;
int xValue,yValue,zValue;
void setup() {
pinMode(zPin,INPUT);
Serial.begin(9600);
}
void loop() {
xValue = analogRead(xPin);
yValue = analogRead(yPin);
zValue = digitalRead(zPin);
Serial.print("X =:");
Serial.print(xValue);
Serial.print(" Y =:");
Serial.print(yValue);
Serial.print(" Z =:");
Serial.println(zValue);
delay(100);
}
步骤3:程序测试
2.L298N驱动模块测试
测试任务:单直流电机的启正传、停止、反转;电位器控制电机调速
先只单接直流电机A驱动电路,IN1、IN2输入接D5、D6接口,电位器滑动头引脚接A0接口。
步骤1:按要求连接电路
步骤2:编写控制程序
程序示例1:电机的正转、停止、反转
int IN1=5;
int IN2=6;
void setup() {
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
}
void loop() {
// 正转 1 秒
digitalWrite(IN1,HIGH);
digitalWrite(IN2,LOW);
delay(1000);
// 停止 1 秒
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
delay(1000);
// 反转 1 秒,转动方向反转前一定要先停止转动作为过渡,以保护电路
digitalWrite(IN1, LOW);
digitalWrite(IN2, HIGH);
delay(1000);
// 停止 1 秒
digitalWrite(IN1,LOW);
digitalWrite(IN2,LOW);
}
程序示例2:电位器输入PWM信号调速
int IN1=5;
int IN2=6;
int dwqPin=A0;
int dwqValue;
int speedValue = 0;
void setup() {
Serial.begin(9600);
pinMode(IN1,OUTPUT);
pinMode(IN2,OUTPUT);
pinMode(dwqPin,INPUT);
analogWrite(IN1,0);
analogWrite(IN2,0);
}
void loop(){
dwqValue = analogRead(dwqPin)
Serial.print("dwqValue =:");
Serial.print(analogRead(dwqValue));
Serial.print(" speedValue =:");
Serial.println(speedValue);
if (dwqValue > 512){ // 电机正转,调速
analogWrite(IN2,0);
speedValue = dwqValue - 512;
speedValue = map(speedValue,0,512,0,255);
analogWrite(IN1,speedValue);
delay(10);
}
else { // 电机反转,调速
analogWrite(IN1,0);
speedValue = map(dwqValue,0,512,0,255);
analogWrite(IN2,speedValue);
delay(10)
}
}
3.实验扩展:PS2摇杆控制双直流电机转动
实验任务:通过PS2摇杆X轴控制电机A的转速,Y轴控制电机B的转速,Z轴按键控制电机的启动、停止。
L298N驱动模块接双直流电机,其中IN1=5,IN2=6,IN3=10,IN4=11;
PS2摇杆的SX=A0,SY=A1,ZK=2。
5.4实验结果
结论:单直流电机的启动正转、停止、反转。正转1秒,然后停止,再反转 1 秒。通过摇杆控制小车的运动和停止。
反思:通过本次实验,我学到了很多的知识,熟悉了 L298N 电机驱动模块原理与功能和掌握了 L298N 驱动电机的程序控制方法,熟悉了 PS2 双轴摇杆传感器模块的原理与功能,能够编写 L298N 电机驱动控制程序。
作品:
5.5思考题
1.通过PS2摇杆控制电机转动实验,你能用PS2摇杆实现电机的启动、停止、正转、反转、调速吗?怎样实现?请画出程序控制流程图。