[ lm741 @ 08.12.2008. 20:36 ] @
Već duže vreme pokušavam da rešim problem u vezi regulacije el. motora sa četkicama koji na sebi ima taho-generator. Neide mi,..
Naišao sam na jednu pločicu, izvađenu iz mašine za veš, koja ima na sebi PIC 16c56 A, direktno njegov pin preko otpornika od 180 oma, reguliše trijak.
pa me zanima dali bi neko od vas bio raspoložen da mi malo bliže pojasni sam program tj. deo koda koji reguliše gejt trijaka.

-Dali je moguće snimiti postojeći program iz 16c56 A
-Dali možete navesti neki primez i da objasnite instrukcije

mnogo bolje i od samih kineza ovladao sam paljenjem i gašenjem LEDica ali samo u bicbasicu

unapred puno hvala,..
[ bogdan.kecman @ 08.12.2008. 23:23 ] @
Citat:

Dali je moguće snimiti postojeći program iz 16c56 A


ako je program "nezasticen" citanje programa iz 16c56A bi trebalo da je prilicno jednostavno uz bilo koji programator.

citanje "zasticenog" programa sa 16C56A moze da bude problem ali nisam siguan. 16C84 je prilicno nesiguran, bilo je par fora sa "menjanjem ulaznog napona" koji je resetovao protect bitove. ako to ne radi na 16C56A jedina varijanta je turpija, mikroskop i uv svetlo ... generalno preskupa zabava za "programator ves masine"...

inace, proces za resetovanje protect bitova u velikom procentu ubija mikrokontroler...

ne znam koliko je procedura legalna ili ne ali evo je a moderator neka moderise ako ima potrebe

Citat:

1. I use the PIC16 programmer from Farnell Components (part no. 459-471).

2. The standard programming software supplied is ASLPIC from Application Solutions Ltd.

3. Install the 16C84 into a turned pin socket with pin 14 (VDD) cut off. Attach a flying lead to the stub of pin 14 and connect this to a power supply (0V to +14V) sharing a common ground with the programmer.

4. Run ASLPIC.
Insert the PIC+socket into the ZIF on the programmer board and switch VDD to 5V.
From the menu set the CP configuration fuse to OFF.
Now set VDD to VPP-0.5V (approx 13.5 volts).
Program the configuration fuses. (Reply on screen saying error invalid?? Ignore this error and set VDD back to 5V.)
Switch VDD supply off at the power supply.
Switch off programmer supply.
Wait 10 to 20 secs.
Switch on programmer supply.
Switch the VDD supply to 5V.
Read PIC.

What may be confusing to people is the error message displayed when programming the configuration fuses, and next not waiting for the charge on the cells to fall back to 5 volts after setting the fuses. This is why I say switch off for 10 to 20 secs, but don't forget to reset the VDD supply to 5 volts first.


vezano za:
Citat:

Već duže vreme pokušavam da rešim problem u vezi regulacije el. motora sa četkicama koji na sebi ima taho-generator.


izlaz sa pic-a na tom pinu je PWM (pulse width modulation)... a uz pomoc triaka radi "phase control"

mozes da procitas vise o tome ovde: http://electronicdesign.com/Articles/ArticleID/6168/6168.html

ili pogledaj MicroChip APP NOTE AN958: http://ww1.microchip.com/downloads/en/appnotes/00958a.pdf koji ti daje semu kako to da radis sa pic-om i triakom

[ Stojan Trifunovic @ 08.12.2008. 23:57 ] @
Program iz 16C56 mikrokontrolera moguce je ocitati jedino u slucaju da nije zasticen, sto ne mozete znati sve dok ga ne odlemite i stavite u citac (programator). Zastita je izvedena preko konfiguracionih bitova (Code Protection), i ukoliko postoji, ocitavanje jednostavno nije moguce (bar ne legalnim nacinima). Gore pomenuti nacini niposto nisu sigurni ni pouzdani.

Cak i ukoliko biste uspeli da iscitate program, on ne bi bio u PicBasic-u (.bas fajlu), vec u asembleru. Za konvertovanje .hex fajla u asemblerski (.asm fajl) koriste se disasemblerski programi.

Postupak analize programa naziva se reverzni inzinjering, i uopste nije jednostavan. Nijedan RAM registar opste namene (General Purpose Register) u disasembovanom fajlu nece imati simbolicki naziv (BROJAC, PAUZA...), vec cete im namenu morati nagadjati na osnovu analize asemblerskog programa.


Kod koji regulise gejt triaka je prilicno jednostavan. Na osnovu signala sa tahometra odredjuje se trajanje ukljucenosti triaka kao po PWM (Pulse Width Modulation) principu. U slucaju da je brzina prevelika, smanjuje se duzina impulsa, a ukoliko je premala, duzina impulsa se povecava. Naravno, tacna brzina u velikoj meri zavisi od oblika signala sa tahometra (mozda je on invertovan, mozda se dovodi na ulaz sa smitovim trigerom, mozda je analogni pa se digitalizuje pre dovodjenja u PIC...).

