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

U/f kontrola motora dsPIC30F4011

[es] :: Elektronika :: Mikrokontroleri :: U/f kontrola motora dsPIC30F4011

Strane: 1 2 3

[ Pregleda: 10651 | Odgovora: 52 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

zivadin_despot
Živadin Despotović
Novi Sad

Član broj: 175438
Poruke: 704
*.mbb.telenor.rs.



+5 Profil

icon U/f kontrola motora dsPIC30F401112.07.2011. u 20:39 - pre 154 meseci
Pozdrav svima,
interesuje me kako isprogramirati U/f kontrolu AC motora na navedenom dsPIC-u? Konkretnu kako izgleda tabela sinusa, kako menjati vrednost amplitude izlaznog napona, kako menjati frekvenciju i kako racunati duty za PWM (kojom formulom)?
Ako moze za pocetak objasnjenje postupka rada programa pa cu pokusati sam nesto napisati...
Hvala unapred.
 
Odgovor na temu

goran_68

Član broj: 89012
Poruke: 932
*.dynamic.isp.telekom.rs.



+81 Profil

icon Re: U/f kontrola motora dsPIC30F401113.07.2011. u 08:15 - pre 154 meseci
Nemoj sam, Microchip ima Application Notes. Pogledaj:
http://www.microchip.com/stell...deId=1824&appnote=en012129
http://www.microchip.com/stell...deId=1824&appnote=en022555
Pisani su za drugi MCU ali je princip isti.

gorankg
 
Odgovor na temu

zivadin_despot
Živadin Despotović
Novi Sad

Član broj: 175438
Poruke: 704
*.dynamic.isp.telekom.rs.



+5 Profil

icon Re: U/f kontrola motora dsPIC30F401117.07.2011. u 18:20 - pre 154 meseci
Pregledao sam ovo i jos neke fajlove ali mi treba pomoc.... Video sam da postoji tabela sinusa ona se uporedjuje sa trougaonim signalom iz ptper-a i na osnovu toga se dobija vrednost duty-ja... Imam sledeca pitanja: kako izgleda tabela sinusa, koji su to brojevi, koliko tacaka definise sinus, kojom formulo se uporedjuje vrednost sinusa i trougla i dodeljuje PDC-u? Da li bih mogao sam napraviti tu tabelu?
Jel bi mogli da zapocnemo sa nekim programom, pa polako da dodjemo do resenja...?
Hvala unapred!
 
Odgovor na temu

korak
Nis

Član broj: 125522
Poruke: 622
*.dynamic.sbb.rs.



+7 Profil

icon Re: U/f kontrola motora dsPIC30F401119.07.2011. u 02:00 - pre 154 meseci
Da li drajvuješ AC motor sa kaveznim rotorom ili BLDC motor? Kolika je snaga?

Ono što je u vezi sa sinusom je prosto, tu ima više drugih težih problema.

Prvo odredi koja će frekvencija PWM signala biti. U okvru svake periode treba da je Ton/T = sin(ugla). Obično AC motori sa kaveznim rotorom idu od par Hz do 50..60Hz AC napajanja. Često je frekvencija PWM par kHz, recimo 3kHz. Ako je najniža pobuda motora 3 Hz onda u tome imaš 1000 perioda PWM-a i treba ti toliko tabelarnih vrednosti za sin. Ali to svedeš samo na 45 stepeni, što je 1/8 dakle 125 vrednosti, a ostale dobijaš prostim trigonomertijskim transformacijama samo sa sabiranjem i ili oduzimanjem.

Ono što je važnije to je da se napon (struja) mora povećavati sa smanjenjem broja obrtaja motora. To povećanje je poznato, ali sada ne mogu da se setim zavisnosti od broja obrtaja.

Za svaku fazu ćeš imati potpuni most sa tranzistorima, moraš obeznediti da u PWM signalu postoji takozvano mrtvo vreme kada ni jedan tranzistor mosta ne provodi. Tranzistor koji ide u zasičenje ima kraće vreme uključenja nego isključenja, pa pri promeni stanja, ako nema pomenutog vremena, most kratkospaja na trenutak napajanje.

Ima još problema koji mogu da se ispreče, sve do nivoa smetnji koje će zračiti ceo regulator. Ako ti je PWM centralno podesiv nivo smetnji će biti niži.

Pozdrav.
 
Odgovor na temu

goran_68

Član broj: 89012
Poruke: 932
*.dynamic.isp.telekom.rs.



+81 Profil

icon Re: U/f kontrola motora dsPIC30F401119.07.2011. u 10:06 - pre 154 meseci
Imas kompletan sors kod u asembleru na microchip sajtu. Na:
http://www.microchip.com/stell...29&page=wwwdevMotorControl
mozes naci Development Tool koji odgovara tvojoj aplikaciji. Date su i seme pa po njima mozes uraditi sopstveni razvojni alat. Jeftinije je, usput nesto naucis ali zahteva malo vremena.
Inace, Texsas Instruments, Freescale, ST ... imaju takodje razvojne alate za ove namene. Uporedi ih sa microchipom. Predlazem ti da napravis jednu plocu za napajanje, drugu na kojoj ce ti biti mcu i pratece okruzenje (optokapleri, potenciometri, tasteri i serijska veza ka PC) i na trecoj ploci drajver za motor. Lakse i brze ces raditi izmene a i popravke kad nesto ode (spremi vise tranzistora za drajver :)).
gorankg
 
