Moje Raspberry Pi - I2C čítač a oddělovač sběrnice

raspipidi

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.

 schemaimage

Schéma zapojení měřiče kmitočtu a oddělovače sběrnice z 3.3V na 5V

pcbimage

Plošný spoj

pcbimageosazovak

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č

IMG 20140228 063431

 

IMG 20140228 063440

 

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

IMG 20140228 063211

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)

IMG 20140228 063546

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ě:

 i2c detect

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)

se snimacem

frekvence za sucha (0%)

max

frekvence za mokra (100%) - sensor hřeben ve vodě

puls bez sensoru

frekvence při odpojeném snímači deště

Pro test jsem do pokojové květiny zasunul tuto pocínovanou sondu:

IMG 20140228 063312IMG 20140228 063322

Sonda v provedení dvou plošek

IMG 20140228 070238

S touto sondou jsem naměřil za "sucha" (hlína nebyla zcela vyschlá) tuto frekvenci:

kytka malej sensor sucho

Frekvence za "mokra" (zalitá hlína vodou) s touto sondou byla maximálně cca 7 KHz.

IMG 20140228 065428

Tato sonda naměří při 100% vlhka cca 7 KHz                                                              

IMG 20140228 065336

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.