Kada je pin na koji je povezan triak (preko otpornika) na logickoj 1, onda ce motor ubrzavati, a kada je na logickoj 0, motor ce usporavati (jer nema napona napajanja). Ukoliko se ovo ukljucenje/iskljucenje odvija prilicno brzo, motor ce se zbog inercije ponasati kao da neprestano radi, ali sa brzinom koja je odredjena PWM signalom.

Buduci da PIC16C56 nema hardverski PWM, verovatno je on realizovan softverski.

Ukoliko vec poznajete PIC Basic probajte na njemu eksperimentisati sa menjanjem intenziteta svetlosti LED po istom principu. Onda umesto LED povezite triak, i to je to. Iz bezbednosnih razloga preporucujem Vam da galvanski odvojite niskonaponski od visokonaponskog dela (optokaplerom ili direktno optotriakom). Takodje, pre probe proverite da li je napon isti (mozda se u masini koristio jednosmeran ili nizi napon za pogon motora) kako ne bi unistili motor.
[ bogdan.kecman @ 09.12.2008. 00:54 ] @
Odlican primer za softwerski PWM (u assembleru) za pic16x84: http://www.phanderson.com/PIC/16C84/pwm.html

neki drugi primeri istog autora (uglavnom asm): http://www.phanderson.com/PIC/

odlicni primeri za malo "jace" pic uC-ove (opet uglavnom asm): http://www.winpicprog.co.uk/pic_tutorial.htm

primer software pwm-a u basic-u: http://www.tigoe.net/pcomp/code/category/Picbasic%20Pro/158

...

za disasembliranje hex fajla mozes da koristis mplab (microchip-ov ide), za simulaciju / debug mozes da koristis ili mplab direktno ili http://www.oshonsoft.com/pic.html (nije dzabe ali ima trial verzija)

...

btw ja sam onom procedurom uspeo da procitam jedan 16C84 i jedan 12Fxxx (mislim da je bio 12F508 ali ne mogu da se zakunem). znam ljude koji su probali i spalili uC ... od cega zavisi % uspesnosti (meni je 100% 2 od 2, opet vecina ljudi koje znam kazu da im je uspesnost manja od 10% ) pojma nemam .. u svakom slucaju ne pokusavati proceduru ako ne racunate na 99% sansu da ce dovesti do spaljenog cipa koji vise ne radi i ciji je sadrzaj nepovratno izgubljen ...

sto se programatora za ves masinu tice, prilicno je jednostavnije saznati sta radi sa boljim logic analyzerom nego cupanjem asm koda... nesto ovako: http://www.saleae.com/logic/ ume da bude extra korisno u takvim situacijama

[ lm741 @ 09.12.2008. 14:33 ] @
evo me,.. još jutros sam video vaše postove ali nikako nisam imao vremena da odgovorim.
hvala vam obojici za odgovore i linkove,..

jako me to sad zanima što mi je Stojan rekao da može jednostavno da se reguliše gejt trijaka,..
sad sam malo bolje pogledao pločicu,gore pomenutu, i vidim da su na PIC-u spojena DVA(2) pina,pin 12 i 13 jedan pored drugog pa sa njih vodi na otpornik pa na gejt.
ako sam dobro razumeo odnos pauza---setovan pin, regulišu brzinu otvaranja i zatvaranja
To ću već odmah da isprobam sa optotrijakom pa da vidim dal fercera,..ali
nije mi baš jasno kako bi trebao program da izgleda koji očitava signal sa taho,..
signal sa taho je analogni...na max. broju obrtaja daje AC 35 v
dali to znači da bi i moj budući pic trebalo da ima AD ulaz?

[ bogdan.kecman @ 09.12.2008. 15:40 ] @
proveri da li uopste taho sa motora ide na pic ... ja sam vidjao cesto da ljudi kontrolisu motor kompletno ignorisuci taj feedback :(

sto se tice 2 pina, ja sam malo duduk za analognu tehniku tako da ne znam koliko struje je potrebno da bi otvorilo triak, moguce da koristi 2 pina da bi dao vise struje ... jedan pin moze da da tek nekoliko mA tako da sa 2 pina mozda ima dovoljno da otvori triak bez nekog pred tranzistora - kao sto rekoh, ovo sam mozda lupio :) - nisam nikad u zivotu koristio triak :D

vezano za PWM, RMS napon se racuna:
Vp = peak voltage (u tvom slucaju 5V ako pic radi na 5V ili 3V ako radi na 3V :) )
D = PWM duty cycle (0-1)
Vr = RMS voltage

Vr = Vp * sqrt(D)

menjanjem duty cycle-a ti na izlazu imas RMS napon od 0 (za D=0, tj duty cycle 0%) do Vp (za D=1, tj duty cycle 100%)

E, sad, ako to ide preko tranzistora na DC motor, brzina se menja prostom cinjenicom da ce DC motor da se vrti sporije na manjem RMS naponu. Moras samo da budes siguran da je frekvencija PWM-a dovoljno velika da ne bi imao cudne zvuke iz motora :D

