INHOUDSOPGAWE:

Stepper Speed Control Menu aangedryf vir Arduino: 6 stappe
Stepper Speed Control Menu aangedryf vir Arduino: 6 stappe

Video: Stepper Speed Control Menu aangedryf vir Arduino: 6 stappe

Video: Stepper Speed Control Menu aangedryf vir Arduino: 6 stappe
Video: Learn Arduino in 30 Minutes: Examples and projects 2024, Julie
Anonim
Stepper -spoedbeheer -spyskaart aangedryf vir Arduino
Stepper -spoedbeheer -spyskaart aangedryf vir Arduino
Stepper -spoedbeheer -spyskaart aangedryf vir Arduino
Stepper -spoedbeheer -spyskaart aangedryf vir Arduino
Stepper -spoedbeheer -spyskaart aangedryf vir Arduino
Stepper -spoedbeheer -spyskaart aangedryf vir Arduino

Hierdie SpeedStepper -biblioteek is 'n herskryf van die AccelStepper -biblioteek om spoedbeheer van die stapmotor moontlik te maak. Met die SpeedStepper -biblioteek kan u die ingestelde motorsnelheid verander en dan versnel/vertraag na die nuwe ingestelde snelheid met dieselfde algoritme as die AccelStepper -biblioteek. Met die SpeedStepper -biblioteek kan u ook die plus- en minuslimiet en 'n 'tuis' posisie instel. Daar is 'n goHome -opdrag om terug te keer na die tuisposisie.

Beperkings: Die SpeedStepper -biblioteek dryf slegs rigting- en trapuitsette aan, en moet dus aan 'n motorbestuurder, soos Easy Driver, gekoppel word om die stepper -motor werklik te bestuur. Die AccelStepper -biblioteek bied meer ryopsies wat indien nodig na hierdie biblioteek gekopieer kan word.

Drie voorbeeldsketse word voorsien, wat elkeen sonder 'n motor- of motorbestuurder bestuur kan word. speedStepperPlot -skets gee voorbeeld van spoedopdragte en die goHome -opdrag en gee 'n grafiek van die resulterende snelheid en posisie. Die speedStepperSetup -skets bied 'n menu -aangedrewe opstelling om die motor se huis en perke in te stel, en dan die motor te laat loop en die spoed op en af aan te pas en huis toe te eindig. Die speedStepperProfile -skets toon 'n voorbeeld van die opstel en uitvoering van 'n snelheidsprofiel.

Alhoewel die AccelStepper-biblioteek goeie posisionele beheer bied, was spoedbeheer nodig vir die prototipe ysmeltprobe vir die versameling van biologiese monsters op Europa. Hier is 'n video van 'n vorige weergawe van die prototipe, wat gewig in plaas van 'n motor gebruik het. Hersiening 1.1 het spoedprofiele bygevoeg nadat 'n gebruiker 'n middel versoek het om die snelheidsprofiel van 'n pomp te beheer.

Hierdie biblioteek werk op Arduino Uno en Mega2560, maar vir die prototipe is 'n groter geheue / vinniger verwerker SparkFun Redboard Turbo gebruik.

Hierdie instruksies is ook aanlyn beskikbaar by Stepper Speed Control Library vir Arduino

Voorrade

Om die voorbeeldsketse uit te voer, is slegs 'n Arduino UNO of Mega2560 en die sagtewarebiblioteke nodig

Vir die toets van die biblioteek is 'n SparkFun Redboard Turbo gebruik met 'n Easy Driver, 'n 200 step/rev, 12V 350mA stepper motor en 'n 12 DC supply 2A of groter, bv. https://www.sparkfun.com/products/14934. USB A na mikrokabel USB na TTL seriële kabel Arduino IDE V1.8.9 en 'n rekenaar om dit op te laat werk.

Stap 1: Biblioteekfunksies

Die SpeedStepper -biblioteek bestuur die stappermotor wat beperk word deur perke wat die biblioteek stel. Sien die SpeedStepper.h -lêer vir die verskillende beskikbare biblioteekmetodes. Hier is 'n uiteensetting van die logika agter hulle.

