 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
RGorazd Član


Pridružen-a: Čet 20 Maj 2004 15:57 Prispevkov: 1714 Aktiv.: 7.24 Kraj: Ig
|
Objavljeno: Ned Dec 18, 2005 7:30 pm Naslov sporočila: Mikrokontroler ter odskakovanje kontakta |
|
|
Živjo!
Veliko krat sem se soočil s težavo, ko sem na delavnem kontaktu kontaktorja ali releja pobiral signal za interrupt mikrokontrolerja. Težava je v odskakovanju kontakta. Tako mi je števec štel po 20-30 impulzov naenkrat. Softverski filtri so boli bolj slabo orožje (izklapljanje interruptov v sami ISR zanki), ali raznorazni delay-i v zanki itd...
Najcenejša rešitev je kondenzator reda 1..10uF paralelno z diodo optokuplerja, vendar tudi to ni rešitev. Zanima me, kako se s takimi stvarmi vi bodete. Flip-flop, šmitr triger...itd... Kaj je najenostavneje in najučinkovitejše? Razmerje učinkovitost/cena ter učinkovitost/enostavnost. Vsak predlogo dobrodošel meni in sotalim.
LP Gorazd _________________ .
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._| |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Ned Dec 18, 2005 7:53 pm Naslov sporočila: |
|
|
Ker običano v tem primeru gre za dokaj nizke frekvence sam uporabim optokopler kateremu paralelno na vhod dam kondenzator 470n, zaporedno pa ustrezen upor glede na napetost. Zaporedno lahko daš tudi kako zener diodo. S tem bo vezje postalo "imuno" na napetostne motnje nižje od nazivne napetosti zener-ce. _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
SimonS Član



Pridružen-a: Čet 01 Jul 2004 11:18 Prispevkov: 4769 Aktiv.: 20.13 Kraj: Kobarid
|
Objavljeno: Ned Dec 18, 2005 9:36 pm Naslov sporočila: |
|
|
Ne razumem, zakaj bi bila slaba SW resitev?
Jaz odvisno od sistema uporabim dvoje nacinov.
1. V zanki interupta pocaka 0.5sec.
2. Ce program nima casa "cakati" v zanki, ko dobim interupt ga izklopim ter vklopim timer, ki mi po preteku 0.5sec zopet vklopi prekinitve.
Sem pa tudi ze delal podobno, kot je napisal Silvo.
Preko linije upor ter zadaj kondenzator. _________________ Lep dan
Simon |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Ned Dec 18, 2005 9:54 pm Naslov sporočila: |
|
|
SimonS je napisal/a: |
...Ne razumem, zakaj bi bila slaba SW resitev?...
|
Najbolje je zadevo najprej rešit hardwersko - softwersko pa zadevo lahko dopolniš- vedeti moraš, da softweska rešitev ni 100%. Primer kot ga je omenil RGorazd je tipičen. V industrijski omari je recimo 100 kontaktorjev eden do drugega na letvi. Signal jemlješ z mirovnega kontakta. Sosednji kontaktor dela recimo utripalno ter trese celo letev. Posledično se zgodi kratkotrajen odskok, ki pa ni vklop. Tisti odskok je treba nekako zadušiti. Problem je tudi, če signal vodiš še kam drugam, kjer sofwerska rešitev ni možna. O eni podobni težavi že teče debata na forumu "Proženje releja zaradi strele".
Bom v službi pogledal, če je na kakem načrtu bolj podrobno vrisan kak vhod na kako kartico, ter zadevo preskeniral. _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
RGorazd Član


