Mikrokontrolér

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
ebastlirna
Příspěvky: 84
Registrován: 10 říj 2013, 00:00

Mikrokontrolér

#1 Příspěvek od ebastlirna »

Dobrý den,

zkoušel jsem zapojit 12-ti tlačítkovou klávesnici do matice s PIC16F628A a narazil jsem na problém s elektrostatikou. Zapojení bylo provedeno na bezkontaktním poli a klávesnice se válela na stole. Při zkoušce programu, který měl rozblikat dvojci LEDek, tolikrát jaká byla hodnota tlačítka se klávesnice (program) chovala pokaždé jinak (stačilo se klávesnice jenom dotknout bez mechanického stisknutí tlačítka, někdy spustila sama, náhodný stav => různý počet blikání při stejné hodnotě).
Nic méně mě napadlo, že s tím bude mít něco společného elektrostatika. Tak jsem uzemnil vstupy (které snímají tlačítka) přes rezistory 10k a vše funguje jak má.

Mordoval jsem se s tím půl dne, s mikrokontroléry teprve začínám. A tak vás prosím, můžete mi vysvětlit proč tomu tak je? Jak správně navrhnout odpory, jestli jsem to vyřešil správně....?

Děkuji.
Uživatelský avatar
Jirka525
Příspěvky: 325
Registrován: 22 kvě 2013, 00:00
Bydliště: Psáry JN79GW

#2 Příspěvek od Jirka525 »

Vstupy na MCU musejí být vždy ošetřeny, tedy i v případě, že není stisknuta žádná klávesa. Vstupní odpor se pohybuje v řádu desítek megaohm a jakýkoli rušivý signál může způsobit změnu log. stavu. Ty jsi tedy správně definoval odporem proti zemi log. stav odpojeného vstupu. Druhá možnost je zapnout na vstupech pullup odpory a spínat je proti zemi. Podrobnosti najdeš v kat. listu MCU.
Jirka
Uživatelský avatar
frpr666
Příspěvky: 1051
Registrován: 28 pro 2009, 00:00

#3 Příspěvek od frpr666 »

Obecně každý vstup, který má vysoký vstupní odpor je senzitivní na rušení.
Můžeš to vyzkoušet, když připojíš kus drátu na vstup audio zesilovače.
Na tomto pricipu pracují ghost-detectory...
Uživatelský avatar
monterjirka
Příspěvky: 2855
Registrován: 14 čer 2003, 00:00
Bydliště: Blížejov

#4 Příspěvek od monterjirka »

CMOS obvody jsou citlivé na "statiku", to není závada, to je vlastnost.
Ty odpory jsou správným řešením, ještě je možné přidat kondenzátorek, trochu to zlepší odolnost proti zákmitům tlačítka i když tam je lepší řešit to SW.
Hodnota 10k je celkem rozumná, dá se jít až o řád výše.

V PICech se dá "zapnout" vnitřní PullUp odpor, ale ten je proti +, nastavuje na portu základní úroveň H a L se spíná spojením s GND.
Uživatelský avatar
Zaky
Příspěvky: 7050
Registrován: 30 říj 2010, 00:00
Bydliště: Praha

#5 Příspěvek od Zaky »

Pravděpodobně jsi to vyřešil správně, kdybys dal schéma, dalo by se to posoudit jistě. Vstupy MCU nesmí být jen tak ve vzduchu, mají vysokou vstupní impedanci a tak jakýkoli malý proud může měnit jejich stav, nejen statika, ale i jakékoli svody. Proto se dávají pullup nebo pulldown rezistory, definují klidový stav a pro dosažení druhého stavu je potom potřeba pustit rezistorem takový proud, aby napětí vzrostlo na úroveň, kterou MCU přečte jako ten druhý stav. Tlačítky tak při sepnutí teče nějaký proud, to je nutné i pro správnou funkci kontaktů. Některé MCU umožňují pullup nebo pulldown rezistory aktivovat přímo ve struktuře portů, ušetří se tím potom vnější součástky.
Edit: Když tu dělám dvacet věcí najednou, tak to jiní napíšou mnohem dřív :-)
Uživatelský avatar
ross4435897
Příspěvky: 426
Registrován: 10 lis 2009, 00:00
Bydliště: Brno

#6 Příspěvek od ross4435897 »

resit softwarove .... aktivovat pullup nebo pulldown rezistory
Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“