在这个项目中,我们将使用ATMEGA8微控制器制造一个低量程电流表。在ATMEGA8中,我们将使用10位ADC(模数转换)功能。尽管我们几乎没有其他方法可以从电路中获取电流参数,但我们将使用电阻降法,因为这是获取电流参数的最简单方法。
在这种方法中,我们将需要测量的电流传递给一个小的电阻,这样,与该电流流过的电阻有关的压降就会减小。电阻两端的电压馈入ATMEGA8进行ADC转换。这样,我们将获得数字量的电流值,该电流值将显示在16x2 LCD上。
为此,我们将使用分压器电路。我们将通过完整的电阻支路馈入电流。分支的中点被测量。当电流变化时,电阻的压降将线性变化。因此,有了这个电压,它随线性变化。
现在要注意的重要一点是,控制器用于ADC转换的输入低至50µAmp。基于电阻的分压器的这种负载效应非常重要,因为从分压器的Vout汲取的电流会增加误差百分比,因此现在我们不必担心负载效应。
所需组件
硬件: ATMEGA8,电源(5v),AVR-ISP编程器,JHD_162ALCD(16 * 2LCD),100uF电容器,100nF电容器(4个),100Ω电阻(7个)或2.5Ω(2个),100KΩ电阻。
软体: Atmel studio 6.1,progisp或flash magic。
电路图和工作说明
R2和R4两端的电压不是完全线性的。会很吵。为了滤除噪声,如图所示,在分压器电路中的每个电阻器之间放置电容器。
在ATMEGA8中,我们可以为PORTC的四个通道中的任何一个提供模拟输入,因为选择的是相同的通道并不重要。我们将选择PORTC的通道0或PIN0。在ATMEGA8中,ADC的分辨率为10位,因此控制器可以检测到Vref / 2 ^ 10的最小变化,因此,如果参考电压为5V,则每5/2 ^ 10 = 5mV,我们将获得一个数字输出增量。因此,对于输入中的每5mV增量,数字输出中的增量为1。
现在,我们需要根据以下术语设置ADC的寄存器:
1.首先,我们需要在ADC中启用ADC功能。
2.这里将获得用于ADC转换的最大输入电压为+ 5V。因此我们可以将ADC的最大值或基准设置为5V。
3.控制器具有触发转换功能,这意味着ADC转换仅在外部触发之后发生,因为我们不希望将ADC的寄存器设置为在连续自由运行模式下运行。
4.对于任何ADC,转换频率(模拟值到数字值)和数字输出的精度成反比。因此,为了获得更好的数字输出精度,我们必须选择较小的频率。对于正常的ADC时钟,我们将ADC的预售设置为最大值(2)。由于我们使用的是1MHZ的内部时钟,因此ADC的时钟为(1000000/2)。
这是我们开始使用ADC所需了解的仅有的四件事。
以上所有四个功能均由两个寄存器设置,
红色(ADEN):必须将该位置1以启用ATMEGA的ADC功能。
BLUE(REFS1,REFS0):这两位用于设置参考电压(或我们将要提供的最大输入电压)。由于我们希望参考电压为5V,因此应通过下表设置REFS0。
黄色(ADFR):必须将该位置1,ADC才能连续运行(自由运行模式)。
PINK(MUX0-MUX3):这四个位用于告知输入通道。由于我们将使用ADC0或PIN0,因此无需像表中那样设置任何位。
棕色(ADPS0-ADPS2):这三个位用于设置ADC的预分频器。由于我们使用的是2的预分频器,因此我们必须设置一位。
暗绿色(ADSC):该位置1使ADC开始转换。当我们需要停止转换时,可以在程序中禁用该位。