PIC a měření více teplot, výběr levných teplotních čidel

Zdravím,

nemohu zjistit jaký mám použít teplotní čidla pro nejjednoduší (nejlevnější) řešení. Mám PIC 16F876A potřebuji měřit 8 teplot ve vzdálenosti 3m. Někdo mi radí měřit úbytek napětí na tranzistorové přechodu. Jiní zas použít termistor a dělič napětí a ostatní radí použít čidla s digitálním výstupem. PIC má pouze 8 analogových výstupů a tak bych teoreticky mohl měřit 8 termistorů přes rezistorový dělič. Ale já bych rád někdy měřil i třeba 20 čidel. Šlo by to třeba provést přes analogový multiplexory? Naměřená teplota nemusí být až tak přesná a konečnou korekci bych udělal softwarově. Jde mi o to že takových soustav budu dělat víc a tak budu muset třeba měřit kolem 50 teplotních čidel. Protože je to jen pokusný příklad nechce se mi do toho vrážet velké peníze(např. 100Kč za čidlo) tak se poohlížím po levnějších variantách jako je tranzistor nebo termistor. Mít 50 digitálních čidel by zaprví vyšlo docela draho a pak bych musel vymyslet protokol, který by obsluhoval všechny čidla.

Poradíte mi jak lehce a levně měřit teplotu z více čidel?

Díky Notík

:arrow_right: administrator: přejmenováno z "PIC a několik teplotních čidel"

Podívej se na MCP9700, stojí asi 10kč při 1-kusovém odběru.

To nejsou vůbec špatné čidla, ale pro mně jsou asi nepoužitelná. Protože jejich výstupní napětí je od 100mV po 1,75V tak asi nepřipadá v úvahu 3m dlouhé vedení k PICu pod omítkou. Daly by se tak použít v rámci jedné bedny přístroje.

Zná někdo čidla, ktará nemají tak málo rozdílné výstupní napětí, ale za stejně pěknou cenu?

Vzhledem k tomu, že teplota se obecně mění velmi pomalu (časová konstanta čidla je větší než 1s) v porovnání s případnými rušivými signály (v tvém případě nejpomalejší asi 50Hz?), mělo by stačit signál jednoduše filtrovat.

