Stegmotordrivning

Användarvisningsbild
Icecap
Inlägg: 26148
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Stegmotordrivning

Inlägg av Icecap »

Jag har kommit till skott med mekaniken till min stenslipare. Det är ju väldigt avancerat: en vals från en A3-skrivare (Fujitsu DL2400) med en stegmotor som är monterat med 3 st M4 gängstavar.

Drivningen består av en PIC16F73 (för att den fanns i skrotlådan) med en 8MHz kristall (för att det fanns i skrotlådan). Jag har monterat ett par knappar då man ju alltid vill kunde använda dom, i detta fall kan jag ställa hastigheten upp eller ner.

Fick för mig att det kunde vara trevligt att spara sist ställda hastighet och använda om det sker en återstart och då behövde jag ju en EEPROM. Men det har denna uråldriga PIC inte... så jag dök ner i skrotlådan och tog en 25LCC160 (EEPROM, SPI, 16kb) från ett gammalt kretskort och lödde dit. Fungerar bra. Gjort programmet så att 2 sek efter att man släpper en knapp sparas värdet.

Sedan är det drivningen, det sker via 4 utgångar och ett bunt transistorer, vanlig unipolar motor.

Det fungerar - men inte så att jag är nöjd. Jag måste hela tiden prioritera mellan steghastighet och drivspänning och hur varmt allt ska bli - och det ids jag inte! Jag vill alltså göra det hela till en chopper-drivning!

Jag har redan 2 st 0,333 Ohm motstånd, en för varje lindningspar till VDD. Jag kunde så ta ett par op-amp och göra ett par schmitt-trigger som sedan styrde drivningen via ett par gates - men jag hittade bara 324'or och de fungerar rätt dåligt med 5V matning så den idé spolade jag.

Jag har alltså shuntmotstånderna men ingen high-side avkänning - eller har jag? Fick idén att jag kunde montera en PNP över shunten så att när strömmen blir hög nog ska den leda. Men med 0,333 Ohm shunt ville strömmen bli alldeles för hög så vad göra med de befintliga komponenter?

Jag grunnade på det ett tag och plötsligt klarnade det: Om jag tar ett motstånd mellan shunten och basen och drar en konstant ström genom dessa motstånd kommer detta att ge ett konstant spänningsfall över motstånden. Då spänningen varierar över shunten beroende på belastningen kommer den fulla spänningsvariation att slå igenom på basen och *poof* - transistorn leder när det blir överström!

OK, jag vet att det är temperaturkänsligt osv men det får duga, skiten ska inte till månen!

Vid att variera den konstanta strömmen genom motstånden kan jag justera den maximala strömmen och ett par konstantströmsgeneratorer till detta är i all sin enkelhet ett potentiometer mellan GND och +5V samt två NPN-transistorer med lika stora motstånd mellan emitter och GND. Javisst, inte heller perfekt men det får duga.

Men jag vill gärna ha lite digitalt i det hela, lite tröskelvärde och switchning och den lösning kommer ju att ge en analog funktion. Hur fixa?

Letade igenom lagret av uråldrig elektronik och hittade ett par 47HCT74. Det är dubbla flip-flop's med Data, Klocka, Set och Reset. Klurade lite och insåg att om jag använder styrsignalerna till stegningen ihop med det hela kunde jag få det till att fungera.

Jag tar signalerna från PIC'en in på var sin nSet. När de signaler går till '1' ska transistorn drivas så jag tar ut från nQ till transistorn.
Sedan går "överströmssignalen" från sensortransistorn in på Dataingången, nReset är kopplat till +5V (oanvänd alltså) och kvar var det att skaffa en oscillator till att driva klockan.

PIC'en hade Timer 2 till övers, den används med CCP-enheten till att skapa PWM - så jag fixade en sådan på 50KHz., det var bara lite programmering.

Så tanken bakom det hela är:
Om latchen är Set (den transistor ska INTE driva) kommer den att befinna sig i ett låst läge med Q = '1' och nQ = '0'.

När ingen överström finns klockas det en '0' in i latchen.

Om det "rapporteras" överström är det en '1' som klockas in, detta får nQ att gå '0' vilket stoppar drivningen så den kan toggla.

Om drivning ska ske kommer den inklockade nolla att driva Q = '0' och nQ = '1' vilket driver transistorn.

