SUM - instrukcja lab4 - ADC - Zakład Urządzeń Mechatronicznych

Transkrypt

SUM - instrukcja lab4 - ADC - Zakład Urządzeń Mechatronicznych
Politechnika Poznańska
Wydział Budowy Maszyn i Zarządzania
Sterowniki Urządzeń Mechatronicznych – laboratorium
Ćw. 4: ADC
1) Cel ćwiczenia
Celem ćwiczenia jest zapoznanie się z moŜliwościami pomiaru wartości analogowych za pomocą
wewnętrznego przetwornika analogowo cyfrowego ADC mikrokontrolerów serii AVR.
2) Zakres niezbędnych wiadomości
- Rola sygnału odniesienia AREF w pomiarach ADC (w literaturze moŜna spotkać takŜe pod nazwą VREF)
- MoŜliwe źródła sygnału odniesienia AREF w mikrokontrolerach serii AtMega.
- Rola multipleksera w pomiarach ADC i ograniczenia wynikające z jego stosowania.
- Umiejętność obliczenia częstotliwości pracy ADC znając wartość prescalera przetwornika.
- Umiejętność obliczenia 10-bitowego wyniku końcowego (jednostka Wolt) znając bezwymiarową wartość
odczytaną z ADC w rejestrach wynikowych 8-bitowych ADCH i ADCL.
- Umiejętność poprawnego podłączenia na schemacie elektrycznym przetwornika ADC mikrokontrolera
AVR.
Rejestry i bity sterujące uŜywane podczas ćwiczeń do konfiguracji ADC:
ADMUX: REFS0, REFS1, REFS2,
ADCSRA: ADEN, ADIE, ADFR, ADPS0, ADPS1, ADPS2, ADSC
Przerwanie od ADC:
SIGNAL (SIG_ADC)
{
…
}
3) Opis ćwiczenia
Podczas ćwiczenia student ma za zadanie podłączyć prawidłowo potencjometr rezystancyjny do kanału
ADC mikrokontrolera na płytce PCB i zrealizować aplikację pomiarową mierzącą sygnał analogowy
uzyskany z potencjometru.
Politechnika Poznańska
Wydział Budowy Maszyn i Zarządzania
Sterowniki Urządzeń Mechatronicznych – laboratorium
Ćw. 4: ADC
4) Przebieg ćwiczenia
Podłączyć potencjometr i zrealizować pomiar napięcia z potencjometru.
Wynik zaprezentuj za pomocą 3 pozycyjnego paska diodowego wykorzystując diody D2-D4.
Jako wejście analogowe wykorzystać kanał ADC0, co uniemoŜliwi nam korzystanie z diody D1.
#include <avr/io.h>
#include <avr/interrupt.h>
//======================================================
void ADC_Init(void)
//nasza własna funkcja w której umieścimy konfigurację ADC
{
ADMUX |=(1<<REFS0); //AREF pobierane z AVCC (zakładamy 5V)
ADMUX&=~(1<<REFS1); //AREF pobierane z AVCC (zakładamy 5V)
ADCSRA|=(1<<ADEN);
//adc enable
ADCSRA|=(1<<ADIE);
ADCSRA&=~(1<<ADFR);
//przerywaj przerwaniem gdy zakończy się pomiar ADC
//free runing mode
ADCSRA …=…(1<<ADPS0); //ustawiamy prescaler (sprawdzić w nocie katalogowej moŜliwe wartości)
ADCSRA …=…(1<<ADPS1); //ustawiamy prescaler (sprawdzić w nocie katalogowej moŜliwe wartości)
ADCSRA …=…(1<<ADPS2); //ustawiamy prescaler (sprawdzić w nocie katalogowej moŜliwe wartości)
ADCSRA|=(1<<ADSC);
//start konwersji
}
//======================================================
int wynik;
//tworzymy zmienną w której będziemy zapisywać wynik
//======================================================
SIGNAL(SIG_ADC)
//obsługa przerwania od ADC
{
//odczytujemy wynik z rejestrów ADCL i ADCH i zapisujemy go w zmiennej wynik.
wynik = ADCH … … ADCL;
//w miejscu kropek … umieścić odpowiednie działania matematyczne
if (wynik>…)
else
… //zapal D1
… //zgas D1
if (wynik>…)
else
… //zapal D2
… //zgas D2
if (wynik>…)
else
… //zapal D3
… //zgas D3
if (wynik>…)
else
… //zapal D4
… //zgas D4
ADCSRA|=(1<<ADSC);
//start ponownej konwersji ADC
}
//======================================================
void main(void)
{
//konfiguracja kierunków portów DDR (diody jako WY, kanał ADC jako WE)
DDR… = …
DDR… = …
sei();
//globalne zezwolenie na przerwania
ADC_Init();
//wywołanie funkcji konfigurującej ADC
while(1)
//pętla główna
{
//CPU nie ma tu nic do roboty. Wszystko dzieje się w przerwaniu
}
}
Politechnika Poznańska
Wydział Budowy Maszyn i Zarządzania
Sterowniki Urządzeń Mechatronicznych – laboratorium
Ćw. 4: ADC
5) Sprawozdanie
Sprawozdanie powinno zawierać:
- schematy hardware do kaŜdego wykonanego zadania w ramach ćwiczeń
- pod kaŜdym schematem powinien się znajdować opis i ewentualne wnioski
- program, jaki grupa napisała na zajęciach
- za kaŜdą linijką programu, jeŜeli będzie taka potrzeba, naleŜy umieścić bieŜący komentarz na temat danej
linijki kodu
- pod kaŜdym programem naleŜy umieścić własny opis działania programu i wnioski
- obliczenia częstotliwości pracy ADC uŜytego w zadaniu
- omówienie wzoru, jaki został uŜyty, aby obliczyć w jednostkach [wolt] wynik pomiaru ADC
- ogólne wnioski i spostrzeŜenia na temat wykonanego ćwiczenia i zdobytej wiedzy