Odgovor na temu

zivadin_despot
Živadin Despotović
Novi Sad

Član broj: 175438
Poruke: 704
*.hostingline.ro.



+5 Profil

icon Re: U/f kontrola motora dsPIC30F401119.07.2011. u 21:09 - pre 154 meseci
Upravljam kaveznim asinhronim motorom...Opseg frekvencije sam hteo da bude 10-50 Hz...
Da li mi mozes malo pojasniti deo koji se tice vrednosti PWM duty-ja i frekvencija? (ja probati da objasnim kako sam ja razumeo)
Sto si pomenuo odnos napona i broja obrtaja, mislim da bi se napon trebao smanjivati sa smanjivanjem frekvencije (U/f=const)
Predlog za izradu elektronike cu svakako primeniti, jer sam tako nesto i planirao.
A o mrtvom vremenu cemo kasnije dok ovo resimo.

Ako sam dobro razumeo, treba da imam tabelu sinusa definisanu odredjenim brojem tacaka n, a taj broj tacaka je definisan ovakvom formulom: n=fmin/fpmw; gde je fmin - minimalna frekvencija motora, a fpwm - frekvencija pwm modula. Interesuje me kolika je amplituda sinusa? Nakon toga trebao bi mi jedan tajmer koji ce mi definisati vreme odabiranja tacaka i dodeljivanje pwm signalu. Evo kao primer, recimo da mi je sinus definisan sa 20 tacaka, i da pogonim motor sa 50Hz, to znaci da bih trebao postaviti tajmer na 1 ms i na svaku ms vrednost duty-ja ce biti vrednost te tacke (Ton/T), jel? Naravno sa vise tacaka vrednost tajmera bi bila manja pa bi se korigovalo za druge frekvencije. Ovako sam razumeo za frekvenciju. Interesuje me sledece: ako zelim frekvenciju od recimo 25Hz, to znaci da bi vrednost napona na motoru trebala da bude upola manja, sto znaci da bi vrednost duty-ja trebala da se promeni u odnosu na malopre. Kako sada definisati sinus a da se mogu primeniti gornje formule?

Kada razjasnimo algoritam programa i ovu matematicku pozadinu, hteo bih da probamo konkretno i da napisemo program.

Gorane, hvala na linku pogledao sam, ali posto sam, moze se reci, pocetnik u programiranju imam poteskoce da tumacim kod u asm, ovako mi je lakse, a shvaticu bolje. Nadam se da ce i drugima ovo pomoci.

Hvala svima na pomoci.
 
Odgovor na temu

zivadin_despot
Živadin Despotović
Novi Sad

