Stránka 1 z 1
Ruseni u PIC
Napsal: 08 čer 2008, 16:34
od Petr.
Ahoj, vyrábím zařízení, které pomocí AD převodníku v procesoru PIC16F873A měří napětí na ovládacím modulu kompresoru.(modul měří napětí na jednom z teplotních čiděl v kompresoru a já napětí "paralelně odposlouchávám")Schéma níže.Na vstup AD převodníku vede přímo kabel z modulu (napětí není nijak odděleno).Nyní se mi už několikrát stalo, že se mi na pinech pro AD převodníku objevilo 5V.Přičemž by tam mělo být maximálně tak 1,2 V, které dává kompresor, ale těchto 5V mi tam vrátil převodník. Chyba v programu není. Tuto chybu zařízení dělá bohužel jenom někdy.Zjistil jsem, že jsem udělal chybu, když jsem nezapojené piny procesoru nastavil jako vstupní, takže se do procesoru mohlo dostat rušení. Myslíte, že by tato chyba AD převdníku, mohla být způsobena tímto rušením. Pozn. Když mi to dalo na výstup 5V program stále běžel.
Napsal: 08 čer 2008, 22:06
od Atlan
KEd uz si to mal ako vstupy...mal si ich osetrene odporami??
MAs nejaku filtraciu toho vstupneho signalu.. Kolko metrov kablu v akom prostredi ?
Napsal: 09 čer 2008, 05:17
od Petr.
Právě, že jsem tam neměl žádné odpory. Byly nastavené jenom jako vstupy a žádné součástky na nich nebyly. Kabelu je tak půl metru až metr, přesně nevím. Filtraci toho napětí tam nemám.
Napsal: 09 čer 2008, 10:02
od ZdenekHQ
Ona taky není zem jako zem - jednak bys měl použít na měření napětí na čidle přístrojový diferenciální zesilovač (i přesto, že máš jeden vývod uzemněnej), aby ses vyhnul zemním smyčkám, jednak bys měl zohlednit všemožné rušení, kterého je kolem motoru až až.
Napsal: 15 čer 2008, 11:15
od Zirafka
Nevyužité nožičky je nejlépe zapojit jako výstupy a ty pak nastavit na log. nulu. Tím si ušetříš tyhle potíže.
No jinak by bylo dobré dát na ten přívod nějaký malí filtr, který požere případné rušení. Stačí malý kondenzátor. Tedy za předpokladu, že se to napětí nemění moc rychle.
Jinak by bylo možná dobré, dát celý ten měřící modul přímo do škatulky toho ovládání kompresoru a ven vytáhnout už zpracovaný digitální signál. A opravdu si dej pozor na spojení zemí a podobně. Někdy to dělá neskutečné věci.
Mimochodem, jaký tam je motor?
Napsal: 26 čer 2008, 09:01
od peatre
Ja som riešil podobny problem pri merani napetia bateria, kanoniec som upravil probram tak že vykoná cca 256 meraní vysledné hotnoty spočíta a nakoniec vydelí 256. tým máš priemer z viacerých (256) meraní, čo dosť spolahlivo odstrani prípadné rušenie...
Program je napísany v Basicu!!!
; meranie a zobrazovanie napetia...
power:
Pos = Adin 0 ;precitaj analogovy vstup 0
if meranie = 255 then goto vypocet ;ak si meral 255 krat skoč
meranie = meranie + 1 ;inkrementuj počitadlo meraní
priemer = priemer + pos ;pripočítaj hodnotu posledného merania k predošlím
goto power ; opakuj meranie
vypocet: ;podprogram výpočet priemerného napetia
avgpower = priemer / meranie ;vydelí súčet všetkých meraní ich počtom
meranie = 0 ;vynuluje počitadla meraní
priemer = 0 ;vynuluje priemer
;zobrazovanie vyslednej hodnoty meraní...
if avgpower < 149 then frame = 0 ; nesvieti ziadna LED
if avgpower > 149 then frame = 1 ; jedna červená led
if avgpower > 156 then frame = 3 ; dve červené
if avgpower > 163 then frame = 7 ; jedna oranzova
if avgpower > 170 then frame = 15 ; dve oranzove
if avgpower > 177 then frame = 4 ; jedna zelena
if avgpower > 184 then frame = 12 ; dve zelene
;su pouzite dve dvojfarebne LED RB4,RB6 - cerv/zelena LED1
;RB5,RB7 - cerv/zelena LED2
portb = frame << 4 ;zobrazenie
goto power