Die posisie van die stepper word gevolg deur die aantal stappe (pulse) te tel. Die biblioteek beperk die posisie tussen die setPlusLimit (int32_t) en setMinusLimit (int32_t) posisies. Die pluslimiet is altyd> = 0 en die minusgrens is altyd <= 0. By die aanvang is die motorposisie 0 (tuis) en die perke word op baie groot +/- getalle gestel (ongeveer +/- 1e9 stappe). setAcceleration (float) bepaal hoe vinnig die motor die spoed op of af kan verander. As die motor die plus- of minusgrens nader, sal dit teen hierdie tempo vertraag totdat dit by die limiet stop. By die aanvang word die versnelling ingestel op 1,0 stappe/sek/sek. Die versnellingsinstelling is altyd 'n +ve -getal. Die teken van die setSpeed (float) -instelling bepaal die rigting waarin die motor sal beweeg.

setSpeed (float) stel die spoed in om die motor te versnel / te vertraag vanaf die huidige spoed. Die snelheid wat via setSpeed (float) ingestel kan word, word in absolute waarde beperk deur instellings, setMaxSpeed (float), standaard 1000 tree/sek en setMinSpeed (float), standaard 0,003 stappe/sek. Hierdie standaard is ook die absolute hardgekodeerde spoedgrense wat die biblioteek vir setMaxSpeed () en setMinSpeed () sal aanvaar. As u 'n maksimum spoed> 1000 stappe/sek. Wil stel, moet u die eerste reël in die SpeedStepper.cpp -lêer wysig om die maxMaxSpeed (1000) na die maksimum spoed te verander. In die praktyk word die maksimum spoed ook beperk deur tyd tussen oproepe na die biblioteek se run () metode. Vir 1000 stappe / sek. Moet die run () -metode ten minste elke 1 mS genoem word. Sien die latensie -afdeling hieronder.

As u 'n snelheid van minder as min probeer stel, sal die motor stop. Elkeen van hierdie setters het 'n ooreenstemmende getter, sien die SpeedStepper.h -lêer. Vir spoed gee getSetSpeed () die spoed wat u via setSpeed () ingestel het, terwyl getSpeed () die huidige motorsnelheid terugstuur, wat wissel namate dit versnel/vertraag na die ingestelde snelheid. As die motor nie in die rigting gaan nie, dink u aan 'n +ve, maar u kan invertDirectionLogic () skakel om die rigting waarin die motor beweeg vir +ve -snelhede te ruil.

getCurrentPosition () gee die huidige motorposisie terug in vergelyking met 'huis' (0). U kan die huidige motorposisie setCurrentPosition (int32_t) ignoreer. Die nuwe posisie is beperk tot die gestelde plus/minus perke.

Aanvanklik word die motor by posisie 0 gestop. Deur setSpeed (50.0) te skakel, sal dit in die +ve rigting begin versnel tot 'n maksimum spoed van 50 tree/min. Deur hardStop () te bel, stop die motor onmiddellik waar dit is. Aan die ander kant, as u die stop () -metode noem, sal die snelheid op nul gestel word en die motor tot stilstand kom. StopAndSetHome () bel die motor onmiddellik en stel sy posisie op 0. Die plus/minus limietwaardes word nie verander nie, maar word nou na hierdie nuwe 0 (tuis) posisie verwys. Deur goHome () te bel, sal die stapper terugkeer na hierdie 0 (tuis) posisie en stop. As u met setSpeed () bel, sal u huis toe gaan.

Die SpeedStepper -biblioteek bied ook spoedprofielbeheer via die metodes setProfile (SpeedProfileStruct* profileArray, size_t arrayLen), startProfile (), stopProfile (), om 'n lopende profiel te onderbreek en isProfileRunning (). Sien die voorbeeldskets van speedStepperProfile.

Stap 2: Gebruik die SpeedStepperPlot -voorbeeld sonder 'n motor

Gebruik die SpeedStepperPlot -voorbeeld sonder 'n motor
Gebruik die SpeedStepperPlot -voorbeeld sonder 'n motor

Installeer Arduino IDE V1.8.9 Laai die SpeedStepper -biblioteek af en installeer Stoor die SpeedStepper.zip en gebruik dan die menu -item Arduino IDE Skets → Sluit biblioteek in → Voeg. ZIP -biblioteek by om die biblioteek in te voer Laai en installeer ook die millisDelay -biblioteek