Član broj: 175438
Poruke: 704
*.hostingline.ro.



+5 Profil

icon Re: U/f kontrola motora dsPIC30F401123.07.2011. u 20:46 - pre 154 meseci
Da li moze neko da prokomentarise nesto o ovome sto sam napisao, cisto da znam da li razmisljam u dobrom smeru.
Hvala unapred
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3860
62.101.128.89



+333 Profil

icon Re: U/f kontrola motora dsPIC30F401124.07.2011. u 12:03 - pre 154 meseci
Zivadine,
koliko vidim imas malo zbrke u glavi. Pomijesano ti je sve, jer unaprijed vodis racuna o mnogo faktora i dvije frekvencije i jos par amplituda.
Ajde ovako,
zaboravi na cas da ti treba sinus frekvencije npr 25Hz. Zamisli da ti u nekom trenutku vremena treba izlazni napon od npr 108V ( zamrzni taj trenutak u glavi). E sad imas izvor jednosmjernog napona od 300V, da bi dobio tih 108V treba da imas PWM sa signalom od 108/300. Pauza je dakle 1-108/300. Sve to skalirano na period PWM-a.
Sada si rijesio pola problema.
U iducem trenutku ti treba 127 V, opet matematika 127/300 i 1-127/300.
Napravis n tih tacaka ( sto vece n bolja aproksimacija sinusa), ali ne treba pretjerivati sa brojem tacaka, jer ces imati neki NF filter iza.


 
Odgovor na temu

zivadin_despot
Živadin Despotović
Novi Sad

Član broj: 175438
Poruke: 704
*.hostingline.ro.



+5 Profil

icon Re: U/f kontrola motora dsPIC30F401124.07.2011. u 15:38 - pre 154 meseci
Evo ovako...Recimo da imam n tacaka za definisanje sinusa, imam izvor od 300VDC i recimo da je frekvencija motora takva da mi treba napon od 150V (amplituda). PWM modul je 8mo bitan (0-255). da bih dobio napon od 150V potreban duty (Ton/T) za PWM je 50%, priblizno 127. Da bih dobio sinus sa ovom amplitudom, potrebno je da su tacke definisane sa amplitudom 127, pa cu u vremenu vrednost duty-ja menjati tako sto cu racunati sinus sa ovom amplitudom, pa tako za 90 stepeni vrednost duty-ja ce biti 127 to, vracajuci se unazad, dobijam napon od 150V.

A frekvenciju bih podesava brzinom odabiranja tacaka.

Da li sam dobro shvatio deo oko podesavanja napona? Ako nisam dobro objasnio sta sam mislio, pokusacu ponovo...
Hvala na pomoci
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3860
adsl-44-248.teol.net.



+333 Profil

icon Re: U/f kontrola motora dsPIC30F401124.07.2011. u 20:42 - pre 154 meseci
Tako nekako.
Pri uglu od 90 stepeni PWM ce biti 127.
Na 0 stepeni ce biti 0, na 180 opet 0.
E sad trebas uzeti recimo 20 tacaka sinusa izmedju 0 i 90 stepeni i izracunati vrijednost za PWM.
Od 9- do 180 lako izracunas, i eto.
Narednu poluperiodu isto, samo palis drugu granu H mosta.
 
Odgovor na temu

zivadin_despot
Živadin Despotović
Novi Sad

Član broj: 175438
Poruke: 704
*.hostingline.ro.



+5 Profil

icon Re: U/f kontrola motora dsPIC30F401125.07.2011. u 11:26 - pre 154 meseci
Veliko hvala na objasnjenju...pre nego sto pocenm da pisem kod da proverim da li bih ovako mogao podesavati frekvenciju: Ako imam definisan sinus sa 360 tacaka, i hocu frekvenciju od 50Hz da li bih mogao postaviti jedan tajmer koji radi na 1.8ms i na svakih 1.8 ms dodeljujem novu vrednost duty-ju? Da li se to tako inace resava?
Hvala

[Ovu poruku je menjao zivadin_despot dana 25.07.2011. u 13:19 GMT+1]
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3860
adsl-121-49.teol.net.