Huruvida detta fungerar kan jag inte svara på än, jag har inte lödd dit strömavkänningen men ska strax göra det. 74HCT74-kretsarna är monterade och inkopplade och om jag manuellt markerar "överström" stängs signalen till transistorn av som planerat så jag hyser hopp om funktionen.

Sedan ska jag testa lite olika hastigheter på PWM-frekvensen och se vad som händer.

När det fungerar ska jag försöka rita ett schema och posta.

EDIT: OK, nu er det bygget och rent omedelbart verkar det fungera, har dock inte hunnit verifiera allt än men initialt verkar det OK.
Användarvisningsbild
6502
Inlägg: 174
Blev medlem: 2 mars 2007, 23:04:17
Ort: Tomelillla
Kontakt:

Re: Stegmotordrivning

Inlägg av 6502 »

Skönt projekt, man tager vad man haver...........
Användarvisningsbild
Icecap
Inlägg: 26148
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Stegmotordrivning

Inlägg av Icecap »

Jupp, så är det ju. Jag upptäckte dock att det fungerade lite dåligt när varvtalet steg, det blir någon resonans i det hela så jag har numera skippat att choppa på detta vis.

Jag ska bygga ett drivsteg mer då jag hade en mindre felkoppling (GND-klämman på oscilloskopet som på egen hand uppsökte ett olämpligt punkt) och jag funderar på att ha ett motstånd i serie med varje lindning och evt. parallellkoppla detta motstånd med en kondensator för att ge en startström för varje steg.

Då får jag en drivspänning på 12V vilket behövs för att få upp steghastigheten och samtidig begränsar jag strömmen så att motorn inte rostas.

Jag överväger även att istället bygga en aktiv linjär strömbegränsare för varje transistor. Då kan jag styra strömman med en DC-spänning som jag kan styra med PWM-utgången från PIC'en men jag ska se på vad jag kan få ihop av komponenter till detta.

Jag funderar även på att byta stegmotor från en med 4,7 Ohm lindningar till en med 27 Ohm lindningar. Detta gör att "spilleffekten" minskas ganska mycket - men samtidig ändras utväxlingen åt fel håll så jag är lite tveksam till exakt vilken väg jag ska gå.
Användarvisningsbild
tecno
Inlägg: 27039
Blev medlem: 6 september 2004, 17:34:45
Skype: tecnobs
Ort: Sparreholm, Södermanland N 59° 4.134', E 16° 49.743'
Kontakt:

Re: Stegmotordrivning

Inlägg av tecno »

det blir någon resonans i det hela

http://www.geckodrive.com/support/step- ... ility.html
Användarvisningsbild
Icecap
Inlägg: 26148
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Stegmotordrivning

Inlägg av Icecap »

tecno: exakt! Det område kan jag dock glida förbi då belastningen är som den är - men med "chopper"styrningen blev det förstärkt på tok för mycket.

Men nu ska jag först hitta lite komponenter till det hela, sedan ska jag se exakt hur jag löser det hela.
Användarvisningsbild
Icecap
Inlägg: 26148
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Stegmotordrivning

Inlägg av Icecap »

OK, jag har kommit en bit vidare, nu är det bara mjukvaran som ställer till det...

Skulle gärna vilja ha ett choppet-drivsteg men just nu får det duga med ett analogt strömbegränsat steg. Själva drivkretsen (drivtransistorn) är en FT5754M för att jag har några stycken och de satt i skrivaren jag plockade mekanik ifrån.

Men strömbegränsningen då? Jo, jag har ritat en lite principskissat beskrivning:
Stepper.png
Detta visar ett av de 4 drivsteg och ta det som en principskiss.
* 1 ohm motståndet är gemensam för två av drivstegen, man ska ju inte driva båda A och A' samtidig.
* När drivsignalen kommer från µC-portpinnen slås drivtransistorn på och drar ström genom stegmotorn.
* När den ström blir hög nog börjar NPN-transistorn att leda och "stjäla" styrströmmen och detta ger då en helt vanlig konstantströmsregulator.
* Sedan går det in PWM till en emitterföljare via ett ganska trögt RC-filter. Detta ger en styrbar "bias" till strömbegränsaren och med rätt programmering kan jag styra hur mycket ström som behövs vid de olika varvtal - och med ett bra program kan den kalibrera sig själv.
* Denna minskning av strömmen sparar dels energi - men viktigast är att den minskar utvecklingen av värme som ju sliter allvarligt på elektronik.
* Kalibreringen kan bara utföras om det finns en avkänning av om skiten rent faktisk roterar eller inte - och det finns. En optogaffel på lämplig ställe.
* Jag arbetar på att det ska bli ett bra program, själv-kalibreringen är på gång.
* Än så länge kan programmet avkänna att rotationen har avstannad och då startar den om roteringen vid att gå till lägsta hastighet och sedan stega upp därifrån.