Pridružen-a: Čet 20 Maj 2004 15:57 Prispevkov: 1714 Aktiv.: 7.24 Kraj: Ig
|
Objavljeno: Pon Dec 19, 2005 12:28 am Naslov sporočila: |
|
|
Živjo!
Ja, poizkusiti moram par rešitev. Najprej šmit triger z OP. ojačevalcem, ali pa rešitev s flip-flopom.
Simon, ko sem delal en števec, se mi je dogajalo tole:
Na prosti NO kontakt Iskrinega kontaktorja KNL16, sem vezal optokupler. Ker je iz tehničnega vidika čist vseeno, ali bi na en kontakt pripeljal maso, pa ga prožil na INT0, ali pa VCC (v tem primeru 24V) ter prožil INT0 preko optokuplerja.
No, vseeno. Stvar je v tem, da ko je kontaktor pritegnil (v sami ISR zanki sem pa povečeval samo vrednost števca, torej zelo hitra zanka) sem imel namesto +1, imel +10,+20...itd
Samo zanko sem potem zasnoval tako, da ko je prišel prvi INT, ko se je začel izvajati ISR, sem izklopil Interrupte, počakal nekaj ms, povečal števec ter nazaj vklopil interupte. Vendar stvar ni delala tako kot bi morala. Stvar sem potem rešil s kondenzatorji paralelno k diodi ter paralelno tranzistorju optokuplerja.
S tem pa sem tudi podaljšal reakcijski čas samega vezja, kar v moji aplikaciji ni sicer predstavljalo hujšega problema, ker sem imel čas par sekund, vendar me vseeno zanima, katera rešitev bi bila najbolj primerna za izničenje prehodnega pojava.
Malce sem gledal starejšo literaturo (okidačka kola šmid triger ) Pa vendar...iz srednje šole se spomnim, da smo delai pri meritvah eno vezje, ki je delalo prav to...vendar so ti zapiski šli. Če me spomin ne vara, smo uporabili 1/4 LM 324 ali pa morda 741...ne spomnim se. Bom pregledal malo literature. Če dobim kaj upporabnega prerišem in pripnem. Stvar bo verjetno zanimiva za marsikaterega ki se mal z mikrokontrolerji daje. Če bi dobil kako shemo kakega induktivnega stikala, bi bilo pa tudi uredu, ker tam pa so fronte čiste.
LP Gorazd _________________ .
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._| |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Pon Dec 19, 2005 9:55 am Naslov sporočila: |
|
|
Gorazd,
Evo primer izvedbe vhodov na enem stroju (vhodov je vrjetno preko 100) Stikalni elementi so induktivna ter kapacintivna stikala, klasična končna stikala, kontakti relejev, tipke itd ... Na drugi stani optokolerja je klasična logika (CMOS) Primarna stan je napajana 24V. Bom popoldan pripel del načrta - sedaj nimam pri roki scaner-ja.
 _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
RGorazd Član


Pridružen-a: Čet 20 Maj 2004 15:57 Prispevkov: 1714 Aktiv.: 7.24 Kraj: Ig
|
Objavljeno: Pon Dec 19, 2005 10:41 am Naslov sporočila: |
|
|
Silvo hvala. Bom poizkusil ob prvi priliki. Sedaj nimam ne kontaktorja, ne scinjenega kakega vezja, na katerega bi lahko sproval. Se bom pa s tem problemom sigurno še kdaj srečal.
LP Gorazd _________________ .
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._| |
|
Nazaj na vrh |
|
 |
Proteus Član



