Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
STM32F PMSM motor driver
#1
Moje interesovanj za ovu tematiku je pocelo kada sam dosao u posed nekoliko Simensovih PMSM motora . Motori , kada izuzmemo kozmetiku, su  potpuno funkcionalni. 
I kozmetiku cu da sredim kada se savlada tezi deo a to je napajanje motora
Moja ideja je da ih upotrebim kao pogon za ISO30 alatno vreteno , taklo da spojim dva projekta u jedan Smile
Na CNC-u vec imam spindle motor 3.2 Kw 24000RPM sa ER20 prihvatom  , ali mana je da ne mogu da spustim brzinu ispod 7000 obrtaja sto stvara problem za materijale i glodala koja traze manji broj obrtaja od 7000.
Posto sam do motora dosao veoma povoljno probao  sam da potrazim komercijalno resenje za kontrolu motora . 
Pored svih prednosti koje nude gotova reasanja(driver-i) uvek je postojalo nesto sto mi nije odgovaralo tako da poceo da istrazujem kako bi to moglo da se napravi u DIY varijanti .

Resenja za drive BLCD i PMSM motora mikrokontrolerom i dodatnim Power plocom postoje kod mnogih firmi Microchip, Freescale, Ti , medjutim posto sam ja fan ST-a odlucio sam se za njihovo resenje .
Njihova biblioteka STM32 PMSM FOC LIB je prilicno fleksibilna , moguce je zakaciti skoro sve kombinacije BLDC i PMSM motora , sa i bez hall senzora ,incrimentalnog encodera , u povratnoj sprezi.
Konfiguracija samog projekta se radi iz ST MOTOR CONTROLL WORKBENCH -a koji je integralni deo biblioteke . Sve je lepo dokumentovano u PDF dokumentima koji su takodje ukljuceni u biblioteku .

Posto imam vise razlicitih razvojnih plocica , odlucio sam da bi za inicijalne experimente iskoristim STM32F407VG jer imam 4 razlicite razvojne ploce.
Ponudjeno resenje od strane ST-a  je skupa razvojna plodcica sa STM32F429 ali je biblioteka prilagodljiva za bilo koji STM32 ARM. Prednost te ploce je da je TFT display integrisanna ploci kao i u biblioteci . 
Malo igranja i eksterni display 4.3 je proradio sa bibliotekom .Moj display je , kao i njihov , na SPI bus-u , mala prednost je da ja imam i touch screen .
Za moje resenje graphic driver je FT800 i on vodi racuna o samom display-u tako da je STM32 totalno rasterecen po pitanju koda i procesne obrade .

E sada dolazimo do dela gde sam ja najtanji power board .

Malo istrazivanja sta ima kod nas na trzistu da se kupi i malo vremena u protelu nacrtao sam neku polaznu semu za ovaj deo .
Voleo bih da mi  power ploca bude izolovana od mikrokontrolera , to je faza 2 kad skupim na gomilu izolovane gate drivere i opto isolated operacioni pojacavaci za kotrolu struje i napona .
Na semi su MOSFET tranzistori ali bih probao da iskoristim neke IGBT tranzistore .
S obzirom da PWM drive ide do max 40Khz da li bi to predstavljalo problem da se za izlazne tranzistore korist IGBT?

U prilogu su PDF seme i slike trenutnog stanja , bio bih jako zahvalan da pogledate seme i napisete vase komentare za sve sto mislite da nije dobro uradeno ili sto mislite da moze bolje da se uradi .
Za  PWM drive mi fali i znanja i iskustva , a dodatni problem je veliki napon i struja . 
Kada skockam definitivnu semu onda bih odradio PCB file.

Iskreno nisam znao gde da temu postavim , tako da molim moderatora da ako nije adekvatan podforum da to ispravi .


Attached Files Thumbnail(s)


.pdf   PMSM driver.pdf (Size: 842,24 KB / Downloads: 12)
.pdf   RRD TFT.pdf (Size: 129,67 KB / Downloads: 9)
.pdf   stm32sr.pdf (Size: 492,14 KB / Downloads: 9)
Reply
#2
Koliki je radni napon tih motora i kolika je struja (Peak / nominalna) ?
Reply
#3
1ft5064-0AC01-2 150V 7.0/8.6A

