Innholdsfortegnelse:

Stepper Speed Control Menu drevet for Arduino: 6 trinn
Stepper Speed Control Menu drevet for Arduino: 6 trinn

Video: Stepper Speed Control Menu drevet for Arduino: 6 trinn

Video: Stepper Speed Control Menu drevet for Arduino: 6 trinn
Video: Fysetc Spider V1.1 - DRV8825 Stepper setup for STP/DIR (Step/Direction) 2024, November
Anonim
Stepper Speed Control Menu drevet for Arduino
Stepper Speed Control Menu drevet for Arduino
Stepper Speed Control Menu drevet for Arduino
Stepper Speed Control Menu drevet for Arduino
Stepper Speed Control Menu drevet for Arduino
Stepper Speed Control Menu drevet for Arduino

Dette SpeedStepper -biblioteket er en omskriving av AccelStepper -biblioteket for å tillate hastighetskontroll av trinnmotoren. Med SpeedStepper -biblioteket kan du endre den angitte motorhastigheten og deretter akselerere/senke hastigheten til den nye innstilte hastigheten ved å bruke den samme algoritmen som AccelStepper -biblioteket. SpeedStepper -biblioteket lar deg også angi pluss- og minusgrense og en "hjemmeposisjon". Det er en goHome -kommando for å gå tilbake til utgangsposisjonen.

Begrensninger: SpeedStepper -biblioteket driver bare retnings- og trinnutganger, og må derfor kobles til en motordriver, for eksempel Easy Driver, for å faktisk drive trinnmotoren. AccelStepper -biblioteket gir flere kjørealternativer som kan kopieres til dette biblioteket om nødvendig.

Tre eksempelskisser er gitt, som hver kan kjøres uten motor eller motordriver. speedStepperPlot -skisse utsteder eksempler på hastighetskommandoer og goHome -kommandoen og genererer et plott av den resulterende hastigheten og posisjonen. SpeedStepperSetup -skissen gir et menydrevet oppsett for å angi motorens hjem og grenser og deretter kjøre motoren og justere hastigheten opp og ned og gå hjem for å fullføre. SpeedStepperProfile -skissen viser et eksempel på hvordan du setter opp og kjører en hastighetsprofil.

Selv om AccelStepper-biblioteket gir god posisjonskontroll, var hastighetskontroll nødvendig for Prototype Ice-Smelting Probe for innsamling av biologiske prøver på Europa. Her er en video av en tidligere versjon av prototypen, som brukte vekt i stedet for en motor. Revisjon 1.1 la til hastighetsprofiler etter at en bruker ba om et middel for å kontrollere hastighetsprofilen til en pumpe.

Dette biblioteket kjører på Arduino Uno og Mega2560, men for prototypen ble den større minne / raskere prosessoren SparkFun Redboard Turbo brukt.

Denne instruksen er også tilgjengelig online på Stepper Speed Control Library for Arduino

Rekvisita

For å kjøre eksempelskissene trengs bare en Arduino UNO eller Mega2560 og programvarebibliotekene

For benketesting av biblioteket ble en SparkFun Redboard Turbo brukt med en Easy Driver, en 200 trinn/turtall, 12V 350mA trinnmotor og en 12 DC forsyning 2A eller større, f.eks. https://www.sparkfun.com/products/14934. USB A til mikrokabel USB til TTL seriell kabel Arduino IDE V1.8.9 og en datamaskin for å kjøre den.

Trinn 1: Bibliotekfunksjoner

SpeedStepper -biblioteket kjører trinnmotoren begrenset av grenser satt av biblioteket. Se filen SpeedStepper.h for de forskjellige bibliotekmetodene som er tilgjengelige. Her er en oversikt over logikken bak dem.

Stepperens posisjon spores ved å telle antall trinn (pulser). Biblioteket begrenser posisjonen mellom posisjonene setPlusLimit (int32_t) og setMinusLimit (int32_t). Plussgrensen er alltid> = 0 og minusgrensen er alltid <= 0. Ved oppstart er motorposisjonen 0 (hjemme) og grensene er satt til svært store +/- tall (ca. +/- 1e9 trinn). setAcceleration (float) angir hvor raskt motoren vil endre hastigheten enten opp eller ned. Når motoren nærmer seg pluss- eller minusgrensen, vil den bremse med denne hastigheten til den stopper ved grensen. Ved oppstart er akselerasjonen satt til 1,0 trinn/sek/sek. Akselerasjonsinnstillingen er alltid et +ve -tall. Tegnet på setSpeed (float) -innstillingen angir retningen motoren skal bevege seg.

setSpeed (float) angir hastigheten for å akselerere / senke motoren til, fra den nåværende hastigheten. Hastigheten som kan stilles inn via setSpeed (float) er i absolutt verdi begrenset av innstillinger, setMaxSpeed (float), standard 1000 trinn/sek og setMinSpeed (float), standard 0,003 trinn/sek. Disse standardene er også de absolutt hardkodede fartsgrensene biblioteket godtar for setMaxSpeed () og setMinSpeed (). Hvis du vil angi en maks hastighet> 1000 trinn/sek, må du redigere den første linjen i SpeedStepper.cpp -filen for å endre maxMaxSpeed (1000) til maks hastighet du ønsker. I praksis er maksimal hastighet også begrenset av tiden mellom samtaler til bibliotekets kjøre () -metode. For 1000 trinn / sek må kjøre () metoden kalles minst hver 1 ms. Se delen Forsinkelse nedenfor.

Hvis du prøver å stille inn en hastighet som er mindre enn min., Vil motoren stoppe. Hver av disse setterne har en tilsvarende getter, se SpeedStepper.h -filen. For hastighet returnerer getSetSpeed () hastigheten du angir via setSpeed (), mens getSpeed () returnerer gjeldende motorhastighet som varierer etter hvert som den akselererer/senkes til den innstilte hastigheten. Hvis motoren ikke går i retningen du tenker på en +ve, kan du ringe invertDirectionLogic () for å bytte retningen motoren beveger seg for +ve -hastigheter.

getCurrentPosition () returnerer gjeldende motorposisjon sammenlignet med 'home' (0). Du kan overstyre gjeldende motorposisjon setCurrentPosition (int32_t). Den nye stillingen er begrenset til å være innenfor de angitte pluss/minus -grensene.

I utgangspunktet stoppes motoren i posisjon 0. Ved å ringe setSpeed (50.0) vil den begynne å akselerere i +ve -retningen til en maksimal hastighet på 50 trinn/min. Å ringe hardStop () stopper motoren umiddelbart der den er. På den annen side vil ringe stop () metoden sette hastigheten til null og senke motoren til et stopp. Ved å ringe stopAndSetHome () stopper motoren umiddelbart og setter posisjonen til 0. Pluss/minus grenseverdiene endres ikke, men henvises nå til denne nye 0 (hjemmeposisjonen). Når du ringer goHome (), går stepper tilbake til denne 0 (hjem) posisjonen og stopper. Å ringe setSpeed () vil avbryte hjemreisen.

SpeedStepper -biblioteket gir også kontroll av hastighetsprofil via metodene setProfile (SpeedProfileStruct* profileArray, size_t arrayLen), startProfile (), stopProfile (), for å avbryte en løpende profil og isProfileRunning (). Se eksempelskissen for speedStepperProfile.

Trinn 2: Kjøre SpeedStepperPlot -eksemplet uten motor

Kjøre SpeedStepperPlot -eksemplet uten motor
Kjøre SpeedStepperPlot -eksemplet uten motor

Installer Arduino IDE V1.8.9 Last ned og installer SpeedStepper -biblioteket Lagre SpeedStepper.zip og bruk deretter Arduino IDE -menyelementet Skisse → Inkluder bibliotek → Legg til. ZIP -bibliotek for å importere biblioteket Last ned og installer også millisDelay -biblioteket

