Oddělovač sběrnice a čítač frekvence čerpán z webu autora Milana Krúpy: http://www.astromik.org/raspi/
K zalévacímu automatu jsem postavil snímač deště a potřebuji v Raspberry Pi vyhodnotit stavy vlhkosti. Snímač generuje kmitočet od 50Hz do 10 000Hz. Tato konstrukce používá obvod PCF8583 jako měřič frekvence a dva N-FET tranzistory jako oddělovač sběrnice I2C z 3.3V logiky na 5V logiku.
Schéma zapojení měřiče kmitočtu a oddělovače sběrnice z 3.3V na 5V
Plošný spoj
Osazovací plán
Seznam součástek:
označení | hodnota | GME ID | počet | cena ks | cena x ks |
Q1, Q2 | BS107 | 213-086 | 2 | 8,74 Kč | 17,48 Kč |
IC1 | PCF8583P | 433-039 | 1 | 67,00 Kč | 67,00 Kč |
JP1-JP6 | kolíková lišta | 832-017 | 2 | 4,93 Kč | 9,86 Kč |
DIL08PZ | patice 8 pinů DIL | 824-002 | 1 | 6,83 Kč | 6,83 Kč |
Popis konektorů na desce:
JP1 = Rezerva pro další obvod I2C na 3V logice
JP2 = Připojení desky počítače RPI I2C (3.3V, SDA, SCL, zem)
JP3 = Připojení A/D - D/A převodníku I2C PCF 8591 (3.3V, SDA, SCL, zem)
JP4 = Připojení obvodu reálného času I2C DS 1307 (5V, SDA, SCL, zem)
JP5 = Připojení LCD displeje přes obvod I2C PCF 8574 (5V, SDA, SCL, zem)
JP6 = Připojení dešťového senzoru (5V napájení snímače, vstup kmitočtu na I2C obvod PCF 8583, zem)
Čítač PCF 8583 má nastavenu I2C adresu 0x50 (A0 pin na GND), obvod je schopen počítat na vstupu pulzy do max. 1 miliónu pulzů (než přeteče). V PCF 8583 budeme měřit počet načítaných půlzů (10 KHz = 10 000 pulzů) a každou vteřinu si na sběrnici v programu RPI načteme aktuální hodnotu. Toto řešení nebude zatěžovat RPI tolik jako měření kmitočtu na portu GPIO. Na zavlažování trávníku již mám obvody RTC, A/D, LCD a tato deska je pouze rozšířením automatu o měření frekvence ze snímače vlhkosti (deště) a bezpečné oddělení I2C sběrnice od RPI.
Pro bezchybnou funkci I2C je nutné mít nainstalovanou v RPI podporu I2C viz tento článek.
Pokud budeme tento obvod používat s deskou zalévače trávníku, je nutné upravit desku spojů zalévače a to:
a) na desce zalévače přeřízneme spoje SCL a SDA mezi JP3 a JP4 (I2C 3.3V - 5V) tak jako na obrázku níže
b) na desce zalévače do konektoru JP4 (I2C 3.3V) zapojíme desku čítače (konektor I2C 3.3V)
c) na desce zalévače do konektrou JP3 (I2C 5V) zapojíme desku čítače (konektor I2C 5V)
Touto úpravou získame oddělení sběrnice (I2C 3.3V) od 5V logiky (obvod reálného času, LCD displej atd...)
Při správném zapojení bude vypadat tabulka nalezených I2C zařízení (po zadání příkazu sudo i2cdetect -y 1 ) následovně:
Nalezená adresa 0x50 je obvod čítače PCF8583.
V příloze pod článkem (pro registrované) je program pro Python (měření frekvence na vstupu PCF). Po spuštění programu v RPI se bude po vteřině vypisovat frekvence (v mém případě frekvence ze snímače deště za sucha a za mokra)
frekvence za sucha (0%)
frekvence za mokra (100%) - sensor hřeben ve vodě
frekvence při odpojeném snímači deště
Pro test jsem do pokojové květiny zasunul tuto pocínovanou sondu:
Sonda v provedení dvou plošek
S touto sondou jsem naměřil za "sucha" (hlína nebyla zcela vyschlá) tuto frekvenci:
Frekvence za "mokra" (zalitá hlína vodou) s touto sondou byla maximálně cca 7 KHz.
Tato sonda naměří při 100% vlhka cca 7 KHz
Tato sonda cca 10,5 KHz
Rozsah elektroniky snímače vlhkosti je cca 46-10500 Hz (sucho - mokro)
Tzn. naměřená fekvence (a tedy v mém případě vlhkost sensoru) bude záviset na ploše snímacího sensoru. Bude nutné si při daném použití zjistit kdy je jaká frekvence a tomuto údaji přizpůsobit kalibraci.