Kurs Arduino #7: Obsługa przetwornika A/C

W dzisiejszej części poradnika dowiemy się jak korzystać z przetwornika A/C (ADC) oraz pokażę parę prostych przykładów jego wykorzystania. Zapraszam ;)

Zanim na dobre zaczniemy tę część kursu to chciałbym zrobić wstęp, aby początkujący w temacie elektroniki się nie zgubili. W elektronice występują dwa pojęcia takie jak elektronika cyfrowa oraz elektronika analogowa. Elektronika cyfrowa mówiąc najprościej to jest odczyt „jedynek i zer”, czyli albo coś jest albo czegoś nie ma i nic poza tym nie istnieje. W poprzednich częściach kursu uczyliśmy się zapalać i gasić diody za pomocą przycisków- Jak przycisk był wciśnięty to diody się zapalały, a jak nie był wciśnięty to się nie zapalały i to był właśnie przykład elektroniki cyfrowej.
Natomiast elektronika analogowa pozwala nam odczyt „wartości zawartych pomiędzy zero i jeden”. Czyli na przykład jakbyśmy zamienili nasz przycisk tensometr to moglibyśmy odczytywać nie tylko zero i jeden, ale również z jaką siłą jest on wciskany (takie właśnie tensometry wykorzystywane są w kontrolerach od Playstation 2 wzwyż oraz od Xbox Original wzwyż, ale to taka ciekawostka). A przetwornik A/C pozwala nam połączyć te dwa światy, elektroniki analogowej i elektroniki cyfrowej, że przy pomocy np. potencjometru podłączonego do Arduino jesteśmy w stanie odczytać wartość napięcia występującego na nim oraz przy jego pomocy kontrolować prędkość kręcenia się wiatraka, świecenia diody itp.

Spis treści:

  1. Co to jest przetwornik A/C i jak działa
  2. Sposób odczytu danych z przetwornika A/C
  3. Przykłady wykorzystania przetwornika A/C

 

1. Co to jest przetwornik ADC i jak działa

Żeby za mocno się nie zagłębić w temat przetworników ADC czy też A/C to powiem w skrócie czym to jest i na jakiej zasadzie działa. Zatem przetwornik A/C to układ, który pozwala odczytać syngał analogowy; w tym przypadku wartość napięcia, gdzie w Arduino, wartość ta wynosi maksymalnie 5V (przy bezpośrednim podłączeniu sygnału do Arduino), a następnie przetworzyć go na sygnał cyfrowy w postaci zer i jedynek.
Dokładność przetwornika określa się rozdzielczością (ilością bitów) oraz czasem przetwarzania. Przetwornik w Arduino z mikrokontrolerem ATmega328 jest 10 bitowy co oznacza 210 co daje nam 1024 poziomów odczytu. Jeżeli podzielimy:

5V / 1024 poziomów = 0,00488V ~4,9mV

to wychodzi nam, że 1 poziom ma wartość 4,9mV, a na 1V przypada ~205 poziomów (204,8). Natomiast czas przetwarzania to 10 000 pomiarów na sekundę (1 pomiar = 0,0001s). Tyle teorii odnośnie przetwornika A/C.

2. Sposób odczytu danych z przetwornika A/C

Kanały przetwornika w Arduino znajdują się pod opisem „Analog In„.

arduino AC

Do pinów A0 – A5 podłączamy peryferia z których chcemy odczytać wartości „analogowe” czyli np. potencjometr, fotorezystor, tensometr itd.

Funkcja, która służy do odczytu wartości z przetwornika to analogRead(), którą mogliśmy już poznać w części 5. PWM. Zatem dla przypomnienia:

Aby odczytać wartość z A/C to używamy funkcji analogRead():

Okej to przejdźmy zatem do praktyki. Stworzymy najprostszy program, gdzie zmieniać będziemy zmieniać wartość potencjometra, która to z kolei będzie wysyłana po UART.

kurs 7.1

Na początku tworzymy alias naszego pinu od przetwornika A/C o nazwie „potencjometr” oraz zmienną „war„, w której będziemy przechowywać naszą wartość z przetwornika. Następnie ustawiamy pin potencjometra jako wejście oraz prędkość transmisji UART na 9600 baud dla łatwiejszego odczytu danych.
W pętli głównej programu przypisujemy zmiennej „war” odczyt danych z potencjometru podłączonego do pinu A0, Następnie po UART wysyłamy napis „Wartosc A/C: „, a następnie po niej wartość naszego potencjometru po czym odczekujemy 200ms. Po wgraniu programu, otwieramy monitor portu szeregowego, oraz kręcimy potencjometrem.

UART 7.1