Kod kontrole AC motora, ovaj PWM radi "phase shifting" i na taj nacin kontrolise brzinu rada motora, objasnio ti je stojan u jednom od proslih postova + imas full objasnjenje sa grafikonima u microchipovom app note-u AN958 (imas link u jednom od prethodnih postova na pdf)... u teoriji radi prilicno slicno kao za DC motor

Ovo je inace "najprostiji" nacin za kontrolu rada motora, ima jos nekoliko njih ali su prilicno kompleksni i vezuju se za direktan spec motora

sto se tice citanja analognog feedback-a sa tacho-a, ako je tacno da je taj signal 0-32V obican voltage divider (2 otpornika) moze to da svede na 0-5V sto mozes da procitas bilo kojim pic-om sa AD ulazom. ako neces da koristis AD ulaz na pic-u (ili ga nemas) mozes da koristis voltage to freq kolo i onda koristis counter na pic-u da procitas feedback info ( http://freecircuitdiagram.com/...rter-vfc-using-ca3130-op-amps/ na primer)
[ lm741 @ 09.12.2008. 16:08 ] @
Bogdane pozdrav, čitam sa linkova koje si gore postavio,..
za tvoju ideju da izbegnem taho, baš nisam siguran,
mopram probati ali mislim da taho mora biti da bi mogla da se postigne nekakva ravnoteža zadatog i trenutnog stanja(broja obrtaja)
jer nije motoru isto sa i bez tereta, mora se održati broj obrtaja a pretpostavljam da je taho taj, sa kojim se upoređuje zadati napom

Probao sam sa klasičnom šemom regulacije trijaka i sve je ok. dok ne nastane promena tereta, pa na osnovu tog pretpostavljam da u takvom slučaju bi trebalo da se produži vreme provođenja trijaka, znači da neko ili nešto treba tom trijaku da "podeblja protok" ili smanji kad nema tereta
a taj neko ili nešto bi trebalo da bude PIC koji "posmatra" šta se dešava na taho-generatoru,.. sve je to meni otprilike jasno ali ne znam kako sve to da napišem u programu.
[ bogdan.kecman @ 09.12.2008. 16:41 ] @
nemoj me pogresno svatiti, ja rekoh da sam video da ljudi kontrolisu bez feedback-a, ne da je to dobro resenje :)

da bi mogao da odrzis brzinu obrtaja, potrebno je da koristis taj feedback, ima i fora da zakacis i accelerometar pa ako uredjaj krene da "skakuce" (posebno ves masina) da usporis po potrebi ...

Citat:

znači da neko ili nešto treba tom trijaku da "podeblja protok"


"podebljas" protok tako sto povecas duty cycle, "potanjis" protok tako sto smanjis duty cycle.

primer (sa linka za picbasic software pwm iz jednog od mojih prethodnih postova samo izmenjen - onaj primer sa linka radi tacno ono sto ti treba, cita ulaz sa ADC-a i menja pwn duty cycle u skladu sa tim):
Code:


dutyCycle var byte  ' OVDE CUVAS DUTY CYCLE

dutyCycle = 0 ' POCNI SA 0%

main:
    ' PWM the PORTD.2. The third parameter is the number of
    ' cycles to repeat the PWM.  at 4MHz, 1 cycle = 5 ms.
    pwm portd.2, dutyCycle, 100 'OVO ZOVE PICBASIC SOFTWARE PWM RUTINU
    
    ' NA SVAKIH 100 ciklusa (500ms) povecaj dutyCycle za 1 (jedan ciklus je 256 tikova)
    dutyCycle = dutyCycle + 1

    'DUTY CYCLE NE SME DA BUDE VECI OD 255, tako da ako smo stigli do 255, vrati na 0
    If dutyCycle > 255 Then dutyCycle = 0
goto main


probaj ovo sa obicnom ledarom i bice ti jasnije kako sljaka, svakih 500ms ce "malo jace" svetleti i tako 255 koraka dok ne dodje do najsvetlijeg (127sec) i onda opet krece od nule ka najsvetlijem ....

dakle ovaj primer svakih pola sekunde poveca dutyCycle za 1 (od 0 do 255)

primer je u picbasic-u posto si rekao da njega imas ...

mozes i sam da generises pwm paljenjem i gasenjem pinova ... na primer (glup source ali mozda dobar da svatis sta se desava, ja ne znam basic tako da cu ga ocukati u c-u ali kapiram da ces svatiti poentu bez obzira na jezik)

Code:

TRISD = 0x0;
PORTD.F1 = 0;

// 50% duty cycle
// dakle, vreme koliko je port 1 je isto "10 taktova" koliko i vreme koliko je port 0 "10 taktova"
while(1){
PORTD.F1 = 1;
nop(); //1
nop(); //2
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop(); //10
PORTD.F1 = 0;
nop(); //1
nop(); //2
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop(); //10
}

// 25% duty cycle
// vreme za 1 je 5 taktova, vreme za 0 je 15 taktova
while(1){
PORTD.F1 = 1;
nop(); //1
nop(); //2
nop();
nop();
nop(); //5

PORTD.F1 = 0;
nop(); //1
nop(); //2
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop(); //10
nop();
nop();
nop();
nop();
nop(); //15
}

