Wiele czujników stosowanych w elektronice nadal udostępnia sygnał analogowy: napięcie proporcjonalne do temperatury, natężenia światła, położenia potencjometru czy ciśnienia. Mikrokontroler albo komputer jednopłytkowy musi taki sygnał najpierw zamienić na wartość cyfrową. Do tego służy przetwornik analogowo-cyfrowy, czyli ADC. Jednym z najpopularniejszych układów w tej roli jest MCP3008 firmy Microchip.

MCP3008 jest szczególnie wygodny w projektach z Raspberry Pi, ponieważ Raspberry Pi nie ma wbudowanych wejść analogowych, a układ komunikuje się przez standardowy interfejs SPI. Jest tani, prosty do uruchomienia i działa zarówno w systemach 3,3 V, jak i 5 V. Poniżej omawiamy wyprowadzenia, najważniejsze parametry oraz praktyczne zastosowania tego przetwornika.

Wyprowadzenia MCP3008

MCP3008 ma 16 wyprowadzeń. Osiem z nich to wejścia analogowe CH0-CH7, a pozostałe służą do zasilania, napięcia odniesienia oraz komunikacji SPI z mikrokontrolerem lub komputerem jednopłytkowym.

(Na ilustracji pokazano układ wyprowadzeń MCP3008).

Funkcje i parametry

Najważniejsze parametry MCP3008 są następujące.

Układ jest 8-kanałowym, 10-bitowym przetwornikiem analogowo-cyfrowym.

Komunikacja odbywa się przez prosty interfejs szeregowy zgodny z SPI.

Zakres napięcia zasilania wynosi od 2,7 V do 5,5 V.

Maksymalna szybkość próbkowania wynosi 75 ksps przy zasilaniu 2,7 V oraz 200 ksps przy zasilaniu 5 V.

Konwersja odbywa się metodą kolejnych przybliżeń, czyli SAR.

Dostępne są typowe obudowy 16-wyprowadzeniowe, między innymi PDIP i SOIC.

Wejścia analogowe można skonfigurować jako osiem wejść single-ended albo cztery pary pseudo-różnicowe.

Układ ma wbudowany obwód próbkowania i podtrzymania, potrzebny do stabilnej konwersji.

Technologia CMOS pozwala utrzymać niski pobór prądu, co ma znaczenie w urządzeniach bateryjnych.

Typowy prąd w trybie czuwania wynosi około 5 nA.

Typowy prąd aktywny jest liczony w setkach mikroamperów, zależnie od napięcia zasilania i warunków pracy.

(Przetworniki ADC i DAC pracują w przeciwnych kierunkach: ADC zamienia sygnał analogowy na cyfrowy, a DAC cyfrowy na analogowy).

Odpowiednik MCP3008

PCF8591 może pełnić podobną funkcję w prostych aplikacjach, ale ma inne parametry i inny interfejs, dlatego nie jest bezpośrednim zamiennikiem pin-to-pin dla MCP3008.

Alternatywne układy ADC

Jeżeli projekt wymaga innej rozdzielczości, liczby kanałów albo interfejsu, warto rozważyć także inne przetworniki ADC.

ADC0804

ADC0808

ADS1115

Gdzie stosuje się MCP3008

MCP3008 mierzy napięcie analogowe na wybranym kanale i przesyła wynik cyfrowy do mikrokontrolera przez SPI. Dzięki zasilaniu w zakresie 2,7-5,5 V może współpracować z logiką 3,3 V i 5 V, więc dobrze pasuje zarówno do Raspberry Pi, jak i do wielu płytek Arduino oraz innych układów sterujących.

(Raspberry Pi korzysta z logiki 3,3 V i nie ma natywnych wejść analogowych).

Jak podłączyć MCP3008 do płytki

Najpierw trzeba zasilić ADC napięciem z dopuszczalnego zakresu, czyli od 2,7 V do 5,5 V. Napięcie odniesienia VREF nie powinno przekraczać napięcia zasilania VDD, ponieważ to ono wyznacza górną granicę mierzonego zakresu. W prostym układzie VREF często łączy się z VDD.

Kanały CH0-CH7 przyjmują mierzone sygnały analogowe. Każdy kanał ma rozdzielczość 10 bitów, więc wynik mieści się w zakresie od 0 do 1023. Jeżeli VREF wynosi 5 V, napięcie 0 V odpowiada wartości 0, a napięcie bliskie 5 V odpowiada wartości 1023. Przy VREF równym 3,3 V pełna skala kończy się odpowiednio przy 3,3 V.

Po wykonaniu konwersji mikrokontroler odczytuje wynik przez SPI. W praktyce trzeba połączyć linie SCLK, DIN, DOUT i CS/SHDN z odpowiednimi pinami SPI po stronie mikrokontrolera oraz zadbać o wspólną masę. Wejścia analogowe nie powinny otrzymywać napięcia wyższego niż VREF ani niż zasilanie układu.

https://youtu.be/c93uOK7TLsA

(Krótki samouczek wideo pokazujący podłączenie MCP3008 do Raspberry Pi).

(Konwersja analogowo-cyfrowa pozwala zamienić sygnał z czujnika na dane możliwe do przetworzenia w programie).

Zastosowania układu MCP3008

MCP3008 najczęściej stosuje się tam, gdzie układ cyfrowy musi odczytać kilka sygnałów analogowych.

Układ sprawdza się jako interfejs dla czujników analogowych.

Może pracować w prostych systemach akwizycji danych.

Jest przydatny w sterowaniu procesami, w których trzeba mierzyć napięcie z czujnika albo elementu nastawczego.

Niski pobór prądu ułatwia wykorzystanie go w urządzeniach zasilanych bateryjnie.

Może też pełnić rolę zewnętrznego modułu ADC dla płytek pozbawionych wejść analogowych.

Jest szczególnie popularny w projektach edukacyjnych i prototypach opartych na Raspberry Pi, Arduino oraz innych płytkach rozwojowych.

(Ilustracja przetwornika ADC zamieniającego sygnał analogowy na cyfrowy).

Podsumowanie

MCP3008 to 8-kanałowy, 10-bitowy przetwornik ADC z interfejsem SPI. Dobrze nadaje się do systemów wbudowanych, w których trzeba szybko dodać odczyt sygnałów analogowych bez komplikowania projektu.

Jeżeli projektujesz płytkę z MCP3008 lub innym układem ADC, zwróć uwagę na prowadzenie masy, stabilność napięcia odniesienia, separację ścieżek analogowych od szybkich sygnałów cyfrowych oraz dobór obudowy pod planowany montaż. OurPCB może pomóc w przygotowaniu PCB, montażu prototypów i produkcji seryjnej zgodnie z wymaganiami projektu.