+333 Profil

icon Re: U/f kontrola motora dsPIC30F401125.07.2011. u 13:58 - pre 154 meseci
Da ne cjepidlacim, ali ne treba ti 360 tacaka, jer je sinus simatricna funkcija dakle 180 tacaka. Ali posto je sinus za alfa, pri cemu je 90<alfa<180 jednak :
beta=alfa -90
uvedes gama=90-beta
pa slijedi
sin(alfa)=sin (gama ).
Ispada da treba samo 90 tacaka.
E sad ti si isao sa vrlo preciznim sinusom ( step po 1 stepen), a mislim da je to pretjerano za pogon motora. Pitanje hoce li 8-bitni PWM moci to odraditi.
Idi na 10 -tak tacaka za 0-*90 stepeni. NF filter ce se pobrinuti za ostalo.
Cak je moyda bolji pristup ici semplovanje po amplitudi , a ne po vremenu.
Elem matematika je sledeca.
Drzis PWM=0 10 klokova
Onda dignes na PWM =10 i to drzis n klokova
pa PWM=20 i to drzis m klokova....
Samo treba odrediti n, m, i, j ,k,l....

 
Odgovor na temu

zivadin_despot
Živadin Despotović
Novi Sad

Član broj: 175438
Poruke: 704
*.hostingline.ro.



+5 Profil

icon Re: U/f kontrola motora dsPIC30F401125.07.2011. u 14:32 - pre 154 meseci
OK za tacke sinusa, korigovacu to...
Ako sam dobro razumeo pocetni PWM je 0 pa nakon 10 klokova PWM povecam duty na vrednost prve tacke kako je u prethodnim porukama definisana, i tako nakon svakih 10 klokova menjam vrednost duty... Za neku drugu frekvenciju, bicu druga vrednost klokova, a to se peracuna, jel?
Hvala
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3860
adsl-104-190.teol.net.



+333 Profil

icon Re: U/f kontrola motora dsPIC30F401125.07.2011. u 16:49 - pre 154 meseci
Mozes i tako, s tim sto preporucujem sto brzi klok, a mozes i ovako:
ti dizes PWM za recimo 10, ali broj klokova je razlicit.


[Ovu poruku je menjao veselinovic dana 25.07.2011. u 18:06 GMT+1]
 
Odgovor na temu

Sepa011

Član broj: 161918
Poruke: 1817
212.178.232.*



+28 Profil

icon Re: U/f kontrola motora dsPIC30F401125.07.2011. u 17:30 - pre 154 meseci
Imas nesto interesantno OVDE, dobro procitaj.
 
Odgovor na temu

mg87ser
student
Novi Sad

Član broj: 289596
Poruke: 3
*.dynamic.sbb.rs.



Profil

icon Re: U/f kontrola motora dsPIC30F401124.08.2011. u 15:09 - pre 153 meseci
Trebao bi da napraviš trofazni PWM modulator koji, u zavisnosti od zadate amplitude i frekvencije, na svom izlazu daje potrebna vremena vođenja tranzistora u tri grane invertora, za svaki novi PWM period. Ova vremena se mogu direktno upisati u PDC registre Motor Control jedinice, koja generiše šest PWM izlaza (tri komplementarna para) u skladu sa upisanim faktorima ispune. Ovim se reguliše srednja vrednost napona tri grane PWM invertora u svakoj novoj PWM periodi.U svakoj PWM periodi srednja vrednost napona treba da bude jednaka trenutnoj vrednosti prostoperiodičnog signala željene amplitude i frekvencije. Da bi se to ostvarilo, pored PWM nosioca, neophodan ti je referentni prostoperiodični signal koji ćeš modulisati sa PWM nosiocem. Poređenjem ova dva signala dobijaš signal promenjiog vremena vođenja ton, tj promenjive širine impulsa.