Problém není v tom, že by bylo výstupní napětí příliš nízké. Rozsah 100mV až 1,75V stačí. Problém je v tom, že, pokud jsem si všiml, maximální výstupní proud u těchto čidel je okolo 100uA, což znamená, že výstup je velmi “měkký”. Např. 1V výstupního napětí a 100uA proud představuje výstupní impedanci 10k. Tak měkká vedení jsou velmi snadno zarušitelná. Chce to “tvrdý výstup” (operační zesilovač - už jsme to řešili).
Taky je lepší, když rozsah výstupního napětí nějak rozumně začíná a končí (např. 0 stupňů = 0 voltů; 100 stupňu = 1V, ale zase je dobré přihlédnout k rozsahu 8 bitů, takže do 255 …
To pak vyžaduje celý rozsah čidla stejnosměrně posunout (a jsme zase u těch operačních zesilovačů :slight_smile: nebo to přepočítat softwarově. Asi jak to kdo umí - já bych dal přednost tomu, posunout to operákem a měl bych zaručenou i nízkou výstupní impedanci pro buzení drátů ve zdi.

Jinak s tím filtrováním by to šlo, to je dobrý nápad a já mám kamaráda, který digitální filtry programuje - ale je to typický vědec a je s ním těžká domluva (oni mluví jiným jazykem :slight_smile:. Mohl bych to ale zkusit.

Vl.

Marzou asi myslel spíš analogovou filtraci ve smyslu většího kondenzátoru. Digitální filtr není problém navrhnout (nebo si na to stáhnout prográmek třeba od TI), ovšem jeho implementace na 8-bitu už je jiná písnička nehledě na spotřebu paměti pro 50 vstupů. To by bylo pro 16F asi trochu velké sousto ikdyž neříkám, že neřešitelné.

Tak samozřejmě pokud by mělo čidlo nulovou impedanci, tak bychom nemuseli řešit nějaké rušení… navíc impedance je mnohem nižší (viz datasheet) a pro uvažované frekvence (časová konstanta čidla >1s) dostačují, samozřejmě s využítím filtrace. Spodní úroveň výstupu 100mV bych neřešil nijak obvodově, přijdeme o 1/20 rozsahu, což lze strávit. Implementace jednoduchého digitálního filtru v MPC není záležitost vědy (a tady ani nic složitého být nemusí).

Klidně bych to vyřešil kombinací - analogová dolní propust 1. řádu (se zlomovou frekvencí jako 10-ti násobek nejrychlejší doby náběhu/poklesu teploty) a v MPC bych udělal nějaký jednoduchý průměrovací filtr, počet vzorků, ze kterých by se počítal, by se stanovil na základě vzorkovací frekvence, ale tak aby byl v souladu se zlomovou frekvenci analogu. V céčku by byl algoritmus do 10 řádků, a to nepřehánim:)

Pokud budeš průměrování nazývat filtrem, tak samozřejmě ano :slight_smile: Algoritmus filtru je obecně jednoduchý, pokud to ovšem realizuješ skutečně jako filtr (zpožďovací linka, koeficienty), bude tam problém s přetečeními a neceločíselnými koeficienty (celočíselná aritmetika) nebo ti půjde dolů rychlost výpočtu při float výpočtech.
Paměťové nároky zůstávájí v obou případech obdobné (nutno udržovat zpožďovací linku pro každý kanál) a závisí na stupni filtru, stejně tak průměrování potřebuje udržovat několik posledních vzorků pro každý kanál.

Je pravda, že to vzorkování asi nebude moc rychlé, takže by to mohlo stíhat počítat i ve floatu.

Průměrování se často používá jako jednoduchá filtrace, to není můj výmysl:) Možná jsem nepochopil, co myslíš tou skutečnou a neskutečnou realizací filtru?:slight_smile: Samozřejmě, pokud chceš v jakékoliv formě udržovat historii vzorků nebo hodnot výstupu filtru (a to je potřeba vždy) musíš to správně naalgoritmovat, v jednodušších případech se lze ale vždy obejít bez floatu (a pokud to nechceš mít moc drahé a pomalé, je to dokonce nutné). Nedávno jsem na PIC18F realizoval RC filtr 1.řádu s programově volitelnou časovou konstantou (exponenciela s proměnným koeficientem, nekonečná impulzní odezva) a výpočet jednoho vzorku výstupu trval asi 5 mikrosekund, na filtr se zlomovou frekvencí do 1khz to je ještě dostačující…na druhou stranu není důvod pro jednoduchou filtraci počítat “přesnou” exponencielu a nepoužít jednoduché průměrování, třeba i vážené s konečným počtem vzorků.

Uf, to už je pro mně trochu sci-fi :slight_smile: Zkusím nějaký odrušovací kondenzátor a kdyby to nestačilo tak zprůměruji několik výsledků A/D převodu.

Další otázka je, kde se dají tyto čidla sehnat? Kouknul jsem na všechny podobné čidla(6) fy Microchip a pouze na GME se dá sehnat ( ale rovnou 100ks) MCP9701. Znáte nějaké lepší on-line prodejny?

To bohužel není scifi ale tvrdá realita:) a pokud na to půjdeš stylem zapojím nějaký odrušovací kondenzátor, něco naměřím a pak to nějak zprůměruju, tak to buď bude měřit s moc velkou chybou nebo to experimentování bude trvat moc dlouho. Ćidla mají na www.tme.cz.
Zajímalo by mě, jak rychlé změny teplot chceš zachytávat? A taky k čemu to vše bude sloužit, 50 čidel na měření teploty vypadá na něco neobvyklého, ale možná o to zajímavějšího:)

no ds 18b20 by bolo lepsie len cena je niekde inde…na druhej strane osvecena zbernica len 2-3 vodicee, kalibrovane, hlasenie prekrocenie teploty a ine ficuring :smiley: Proste urcene priamo na tvoju aplikaciu by som povedal…