利用Arduino和PWM控制直流电机的速度
用PC接口控制直流电动机的速度是一种简单的DIY方案。本课题通过PC机发送指令控制直流电机的转速。Arduino通过USB线直接连接到PC, Arduino IDE的串行监视器上对Arduino进行命令。
电机与晶体管相连,晶体管底座与Arduino的PWM引脚相连,电机根据Arduino发出的PWM信号进行调速。
Arduino直流电机控制-工作
Arduino通过USB线与PC连接。我们可以将命令发送到串行监视器上的PC。我们可以把电机的转速从0调到9。当0通过串行监视器发送时,电机以最低速度运行(即0)。当转速从1变到9时,转速增加,将9设为电机的最高转速。
采用了PWM直流电机控制器技术来控制转速。在PWM中,Arduino发送一个脉动波,类似于555定时器IC的稳定模式。
PWM速度控制(脉宽调制)
微控制器和Arduino都是数字设备;他们不能给出模拟输出。单片机给出0和1作为输出,其中0为逻辑低,1为逻辑高。在我们的例子中,我们使用的是5伏版本的Arduino。所以逻辑上零是零电压,逻辑上高是5电压。
数字输出对于数字设备来说很好,但有时我们需要模拟输出。在这种情况下,PWM是非常有用的。在PWM中,输出信号在0和1之间切换,在高固定频率上,如下图所示。

如上图所示,ON时间为“Ton”,OFF时间为“Toff”。T是“Ton”和“Toff”的和,也就是时间周期。在PWM的概念中,“T”是不变的,“Ton”和“Toff”可以变化,这样当“Ton”增加时,“Toff”会减少,当“Ton”成比例减少时,“Toff”会增加。
占空比是一个Time周期的分数。占空比通常用百分数或比率表示。周期是一个信号完成一个开关周期所需要的时间。作为公式,占空比可以表示为:
占空比=(吨÷吨)x100%
现在电机的速度根据占空比变化。假设占空比为零,电机不运行,当占空比为100%时,电机在最大转速上移动。但这个概念并不总是正确的,因为电机开始运行后,给一些固定电压,称为阈值电压。
晶体管(2 n2222)
微控制器和Arduino可以处理信号,消耗将近20 - 40mA的电流,但是电机需要高电流和电压,所以我们使用晶体管驱动电机。晶体管与电机串联,晶体管底座通过电阻与Arduino的PWM引脚连接。PWM信号来自Arduino,晶体管作为开关工作,当PWM信号处于高状态时短路发射极(E)和集电极(C),当PWM信号处于低状态时常开。这个过程是连续的,并且马达以期望的速度运行。
组件
组件 | 规范 | 数量 |
---|---|---|
Arduino | 纳米 | 1 |
直流电机 | 低功率 | 1 |
晶体管 | 2 n222 | 1 |
电源适配器 | 12伏 | 1 |
电阻 | 1 k | 1 |
二极管 | 1 n4004 | 1 |
USB电缆 | Arduino的纳米 | 1 |
Arduino直流电机控制电路
电路图如下所示。如果你是在通用PCB(零PCB)或实验板上做这个电路,这个数字是有用的。

此外,如果你是好的PCB蚀刻,使用下面提供的图像。


在电路中Arduino纳米使用,体积小,对面包板友好。
一个晶体管(2n2222)的基脚通过一个1k欧姆的电阻连接到Arduino的D9脚,电阻用于限流。电机连接在晶体管的集电极引脚和Vcc之间。二极管(1n4004)与电机反向偏置并联;用于阻断反向电流。晶体管的发射极管脚接地。这个电路由一个12伏的适配器供电。
Arduino PWM电机控制-视频


直流电机速度控制-下载程序
在代码的开头,两个整数通过名称“out1”和“val”声明,其中out1等于9,这表明Arduino的引脚D9被用作输出引脚(或PWM引脚)。此外,来自串行监视器的数据保存在第二个整数“val”中。
在void setup()中,串行通信开始使用函数“serial .begin(9600)”,其中9600是串行监视器的波特率。因为电机是一个输出设备,所以“out1”被声明为输出。
在void循环中“serial”。Available "在" if "条件中使用,当任何数据通过串行监视器发送时,它成为真。此数据使用“Serial”保存在“val”整数中。读”功能。
在使用多个if条件后,在第一个if条件中,当' 0 '通过串行监视器发送时,为真。在支架中“analogWrite(out1,0)”用于在零PWM值下运行电机。在函数“analogWrite (out1,0)”中,“out1”用来表示我们想要使用的引脚,“0”是该引脚的PWM值。在串口显示器上使用“serial”显示“Speed is = 0”后。println”功能。之后将整数val更新为10,其中10为除0 ~ 9之外的随机值。
在下一行if条件用于“val ==1”,此时电机运行的PWM值为175。相同的条件使用到9,在9电机运行在255 PWM值,255是最大的PWM值。
过程
- 通过USB连接Arduino并上传代码
- 打开串口监视器,设置波特率为9600
- 现在输入从0到9的任意数字。
在输入从0到9的任何值后,电机的速度是变化的,但我们不能在视频中看到正确的速度变化,但你可以看到它的现场。
2评论
不要超过225 - 255,你的电机控制器可能会弹出。
能给出用奥氏菌检测ph值的电路图和程序代码吗??