PIC12F629 light dimmer .hex projekt
Moderators: pedja089, stojke369, [eDo], trax
zastalo se ali nikako odustalo!
nisam bio kod kuce 2 tjedna, pa sam prije par dana dosao na tjedan dana moram nesto napravit pa me opet nema do pred kraj osmog mjeseca, tako da tad nastavljam, sad stvarno nemam vremena.
samo da jos malo prokuzim neke sitnice u pic c compileru i nebi trebalo onda bit problema to napravit!
nisam bio kod kuce 2 tjedna, pa sam prije par dana dosao na tjedan dana moram nesto napravit pa me opet nema do pred kraj osmog mjeseca, tako da tad nastavljam, sad stvarno nemam vremena.
samo da jos malo prokuzim neke sitnice u pic c compileru i nebi trebalo onda bit problema to napravit!
Pozdrav,I ja sam jos davno sklopio ovaj uredjaj ,ali nemam hex i skoro sam napisao program u mikrobasicu,i radi ,smanjuje i pojacava napon na sijalici preko dva tastera,naravno tom programu je potrebno jos dodati da se isprogramira za odredjeni rc5 daljinac i da radi,pa ako neko moze pomoci kako to uraditi u mikrobasicu,posto sve sto sam nalazio na netu je u asembleru.
evo koda:
program irdimmer
dim a,b as integer
sub procedure interrupt
if portc.0=1 then
a=a+1
end if
if portc.1=1 then
a=a-1
end if
for b=0 to a/4
delay_us(250)
next b
portb.1=1
delay_ms(1)
portb.1=0
ClearBit(INTCON,RBIF)
clearbit(intcon,intf)
end sub
main:
INTCON=0
INTCON.3=1
INTCON.7=1
option_reg.6=1
trisa=0
trisb=%00010001
trisc=%00000011
a=0
while true
delay_ms(5)
if a>120 then a=0
if a<0 then a=0
end if
end if
wend
end .
evo koda:
program irdimmer
dim a,b as integer
sub procedure interrupt
if portc.0=1 then
a=a+1
end if
if portc.1=1 then
a=a-1
end if
for b=0 to a/4
delay_us(250)
next b
portb.1=1
delay_ms(1)
portb.1=0
ClearBit(INTCON,RBIF)
clearbit(intcon,intf)
end sub
main:
INTCON=0
INTCON.3=1
INTCON.7=1
option_reg.6=1
trisa=0
trisb=%00010001
trisc=%00000011
a=0
while true
delay_ms(5)
if a>120 then a=0
if a<0 then a=0
end if
end if
wend
end .
Re: PIC12F629 light dimmer .hex projekt
Vidim da je ovde bila ziva diskusija. I ja sam se zainteresovao da napravim ovaj dimmer za mene, mene interesuje kako resiti prijem RC5 signala sa daljinskog, posto ima dosta bitova. Da li da napravim i interapt sa dolaskom start bita, pa da pokrenem unutrasnji timer pa da brojim bitove dok ne dodjem do ovih koji nose informaciju o tome koji je taster pritisnut?
Re: PIC12F629 light dimmer .hex projekt
Davno sam bavio picevima (presao sam na AVR), ali kak sjecam i tamo postoji capture mod timera. Ja bi napravio s tim.
Re: PIC 16F84A regulator
Čitajući ovu temu, čini mi se da ću ja morati je završiti. Kako PIC 12F629 ima "samo malo" pinova to ću upotrijebiti PIC 16f84A. Čini mi se uputno i zamišljam da napravim regulator (dimmer) sa tri tipke (on-off, up i down). Kako se povečava ili smanjuje to kontroliraju dva 7 segmentni LED. Kad se to napravi, onda se jednostavno podijeli sa "2" i dobijeno umjesto punovalnog, poluvalni regulator. Što će nam poluvalni regulator? Zna se da svaki vibrator, misli se na uređaj u industriji, radi na tom principu, a i klasična žarulja lijepo treperi. Kad smo več kod žarulja, uputno je napraviti da regulator radi u dva načina ili moda rada i to tako da polako diže postavljeni napon i ili ga zabljesne odmah. To, jasno riješiti softwareom, a ne nekakovim RC spojevima za zatezanje. 2 x 7LED pokazuje "00" do "99", što bi odgovaralo postotku otvaranja triaca. Regulator time dobiva vrlo važan vizualni efekat. Koliki teret možemo priključiti? Jasno ovisi o upotrebljenom triacu.To bi mogao izvesti u dvije varijante sa klasičnim elementima ( 100 mils razmak) ili sa SMD ( 50 mils razmak). Nameče se i vitroplast kvaliteta tiskanih pločica. Samo od sebe je riješenje da se PIC 16f84A zaokruži sa 5V mrežom, kako ne bi dolazio nikako u dodir sa mrežnim naponom. Jedno od pravila profesionalnih uređaja. Evo, ovako bi mogao još jednom oživjeti legendarni PIC 16F84A. Obvezatno programirati PIC 16F84A sa USB Programatorom. Ako ima zainteresiranih forumaša, mogao bi to napraviti u obadvije varijante.
[URL=https://meettomy.site]Beautiful Womans in your city[/URL]
Re: PIC12F629 light dimmer .hex projekt
Postaje zivo ovde Ono sto mi malko nije jasno je da kad gledam semu na http://www.ivica-novakovic.from.hr/Lightdimmer.htm" onclick="window.open(this.href);return false; vidim da taster ide direktno sa faze na pin GP0 mikrokontrolera bez ikakvih otpornika. Zar ne bi u tom slucaju mikrokontroler izgoreo Ili sam ja odvec umoran pa ne vidim u cemu je fora
Re: PIC12F629 light dimmer .hex projekt
Ovaj PIC 12F629, sasvim lijepo radi na 5V. Točno je i to da se stavlja otpornik od 4k7 do 10K uobičajno, da ograniči struju na pojedinim pinovima. Kako je to izgrađeno u visokoomskom ulazu ne očekuje se potrošnja, s obzirom da ulaz reagira praktično na napon. Ali to ne važi u ovom slučaju, jer taj pin GP0 spaja se na masu ili 0V PIC-a. To znači da je interno ugrađen otpornik, koji daje ulaznom pinu visoki nivo (1), a taster ga spušta na 0V ili niski nivo. Pin 1 je na +5V, a pin 8 na gnd. Sad je malo jasnije, zar ne? Osim toga to je na početku ovog topica ilustrirano.
[URL=https://meettomy.site]Beautiful Womans in your city[/URL]
Re: PIC12F629 light dimmer .hex projekt
sve je to lepo ali mi nisu jasne neke stvari...
zasto se mora programirati usb programatorom?
drugo 12f629 ima dovoljno pinova pa mi objasni zasto ne moze on. ako se ukljuci interini osc i iskljuci mclr na njemu ostaje 6 u/i linija. za dimer su dovoljne i 3(taster,pobuda za triak, i ulaz za ir signal) a moze i u drugoj varianti gde postoje tasteri za up/down to jeonda 5 pinova pa je opet sasvim dovoljno, osaje cak iu jedan pin prazan...
a RC% je i moguce primiti samo u pomocu interapta, i treba ga postaviti da se aktivira kada signal sa tsop-q padne na 0...
a drago ovo bas sa vibratorom i treperenjem zarulje te nisam raazumeo...
mislim da je stvarno zanemarljivo treperenje zarulje na 50Hz...
zasto se mora programirati usb programatorom?
drugo 12f629 ima dovoljno pinova pa mi objasni zasto ne moze on. ako se ukljuci interini osc i iskljuci mclr na njemu ostaje 6 u/i linija. za dimer su dovoljne i 3(taster,pobuda za triak, i ulaz za ir signal) a moze i u drugoj varianti gde postoje tasteri za up/down to jeonda 5 pinova pa je opet sasvim dovoljno, osaje cak iu jedan pin prazan...
a RC% je i moguce primiti samo u pomocu interapta, i treba ga postaviti da se aktivira kada signal sa tsop-q padne na 0...
a drago ovo bas sa vibratorom i treperenjem zarulje te nisam raazumeo...
mislim da je stvarno zanemarljivo treperenje zarulje na 50Hz...
Re: PIC12F629 light dimmer .hex projekt
Ovo se ne misli na vibrator u sex maštanju, več se koristi u industriji ili u medicini, tamo gdje treba napraviti neki pomak robe, recimo kod pakiranja bombona u vrečice ili slično. Osnova je djelovanje električnih impulsa u jednom smjeru, da naprave gibanje od nule na max. Kad bi se koristila punovalna regulacija, vibrator bi se kretao kao klatno a to znači od neg. max. preko nule do poz.max. a roba na njemu bi mirovala. Kad žarulju 230V, klasičnu priključimo na punovalni napon 50Hz ona svijetli i ne vidimo gašenje i palenje žarne niti, tu se upotpunosti slažemo, ali kod poluvalne (to je frekvencija od samo 25 Hz) regulacije, možemo dovesti žarulju u područje za treperi , odnosno vide se žarna nit slabije ili jače, slično kao žaruljica božičnog drvca! Pa podvukao sam, u žargonu, da sve dijelim sa "2". Tako dobivam 115 V , ali nemojmo iči u dubiozu sa time, več to prihvatimo kao takovo. Što se tiče interapta, njega koristim za regulaciju palenja triaca, što mi je bit, a ostala vremena za druge funkcije(tipke, led). Koristeči 7 seg.LED potrebno mi je 7 pinova za anode i 2 pina za katode To ih je ukupno 9. plus 3 tipke to ih je 11 i to nema mali 12f629. Nema govora da on nije dobar i kvalitetan, samo kod njega nema vizualizacije kako rekoh.Moramo priznati da vizualizacija puno podiže kvalitetu uređaja. Osim toga ja podjelim poluperiodu na 100 dijelova čime dobivan na povečanom rasteru, da kažem finijim podešavanju, u odnosu na autora sa PIC 12F629 koji ima unešen 60 dijelni raster, nemoj me hvatati za riječ. Jasno, sa PIC 16F84A izbjegao sam sve očekivane i iznenadne probleme iznešene u početku topica. A zašto USB Programator? Vidiš sad neznam kako da stavim tu adresu foruma, (novi forum) sa tom temom ovdje, ali taj USB programator sam prezentirao i nameče se logično, da sa njim programiram. Pa ne ćete mi valjda to uzeti za zlo?
[URL=https://meettomy.site]Beautiful Womans in your city[/URL]
Re: PIC12F629 light dimmer .hex projekt
i dalje ne kontam ovo sa vibratorom...
mislim ne shvatam poentu price...
no ne bitno ovo za usb programator naravno necu uzeti za zlo, nego mi nije jasno samo sto je bitno...
ja radim i sa paralelnim, i seriskim, i usb programatorima...
i rezultat je nekako uvek isti, heks bude upisan pic.
ipak mislim da je bolje rezervisati interap za RC5, a za detektovanje nule jednostavno napraviti petlju u kojoj se ceka da napon na nekom pinu padne na nulu.
i tada imas prvu nulu, tj pocetak prve polu peride, a pocetak druge polu periode se nalaza 10ms iza prve nule.
tako da jednostavno dovedes prvi impuls za pobudu triaka u nekom odredjenom kasnjenju u odnosu na nulu, a drugi impuls dovedes 10ms kasnije, i u obe polu periode se triak na istom mestu.
a vizualizacija je po meni ovde besmislena.
mislim stace ti bolja vizualizacija od sijalice...
mislim ne shvatam poentu price...
no ne bitno ovo za usb programator naravno necu uzeti za zlo, nego mi nije jasno samo sto je bitno...
ja radim i sa paralelnim, i seriskim, i usb programatorima...
i rezultat je nekako uvek isti, heks bude upisan pic.
ipak mislim da je bolje rezervisati interap za RC5, a za detektovanje nule jednostavno napraviti petlju u kojoj se ceka da napon na nekom pinu padne na nulu.
i tada imas prvu nulu, tj pocetak prve polu peride, a pocetak druge polu periode se nalaza 10ms iza prve nule.
tako da jednostavno dovedes prvi impuls za pobudu triaka u nekom odredjenom kasnjenju u odnosu na nulu, a drugi impuls dovedes 10ms kasnije, i u obe polu periode se triak na istom mestu.
a vizualizacija je po meni ovde besmislena.
mislim stace ti bolja vizualizacija od sijalice...
Re: PIC 16F84A regulator
Dobro, mislim da smo se dovoljno raspričali. Sukus svega je da li želite ili imate intersa ili ne želite i nemate intersas da napravim ovaj projekat, regulator triaca sa PIC 16F84. Na koji način ću napisati program to je moj osobni izbor, svakako malo drugačije u odnosu na ovaj pokušaj. Bez brige budi regulator će bezprijekorno raditi od min. do max. i to u sto jednakih koraka.
[URL=https://meettomy.site]Beautiful Womans in your city[/URL]
Re: PIC12F629 light dimmer .hex projekt
Samo da napomenem da kod takve regulacije sa triacom treba znati kada faza prolazi kroz nulu. Znaci treba pratiti i to, i to je jedan dodatni pin Njih opet bude dovoljno i sa tim malim PIC kontrolercicem.
Shemu imate na onoj stranici gdje je covjek vec napravio projekt, samo napisite svoj firmware i to je to. Sta lakse od toga...
Shemu imate na onoj stranici gdje je covjek vec napravio projekt, samo napisite svoj firmware i to je to. Sta lakse od toga...
Re: PIC12F629 light dimmer .hex projekt
Znaci sve u svemu zakljucak bi bio da se prijem signala sa daljinskog vrsi preko interapta i da se prolazak kroz nulu vrsi preko interapta jer ako bi program prolazio kroz petlju moglo bi da se desi da mu neka nula promakne
Re: PIC12F629 light dimmer .hex projekt
ako pic radi na 4 MHz-a i petlja ako se odradi u asembleru, sto zahteva 2 instrukcije.
za jednu instrukciju potrebna su 4 takta tako da se instrukcije izvrsavaju brzinom od 1MHz-a. a 2 instrukcije koje se vrte u krug izvrsavace se 500 000 puta u sekundi. tako da ni teoretski nepostoji sansa da neka nula proleti, cak i ako se petlja odradi u picbasicu, micro basicu u c-u ili bilo kojem visem programskom jeziku opet je brzina izvrsavanja te 2 instrukcije visa od 10 000 puta u sekundi...
za jednu instrukciju potrebna su 4 takta tako da se instrukcije izvrsavaju brzinom od 1MHz-a. a 2 instrukcije koje se vrte u krug izvrsavace se 500 000 puta u sekundi. tako da ni teoretski nepostoji sansa da neka nula proleti, cak i ako se petlja odradi u picbasicu, micro basicu u c-u ili bilo kojem visem programskom jeziku opet je brzina izvrsavanja te 2 instrukcije visa od 10 000 puta u sekundi...
Re: PIC12F629 light dimmer .hex projekt
slucajno sam nabasao na ovu temu,pa da i ja podelim svoja vidjenja sa vama:
i detekciju nule,i signal sa daljinskog se ceka u petlji,a samo kasnjenje se obradjuje u interaptu,dok prijem bitova sa daljinskog mora da bude u podprogramu,nikako interupt
bitna stvar kod koje su mnogi do sada gresili je da rutina za kasnjenje posle detekcije nule koja se nalazi u interaptu mora da bude sto kraca,znaci NIKAKO neki delay,vec samo koristiti timer
znaci prema mom iskustvu kad pocne da prima bitove sa daljinskog(ja sam koristio detekciju NEC protokola,mada je slicno i sa RC5),prekid prijema jednog bita koji traje 560us ne bi smeo da bude duzi od 100,200us.
ukratko:
-svaki prolaz kroz nulu generise interupt u kome se samo startuje timer i podesava na zeljeno kasnjenje
-timer interupt salje impuls na gate triaca u trajanju od 100us maksimalno,i podesava se kasnjenje na 10 ms
-sledeci prolaz kroz nulu(ustvari ima 2 prolaska kroz nulu,ali PIC detektuje samo jedan ako se stavi na falling edge)ponovo generise interupt i opet se podesava zeljeno kasnjenje ITD
Vidi se da ova rutina za obradu interupta(jedna za input capture ,druga za timer interupt)traju veoma kratko,pa samim tim ne mogu da uticu na prijem jednog bita koji traje min 1120us
sto se tice prijema bitova sa daljinskog,kod NEC protokola idu prvo 8 bitova koji nisu komanda nego adresa uredjaja pa se oni odbacuju
sledecih 8 su isto adresa ,samo invertovana,pa se i oni odbacuju
odbacuju-malo da pojasnim kako:
for(i=0;i<16;i++){
while( PORTA.F0==1){
}
while(PORTA.F0==0){
}
}
sledecih 8 bitova su komanda,i oni se primaju i smestaju u neku promenljivu:
for(i=0;i<8;i++){
while(PORTA.F0==0){
}
Delay_us(600);
if(PORTA.F0==1){
TST=TST*2+1;
Delay_us(1120);
}
if(PORTA.F0==0) TST=TST*2;
}
da pojasnim,kod NECa jedinica ima 560us signal,pa 560us pauza,a nula 560us signal,pa 1680 us pauza
znaci kad padne sa 1 na nula cekam 600us(malo vise od 560 da budem siguran da je proslo dovoljno vremena,ali i ne mnogo vise,jer bi interupt mogao da pomeri sve za 100us),znaci i sa interuptom i bez njega sa 600us sam sigurno na pocetku sledeceg bita ako je tekuci bit bio 1 ili na pocetku perioda od 1120us ako je tekuci bit bio 0
malo je konfuzno,ali ako uspem da postavim sliku bice mnogo jasnije
za sada toliko od mene i pozz
i detekciju nule,i signal sa daljinskog se ceka u petlji,a samo kasnjenje se obradjuje u interaptu,dok prijem bitova sa daljinskog mora da bude u podprogramu,nikako interupt
bitna stvar kod koje su mnogi do sada gresili je da rutina za kasnjenje posle detekcije nule koja se nalazi u interaptu mora da bude sto kraca,znaci NIKAKO neki delay,vec samo koristiti timer
znaci prema mom iskustvu kad pocne da prima bitove sa daljinskog(ja sam koristio detekciju NEC protokola,mada je slicno i sa RC5),prekid prijema jednog bita koji traje 560us ne bi smeo da bude duzi od 100,200us.
ukratko:
-svaki prolaz kroz nulu generise interupt u kome se samo startuje timer i podesava na zeljeno kasnjenje
-timer interupt salje impuls na gate triaca u trajanju od 100us maksimalno,i podesava se kasnjenje na 10 ms
-sledeci prolaz kroz nulu(ustvari ima 2 prolaska kroz nulu,ali PIC detektuje samo jedan ako se stavi na falling edge)ponovo generise interupt i opet se podesava zeljeno kasnjenje ITD
Vidi se da ova rutina za obradu interupta(jedna za input capture ,druga za timer interupt)traju veoma kratko,pa samim tim ne mogu da uticu na prijem jednog bita koji traje min 1120us
sto se tice prijema bitova sa daljinskog,kod NEC protokola idu prvo 8 bitova koji nisu komanda nego adresa uredjaja pa se oni odbacuju
sledecih 8 su isto adresa ,samo invertovana,pa se i oni odbacuju
odbacuju-malo da pojasnim kako:
for(i=0;i<16;i++){
while( PORTA.F0==1){
}
while(PORTA.F0==0){
}
}
sledecih 8 bitova su komanda,i oni se primaju i smestaju u neku promenljivu:
for(i=0;i<8;i++){
while(PORTA.F0==0){
}
Delay_us(600);
if(PORTA.F0==1){
TST=TST*2+1;
Delay_us(1120);
}
if(PORTA.F0==0) TST=TST*2;
}
da pojasnim,kod NECa jedinica ima 560us signal,pa 560us pauza,a nula 560us signal,pa 1680 us pauza
znaci kad padne sa 1 na nula cekam 600us(malo vise od 560 da budem siguran da je proslo dovoljno vremena,ali i ne mnogo vise,jer bi interupt mogao da pomeri sve za 100us),znaci i sa interuptom i bez njega sa 600us sam sigurno na pocetku sledeceg bita ako je tekuci bit bio 1 ili na pocetku perioda od 1120us ako je tekuci bit bio 0
malo je konfuzno,ali ako uspem da postavim sliku bice mnogo jasnije
za sada toliko od mene i pozz
Re: PIC12F629 light dimmer .hex projekt
Zna li neko kako je realizovano napajanje za PIC na ovoj verziji dimmera: http://www.ivica-novakovic.from.hr/Ligh ... %20v.2.htm" onclick="window.open(this.href);return false;
Dimmer znači ima napajanje kroz sijalicu, i kada je sijalica isključena Vjerovatno jer PIC troši toliko malo struje da sijalica se koristi kao obični provodnik.
Eh, šta se desi kada se sijalica uključi na 100% jačine? Kratkospaja se napajanje PIC kontroleru... kad onda on uspije "uhvatiti" to malo energije za svoj rad?
Vjerovatno ne zatvara triak na 100% vremena, nego na 220V-5V, a to smanjenje efektivnog napona se na sijalici i ne primjećuje kao gubitak, ako me razumijete
Napajanje za PIC bez transformatora: http://ww1.microchip.com/downloads/en/A ... 00954A.pdf" onclick="window.open(this.href);return false;
Neka verzija primitivnog dimmera bez PIC kontrolera, ali se spaja u seriju sa potrošačem UMJESTO prekidača: http://ourworld.compuserve.com/homepage ... dimmer.gif" onclick="window.open(this.href);return false;
Dimmer znači ima napajanje kroz sijalicu, i kada je sijalica isključena Vjerovatno jer PIC troši toliko malo struje da sijalica se koristi kao obični provodnik.
Eh, šta se desi kada se sijalica uključi na 100% jačine? Kratkospaja se napajanje PIC kontroleru... kad onda on uspije "uhvatiti" to malo energije za svoj rad?
Vjerovatno ne zatvara triak na 100% vremena, nego na 220V-5V, a to smanjenje efektivnog napona se na sijalici i ne primjećuje kao gubitak, ako me razumijete
Napajanje za PIC bez transformatora: http://ww1.microchip.com/downloads/en/A ... 00954A.pdf" onclick="window.open(this.href);return false;
Neka verzija primitivnog dimmera bez PIC kontrolera, ali se spaja u seriju sa potrošačem UMJESTO prekidača: http://ourworld.compuserve.com/homepage ... dimmer.gif" onclick="window.open(this.href);return false;