EDIT:
Och nu fungerar kalibreringen också - fast en kalibrering har väldigt lång tid. Den kalibrerar vid att:
A: Start på lägsta antal steg/sek.
B: Slå av strömbegränsningsbias.
C: För varje varv fysiska varv på stegmotorn ökas strömbegränsningsbias. Varvet avkänns med den optiska sensorn.
D: När ett stopp rapporteras (för många steg utan en ändring av optosensorn) stegas PWM-värdet lite tillbaka och sparas.
E: Om PWM-värdet är för nära startvärdet kan skiten inte köra snabbare ändå, spara maxhastigheten och avsluta läget.
F: Välj nästa hastighet.
G: Är hastigheten högre än högsta hastighet avslutas läget, annars hopps det till B.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av Icecap 21 september 2014, 11:20:32, redigerad totalt 1 gång.
Användarvisningsbild
Icecap
Inlägg: 26148
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Stegmotordrivning

Inlägg av Icecap »

Jag gav upp att få kalibreringen till att fungera. Inte för att den inte fungerade men för att funktionen för att hämta värdet blev knasig, tror att det kan vara för att minnet i PIC'en inte klarar så stor bank eller något liknande.

Jag läste dock ut de värden kalibreringsfunktionen gav för den bias jag beskrev ovan och lade in i OOCalc. De visade sig att vara en rät linje vilket gjorde att det enkelt kunde räknas ut rätt bias för en given hastighet. Detta har visat sig att fungera utmärkt så nu får det vara så fram till det visar sig att inte fungera.

Jag har nu sliparen stående, den är kopplat upp och kör och ska köra hela natten så jag kan se om det har brunnit något. Tack vara denna bias-styrning är värmeutvecklingen dock minimal.

I mjukvaran ingår att om belastningen blir för hög stannar stegmotorn ju. Detta avkänns mha. den optiska sensorn och hastigheten sätts till 200 steg/sekund vilket kan "riva igång" det mesta. Sedan rampas den upp till den målhastighet som är inlagt och detta kan upprepa sig gång efter gång.

Då jag har rikligt med programminne och variabel minne samt en PIC som kör med en PLL-klocka på 64MHz ämnar jag att se hur bra systemet fungerar och sedan avgöra om jag ska förbättra det hela eller låta det vara som det är.

Kretskortet och stegmotorn:
20140915_185641.jpg
Knapparna är för att minska steghastigheten, starta eller stoppa stegningen (drivningen) och sista för att öka hastigheten.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
Senast redigerad av Icecap 15 september 2014, 21:39:36, redigerad totalt 1 gång.
Användarvisningsbild
hassefikonkasse
EF Sponsor
Inlägg: 1039
Blev medlem: 8 mars 2008, 23:04:40
Ort: Stockholm

Re: Stegmotordrivning

Inlägg av hassefikonkasse »

OK, och då har du stenarna och slippastan i en burk med lock som vilar på valsarna och roterar med dom?
Användarvisningsbild
Icecap
Inlägg: 26148
Blev medlem: 10 januari 2005, 14:52:15
Ort: Aabenraa, Danmark

Re: Stegmotordrivning

Inlägg av Icecap »

Exakt! Med denna "motor" kan jag driva trummor som är ganska store, något min "gamla" motor inte klarar. Faktisk är den gamla så svag att den ibland bara står och hackar, detta är grunden till att denna version har avkänning av brist på rotation och när det händer startar den om igen och varvar upp automagisk.

Sedan ska jag se om jag kan skaffa/tillverka större trummor så att jag kan slipa större stenar.
Användarvisningsbild
hassefikonkasse
EF Sponsor
Inlägg: 1039
Blev medlem: 8 mars 2008, 23:04:40
Ort: Stockholm

Re: Stegmotordrivning

Inlägg av hassefikonkasse »

Smart! Jag har länge önskat en stentumlare får bli ett framtida projekt.

Edit: Det skulle vara kul att se bilder på färdiga stenar sen.
Skriv svar