Dobrý den,
nemáte prosím někdo zkušenost s připojením uvedeného mikrovlnného čidla k mikrořadiči?
Samotné čidlo funguje správně - úroveň H na výstupu při aktivaci (pull-down) rezistor 10k na výstupu.
PIC10F206, jednoduchý program - blikání LED diody na výstupu při aktivaci čidla.
Problém:
Pokud nemám k výstupu PIC nic připojeno a jen měřím log. sondou výstupní stavy, vše funguje. Pokud však na výstup PIC připojím např. LED diodu (omezovací rez. 330R), výstup (!!!) čidla zůstane po aktivaci trvale v úrovni H! Je to závislé na odběru té zátěže. Zvětším - li rezistor u LED diody na 3k3, vše funguje.
Zkoušel jsem zmenšít zátěž na výstupním pinu PIC tím, že jsem LED připojil přes NPN tranzistor s LED v jeho kolektoru. Přestože rezistor v bázi měl hodnotu řádově desítky kiloohmů, problém zůstal stejný. Nechápu to, protože v tuto chvíli tekl z výst. pinu PIC naprosto minimální proud.
Jediné, co mne napadá, je, že se něco přenáší přes napájecí větev. Napájení je společné pro PIC i pro čidlo (5V z laboratorního zdroje). Těsně u PIC mám blok. kond. 100nF, totéž přímo na napájecích pinech čidla.
Zkouším to sice na kontaktním poli, ale už jsem se na něm nabastlil docela dost a nikdy jsem podobný problém neměl.
V textu máš samý výstupy a žádný vstup. Výstup se vždy připojuje na vstup, takže kdybys místo toho zmateného popisu vložil schéma, určitě bysme pochopili na co se vlastně ptáš. Jeden obrázek bude mít cenu tisíce slov …
Jasně, omlouvám se. Přikládám schéma se třemi varianty zapojení, které jsem zkoušel, včetně popisu.
Jen doplním:
Mikrořadič obsahuje jednoduchý program, který rozbliká LED diodu na výstupu.
Popisovaný problém nastane až při propojení výstupu čidla s mikrořadičem a to pouze tehdy, je-li k výstupu mikrořadiče připojena zátěž (viz popis ve schématu). Odpojím-li z výstupního portu PIC zátěž (LED diodu) a jeho stav při běžícím programu kontroluji logickou sondou, vše je v pořádku. Připojím zátěž a na výstupu čidla - tedy na vstupu PIC (!) se trvale “usadí” hodnota H.
Na výstupu čidla (= na vstupním portu PIC) není žádné rušení - to by logická sonda zachytila.
Zkoušel jsem i oddělit napájení sondy od napájení PIC (sondu jsem připojil přes galvanicky oddělený měnič), bez výsledku.
Vše jsem zkoušel s mikrořadiči PIC10F206 a PIC12F675. Výsledek stejný.
Tady máš opravdovou záhadu. Napadá mě jedině špatný kontakt na GND toho čidla nebo na přívodu od napájení. Ono kontaktní pole je skvělý pomocník, ale taky občas pěkná potvora a právě se špatnýma kontaktama (čti velké přechodové odpory) umí pěkně potrápit.
Nabastlil jsem těch 5 součástek přímo na patici PIC, takové maličké vrabčí hnízdečko a funguje to perfektně!
Už jsem o tom kontaktním poli přemýšlel, ale nechtělo se mi tomu věřit, už na něm dělám cca 20 let a nikdy mne nezklamalo. Možná, že právě těch 20 let se na něm podepsalo …
Tak jsem se radoval předčasně.
Jakmile jsem rozpájel to “vrabčí hnízdo” a přemístil součástky na plošný spoj (univerzální destička), tak to začalo zlobit znovu. A opravdu to závisí na proudu z výstupu PIC. Připojím-li na něj piezo pípátko, které nemá prakticky žádný odběr, funguje to. Připojím tam LED diodu - nefunguje to.
Závisí to také na nastavené citlivosti čidla - se zvyšující se citlivostí to začíná zlobit dříve.
Asi mně nezbude nic jiného, než to zpátky nabastlit přímo na patici a modlit se, aby to fungovalo.
podívej se o kousek výš, najdeš tam schéma. Nikde z něj není patrné, že bych zapojil výstup detektoru pohybu na výstupní pin mikrořadiče.
Takže pro pořádek:
detektor pohybu HFS-DC08 je zapojen na pin mikrořadiče, který je SW nadefinován jako vstup.
LED dioda je zapojena na pin mikrořadiče, který je SW nadefinován jako výstup.
Kdyby tomu bylo jinak, nefungovalo by to vůbec. Ale jak už jsem psal, ono to funguje, pokud není výstupní pin mikrořadiče zatížen - např. když jeho stav testuji logickou sondou nebo osciloskopem, který má vstupní impedanci řádově M-ohmy. Přestane to fungovat při zatížení výstupního pinu mikrořadiče a to i docela malým proudem, který se jinak běžně v takovýchto aplikacích používá.
S mikrořadiči od Microchipu pracuji už cca 20 let a datasheety znám skoro nazpaměť.
Maximální povolený proud výstupním pinem je u těchto typů 25mA. S LED diodou s omezovacím odporem 330R vychází proud okolo 9mA, což je hluboko pod maximem. Výstupní port tedy rozhodně přetížen není.
K mikrořadičům jsem mnohokrát připojoval různá čidla, ale mikrovlnné čidlo jsem použil poprvé (před pár lety ještě nebyly běžně k mání Nikdy jsem se nesetkal s případem, kdy by lehké zatížení výstupního pinu způsobilo změnu stavu na pinu vstupním - to snad ani není možné. Proto z nestandardního chování podezřívám spíše ten senzor, ale vysvětlit si to fakt neumím.
Jak už jsem psal - nabastlené na patici to fungovalo. Jakmile jsem to zapojil na destičku, začalo to opět zlobit. Navíc je to závislé na nastavené citlivosti detektoru (je tam na to trimr).
Monitorovaný prostor byl zcela bez pohybu (prázdná chodba), takže fakt nevím …
Popsané chování mi opravdu nejvíce připomíná problémy s GND.
A pak mě napadá ještě jedna věc : já PICy neznám, dělám s AVRkama, ale u těch je možné nakonfigurovat na vstupní pin interní pull-up. Ty stahuješ vstup ke GND pomocí 10k. Pokud bys měl aktivní interní pull-up, pak by bylo možné, že se odpory vzájemně přetahují a vstupní pin je tak na hraně mezi 0 a 1. Pak stačí opravdu málo a podivné chování je na světě. Případně zkus 10k vyměnit třeba za 4k7 nebo dokonce 1k.
Používám laboratorní zdroj, omezení proudu mám nastaveno na 2A. Modul včetně mcu si vezme okolo 50mA. Signál na pinu je čistý. Můj osciloskop tak krátké děje nezachytí, ale určitě je dokáže detekovat logická sonda a tou jsem to testoval.
Interní pull-up mám vypnuty. A i kdyby byly zapnuty, ony mají hodnoty řádově stovky k-ohmů, na 10k by nestačily. Ale ještě zkusím jinou věc, která mne napadla dnes.
Zkusím použít mcu, který má dva samostatné, navzájem oddělené porty. Jestli není problém v tom, že se vše odehrává na stejném portu. Uvidím …
Zkoušel jsem je na čtyřech typech mikrořadičů: PIC10F206, PIC12F675, PIC16F628 a PIC16F883.
Jakž takž to funguje pouze na typu PIC169F883, na ostatních ne. Chová se to nepředvídatelně - večer jdu spát s tím, že se mi to konečně podařilo rozchodit a ráno to opět nefunguje, aniž bych se toho přes noc dotkl.
nepomohlo ani použití mikrořadičů s oddělenými porty (na jednom mám vstup = čidlo, na jiném výstup = LED dioda)
je to silně závislé na nastavené citlivosti. Při nejnižší citlivosti to jakž takž funguje, ale ta citlivost je už hodně malá - ten trimr je prakticky na nule, takže o nějakém nastavení citlivosti nemůže být řeč.
největší záhadou je to, že výstup čidla je ovlivněn zátěží, která je až na výstupním pinu mikrořadiče!
Funguje naprosto spolehlivě. Má jedinou chybu - nelze u něj nastavit citlivost, která je až příliš velká, ani doba trvání výstupního signálu (to by zase až tak moc nevadilo). A je o stovku levnější
A ještě jeden poznatek - na hadex.cz, kde jsem ta čidla zakoupil, vám nikdo neporadí, protože tomu nikdo nerozumí.