在本教程中,我们将使用Arduino Uno开发5V可变电压源。为此,我们将使用ADC(模拟到数字转换)和PWM(脉冲宽度调制)功能。
一些数字电子模块(如加速度计)在3.3V电压下工作,而某些在2.2V上工作。有些甚至在较低电压下工作。因此,我们无法为每个人都配备一个监管机构。因此,在这里我们将制作一个简单的电路,以0.05V的分辨率提供0-5伏的电压输出。因此,我们可以为其他模块准确提供电压。
该电路可以提供高达100mA的电流,因此我们可以将该电源单元用于大多数传感器模块,而不会遇到任何麻烦。该电路输出还可用于为AA或AAA可充电电池充电。通过适当的显示,我们可以轻松地查看系统中的电源波动。该可变电源单元包含用于电压编程的按钮接口。工作原理和电路说明如下。
硬件: Arduino Uno,电源(5v),100uF电容器(2个),按钮(2个),1KΩ电阻(3个),16 * 2字符LCD,2N2222晶体管。
软体: Atmel Studio 6.2或AURDINO每晚。
电路图和工作说明
下图显示了使用arduino的可变电压单元的电路 。
输出两端的电压不是完全线性的。会很吵。为了滤除噪声电容器,如图所示,在输出端子之间放置了电容器。此处的两个按钮用于电压增加和减少。人机界面显示输出端子上的电压。
在开始工作之前,我们需要研究Arduino UNO的ADC和PWM功能。
在这里,我们将获取在OUTPUT端子上提供的电压,并将其馈入Arduino的ADC通道之一。转换后,我们将采用该DIGITAL值,并将其与电压相关联,并在16 * 2显示屏中显示结果。显示屏上的该值表示可变电压值。
如图所示,ARDUINO有六个ADC通道。在这些情况下,它们中的任何一个或全部都可用作模拟电压的输入。UNO ADC的分辨率为10位(所以(0-(2 ^ 10)1023)中的整数值)。这意味着它将映射0到5伏之间的输入电压到0到1023之间的整数。 (5/1024 = 4.9mV)每单位。
在这里,我们将使用UNO的A0。
|
首先,UNO ADC通道的默认参考值为5V。这意味着我们可以在任何输入通道上为ADC转换提供5V的最大输入电压。由于某些传感器提供的电压范围为0-2.5V,使用5V基准电压时,我们获得的精度较低,因此我们有一条指令使我们能够更改该基准值。因此,对于更改参考值,我们有(“ analogReference();”),现在将其保留为。
默认情况下,我们获得的最大板载ADC分辨率为10位,可以使用指令(“ analogReadResolution(bits);”)更改此分辨率。在某些情况下,此分辨率更改可能会派上用场。现在,我们将其保留为。
现在,如果将上述条件设置为默认值,我们可以通过直接调用函数“ analogRead(pin);”从通道“ 0”的ADC读取值,这里的“ pin”代表我们连接模拟信号的引脚,在这种情况下将为“ A0”。
ADC的值可以取为一个整数,例如“ float VOLTAGEVALUE = AnalogRead(A0); ”,则该指令会将ADC之后的值存储在整数“ VOLTAGEVALUE”中。
UNO的PWM可以在PCB板上标为“〜”的任何引脚上实现。UNO中有六个PWM通道。我们将使用PIN3作为我们的目的。
AnalogWrite(3,VALUE); |
从上述情况我们可以直接在相应的引脚上获得PWM信号。括号中的第一个参数用于选择PWM信号的引脚号。第二个参数用于写入占空比。
可以将UNO的PWM值从0更改为255。将最低“ 0”更改为最高“ 255”。当占空比为255时,我们将在PIN3上获得5V。如果占空比为125,则PIN3上将获得2.5V
如前所述,有两个按钮连接到UNO的PIN4和PIN5。按下时,PWM的占空比值将增加。当按下另一个按钮时,PWM的占空比值减小。因此,我们要更改PIN3处的PWM信号的占空比。
PIN3上的此PWM信号被馈送到NPN晶体管的基极。该晶体管在充当发射器件的同时,在其发射极提供可变电压。
在基极具有可变占空比PWM的情况下,发射极输出将具有可变电压。有了这个,我们便有了一个可变电压源。
电压输出被馈送到UNO ADC,以供用户查看电压输出。