Pridružen-a: Sre 15 Jun 2005 10:03 Prispevkov: 1943 Aktiv.: 8.20
|
Objavljeno: Pon Dec 19, 2005 2:51 pm Naslov sporočila: |
|
|
Bolj, ko to berem bolj mi ni jasno, zakaj se to ne da narediti v SW-ju ?
in zakaj tako po nepotrebnem komplicirate HW.
Bistvo mikroprocesorjev je prev v tem, da se s programsko opremo rešiš kupa nepotrebne in odvečne HW šare. Poleg tega ima SW debounce pred HW-jskim cel kup prednosti, od enostavno nastavljive dolžine filtriranja naprej.
Sam imam v programski opremi vedno en časovnik v funkciji sistemskega interupta, ki se proži vsako ms. V ta interupt časovnika nato zmečem spremenljivke vseh neodvisnih zakasnitev, kontrolnih števcev itd...
V interuptu (tistega, ki se proži na stanje vhoda) na prvi impulz, ki prispe:
- povečaš števec in
- nastaviš vrednost zaželene zakasnitve v spremenljivko filtra.
Spremenljivka filtra se v 1ms interuptu periodično odšteva do ničle. Če si vanjo vpisal 20, to pomeni, da bo to odštevanje do ničle trajalo natančno 20ms +/-1ms.
Ko naslednjič zaradi debounce-inga "uletiš" v interupt je stvar popolnoma čista.
Najprej preveriš, če je spremenljivka filtra enaka ničli:
- če ni ne narediš nič,
- če pa je povečaš števec za 1.
Na koncu ponastaviš še vrednost spremenljivke filtra.
Še kvazi SW sintaksa (ki jo lahko enostavno predelaš v assembler, basic ali c) za ponazoritev:
Koda: |
-----------------------------------
TIMER_INTERRUPT (izvaja se n.pr. vsako ms)
if (debounce_konstanta > 0) debounce_konstanta = debounce_konstanta - 1
itd....
ostala šara
itd...
KONEC TIMER_INTERRUPT-a
-----------------------------------
-----------------------------------
INPUT_INTERRUPT
if (debounce_konstanta = 0) števec = števec + 1
debounce_konstanta = 20 (za n.pr. 20ms filter)
itd....
ostala šara
itd...
KONEC INPUT _INTERRUPT-a
-----------------------------------
|
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Pon Dec 19, 2005 6:46 pm Naslov sporočila: |
|
|
Seveda Proteus se strinjam. A dejansko v praksi (sploh v industriji kjer gre za močno onesnaženo elektromagnetno okolje je vsekakor bolje, da se signal že prej delno očisti.) Tisto enostavno vezje v priponi recimo povezuje brez težav CMOS logiko z "zunanjim" svetom. (prerisano z načrta stroja Homag, ki obratuje že kakih 25 let) Če vezje dobro pogledaš vidiš, da pravzaprav ni nič posebnega. Optokopler galvansko ločuje(povezuje) dva različna nivoja. Namen zener diode je pred vsem preprečiti vpliv histerez, ki se pojavljajo na induktivnih, kapacitvnih, optičnih senzorjih. Edini "filter" je tisti 330n kondenzator. Praktično tudi mikrokontroler ne bi šlo enostavneje povezati z "zunanjim" svetom sploh, če so napetostni nivoji različni. _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Proteus Član



Pridružen-a: Sre 15 Jun 2005 10:03 Prispevkov: 1943 Aktiv.: 8.20
|
Objavljeno: Sre Dec 21, 2005 10:15 am Naslov sporočila: |
|
|
Zdravo Silvo, to kar praviš o industrijskem okolju je vse res. Toda ne gre mešati skupaj funkcije "debounce" in galvanske izolacije vezja zaradi elektromagnetnega onesnaženja. Gre za popolnoma različni stvari. Debounce se ti pojavi že na drobceni tipkovnici, ki je pripeta neposredno na procesor in to neoziraje se na to ali je okolje elektromagnetno onesnaženo ali ne, ker gre tukaj za fizikalno lastnost kontakta.
Kar se pa tiče povezave CPU na zunanje sisteme, pa je opto-sklopnik obvezen. Sam jih VEDNO uporabljam in enostavno mi ni jasno, zakaj se jih nekateri izogibajo. Seveda pa z opto-sklopnikom ne rešuješ "debounce"-inga. Z njim se na enostaven način rešiš motenj, ki se prenašajo preko galvanskih povezav. Za "debounce"-ing v tvojem vezju so dodani kondenzatorji, ki se mi predvsem zaradi nefleksibilnosti in prostora, ki ga zasedajo na PCB-ju zdijo nesimpatični. Sam imam izdelan majhen GSM javljalnik, ki ima popolnoma enake vhode (jasno galvansko izolirane), na katerih so SW-rsko postavljeni popolnoma različni filtri. Na števčnem vhodu le 5ms, na vhodu, kjer zaznavam delovanje/izpad motorja pa celo 10minut. Vse je seveda programsko nastavljivo in ne rešuje samo "debounce"-inga.
Novejši PLC-ji, še posebej tisti, ki so strogo namenski in v sebi združujejo tudi funkcije zbiranja podatkov, imajo filtre na vhodih programsko nastavljive. Imajo celo digitalne filtre na analognih vhodih, kjer lahko n.pr. SW-sko blokiraš 50Hz ali 60Hz. |
|
Nazaj na vrh |
|
 |
