Myös korttimaksu toimii

DIY AC-Servo ajuri...

Aloittaja jyrki.j.koivisto, 23.10.10 - klo:17:53

« edellinen - seuraava »

0 Jäsenet ja 2 Vieraat katselee tätä aihetta.

PekkaNF

Kiitos purusta....PID ja kaskadisäädöt sekä tasaviramoottori kuulosti kovin tutulta ja muistakin moottorieista, sekä säädöistä olen kuulut, mutta homma lähti vähän sutimaan tosta:
Lainaus käyttäjältä: Kremmen - 09.02.11 - klo:17:00
Tuo hollilla olon selvitys on usein hoidettu niillä hall-antureilla joista saadaan tyypillisesti 60 asteen sektoritieto roottorin asemasta.... Tietenkin on sallittua laittaa akselille vaikka kuinka tarkka pulssianturi, mutta se ei juuri paranna tätä lopputulosta.

Tuo ylläoleva siis riittää nopeuden mittaamiseen ja sillä saadaan nopeuden säätösilmukka suljettua. Valitettavasti tuo ei kuitenkaan auta yhtään momentin säätämisessä. Jotta sekin saadaan kuntoon, menee homma oikeasti vähän haasteellisemmaksi.

1) Ymmärrän että seisovan koneen roottorin asennon selvittämisessä eivät pulssit juuri auta, mutta entäpä roottorin absoluuttinen asema? Miten tarkasti halutaan?

2) Momentista... Vektorit ja imaginäärimuutokset (laplacesta tulee lähinnä mieleen lapinkulta) ovat olleet mulle hieman hankalia...luulen etten oikein ymmärrä, mutta minä en ihan usko että jännitteen ja virran välistä kulmaa säädetään vain virtaa pilkkomalla ;D

Joo, mä en vaan tajuu, mä vaan tunkisin lisää virtaa käämeille kommutoinnin tahtiin kunnes oikea paikka löytyy tai kakkua palaa siihen tahtiin että PTC ulvoo hoosiannaa.

PekkaNF

Kremmen

Lainaus käyttäjältä: PekkaNF - 09.02.11 - klo:18:43
Kiitos purusta....PID ja kaskadisäädöt sekä tasaviramoottori kuulosti kovin tutulta ja muistakin moottorieista, sekä säädöistä olen kuulut, mutta homma lähti vähän sutimaan tosta:
1) Ymmärrän että seisovan koneen roottorin asennon selvittämisessä eivät pulssit juuri auta, mutta entäpä roottorin absoluuttinen asema? Miten tarkasti halutaan?
Hall-anturilla saatava 60 asteen sektori riittää koska sen perusteella tiedetään roottorin magneettivuon suunta suhteessa staattorikäämeihin ja voidaan käynnistää moottori oikealla vaiheistuksella. Tarkempi tieto ei varsinaisesti muuta tätä. Sen avulla olisi ehkä mahdollista optimoida staattorin resultanttivuon suunta mutta se ei käytännössä ole välttämätöntä.
Lainaa
2) Momentista... Vektorit ja imaginäärimuutokset (laplacesta tulee lähinnä mieleen lapinkulta) ovat olleet mulle hieman hankalia...luulen etten oikein ymmärrä, mutta minä en ihan usko että jännitteen ja virran välistä kulmaa säädetään vain virtaa pilkkomalla ;D
Staattorivirran ja -jännitteen välistä kulmaa ei toki säädetäkään, se määräytyy ihan käämien ja koneen muiden ominaisuuksien perusteella. Koneen nopeutta säädetään ohjaamalla staattorikäämien tuottaman pyörivän magneettikentän (sähköistä) kulmanopeutta. Roottori seuraa pyörivää staattorikenttää magnettisen kytkeytymisen ansiosta. Koneen momenttia puolestaan säädetään staattorivirran indusoimalla magneettivuolla ja staattorin ja roottorin magneettivuon välisen kulman avulla.
Lainaa
Joo, mä en vaan tajuu, mä vaan tunkisin lisää virtaa käämeille kommutoinnin tahtiin kunnes oikea paikka löytyy tai kakkua palaa siihen tahtiin että PTC ulvoo hoosiannaa.

PekkaNF
Tässä on nyt se ajatuskatko, että "sinä" s.o. säädin määrää kommutointitahdin. Se ei ole koneen vaan säätäjän ominaisuus. Ehkä arkikielellä voisi koettaa luonnehtia tuota niin, että kun roottorin mitattu kulmanopeus ja vuon suunta muunnetaan noiksi d- ja q-avaruusvektoreiksi niin niitä säätämällä saadaan käänteismuunnoksen tuloksena kolmivaihesignaali, joka ikäänkuin "vääntää" eteenpäin, eli se kirii staattorin kulmanopeutta isommaksi edistäen magnettivuon kytkeytymiskulmaa kun tarvitaan lisää momenttia ja pakittaa toiseen suuntaan kun pitää hidastaa. Tätä voi verrata seisovaan askelmoottoriin jossa roottori pyrkii pitämään asentonsa staattorihampaaseen nähden ja jos sitä poikkeutetaan niin palauttava momentti kasvaa karkeasti poikkeutuskulman funktiona. Harjattomassa koneessa tuo sama tapahtuu dynaamisesti roottorin ja pyörivän staattorikentän välillä.
Kyllä se kone varmaan pyörimään lähtee muutenkin, mutta ilman mitään johdonmukaista momentinsäätöä dynamiikka on todennäköisesti aika syvältä. Kone ei pahimmillaan ole edes stabiili kaikissa ajotiloissa vaan voi alkaa värähtelemään.
Nothing sings like a kilovolt
Dr W. Bishop

