电子说
概述
在本课程中,您将学习如何使用Arduino和非晶体管控制小型直流电动机。
您将使用Arduino模拟输出(PWM)来控制速度通过从串行监视器发送一个介于0到255之间的数字来表示电动机。
零件
要构建本课中描述的项目,您将需要以下零件。
零件 数量
小型6V直流电动机
1
PN2222晶体管
1
1N4001二极管
1
270Ω电阻器(红色,紫色,棕色条纹)
1
半面包板
1
Arduino Uno R3
1
跳线包
1
面包板布局
将面包板放在一起时,需要注意两点。
首先,确保晶体管是正确的方式周围。晶体管的扁平侧应位于面包板的右侧。
其次,二极管的条纹端应朝向+ 5V电源线-请参见下图!
Adafruit Arduino套件随附的电机消耗的电流不超过250mA,但是如果您有使用不同的电机,它可以轻松吸收1000mA电流,这不仅仅是USB端口所能处理的!如果不确定电机的电流消耗,请通过墙壁适配器为Arduino供电,而不仅仅是USB
电机可以左右任意方向连接。
Arduino代码
将以下草图加载到您的Arduino上。
下载:文件
复制代码
/*
Adafruit Arduino - Lesson 13. DC Motor
*/
int motorPin = 3;
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);
}
}
} /*
Adafruit Arduino - Lesson 13. DC Motor
*/
int motorPin = 3;
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);
}
}
}
晶体管的作用就像一个开关,控制电机的电源,Arduino引脚3用于打开和关闭晶体管,并在其中命名为“ motorPin”草图。
草图开始时,它会提示您,提醒您要控制电动机的速度,您需要在串行监视器中输入0到255之间的一个值。
在“循环”中函数,命令“ Serial.parseInt”用于读取在串行监视器中输入为文本的数字并将其转换为“ int”。
您可以在此处键入任何数字,因此在如果数字介于0到255之间,则下一行仅使用该数字进行模拟写入。
晶体管
小型直流电动机使用的功率可能比Arduino数字输出直接处理的功率大。如果我们尝试将电机直接连接到Arduino引脚,则很有可能损坏Arduino。
像PN2222这样的小晶体管可以用作仅使用Arduino小电流的开关数字输出以控制更大的电动机电流。
晶体管有三根引线。大部分电流从集电极流到发射极,但这仅在少量电流流入基本连接时才会发生。此小电流由Arduino数字输出提供。
下图称为像面包板布局一样,它是显示电子项目的各个部分如何连接在一起的一种方式。
Arduino的D3引脚连接到电阻。就像使用LED一样,这会限制通过基极流向晶体管的电流。
在电机的各个端子之间连接有一个二极管。二极管仅允许电流沿一个方向(箭头方向)流动。
关闭电动机的电源时,会产生负电压尖峰,这可能会损坏Arduino或晶体管。二极管通过短路来自电动机的这种反向电流来防止这种情况。
其他操作
尝试颠倒与电动机的连接。发生什么了?
尝试在串行监视器中输入不同的值(从0开始),并注意电机实际开始旋转的值。当您增加模拟输出时,您会发现电动机开始“唱歌”。
尝试将驱动轴夹在手指之间。不要过长地握住它,否则可能会煮熟晶体管,但是您应该发现停止电动机相当容易。它旋转速度快,但扭矩不大。
责任编辑:wv
全部0条评论
快来发表一下你的评论吧 !