Arduino应用 |
您所在的位置:网站首页 › 步进电机调速器工作原理 › Arduino应用 |
Arduino应用——PWM控制直流电机风扇
PWM原理实验器件功能描述接线图/原理图实现代码结果
最近在使用arduino UNO开发板完成课程小作业。其中一个要求设计一个电风扇控制系统,要求能够通过PWM调节风扇的转速。期间搜索了许多例程和方法,但受限于器件,效果不好。最后融合了两种方法,成功实现控制功能,因此在这里总结出来。 PWM原理根据arduino官方社区的定义,PWM即脉冲宽度调制,是一种通过数字控制方式获得模拟结果的技术。数字控制用于创建方波,即在on和off之间切换的信号。通过改变信号处于ON状态时间和处于OFF状态时间的比例,这种模式可以模拟板子从Vcc(对UNO是5V)到off(GND,即0V)的所有电压。“ON”的持续时间称为 脉冲宽度。更改或调制脉冲宽度可以获得变化的模拟值。如果用LED灯足够快地重复此开关模式,效果相当于用一个介于0~Vcc之间的稳定电压,控制着LED灯的亮度。
![]() 实际操作时,ULN2003驱动板的IN1连接arduino的数字IO口9,供电口分别连接arduino的5V和gnd口。步进电机驱动部分最上方的接口连接直流电机。 四角按键开关怎么接线直流电机![]() Arduino的板载输出电流是不够的,所以我们得需要借助ULN2003驱动板来实现。 通过加速和减速按键,能够控制负载/电机两端电压,改变电机转速。 PWM频率一定时,脉冲宽度越大,占空比越大,提供给电机的平均电压越大,电机转速就越高。反之脉冲宽度越小,则占空比越小,提供给电机的平均电压越小,电机转速就低。 接线图/原理图代码及注释如下,可供参考。 // 定义引脚 const int buttonPin1 = 7; //定义buttonPin1引脚为7,加速按键 const int buttonPin2 = 2; //定义buttonPin2引脚为8,减速按键 const int motorPin = 9; //定义motorPin引脚为9,驱动电机 int buttonState1 = 0; int buttonState2 = 0; int outputValue = 0; int a1 = 0; //占空比,这里取0-255 void setup() { //输入输出状态定义 pinMode(buttonPin1, INPUT); pinMode(buttonPin2, INPUT); pinMode(motorPin, OUTPUT); Serial.begin(9600); //定义串口波特率 } void loop() { // 串口监视器打印按键状态和电机转速 buttonState1 = digitalRead(buttonPin1); buttonState2 = digitalRead(buttonPin2); Serial.print("加速按钮="); Serial.println(buttonState1); Serial.print("减速按钮="); Serial.println(buttonState2); delay(1000); outputValue=analogRead(motorPin); //outputValue:0~1023 Serial.print("output="); Serial.println(outputValue); if(outputValue //如果加速按键按下 a1 += 20; // a1的变化数值可以根据实际需求调整 analogWrite(motorPin, a1); //将a的值赋给motorPin delay(1000); //延迟1s } if(buttonState2 == HIGH) { //如果减速按键按下 a1 -= 20; analogWrite(motorPin, a1); delay(1000); } } } 结果程序烧录到arduino板子上后,打开串口监视器,同时随机按下按键,观察风扇转动情况与串口监视器读数。 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |