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


Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 17.03 Kraj: Črnuče
|
Objavljeno: Čet Feb 03, 2005 6:44 pm Naslov sporočila: Določitev stanja delovanja |
|
|
Naletel se na en problemček, ki ga mozgam nekaj časa.
Z PICem bi rad naredil detekcijo omrežne napetosti. Zato sem na omrežno napetost preko usmerniške diode in upora priključil en optosklopnik.
Zdaj iz optosklopnika dobim približno pravokotno napetost frekvence 50Hz. Razmerje 0 in 1 ni 50:50 ampak 45:55. Kako sedaj mikrokontroler prepričati, da je takšna napetost na vhodu eno stanje, če se pa napetost ne spreminja, pa drugo stanje.
Imam sicer že eno zamisel, pa nisem prepričan, da je najboljša.
Ker je frekvenca omrežne napetosti relativno stabilna bi šlo nekako takole:
najprej bere vrednost v zanki toliko časa, da je vrednost =0
potem počaka 22mS *
ponovno prebere vrednost, ki mora prav tako biti 0, v nasprotnem primeru predpostavi, da je bila napaka.
* teh 22mS sem določil takole: en nihaj pri 50Hz traja 20mS. 2ms sem dodal za varnostni faktor, glede na obliko napetosti, ki jo dobim iz optosklopnika - hitrost padanja napetosti in tolerance napetosti, ki jih mikrokontroler vzame za 0 -max0,8V, ter 1-min2V. 2mS je dovolj da bi morala biti napetost v naslednjemnihaju sigurno manj kot 0,8V.
PIC je 12F675 z kalibriranim internim RC oscilatorjem.
|
|
Nazaj na vrh |
|
 |
Highlag Član


Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 17.03 Kraj: Črnuče
|
Objavljeno: Pon Feb 14, 2005 8:38 pm Naslov sporočila: |
|
|
No da nadaljujem. Napravica, ki jo izdelujem, je namenjena krmiljenju ojačevalca, ki sem ga pokazal na tem forumu.
Program sem izdelal, dodal še vse ostale funkcije in seveda mi zadeva v enem koraku seveda ne deluje. V simulatorju v MPLAB-u seveda program deluje brezhibno.
Program gledam že približno en teden brez kakšnega vidnega uspeha.
In kaj vezje dela:
1. Preko optičnega sklopnika preverja vklop stikala (tu procesor ob vklopljenemu stikalu dobi vsako polperiodo enkrat nizko stanje dolgo cca 6,5ms)
2. Če je stikalo vklopljeno potem preko releja prizge Katodo
3. počaka 30s med katerimi utripa rumena led dioda
4. preko releja prižge še anodo
5. Ko je anoda prižgana preverja preko dodatnega vezja še prisotnost glasbe.
V kolikor glasbe zmanjka se anoda in katoda čez ~1h ugasneta.
6. Za nadaljevanje bi bilo potrebno vklopno stikalo ugasniti in prižgati nazaj, druga možnost bi bila ponovna prisotnost muzike.
Progam deluje brezhibno, le pri zadnjem koraku se zadeva zakomplicira, ker procesor na koncu namesto, da bi pustill anodo in katodo ugasnjeno skoči na korak prižiganja anode in katode. Tako se cikel prižiganja in ugašanja ponavlja v nedogled.
Sem tudi že mislil, da se ob izklopih relejev kaj čudnega dogaja na vezju, vendar mi osciloskop na napajalni napetosti procesorja ni pokazal nobene motnje.
Opis: |
|
 Download |
Ime datoteke: |
zakasnitev_3.txt |
Velikost datoteke: |
7.65 KB |
Downloadano: |
12 krat |
Opis: |
|
 Download |
Ime datoteke: |
zakasnilo_vezje.pdf |
Velikost datoteke: |
69.44 KB |
Downloadano: |
13 krat |
|
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.95 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Tor Feb 15, 2005 1:35 pm Naslov sporočila: |
|
|
Stvar si do dobra zavozlal Asemblerska koda z množico "goto" skokov je zelo nepregledna. Vse skupaj bi bilo preglednejše, če bi rutine kreiral v podprograme ter le te klical s call. Koliko razumem pravzaprav čitaš dva vhoda. V koliko se vhodih ne dogaja nič je vezje izključeno. Če je en vhod (stikalo) aktivno se vključi rele. 30sec po tem se vključi še drugi rele. Med potekom časa utripa ledica. Če na vhodu dva ni prisotnost signala se po 1h se morata oba releja izključiti.
Sam se bi lotil progama bistevno drugače:
Uporabil bi TMR0 prekinitev. Glede na znano dolžino te prekinitve bi imel tudi časovno bazo . V prekinitvi bi tudi čital vhode. Zunaj prekinitve pa bi uprabljal z tistima dvema relejema.
Če ne boš zadeve prej rešil, bom kodo pregledal čez vikend, ter skušal najti napako. Če pa bom imel čas ti spišem programček.
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Silvo Moderator


 
Pridružen-a: Pon 24 Feb 2003 17:09 Prispevkov: 14673 Aktiv.: 61.95 Kraj: Koroška-okolica Dravograda
|
Objavljeno: Tor Feb 15, 2005 2:12 pm Naslov sporočila: |
|
|
Še vprašanje glede prvega dela sporočila glede detekcije mrežne napetosti. Kaj pravzaprav želiš - le detekcijo prisotnosti napetosti ali detekcijo prehoda skozi nič?
Če se vprašanje nanaša na načrt, ki je priložen potem sklepam, da ti je zanimiva le indikacija prisotnosti napetosti. Poglej primer polnovalnega "mrežnega napajalnika"
Na izhod daš optokopler, kot v tvojem primeru.
Opis: |
|
 Download |
Ime datoteke: |
91008b.pdf |
Velikost datoteke: |
56.49 KB |
Downloadano: |
14 krat |
_________________ lp
Silvo |
|
Nazaj na vrh |
|
 |
Highlag Član


Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 17.03 Kraj: Črnuče
|
Objavljeno: Tor Feb 15, 2005 6:00 pm Naslov sporočila: |
|
|
Glede vezja. Malce sem se prenaglil z izdelavo, in same detekcije nisem preveril pred izgradnjo vezja. Sedaj imam vezje pač takšno, kot sem ga narisal. Sem si mislil, da lahko problem rešim z programom.
Detekcijo muzike sem prej sestavil na protoboardu, in jo tudi preizkusil, tako da sigurno deluje.
Izdelal sem tudi več programov, za testiranje posameznih funkcij in ki delujejo po pričakovanjih. Zapletlo se mi je le ko sem jih sestavil skupaj
V skrajni sili imam dve rešitvi. Prva je da v vejo z optokoplerjem vežem še eno diodo. S tem bom dobil ob vklopu samo ničlo, kar bo precej poenostavilo program. Druga rešitev pa je da detekcijo muzike popolnoma ignoriram.
|
|
Nazaj na vrh |
|
 |
Highlag Član


Pridružen-a: Pet 23 Jan 2004 20:42 Prispevkov: 4034 Aktiv.: 17.03 Kraj: Črnuče
|
Objavljeno: Pet Feb 25, 2005 10:40 pm Naslov sporočila: |
|
|
Po premisleku sem se le odločil za spremembo dela vezja, ki sporoča procesorju če je prisotna napajalna napetost.
Shemo končne različice pripenjam, če bo mogoče še komu koristila.
Mi pa delovanje moje originalne različice ni dalo miru, ker mi ni bilo jasno zakaj kljub temu, da jaz merim z osiloskopom na vhodu optokoperja ves čas napetost, na izhodu pa dobim lepo razsekano, kot če bi LED dioda znotraj optokoplerja utripala.
Zato sem vezje sestavil v simulatorju multisim, in seveda brez težav ugotovil kaj je bilo narobe. Narobe je bilo to, da je tok čez LED diodo med negativno polperiodo, ko je bila napetost odrezana zaradi polvalnega usmernika preveč upadel. Ni padel na 0 ampak recimo na 10mA, kar je bilo premalo, da bi LED dioda dala dovolj velik signal za vklop izhodnega tranzistorja.
Novo vezje je v bistvu polnovalni usmernik, ki omogoča manjše nihanje toka skozi LED
Program sem zato lahko precej oklestil. In kot kažejo zadnji testi celo deluje brez napake.
Opis: |
Preprost mrežni usmernik za 20-30mA |
|
 Download |
Ime datoteke: |
shema.gif |
Velikost datoteke: |
2.69 KB |
Downloadano: |
22 krat |
_________________ If at first you don't succeed, destroy all evidence that you tried. |
|
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
|