// 75% duty cycle
// vreme za 1 je 15 taktova, vreme za 0 je 5 taktova
while(1){
PORTD.F1 = 1;
nop(); //1
nop(); //2
nop();
nop();
nop();
nop();
nop();
nop();
nop();
nop(); //10
nop();
nop();
nop();
nop();
nop(); //15

PORTD.F1 = 0;
nop(); //1
nop(); //2
nop();
nop();
nop(); //5
}


ja ne umem jednostavnije da ti objasnim

generalno, uC-ovi su toliko jeftini danas da za 1-2 komada, uvek mozes da uzmes neki sa hardware pwm-om (cisto da se ne smaras sa tim ako nisi siguran u sebe), adc-om i nemas problem ... mada, ja ti iskreno preporucujem da sednes i isprobas sve ovo na nekom malom pic-u, znacice ti za kasnije
[ lm741 @ 09.12.2008. 16:57 ] @
mnogo ali mnoga hvala za tako ključne odgovore,..
upravo prevrćem po linku sa primerima u PBP
sad imam poprilično puno informacija pa ih polako analiziram, pogotovo na engleskom malo sporije dok neshvati suštinu pa idem korak po korak

već u glavi kreiram varijantu sa malim dc motorom umesto onog primera koji se predložio sa ledicom,
pa sve tako dok to sve meni nebude potpuno jasno,..
bogami ovo će biti zanimljiva noć,..
hvala ti pa do javljanja i nekih rezultata,..






nerazumem ljude koji kažu da im je dosadno,...
[ bogdan.kecman @ 09.12.2008. 17:27 ] @
ako imas uC sa ADC-om, mozda ti je bolja varijanta da probas sa ledarom i nekim svetlosnim detektorom (svetlosno osetljivi optornik na primer "ldr") .. tako da mozes na ADC-u da citas intenzitet svetla u prostoriji. ledaru stavis odma pored "svetlosno osetljivog stagod" i menjas sjaj ledare (pomocu menjanja duty cycle-a pwm-a) tako da uvek imas isto ocitavanje na ldr-u, onda mozes da se igras pa palis i gasis svetlo u prostoriji, osvetlis ldr nekom slabom lampom i slicno i vidis kako se menja intenzitet ledare (ako lepo osvetlis ldr ledara bi trebalo da se ugasi, ako pogasis sva ostala svetla ledara bi trebalo da svetli max sjajem) ...

to ti je prilicno slican problem tom koji hoces da resis (menjanje dc-a da bi regulisao brzinu motora i citanje taho-a na adc-u za feedback)

obrati paznju da sve ovo sto ti ja pricam ima pozadinu iskljucivo sa DC-om (DC motori sa rotary encoderima i slicno).. dakle to sve teoretski radi tako i sa AC motorima ali ja to sa AC motorima nikad nisam probao tako da mozda ima nekih zackoljica za koje ne znam ... ako neko ima iskustva sa kontrolom AC motora, moze da dopise ako ima neki dodatni trik :)

sto se dela sa programiranjem tice, ja basic nisam ni za sta trosio preko 20+ godina .... pic (cak i 12f / 16f) programiram u c-u (mikroC i CSS C) a za 18f koristim microchip-ov MCC18 C kompajler koji je odlican. mikroC imas demo koji je fully functional samo ima limit na 2K za kod (ili tako nesto), to ti je vise nego dovoljno za sve testove koje hoces da probas. ljudi hvale boostC, odlican je i prilicno jeftin, vrlo dobra podrska, isto tako ima demo verziju koja je potpuno funkcionalna samo ogranicena na velicinu programa (opet dovoljno za bilo koje testiranje) ... ja i dalje preferiram mikroC zato sto je domaci proizvod, ima odlicnu podrsku, odlicno radi, veliku skupinu pratecih biblioteka, lak za koristenje... ima par mana (ne moze da se integrise sa mplab-om, debagiranje ide samo kroz njihove dev alate poput easypic5 i slicno, ne ume da trosi microchipov pickit2/3, icd2/3 etc...) no po meni, najveca mana mu je sto mu biblioteke dolaze "closed source" sto mu vrlo umanjuje vrednost ... (na primer CSS C dolazi sa mnogo vecim brojem biblioteka nego mikroC i sve dolaze u source-u, doduse, CSS C kosta par puta vise od mikroC-a)
[ lm741 @ 09.12.2008. 18:57 ] @
bio sam u radionici, završavo nešto a sada idem da pripremam za eksperimente,malo će potrajati,...

što se programiranja tiče i u kom jezik, trenutno se nebih usudio na C ili bilo koji iz razloga što sam se tek sada malo snašao u PB
dok sve to malo ne ukapiram, kompletno to okruženje i način razmišljanja, znaš ono kao ptić dok ne nauči da leti ne napušta gnezdo a vremenom proširuje okvire svog kretanja,..


odoh,..hvala ti a čim nešto eto mene,..
[ Stojan Trifunovic @ 09.12.2008. 22:53 ] @
Vezano za razliku izmedju DC i AC motora!