koep

Jos kuitenkin haluaa tiivistää asian vaikka hyvinkin karkeasti niin koko homman juoni
on tietää roottorin asema kullakin hetkellä jotta säätö kohdistuu optimaalisesti.

Näin ollen siis:

Jos roottorin asema saadaan muualta kuin mittaamalla ja laskemalla
(FOC/Clarke/Park&inv.) saadaan sama lopputulos vähemmällä ja yksinkertaisemmalla matematiikalla.

Vai oikaisinko liian monta mutkaa?

Tapio

Kremmen

Lainaus käyttäjältä: koep - 09.02.11 - klo:20:31
Jos kuitenkin haluaa tiivistää asian vaikka hyvinkin karkeasti niin koko homman juoni
on tietää roottorin asema kullakin hetkellä jotta säätö kohdistuu optimaalisesti.
Niin, on toi niin hyvin tiivistetty, ettei montaa sanaa enää voi vähentää :)
Lainaa
Näin ollen siis:

Jos roottorin asema saadaan muualta kuin mittaamalla ja laskemalla
(FOC/Clarke/Park&inv.) saadaan sama lopputulos vähemmällä ja yksinkertaisemmalla matematiikalla.

Vai oikaisinko liian monta mutkaa?

Tapio
Oikaisit. Lopputulos saadaan kyllä, mutta ei samaa lopputulosta. Noita v-mäisiä matriisilaskuja ei tehdä huvikseen vaan sen takia että niillä saadaan paras tulos mitä tänään osataan. Jos sama saataisi yksinkertaisemmalla laskennalla, sitä satavarmasti myös käytettäisi. Pointti ei siis varsinaisesti ole, että pitäisi mitata roottorin asentoa vielä tarkemmin, noilla mainituilla menetelmillä se saadaan kyllä tarpeeksi tarkasti selville. Hyöty on algoritmin mahdollistamassa säätödynamiikassa.
Nothing sings like a kilovolt
Dr W. Bishop

jyrki.j.koivisto

#49
Mukavaa että juttu on herättänyt kiinnostusta. Tämä "oma" suunnitelma ac-servo ajuriksi on aivan peruskauraa toisin sanoen kaikki näkemäni taajuusmuuttajat on toteutettu tällä tavalla, tarkoituksena on siis toteuttaa tuo ajuri melkolailla minimikomponenteilla. En ole siis enää yrittämässä ajaa puhdasta IGBT-siltaa vaan Fairchildin FSBF15CH60BTL IGBT "fiksua" siltaa...

Tuossa on hyvä linkki noihin muunnos laskuihin: www.nalanda.nitc.ac.in/industry/appnotes/Texas/motcon/bpra048.pdf

Sivulla 8 on kaavat. Ihan pärjää kerto, jako ja yhteenlaskuilla. Näissä omissa Panasonicin servoissa on 2500 pulssin enkooderit (a,b ja indexi). Noista signaaleista saa kyllä selville roottorin asennon muutoksen ja suunnan ja jahka roottorin indeksointi on suoritettu niin myös roottorin absoluuttisen aseman.

Tuon absoluuttiaseman voi sitten syöttää ihan suoraan funktiolle joka tuota tietoa tarvitsee ja samoin siitä saa selville kaiken mitä tuollainen karkea hall-antureihin perustuva asemointitieto voi antaa, toisin sanoen nämä 60 asteen tiedot...

Näitä "segmentti" tietoja tarvitaan SVM (space vector modulation) ajoon joilla siis pätkytetään tuota IGBT 3-vaihe siltaa. SVM ajo omassa tapauksessa on täysin turhaa koska välipiirin jännite on moninkertainen moottorin arvokilven ilmoittamaan lukuun (92 volttia) ja SVM ajo on suunniteltu ihan siitä syystä että jos siltaa ajaa puhtaalla 3-vaihe PWM signaalilla ei kaikkea jännitettä saada "käytettyä" ts. jännite tuolla moottorin päässä jää johonkin prosenttilukuun täydestä, SVM ajolla tuo maksimi jännite arvo nousee, mutta koska oma välipiirinjännite on moninkertainen joudun sitä muutoinkin rajoittamaan koska muuten ajaisin 92voltin moottoria 240voltin jännitteellä. Tästä huolimatta aion käyttää SVM-modulaatiota. (jos tätä joku muu tarvitsisi)
Tuossa linkki SVM ajoon:

http://scholar.lib.vt.edu/theses/available/etd-2798-1216/unrestricted/chap2.pdf

Summa summarum:
- virtojen mittaus kolmella virtasensorilla (2 riittäisi melko suoraan koska ia+ib+ic=0  ja yksikin riittäisi mutta mittaus tulisi suorittaa kapealla aikaikkunalla tiettynä ajanhetkenä joka riippuu sillan tiloista)
- välipiirin jännitteen mittaus (jotta tiedän kuinka paljon joudun rajoittamaan jännitettä PWM ajolla)
- haaveena olisi mitata vielä tuo ulostulojännitekin... but maybe not...
- a,b ja indeksipulssi (differentialaali signaaleina)
- hakkurivirtalähde sisäänrakennettuna (prossun käyttöjännite +5(/3.3v), jännite sillan ajoon (+15v), ulkoinen käyttöjännite enkooderille (+5v))

koep

Hyvä että olet saanut palikat päätettyä, on helpompi pelata kun tietää millä pelaa.

Itse olin jo saanut vaihtoehdot kahteen (FNB41060/FNB41560) kun aiemmin mainittua
Semikronin palikkaa ei tuntunut löytyvän mistään.

