在说PWM波之前先来说一说我们家里的电电扇,电电扇普通都有四个档位,每一个档位对应的差别的转速,不知道同砚们思量过这个题目吗?电扇的转速是怎么被操纵的?在笔者小时间灵活的是通过电阻操纵电扇的转速,电阻分压多了,风机天然就转慢了。由于其时刚开了物理课,于是就有了如许的想法。
知道上了大学,学了单片机之后,笔者才把电扇转速这个迷惑解开。要解说这个题目我们先从LED灯提及,我们都见过LED灯闪耀,这天然没什么好说的,LED第一秒亮,第二秒灭,谁都能感知的到,假如不是一秒一秒的转变,好比说1ms,此时我们人眼早已感知不到LED在闪耀,但是亮度却只有平常的一半,由于LED灯在一半的时间是灭的。就像水管内里流淌的水,假如我们开一秒,关一秒,如许流进水桶内里的水肯定不如水龙头常开的时间流的多。
说的PWM波,就不得不提一个观点——占空比,所谓占空比,便是在一个脉冲轮回内,高电平所占的时间和总时间之比,由此可知,可以操纵高电平所占的时间去操纵占空比。
Arduino有四种引脚模式:
数字输出引脚
数字输入引脚
模仿输出引脚
模仿输入引脚
此次试验所用的便是模仿输出引脚,别的三种引脚在前几节课种都有效到,此次重要讲模仿输出,要操纵马达转动天然是输出,要操纵马达的快慢,单单用数字引脚是不行能完成的,于是这里必要用到模仿输出引脚,模仿输出最大的长处是可以操纵占空比。
Arduino开辟板上的每一个引脚只能为我们提供10~20mA的电流,对付驱动一些大负载的外设,这个电流的确是太小了,也就仅仅能驱动一个LED灯。假如你要用它驱动一个直流电机,最终的效果或许是电机不转,大概把你的芯片烧坏,都是有大概的。为了驱动大功率负载,我们就一定借助一些其他的电子元器件,这便是在硬件范畴最紧张的开关管MOSFET晶体管,它有三个引脚,我们单片机的引脚连一个即G极,别的两个一个接VCC、最终一个接地,把马达串在VCC和GND之间。我们给G极高电平,MOSFET就会导通,以此到达小电流操纵大电流的目标。
#define motor 9 //把马达连在引脚9
void setup(){
pinMode(motor,OUTPUT); // 设置马达为状态
}
void loop() {
analogWrite(motor,127);//让马达以半速运行
}
今日的步伐比力简洁实在,也就一行代码 analogWrite(motor,128); analogWrite()函数有两个参数,第一个参数是要操纵的引脚,第二个参数操纵的占空比,输入范畴是0~255;当输入的值是255时,马达以全速运行;当输入的值是127是马达以半速运行;当输入的值为0是,马达停转。这便是通过模仿输出操纵PWM波的占空比。
试着修改analogWrite(motor,i)中i的值,i的值越大(最大255),马达转速越快。