在本 Arduino 电机指南中,您将学习如何使用 Arduino UNO 和 TIP120晶体管驱动和控制直流电机的速度。在此示例中,您将使用按钮来提高电机速度,然后减慢速度,这要归功于脉宽调制 (PWM) 的强大功能。
所需材料:
Arduino的
直流电动机
TIP120 晶体管
1N4001二极管
9V电池
按钮(瞬时开关)
10kΩ 电阻器
面包板和跳线
Arduino电机电路
在下面的电路中,我们将晶体管连接为开关来控制直流电机,以避免从Arduino本身拉出大量电流:
通过 5 千欧电阻器将瞬时开关连接到 10V 和 GND,信号进入 Arduino 上的数字引脚 2。
将 TIP120 晶体管的基座连接到 Arduino 上的数字引脚 9,将发射器连接到 Arduino
的接地,将集电极连接到直流电机的一根引线。
在电机引线上放置一个 1N4001 二极管,确保条纹侧连接到 9V 正极引线。
用 9V 电池为电机供电,将接地连接到 Arduino 的接地,将正极连接到电机。
Arduino直流电机代码示例
以下是控制电机的示例代码。这是一个简单的草图,它对按钮的状态做出反应,以使用 TIP120 晶体管作为开关来控制电机的速度。
int buttonPin = 2; // Button connected to digital pin 2
int motorPin = 9; // Transistor base connected to digital pin 9
void setup() {
pinMode(buttonPin, INPUT); // Initialize button pin as an input
pinMode(motorPin, OUTPUT); // Initialize motor pin as an output
}
void loop() {
// Detect button press
if (digitalRead(buttonPin) == HIGH) {
// Increase motor speed progressively
for (int speedLevel = 0; speedLevel <= 255; speedLevel++) {
analogWrite(motorPin, speedLevel);
delay(50); // Wait a bit between speed increases
}
// Decrease motor speed progressively
for (int speedLevel = 255; speedLevel >= 0; speedLevel--) {
analogWrite(motorPin, speedLevel);
delay(50); // Wait a bit between speed decreases
}
}
}
附注事项:
Arduino的引脚可在5V电压下提供最大40mA电流。由于大多数电机需要更大的电流,因此 TIP120
晶体管充当数字开关来控制电气要求更高的电机。
确保二极管放置在正确的方向,以防止电机关闭时反电动势损坏晶体管。
审核编辑:陈陈
全部0条评论
快来发表一下你的评论吧 !