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

Pridružen-a: Pon 23 Avg 2004 16:16 Prispevkov: 16777190 Aktiv.: 70819.68
|
Objavljeno: Sre Avg 22, 2007 8:09 pm Naslov sporočila: Šofiranje brezkrtačnika s CPLD |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Sre Avg 22, 2007 8:40 pm Naslov sporočila: |
|
|
Zakaj pa mora biti ravno CPLD in ne MCU ? En ARM bi moral biti cez glavo dovolj za to, pa se cenejsi je kot katerikoli CPLD.
Kakorkoli ze, jaz sem se zadnjic (ko sem spraseval o tej tematiki), dokopal do sledecega:
1: Zagon je najbolj komplicirana stvar, ker ne ves kje tocno se rotor nahaja, zato ga najprej pritegnes na doloceno pozicijo (za kratek cas vkljucis eno fazo). Potem pozenes torej "na blef" in upas, da bo delovalo, pri dovolj obratih pa zacnes preverjati ali odcitas BEMF. Ce ne, zacnes startno sekvenco znova
2: Ko enkrat dobis povratno informacijo o BEMF (od komparatorja, ki sporoci kdaj pride do zero crossinga), je stvar relativno preprosta. Izvedes komutacijo po vnaprej pripravljeni tabeli, pozenes stevec in cakas na zero crossing (interrupt). Ko pride do interrupta ustavis stevec, mu obrnes smer stetja (ali odstejes takratno vrednost stevca od maksimalne mozne, preden pride do rolloverja) in cakas, da pride stevec spet do 0. Ko pride do 0, opravis naslednjo komutacijo.
To se ponavlja v neskoncnost, dokler nekaj ne prekine delovanja (npr. pritisk na tipko) oz. dokler ne pride do nepredvidenega overflowa stevca, ki ga uporablajs za merjenje casa med komutacijami. ~1000 rpm bi moralo biti dovolj za pojav dovolj velike BEMF, iz frekvence MCUja in prescalerja stevca bos pa izracunal koliko casa pretece, preden pride do overflowa, iz tega pa izracunas hitrost (rpm), pri kateri najprej pride do overflowa. Ob tem upostevaj, da stevec meri samo polovico komutacije preden se prekotali naokoli in da je za vsak poln obrat motorja potrebnih kar nekaj komutacij (v mojem primeru jih je bilo recimo 6).
3: PWM regulira hitrost. MOSFET driverji a'la TC4468 in sorodstvo od Microchipa ima dva vhoda za vsak tranzistor in zmore krmiliti stiri tranzistorje. PWM pride na en, krmilni signal iz MCUja pa na drugi vhod za vsak tranzistor, vmes se izvrsi logicni AND, NAND ali AND z enim vhodom invertiranim.
Zakaj bi to sploh tlacil v CPLD ? Tezje je izvedljivo, stane vec, ne vsebuje analogne periferije (komparatorjev) pa se manj je fleksibilno  _________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
bungee Član


Pridružen-a: Pon 07 Mar 2005 18:49 Prispevkov: 1479 Aktiv.: 6.24 Kraj: Ljubljana
|
Objavljeno: Sre Avg 22, 2007 10:11 pm Naslov sporočila: |
|
|
Mare vem, da iščeš rešitev z logiko. Vendar pa je tu nekaj napisanega s PIC-i pa ti mogoče pomaga, če ne drugega je noter dobro opisan algoritem:
AN1083
AN901
Upam, da kaj pride prav.  |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.62 Kraj: Trzic
|
Objavljeno: Sre Avg 22, 2007 10:18 pm Naslov sporočila: |
|
|
Ja no... razlogov je lahko več. Brushless motorji se lahko vrtijo tudi precej nad 30k obratov, nekateri krmilniki pa zmorejo preklapljati po fazah tudi čez 100 kHz. Če želiš vmes imeti še PWM, ti v mikroprocesorju ostane zelo malo časa še za kaj drugega.
EMF pa lahko odčitavaš že pri nižjih frekvencah kot 1000rpm, obstaja pa precej različnih variant za to. V elektorju Feb 2006 je prav lepo opisana teorija za brezkrtačniki brez senzorjev.
Mare, žal nimam nobenega linka. _________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Sre Avg 22, 2007 10:57 pm Naslov sporočila: |
|
|
PWM je lahko v HW in ne zahteva nic dodatnih resursov; zahteva jih samo spreminjanje nastavitev PWM, kar se dogaja med komutacijami (medtem ko MCU caka in strika v prazno, dokler ne pride do interrupta od komparatorja ali od tega, ker se stevec iztece - in to zna kar traaaajati).
"Precej nad 30k rpm" pomeni konkretno 30k * 6 * 2 interruptov / minuto, kar pri enem najbolj pocasnem PICu z internim oscilatorjem (z zunanjih grejo bistveno hitreje ...) z 1 MIPS pomeni, da ima MCU na voljo "samo" 333333 (ja, tristotriintrideset tisoc tristotriintrideset) ciklov na interrupt. Mislim, da lahko v tem casu precej postori ... kaj bi sele bilo, ce bi zadevo izvajal MCU z 10+x vecjo zmogljivostjo  _________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
. Član

