Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Mikrokontroler i trijak

[es] :: Elektronika :: Mikrokontroleri :: Mikrokontroler i trijak

[ Pregleda: 3926 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

m51
tu i tamo

Član broj: 244167
Poruke: 73
*.dynamic.isp.telekom.rs.



Profil

icon Mikrokontroler i trijak18.11.2012. u 13:41 - pre 138 meseci
Zdravo,

imam jedan problem pa rekoh možda ovde nađem pomoć. Da napomenem da sam prethodno detaljno proučio literaturu i internet. Hoću da regulišem intenzitet osvetljenja sijalice dobro poznatom faznom regulacijom pomoću mikrokontrolera i trijaka. Principi su poznati, za detekciju prolaska kroz nulu koristim pin 7 mikrokontrolera ATTINNY25. Kad mrežni napon prođe kroz nulu generiše se spoljni prekid. Šema je u prilogu. Problem je da pri regulaciji osvetljaja napon na sijalici ne raste kontinualno kao što zelim već je to nešto nedefinisano. Vizuelni efekat je da osvetljaj podrhtava dok se sijalica potpuno ne upali. Nemam ideju u čemu je problem, a sumnjam u izbor trijaka-bio mi je pri ruci BTA16 pa sam uzeo njega. Program je:
Code:
$regfile = "attiny25.dat"
$hwstack = 32


Declare Sub Kontrola_vremena

Dim I As Byte
Dim K As Byte
Dim Kontrola As Bit
Dim Vreme_sek As Byte

Config Pinb.0 = Output                                      'gate signal
Config Pinb.2 = Input                                       'SPOLJNI PREKID

Config Int0 = Change
On Int0 Prekid                                              'prekidna rutina
Reset Kontrola

K = 45
Vreme_sek = 10
Enable Interrupts                                           'dozvoli prekide
Enable Int0                                                 'i spoljni INT0

' u glavnoj petlji se vrsi provera da li je ostvaren fazni pomeraj
' kroz celu poluperiodu.znaci sijalica od nula do maksimunma
Do

If Kontrola = 1 Then
Disable Int0                                                'zabrani prekid ako je sijalica na maksimumu osvetljaja

Kontrola = 0
Portb.0 = 1
Call Kontrola_vremena
End If

Loop


Sub Kontrola_vremena
'ovim potprogramom se ostvaruje uslov da sijalica svetli jos 10 sekundi
'od trenutka kada postigne maksimalni osvetljaj
For I = 0 To Vreme_sek
Wait 1
Next I
Portb.0 = 0                                                 ' i onda se ugasi

End Sub Kontrola Vremena




Prekid:
Disable Int0                                                'zabrani prekid
Decr K                                                      'korak je 200 uS a K je umnozak
For I = 0 To K
Waitus 200
Next I                                                      'kad prodje vreme faznog pomaka
Set Portb.0                                                 'setuj gejt trijaka
Waitus 50                                                   'sacekaj 50 uS
Reset Portb.0                                               'resetuj gejt
If K = 0 Then                                               'ako je ostvaren fazni pomeraj kroz celu poluperiodu
Kontrola = 1                                                'setuj kontrolni fleg
K = 45                                                      'priprema promenljive za novi ciklus pomeraja faze
End If

Enable Int0
Return
End




Unapred zahvalan za svaku pomoć. Koliko vidim pretragom tema ima iskusnih po ovom pitanju.
Prikačeni fajlovi
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: Mikrokontroler i trijak18.11.2012. u 17:16 - pre 138 meseci
ja sam prvi koji gura mcu svuda ali zasto ovde mcu? zar ti nije lakse diak+triak, sitna pasiva i pot? (moze i sa mcu-om naravno no ja ne mogu da citam ovaj basic da vidim sta si zabrljao, podseca me na neke mnogo ruzne stvari pa ce sacekati ove nase basicase :D )
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3860
adsl-101-63.teol.net.



+333 Profil

icon Re: Mikrokontroler i trijak18.11.2012. u 19:14 - pre 138 meseci
U podprogramu kontrola vremena bi trebalo da bude 10 sekundi?
 
Odgovor na temu

m51
tu i tamo

Član broj: 244167
Poruke: 73
*.dynamic.isp.telekom.rs.



Profil

icon Re: Mikrokontroler i trijak18.11.2012. u 19:54 - pre 138 meseci
Za Bogdana

ovo je deo složenijeg projekta tako da mora MCU.

Za Veselinovića

Ideja je da se sijalica lagano pali od 0 do maksimalnog osvetljaja pa da posle toga bude upaljena još 10 sekundi i da se onda ugasi.
 
Odgovor na temu

bogdan.kecman
Bogdan Kecman
"specialist"
Oracle
srbistan

Član broj: 201406
Poruke: 15887
*.dynamic.sbb.rs.

Sajt: mysql.rs


+2377 Profil

icon Re: Mikrokontroler i trijak18.11.2012. u 21:10 - pre 138 meseci
mozda sam omasio posto je basic bas gadan a ti i taj gadan basic gadno pises :( ali mnogo ti dugo traje ovaj interrupt, na tri mesta palis i gasis triak, ne vidim zasto, treba da palis i gasis triak iskljucivo iz interapta ako ces ovako da ga radis, ne mzoes da ga palis i gasis u glavnoj petlji, subprogramu i u interaptu, nije ni cudo da treperi... ti treba da imas jednu volatile varijablu koja definise "intenzitet" svetla i onda u interaptu u odnosu na tu varijablu kontrolises kvadrant u kom ti sijalica radi.. e sad varijanta da ti cimnes interapt kada prodjes kroz nulu (100Hz) pa onda u interaptu cekas 0-10ms da bi ugasio svetlo ti ne ostavlja dovoljno vremena za ostatak programa (a kazes da je veliki projekat, dakle taj mcu treba nekog djavola radit osim sto ce da glumi diak) tako da moras da radis sa nekim timerom + externim interaptom, kada dobijes externi interapt ti startas tajmer pa ti tajmer generise drugi interapt gde ces da ugasis lampu a u medjuvremenu radis sta ima da radis, tako da imas na ext int "pali lampu + u zavisnosti od zeljenog intenziteta setuje timer" a na timer interapt ugasis lampu... ostalo vreme u glavnoj petlji radi sta zelis i po potrebi samo promeni varijablu koja ti cuva intenzitet na zeljeni i ostavi interapte da odrade dimovanje


 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3860
adsl-101-63.teol.net.



+333 Profil

icon Re: Mikrokontroler i trijak19.11.2012. u 06:15 - pre 138 meseci
cek,
u tom bejziku
Wait x
znaci cekaj x sekundi, ili x milisekundi?
 
Odgovor na temu

m51
tu i tamo

Član broj: 244167
Poruke: 73
*.dynamic.isp.telekom.rs.



Profil

icon Re: Mikrokontroler i trijak19.11.2012. u 06:19 - pre 138 meseci
Za sada samo odgovor na post Veselinovića (žurim, pa Bogdanov post malo kasnije)

Wait -sekunde
Waitms-milisekunde
Waitus-mikrosekunde
 
Odgovor na temu

magnat
Dragan Stefanovic
Nezaposlen
Beograd

Član broj: 55338
Poruke: 418
*.dynamic.sbb.rs.



+23 Profil

icon Re: Mikrokontroler i trijak19.11.2012. u 09:20 - pre 138 meseci
Meni se chini da detekcija prolaska kroz nulu nije dobra, a i chemu optotrijak kad detekcija kroz nulu nije galvanski odvojena.

Ovde ima kako se to radi link

Testirao,probao, namam zamerki.

[Ovu poruku je menjao magnat dana 19.11.2012. u 10:31 GMT+1]
 
Odgovor na temu

m51
tu i tamo

Član broj: 244167
Poruke: 73
*.dynamic.isp.telekom.rs.



Profil

icon Re: Mikrokontroler i trijak19.11.2012. u 13:32 - pre 138 meseci
Da zahvalim aktivnima i odgovorim na neke nedoumice.

1.Način detekcije prolaska kroz nulu koji ja koristim se pominje na više mesta između ostalog i link.

2.Optokapler koristim zbog trijaka koji traži visoku struju za okidanje (taj je bio pri ruci), a i smetnja treba da prođe otpornik od 1M tako da..

3. Da pojasnim dodatno program koji je ovde znatno skraćen , a i takav generiše istu vrstu smetnje-sijalica vidljivo podrhtava.
Znači u glavnoj petlji proverava da li je sijalica dimovana od 0 do maksimuma. Ka da je to ostvareno drži je upaljenom još 11 sekundi
Code:
Do

If Kontrola = 1 Then
Disable Int0                                     'zabrani prekid ako je sijalica na maksimumu osvetljaja

Kontrola = 0
Portb.0 = 1                                     'kada jeste nastavi da drži sijalicu upaljenom 
Call Kontrola_vremena                       ' poziva potprogram koji obezbeđuje da sijalica bude upaljena još 10 sekundi
End If
Loop
  


evo tog potprograma i ovako sijalica ipak svetli još jedanaest sek (0 do 10)
Code:
Sub Kontrola_vremena
'ovim potprogramom se ostvaruje uslov da sijalica svetli jos 10 sekundi
'od trenutka kada postigne maksimalni osvetljaj
For I = 0 To Vreme_sek
Wait 1
Next I
Portb.0 = 0                                                 ' i onda se ugasi

End Sub Kontrola Vremena


u prekidnoj rutini fazno pomera trenutak paljenja trijaka. Korak pomeraja je 200uS *K. Promenljiva K se dekrementire svakim ulaskom u prekidnu rutinu. Kada dođe do 0 setuje se kontrola fleg koji govori da je osvetljaj na maksimumu
Code:
Prekid:
Disable Int0                                                'zabrani prekid
Decr K                                                      'korak je 200 uS a K je umnozak
For I = 0 To K
Waitus 200
Next I                                                      'kad prodje vreme faznog pomaka
Set Portb.0                                                 'setuj gejt trijaka
Waitus 50                                                   'sacekaj 50 uS
Reset Portb.0                                               'resetuj gejt
If K = 0 Then                                               'ako je ostvaren fazni pomeraj kroz celu poluperiodu
Kontrola = 1                                                'setuj kontrolni fleg
K = 45                                                      'priprema promenljive za novi ciklus pomeraja faze
End If

Enable Int0
Return
 
Odgovor na temu

magnat
Dragan Stefanovic
Nezaposlen
Beograd

Član broj: 55338
Poruke: 418
*.dynamic.sbb.rs.



+23 Profil

icon Re: Mikrokontroler i trijak19.11.2012. u 16:32 - pre 138 meseci
U tvojoj shemi se nevidi kako si napojio kontroler a i kako je spojen nulti vod sa GND kontrolera. Mislim da tu fali jedan
otpornik od 1M.
 
Odgovor na temu

m51
tu i tamo

Član broj: 244167
Poruke: 73
*.dynamic.isp.telekom.rs.



Profil

icon Re: Mikrokontroler i trijak19.11.2012. u 17:04 - pre 138 meseci
Tačno je da da sam gnd kontrolera spojio direktno na masu napajanja bez otpornika od 1M, što je razlika u odnosu na predlog iz linka koji sam napred postavio. Probaću sa tim pa javljam rezultate.

[Ovu poruku je menjao m51 dana 19.11.2012. u 18:32 GMT+1]
 
Odgovor na temu

m51
tu i tamo

Član broj: 244167
Poruke: 73
*.dynamic.isp.telekom.rs.



Profil

icon Re: Mikrokontroler i trijak19.11.2012. u 17:46 - pre 138 meseci
Stavio sam otpornik od 1M između gnd pina kontrolera i mase napajanja i stvar se ne menja.
 
Odgovor na temu

Genie_1984
Novi Sad

Član broj: 61150
Poruke: 93



+1 Profil

icon Re: Mikrokontroler i trijak19.11.2012. u 23:45 - pre 138 meseci
Pošto na šemi nema kristala verovatno koristiš interni oscilator koji radi na 8MHz pa bi trebalo da dodaš
Code:


$crystal = 1000000  'ako je FUSE bit CLKDIV8=1 



odnosno

Code:


$crystal = 8000000  ''ako je FUSE bit CLKDIV8=0



pošto je podrazumevana vrednost 4MHz a to se koristi za proracun Wait funkcija

Code:


End Sub Kontrola Vremena



Nedostaje "_" ali izgleda da to nije problem u BASCOM-u :)

Pozdrav
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: Mikrokontroler i trijak

[ Pregleda: 3926 | Odgovora: 12 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.