Stránka 1 z 2

Osetreni zakmitu tlacitka

Napsal: 18 bře 2013, 19:39
od Beranek
Ahoj, tak jsem tu zase. Tentokrat resim osetreni zakmitu tlacitka. Na tlacitku detekuji obe hrany. SW cekani mi moc nevyhovuje tak jsem chtel vymyslet neco HW.

Popis problemu: Snazim se rozeznat kratky a dlouhy stisk. Pokud nastavim SW osetreni zakmitu na 100ms a k pusteni tlacitka dojde behem tech 100ms, mikrokontroler zjisti, ze bylo tlacitko stisknuto, ale ze bylo pusteno uz nepostrehne. A tim padem si mysli, ze je tl. stale drzeno...pote si mysli, ze uzivatel provadi dlouhy stisk.

Moje reseni: Navrhl jsem si takovy obvod, ale jsem amater (spise programator nez el.). Tak bych chtel znat nejake nazory. Dekuji za ne.

Odkaz na obvod

Odpory u OZ jsem zvolil tak velke, aby mi neovlivnovaly dobu vyijeni kondenzatoru. Pokud je to spatne, napiste ;).

EDIT:
+soubor

Napsal: 18 bře 2013, 20:24
od procesor
Čo nám to vnucuješ inštalovať!
Ten tvoj program naozaj myslí?

Napsal: 18 bře 2013, 20:32
od ZdenekHQ
S těma 100ms si děláš legraci. Na zákmity bohatě stačí 3 čtení po 1ms (já používám dokonce jen 200us) a v případě shody se to bere jako výsledek, jinak se čte znovu. Zjistit potom krátký a dlouhý stisk není žádný problém, stejně musíš reagovat až na puštění tlačítka, tak jen měříš čas.

Napsal: 18 bře 2013, 20:50
od Andrea
ZdenekHQ píše:S těma 100ms si děláš legraci. Na zákmity bohatě stačí 3 čtení po 1ms (já používám dokonce jen 200us)
No, takoví experti jako ty asi dělají sw do mobilů. Po dvou letech se na něm nedalo psát, protože co stisk, to vygenerovaný dvoj a více stisk. Já používám konzervativních 10ms, to je člověkem nepostřehnutelný čas a je to bomben fest i pro hodně jetý tlačítka.

Napsal: 18 bře 2013, 20:51
od WLAB
Vzdyt by snad stacilo po te, co zjistim zmenu, zacit pocitat cas treba po 1ms a s kazdym vzorkem testovat vstup. Pokud nastane zmena zpet, tak citac casu resetovat. Pokud citac casu presahne protizakmitovou dobu Tfilt, prohlasi se stisk za validni a pokud presahne hodnotu definovanou pro dlouhy stisk, prohlasi se za dlouhy...

Napsal: 18 bře 2013, 20:55
od WLAB
Ja pouzivam 10-50 ms podle povahy tlacitka.

Napsal: 18 bře 2013, 20:59
od ZdenekHQ
Andrea píše:No, takoví experti jako ty asi dělají sw do mobilů. Po dvou letech se na něm nedalo psát, protože co stisk, to vygenerovaný dvoj a více stisk. Já používám konzervativních 10ms, to je člověkem nepostřehnutelný čas a je to bomben fest i pro hodně jetý tlačítka.
Dej si tam klidně hodinu, já používám klasický mikrospínače a když přičtu zpoždění díky obsluze funkce, v životě se mě dvojstisk nepovedl a to už ten algoritmus včetně zkušebních tlačítek používám asi 5 let. Původně jsem tam měl víc, ale je to zbytečný. Tři čtení po 200us a jakákoliv změna zavolá algoritmus opět od začátku, takže si to tlačítko klidně může kmitat půl hodiny.

Napsal: 18 bře 2013, 21:01
od Andrea
Asi máš dost omezený okruh. Už jsem se setkala s tlačítkama, u kterých 5ms zákmit jako nic. Tam i těch 10ms bylo málo.

Napsal: 18 bře 2013, 21:03
od Beranek
100ms mam proto, ze pri mensich casech tam mam zakmity. Ja nectu stav vstupu, o to se stara kod trochu blize HW nez jsem ja. Ja pouze zachytavam udalosti (kdyz byla detekovana vzestupna nebo sestupna hrana). Plus si muzu nastavit jak dlouho se ma cekat aby se clovek vyhnul zakmitum.

Nic vam nenutim instalovat. Je to normalni JAVA. Muzu sem dat i obrazek no. Ale kdyz jsem se tu ptal naposled, byla mi taky odpoved zaslana v teto podobe. Tak se snad nic tak tragickeho nestalo.

JInak to vase SW reseni zkusim muzu. Po prvni hrane nastartovat casovac a udelat si par vzorku po urcitem case zda jsou stejne. Proc ne no.

A nejaky komentar k obvodu nebude?

Napsal: 18 bře 2013, 21:13
od WLAB
Tak ta vrstva "blize HW" je proste nevhodna, protoze neumi detekovat vhodne typy udalosti. Honit to nekde vyse, zvlaste, kdyz ty udalosti nejsou oznaceny timestampama je pakarna...

Napsal: 18 bře 2013, 21:19
od WLAB
Komentar k obvodu je ten, ze bys to snad radeji mel udelat softwarove.......
Cekal bych v tom obvodu nejaky monostabilni KO, hysterezi apod.... ale tohle?

Napsal: 18 bře 2013, 21:25
od Beranek
timestamp dostavam. Muzu to zkusit odecitat ty dva casy po sobe no. Ale rikal jsem si, ze kdo vi zda to bude fungovat. Zda nebude stejny vysledek jako u toho jejich osetreni. Nevim jakto, ze tam mam nekdy dvoukliky i po takove dobe, kdyz tu kazdy pise ze po par ms je to pryc...

"ale tohle?"..no nekde jsem cetl, ze to lze resit kondikem. Ale jen kondik si myslim nestaci...kdyz chytate obe hrany.

Napsal: 18 bře 2013, 21:36
od WLAB
No, "kondik" tam musi byt kazdopadne... otazka je co k nemu... co tu ma tedy dle konstrukcniho zameru resit ten OZ?
Ja bych to resil ve FW, bude-li to trochu mozne, uz jen pro variabilitu.

Napsal: 18 bře 2013, 21:45
od Beranek
No OZ tam mam proto, ze ja chci merit napeti na kondiku..Abych osetril oba druhy zakmitu. Ale pin mikrokontroleru mi muze merit jen napeti vuci zemi. Tak jsem to udelal pres OZ. Ten mi veme jen napeti na kondiku a to pak uz je stahnute vuci zemi...ale jak rikam. Jsem hodne velky amater, takze mozna je to blbost nevim.

Kdyz nastavim filtr zakmitu(ten co tam uz je udelany) na 50ms, tak mam kazdy druhy stisk 2x :D Osciloskop nemam abych se na to podival poradne.

Napsal: 18 bře 2013, 22:33
od forbidden
Je to nějaký komplikovaný, já osobně považuju zákmity za odezněný po 20-ti ms, pak teprv řeším krátkej, nebo dlouhej stisk. Funguje to na mikrospínače i obyčejný spínače, vše čistě software.