Toisen sais suoraan kontrolleriin,
toisella sais kaikki lämpenevät/tehoelementit niputettua nätisti jäähdytyslevyyn...
optoajurit helpottais häiriöiden kanssa mutta vievät suhteettomasti levyalaa
siltaan nähden... :-[

Välillä tuli jo mieleen että pitäsköhän unohtaa integraatio ja katsoa saisko
kaupan taajarin ohjelmoitua uudelleen, vois satunnainen byrokraattikin pitää vähän
pienempänä pahana :P

Näitä miettiessä...

Tapio

jyrki.j.koivisto

Tänään tuli tehtyä protokortti tuolle dspic:ille ja leikittyä pickit3:sella, jotenkin toi lisää inspiraatiota hommaan. Järkeä tullut kaiken lisäksi sen verran lisää että luovuin tuosta hakkurivirtalähteestä ja korvaan sen aivan tavallisella piirilevymuuntajalla, 2x15v. Syy miksi edes lähdin tuota hakkuri ideaa suunnittelemaan oli tuossa alun "tyhmässä" IGBT-sillassa jonka yläpuolen ajoa varten olisin tarvinnut 3 erillistä jännitettä ja nämä olisi tehty tuolla hakkurisysteemillä.

Piirilevymuuntajan käyttö tosin rajaa käytettävän töpselisähkön kotoisiin lukemiin, no universal... Nyt vain katselemaan minkä verran tuo FSBF15CH60BTL kaipaa virtaa.

jyrki.j.koivisto

#52
Älämölötys ei näytä laantumisen merkkejä ja protokorttikin on saatu (prossun osalta) kasaan. Oli hieman hakusessa tuo prossun oskillaattori osuus ja nyt onkin sitten 16 PLL kertoimella 8MHz kide pätkyttämässä prossua reippaaseen 128MHz vauhtiin, käskyt pölisee siten 32MHz vauhdilla...

Oli muuten taas kerran fiksu idea hommata pintaliitosprossuja protoiluun... SOIC28... ei mikään mahdoton protoilua varten mutta helpommallakin pääsisi... Posti tuokin nyt sitten jonkin viikon sisällä kasan DSPIC30F4011-30I/P prossuja, näissä on etuna myös tuo useampi AD-pinni ja helpompi kotelo protoiluun.

Hieman olen tuota Panasonicin servon perässä olevaa enkooderiakin koittanut lukea tuolla QEI-moduulilla, tuntuisi aika simppelilltä touhulta näin koodin puolesta. Pitäisi vain saada servon piuhat jatkettua (vaihdettua) kun on turhan lyhyiksi leikatut ja eipä liittimetkään turhia olisi.

Hieman on jäänyt askarruttamaan nuo enkooderin signaalit, normaalien _A/A, _B/B ja _Z/Z signaaline lisäksi sieltä tulee myös _RX/RX piuha pari... Mikähän sen tarkoitus on? Koitin Panasonicin servoajurin manuskoista sitä metsästää, mutta eipä tuo selvennyt...

Tilaus lähti vetämään myös max3095 piirille jolla enkooderien differentiaali signaali muutetaan dspicin ymmärtämään muotoon.

Edit

Dokumentoidaanpa nyt sitten tämä enkooderin kaapelin vaihto operaatiokin. Elippästä vaihdoin tuon aluperäisen kaapelin tilalle (awm e64638 style2589 105c 30v vw-1 nikko) nurkissa lojuneen cat5 kaapelin (alcatel filotex 100_05 389430 ftp 4pr)

Tuon RX-signaalin jätin vetämättä kattikaapelissa kun piuhat riittää juuri A,B ja Z signaaleille (+suoja ja vcc ja maa)

Tämä kaapeli saa nyt kelvata ainakin tuon protoilun ajaksi jos nyt vain nuo differentiaalit sen läpi kulkee suosiolla. Mitään impedanssi sovituksia en sen kummemmin miettinyt, mutta liekö sillä niin kovin merkitystä näillä signaalinopeuksilla.

Edit2

Tuossa tuo enkooderin persus ja huonot tinaukset...  :-X
http://www.anvianet.fi/dzy/servo/panasonic_encoder.jpg

Tuossa tähän astinen koodi
http://www.anvianet.fi/dzy/servo/ac-servo.rar

Tällä hetkellä tuo koodi lukee tuon encooderin pulssittaman laskurin ja ulostaa sen sarjaporttiin (115200), index signaali ei vielä härpätä jostain syystä mukana... koodi vai tinaus? vai kumpikinko...  :)

jyrki.j.koivisto

#53
Tuossa hieman fiilistelyä enkooderin kanssa www.anvianet.fi/dzy/servo/encoder.wmv

Index-signaali ei tuossa koodissa nyt nollaa POSCNT laskuria vaan sen tekee MAXCNT-arvo. Sain tuon indeksoinninkin kyllä pelaamaan, mutta jotain outoa sen toiminnassa vielä on. Onnistun välillä saamaan laskurin yli tuon 9999 askeleen maksimin pyörittämällä todella hitaasti akselia yli index kohdan, johtuneeko syystä että enkooderin signaalit tulee suoraan prossun pinneihin ilman mitään muokkausta. Uskon tämän toimivan kunhan saan tuon Maximin piirin hyppysiini ja kunnon differentiaali signaalit käyttöön.

Muutettu koodi on samassa paikassa
www.anvianet.fi/dzy/servo/ac-servo.rar

Edit

Taisinpa löytää interwebin syövereistä mikä tuo _RX/RX-signaali oikein on, "In addition to the standard quad A/B encoder + digital Hall feedback, the amplifier also supports motor models from Yaskawa and
Panasonic that encode the Hall signals to reduce the wire-count in the feedback cables." http://www.copleycontrols.com/motion/pdf/Accelnet_Panel_Dual_800-1514.pdf ja http://peetuvalkama.blogspot.com/search/label/Mill

jyrki.j.koivisto

#54
Aika taas herätellä tätäkin hommaa taas eloon... kummasti nämä meitin projektit rönsyilee sinne ja tänne.

Tämän vermeen tarkoituksena oli kait ajaa alunperin näitä Panasonicin servoja ja servoilla taasen pyöritellä jyrsintä, mutta mutta... Nyt homman nimenä olisi pyöritellä servoja tuossa ihmevekottimessa (rallisimulaattori), jonka laakeroinnista kerran pari täälä kyselin.

Muutetaanpa tätä suunnitelmaa sen verran että IGBT 3-vaihe siltana on tuo sama Fairchildin smart power module, mutta ohjauskäskyt otetaan vastaan optoerotetun USB:n kautta joka ottaa vastaan ainoastaan paikkatietoa mini atx koneelta, joka taasen ottaa pelitiedot varsinaiselta pelikoneelta... Servot olisi teholuokaltaan 750w-1500w.

Ruuttauksen helpottamiseksi ajattelin tehdä ajurikortin kerrosrakenteella, 2 piirilevyä. Ylimmällä USB-piiri, prossu ja virtasensorit. Alimmalla levyllä on korkeajännitteet eli IGBT-silta ja välipiirin jännitteet, ehkä myös välipiirin jännitteelle alennus ja erotus pienellä hakkurilla. IGBT silta kestää sen nominaalisen 15A, mutta riittänee jos hakkurista saisi ulos sen 5A-7A, jollain jännitteellä ehkäpä ohjelmoitavalla. IGBT siltaa voi ajaa maksimissaan 20kHz taajuudella niin tätä välipiiriä pitäisi kai ajaa nopeammassa tahdissa, 500kHz? -> pienehkömpi muuntaja plussana. Häiriöitä voisi tulla kylläkin lisää tällä systeemillä, joten laitetaan tämä vielä ajatuksena muhimaan...

IGBT-sillan ulostulot kävisi ylemmällä piirilevyllä jossa olisi nämä Allegron virtasensorit (x3) ja sensorien jälkeen palaisivat takaisin alimmalle levylle ja moottorin liittimille (Olisi kätevää jos ei tarvitsisi juottaa johdoilla näitä vetoja, mikähän olisi kätevin tapa nämä johdotukset vetää? Lattaliittimillä? ABB acs600 taajuusmuuttajissa 3-vaihe ulostulot lähtee lattaliittimistä DIN kiskolle...)

Alimmalla piirilevyllä olisi myös operaatiovahvistimet (jakajana) korkejännitteiden mittaamiseen (taas kopio ABB taajuusmuuttajista). Korkeajännitteistä haluaisin mitata ainakin välipiirin jännitteen ja jos ulostulotkin mittaisi niin vähintään sitten kahden ulostulon.

Pelkästään näiden operaatiovahvistimien takia taidan tarvita symmetrisen virtalähteen logiikalle (+-5v), lisäksi hieman vieläkin kismittää tuo bootstrapping tuossa IGBT-sillassa, joten tämä kun tarvitsee muutenkin toimiakseen +5 ja +15v niin ajattelin laittaa pienen pintaliitosmuuntajan ja taas jonkin korkeammalla taajuudella toimivan hakkuriajurin pätkyttämään +15 voltista yläkivien bootstrap konkille virtaa, datasheetin konkkien laskennassa oletetaan virtaa näistä kuluvan 2mA verran, joten mitään suuria virtoja ei tarvi kehitellä sen verran vain että yläkivet saa päälle jatkuvasti (konkathan latautuu normaalist uudestaan alakivien johtaessa) Tämän apumuuntajan pitää vain kestää välipiirin jännite samoin kuin siihen liitetyn diodin, löysin jo Elfalta sopivan 1:1 muuntajan valmiina. En tiedä taasenkaan tarvinko tälläista ominaisuutta, mutta jättää sitten vain piirilevyn täyttämättä näiden osalta jos ei.

Prosessorina toimii tämä sama dsPIC30F4012/4011, kotelo ehkä muuttuu mutta muuten pysytään tässä. USB liitetään max3420e(virta USB:n kautta) ja SPI väylän (optoerotettu) kautta dsPIC:ille,  uskon tämän dsPIC:in suoriutuvan pakettien vastaanottamisesta ja lähettämisestä moottorilaskennan aikana.

Servojen vaatimuksena on normaali enkooderi joko differentiaali ulostulolla tai ei mutta ei kuitenkaan tämän Panasonicin kaltainen jossa hall-signaalit oli laitettu yhteen johdinpariin koodattuna. Tämä sama Maximin differentiaali piiri tulee siten myös tähänkin mutta kahtena kappaleena (4+4=8 differentiaaliparia A,B,Z ja 3x hall signaalit ) loput 2 käytetään limit switcheille.

Edit: Laiteen tämä vielä tänne että muistaa... Oikosulkuvirta "mitataan" kaikista vaiheista yhdellä 5w ja ~0,008ohmin pintaliitosvastuksella joka ajaa komparaattorin kautta IGBT-sillan OC-pinniä ja dsPIC:in /fault pinniä esimerkkikytkennän tapaan.

Kremmen

#55
Lainaus käyttäjältä: jyrki.j.koivisto - 15.01.12 - klo:12:20
Aika taas herätellä tätäkin hommaa taas eloon... kummasti nämä meitin projektit rönsyilee sinne ja tänne.

