4 analogové vstupy programovatelné jako single-ended nebo diferenciální vstupy
Automatický inkrementální výběr kanálu
Analogové napětí v rozsahu: od VSS do VDD
8-bit aproximační A / D převodník
Analogový D / A Převodník
Specialitou tohoto modulu je přítomnost několika součástek pro využití všech funkcí. Na modulu se totiž nachází termistor připojený na pin AIN1, fotorezistor připojený na pin AIN0 a trimr připojený na pin AIN3. Pokud bychom ale chtěli připojit vlastní zařízení, můžeme všechny tři součástky odpojit pomocí propojek na modulu, kdy propojka P4 odpovídá termistoru, P5 odpovídá fotorezistoru a P6 odpovídá trimru. Co se týká výstupu AOUT, tak ten je trvale zapojen na zelenou diodu na modulu.
Jak to funguje
Raspberry Pi Zero (stejně jako ostatní modely) nemá vlastní analogové vstupy. PCF8591 funguje jako externí převodník, který analogové napětí z termistoru převede na digitální hodnotu a pošle ji do Pi přes I2C rozhraní.
Zapojení
Pokud používáte modul s PCF8591 (často osazený i dalšími součástkami), je zapojení jednoduché:
PCF8591 modul
Raspberry Pi Zero
Poznámka
VCC
Pin 2 nebo 4 (5V) nebo Pin 1 (3.3V)
Napájení modulu .
GND
Pin 6, 9, 14, 20, 25, 30, 34 nebo 39 (GND)
Společná zem .
SDA
Pin 3 (GPIO 2 / SDA)
I2C datová linka .
SCL
Pin 5 (GPIO 3 / SCL)
I2C hodinová linka .
Nejdůležitější bod: Pokud má váš modul jumper (propojku) označenou jako P4, musí být nasazená. Ta propojuje vestavěný termistor s jedním ze vstupů (obvykle AIN2) . Pokud chcete použít vlastní externí termistor, tuto propojku naopak sundejte a svůj termistor připojte například na vstup AIN0.
Softwarová příprava a test
Povolení I2C: Než začnete, musíte v Raspberry Pi OS rozhraní I2C zapnout. Spusťte sudo raspi-config, přejděte do Interface Options -> I2C a vyberte <Yes>.
Instalace nástrojů: Nainstalujte si balíček pro práci s I2C: sudo apt-get install i2c-tools.
Ověření adresy: Po zapojení modulu spusťte příkaz sudo i2cdetect -y 1. Měli byste vidět zařízení s adresou 0x48. Tím potvrdíte správné zapojení a funkčnost modulu.
Ukázkový Python kód
Následující kód načítá hodnotu z termistoru (připojeného na vstup AIN2) každou sekundu.
python
import smbus
import time
# Adresa PCF8591 zjištěná příkazem i2cdetect
address =0x48# Příkazy pro jednotlivé analogové vstupy
A0 =0x40
A1 =0x41
A2 =0x42# Pro termistor (jumper P4)
A3 =0x43# Inicializace I2C sběrnice (1 pro revize Pi s 512MB RAM a vice)
bus = smbus.SMBus(1)print("Čtení hodnot z termistoru...")try:whileTrue:# Vybereme vstup A2 pro čtení
bus.write_byte(address, A2)# Přečteme hodnotu (8-bit, 0-255)# Pro správné čtení je často potřeba číst dvakrát [citation:6]
bus.read_byte(address)
value = bus.read_byte(address)print(f"Hodnota ze senzoru: {value} (z rozsahu 0-255)")
time.sleep(1)except KeyboardInterrupt:print("\nUkonceno uzivatelem.")
Pro spuštění kódu ho uložte jako termistor.py a spusťte v terminálu příkazem python3 termistor.py. Výstupem budou číselné hodnoty od 0 do 255, které se mění s teplotou.
Důležité upozornění
Mějte na paměti, že PCF8591 je 8bitový převodník. To znamená, že výstupní hodnota je v rozsahu 0-255, což poskytuje pouze 256 úrovní rozlišení. Pro běžné pokusy a sledování teploty to bohatě stačí, ale pro přesná a profesionální měření by byl vhodnější 12bitový nebo 16bitový převodník (např. ADS1115) .
Žádné komentáře:
Okomentovat
Poznámka: Komentáře mohou přidávat pouze členové tohoto blogu.
Žádné komentáře:
Okomentovat
Poznámka: Komentáře mohou přidávat pouze členové tohoto blogu.