1ft5072-0AC01-2 150V 14.5/17.5A

Na zalost ne mogu da nadjem dokumentaciju za motore ovog napona . Sve sto sam uspeo da nadjem je PDF sa tom serijom motora ali za model 0AC71 koji su za vece napone . Uzeo sam jos jedan motor kojem je polomljen prednji nosac lezaja ali je stator u ok stanju tako da bi moglo da se proba da se premota.Parametri postoje jedino sto ne znam nikoga ko bi to mogao da uradi Sad


Attached Files Thumbnail(s)

Reply
#4
Kada se radi H bridge za DC motore od nekoliko desetina wati onda svašta može da prodje
bez nekog većeg rizika od nepravilnog rada ili crkavanja tranzistora u H mostu.

Slična je priča i za trofazne BLDC, samo što imamo 6 tranzistora u H mostu.
Sa PMSM nisam imao dodira ...

Kada snaga motora predje par stotina wati tu već stvari postaju ozbiljnije i problemi
rastu sa snagom.

Preko 100 W je veoma poželjna galvanska izolacija za PWM signale
a preko par stotina wati i obavezna. Veoma je problematično da MCU deli istu masu
pa makar ona bila pravilno spojena (Digital GND i Power GND u jednoj tački)
Tu se svašta sjuri u masu, počevši od problematičnih gličeva koji nastaju usled
udarnih struja u trenutku uključenja mosfeta, pa do gličeva koje stvara diferencijalno
dejstvo PID regulatora za pozicionu petlju, itd ima ih još ...

Sve to protrči kroz masu do MCU i ume da napravi probleme od reseta MCU,
očitavanja AD konvertera, smetnje na input pinovima itd ...

PWM signali se lako izoluju sa brzim 6N137 optokaplerima, aliu problem može predstavljati
očitavanje struje motora. Ako samo detektujemo BRZIM komparatorom paeak struju koju motor
povuče prilikom starta (ovo može biti i desetostruki iznos nominalne struje ) preko FLTA pina
kao na prostijim DC servo gde se ne očitava stvarna struja motora - onda i tu možemo upotrebiti 6N137
i ceo izlazni stepen je galvanski odvojen.

Ako treba AD konverterima očitavati stvarnu struju motora, onda stvari postaju složenije po pitanju
galvanske izolacije. Nisam ovo do sada radio i mislim da se može rešiti sa HCNR 200 analognim optokaplerima,
koji su takodje poprilično brzi.

Koliko sam nabrzinu pogledao tvoju šemu (nisam gledao izvorni projekat samog kontrolera) izgleda da imaš
očitavanje struje AD konverterima, što bi svaki ozbiljan driver i trebao da ima.
(koliko sam primetio na šemi PA5 pin koristiš i za LCD SCLK i za Current C ??? )

Dalje, zar INA138 nije High-Side Measurement Current Shunt Monitor ?
Kod tebe je spojen na GND ??
Inaće sa high side merenjem možeš izbeći dosta problema u odnosu na LOW SIDE !

Takodje bootstrap sistem napajanja gornjih mosfeta nije prikladan za ozbiljnije snage.
Tu treba posebno low i high driver (high driver tada zahteva lebdeće napajanje)
Ovo ti je potrebno iz razloga što se bootstrap obično primenjuje gde imamo male struje za pobudu gejta.
Za veće mosfete trebaju i veće struje gejta, tako da bootstrap nije prikladan.

Što se tiče izbora Mosfet /IGBT ovde bi trebalo ići na mosfete.
Ne samo zbog granićne frekvencije koja je na strani mosfeta već i zbog
tog što IGBT imaju pri isključenju takozvani strujni rep, što može dosveti do
povećenog grejanja kada rade u mosnoj vezi usled povećane dinamičke disipacije snage.
Mosfeti se mnogo brže isključuju i kao takvi traže manje mrtvo vreme kroz PWM.

Na kraju sa IRFP460 možeš napraviti driver od recimo 150-200V i max 5A.
Preko toga mu je puno, grejaće se i neće izdržati.
Treba ti jači mosfet.

