Arduino 简明教程
Arduino - DC Motor
在本章中,我们将演示不同类型的电机与 Arduino 板 (UNO) 的接口,并向您展示如何连接电机并从您的板上进行驱动。
有三种不同类型的电机−
-
DC motor
-
Servo motor
-
Stepper motor
直流电动机是最常见的电动机类型。直流电动机通常只有两个引线,一个正极和一个负极。如果您将这两根引线直接连接到电池上,则电机将旋转。如果您切换引线,电机将朝相反的方向旋转。
Warning − 请勿直接从 Arduino 板引脚驱动电机。这可能会损坏电路板。使用驱动器电路或 IC。
我们将本章分为三个部分−
-
只需让电机旋转
-
Control motor speed
-
控制直流电机的旋转方向
Components Required
您将需要以下组件:
-
1x Arduino UNO board
-
1x PN2222 Transistor
-
1x 小型 6V 直流电机
-
1x 1N4001 diode
-
1x 270 Ω Resistor
Precautions
在进行连接时采取以下预防措施。
-
首先,确保晶体管以正确的方式连接。如排列所示,晶体管的平面侧应面向 Arduino 板。
-
第二,根据图像中所示的排列方式,二极管的条纹端应朝向 +5V 电源线。
Spin ControlArduino Code
int motorPin = 3;
void setup() {
}
void loop() {
digitalWrite(motorPin, HIGH);
}
Motor Speed Control
以下是直流电机示意图,它连接到 Arduino 电路板。
Arduino Code
int motorPin = 9;
void setup() {
pinMode(motorPin, OUTPUT);
Serial.begin(9600);
while (! Serial);
Serial.println("Speed 0 to 255");
}
void loop() {
if (Serial.available()) {
int speed = Serial.parseInt();
if (speed >= 0 && speed <= 255) {
analogWrite(motorPin, speed);
}
}
}
Spin Direction Control
要控制直流电机旋转方向,无需交换引线,你可以使用名为 H-Bridge 的电路。H 桥是一个电子电路,可以驱动电机向两个方向转动。H 桥用于众多不同的应用。最常见的应用之一是控制机器中的电机。之所以称作 H 桥,是因为它使用的四个晶体管连接方式使示意图看起来像一个“H”。
我们将在此处使用 L298 H 桥 IC。L298 可以控制直流电机和步进电机的速度和方向,还可以同时控制两台电机。对每台电机,其额定电流为 2A。然而,在此电流下,你将需要使用散热器。
Components Required
您将需要以下组件:
-
1 × L298 桥接 IC
-
1 × DC motor
-
1 × Arduino UNO
-
1 × breadboard
-
10 × jumper wires
Procedure
以下是直流电机与 Arduino Uno 电路板接口的示意图。
上图展示了如何连接 L298 IC 以便控制两台电机。每台电机都有三个输入引脚,第 1 个输入引脚(IN1)、第 2 个输入引脚(IN2)和第 1 个使能引脚(EN1),用于电机 1;第 3 个输入引脚、第 4 个输入引脚和第 2 个使能引脚,用于电机 2。
由于我们在本示例中只控制一台电机,因此我们将 Arduino 连接到 L298 IC 的 IN1(引脚 5)、IN2(引脚 7)和 Enable1(引脚 6)。引脚 5 和 7 是数字引脚,即 ON 或 OFF 输入,而引脚 6 需要脉宽调制 (PWM) 信号才能控制电机速度。
下表显示了电机将根据 IN1 和 IN2 的数字值旋转的方向。
IN1 |
IN2 |
Motor Behavior |
BRAKE |
||
1 |
FORWARD |
|
1 |
BACKWARD |
|
1 |
1 |
BRAKE |
IC L298 的 IN1 引脚连接到 Arduino 的引脚 8,而 IN2 连接到引脚 9。这两个 Arduino 数字引脚控制电机的方向。IC 的 EN A 引脚连接到 Arduino 的 PWM 引脚 2。这将控制电机的速度。
要设置 Arduino 引脚 8 和 9 的值,我们使用了 digitalWrite() 函数,而要设置引脚 2 的值,我们必须使用 analogWrite() 函数。
Connection Steps
-
将 IC 的 5V 和接地分别连接到 5V 和 Arduino 的接地。
-
将电机连接到 IC 的引脚 2 和 3。
-
将 IC 的 IN1 连接到 Arduino 的引脚 8。
-
将 IC 的 IN2 连接到 Arduino 的引脚 9。
-
将 IC 的 EN1 连接到 Arduino 的引脚 2。
-
将 IC 的 SENS A 引脚连接到接地。
-
使用 Arduino USB 线连接 Arduino,并使用 Arduino IDE 软件将程序上传到 Arduino。
-
使用电源、电池或 USB 线为 Arduino 电路板供电。
Arduino Code
const int pwm = 2 ; //initializing pin 2 as pwm
const int in_1 = 8 ;
const int in_2 = 9 ;
//For providing logic to L298 IC to choose the direction of the DC motor
void setup() {
pinMode(pwm,OUTPUT) ; //we have to set PWM pin as output
pinMode(in_1,OUTPUT) ; //Logic pins are also set as output
pinMode(in_2,OUTPUT) ;
}
void loop() {
//For Clock wise motion , in_1 = High , in_2 = Low
digitalWrite(in_1,HIGH) ;
digitalWrite(in_2,LOW) ;
analogWrite(pwm,255) ;
/* setting pwm of the motor to 255 we can change the speed of rotation
by changing pwm input but we are only using arduino so we are using highest
value to driver the motor */
//Clockwise for 3 secs
delay(3000) ;
//For brake
digitalWrite(in_1,HIGH) ;
digitalWrite(in_2,HIGH) ;
delay(1000) ;
//For Anti Clock-wise motion - IN_1 = LOW , IN_2 = HIGH
digitalWrite(in_1,LOW) ;
digitalWrite(in_2,HIGH) ;
delay(3000) ;
//For brake
digitalWrite(in_1,HIGH) ;
digitalWrite(in_2,HIGH) ;
delay(1000) ;
}