Arduino与Proteus仿真实例-L298N驱动直流电机仿真 L298N驱动直流电机仿真 1、L298N介绍 L298N 是采用 15 引线多瓦和 PowerSO20 封装的集成单片电路。 它是一种高压、大电流双全桥驱动器,设计用于接受标准TTL逻辑电平和驱动电感负载,如继电器、螺线管、直流和步进电机。
L298N 是双 H 桥电机驱动器,可同时控制两个直流电机的速度和方向。 该模块可以驱动电压在5-35V之间的直流电机,峰值电流可达2A。
L298N引脚及功能如下:
驱动模块可以驱动两个电机。 ENA 和 ENB 使能端为高电平有效。 电机A的控制方式及状态如下表所示:
如果想通过PWM 来调节电机A 的速度,需要设置IN1 和IN2,确定电机的旋转方向,然后输出PWM 脉冲给使能的端子。 请注意,使能端子信号为0 时电机处于自由停车状态。使能信号为1 时,如果IN1 和IN2 为00 或11,则电机处于制动状态,电机停止转动。 如果IN1为0,IN2为1,电机A顺时针旋转; 如果IN1为1,IN2为0,电机A逆时针旋转。 这是电机A的控制方法。电机B的控制方法与电机A的控制方法相同。
2、仿真电路原理图
3、仿真代码实现 本次实例使用到如下开源库:
演示代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 // Include the library #include <L298N.h> // Pin definition const unsigned int IN1 = 2; const unsigned int IN2 = 3; const unsigned int EN1 = 4; const unsigned int IN3 = 5; const unsigned int IN4 = 6; const unsigned int EN2 = 7; // Create one motor instance L298N motor1(EN1, IN1, IN2); L298N motor2(EN2, IN3, IN4); void setup() { // Used to display information Serial.begin(9600); // Wait for Serial Monitor to be opened while (!Serial) { //do nothing } // Set initial speed motor1.setSpeed(255); motor2.setSpeed(255); } void loop() { // Tell the motor to go forward (may depend by your wiring) motor1.forward(); motor2.forward(); // Alternative method: // motor.run(L298N::FORWARD); //print the motor status in the serial monitor printSomeInfo(); delay(1500); // Stop motor1.stop(); motor2.stop(); // Alternative method: // motor.run(L298N::STOP); printSomeInfo(); // Change speed motor1.setSpeed(255); motor2.setSpeed(255); delay(1500); // Tell the motor to go back (may depend by your wiring) motor1.backward(); motor2.backward(); // Alternative method: // motor.run(L298N::BACKWARD); printSomeInfo(); delay(1500); } /\* Print some informations in Serial Monitor \*/ void printSomeInfo() { Serial.print("Motor is moving = "); Serial.print(motor1.isMoving()); Serial.print(" at speed = "); Serial.println(motor1.getSpeed()); }
4、仿真结果
文章来源: https://iotsmart.blog.csdn.net/article/details/121376646
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!