Buduci da se pominje motor sa cetkicama, on bi (uz pomenuti PWM) trebao raditi priblizno isto kao DC. Medjutim, ponekad se radi sto preciznije kontrole, (obicno cisto omskih potrosaca) primenjuje i detekcija prolaska mreznog napona (sinusoide) kroz 0, i regulise trenutak ukljucenja triaka od 0 pa iskljuceno stanje, pa ukljuceno stanje do sledeceg prolaska kroz 0, pa ispocetka.
Ukoliko se blize pogleda takav princip, ocigledno je da je to klasican PWM kod koga puna perioda traje od jednog do drugog prolaska kroz 0 (poluperioda sinusnog mreznog signala), sa neprovodnim stanjem (pauza) na pocetku, a provodnim (impuls) od zeljenog trenutka ukljucenja do sledeceg prolaska kroz 0.
Moguce da ce bez ovoga motor pomalo seckati (npr. jednom se pogodi da se motor ukljuci bas malo ispred prolaska sinusoide kroz 0 a iskljuci malo nakon prolaska dok se sledeci put ukljuci malo ispred maksimalne amplitude sinusoide i iskljuci malo nakon prolaska), ali tahogenerator ce ga vec ispeglati.


Vezano za spajanje dva pina!

Dva pina se spajaju kao sto je Bogdan pretpostavio upravo zbog obezbedjenja vece struje za sigurno okidanje triaka. Verovatno je triak malo "jaci", pa mu je potrebna veca pobudna struja. Jedan pin moze dati do oko 25mA, a dva do oko 50mA. Ovo su granicne vrednosti, i ne sme se dozvoliti trajan rad mikrokontrolera pod takvim uslovima, tako da je ovim nacinom struja ravnomerno rasporedjena na oba pina. Kod optotriaka (i optokaplera) nema ovih problema.


Vezano za regulaciju tahogeneratorom!

Buduci da tahometar daje i do 35V AC, a da PIC16C56 nema ADC, najverovatnije se brzina merila ne merenjem napona vec merenjem frekvencije AC napona njegovim digitalizovanjem tako da se odseca napon veci od 5V (preko rednog otpornika i zener diode od 5V) i tako dovede u PIC. Za ovo je najpogodnije koristiti ulaz sa smitovim trigerom. Tako je u stvari najlakse dobiti konvertor AC napona u frekvenciju, bez ikakvog dodatnog interfejsa osim jednog otpornika i jedne zener diode.
Na osnovu stabilne vremenske baze (npr. tajmera ili softverskog brojaca) i broja impulsa sa ulaza, moze se lako odrediti frekvencija, koja u stvari predstavlja broj obrtaja motora. Kako je najlakse ovo izvesti? Pa ukoliko se u 1S javi samo 1 impuls, ocigledno je da se motor okrece brzinom od 1 obrtaja u sekundi. Sa 10 impulsa, motor se okrece brzinom od 10 obrtaja u sekundi.
Algoritam sa takvim konvertorom i tri brzine bi mogao izgledati ovako (nije u pitanju program, vec pseudokod na osnovu koga se moze shvatiti princip).

if FREKVENCIJA>=0 and FREKVENCIJA<10 then IMPULS=150; PAUZA=50

if FREKVENCIJA>=10 and FREKVENCIJA<20 then IMPULS=100; PAUZA=100

if FREKVENCIJA>=20 and FREKVENCIJA<30 then IMPULS=50; PAUZA=150

Licno, obozavam resenja sa konverzijom mernih velicina u frekvenciju. Preciznost je izuzetna.

[Ovu poruku je menjao Stojan Trifunovic dana 10.12.2008. u 07:55 GMT+1]
[ lm741 @ 10.12.2008. 00:44 ] @
e Stojane ovo mi je zanimljivo sa frkvencijom, pa da, povećanjem brzine rotora povećava se i frekvencija na taho generatoru, jako zanimljivo
mislim da si u pravu za zenericu i otpornik a sutra pogledam pa baš javim dali su i "oni" tako rešili

primeri za vežbu koje mi je Bogdan predložio nisam u prilici da izvedem u potpunosti,..nemam mcu sa AD ulazom pa sam deo vežbe izveo sa 16f84,..
fenomenalno,..prvo sam sa led probao razne varijante pa sam ipak MORAO probati preko opto tranzistora (4N 26) reguliso BC547 pa sa njim mali DC iz vokmena.Sa motorom je ipak zanimljivije,.. Super, sada mi je već kasno da preko optotrijaka (MOC 3040) probam da regulišem veliki trijak, e...da setio sam se da je na onoj gore pomenutoj pločici sasvim običan trijak BT 139 (po pitanju ona dva vezana pina)
sutra nastavljam,..pozdrav!!





[ lm741 @ 10.12.2008. 00:57 ] @
Stojane dali to znači da je taho generator sa zenericom i otpornikom praktično kao optički enkoder?? hoču reći da bi trbalu očitavati digitalni signal,..ima nema polu periode,..
[ Stojan Trifunovic @ 10.12.2008. 07:10 ] @
Citat:
lm741: dali to znači da je taho generator sa zenericom i otpornikom praktično kao optički enkoder?

