Mikrokontrolery AVR XMEGA w praktyce, część 21. Porównywanie napięcia

Przygotujemy dwa programy. Jeden bardzo prosty, żeby zaznajomić się z podstawami działania komparatora. Drugi będzie nieco bardziej praktyczny i będzie wykorzystywał peryferia, omówione w poprzednich odcinkach kursu – zobaczymy jak zrobić bardzo prosty miernik pojemności kondensatorów.

Pierwszy program będzie porównywać dwa napięcia:

  • napięcie z wbudowanego dzielnika podłączymy do wejścia odwracającego (–), a przy pomocy klawiszy 0 i 1 na płytce eXtrino XL będziemy mogli to napięcie regulować,
  • do wejścia nieodwracającego (+) podłączymy zewnętrzny potencjometr (o rezystancji w zakresie 1 k…100 k), którym będziemy mogli w sposób analogowy regulować napięcie. Środkowe wyprowadzenie potencjometru należy połączyć z pinem A6, a wyprowadzenia skrajne podłącz do zasilania 3V3 oraz masy GND.

Wynik porównania oraz ustalone napięcie z wbudowanego dzielnika będziemy monitorować na wyświetlaczu (użyłem wyświetlacz VFD 4×20, ale możesz zastosować dowolny wyświetlacz ze sterownikiem HD44780, co opisałem w odcinku 5).

Przejdźmy więc do programu, którego kod przedstawiono na listingu 1, a schemat układu przedstawiono na rysunku 1.

 

Rys. 1. Schemat układu demonstrującego działanie komparatora

 

Pierwsze dwie linijki funkcji main() to standardowa inicjalizacja wyświetlacza oraz PORTX. Następnie musimy skonfigurować komparator, wpisując odpowiednie bity do zaledwie trzech rejestrów. W rejestrze ACA.AC0MUXCTRL konfigurujemy, z którymi pinami lub źródłami napięcia referencyjnego mają być połączone wejście odwracające i nieodwracające komparatora o numerze 0. Wejście nieodwracające łączymy z pinem A6, natomiast wejście odwracające będzie połączone z wewnętrznym dzielnikiem napięcia.

W rejestrze ACA.CTRLB ustalamy 64-stopnowy dzielnik napięcia zasilającego. Możemy wybrać liczbę z przedziału od 0 do 63. Im wyższa to będzie liczba, tym wyższe napięcie uzyskamy. Uzyskana napięcie można wyliczyć z prostego wzoru:

 

Wynika stąd, że maksymalne napięcie, jakie możemy ustawić, wynosi Vcc, czyli 3,3 V. Natomiast napięcie minimalne to 1/64 napięcia Vcc, czyli ok. 0,05 V. Dostępny jest jeden dzielnik napięcia na oba komparatory w jednym porcie.

W ostatnim rejestrze, ACA.AC0CTRL, uruchamiamy komparator. Pamiętaj, że w XMEGA komparatory są domyślnie wyłączone, w przeciwieństwie do starych AVR-ów, gdzie po włączeniu zasilania komparator był domyślnie włączony (nie wiadomo po co).

Następnie, w pętli while(1) sprawdzamy, czy wciśnięte są przyciski 0 i 1, podłączone do PORTX. Jeśli tak, to odpowiednio zwiększamy lub zmniejszamy zawartość rejestru CTRLB, pamiętając, że jego zawartość może być liczbą z przedziału od 0 do 63. Dodatkowo, diody LED numer 0 i 1 będą się świecić, a kiedy odpowiadający im przycisk zostanie wciśnięty, diody będą mrugać.

Listing 1. Kod programu do pierwszego ćwiczenia

 

Dystrybutorem zestawu X3-DIL64 jest KAMAMI.pl.

 

Dominik Leon Bieczyński

www.leon-instruments.pl

Do pobrania

O autorze