Konwersja analogowo-cyfrowa jest bardzo ważnym zadaniem we wbudowanej elektronice, ponieważ większość czujników dostarcza wartości analogowe i podaje je do mikrokontrolera, który rozumie tylko wartości binarne, musimy przekonwertować je na wartości cyfrowe. Aby móc przetwarzać dane analogowe, mikrokontrolery potrzebują przetwornika analogowo-cyfrowego.
Niektóre mikrokontrolery mają wbudowany ADC, takie jak Arduino, MSP430, PIC16F877A, ale niektóre mikrokontrolery nie mają go tak, jak 8051, Raspberry Pi itp. I musimy użyć zewnętrznych układów scalonych konwertera analogowo-cyfrowego, takich jak ADC0804, ADC0808. Poniżej znajdziesz różne przykłady ADC z różnymi mikrokontrolerami:
- Jak korzystać z ADC w Arduino Uno?
- Samouczek Raspberry Pi ADC
- Połączenie ADC0808 z mikrokontrolerem 8051
- Woltomierz cyfrowy 0-25 V za pomocą mikrokontrolera AVR
- Jak korzystać z ADC w STM32F103C8
- Jak korzystać z ADC w MSP430G2
- Jak korzystać z ADC w ARM7 LPC2148
- Korzystanie z modułu ADC mikrokontrolera PIC z MPLAB i XC8
W tym samouczku sprawdzimy, jak połączyć moduł ADC / DAC PCF8591 z Arduino.
Wymagane komponenty
- Arduino UNO
- Moduł ADC PCF8591
- 100K Pot
- Kable rozruchowe
Moduł PCF8591 ADC / DAC
PCF8591 to 8-bitowy przetwornik analogowo-cyfrowy lub 8-bitowy przetwornik cyfrowo-analogowy, co oznacza, że każdy pin może odczytywać wartości analogowe do 256. Posiada również LDR i obwód termistora na płycie. Ten moduł ma cztery wejścia analogowe i jedno wyjście analogowe. Działa na komunikacji I 2 C, więc są piny SCL i SDA dla zegara szeregowego i szeregowego adresu danych. Wymaga napięcia zasilania 2,5-6 V i ma niski prąd spoczynkowy. Możemy także manipulować napięciem wejściowym, regulując pokrętłem potencjometru na module. Na planszy są również trzy zworki. J4 jest podłączony, aby wybrać obwód dostępu do termistora, J5 jest podłączony, aby wybrać obwód dostępu LDR / fotorezystora a J6 jest podłączony w celu wybrania regulowanego obwodu dostępu do napięcia. Aby uzyskać dostęp do tych obwodów, musisz użyć adresów tych zworek: 0x50 dla J6, 0x60 dla J5 i 0x70 dla J4. Na płycie znajdują się dwie diody LED D1 i D2-D1, które pokazują natężenie napięcia wyjściowego, a D2 - natężenie napięcia zasilania. Im wyższe napięcie wyjściowe lub zasilanie, tym wyższa intensywność diody LED D1 lub D2. Możesz również przetestować te diody za pomocą potencjometru na VCC lub na pinie AOUT.
Połączenie modułu ADC / DAC PCF8591 z Arduino
Kompletny program roboczy i wideo jest podany na końcu tego poradnika.
Najpierw musimy zdefiniować bibliotekę do komunikacji I 2 C i wyświetlacza LCD.
#zawierać
Następnie zdefiniuj kilka makr. Pierwsze makro służy do określenia adresu szyny danych dla układu scalonego, drugie makro służy do określenia adresu pierwszego pinu wejściowego modułu, na którym podane jest wejście z potencjometru.
# zdefiniować PCF8591 (0x90 >> 1) # zdefiniować AIn0 0x00
Następnie określamy połączenia pinów LCD z Arduino i inicjalizujemy wartość jaką otrzymujemy na pinie analogowym.
const int rs = 12, en = 11, d4 = 5, d5 = 4, d6 = 3, d7 = 2; LiquidCrystal lcd (rs, en, d4, d5, d6, d7); int Wartość = 0;
Teraz przejdźmy do funkcji konfiguracji . Tutaj, w pierwszej linii zainicjowaliśmy komunikację I 2 C. W drugiej linii zainicjowaliśmy wyświetlacz LCD, na którym drukujemy wartości analogowe. Dowiedz się więcej o połączeniu wyświetlacza LCD 16x2 z Arduino tutaj.
void setup () { Wire.begin (); lcd.begin (16,2); }
W funkcji pętli pierwsza linia ma rozpocząć transmisję, czyli uruchamia PCF8591. Druga linia mówi układowi scalonemu, aby wykonał pomiar analogowy na pierwszym styku wejścia analogowego. Trzecia linia kończy transmisję, a czwarta linia pobiera zmierzone dane z pinu analogowego.
void loop () { Wire.beginTransmission (PCF8591); Wire.write (AIn0); Wire.endTransmission (); Wire.requestFrom (PCF8591, 1);
W dalszej części wstaw wartość odczytaną z pinu analogowego do zdefiniowanej wcześniej zmiennej Value . W następnych wierszach wydrukuj tę wartość na wyświetlaczu LCD.
Wartość = Wire.read (); lcd.print ("Wartość ADC ="); lcd.print (wartość); opóźnienie (500); lcd.clear ();}
Na koniec prześlij kod do Arduino i uruchom go. Wartości analogowe zaczną pojawiać się na wyświetlaczu LCD. Ustaw pokrętło potencjometru, a zobaczysz stopniową zmianę wartości.