Izlazni PWM signal će se automatski generisati u PWM modulatoru (Motor Control Unit) skoro trenutnim (maksimalno brz clock) poređenjem stanja PWM timera i PWM duty cycle registara. Ono što treba da obezbediti u programu, jeste trofazni modulišući prostoperiodični signal. Pre svakog novog PWM perioda program mora da izračuna željenu vrednost izlaznog napona u sve tri faze invertora i da pripremi tri nova faktora ispune koji će odgovarati tim željenim vrednostima, t.j. obezbedi PWM signale sa odgovarajućim srednjim vrednostima u toku tog PWM perioda.

Veza između srednje vrednosti faznog napona u toku jedne PWM periode i vremena uključenja u toku te iste PWM periodi glasi Uasr = ton/Tpwm * Udc

Da bi izračunao nova vremena vođenja treba prvo da prepoznaš u kojoj si tački u vremenu. Za pomenuto ti je potrebna nova vrednost ugla, koju kontrolišeš i čija brzina promene treba da zavisi od zadate frekvencije. Svakom novom PWM periodu odgovara diskretni ugaoni pomeraj, čija se vrednost dobija jednostavnim diskretnim računom.

Možeš koristi aproksimacija sinus funkcije petog stepena. Ulazni argument funkcije je 16-bitni fixed point broj u opsegu ±1 (±32767), što predstavlja ugao u radijanima.Ovu funkciju je potrebno tri puta pozivati u toku jednog PWM perioda.

U glavnom programu treba da se nalazi inicijalizacija periferije, beskonačna while petlja u kojoj proveravaš zadatu vrednost frekvencije (potenciometrom) i na osnovu nje racunaš amplitudu. Potrebno je da napišeš PWM prekidnu rutinu koja će prekidati while petlju odredjenom brzinom ( npr. postaviš da je PWM 16kHz) i u kojoj se izračunavaju vremena vođenja PWM grana na osnovu tenutne preuzete frekvencije i izračunate amplitude. PWM prekid je najvišeg prioriteta.





 
Odgovor na temu

zivadin_despot
Živadin Despotović
Novi Sad

Član broj: 175438
Poruke: 704
82.117.202.*



+5 Profil

icon Re: U/f kontrola motora dsPIC30F401126.08.2011. u 19:38 - pre 153 meseci
Evo da se nakon ovih objasnjenja da pocnemo to da i realizujemo. Evo kod mog programa kako sam ja to zamislio da treba da radi, uz ovaj kod cu ostaviti i semu kao i rezultate simulacije, pa bi svaka pomoc, sugestija, savet dobro dosli.
Hvala na dosadasnjem trudu.
Kontroler je PIC18F4431, kristal je 20MHz....

Code:

int niz[21]={ 2, 293, 558, 768, 903, 950, 904, 769, 559, 295, 2,-292,-557,-767,-903,-950,-904,-770,-561,-296,-3},i=0,j;
int niz_b[21]={ 552, 764, 901, 950, 906, 774, 566, 303, 10,-284,-550,-763,-900,-950,-907,-775,-567,-304,-11, 283, 549};
int niz_c[21]={  898, 950, 909, 779, 572, 310, 18,-277,-544,-758,-898,-950,-909,-779,-574,-312,-19, 275, 542, 757, 897};
unsigned int pom,b,pom2,pom3,cc;