Zavisi sta podrazumevate pod optickim enkoderom. Ukoliko mislite na apsolutne onda nije, jer oni sluze za davanje trenutnog apsolutnog polozaja osovine, a ne brzine njenog kretanja. Medjutim, relativni se mogu koristiti jer u daju potpuno isti signal kao i predlozeni nacin digitalizacije AC signala. Tacnije dovoljna je samo jedna njihova polovina (jedan izlaz umesto oba), jer nije potreban podatak o smeru kretanja osovine.

Vise o ovim enkoderima imate na http://en.wikipedia.org/wiki/Rotary_encoder

Imate u Microchipovom AN519 detaljniji opis resenja kretanja kompjuterskog misa sa ovakvim enkoderima. Samo za detekciju, ali i to je nesto.

Inace i mikrokontrolere bez ADC mozete koristiti za detekciju analognog napona uz par hardverskih trikova. Pogledajte Microchipove AN512, AN513 i AN863.
[ lm741 @ 10.12.2008. 22:18 ] @
Code:
dutyCycle var byte  ' OVDE CUVAS DUTY CYCLE

dutyCycle = 0 ' POCNI SA 0%

main:
    ' PWM the PORTB.2. The third parameter is the number of
    ' cycles to repeat the PWM.  at 4MHz, 1 cycle = 5 ms.
    pwm portB.1, dutyCycle, 500 'OVO ZOVE PICBASIC SOFTWARE PWM RUTINU
    
    ' NA SVAKIH 500 ciklusa (500ms) povecaj dutyCycle za 1 (jedan ciklus je 256 tikova)
    dutyCycle = dutyCycle + 1

    'DUTY CYCLE NE SME DA BUDE VECI OD 255, tako da ako smo stigli do 255, vrati na 0
    If dutyCycle > 255 Then dutyCycle = 0
goto main




kod koji sam upuco u 16f84. sa ledicom dobro radi, sa i bez optotranzistora, sa malim motorčićem i sa običnom sijalicom, ali
nikako sa optotrijakom, radi isprekidano, a koristio sam MOC 3040, MOC 3041 (u sebi imaju detekciju prolaza kroz nulu)
sve jedno dali sam nakačio sijalicu 100W ili motor sa četkicama jednako se ponaša,...trza i prekida, motor ubrzava ali jako trza,..

pomagajte šta može da bude?????
[ milan_obr @ 10.12.2008. 22:31 ] @

Pozdrav Kolegama.
Stavi MOC 3020 ili MOC3021.

Milan.
[ lm741 @ 10.12.2008. 22:38 ] @
Dali može i objašnjenje zašto ovi sa kojima sam probao neradi,..
kakva je razlika kod 3020 i 3021 u odnosu na ove koje imam,..
[ milan_obr @ 10.12.2008. 22:56 ] @
Pozdrav Kolegama.

MOC 3041, koji ti koristiš, ima "zero cross" detekciju. Tj, od momenta paljenja emiterske LE Diode, "čeka" prolaz napona kroz "Nulu".
Nema regulacije na taj način. Ti OC se koriste za regulaciju snage On/Off metodom. Uključiš potrošač neko vreme (proporcionalna reg.) zatim ga isključiš sa mreže.
Odnos vremena On i ukupnog vremena daje se u procentima i pretstavlja trenutnu snagu na potrošaču.

MCU, "posmatra", takođe prolaz i smenu poluperioda, zatim u softw. računa potrebno vreme za kašnjenje paljenja (0-10 mS), potom okine LED OC.
U MOC 3021 nema čekanja tj nema "zero cross", trenutno okida gejt i pali trijak.
Ako si dobro razumeo način regulacije, biće ti i ovo dovoljno jasno.

Milan.
[ lm741 @ 10.12.2008. 23:02 ] @
Milane hvala puno, razumeo sam,
sutra svakako moram u sprint po još štošta,..

dobro je još uvek postoji nada da ja zavrtim taj famozni motor i naravno da naučim dosta tog,..
[ milan_obr @ 10.12.2008. 23:28 ] @
Pozdrav Kolegama.

Ako imaš dovoljno iskustva / prakse, možeš izbeći OC, tako što spojiš 2 pina paralelno (i u softw), na gate trijaka.
Srednji pin na trijaku je glavna anoda. ide na sijalicu, pa u fazu mreže. Ne spajaj je nikako sa MCU i kolom niskog napona.
Da bi tekla struja u gejt, potrebno je da spojiš POMOĆNU anodu trijaka sa GND ili Vcc jednosmernog izvora (5V), koji napaja MCU.

Trijak možeš okidati u sva četiri kvadranta. Dakle, ako si pom anodu spojio sa Vcc, tada treba u softw. MCU da definišeš da je logička 1 = 0V na izlaznim pinovima. (Odvod struje).
Ako spajaš pom anodu na GND MCU-a, definiši u softw da je log 1 = 5V. PIC je tada izvor struje.