Kada radni napon motora prelazi stotinjak volti onda idu i kočioni otpornici
jer napon napajanja drivera može opasno porasti prilikom zaustavljanja motora.

Sve na svemu, nimalo jednostavno ...
Jeftini motori ali će upravljanje biti poprilično zahtevno ...

Pozz
Reply
#5
Zeljo hvala ti za ovako iscrpan odgovor .
 Pokusacu da delimicno objasnim kako sam dosao do ove seme .
Polazna osnova za plocicu snage mi je bio ST- ov modul za 2 KW , STEVAL-IHM028V2 (Sema zakacena STEVAL-IHM028V2.pdf ) . Uradjeno je sa hibridom u kom su zajedno upakovani gate driveri i 6 IGBT tranzistora . Razlog zasto nisam bukvalno precrtao njihovu semu je nabavljivost komponenti. Moja zelja za finalni modul je da opticki izolujem modul sa mikrokontrolerm , kod njih to nije slucaj , pa sam pomislio da ce biti dovoljno za probu ovo sto sam nacrtao.

AMC1301 je u planu za izolovano merenje struje a  UCC21520 ili SI8230 za izolovane gate drivere.


NA138 je ostala greskom ide TSV994 koji ima isti pin out i kuciste .

Sto se tice napajanja za high side nije mi problem da uradim separatno floating napajanje . Vodio sam se time da je  za modul od 1. KW ( sema u prilogu STEVAL-IHM023V3.pdf ) koriscen je gate driver koji ima interno  spojeno napajanje za high side sa Vcc L6390  ( pogledaj sliku) . Razlog zasto ja to nisam iskoristio je ponovo nabavljivost L6390 Sad a i nesto vece struje koje moze da da ir2110 . 

PA5 pin je takodje greska LCD_SCLK je PC5 , ispravicu i to na semi . Sema za LCD  je uradjena odavno za neki drugi projekat tako da je i net lista ostala iz tog perioda.
Pokusao sam da skockam nesto za probu . Ako mislis da ce ova sema nije dobra spreman sam da menjam sta god je potrebno dok se ne dobije upotrebljiv modul za probe . S obzirom da mi mosfet-IGBT drive nije jaca strana , morao sam da kradem vecinu sa njihovih sema . 

Kada napravim taj modul prvi testovi ce biti sa mnogo manjim motorom, manjim naponom  i manjom strujom .
Sve probe ce ici preko rastavno-regulacionog  transformatora.Simensovi motori su krajnji cilj ali ne i jedinice za inicijalne probe .


Attached Files Thumbnail(s)


.pdf   STEVAL-IHM028V2.pdf (Size: 329,56 KB / Downloads: 7)
.pdf   STEVAL-IHM023V3.pdf (Size: 650,93 KB / Downloads: 6)
Reply
#6
UCC21520 ili SI8230 su OK solucija za izolovane drivere.

TSV994 ima slew rate od svega 10V/us a to je za ovakve aplikacije malo.
Biraj OP amp sa slew rate od minimalno 50V/us inače možeš imati
zakasnelu reakciju na brze poraste struja, (recimo pri promeni smera pri malim acceleration /decceleration)
što može dovesti do lavinskog efekta u mosfetima
(Avalanche) i njihovog uništenja pogotovo što je tvoja aplikacija 150V/15A.

U principu, detekciju max. peak struje možeš ograničiti direktno na hardverskom nivou
(što bih ti i preporučio) a MCU neka prati samo nominalnu struju motora.

Peak ograničenje se recimo na IR2110 izvodi haardverski preko SD pina
i u tom slučaju MCU sa tim nema ništa. Duty je tako "skraćen" taman za toliko
koliko je potrebno preko SD pina. Takav način limita peak struje ostaje u zoni
izlaznog stepena, odnosno posle galvanske izolacije od strane MCU, tako da
to može ostati recimo kao SAFE opcija ako radiš i peak detekciju sa nižim nivoom
nad kojom MCU ima uticaj.

I ostali driver čipovi imaju slične mogućnosti

Ja sam uspešno koristio kombinaciju 6N137 + IR2110 ( naravno tamo gde je butstrep bio dovoljan)

Pozz