Åpne eksemplene → SpeedStepper → speedStepperPlot eksempelskisse (Start IDE om nødvendig). Denne skissen er konfigurert til å fungere med Serial, f.eks. UNO og Mega etc. Se nedenfor for å kjøre på SparkFun Redboard Turbo.

Ingen driverbrett eller trinnmotor er nødvendig for å kjøre dette eksemplet. Disse eksemplene bruker D6 og D7 som utganger. Du kan endre utgangspinnene til en hvilken som helst digital utgang ved å endre innstillingene STEP_PIN og DIR_PIN nær toppen av skissen.

Last opp skissen til brettet og åpne deretter Verktøy → Seriell plotter på 115200 baud for å vise plottet for hastigheten (RØD) og posisjonen (BLÅ) Plussgrensen er satt til 360, noe som får hastigheten til å rampe til null fra omtrent 100 poeng på x-aksen. Minusgrensen er -510. Posisjonen stopper på ~ -390 fordi hastigheten er krevd til 0,0. På 380-punktet på x-aksen blir goHome cmd utstedt som returnerer trinnet til posisjon null.

Denne speedStepperPlot -skissen bruker millisDelays til å bytte tid mellom forskjellige hastigheter og akselerasjoner. I mange tilfeller er det enklere å bruke en SpeedStepperProfile, som i neste eksempel.

Trinn 3: Kjøre eksempelet SpeedStepperProfile uten motor

Kjøre SpeedStepperProfile -eksempelet uten motor
Kjøre SpeedStepperProfile -eksempelet uten motor

Åpne eksemplene → SpeedStepper → speedStepperPlot eksempelskisse, denne skissen produserer plottet ovenfor ved hjelp av Arduino Serial Plotter og er et eksempel på å kjøre en foreskrevet hastighetsprofil for eksempel hvis du kjører en pumpe.

Stepper Speed Profiles består av en rekke SpeedProfileStruct, som er definert i SpeedStepper.h -filen.

