vloženo:18.09.2011   aktualizováno:14.10.2015


Regulátor topného nebo chladícího systému
s možností připojit 1 až 15 teplotních senzorů.

Mikroprocesor PIC16F1847 (88, 628A).
Teplotní senzory DS18B20 na sběrnici 1-Wire DALLAS.
Externí i parazitní napájení senzorů.
Nastavitelné horní a dolní meze, samostatně pro každé čidlo.
Třímístný LED displej, multiplexně řízený (společné anody).
3 ovládací tlačítka, TlS-levé, TlM-prostřední, TlP-pravé.
3 výstupy B4-topení, A1-chlazení, A3-ERROR senzor.

Program: (pouze pro nekomerční účely, only for non-commercial purposes)
DST_301.HEX (7,8 kB) PIC16F1847
DST_201.HEX (7,8 kB) PIC16F88
DST_628A_140.HEX (7,7 kB) PIC16F628A

Hlavička zdroj. kódu a nastavení programovacích pojistek:
DST_300.asm.txt (3,9 kB)
DST_200.asm.txt (3,9 kB)
DST_628A_140.asm.txt (3,8 kB)

 

Senzory DS18B20:
 Rozsah měřených teplot -55 ... +125°C, rozlišení 0,1°C
Není potřeba žádná kalibrace, čidla se kalibrují už při výrobě, přesnost ±0.5°C (v pásmu –10 až 85°C).
 Četnost měření, příkaz CONVERT a načtení teploty probíhá zhruba 1x za 3 sekundy.
 Senzory jsou připojeny třívodičovým kabelem (externí napájení).
Zleva: GND, 1-Wire komunikace, VDD.

 

 Čidla můžeme připojit i dvouvodičově (parazitní napájení). Pozor, při parazitním napájení nelze měřit teplotu nad 100°C.

Program umožňuje kombinaci obou variant napájení senzorů.

 Podle délky kabelu upravíme PULLUP rezistor (4K7 až 1K). Spolehlivě funguje stíněný třípárový telefonní kabel (45m s PULLUP 1K).

 

Zobrazení, ovládání, MENU:


 Termostat pracuje s teplotou v plném rozsahu senzorů -55 až 125°C a s rozlišením na jedno desetinné místo. Zobrazení na 3 místném displeji má ale určité omezení. Teplota pod -9.9 a nad 99.9°C je zobrazena bez desetin.


 Dojde-li k poruše senzoru (chybná komunikace, nesouhlasí CRC), bude místo teploty zobrazena chyba [Er.x.] a výstup A3 přepne na Log.1.

 Počet položek menu je odvozen od počtu nalezených senzorů (při vyhledávání).

 Mód ANIMACE začíná vždy po zapnutí termostatu. Teploty se střídají, jedna po druhé. Před každou teplotou se nejdřív zobrazí číslo senzoru, zhruba na 1,5s a potom teplota 5s. Čísla senzorů a mezí 10 až 15 jsou zobrazena v HEX tvaru, tedy A až F. Pokud je připojeno jenom jedno čidlo, není animace potřeba, zobrazuje se pouze jeho teplota a meze.

 Stisknutím jakéhokoliv tlačítka přejdeme do módu ručního PROCHÁZENÍ. Co čidlo, to 3 položky menu, teplota, horní mez, dolní mez. Pomocí tlačítek TlP/TlM listujeme (dopředu/dozadu) v kruhovém menu.




Tlačítkem TlP nebo TlM posuneme položku menu. Dokud bude tlačítko stisknuto, zobrazuje se nadpis, až po jeho uvolnění se zobrazí příslušná hodnota.
Stálé držení TlP/TlM způsobí listování po nadpisech.
Potřebujeme-li ukázat nadpis právě zobrazované hodnoty, podržíme TlS.
Pokud se zobrazuje některá mez, delší držení tlačítka S zahájí její nastavování.
A když je na displeji některá teplota, způsobí delší držení TlS návrat k animaci.

 

Nastavování mezí:
 Každé čidlo má své nastavitelné meze, horní [Hi.x] a dolní [Lo.x].
Horní a dolní mez je obdoba hystereze (Hi - Lo = hystereze).
 Nalistujeme požadovanou mez a stiskneme TlS, asi tak na 2s. Jakmile začne hodnota blikat, lze jí upravit, TlP (+), TlM (-). Držení tlačítka urychlí přičítání/odečítání.
 Rozsah mezí a rozlišení je stejné jako u teploty, platí také stejné omezení při zobrazování pod -9.9 nebo nad 99.9°C (bez desetin). V těchto krajních oblastech se dají meze upravit pouze po jednotkách °C, desetiny jsou nulové.
 Tlačítkem TlS hodnotu uložíme (do EEPROM) a nastavování ukončíme.

 

Výstupy:
 Pozor, výstupy nejsou nijak chráněné a lze je zatížit proudem maximálně 20mA.

B4-topení.
B4 = 1  když alespoň jeden senzor má teplotu =< svou dolní mez
B4 = 0  když všechny senzory mají teplotu => své horní meze

A1-chlazení.
A1 = 1  když alespoň jeden senzor má teplotu => svou horní mez
A1 = 0  když všechny senzory mají teplotu =< své dolní meze

A3-ERROR senzor (výstup lze použít k blokování B4/A1).
A3 = 1  když některé čidlo má poruchu
A3 = 0  když všechna čidla pracují

 

Vyhledávání DS obvodů na sběrnici 1-Wire: (podrobněji zde)
 V paměti senzoru je uložen identifikační kód (64b. ROM CODE), ten slouží k jeho adresování.
ROM kód obsahuje 3 části:

  1. Společný kód rodiny DS obvodů (8b. FAMILY CODE).
    DS18B20 má 28h.
  2. Sériové číslo (48b. SERIAL NUMBER). Při výrobě dostane každý obvod své unikátní, jedinečné, neopakovatelné číslo.
  3. Kontrolní součet (8b. CRC). Data odeslaná DS obvodem uzavírá CRC kód, tento kód mikroprocesor porovná s vlastním výpočtem z přijatých dat.


SEARCH_ROM.xls (23 kB)

 

Režim vyhledávání:
 Aby mikroprocesor mohl komunikovat s DS obvody, potřebuje znát jejich ROM kódy. Jestliže vyměníme vadné čidlo nebo odebereme, přidáme nová čidla (také po prvním zapnutí termostatu), musíme spustit režim vyhledávání. Sériová čísla (prvních 8 bitů) se načtou a uloží do EEPROM mikroprocesoru, budou tak po každém zapnutí termostatu ihned k dispozici.
 Pozor, při vyhledávání jsou čidla seřazena od nejmenšího sériového čísla (čidlo 1) po největší.
 Vzhledem k omezeným možnostem paměťového prostoru mikroprocesoru, je možno připojit maximálně 15 senzorů.


 Režim vyhledávání spustíme kombinací tlačítek TlS + TlP. Nejdříve nalistujeme nějakou teplotu, potom stiskneme TlS a k tomu TlP. Nápis [0.dS] oznámí start vyhledávání a tlačítka můžeme uvolnit.
První nalezené čidlo se ohlásí nápisem [1.dS]. Vyhledávání končí nalezením posledního, nebo patnáctého čidla [F.dS].
 Ihned po dokončení vyhledávání se zapíná mód animace.


 Není-li nalezeno žádné čidlo, zobrazí se porucha [E.00], a vyhledávání se opakuje.


 Protože se vyhledává pouze prvních 8 bitů sériového čísla, může se stát, že dva nebo více senzorů mají tento první bajt stejný, to vede k chybě [E.02]. Vyhledávání se stále opakuje, dokud nevyřadíme čidlo se stejným kódem, například postupným odebíráním senzorů.

 

Schéma zapojení: PIC3DT_11.sch (319,8 kB)

Hlavní konektor CON1 a procesorový modul.


 Schéma ukazuje externí připojení senzorů (třívodičové). Pozor na přepólování napájení, to vždy vede ke zničení senzorů.
Omezovací rezistory R1-R8 určují jas displeje, pokud použijete nízkopříkonový displej (např. BA56-12SRWA), dejte R1-R8 1K.
Konektor ICSP slouží k programování mikroprocesoru přímo v aplikaci.

 

Deska plošného spoje: PIC3DT_11.brd (68,9 kB)


Desku prodává www.bucek.name/dps/dpswebnode.dat.htm
pod označením PIC3DT.

 

Test.
Chybu v zapojení, špatné spoje, nebo zkrat na plošném spoji odhalí tento test.

Zapněte procesorový modul bez mikroprocesoru a postupně propojujte sokl.

 

Seznam součástek:

IO1 PIC16F88-I/P (+ precizní sokl 18pin)
DIS1 BA56-12EWA
(3-místný LED displej se společnou anodou)
C1 1 až 10uF/10V (TANTAL)
C2 100nF (SMD velikost 0805)
R1-R8 330 ohm (SMD 0805)
R9-R11 1K (SMD 0805)
TL1-TL3 mikrotlačítko (12V/50mA/6x6x12mm)
CON1,ICSP konektorové kolíky lámací RM=2,54mm (20pin)
Teplotní senzory DS18B20
PULLUP 4k7

 

Videoukázka na YouTube

Vytvořeno službou Webnode