Na isti način sam rešio upravljanje 28 trijaka sa 16F877, bez OC.

Pazi se strujnog udara.

Ako nisi vičan radu pod naponom, uzmi rastavni (izolacioni) transformator, ili se igraj AC naponom koji nije opasan po život. (<50V).

Nemoj da te nosim na duši.

Milan.
[ lm741 @ 10.12.2008. 23:52 ] @
mali je problem što baš i nemam neko iskustvo sa trijakom,
pročitao sam 10 puta tvoj post ali nikako ne kapiram

Citat:
milan_obr: Pozdrav Kolegama.

Ne spajaj je nikako sa MCU i kolom niskog napona.
Da bi tekla struja u gejt, potrebno je da spojiš POMOĆNU anodu trijaka sa GND ili Vcc jednosmernog izvora (5V), koji napaja MCU.

Trijak možeš okidati u sva četiri kvadranta. Dakle, ako si pom anodu spojio sa Vcc, tada treba u softw. MCU da definišeš da je logička 1 = 0V na izlaznim pinovima. (Odvod struje).
Ako spajaš pom anodu na GND MCU-a, definiši u softw da je log 1 = 5V. PIC je tada izvor struje.



šta je pomoćna anoda,......anoda,katoda na velikom trijaku ili optokepler, kažeš da je nikako nespajam sa niskim naponom
ajde molim te ako može nekako slikovito
ili da probaš ponovo da mi pojasniš

hvala ti za trud,..
[ lm741 @ 11.12.2008. 01:23 ] @
mislim da sam ukapirao a ti me ispravi ako gršim,
da setujem dva pina to je iz razloga što su spominjali Stojan i Bogdan,zbog ukupne struje pa na dva pina je sigurnije, oni treba da rade paralelno
sutra ću da probam

A1-glavna anoda
A2-pomoćna anoda

dali je tako?
[ milan_obr @ 11.12.2008. 11:26 ] @
Pozdrav Kolegama.

ProGooglaj malo.

http://images.google.com/imgre...nt%3Dopera%26rls%3Den%26sa%3DN

http://images.google.com/imgre...nt%3Dopera%26rls%3Den%26sa%3DN

Centralna (srednja) elektroda trijaka je glavna anoda (A1), na pomoćnu anodu (A2) i na gejt (gate), dovodiš pobudni napon.
Da bi smanjio opterećenje kontrolera strujom ka trijaku samim tim i opterećenje DC izvora, u softweru definiši da se na izlaznom pinu pojavi samo kratak impuls za paljenje gejta. Nije potrebno držati napon na pinovima tokom cele periode (10mS). Vežbaj malo. Čuvaj se strujnog udara. Nađi u furdi neki trafo 12/24V, pa sve to probaj sa niskim naponom. Javi se posle experimenta!

Milan.
[ lm741 @ 11.12.2008. 11:58 ] @
da znaš da hoću samo se nadam da neću biti garav i oprnjen,..
pozdrav!
[ lm741 @ 12.12.2008. 09:56 ] @
evo me ali nisam ništa uradio,..
ne znam, kako da setujem istovremeno dva pina?

na primer: portB.1 i portB.2
Code:
pwm portB.1, dutyCycle, 5


[ milan_obr @ 12.12.2008. 11:58 ] @
Pozdrav Kolegama.

Da ne komplikuješ softw, ubaci NPN tranzistor kao emiterski pojačavač.
Ako ti nije ekonomija bitna. (Ali ako imaš veću seriju, > n*100 kom, onda ipak softw rešenje).
Nisam još video koju si šemu izabrao, imaš li ul pin za sinhronizaciju sa mrežom (220V), ili samo praviš klasičan PWM.

Milan.
[ lm741 @ 12.12.2008. 12:32 ] @
i ja sam došao na ideju da stavim tranzistor ali nisam.
za sada sam hteo samo da vidim i dobijem efekat regulacije trijaka i nemam sinhronizaciju sa mrežom(kako se to postiže)
zapravo nisam sinoć ni probao ništa zato što nisam znao kako da dobijem signal paralelno na dva pina.
Milane, razumeo sam te u onom tvom prethodnom postu kako da povežem trijak sa picem ali kad nemam rešenje za KOD

angažovao sam svo svoje znanje ali naj više što sam postigao je da mi dva pina rade naizmence

help,....mada moram probati i sa tr.BC 547
[ bogdan.kecman @ 12.12.2008. 14:18 ] @
ne mozes da koristis picbasic softwerski PWM na dva pina istovremeno. za to bi morao da napravis svoju pwm rutinu ... nesto poput

Code:

while(x){
PIN1 = 1;
PIN2 = 1;
delay(on_time);
PIN1 = 0;
PIN2 = 0;
delay(of_time);
}