Tämän vermeen tarkoituksena oli kait ajaa alunperin näitä Panasonicin servoja ja servoilla taasen pyöritellä jyrsintä, mutta mutta... Nyt homman nimenä olisi pyöritellä servoja tuossa ihmevekottimessa (rallisimulaattori), jonka laakeroinnista kerran pari täälä kyselin.

Muutetaanpa tätä suunnitelmaa sen verran että IGBT 3-vaihe siltana on tuo sama Fairchildin smart power module, mutta ohjauskäskyt otetaan vastaan optoerotetun USB:n kautta joka ottaa vastaan ainoastaan paikkatietoa mini atx koneelta, joka taasen ottaa pelitiedot varsinaiselta pelikoneelta... Servot olisi teholuokaltaan 750w-1500w.
Ihan keskustelumielessä tässä jotain ajatelmia kirjoitetun tiimoilta. Nämä siis minun henkilökohtaisia näkemyksiä jotka saa jättää omaan arvoonsa jos siltä tuntuu :)

Ensinnäkin yleiskommenttina, että 1½ kilowatin servo ei ole enää mikään lelu. Sillä liikkuu isompikin rauta ja huonossa tapauksessa katkeaa mikä tahansa ihmiskropan luu. Jos oikeasti aiot lähteä pelaamaan tuossa teholuokassa niin suhtaudu henkilöturvallisuuteen vakavasti.

Lainaa
Ruuttauksen helpottamiseksi ajattelin tehdä ajurikortin kerrosrakenteella, 2 piirilevyä. Ylimmällä USB-piiri, prossu ja virtasensorit. Alimmalla levyllä on korkeajännitteet eli IGBT-silta ja välipiirin jännitteet, ehkä myös välipiirin jännitteelle alennus ja erotus pienellä hakkurilla. IGBT silta kestää sen nominaalisen 15A, mutta riittänee jos hakkurista saisi ulos sen 5A-7A, jollain jännitteellä ehkäpä ohjelmoitavalla. IGBT siltaa voi ajaa maksimissaan 20kHz taajuudella niin tätä välipiiriä pitäisi kai ajaa nopeammassa tahdissa, 500kHz? -> pienehkömpi muuntaja plussana. Häiriöitä voisi tulla kylläkin lisää tällä systeemillä, joten laitetaan tämä vielä ajatuksena muhimaan...
Sanoisin, että älä siirtele pääpiirin virtoja kortilta toiselle monien liittimien kautta. Vie mielummin virranmittaus sinne pääpiiriin ja tuo mittasignaali ulos toiselle kortille jos tarvii. Jos hoidat homman noilla Allegron Hall-mittapiireillä niin ei minusta ole mitään syytä kuskata pääpiirin vetoja elektroniikkakortille.

Tuo välipiirin jännitteen manipulointi ei myöskään heti auennut. Kerro lisää mikä siinä oli ajatuksena?

Lainaa
IGBT-sillan ulostulot kävisi ylemmällä piirilevyllä jossa olisi nämä Allegron virtasensorit (x3) ja sensorien jälkeen palaisivat takaisin alimmalle levylle ja moottorin liittimille (Olisi kätevää jos ei tarvitsisi juottaa johdoilla näitä vetoja, mikähän olisi kätevin tapa nämä johdotukset vetää? Lattaliittimillä? ABB acs600 taajuusmuuttajissa 3-vaihe ulostulot lähtee lattaliittimistä DIN kiskolle...)
Lopulliset lähdöt ruuvattavilla liittimillä. Joko riviliitin tai liitinrima. Ei mitään tökittäviä lattaliittimiä, niistä ei tule kuin sanomista ja pahimmassa tapauksessa kipinöitä. Tai no ehkä ne voi mennä jossain sisäisissä kytkennöissä jossa nitä ei tarvii räplätä koko ajan. Mutta mieti vielä sitä pääpiirin reititystä.
Niin ja pääpiiriin vain 2 virranmittausta. Se kolmas on täysin turha koska Gustav Kirchhoff on jo aikaa sitten meille opettanut, että piste ei pullistu http://en.wikipedia.org/wiki/Kirchhoff%27s_circuit_laws.

Lainaa
Alimmalla piirilevyllä olisi myös operaatiovahvistimet (jakajana) korkejännitteiden mittaamiseen (taas kopio ABB taajuusmuuttajista). Korkeajännitteistä haluaisin mitata ainakin välipiirin jännitteen ja jos ulostulotkin mittaisi niin vähintään sitten kahden ulostulon.
Miksi jännitejako pitää tehdä oparilla, siihenhän riittää pari vastustakin? Vai onko sulla joku muu juttu mielessä miksi vahvistimia tarvitaan? Kun sulla on nuo Allegrot virranmittauksessa niin se on galvaanisesti erottava. Sama kannattaisi (lue: pitää) saada myös jännitteen mittaukseen. Siispä erottavia mittavahvistimia katselemaan...