P.S.
Ne vidim na kojoj frekvenciji rade ti STEVAL inverteri ?
Reply
#7
Quote:P.S.

Ne vidim na kojoj frekvenciji rade ti STEVAL inverteri ?

Primeri u biblioteci su na 16khz
Reply
#8
(04-07-2017, 01:45 PM)andrics Wrote:
Quote:P.S.

Ne vidim na kojoj frekvenciji rade ti STEVAL inverteri ?

Primeri u biblioteci su na 16khz

Toliko sam i očekivao zbog upotrebe IGBT.
Nema potrebe za većom frekvencijom.

To je sasvim dovoljna frekvenciija a ipak se mogao upotrebiti IGBT umesto mosfeta.
IGBT su uvek dobar izbor ako to frekvencija dozvoljava.

Kod mosfeta disipacija raste na kvadrat sa povećanjem struje ( P = RdsON x Id_sqr )
a kod IGBT linearno jer nemaš RdsON već Uce_Sat ( P = Uce_Sat x Ic )

Pobuda gejta je identična kao kod mosfeta i odgovaraju IR2110, UCC21520 ,SI8230 i ostali ..
(mada postoje baš i namenski drajveri za IGBT ali nisu ti neophodni )

Ništa ne bi dobio da ideš na 40KHz koliko si spominjao.
Tada bi morao koristiti mosfete i imao bi znatno veće grejanje tranzistora
u odnosu na opseg od 15 do 20KHz koliko se inače koristi.

***
Razmisli o upotrebi sledećeg IGBT:
http://www.infineon.com/dgdl/Infineon-IK...2890113e25
Nije skup - a prava je mazga !

Sa njima bi poterao i snažnije motore od tvojih !

Pozz
Reply
#9
Pokusao sam da sve to nekako probam pa da odlucim sta dalje , ali se ispostavilo da probe mogu da budu jako skupe  zbog velikih struja i napona a greske su neminovne. 
Plan 2 je izolovana varijanta na kojoj sam radio poslednjih par dana , proucavanjem literature dosao sam do neke moje varijante seme .
Sugestiju Zelje da predjem na IGBT sam prihvatio .
Ostalo je par nedoumica a to je :
Proracun Ron i Roff otpora u kolu gejta IGBT tranzistiora. Pronasao sam izracunavanje za mosfet ali ne znam da li je ista racunica za IGBT.
Prohacun bootstrap kondezatora i diode .
I kljucno pitanje je da li je struja od 350 mA , koju daje buck converetor , dovoljna da pogoni Hi voltage deo . 
Da bih odradio rutiranje PCB-a trebalo bi da resim ova pitanja .

Sema je u prilogu , Voleo bih da  cujem komentare i sugestije .


Attached Files
.pdf   ISOLATED PMSM HI POWER.pdf (Size: 825,98 KB / Downloads: 9)
Reply
#10
Koristiš li LT spice ?
Reply
#11
Probao sam ga iz znatizelje ali nisam ga ozbiljno koristio .
Reply
#12
Nemam sada vremena za detaljniji odgovor, ajmo redom pa polako ...
Pročitaj moju temu negde od 4.strane
http://forum.yu3ma.net/showthread.php?tid=1382&page=4
gde sam obajsnio najosnovnije oko mosfet gate drive i ostalo ..

Macolina tema na na višem nivou: http://forum.yu3ma.net/showthread.php?tid=1397
i iskreno se nadam da će pronaći vremena da nastavi tamo gde je stao Smile

___________

Slično možeš i ovde primeniti.
Evo ti simulacije :


kao i LT spice fajla :

.asc   Gate drive.asc (Size: 852 bytes / Downloads: 2)

IKW75N60T je otprilike "težak" kao i IRFP460
ili jednostavno umesto mosfeta/igbt stavi na simulaciju odgovarajući kondenzator (recimo 5nF)

Odmah ćeš videti gde si.
Sa naponom 15Vpp na gejtu i Trise/TFall od 150nS ( TEŠKO ćeš postići brži dV/dt u praksi) i pri 5nF ne možeš postići
veće struje gejta od 1App. Tako da tvoji driveri su i više nego dovoljni.
Same ove činjenice te teraju na upotrebu gate otpornika od recimo svega 1 ohm.