dakle moras da napravis svoju PWM rutinu da bi terao 2 pina u isto vreme
[ lm741 @ 12.12.2008. 14:45 ] @
Bogdane hvala ti,a pa to mi je sad jasno
[ bogdan.kecman @ 12.12.2008. 15:12 ] @
ta softwerska implementacija u picbasicu je otprilike takva, samo oko toga ima jedna for petlja da odradi 256 * broj ciklusa celu proceduru (on, delay, off, delay) i koja setuje on_time i off_time zavisno od duty_cycle koji prosledis ... tako da .. mozes to sam lako da napises ... (napisao bi ti ja ali me turbo mrzi da sad ucim ponovi sintaksu basic-a :D a i to ti je odlicna vezba)

dodatno, ako izracunas koliko koji deo tvog koda traje, mozes da napravis kompletnu stvar jos bolje, tj da umesto onog delay(on_time) i delay(off_time) radis nesto korisno :)

ja licno volim da odaberem uC sa hw pwm kontrolom, upalis pwm i ne razmisljas :) menjas mu dc kad treba ....

ovo sa vezivanjem 2 pin-a je ok za veliki volumen proizvodnje, za 1kom opto izolacija rulez :)
[ lm741 @ 12.12.2008. 18:00 ] @
sad već znam da sam dosadan ali molim vas da probamo da ovo dovedemo u stanje regulacije, pa ću da oladim malo

sada je PWM regulacija na jednom pinu OK.
taj pin reguliše bazu tr.BC 547 po Milanovim uputima iz prethodnog posta
dešava se to da trijak provede max. ili je off i tako u nedogled što se i poklapa sa vremenom jednog intervala od min. do max.


pomoćnu anodu vezao na +5 v
kolektor preko R 190 na gejt
emitor na masu

faza preko sijalice na glavnu anodu
nula na pomoćnu anodu ili masu






[ VRadule @ 12.12.2008. 20:21 ] @
LM 741 što se lomiš sa PWM-om kada on nema nikakve veze sa trijacima?

Posao ti je da detektuješ prolazak sinusoide kroz nulu i da praviš kratak impuls na gejtu trijaka( par mikro sekundi)
koji kasni od 0 do 180 u odnosu na prolazak kroz nulu.
To je momenat uključivanja trijaka, a isključuje se prirodno kao i tiristor, sam od sebe prolaskom kroz nulu.

Ugao od 0-180 stepeni posmatraj kao vreme od 0-10ms. (poluperoda na 50Hz)

Što više zakasniš impuls na gejtu u odnosu na prolazak kroz nulu, više si smanjio snagu na potrošaču.

Recimo ukoliko okidaš na 90 stepeni potrošaču ćeš isporučivati četvrtinu snage (snaga je kvadratna funkcija napona).




[ lm741 @ 12.12.2008. 20:36 ] @
Pozdrav Vradule,..
sad se bojim da ću lupiti ali moram,koliko sam skapirao pwm šalje seriju impulsa unapred zadatu na izabranom pinu.molim vas da me ispravite ukoliko grešim,...
osim optotrijaka sa detekcijom prolaska kroz nulu dali imaš neko drugo rešenje, neku adekvatnu šemu sa kojom bi to rešio,...hvala ti
[ lm741 @ 12.12.2008. 22:35 ] @
evo sada sam došao do jednog zaključka.
ako je PWM određena serija impulsa
frekvencija je praktično druga serija impulsa

svo ovo vreme meni te dve serije impulsa nisu usklađene,ne poklapaju se

mora da postoji nešto drugo ili način da se prati frekvencija i na taj način u datom momentu pušta kratak impuls,
upravo ono o čemu je govorio VRadule

nešto slično a možda isto ono što je Stojan Trifunović spomenuo u jednom od postova vezano za tahogenerator
tačno je da ona pomenuta pločica u prvim postovima ima otpornik i jednu diodu, verovatno na taj način prati tahogenerator
nisam snimio tu pločicu do kraja ali pretpostavljam da bi na taj način mogla i da se prati frekvencija gradske mreže,....


PWM regulacija mi se izuzetno dopala za regulaciju DC motora i sijalice sa vlaknom ali nije za regulaciju trijaka

veliko,veliko poštovanje svima vama što ste izrazili volju i želju da mi pomognete
i hvala vam puno što sam opet nešto i naučio ali bih vas i zamolio da opet možda pronađete neko rešenje,...stvar je veoma zanimljiva i korisna
[ bogdan.kecman @ 13.12.2008. 00:00 ] @
rekoh ti da je pwm super za DC, za AC ocigledno nije dovoljan, tj, odradice posao ali ne dovoljno dobro.

pogledaj (vec dva puta spomenut) application note vezan za tacno to sto ti treba:

MicroChip APP NOTE AN958: http://ww1.microchip.com/downloads/en/appnotes/00958a.pdf

Objasnjeni su kvadranti koje ti VRadule spominje, objasnjen je triggering, phase controll, prolazak kroz nulu... data sema kako sve to da napravis sa pic10F204 (ti mozes da stavis i neki jaci ako hoces)...

ovde mozes da skines i source za taj primer

pre nego krenes dalje da testiras bilo sta, procitaj ovaj app note, onda ako ti neki deo nije jasan pitaj pa ce vec neko da razjasni... ovako se blago vrtimo u krug