Lainaa
Pelkästään näiden operaatiovahvistimien takia taidan tarvita symmetrisen virtalähteen logiikalle (+-5v), lisäksi hieman vieläkin kismittää tuo bootstrapping tuossa IGBT-sillassa, joten tämä kun tarvitsee muutenkin toimiakseen +5 ja +15v niin ajattelin laittaa pienen pintaliitosmuuntajan ja taas jonkin korkeammalla taajuudella toimivan hakkuriajurin pätkyttämään +15 voltista yläkivien bootstrap konkille virtaa, datasheetin konkkien laskennassa oletetaan virtaa näistä kuluvan 2mA verran, joten mitään suuria virtoja ei tarvi kehitellä sen verran vain että yläkivet saa päälle jatkuvasti (konkathan latautuu normaalist uudestaan alakivien johtaessa) Tämän apumuuntajan pitää vain kestää välipiirin jännite samoin kuin siihen liitetyn diodin, löysin jo Elfalta sopivan 1:1 muuntajan valmiina. En tiedä taasenkaan tarvinko tälläista ominaisuutta, mutta jättää sitten vain piirilevyn täyttämättä näiden osalta jos ei.
+-5V tietenkin toimii, mutta mieti josko kuitenkin kannattaisi mennä +- 15V ratkaisuun. Kautta maailman sivu analogiset jännitesignaalit on normalisoitu +-10V tasolle ja sitähän ei tetysti saa aikaan 5V käyttöjänöstä. Toki 5V taso toimii myös mutta silloin signaalialue jää jonnekin +-3V jollet käytä rail to rail opareita mikä taas on vähän turhaa rahan haaskuuta kun +-15V hoitaa homman. Myös biasjännitteiden ja -virtojen häiriöt jää suhteessa pienemmiksi kun signaalin swingi on isompi.
Minulla on juuri menossa marsu-jyrsinprojektin osaprojekti jossa korjaan Jonnelta aseveliapuna saatujen Yaskawan Sigma II-servopakkien apujännitepiirejä. Niissä on ihan tuo sama problematiikka, että apujännitelähde syöttää IGBT:n hilapiirit, sillan ohjauksen sekä varsinaisen servoprosessorin ja FPGA:n. Sigma II:ssa on tähän tarkoitukseen pieni flyback-hakkuri jota ohjaa mysteerihybridipalikka. Juuri tuo palikka on lahonnut molemmista servo-ohjaimista ja nyt on uusi toteutus protoiltu ja kortit kohta tulossa. Jos aihe kiinnostaa niin minulta löytyy lisää tietoa. Olennaisesti toteutus on sovellettu Fairchildin appnotesta FAN7554-ohjainpiirille, muuntaja vain on Yaskawan alkuperäinen samoin kuin raakajännitteen syöttö.

Lainaa
Prosessorina toimii tämä sama dsPIC30F4012/4011, kotelo ehkä muuttuu mutta muuten pysytään tässä. USB liitetään max3420e(virta USB:n kautta) ja SPI väylän (optoerotettu) kautta dsPIC:ille,  uskon tämän dsPIC:in suoriutuvan pakettien vastaanottamisesta ja lähettämisestä moottorilaskennan aikana.
Olit siis tekemässä nimenomaan servoa? Se kun on hiukan eri asia kuin pelkkä harjattoman koneen pyöritys vaikkapa pesukonetta tai jotain tuuletinta tms varten. Tuntuu servon ohjaamiseen kevyeltä tuo PIC vaikka kokeilematta on vaikea arvioida - voi se silläkin onnistua. Tunnusluvut vaan ei kovin hyvin mätsää tunnetusti toimiviin ratkaisuihin. En nyt itse muista yhtään modernia toteutusta jossa servon ohjaus EI olisi vektoripohjainen. Yleisin DSP näissä hommissa taitaa olla TI:n TMS320-sarja. Itse olen tykästynyt Atmelin AVR:iin kun niillä on tullut väännettyä ja kehitysympäristöt saa ilmaiseksi. UC3C-arkkitehtuuri on näissä hommissa hyvä ja siinä on joitain yhteisiä piirteitä tuon TMS:n kanssa ja lisäksi hyvin kehittynyt sisäinen arkkitehtuuri, mm erillinen event-väylä jolla voi siirtää oheislaitekuormaa pois CPU:lta sekä high speed matriisiväylä prosessorin coren yhdistelyyn. http://www.atmel.com/dyn/resources/prod_documents/32117s.pdf Jos noita nyt lyhyesti vertailisi niiden ominaisuuksien suhteen mitkä minusta on tärkeitä niin se näyttäisi tältä:

1. ALU sanan leveys
PIC: 16bit
TMS, AVR UC3C: 32 bit

2. Prosessoricore
PIC: Laskentateho "up to 30 MIPS". Dedikoitu DSP engine. Datamuisti jaettu 2*32k lohkoihin (X ja Y). Muistinosoituksessa DSP-optimointeja. Työrekisterit 16-bittisiä, 2 40-bittistä akkua. Mahdollisuus saturoituvien muuttujien käyttöön.
TMS: Laskentateho (C3 versio) 32237 Dhrystone/s, coresta on lukuisia eri versioita kiinteän ja liukuvan pilkun laskentaan, tehoa löytyy varmasti tarpeeksi.
AVR UC3C: 91 Dhrystone MIPS, yleiskäyttöinen liukulukukiihdytin (aritmetiikkaprosessori). Mahdollisuus saturoituvien muuttujien käyttöön.