Pridružen-a: Pon 23 Avg 2004 16:16 Prispevkov: 16777190 Aktiv.: 70819.68
|
Objavljeno: Čet Avg 23, 2007 12:24 am Naslov sporočila: |
|
|
Brisana vsebina odstranjenega uporabnika. |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Čet Avg 23, 2007 12:52 am Naslov sporočila: |
|
|
Poraba kontrolerja (merjeno v miliamperih pri nizji napetosti - switching buck converter za napajanje) je proti porabi motorja (merjeno v amperih in najbrz pri bistveno visji napetosti) zanemarljiva.
Ne kompliciraj, vzemi en ARM (oz. kar ti pac najbolj ustreza) s PWM modulom in tremi komparatorji, dodaj eksterne MOSFET driverje in to je vse. 75k rpm je prakticno isto kot 30k rpm, kar se tice casovne zahtevnosti - tudi en PIC bi to zmogel (recimo PIC18LF1230 ima tri komparatorje in PWM, ter da od sebe 8 MIPSov z internim oscilatorjem+PLL, pri cemer porabi ~20 mA pri 3V; poraba je bistveno manjsa brez uporabe PLL, pod 3 mA). Potem rabis samo se dovolj domislije pri pisanju funkcije za zagon motorja  _________________ Ka ti bo pa torba ce si kupu kolo ? |
|
Nazaj na vrh |
|
 |
NeoTO Član


Pridružen-a: Pon 28 Mar 2005 19:19 Prispevkov: 2752 Aktiv.: 11.62 Kraj: Trzic
|
Objavljeno: Čet Avg 23, 2007 1:08 pm Naslov sporočila: |
|
|
Sokrat, ti govoriš to iz izkušenj ali kar tako?
Ker v Elektorju, ki sem ga omenil, je bila predstavljena malo bolj napredna metoda zero-crossing detekcije, kot samo komparator. Tisti del kode je gledal dogajanje med preklapljanjem PWMja, kar bi pri hardware-ski verziji bolj težko naredil... ali pač? _________________ Lp,
Matevž |
|
Nazaj na vrh |
|
 |
bungee Član


Pridružen-a: Pon 07 Mar 2005 18:49 Prispevkov: 1479 Aktiv.: 6.24 Kraj: Ljubljana
|
Objavljeno: Čet Avg 23, 2007 2:04 pm Naslov sporočila: |
|
|
NeoTO poglej AN-je od Microchipa.  |
|
Nazaj na vrh |
|
 |
Sokrat Član


Pridružen-a: Čet 25 Avg 2005 11:00 Prispevkov: 5584 Aktiv.: 23.57
|
Objavljeno: Čet Avg 23, 2007 2:09 pm Naslov sporočila: |
|
|
Moj je bil narejen z Atmelovim 89C2051, PWM je generiral z autoreload nacinom timerja (interrupt handler je alternirajoce spreminjal autoreload vrednosti, posledica uporabe SW PWM je bila, da je bil minimalni duty cycle nekje med 25-30%, sem ze malo pozabil konkretne stevilke ...), a je imel kontroler tezave z zagonom motorcka. MCU je bil dalec od primerne izbire za tako pocetje, ce bi delal se enkrat, bi vzel kaj primernejsega (hitrejsega, HW PWM, vec internih komparatorjev, namesto da sem tlacil zunaj LM339 ).
"Izboljsava", katero si omenil, je samo v tem, da je malo poenostavljena elektronika, ce je kontroler zelo neumen. Ce namrec zelis meriti BEMF kadarkoli (ob kateremkoli stanju PWM izhoda), potem potrebujes navidezno ali dejansko sredisce motorja (tam, kjer pridejo vse tri faze zdruzene skupaj; motorji s samo tremi prikljucki zato potrebujejo zunanje uporovne delilnike, s katerimi dobis to referenco).
Ta "izboljsava" ima za posledico tudi to, da duty cycle nikoli ne more iti od 0 do 100%. Nacelno to ni taka tezava, a obstaja meja, katere ni mogoce preseci, ker mine doloceno stevilo ciklov zaradi izvajanja programa; hitrejsi MCU bo raztegnil interval (recimo namesto 28-100% bos imel 5-100%). Logicno je, da zelis kar najvec moci, pod doloceno mejo pa PWM tako ali tako ne sme nikoli pasti, sicer se bo hitrost zmanjsala toliko, da ne bo vec dovolj BEMF.
Mikrokontrolerji s HW PWM pa le-tega generirajo s pomocjo timerjev, ob overflowu katerih lahko generirajo interrupt. Ko je PWM v stanju 1 recimo preveris relevantni komparator in primerjas odcitek s prejsnjim stanjem ali s predpripravljeno tabelo (trije komparatorji krat dve smeri prehodov je 6 kombinacij, kolikor je tudi komutacij na krog pri takem motorcku, kot je bil moj). Ce torej res zelis komplicirati z "izboljsavo" in tako prihraniti tistih 10 centov za 6 uporov, potem lahko naredis na zgoraj opisan nacin. Ob tem menda lahko zrtvujes tudi malce nenatancnosti ob komutaciji in stevec preverjas kar znotraj rutiine od interrupt handlerja od PWMja (gre za minimalen odmik).
Zakaj bi bil torej to problem pri HW PWM ? Vzemi kalkulator v roke in videl bos, da ostane frekvenci PWM 20-25 KHz ogromno ciklov za preverjanje komparatorja in stanja stevca ter morebitno prenastavljanje stevca ob zero crossingu (ali spreminjanje smeri delovanja, ce to stevec omogoca) ter za komutacijo, ko stevec spet pride do 0. Ce je MCU z 1 MIPS to lahko pocel, bi tak z 10x vec MIPS moral to poceti se toliko lazje  _________________ Ka ti bo pa torba ce si kupu kolo ? |
|
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: 493 dni
Powered by phpBB © 2001, 2005 phpBB Group
|