RGorazd Član


Pridružen-a: Čet 20 Maj 2004 15:57 Prispevkov: 1714 Aktiv.: 7.24 Kraj: Ig
|
Objavljeno: Sre Mar 15, 2006 10:24 pm Naslov sporočila: |
|
|
Pogrevam že skoraj hladno juho
Silvo, danes sem se malce zafrkaval (po dolgem času spet) z AVRji in sem uporabil shemo, ki si mi jo pripel nekaj postov nazaj. Zanimivo, da stvar ne deluje
ČE pa dam 10k upor paralelno k zenerci je pa vse OK.
LP Gorazd _________________ .
._. _ _ ._. _.__. _|
[ (_](_)[ (_] /_(_]
._| |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Sre Mar 15, 2006 10:33 pm Naslov sporočila: |
|
|
Očitno ni dovolj visoka vhodna napetost glede na zener diodo. Vezava z uporabo zener diode je sploh primerna, če se kot stikalni element uporabi recimo kako brezkontaktno stikalo. Z njo se izognemo histerezi vklopa/izklopa. Napetost mora biti namreč večja od nazivne napetosti zener diode. _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Proteus Član



Pridružen-a: Sre 15 Jun 2005 10:03 Prispevkov: 1943 Aktiv.: 8.20
|
Objavljeno: Sre Mar 15, 2006 10:35 pm Naslov sporočila: |
|
|
Predvsem to, da je kondenzator postavljen neposredno na vhodne sponke, brez pred-upora v seriji je več kot čudno, da ne rečem kar rahlo nesmiselno.
Kondenzator s prehodnim pojavom (ob prihodu signala) po nepotrebnem obremenjuje predhodno vezje. RC konstanta, ki jo v tem primeru potrebuješ pa je vezana na izhodno upornost predhodnega vezja.
Najmanj, kar je potrebno narediti je to, da dodaš pred kondenzator upor (serijsko na en priključek), da bo imela vsa stvar sploh smisel. Zener diodo pa lahko v kontekstu osnovnega vprašanja mirne duše ponucaš za kaj drugega. |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.94 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Sre Mar 15, 2006 10:44 pm Naslov sporočila: |
|
|
Ne vem sicer natančno zakaj je tako narejeno - Gre za stroj nemškega proizvajalca Homag. Na stroju je verijetno preko 100 vhodov na katere so "obešeni" različni stikalni elementi - od klasičnih končnih stikal fotocelic, induktivnih,kapacitivnih, magnetinih ... stikal. Bom jutri prilepil fotografijo dela načrta in kake kartice. _________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Proteus Član



Pridružen-a: Sre 15 Jun 2005 10:03 Prispevkov: 1943 Aktiv.: 8.20
|
Objavljeno: Sre Mar 15, 2006 11:07 pm Naslov sporočila: |
|
|
Včasih je neselektivno kopiranje tujih načrtov problem, če ne poznaš celotnega ozadja, zakaj je nekaj tako narejeno. Če je n.pr. pri tvojem vezju ena sponka vezana na maso, druga preko upora na napajanje, senzor pa dela kratek stik na kondenzatorju, potem zadeva seveda funkcionira.
Ima celo prednost, da na prihod reagira takoj, saj kratek stik v trenutku sprazni kondenzator, povratek pa je zakasnjen, ker se kondenzator polni preko upora. Kako pa tako "trenutno" praznjenje kondenzatorja pozdravlja kakšen nežen tranzistorček pa je drugo vprašanje.
V tvojem primeru je narisan samo en del vezja (ni jasno, kako je priključen dajalec - njegovo interno vezje) in sam bog ve, kaj ima na vhod priključeno RGorazd. |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 492 dni
Powered by phpBB © 2001, 2005 phpBB Group
|