- Wymagane komponenty
- Moduł PCF8591 ADC / DAC
- Piny I2C w Raspberry Pi
- Połączenie modułu ADC / DAC PCF8591 z Raspberry Pi
- Program w Pythonie do konwersji analogowo-cyfrowej (ADC)
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 nauczymy się jak połączyć moduł ADC / DAC PCF8591 z Raspberry Pi.
Wymagane komponenty
- Raspberry-pi
- Moduł ADC PCF8591
- 100K Pot
- Kable rozruchowe
Zakłada się, że masz Raspberry Pi z zainstalowanym najnowszym systemem operacyjnym Raspbian i wiesz, jak połączyć się przez SSH z Pi za pomocą oprogramowania terminalowego, takiego jak kit. Jeśli jesteś nowy w Raspberry Pi, postępuj zgodnie z tym artykułem, aby rozpocząć pracę z Raspberry Pi. Jeśli jednak napotkasz jakiś problem, istnieje mnóstwo samouczków Raspberry Pi, które mogą pomóc.
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 / fotorezystoraa J6 jest podłączony w celu wybrania regulowanego obwodu dostępu do napięcia. 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.
Piny I2C w Raspberry Pi
Aby używać PCF8591 z Raspberry Pi, pierwszą rzeczą do zrobienia jest poznanie pinów portu I2C Raspberry Pi i skonfigurowanie portu I2C w Raspberry pi.
Poniżej znajduje się schemat pinów Raspberry Pi 3 Model B +, a piny I2C GPIO2 (SDA) i GPIO3 (SCL) są używane w tym samouczku.
Konfiguracja I2C w Raspberry Pi
Domyślnie I2C jest wyłączone w Raspberry Pi. Więc najpierw musi być włączony. Aby włączyć I2C w Raspberry Pi
1. Przejdź do terminala i wpisz sudo raspi-config.
2. Teraz pojawi się narzędzie konfiguracyjne oprogramowania Raspberry Pi.
3. Wybierz opcje interfejsu, a następnie włącz I2C.
4. Po włączeniu I2C zrestartuj Pi.
Skanowanie adresu I2C PCF8591 przy użyciu Raspberry Pi
Teraz, aby rozpocząć komunikację z układem PCF8591, Raspberry Pi musi znać jego adres I2C. Aby znaleźć adres, najpierw podłącz piny SDA i SCL PCF8591 do pinów SDA i SCL Raspberry Pi. Podłącz również piny + 5V i GND.
Teraz otwórz terminal i wpisz poniższe polecenie, aby poznać adres podłączonego urządzenia I2C, sudo i2cdetect –y 1 lub sudo i2cdetect –y 0
Po znalezieniu adresu I2C przyszedł czas na zbudowanie układu i zainstalowanie niezbędnych bibliotek do korzystania z PCF8591 z Raspberry Pi.
Połączenie modułu ADC / DAC PCF8591 z Raspberry Pi
Schemat połączeń dla połączenia PCF8591 z Raspberry Pi jest prosty. W tym przykładzie interfejsu odczytamy wartości analogowe z dowolnego z pinów analogowych i pokażemy je na terminalu Raspberry Pi. Wartości możemy zmienić używając puli 100K.
Podłącz VCC i GND do GPIO2 i GPIO Raspberry Pi. Następnie podłącz SDA i SCL odpowiednio do GPIO3 i GPIO5. Na koniec połącz pulę 100K z AIN0. Możesz także dodać wyświetlacz LCD 16x2, aby wyświetlać wartości ADC zamiast pokazywać je na terminalu. Dowiedz się więcej o łączeniu 16x2 LCD z Raspberry Pi tutaj.
Program w Pythonie do konwersji analogowo-cyfrowej (ADC)
Kompletny program roboczy i wideo jest podany na końcu tego poradnika.
Po pierwsze, zaimportuj bibliotekę smbus do komunikacji magistrali I 2 C oraz bibliotekę czasu, aby określić czas uśpienia między wydrukowaniem wartości.
import smbus czas importu
Teraz zdefiniuj kilka zmiennych. Pierwsza zmienna zawiera adres magistrali I 2 C, a druga zmienna adres pierwszego analogowego pinu wejściowego.
adres = 0x48 A0 = 0x40
Następnie stworzyliśmy obiekt funkcji SMBus (1) biblioteki smbus
bus = smbus.SMBus (1)
Teraz, podczas gdy pierwsza linia mówi układowi scalonemu, aby dokonał pomiaru analogowego na pierwszym analogowym pinie wejściowym. Druga linia przechowuje adres odczytany z pinu analogowego w zmiennej wartości . Na koniec wydrukuj wartość.
while True: bus.write_byte (adres, A0) value = bus.read_byte (adres) print (wartość) time.sleep (0.1)
Teraz w końcu zapisz kod Pythona w jakimś pliku z.py entension i uruchom kod w terminalu Raspberry Pi za pomocą poniższego polecenia ”
nazwa_pliku pythona.py
Przed uruchomieniem kodu upewnij się, że masz włączoną komunikację I 2 C i wszystkie piny są połączone jak na schemacie, w przeciwnym razie pokaże błędy. Wartości analogowe muszą zacząć pojawiać się na terminalu, jak poniżej. Ustaw pokrętło potencjometru, a zobaczysz stopniową zmianę wartości. Dowiedz się więcej o uruchamianiu programu w
Pełny kod Pythona i wideo są podane poniżej.