Arduino电子小制作之控制直流马达转速

孩儿时的天真

在说PWM波之前先来说一说我们家里的电风扇,电风扇一般都有四个档位,每一个档位对应的不同的转速,不知道同学们考虑过这个问题吗?风扇的转速是怎么被控制的?在笔者小时候天真的是通过电阻控制风扇的转速,电阻分压多了,风机自然就转慢了。因为当时刚开了物理课,于是就有了这样的想法。

Arduino电子小制作之控制直流马达转速

PWM波

知道上了大学,学了单片机之后,笔者才把风扇转速这个疑惑解开。要解释这个问题我们先从LED灯说起,我们都见过LED灯闪烁,这自然没什么好说的,LED第一秒亮,第二秒灭,谁都能感知的到,如果不是一秒一秒的改变,比如说1ms,此时我们人眼早已感知不到LED在闪烁,但是亮度却只有平时的一半,因为LED灯在一半的时间是灭的。就像水管里面流动的水,如果我们开一秒,关一秒,这样流进水桶里面的水肯定不如水龙头常开的时候流的多。

Arduino电子小制作之控制直流马达转速

说的PWM波,就不得不提一个概念——占空比,所谓占空比,就是在一个脉冲循环内,高电平所占的时间和总时间之比,由此可知,可以控制高电平所占的时间去控制占空比。

模拟输出引脚

Arduino有四种引脚模式:

数字输出引脚

数字输入引脚

模拟输出引脚

模拟输入引脚

这次实验所用的就是模拟输出引脚,其余三种引脚在前几节课种都有用到,这次主要讲模拟输出,要控制马达转动自然是输出,要控制马达的快慢,单单用数字引脚是不可能完成的,于是这里需要用到模拟输出引脚,模拟输出最大的优点是可以控制占空比。

原理图

Arduino开发板上的每一个引脚只能为我们提供10~20mA的电流,对于驱动一些大负载的外设,这个电流简直是太小了,也就仅仅能驱动一个LED灯。如果你要用它驱动一个直流电机,最后的结果也许是电机不转,或许把你的芯片烧坏,都是有可能的。为了驱动大功率负载,我们就必须借助一些其他的电子元器件,这就是在硬件领域最重要的开关管MOSFET晶体管,它有三个引脚,我们单片机的引脚连一个即G极,另外两个一个接VCC、最后一个接地,把马达串在VCC和GND之间。我们给G极高电平,MOSFET就会导通,以此达到小电流控制大电流的目的。

Arduino电子小制作之控制直流马达转速

程序

#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),马达转速越快。

展开阅读全文

页面更新:2024-04-20

标签:转速   常开   马达   流进   档位   电风扇   负载   单片机   电阻   电流   风扇   参数   自然   数字   时间   电子

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2020-2024 All Rights Reserved. Powered By 71396.com 闽ICP备11008920号-4
闽公网安备35020302034903号

Top