Srednja struja koju vuče jedan tranzistor iz napajanja (tvoj buck) je oko 7mA

***
Zato sam te i pitao - koristiš li LT spice !

Toliko za sada .

Pozz
Reply
#13
Što se tiće butstrep kondenzatora, postavi 1uF i miran si sigurano.

Ne valja ni prevelika vrednost
(ume da preskoči prvih dve -tri periode PWM signala u prilikom starta dok se ne napuni butstrep)

Inače kod butstrepa se sve svodi na prihvatljiv naponski ripl,
mislim da sam više pisao u mojoj temi za SMPS sa IR2153.

Butstrep nebi smeo biti manji od dvadesetostrukog iznosa Ciss od mosfeta / IGBT
a u praksi se taj iznos još nekoliko puta uveća zbog manjeg naponskog ripla na butstrep-u.
1uF je sasvim korektna vrednost za skoro sve što se nalazi u TO-247 kućištu.
Neki maksimum koji nikako nebi trebao preći je 4,7uF.

***

Napravi simulaciju H bridge u LT spice, (koliko se sećam negde sam iskopao i model za IKW75N60)
mada se nemoraš mučiti da ga tražiš i uvoziš u LT spice. Imaš u mojoj temi :
http://forum.yu3ma.net/showthread.php?tid=1116
biblioteku za IRG4PC serjiju mosfeta (extra.lib) pa recimo uradi simulaciju sa IRG4PC50W
koji je nešto slabiji u odnosu na IKW7560.

U simulaciji postavi stvarnu induktivnost tvog motora + serijski otpor namotaja, sve sa ciljem da bi video
kako IGBT preklapaju na odredjenoj frekvenciji i da vidiš koliko je prisutan strujni rep prilikom gašenja IGBT-a
na sada već poznatoj peak struji gejta. Od strujnog repa ti direktno zavisi i dead time koji moraš imati u PWM-u.

U simulaciji ne moraš postavljati pravi driver koji koristiš, već samo PULSE Voltage source koji će biti pravilno fazno pomereni
u njihovim postavkama.

Mnogo češ videtii kroz tako jednostavnu simulaciju, možeš recimo izmeriti i srednju disipaciju u watima od svakog tranzistora.
Reply
#14
I dalje ne vidim da si ograničio nagli porast struje koji se može javiti kada je osovina
servo motora zakočena iz bilo kog razloga, a duty se povećava !

U ukočenom stanju rotora induktivnost namotaja ume da padne na nekoliko stotina nH.
E upravo zbog toga ti treba VEOMA brz OP-amp sa slew rate od minimum 50V/us

Imaš napajanje od 150V i situaciju gde ti se iz bilo kog razloga ukočio rotor.
i pretpostavimo da je induktivnost zakočenog rotora napr 1uH (a verovatno je dosta manja)

dI/dt odnosno porast struje je :
150V/1uH = 150A/us

Mi želimo da ograničimo max.peak struju na recimo 50A i time sačuvamo izlazni stepen od crkavanja
Ako imamo op amp sa slew rate od 50V/us , nivo napona od recimo 5V dostižemo za 100nS
Za tih 100nS nemamo nikakvu kontrolu nad nekontrolisanim dI/dt u motoru i struja je narasla na vrednost od 15A
Naravno mora postojati i velika rezerva od najmanje trostruke vrednosti (15A * 3 = 45A) i eto nas na granici
upotrebe našeg op-ampa od 50V/us za max. peak struju od 50A

E sad se vraćam na tvoj AMC1301.
On ima delay od 3us + 2us rise time, znači ukupno 5us
Kada ne bi postojao omski otpor namotaja pre nego što AMC1301 u toj situaciji odradi svoje, struja bi narasla na
čitavih 750A ( 5us * 150A/us). Čak ni snažni IKW75N60T to nema šanse da izdrže i PUFF stružeš tranzistore sa plafona.

Već sam ti u rekao da moraš brzo i na hardverskom nivou ( poput SD na IR2110) ograničiti max.
peak struju pre analogne optoizolacije, a posle optoizolacije možeš koristiti sporiji odziv i sada trenutnu
struju saopštavati AD konverteru.