3. Väyläarkkitehtuuri
PIC: Muistiarkkitehtuuri ilmeisesti von Neumann (ei sanottu suoraan mutta voi päätellä lohkiksesta. Tosin jossain todetaan sen olevan "modified Harvard"). X-dataväylä ohjelmakoodille ja I/O-porteille, Y-dataväylä aritmetiikkaan ja DSP-enginelle. DSP-enginestä yhteys X-väylään. Dedikoidut oheislaitteet kytketty X-väylään.
TMS: Erillinen Harvard-arkkitehtuurin mukainen muistiväylästö (7 rinnakkaista väylää, DMA mukaanlukien); multipleksoitu oheislaiteväylään ja prosessorin coreen.2 CPU-väylää ja 2 rekisteriväylää, molemmat suoraan multipleksoitu muistiväyliin.
AVR UC3C: Useita dedikoituja väyliä prosessoricoreen; Harvard-arkkitehtuurin mukainen muistiväylästö high-speed kytkentämatriisin kautta. DMA ja nopeat oheislaitteet (USB, Ethernet MAC) samoin nopean matriisin kautta, core kytketty matriisin kautta 3 erilliseen nopeaan oheislaiteväylään. Event processing-matriisiväylä jolla oheislaitteita voidaan kytkeä suoraan ohi prosessoricoren ja DMA-ohjauksen. Lisäksi yleiskäyttöinen GPIO-väylä johon hitaat oheislaitteet kytkeytyvät.

4. On chip-muisti
PIC: Flash 48 kB, RAM 2 kB
TMS: RAM 2 * 32 kB, cache 64 kB, boot ROM + max 32 MB ulkoista muistia
AVR UC3C(512): Flash 512 kB, RAM 64 kB, High speed System RAM 4 kB + 16 MB ulkoista muistia

TMS:llä ja AVR:llä servon teko onnistuu varmasti, PIC:illäkin se ehkä onnistuu, mutta on varmasti aika haastava suoritus. Saatan olla väärässä, mutta silti veikkaan että ilman vektoriohjausta et saa servolle tarvittavaa dynamiikkaa aikaan. AVR:n valmiista DSP-kirjastoista löytyy tarvittavat muunnokset suoraan joten niitäkään ei tarvitse itse debugata.
En halua masentaa mutta näin minä sen näen. Toivottavasti sinulla on parempaa tietoa ettei prosessorin valinta perustu ainoastaan siihen että se on entuudesta tuttu...

Lainaa
Servojen vaatimuksena on normaali enkooderi joko differentiaali ulostulolla tai ei mutta ei kuitenkaan tämän Panasonicin kaltainen jossa hall-signaalit oli laitettu yhteen johdinpariin koodattuna. Tämä sama Maximin differentiaali piiri tulee siten myös tähänkin mutta kahtena kappaleena (4+4=8 differentiaaliparia A,B,Z ja 3x hall signaalit ) loput 2 käytetään limit switcheille.

Edit: Laiteen tämä vielä tänne että muistaa... Oikosulkuvirta "mitataan" kaikista vaiheista yhdellä 5w ja ~0,008ohmin pintaliitosvastuksella joka ajaa komparaattorin kautta IGBT-sillan OC-pinniä ja dsPIC:in /fault pinniä esimerkkikytkennän tapaan.
Tähän sama kommentti kuin aiemmin: 2 vaihetta kyllä riittää koska niiden summa on sen kolmannen vaihevirran vastaluku.

Iltalukemiseksi muutama pruju, josko niistä irtoaisi jotain mietteitä :)
Nothing sings like a kilovolt
Dr W. Bishop

jyrki.j.koivisto

#56
Kiitos kun kävit sepustukset läpi, kovin tarkkaan en tätä hommaa ole vielä miettinyt vaikka aikaa on jo kulunut melkoisesti aloittamisesta. Fairchildin IGBT palikkakin on jo vanhentunut ja obsolete...

Tuo jännitteen mittaaminen galvaanisesti erotettuna on melko työläs toteuttaa ja näissä taajuusmuuttajissa mitä olen penkonut läpi se onkin jätetty toteuttamatta. Jännitteet menee opareille jakajan kautta ja näissä se jännite tosiaankin on sielä 10voltin paremmalla puolella symmetrisenä. Tuo analogiapuoli jäi aikoinaan kun alaa luin hieman hataralle pohjalle, joutuu soveltamaan jonkun viisaamman esimerkkikytkentöjä... Mittasin välipiirin miinus vedosta että näissä se menee suoraan piirien maihin. Tietenkin kaikki lähdöt ja tulot itse laitteesta oli erotettu galvaanisesti.

Tuossa vasemmalla on tuo operaatiovahvistin millä ABB taajuusmuuttajissa mitataan välipiirin ja lähtöjen jännite


Ainoa galvaaninen erotus on USB-väylässä ja päätyrajoissa optoilla, jos jostain syystä mittapisteistä vuotaa virtaa niin se on sitten kortin menoa, mutta sähköturvallisuus ei käyttäjän näkökulmasta ymmärtääkseni vaarannu.

Jostain kumman syystä haluaisin suoraan lukea kolmen vaiheen virrat ja jännitteet, vaikka tiedänkin Kirchhoffin lain. En tiedä käytänkö näitä Hall virtamittareita ne kun ei oikein passaa tuon ruuttauksen puolesta (olen käsi siinä...) Ongelmana on tuo suojaetäisyys ja näistä hall piireistä lähtee monia piensignaalivetoja, 3x paljon matajännitteisiä = helkutisti vetoja korkeajännite puolella ja nämä palikat vievät melkolailla samanverran tilaa kuin tuo IGBT silta.

Tuosta välipiirin jännitteen säädöstä luovun nyt ainakin toistaiseksi, ajatuksena oli että sillä saisi jonkin verran laskettua välipiirin jännitettä, mutta taitaa tarvita melko laajaskaalaisen kytkennän, ei sitten tarvitsisi pätkyttää pienempi jännitteistä servoa täydellä välipiirin jännitteellä, nämä tarvittavat servot kun ovat vielä hakusessa.

Edit:
Luultavimmin koitan mitata virrat vastuksilla Fairchildin esimerkkikytkentöjä mukaillen mutta silti hieman erilailla. IGBT sillan kolmen alimman kiven emitterit tuodaan palikasta erillisinä ja nämä vedetään 3 vastuksen kautta välipiirin maahan. Opareilla alipäästösuodin ja vahvistus dsPIC:in AD-muuntimelle. Oparien signaalit jatkavat myös diodien kautta IGBT-sillan ylivirta pinniin(+dsPICIN FAULT pinniin), tarkoituksena on saada HW-tasolla virta katkeamaan mikäli virtaraja ylittyy 1,5 kertainen raja Fairchildin esimerkeissä, mutta taidan laskea rimaa hieman...

Allegron Hall piireiltäkin saisi säädettävän virtarajan ja HW tason virrankatkaisun, mutta mutta...

jyrki.j.koivisto

Nyt olen jonkin verran vääntänyt levyn layouttia ja vanha totuus osien sijoittelusta ruuttauksen kannalta pitää paikkansa (90% sijoittelua ja loppu on vetojen vetämistä...)

Kevyesti näyttää menevän 3 hall sensoria suoraan moottorin vaiheisiin ja vastusketjut jännitteiden mittaamiseen. En tarvinnutkaan erillistä DIN kiskoliitintä vaan layoutin selkeydyttyä saan suoraan liittimen levyyn kiinni. Phoenixillä näyttäisi olevan jännitteiden ja virtojen kestävät liittimet tähän hommaan.

Vielä uupuu skemoista operaatiovahvistimet jännitteille ja komparaattorit virranrajoituksille. Laitan jonkin SPI-väyläisen tuplaulostulo DAC:in komparaattoreille ohjelmoitavaksi ylivirtarajaksi. Simuloin LTSpice:llä tuota virranrajoitusta ja jännitteiden mittaamista ja näyttäisi aika helposti toimivan...

On kehvelin kätevä ohjelma tuo LTSpice, näkee suoraan vastusten yli menevien jännitteiden suuruudet, virrat ja hukatun tehon.

Hiukan himottaisi tehdä nelikerroslevy, mutta kuinkahan paljon Kiinanpojat siitä sitten ottaisi? Onkos Kremmeni näitä koskaan itselleen tilaillut ja mitenkäs näiden piirilevyn reikien koot? Onko Kiinanpojilla jokin lista minkä kokoisia poria käyttävät vai saako reijät olla mielivaltaisen kokoisia, poraavat sitten seuraavaan kokoon vai?

LTSpicellä simuloin myös tuota välipiirin jännitettä lähellä ylivirtaa ja näyttää että tarvitsen muutaman tuhannen mikrofaradin kondensaattorin tuohon, jostain luin että 10% rippeli olisi hyväksyttävissä, mutta samassa Freescalen läpyskässä käytettiin kuitenkin 2x470uf suotoa, pitääpä tätä vielä miettiä...

jyrki.j.koivisto

#58
Hieman skemaa virtojen ja jännitteiden mittaamisesta http://www.anvianet.fi/jyrki.koivisto/simulator/AC-Servo.pdf

Pitää shiftata nuo PHASE_X_VOLTAGE:n jännitteet positiiviselle puolelle ennen opareita ja AD-muunninta. Vastusketjuunkin tulee lisää vastuksia ettei jännitekestot ylity. Voisi myös käyttää hall sensorien virtarajoja eikä erillisiä komparaattoreita... niin monta tapaa tehdä tämä homma eikä osaa päättää...

Edit: Kilon vastuksiahan tähän EI tule...  :) vaan mahdollisimman suuri ohmiset samoin maavedot kytketään tähteen yhdessä pisteessä ja nämä pitää vielä tarkistella kunhan lisään komponentteja...

ACS710:nen ylivirtaraja toimii mukavasti sekä positiivisillä että negatiivisillä virroilla, ei tarvitse DAC:ista kuin yhden ulostulon.

Kirjataanpa tämäkin vielä tänne etten unohda suunnitelmia... DAC:illa asetetaan HW-tason ylivirtaraja, DAC:in ulostulot ACS710:nen(x3) Voc pinniin. ACS710 ajaa /FAULT pinninsä alas ylivirran sattuessa oorattuna kaikki kolme yhteen (diodien kautta) dsPICIN /FAULT:iin ja käännettynä IGBT-sillan ylivirta pinniin (0.5voltin trippitaso)

Edit2:
Voisi hoitaa tuon moottorilaskennan ja USB touhut pic32:sella, dsPIC hoitaa sitten vain pulssitukset optoerotetun SPI väylän ohjaamana.

Kremmen

Lainaus käyttäjältä: jyrki.j.koivisto - 25.01.12 - klo:11:40
[...]

Hiukan himottaisi tehdä nelikerroslevy, mutta kuinkahan paljon Kiinanpojat siitä sitten ottaisi? Onkos Kremmeni näitä koskaan itselleen tilaillut ja mitenkäs näiden piirilevyn reikien koot? Onko Kiinanpojilla jokin lista minkä kokoisia poria käyttävät vai saako reijät olla mielivaltaisen kokoisia, poraavat sitten seuraavaan kokoon vai?
[...]

Nelikerroslevyillä on hintansa kun työvaiheita tulee niin paljon enemmän. Halvin mitä olen löytänyt on ITeadStudion max 10x10 cm 4-kerroslevy, 10 kpl 100 USD. Yksiä kappaleita nuo ei toimita.
Mitään erityisiä rajoituksia reikäkokoihin en ole huomannut, lupaavat tehdä välillä 0,3 - 6,35 mm, varmaan kympin välein.
Nothing sings like a kilovolt
Dr W. Bishop

Powered by EzPortal
SMF spam blocked by CleanTalk