void interrupt(){
     if(PTIF_bit){
                  j++;
                  if(j==6){
                           j=0;
                  if(niz[i]>0){
                               PDC0L=niz[i];
                               PDC0H=(niz[i] & 0b0011111100000000)>>8;
                               i++;
                  }else{
                               pom=952+niz[i];
                               PDC0L=pom;
                               PDC0H=(pom & 0b0011111100000000)>>8;
                               i++;
                  }
                  if(niz_b[b]>0){
                               PDC1L=niz_b[b];
                               PDC1H=(niz_b[b] & 0b0011111100000000)>>8;
                               b++;
                  }else{
                               pom2=952+niz_b[b];
                               PDC1L=pom2;
                               PDC1H=(pom2 & 0b0011111100000000)>>8;
                               b++;
                  }
                  if(niz_c[cc]>0){
                               PDC2L=niz_c[cc];
                               PDC2H=(niz_c[cc] & 0b0011111100000000)>>8;
                               cc++;
                  }else{
                               pom3=952+niz_c[cc];
                               PDC2L=pom3;
                               PDC2H=(pom3 & 0b0011111100000000)>>8;
                               cc++;
                  }
                  if(i==21) i=0;
                  if(b==21) b=0;
                  if(cc==21) cc=0;
                  }
                  PTIF_bit=0;
     }
}
void main() {
     INTCON=0b11000000;
     INTCON2=0;
     PIE3=0b00010000;    // omogucen interrupt base timer-a
     PWMCON0=0b01010000; // svi omoguceni za PWM i rade u paru
     PTCON0=0b00000100; //pres 4 post 0
     PTCON1=0;
     PTPERH=(311&0b0000111100000000)>>8;    //4kHz PWM
     PTPERL=311;
     DTCON=0b01000111;
     TRISB=0;
     PORTB=255;
     Delay_ms(1000);
     PORTB=0;
     TRISD=0;
     PORTD=0;
     PTCON1.B7=1;
     while(1){
     }
}




Na slici 1. se vide 4 signala koja se vode na prve dve grane trofaznog invertora, prva dva signala se vode na prvu granu i rezultuju fazu a. Na slici 2 je uvelican prikaz i tu je ono sto me buni, vidi se da zuti signal prestavlja opadajucu prvu periodu sinusa, a plavi signal prestavlja invertovano to. Problem mi je kod znaka "?" gde mi zuti signal nema maksimalnu vrednost, duty nije priblizno 100%, zbog cega? Na slici 3. je uvelican prikaz slike 2...
[Ovu poruku je menjao zivadin_despot dana 26.08.2011. u 20:49 GMT+1]

[Ovu poruku je menjao zivadin_despot dana 26.08.2011. u 20:54 GMT+1]
Prikačeni fajlovi
 
Odgovor na temu

zivadin_despot
Živadin Despotović
Novi Sad

Član broj: 175438
Poruke: 704
82.117.202.*



+5 Profil

icon Re: U/f kontrola motora dsPIC30F401127.08.2011. u 19:25 - pre 153 meseci
Jel neko imao iskustva sa ovako necim?
Jos nesto sto mi nije jasno je sto duty registar PDC ako postavim iznad ~950, automacki ga postavi na manje, hocu da kazem sledece ako 8-bitnom PWM-u postavim duty 300 on ne postavlja duty 100% nego manji oko 20%... U datasheet-u ovog kontrolera sam video da mu je registar za duty 14-to bitni ako je prescaler veci od 1, sto je kod mene slucaj, ali nikako nece tako da mi radi...
Ajde prvo da to protumacimo sta je, pa cemo onda gledati sta je sa signalima i ostalim podesavanjima...
Svaki savet je dobro dosao.
Pozdrav
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3860
62.101.128.91



+333 Profil

icon Re: U/f kontrola motora dsPIC30F401127.08.2011. u 22:32 - pre 153 meseci
Postavi ne na 20% nego na 17.7% jer iz nekog razloga radi na 8 bita.
300-255=45

100*45/255=17.7
 
Odgovor na temu

zivadin_despot
Živadin Despotović
Novi Sad

Član broj: 175438
Poruke: 704
82.117.202.*



+5 Profil

icon Re: U/f kontrola motora dsPIC30F401128.08.2011. u 00:08 - pre 153 meseci
Da, da jasno mi je to, to sam naveo kao primer kako mi se ponasa u mom slucaju. Hteo sam reci da kada predjem maximalnu vrednost duty-ja da on polazi od nule... U mom slucaju se pokazalo da je maximalna vrednost ~950, ali mi nije jasno kako? trebalo bi da je 16384 (14-to bitni registar)... U cemu je problem? Evo deo datasheet-a koji o tome govori.
Prikačeni fajlovi
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: U/f kontrola motora dsPIC30F4011

Strane: 1 2 3

[ Pregleda: 10651 | Odgovora: 52 ] > FB > Twit

Postavi temu Odgovori

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