To je veoma opasna situacija i kod jeftinijih servo drivera se štitimo od toga uvodjenjem max error za enkoder.
(kada broj impulsa sa STEP linije prednjači za toliko nad enkoderom - tada se radi DISABLE izlaznog stepena)

****

To je ono što sam na brzinu video.
Trebaće ti i kočioni otpornik.

Projekat nije nimalo jednostavan.
Moj savet bi bio malo se ispraksati pri nižim naponima i strujama.

Pozz
Reply
#15
Čekaj malo ...
Sad tek vidim da će ti Vmot biti +325V ???
Reply
#16
Zeljo hvala na zapazanjima i vremenu utorsenom da mi pomognes . Studirao sam razna resenja i citao user manuale za mnoge razvojne sisteme za drive PMSM motora i ovo sto sam nacrtao je neka sazeta varijanta ST-a , TI-a i Microchipa i svi oni koriste slicne OP-ove za kontrolu struje . Termogena otpornost namotaja na servo motorima je krajnja istanca za ogranicenje struje , na ovim motorima iznosi oko 5 oma za manji i oko 2.8 oma  za veci motor po fazi . Induktivnost je 39,3 mH odnosno 23.2 mH po fazi . Znam da nije dobro za sam motor da kroz njegove namotaje tece tako velika struja ali za 5-6 us , ukupno sa AMC1301 , ce se aktivirati zastita u mikrokontroleru i ceo sklop ce uci u mod greske tj postaviti sve gate drivere  u disable mode . Na UCC21520 disable pin ja na izolovanoj strani drivera , sto znaci da bi eventualni komparater koji bi reagovao na prekoracenje struje , trebalo da se nalazi na low voltage strani . U svakom slucaju  docrtacu  deo sa komparaterom koji ce nadgledati strujne izlaze i zaustavljati gate drivere u slucaju  prekoracenja maksimalnih zadatih vrednosti struje  .

Namena motora je da radi sa stabilnom brzinom i obrtnim momentom , nece raditi u servo rezimu tj koristice se kao pogonski  motori za osovinu koja nosi alat , nema  nagle promene smera okretanja  . Broj obrtaja je u 95 slucajeva iznad 500 obrtaja u minuti . Mislim da je verovatnoca da se rotor motora zaustavi prisilno u tako kratkom vremenu jako mala .

Nastavljam dalje sa ucenjem , i crtanjem za sada .
Reply
#17
Quote:Čekaj malo ...

Sad tek vidim da će ti Vmot biti +325V ???
To je tacno. TO je maksimalna vrednost , svi testovi ce ici preko rastavno-regulacionog transformatora , za pocetne testove podesen na minimalnu vrednost od 130V DC
Reply
#18
Naravno drugar, samo ne zaboravi da evaluation board skoro nikada nije i konačno
rešenje za primenu u praksi. Tu se uvek koriste IC kola koje ta firma i proizvodi
bez obzira što konkuretske firme možda imaju i bolju opciju.

Evo upravo gledam dokument od tih STEVAL invertera,
nigde ne vidim za koje nazivne napone motora je to predvidjeno, kolike induktivnosti namotaja itd ...
Znači , dali su samo podatak o graničnim vrednostima IGBT modula !?

Ako tvoji motori imaju nazivni radni napoon od 150V, onda je previše kačiti ih na DC bus od +325V !
Promenom duty u H mostu menja se srednja struja kroz namotaje, ali u trenutku kada je IGBT otvoren
napon na namotaju je jednak DC busu (ako nema kočenja motora u tom trenutku).

Napon DC busa bi trebao biti za 20% do veći od radnog napona motora.

Pozz
Reply
#19
Meni su interesantni STEVAL-IHM023V3 i STEVAL-IHM023V8 , razlog , jedino ta dva su predvidjena za velike napone i struje . oba su u opsegu od 125v do 400v dc razlika je u maksimalnoj struji koja moze da tece kroz izlazni stepen . Parametre motora odredjujes u st motor control workbench , program je integrisan u biblioteci, a on u odnosu na parametre generise .h fajlove za tvoj projekat .
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)