struct SpeedProfileStruct {

flytehastighet; // målhastigheten på slutten av dette trinnet usignerte lange deltaTms; // tiden for å akselerere fra gjeldende hastighet (ved starten av dette trinnet) til målhastigheten};

Definer en rekke SpeedProfileStruct som inneholder målhastigheten for hvert trinn og tidspunktet, deltaTms, i mS, for å nå målhastigheten fra forrige målhastighet. Hvis deltaTms er null eller veldig liten, vil hastigheten bare hoppe umiddelbart til den nye målhastigheten. Ellers vil den nødvendige akselerasjonen bli beregnet setAcceleration () vil bli ringt etterfulgt av en samtale til setSpeed () for den nye målhastigheten. I alle tilfeller vil profilen være begrenset av de eksisterende pluss- og minusposisjonsgrensene og maks/min hastighetsinnstillinger. Hvis du vil holde en hastighet, bare gjenta forrige hastighet med tiden du vil ha den holdt. Siden den nye målhastigheten er den samme som den nåværende hastigheten, vil den beregnede akselerasjonen være null, og ingen endring skjer.

Denne SpeedProfileStruct -serien produserte plottet ovenfor

const SpeedProfileStruct -profil = {{0, 0}, // stopp umiddelbart hvis den ikke allerede er stoppet {0, 1000}, // hold null i 1sek {-50, 0}, // hopp til -50 {-200, 2000}, // rampe til -200 {-200, 6000}, // hold ved -200 i 6 sekunder {-50, 2000}, // rampe ned til -50 {0, 0}, // // stopp umiddelbart {0, 1500}, // hold null i 1,5 sekunder {50, 0}, // hopp til 50 {200, 2000}, // rampe til 200 {200, 6000}, // hold 200 i 6 sekunder {50, 2000}, // rampe til 50 {0, 0}, // // stopp umiddelbart {0, 1000} // hold null // for å plotte utgang}; const size_t PROFILE_LEN = sizeof (profil) / sizeof (SpeedProfileStruct); // beregne størrelsen på profilmatrisen

Profilen settes ved å kalle setProfile (SpeedProfileStruct* profileArray, size_t arrayLen) f.eks. stepper.setProfile (profil, PROFILE_LEN);

Når profilen er angitt, ring startProfile () for å begynne å kjøre den fra gjeldende motorhastighet (vanligvis starter du fra stoppet). På slutten av profilen vil motoren bare fortsette å kjøre med den siste målhastigheten. Metoden isProfileRunning () kan kalles for å se om profilen fortsatt kjører. Hvis du vil stoppe profilen tidlig, kan du ringe stopProfile () som vil forlate profilen og stoppe motoren.

Trinn 4: Kjøre eksempelet SpeedStepperSetup uten motor

Eksempelskissen er designet til en base for din egen trinnmotorapplikasjon. Den gir et menydrevet grensesnitt som lar deg flytte til motoren til utgangsposisjonen, hvis den ikke allerede er der og deretter eventuelt tilbakestille pluss- og minusgrensene og deretter kjøre motoren innenfor dette området. Med "kjør" -menyen kan du øke og redusere hastigheten, fryse med gjeldende hastighet, stoppe og også gå tilbake til hjemmet.

Denne skissen illustrerer en rekke programvarefunksjoner som holder løkken () responsiv, slik at du kan legge til dine egne sensorinnganger for å kontrollere trinnet. Det gjør vondt å unngå forsinkelser som kan forstyrre hastighetskontrollen. (Se forsinkelser er onde)

Installer bibliotekene som ble brukt for å kjøre SpeedStepperPlot ovenfor, og installer deretter også pfodParser -biblioteket. PfodParser -biblioteket forsyner NonBlockingInput og pfodBufferedStream -klassene som brukes til å håndtere brukerinngang og menyutgang med å blokkere løkken () fra å kjøre.

Åpne eksemplene → SpeedStepper → speedSpeedSetup -eksempelet. Denne skissen er konfigurert til å fungere med Serial, f.eks. UNO og Mega etc. Se nedenfor for å kjøre på SparkFun Redboard Turbo.

Ingen driverbrett eller trinnmotor er nødvendig for å kjøre dette eksemplet. Disse eksemplene bruker D6 og D7 som utganger. Du kan endre utgangspinnene til en hvilken som helst digital utgang ved å endre innstillingene STEP_PIN og DIR_PIN nær toppen av skissen. Last opp skissen til brettet og åpne deretter Verktøy → Seriell skjerm på 115200 for å se OPPSETT -menyen.

SETUP pos: 0 sp: 0.00 +Lim: 500000 -Lim: -500 LATENCY: stepper: 492uS loop: 0uS p -set Home l -set limits h -goHome r -run>

Når skissen går, blir den nåværende posisjonen til stepperen tatt som "hjem" (0) posisjon. Hvis du trenger å plassere stepperen til sin sanne "hjemmeposisjon", angir du kommandoen p for å vise menyen SET HOME

SET HOME pos: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 752uS loop: 3852uS x -setHome here and exit + -Forward - -Reverse s -swap Forward/Reverse -hardStop >

Som du kan se, er grensene som er kodet i skissen fjernet, slik at du kan plassere stepperen hvor som helst. Du må passe på at du ikke kjører den forbi de fysiske grensene, ellers kan du bryte noe.

Bruk + cmd for å begynne å flytte stepperen fremover, hvis du synes den beveger seg i feil retning, skriv inn en ikke-kommando eller bare en tom linje for å stoppe den, og bruk deretter kommandoen til å bytte retning fremover. Du bør oppdatere skissen for å inkludere en samtale til invertDirectionLogic () i oppsettet for å fikse dette for neste kjøring.

Bruk + / - cmds for å plassere trinnet til riktig nullposisjon. Motoren starter sakte og bygger deretter opp hastigheten etter hvert som den går, bare bruk og tøm linjen for å stoppe den. Maksimal hastighet for dette og grensemenyen er angitt av MAX_SETUP_SPEED øverst i setupMenus.cpp.

Når motoren er plassert i sin "hjemmeposisjon", bruker du x cmd til å sette den nåværende posisjonen til 0 og gå tilbake til SETUP-menyen.

Hvis du trenger å sette grenser, vanligvis bare på det første oppsettet, bruker du l cmd for å gå til menyen SET LIMITS

SET LIMITS pos: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 944uS loop: 5796uS l -setLimit here + -Forward - -Reverse h -goHome x -exit -hardStop>

Bruk + cmd for å gå videre til plussgrensen, og bruk deretter l cmd for å angi den som plussgrensen. Kommandoen h kan deretter brukes til å gå tilbake til 0 og - cmd bruke til å flytte hvis den går tilbake til posisjonen motoren ved minusgrensen. Bruk l cmd igjen for å angi minusgrensen. Legg merke til posisjonene til pluss- og minusgrensene, og oppdater setPlusLimit- og setMinusLimit -setningene for setup () -metoden med disse verdiene.

Når grensene er satt, bruk x cmd for å gå tilbake til SETUP -menyen, og deretter kan du bruke r cmd til å åpne RUN -menyen

RUN MENU pos: 0 sp: 3.31 + Lim: 500000 -Lim: -500 LATENCY: stepper: 944uS loop: 5796uS + -Speed up - -Speed down h -goHome. -hardStop-frysehastighet> +pos: 4 sp: 9.49 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS pos: 42 sp: 29.15 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS pos: 120 sp: 49.09 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS pos: 238 sp: 69.06 +Lim: 500000 -Lim: -500 LATENCY: stepper: 792uS loop: 5664uS

+ Cmd begynner å akselerere i foroverretningen og skriver ut posisjon og hastighet hvert 2. sekund. Når motoren når den hastigheten du ønsker, kan du stoppe akselerasjonen med en hvilken som helst annen tast (eller en tom inngang). Du kan redusere hastigheten ved å bruke - cmd ned for å stoppe. Hvis den stoppes, vil - cmd akselerere i revers.

Denne RUN -menyen gir manuell kontroll av prosjektet ditt. For automatisk kontroll må du legge til noen andre sensorer.

Trinn 5: forsinkelse

Steppermotorstyringen avhenger av programvaren som styrer hvert trinn. For å opprettholde den innstilte hastigheten må skissen ringe til stepper.run () metoden ofte nok til å skyte neste trinn til rett tid for gjeldende hastighet. For kontroll via sensorer må du umiddelbart kunne behandle nye målinger. Utskriften av posisjon/hastighet inkluderer to LATENCY -målinger for å la deg kontrollere at skissen din er rask nok.

Stepper Latency (pfodBufferedStream)

Stepper latency måler maksimal forsinkelse mellom påfølgende anrop til stepper.run () metoden. For å kjøre trinnmotoren med 1000 trinn per sekund, må trinnlatency være mindre enn 1000uS (1mS). Den første versjonen av denne skissen hadde en latens på mange millisekunder. For å overvinne disse ekstra anropene til runStepper () -metoden (som kaller stepper.run ()) der den ble lagt til gjennom koden. Dette løste ikke problemet helt fordi meny- og utskriftsutskriftene blokkerte skissen når den lille Serial Tx -bufferen var full. For å unngå denne blokkeringen ble pfodBufferedStream fra pfodParser -biblioteket brukt til å legge til en utskriftsbuffer på 360 byte som utskriftssetningene raskt kunne skrive til. Deretter slipper pfodBufferedStream byte med baudhastigheten spesifisert 115200 i dette tilfellet. pfodBufferedStream må velge å enten blokkere når bufferen er full eller bare slippe overløpstegnene. Her er det satt til å slippe eventuelle ekstra tegn når bufferen er full, slik at skissen ikke blokkeres og venter på at Serial skal sende chars.

Loop Latency (NonBlockingInput)

Loop -ventetiden måler maksimal forsinkelse mellom påfølgende anrop til loop () -metoden. Dette angir hvor raskt du kan behandle nye sensormålinger og justere motorens innstilte hastighet. Hvor raskt da må være, avhenger av hva du prøver å kontrollere.

Forsinkelsene på grunn av utskriftserklæringene ble fjernet ved å bruke pfodBufferedStream ovenfor, men for å behandle brukerens innspill må du ta det bare første tegnet på inngangen og ignorere resten av linjen. NonBlockingInput-klassen i pfodParer-biblioteket brukes til å returnere et tegn som ikke er null når det er input, ved hjelp av readInput (), og for å slette og kaste følgende tegn ved å bruke clearInput (), til ingen tegn blir mottatt i 10 ms uten å blokkere løkken ()

Sløyfetid vil selvfølgelig bli økt med den ekstra koden du legger til for å lese sensorene og beregne den nye innstilte hastigheten. Mange sensorbiblioteker tar sorteringen av å bare bruke forsinkelse (..) mellom å starte en måling og hente resultatet. Du må skrive disse bibliotekene på nytt for å bruke millisDelay i stedet for å hente målingen etter en passende ikke-blokkerende forsinkelse.

Trinn 6: Kjøre SpeedStepperSetup med en trinnmotor og SparkFun Redboard Turbo

Running SpeedStepperSetup med en trinnmotor og SparkFun Redboard Turbo
Running SpeedStepperSetup med en trinnmotor og SparkFun Redboard Turbo
Running SpeedStepperSetup med en trinnmotor og SparkFun Redboard Turbo
Running SpeedStepperSetup med en trinnmotor og SparkFun Redboard Turbo

For å kjøre SpeedStepperSetup -skissen på ekte trenger du en trinnmotor, driver og strømforsyning, og i dette eksemplet SparkFun Redboard Turbo.

Koblingsskjemaet ovenfor (pdf -versjon) viser tilkoblingene. I SpeedStepperSetup -skissen endrer du SERIAL -definisjonen til #define SERIAL Serial1

Trinnmotor, strømforsyning, driver og beskyttelse

Det er mange typer og størrelser på trinnmotorer. Her brukes en to spole 12V 350mA trinnmotor for testing. For å drive denne stepperen trenger du en strømforsyning på 12V eller mer og større enn 350mA.

Dette biblioteket gir bare en retning og trinnutgang, så du trenger en driver for å koble til trinnmotoren. Easy Driver og Big Easy Driver styrer strømmen til motorens spoler slik at du trygt kan bruke en strømforsyning med høyere spenning, for eksempel ved å bruke 6V forsyning for en 3.3V motor. Easy Driver kan levere mellom 150mA/spole og 700mA/spole. For høyere strøm kan Big Easy Driver levere opptil 2A per spole. Les vanlige spørsmål nederst på Easy Drive -siden.

Disse eksemplene bruker D6 og D7 som trinn- og retningsutgangene. Du kan endre utgangspinnene til en hvilken som helst digital utgang ved å endre innstillingene STEP_PIN og DIR_PIN nær toppen av skissen.

Programmering av Sparkfun Redboard Turbo

Programmering av Redboard Turbo er problematisk. Hvis den ikke kan programmeres, må du først trykke på tilbakestillingsknappen én gang og velge COM -porten på nytt i Arduino Tools -menyen og prøve på nytt. Hvis det ikke fungerer, dobbeltklikk på tilbakestillingsknappen og prøv igjen.

Kabling av Easy Driver

To spole stepper motorer har 4 ledninger. Bruk et multimeter for å finne parene som kobles til hver spole, og deretter koble den ene spolen til Easy Driver A -terminalene og den andre spolen til B -terminalen. Det spiller ingen rolle hvilken vei du vil koble dem til, fordi du kan bruke s cmd i oppsettsmenyen til å bytte bevegelsesretning.

Motorens strømforsyning er koblet til M+ og GNDSett logikknivået til brettet med 3/5V -lenken. Kort lenken sammen for 3,3V mikroprosessorutganger, som SparkFun Redboard Turbo (hvis du lar den stå åpen er den egnet for 5V digitale signaler, f.eks. UNO, Mega) Koble GND, STEP, DIR -pinnene til mikroprosessoren GND og trinnet og ingen utganger er nødvendig for å drive motoren.

USB til TTL seriell kabel

Når du flytter SpeedStepperSetup -skissen fra Uno/Mega til Redboard Turbo, kan du naivt bare bytte ut #define SERIAL Serial med #define SERIAL SerialUSB som passer til Redboard Turbo usb seriell tilkobling, men du vil oppdage at den resulterende step latency er omtrent 10 ms. Det er 10 ganger tregere enn for UNO. Dette på grunn av hvordan Redboard -CPUen håndterer USB -tilkoblingen. For å komme over dette, koble en USB til TTL seriell kabel til D0/D1 og angi#definere SERIAL Serial1 for å bruke maskinvarens serielle tilkobling til å kontrollere trinnmotoren. Ved bruk av Serial1 gir LATENCY: stepper: 345uS loop: 2016uS som er 3 ganger raskere enn UNO for stepper and loop latency

Terminalprogram

Arduino Serial Monitor er litt vanskeligere å bruke for å kontrollere trinnmotoren, ettersom du må skrive inn røyen i cmd -linjen og deretter trykke Enter for å sende den. En raskere og mer responsiv måte er å åpne et terminalvindu, TeraTerm for PC (eller CoolTerm Mac), koblet til USB til TTL kabel COM -porten. Deretter sender du det umiddelbart i vinduet ved å trykke på en cmd -tast. Trykk Enter for å sende en tom linje.

Innstilling av motorhastighetsområdet

Som kablet opp ovenfor, er Easy Drive konfigurert for 1/8 trinn, så 1000 trinn/sek vil slå motoren på 1000/8/200 trinn/omdreining = 0,625 omdreininger per sekund eller maksimum 37,5 o/min. Ved å endre inngangene til MS1/MS2 kan du veksle mellom 1/8, ¼, ½ og hele trinn. For fullstendige trinn kobler du både MS1 og MS2 til GND. Dette vil tillate hastigheter på opptil 300 o / min. Ved å velge de riktige MS1/MS2 -innstillingene kan du justere for installert girforhold mellom motoren og den drevne delen.

Maskinvarebeskyttelse

Mens SpeedStepper -biblioteket lar deg angi posisjonsgrenser for motorbevegelsen, gjøres posisjonen ved å telle trinnene som sendes ut av programvaren. Hvis motoren stopper, dvs. dreiemomentet er utilstrekkelig til å drive motoren det neste trinnet, vil programvareposisjonen være synkronisert med motorposisjonen. Når du bruker kommandoen 'goHome', overskrider motoren utgangsposisjonen. For å forhindre skade på maskinvaren bør du montere grensebrytere på de harde grensene for å koble fra motorens strømforsyning

Innstilling av motorstrømgrense

Sett først den laveste innstillingen på potensiometeret. dvs. spenning ved TP1 er minimum. Potensiometeret er delikat, så ikke tving potensiometeret forbi de mekaniske stoppene. Sett motoren i sakte jevn hastighet en sakte, og drei deretter sakte på potensiometeret til motoren ikke hopper eller rykker mellom trinnene.

Konklusjon

Dette prosjektet viser hvordan du bruker SpeedStepper -biblioteket i en praktisk applikasjon. Selv om AccelStepper-biblioteket gir god posisjonskontroll, var det nødvendig med hastighetskontroll for prototypen issmeltende sonde for innsamling av biologiske prøver på Europa, slik at AccelStepper-biblioteket ble skrevet om for å gi hastighetskontroll med sluttgrenser og en goHome-funksjon.

Anbefalt: