úterý 10. března 2026

PCF8591 AD/DA převodník

Použití PCF8591 AD/DA převodníku.



Vlastnosti a specifikace:

  • PCF8591 provozní napětí v rozsahu: 2,5V až 6V 
  • Komunikacepřes: I2C
  • 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 modulRaspberry Pi ZeroPoznámka
VCCPin 2 nebo 4 (5V) nebo Pin 1 (3.3V)Napájení modulu .
GNDPin 6, 9, 14, 20, 25, 30, 34 nebo 39 (GND)Společná zem .
SDAPin 3 (GPIO 2 / SDA)I2C datová linka .
SCLPin 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

  1. 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> .

  2. Instalace nástrojů: Nainstalujte si balíček pro práci s I2C: sudo apt-get install i2c-tools .

  3. 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:
    while True:
        # 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.