Maak die voorbeelde oop → SpeedStepper → speedStepperPlot voorbeeldskets (herbegin die IDE indien nodig). Hierdie skets is opgestel om saam met Serial te werk, bv. UNO en Mega ens. Kyk hieronder vir die werking van die SparkFun Redboard Turbo.

Geen bestuurdersbord of stapmotor hoef hierdie voorbeeld uit te voer nie. Hierdie voorbeelde gebruik D6 en D7 as uitsette. U kan die uitsetpenne na enige digitale uitset verander deur die instellings STEP_PIN en DIR_PIN naby die bokant van die skets te verander.

Laai die skets op die bord en maak dan die Tools → Serial Plotter op 115200 baud oop om die plot van die snelheid (ROOI) en posisie (BLOU) aan te toon. op die x-as. Die min limiet is -510. Die posisie stop by ~ -390 omdat die snelheid na 0.0 vereis word. Die op 380 punt op die x-as, die goHome cmd word uitgereik wat die stepper terugbring na posisie nul.

Hierdie speedStepperPlot -skets gebruik millisDelays om te wissel tussen verskillende snelhede en versnellings. In baie gevalle is die gebruik van 'n SpeedStepperProfile, soos in die volgende voorbeeld, eenvoudiger.

Stap 3: Gebruik die SpeedStepperProfile -voorbeeld sonder 'n motor

Gebruik die SpeedStepperProfile -voorbeeld sonder 'n motor
Gebruik die SpeedStepperProfile -voorbeeld sonder 'n motor

Maak die voorbeelde oop → SpeedStepper → speedStepperPlot voorbeeldskets, hierdie skets lewer die bostaande plot met behulp van die Arduino Serial Plotter en is 'n voorbeeld van die uitvoering van 'n voorgeskrewe snelheidsprofiel, byvoorbeeld as u 'n pomp bestuur.

Stepper Speed Profiele bestaan uit 'n verskeidenheid SpeedProfileStruct, wat gedefinieer word in die SpeedStepper.h -lêer.

