В този проект ще направим амперметър с малък обхват с помощта на микроконтролер ATMEGA8. В ATMEGA8 ще използваме 10bit ADC (Analog to Digital Conversion) функция, за да направим това. Въпреки че имаме няколко други начина за получаване на текущия параметър от верига, ще използваме метод на резистивен спад, тъй като това е най-лесният и най-простият начин за получаване на текущия параметър.
В този метод ще предадем тока, който трябваше да бъде измерен, на малко съпротивление, като по този начин получаваме спад през това съпротивление, което е свързано с протичащия през него ток. Това напрежение на съпротивлението се подава към ATMEGA8 за преобразуване ADC. С това ще имаме тока в цифрова стойност, който ще се показва на 16x2 LCD.
За това ще използваме верига на делителя на напрежението. Ще захранваме тока през пълния клон на съпротивлението. Средната точка на разклонението се измерва. При текущите промени ще има промяна в съпротивлението, което е линейно към него. Така че с това имаме напрежение, което се променя с линейност.
Сега е важно да се отбележи, че входът, взет от контролера за преобразуване на ADC, е само 50µAmp. Този ефект на натоварване на делител на напрежение, базиран на съпротивление, е важен, тъй като токът, извлечен от Vout на делителя на напрежението, увеличава процента на грешка, увеличава се, засега не е нужно да се тревожим за ефекта на натоварване
Необходими компоненти
Хардуер: ATMEGA8, захранване (5v), AVR-ISP PROGRAMMER, JHD_162ALCD (16 * 2LCD), 100uF кондензатор, 100nF кондензатор (4 броя), 100Ω резистор (7 броя) или 2.5Ω (2 броя), 100KΩ резистор.
Софтуер: Atmel studio 6.1, progisp или flash magic.
Електрическа схема и работно обяснение
Напрежението на R2 и R4 не е напълно линейно; ще бъде шумно. За да филтрират шума, кондензаторите се поставят през всеки резистор в разделителната верига, както е показано на фигурата.
В ATMEGA8 можем да дадем аналогов вход на всеки от ЧЕТИРИ канала на PORTC, няма значение кой канал ще изберем, тъй като всички са еднакви. Ще изберем канал 0 или PIN0 на PORTC. В ATMEGA8 ADC е с 10-битова разделителна способност, така че контролерът може да открие минимална промяна на Vref / 2 ^ 10, така че ако референтното напрежение е 5V, получаваме увеличение на цифровия изход за всеки 5/2 ^ 10 = 5mV. Така че за всеки 5mV прираст във входа ще имаме приращение от един при цифров изход.
Сега трябва да зададем регистъра на ADC въз основа на следните условия:
1. На първо място трябва да активираме функцията ADC в ADC.
2. Тук ще получите максимално входно напрежение за преобразуване ADC е + 5V. Така че можем да настроим максимална стойност или референция на ADC до 5V.
3. Контролерът има функция за преобразуване на задействане, което означава, че преобразуването на ADC се извършва само след външен спусък, тъй като не искаме да трябва да задаваме регистрите, за да може ADC да работи в режим на непрекъснат свободен ход.
4. За всеки ADC честотата на преобразуване (аналогова стойност в цифрова стойност) и точността на цифровия изход са обратно пропорционални. Така че за по-добра точност на цифровия изход трябва да изберем по-ниска честота. За нормален часовник ADC настройваме предварителната продажба на ADC на максимална стойност (2). Тъй като използваме вътрешния часовник от 1MHZ, часовникът на ADC ще бъде (1000000/2).
Това са единствените четири неща, които трябва да знаем, за да започнем с ADC.
Всички горни четири функции се задават от два регистъра,
ЧЕРВЕНО (ADEN): Този бит трябва да бъде настроен за активиране на функцията ADC на ATMEGA.
СИН (REFS1, REFS0): Тези два бита се използват за задаване на референтното напрежение (или максимално входно напрежение, което ще дадем). Тъй като искаме да имаме референтно напрежение 5V, от таблицата трябва да бъде зададен REFS0.
ЖЪЛТ (ADFR): Този бит трябва да бъде настроен, за да може АЦП да работи непрекъснато (режим на свободен ход).
PINK (MUX0-MUX3): Тези четири бита служат за казване на входния канал. Тъй като ще използваме ADC0 или PIN0, не е необходимо да задаваме никакви битове, както е показано в таблицата.
BROWN (ADPS0-ADPS2): тези три бита са за настройка на прескалара за ADC. Тъй като използваме прескалар от 2, трябва да зададем един бит.
ТЪМНО ЗЕЛЕНО (ADSC): този бит е зададен за ADC да започне преобразуване. Този бит може да бъде деактивиран в програмата, когато трябва да спрем преобразуването.