struct SpeedProfileStruct {

vlot spoed; // die teikensnelheid aan die einde van hierdie stap ongetekende lang deltaTms; // die tyd om te versnel vanaf huidige spoed (aan die begin van hierdie stap) na die teikensnelheid};

Definieer 'n verskeidenheid SpeedProfileStruct wat die teikensnelheid vir elke stap bevat en die tyd, deltaTms, in mS, om die teikensnelheid te bereik vanaf die vorige teikensnelheid. As die deltaTms nul of baie klein is, spring die spoed onmiddellik na die nuwe teikensnelheid. Andersins sal die vereiste versnelling bereken word setAcceleration () sal gebel word, gevolg deur 'n oproep na setSpeed () vir die nuwe teikensnelheid. In alle gevalle word die profiel beperk deur die bestaande plus- en minusposisiegrense en maksimum/min spoedinstellings. As u 'n snelheid wil behou, herhaal net die vorige snelheid met die tyd wat u wil hê dit moet gehou word. Aangesien die nuwe teikensnelheid dieselfde is as die huidige spoed, sal die berekende versnelling nul wees, en die spoed verander nie.

Hierdie SpeedProfileStruct -skikking het die bostaande plot opgelewer

const SpeedProfileStruct profiel = {{0, 0}, // stop onmiddellik as dit nog nie gestop is nie {0, 1000}, // hou nul vir 1sek {-50, 0}, // spring na -50 {-200, 2000}, // oprit na -200 {-200, 6000}, // hou by -200 vir 6 sek. {-50, 2000}, // afrit tot -50 {0, 0}, // // onmiddelik stop {0, 1500}, // hou nul vir 1,5 sek. {50, 0}, // spring na 50 {200, 2000}, // oprit na 200 {200, 6000}, // hou 200 vir 6 sek. {50, 2000}, // oprit na 50 {0, 0}, // // onmiddelik stop {0, 1000} // hou nul // om uitset in te teken}; const size_t PROFILE_LEN = sizeof (profiel) / sizeof (SpeedProfileStruct); // bereken die grootte van die profielreeks

Die profiel word gestel deur setProfile (SpeedProfileStruct* profileArray, size_t arrayLen) te bel, bv. stepper.setProfile (profiel, PROFILE_LEN);

Sodra die profiel opgestel is, bel startProfile () om dit vanaf die huidige motorsnelheid te laat loop (gewoonlik begin u vanaf stop). Aan die einde van die profiel sal die motor net teen die laaste teikensnelheid loop. Die isProfileRunning () metode kan gebel word om te sien of die profiel nog loop. As u die profiel vroeg wil stop, kan u stopProfile () bel, wat die profiel sal laat vaar en die motor sal stop.

Stap 4: Gebruik die SpeedStepperSetup -voorbeeld sonder 'n motor

Die voorbeeldskets is ontwerp vir 'n basis vir u eie stepper motor -toepassing. Dit bied 'n menu -aangedrewe koppelvlak waarmee u na die motor na sy tuisposisie kan beweeg, indien nie reeds daar nie, en dan die plus- en minusperke opsioneel kan herstel en dan die motor binne die reeks kan laat loop. Met die 'run' -menu kan u die snelheid verhoog en verlaag, op die huidige snelheid vries, stop en ook terugkeer huis toe.

Hierdie skets illustreer 'n aantal sagtewarefunksies wat die lus () reageer, sodat u u eie sensorinsette kan byvoeg om die stepper te beheer. Dit verg moeite om vertragings te vermy wat die spoedbeheer kan belemmer. (Sien vertragings is boos)

Installeer die biblioteke wat gebruik is vir die bestuur van die SpeedStepperPlot hierbo, en installeer dan ook die pfodParser -biblioteek. Die pfodParser -biblioteek voorsien die NonBlockingInput- en pfodBufferedStream -klasse wat gebruik word om die gebruiker se invoer en menu -uitset te hanteer, deur die lus () te verhinder.

Maak die voorbeelde oop → SpeedStepper → speedSpeedSetup -voorbeeld. Hierdie skets is opgestel om saam met Serial te werk, bv. UNO en Mega ens. Kyk hieronder vir die werking van die SparkFun Redboard Turbo.

Geen bestuurdersbord of stapmotor hoef hierdie voorbeeld uit te voer nie. Hierdie voorbeelde gebruik D6 en D7 as uitsette. U kan die uitsetpenne na enige digitale uitset verander deur die instellings STEP_PIN en DIR_PIN naby die bokant van die skets te verander. Laai die skets op die bord en maak dan die Tools → Serial Monitor by 115200 oop om die menu INSTELLING te sien.

INSTELLING pos: 0 sp: 0.00 +Limiet: 500000 -Lim: -500 LATENCY: stepper: 492uS lus: 0uS p -stel Home l -stel limiete h -goHome r -run>

As die skets loop, word die huidige posisie van die stepper as die 'tuis' (0) posisie beskou. As u die stepper weer in die regte 'tuis'-posisie moet plaas, voer die p-opdrag in om die menu HET TERUG te stel

SET HOME pos: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 752uS lus: 3852uS x -setHome hier en verlaat + -Forward - -Reverse s -swap Forward/Reverse -hardStop >

Soos u kan sien, is die perke wat in die skets gekodeer is, verwyder, sodat u die stepper oral kan plaas. U moet sorg dat u dit nie oor die fisiese perke ry nie, anders breek u iets.

Gebruik die + cmd om die stapper vorentoe te begin beweeg, as u in die verkeerde rigting beweeg, voer 'n nie-opdrag in of net 'n leë reël om dit te stop en gebruik dan die opdrag om die rigting vorentoe te verander. U moet die skets bywerk sodat dit 'n oproep na invertDirectionLogic () in die opstelling insluit om dit reg te stel vir die volgende lopie.

Gebruik die + / - cmds om die stepper in die regte nulposisie te plaas. Die motor begin stadig en bou dan spoed op soos dit vorder, gebruik net 'n leë lyn om dit te stop. Die maksimum spoed hiervoor en die spyskaarte vir perke word bepaal deur die MAX_SETUP_SPEED bo -aan die setupMenus.cpp.

Sodra die motor in sy 'tuis'-posisie geplaas is, gebruik die x cmd om die huidige posisie weer in te stel as 0 en keer terug na die SETUP-menu.

As u die limiete moet instel, gewoonlik slegs op die aanvanklike opstelling, gebruik die l cmd om die menu STELLIMITE in te gaan

STEL GRENSE pos: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 944uS lus: 5796uS l -setLimit hier + -Vorentoe - -Omgekeerde h -goHome x -afrit -hardStop>

Gebruik die + cmd om verder te gaan na die pluslimiet en gebruik dan die l cmd om dit as die pluslimiet te stel. Die opdrag h kan dan gebruik word om terug te keer na 0 en die - cmd gebruik om te beweeg as dit terugkeer na die posisie van die motor by die minusgrens. Gebruik weer die l cmd om die minusgrens in te stel. Let op die posisies van die plus- en minusperke en werk die setPlusLimit- en setMinusLimit -stellings van die setup () -metode by met hierdie waardes.

As die limiete ingestel is, gebruik die x cmd om terug te keer na die SETUP -kieslys en dan kan u die r cmd gebruik om die menu RUN oop te maak

RUN MENU pos: 0 sp: 3.31 + Lim: 500000 -Lim: -500 LATENCY: stepper: 944uS lus: 5796uS + -Versnel - -Spoed af h -goHome. -hardStop-vriesnelheid> +pos: 4 sp: 9.49 +Limiet: 500000 -Lim: -500 LATENCY: stepper: 792uS lus: 5664uS pos: 42 sp: 29.15 +Limiet: 500000 -Lim: -500 LATENCY: stepper: 792uS lus: 5664uS pos: 120 sp: 49.09 +Limiet: 500000 -Lim: -500 LATENCY: stepper: 792uS lus: 5664uS pos: 238 sp: 69.06 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS lus: 5664uS

Die + cmd begin versnel in die voorwaartse rigting en druk die posisie en spoed elke 2 sekondes uit. As die motor die gewenste snelheid bereik, kan u die versnelling stop met enige ander sleutel (of 'n leë invoer). U kan die snelheid verminder met die - cmd omlaag om te stop. As dit gestop word, sal die - cmd agteruit versnel.

Hierdie RUN -spyskaart bied u handmatige beheer van u projek. Vir outomatiese beheer moet u ander sensors byvoeg.

Stap 5: Latency

Die stepper motor beheer is afhanklik van die sagteware wat elke stap beveel. Om die ingestelde snelheid te handhaaf, moet u skets die stepper.run () -metode gereeld genoeg noem om die volgende stap op die regte tyd vir die huidige spoed af te vuur. Vir beheer via sensors moet u onmiddellik nuwe metings kan verwerk. Die afdruk van posisie/spoed bevat twee LATENCY -metings om u te laat kyk of u skets vinnig genoeg is.

Stepper Latency (pfodBufferedStream)

Die stepper latency meet die maksimum vertraging tussen opeenvolgende oproepe na die stepper.run () metode. Om die stapmotor met 1000 stappe per sekonde te laat loop, moet die trapper vertraging minder as 1000uS (1mS) wees. Die eerste weergawe van hierdie skets het 'n latensie van baie millisekondes gehad. Om hierdie ekstra oproepe te oorkom na die runStepper () -metode (wat stepper.run () noem) waar dit deur die kode bygevoeg word. Dit het die probleem nie heeltemal opgelos nie, want die spyskaart- en uitvoerafdrukverklarings het die skets geblokkeer sodra die klein Serial Tx -buffer vol was. Om hierdie blokkering te voorkom, is pfodBufferedStream uit die pfodParser -biblioteek gebruik om 'n 360 -byte -uitvoerafdrukbuffer by te voeg waarna die afdrukstate vinnig kon skryf. Dan stel pfodBufferedStream die grepe vry met die baud -tempo wat 115200 in hierdie geval gespesifiseer is. pfodBufferedStream moet kies om te blokkeer wanneer die buffer vol is, of net die oorlooptekens laat val. Hier is dit ingestel om enige ekstra tekens te laat val as die buffer vol is, sodat die skets nie geblokkeer word nie en wag vir Serial om karakters te stuur.

Lusvertraging (nie -blokkerende invoer)

Die lusvertraging meet die maksimum vertraging tussen opeenvolgende oproepe na die lus () -metode. Dit bepaal hoe vinnig u nuwe sensormetings kan verwerk en die ingestelde snelheid van die motor kan aanpas. Hoe vinnig dit dan moet wees, hang af van wat u probeer beheer.

Die vertragings as gevolg van die drukstate is verwyder deur pfodBufferedStream hierbo te gebruik, maar om die invoer van die gebruiker te verwerk, moet u die eerste teken van die invoer neem en die res van die reël ignoreer. Die NonBlockingInput-klas in pfodParer-biblioteek word gebruik om 'n nie-nul karakter terug te gee wanneer daar insette is, met behulp van readInput (), en om die volgende karakters met clearInput () skoon te maak en weg te gooi, totdat geen tekens vir 10mS ontvang word sonder om die lus te blokkeer ()

Die lusvertraging word natuurlik verhoog deur die ekstra kode wat u byvoeg om die sensors te lees en die nuwe ingestelde snelheid te bereken. Baie sensorbiblioteke neem net die vertraging (..) in tussen die begin van 'n meting en die ophaal van die resultaat. U sal hierdie biblioteke herskryf om eerder millisDelay te gebruik om die meting na 'n geskikte nie-blokkerende vertraging op te tel.

Stap 6: Begin SpeedStepperSetup met 'n stapmotor en SparkFun Redboard Turbo

Running SpeedStepperSetup met 'n stapmotor en SparkFun Redboard Turbo
Running SpeedStepperSetup met 'n stapmotor en SparkFun Redboard Turbo
Running SpeedStepperSetup met 'n stapmotor en SparkFun Redboard Turbo
Running SpeedStepperSetup met 'n stapmotor en SparkFun Redboard Turbo

Om die SpeedStepperSetup -skets werklik uit te voer, benodig u 'n stapmotor, bestuurder en kragtoevoer en in hierdie voorbeeld SparkFun Redboard Turbo.

Die bedradingsdiagram hierbo (pdf -weergawe) toon die verbindings. Verander die SERIAL -definisie in die SpeedStepperSetup -skets na #define SERIAL Serial1

Stappermotor, kragtoevoer, bestuurder en beskerming

Daar is baie soorte en groottes van stepper motors. Hier word 'n tweespoel -12V 350mA -stapmotor gebruik om te toets. Om hierdie stepper aan te dryf, benodig u 'n kragtoevoer van 12V of meer en groter as 350mA.

Hierdie biblioteek bied slegs 'n rigting en stapuitset, sodat u 'n bestuurder nodig het om met die stapmotor te skakel. Die Easy Driver en Big Easy Driver beheer die stroom na die motor se spoel, sodat u veilig 'n hoër spanning van 'n hoër spanning kan gebruik, byvoorbeeld deur 'n 6V -toevoer vir 'n 3.3V -motor te gebruik. Die Easy Driver kan tussen 150mA/spoel en 700mA/spoel lewer. Vir hoër strome kan die Big Easy Driver tot 2A per spoel lewer. Lees die algemene vrae onderaan die Easy Drive -bladsy.

Hierdie voorbeelde gebruik D6 en D7 as die stap- en rigtinguitsette. U kan die uitsetpenne na enige digitale uitset verander deur die instellings STEP_PIN en DIR_PIN naby die bokant van die skets te verander.

Die programmering van die Sparkfun Redboard Turbo

Die programmering van die Redboard Turbo is problematies. As dit nie kan programmeer nie, druk eers die reset -knoppie een keer en kies die COM -poort weer in die Arduino Tools -menu en probeer weer. As dit nie werk nie, druk die reset -knoppie dubbel en probeer weer.

Bedrading van die Easy Driver

Twee spoelstappermotors het 4 drade. Gebruik 'n multimeter om die pare wat by elke spoel aansluit, te vind en dra dan die een spoel na die Easy Driver A -terminale en die ander spoel na B -terminale. Dit maak nie saak in watter rigting u dit draai nie, want u kan die cmd in die opstelmenu gebruik om die bewegingsrigting te verander.

Die motor se kragtoevoer is aan die M+ en GNDS gekoppel Stel die logiese vlak van die bord met die 3/5V -skakel in. Maak die skakel saam vir 3.3V mikroprosessor -uitsette, soos die SparkFun Redboard Turbo (as u dit ooplaat, is dit geskik vir 5V digitale seine, bv. UNO, Mega) Koppel die GND-, STEP-, DIR -penne aan die mikroverwerker GND en die trap en geen ander verbindings is nodig om die motor aan te dryf nie.

USB na TTL seriële kabel

As u die SpeedStepperSetup -skets van die Uno/Mega na die Redboard Turbo verskuif, vervang u moontlik #define SERIAL Serial met #define SERIAL SerialUSB om by die Redboard Turbo usb -seriële verbinding te pas, maar u sal vind dat die gevolglike stepper latency ongeveer 10 ms is. Dit is 10x stadiger as vir die UNO. Dit is te wyte aan hoe die Redboard -cpu die USB -verbinding hanteer. Om dit te bereik, moet u 'n USB- na TTL -seriële kabel aansluit op D0/D1 en stel#definieer SERIAL Serial1 in om die seriële verbinding van die hardeware te gebruik om die stapmotor te beheer. Deur Serial1 te gebruik, word LATENCY gegee: stepper: 345uS lus: 2016uS, wat 3 keer vinniger is as die UNO vir die stepper en lus latency

Terminale program

Die Arduino Serial Monitor is 'n bietjie moeiliker om te gebruik om die stapmotor te beheer, aangesien u die char in die cmd -lyn moet invoer en dan op Enter moet druk om dit te stuur. 'N vinniger reageer manier is om 'n terminale venster oop te maak, TeraTerm vir 'n rekenaar (of CoolTerm Mac), gekoppel aan die USB -na -TTL -kabel COM -poort. Dan in die venster stuur dit onmiddellik deur op 'n cmd -sleutel te druk. Deur op Enter te druk, stuur net 'n leë reël.

Stel die motorsnelheidsbereik in

Soos hierbo aangemeld, is die Easy Drive ingestel vir 1/8 stappe, sodat 1000 stap/sek. Die motor teen 1000/8/200 stap/omwenteling = 0,625 toeren per sekonde of maksimum 37,5 rpm sal draai. Deur die insette in MS1/MS2 te verander, kan u wissel tussen 1/8, ¼, ½ en volledige stappe. Koppel MS1 en MS2 vir volledige stappe aan GND. Dit sal spoed tot 300 rpm toelaat. Deur die toepaslike MS1/MS2 -instellings te kies, kan u instel vir die geïnstalleerde ratverhouding tussen die motor en die aangedrewe deel.

Beskerming van hardeware

Terwyl u met die SpeedStepper -biblioteek u posgrense kan stel vir die motoriese beweging, word die posisie vasgemaak deur die stappe wat deur die sagteware uitgevoer word, te tel. As die motor stilstaan, dit wil sê die wringkrag is onvoldoende om die motor die volgende stap aan te dryf, is die sagtewareposisie nie in ooreenstemming met die motorposisie nie. As u dan die 'goHome' -opdrag gebruik, sal die motor die tuisposisie oorskry. Om skade aan die hardeware te voorkom, moet u die eindskakelaars by die harde perke pas om die motor se kragtoevoer af te skakel

Stel motorstroomlimiet in

Stel dit eers op die laagste instelling van die potensiometer. dws spanning by TP1 is minimum. Die potensiometer is delikaat, dus moenie die potensiometer dwing om verby die meganiese aansluitings te kom nie. Stel die motor op 'n stadige, stadige snelheid stadig, draai dan stadig die potensiometer totdat die motor nie tussen stappe spring of ruk nie.

Afsluiting

Hierdie projek wys hoe u die SpeedStepper -biblioteek in 'n praktiese toepassing kan gebruik. Alhoewel die AccelStepper-biblioteek goeie posisionele beheer bied, was spoedbeheer nodig vir die prototipe ysmeltprobe vir die versameling van biologiese monsters op Europa, sodat die AccelStepper-biblioteek herskryf is om spoedbeheer te bied met eindgrense en 'n goHome-funksie.

Aanbeveel: