Indholdsfortegnelse:

Stepper Speed Control Menu drevet til Arduino: 6 trin
Stepper Speed Control Menu drevet til Arduino: 6 trin

Video: Stepper Speed Control Menu drevet til Arduino: 6 trin

Video: Stepper Speed Control Menu drevet til Arduino: 6 trin
Video: Simple Arduino single stepper motor control - for experimentation and testing 2024, November
Anonim
Stepper Speed Control Menu drevet til Arduino
Stepper Speed Control Menu drevet til Arduino
Stepper Speed Control Menu drevet til Arduino
Stepper Speed Control Menu drevet til Arduino
Stepper Speed Control Menu drevet til Arduino
Stepper Speed Control Menu drevet til Arduino

Dette SpeedStepper -bibliotek er en omskrivning af AccelStepper -biblioteket for at tillade hastighedskontrol af trinmotoren. Med SpeedStepper -biblioteket kan du ændre den indstillede motorhastighed og derefter accelerere/bremse til den nye indstillede hastighed ved hjælp af den samme algoritme som AccelStepper -biblioteket. SpeedStepper -biblioteket giver dig også mulighed for at indstille plus- og minusgrænse og en 'hjemmeposition'. Der er en goHome -kommando for at vende tilbage til udgangspositionen.

Begrænsninger: SpeedStepper -biblioteket driver kun retning og trinudgange og skal derfor tilsluttes en motordriver, f.eks. Easy Driver, for faktisk at køre trinmotoren. AccelStepper -biblioteket giver flere køreindstillinger, som kan kopieres til dette bibliotek, hvis det kræves.

Der er tre eksempler på skitser, som hver kan køres uden motor eller motordriver. speedStepperPlot sketch udsender eksempel hastighedskommandoer og goHome -kommandoen og genererer et plot af den resulterende hastighed og position. SpeedStepperSetup -skitsen giver et menudrevet opsætning til at indstille motorens hjem og grænser og derefter køre motoren og justere hastigheden op og ned og gå hjem for at afslutte. SpeedStepperProfile -skitsen viser et eksempel på opsætning og udførelse af en hastighedsprofil.

Selvom AccelStepper-biblioteket giver god positionskontrol, var hastighedskontrol nødvendig for Prototype Ice-Smelting Probe til indsamling af biologiske prøver på Europa. Her er en video af en tidligere version af prototypen, som brugte vægt i stedet for en motor. Revision 1.1 tilføjede hastighedsprofiler, efter at en bruger anmodede om et middel til at kontrollere hastighedsprofilen for en pumpe.

Dette bibliotek kører på Arduino Uno og Mega2560, men til prototypen blev den større hukommelse / hurtigere processor SparkFun Redboard Turbo brugt.

Denne instruks er også tilgængelig online på Stepper Speed Control Library til Arduino

Forbrugsvarer

For at køre eksempelskitserne er det kun nødvendigt med en Arduino UNO eller Mega2560 og softwarebibliotekerne

Til bænketest af biblioteket blev en SparkFun Redboard Turbo brugt med en Easy Driver, en 200 trin/omdrejning, 12V 350mA steppermotor og en 12 DC forsyning 2A eller større, f.eks. https://www.sparkfun.com/products/14934. USB A til mikrokabel USB til TTL serielt kabel Arduino IDE V1.8.9 og en computer til at køre det på. SpeedStepper bibliotekpfodParser bibliotek til nonBlockingInput og pfodBufferedStream klasser millis Forsinkelsesbibliotek for ikke-blokerende forsinkelser

Trin 1: Biblioteksfunktioner

SpeedStepper -biblioteket kører trinmotoren begrænset af grænser, der er angivet af biblioteket. Se filen SpeedStepper.h for de forskellige tilgængelige biblioteksmetoder. Her er en oversigt over logikken bag dem.

Stepperens position spores ved at tælle antallet af trin (impulser). Biblioteket begrænser positionen mellem positionerne setPlusLimit (int32_t) og setMinusLimit (int32_t). Plusgrænsen er altid> = 0 og minusgrænsen er altid <= 0. Ved opstart er motorpositionen 0 (hjem), og grænserne er sat til meget store +/- tal (ca. +/- 1e9 trin). setAcceleration (float) angiver, hvor hurtigt motoren vil ændre hastighed enten op eller ned. Når motoren nærmer sig plus- eller minusgrænsen, vil den bremse med denne hastighed, indtil den stopper ved grænsen. Ved opstart sættes accelerationen til 1,0 trin/sek/sek. Accelerationsindstillingen er altid et +ve -tal. Tegnet på setSpeed (float) -indstillingen angiver den retning, motoren vil bevæge sig.

setSpeed (float) indstiller hastigheden til at accelerere / sænke motoren til, fra dens aktuelle hastighed. Den hastighed, der kan indstilles via setSpeed (float), er i absolut værdi begrænset af indstillinger, setMaxSpeed (float), standard 1000 trin/sek og setMinSpeed (float), standard 0,003 trin/sek. Disse standarder er også de absolutte hårdkodede hastighedsgrænser, biblioteket accepterer for setMaxSpeed () og setMinSpeed (). Hvis du vil indstille en maks. Hastighed> 1000 trin/sek, skal du redigere den første linje i SpeedStepper.cpp -filen for at ændre maxMaxSpeed (1000) til den maksimale hastighed, du ønsker. I praksis er den maksimale hastighed også begrænset af tiden mellem opkald til bibliotekets run () -metode. I 1000 trin / sek skal run () -metoden kaldes mindst hver 1mS. Se afsnittet forsinkelse herunder.

Hvis du prøver at indstille en hastighed, der er mindre end min., Får motoren til at stoppe. Hver af disse settere har en tilsvarende getter, se filen SpeedStepper.h. For hastighed returnerer getSetSpeed () den hastighed, du har indstillet via setSpeed (), mens getSpeed () returnerer den aktuelle motorhastighed, som varierer, når den accelererer/bremser til den indstillede hastighed. Hvis motoren ikke går i den retning, du tænker på en +ve, kan du kalde invertDirectionLogic () for at skifte den retning, motoren bevæger sig for +ve hastigheder.

getCurrentPosition () returnerer den aktuelle motorposition i forhold til 'home' (0). Du kan tilsidesætte den aktuelle motorposition setCurrentPosition (int32_t). Den nye position er begrænset til at være inden for de fastsatte plus/minus grænser.

I første omgang standser motoren i position 0. Ved at kalde setSpeed (50.0) vil den begynde at accelerere i +ve -retningen til en maksimal hastighed på 50 trin/min. Hvis du ringer til hardStop (), stoppes motoren med det samme, hvor den er. På den anden side vil opkald til stop () metoden sætte hastigheden til nul og sænke motoren til et stop. Opkald til stopAndSetHome () stopper motoren med det samme og sætter sin position til 0. Grænseværdierne plus/minus ændres ikke, men henvises nu til denne nye 0 (hjemmeposition). Hvis du ringer til goHome (), vender steperen tilbage til denne 0 (hjem) position og stopper. Opkald til setSpeed () annullerer hjemrejsen.

SpeedStepper -biblioteket giver også kontrol med hastighedsprofil via metoderne setProfile (SpeedProfileStruct* profileArray, size_t arrayLen), startProfile (), stopProfile (), for at afbryde en løbende profil og isProfileRunning (). Se skitsen til speedStepperProfile eksempel.

Trin 2: Kørsel af SpeedStepperPlot -eksemplet uden motor

Kørsel af SpeedStepperPlot -eksemplet uden motor
Kørsel af SpeedStepperPlot -eksemplet uden motor

Installer Arduino IDE V1.8.9 Download og installer SpeedStepper -biblioteket Gem SpeedStepper.zip og brug derefter Arduino IDE -menupunktet Skitse → Inkluder bibliotek → Tilføj. ZIP -bibliotek til at importere biblioteket Download og installer også millisDelay -biblioteket

Åbn eksemplerne → SpeedStepper → speedStepperPlot eksempelskitse (genstart IDE om nødvendigt). Denne skitse er konfigureret til at fungere med Serial, f.eks. UNO og Mega etc. Se nedenfor for at køre på SparkFun Redboard Turbo.

Ingen driverbræt eller trinmotor er nødvendig for at køre dette eksempel. Disse eksempler bruger D6 og D7 som output. Du kan ændre udgangsstifterne til enhver digital udgang ved at ændre indstillingerne STEP_PIN og DIR_PIN nær toppen af skitsen.

Upload skitsen til bord, og åbn derefter Værktøjer → Seriel plotter ved 115200 baud for at vise plottet for hastigheden (RØD) og position (BLÅ) Plusgrænsen er sat til 360, hvilket får hastigheden til at rampe til nul fra ca. 100 point på x-aksen. Minusgrænsen er -510. Positionen stopper ved ~ -390, fordi hastigheden er blevet forlangt til 0,0. Ved 380-punktet på x-aksen udstedes goHome cmd, som returnerer trinmaskinen til position nul.

Denne speedStepperPlot -skitse bruger millisDelays til at skifte tid mellem forskellige hastigheder og accelerationer. I mange tilfælde er det lettere at bruge en SpeedStepperProfile, som i det næste eksempel.

Trin 3: Kørsel af SpeedStepperProfile -eksemplet uden motor

Kørsel af SpeedStepperProfile -eksemplet uden motor
Kørsel af SpeedStepperProfile -eksemplet uden motor

Åbn eksemplerne → SpeedStepper → speedStepperPlot eksempelskitse, denne skitse producerer ovenstående plot ved hjælp af Arduino Serial Plotter og er et eksempel på at køre en foreskrevet hastighedsprofil for eksempel hvis du kører en pumpe.

Stepper Speed Profiles består af en række SpeedProfileStruct, som er defineret i SpeedStepper.h -filen.

struct SpeedProfileStruct {

flydehastighed; // målhastigheden ved afslutningen af dette trin usignerede lange deltaTms; // tidspunktet for at accelerere fra nuværende hastighed (ved starten af dette trin) til målhastigheden};

Definer en vifte af SpeedProfileStruct, der indeholder målhastigheden for hvert trin og tidspunktet, deltaTms, i mS, for at nå denne målhastighed fra den tidligere målhastighed. Hvis deltaTms er nul eller meget lille, vil hastigheden bare hoppe med det samme til den nye målhastighed. Ellers vil den nødvendige acceleration blive beregnet setAcceleration () vil blive kaldt efterfulgt af et opkald til setSpeed () for den nye målhastighed. I alle tilfælde vil profilen være begrænset af de eksisterende plus- og minuspositionsgrænser og max/min hastighedsindstillinger. Hvis du vil holde en hastighed, skal du bare gentage den forrige hastighed med den tid, du vil have den holdt. Da den nye målhastighed er den samme som den aktuelle hastighed, vil den beregnede acceleration være nul, og hastigheden ændres ikke.

Dette SpeedProfileStruct -array frembragte ovenstående plot

const SpeedProfileStruct -profil = {{0, 0}, // stop med det samme, hvis den ikke allerede er stoppet {0, 1000}, // hold nul i 1 sek {-50, 0}, // spring til -50 {-200, 2000}, // rampe til -200 {-200, 6000}, // hold ved -200 i 6 sekunder {-50, 2000}, // rampe ned til -50 {0, 0}, // // stop umiddelbart {0, 1500}, // hold nul i 1,5 sek. {50, 0}, // spring til 50 {200, 2000}, // rampe til 200 {200, 6000}, // hold 200 i 6 sek. {50, 2000}, // rampe til 50 {0, 0}, // // stop udødeligt {0, 1000} // hold nul // for at plotte output}; const size_t PROFILE_LEN = sizeof (profil) / sizeof (SpeedProfileStruct); // beregne størrelsen på profilarrayet

Profilen sættes ved at kalde setProfile (SpeedProfileStruct* profileArray, size_t arrayLen) f.eks. stepper.setProfile (profil, PROFILE_LEN);

Når profilen er blevet indstillet, skal du ringe til startProfile () for at begynde at køre den fra den aktuelle motorhastighed (normalt starter du fra stoppet). I slutningen af profilen vil motoren bare fortsætte med at køre med den sidste målhastighed. Metoden isProfileRunning () kan kaldes for at se, om profilen stadig kører. Hvis du vil stoppe profilen tidligt, kan du ringe til stopProfile (), som forlader profilen og standser motoren.

Trin 4: Kørsel af eksempelet SpeedStepperSetup uden motor

Eksempelskitsen er designet til en base til din egen stepper motor applikation. Det giver en menudrevet grænseflade, der giver dig mulighed for at flytte til motor til sin udgangsposition, hvis den ikke allerede er der og derefter eventuelt nulstille plus- og minusgrænserne og derefter køre motoren inden for dette område. Menuen 'Kør' giver dig mulighed for at øge og reducere hastigheden, fryse med den aktuelle hastighed, stoppe og også vende tilbage til hjemmet.

Denne skitse illustrerer en række softwarefunktioner, der holder løkken () lydhør, så du kan tilføje dine egne sensorindgange til at styre stepperen. Det gør ondt at undgå forsinkelser, der ville forstyrre hastighedskontrollen. (Se forsinkelser er onde)

Installer de biblioteker, der bruges til at køre SpeedStepperPlot ovenfor, og installer derefter også pfodParser -biblioteket. PfodParser -biblioteket forsyner NonBlockingInput- og pfodBufferedStream -klasser, der bruges til at håndtere brugerinput og menuoutput med blokering af loop () fra at køre.

Åbn eksemplerne → SpeedStepper → speedSpeedSetup -eksempel. Denne skitse er konfigureret til at fungere med Serial, f.eks. UNO og Mega etc. Se nedenfor for at køre på SparkFun Redboard Turbo.

Ingen driverbræt eller trinmotor er nødvendig for at køre dette eksempel. Disse eksempler bruger D6 og D7 som output. Du kan ændre udgangsstifterne til enhver digital udgang ved at ændre indstillingerne STEP_PIN og DIR_PIN nær toppen af skitsen. Upload skitsen til tavlen, og åbn derefter Værktøjer → Seriel skærm på 115200 for at se menuen OPSÆTNING.

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 skitsen kører, tages stepperens nuværende position som 'hjem' (0) position. Hvis du har brug for at placere stepperen igen i dens sande 'hjemmeposition', skal du indtaste kommandoen p for at få vist menuen 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 grænserne, der er kodet i skitsen, blevet fjernet, så du kan placere stepperen igen hvor som helst. Du skal passe på, at du ikke kører den forbi de fysiske grænser, eller du kan bryde noget.

Brug + cmd for at begynde at flytte stepperen fremad, hvis du finder den bevæge sig i den forkerte retning, skal du indtaste en ikke-kommando eller bare en tom linje for at stoppe den, og brug derefter kommandoen til at skifte retning fremad. Du bør opdatere skitsen til at inkludere et opkald til invertDirectionLogic () i opsætningen for at rette dette til det næste løb.

Brug + / - cmds til at placere trinmaskinen i den korrekte nulposition. Motoren starter langsomt og opbygger derefter hastighed, efterhånden som den skrider frem, bare brug og tom linje for at stoppe den. Den maksimale hastighed for dette og grænsemenuen indstilles af MAX_SETUP_SPEED øverst i setupMenus.cpp.

Når motoren er placeret i sin 'hjemmeposition', skal du bruge x cmd til at genindstille den aktuelle position som 0 og vende tilbage til menuen OPSÆTNING.

Hvis du har brug for at indstille grænserne, normalt kun på den første opsætning, skal du bruge l cmd til at gå ind i menuen 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>

Brug + cmd til mere frem til plusgrænsen, og brug derefter l cmd til at angive det som plusgrænsen. Kommandoen h kan derefter bruges til at vende tilbage til 0 og - cmd bruge til at flytte, hvis den vender tilbage til motorens position ved minusgrænsen. Brug igen l cmd til at indstille minusgrænsen. Bemærk placeringen af plus- og minusgrænserne, og opdater setup () -metodens setPlusLimit- og setMinusLimit -sætninger med disse værdier.

Når grænserne er indstillet, skal du bruge x cmd til at vende tilbage til menuen OPSÆTNING, og derefter kan du bruge r cmd til at åbne menuen KØR

RUN MENU pos: 0 sp: 3.31 + Lim: 500000 -Lim: -500 LATENCY: stepper: 944uS loop: 5796uS + -Speed up - -Speed down h -goHome. -hardStop-frysehastighed> +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 begynder at accelerere i fremadgående retning og udskriver position og hastighed hvert 2. sekund. Når motoren når den ønskede hastighed, kan du stoppe accelerationen med en hvilken som helst anden tast (eller en tom indgang). Du kan reducere hastigheden med - cmd ned for at stoppe. Hvis den stoppes, vil - cmd accelerere omvendt.

Denne RUN -menu giver manuel kontrol af dit projekt. For automatisk kontrol skal du tilføje nogle andre sensorer.

Trin 5: forsinkelse

Steppermotorstyringen afhænger af softwaren, der styrer hvert trin. For at opretholde den indstillede hastighed skal din skitse ofte kalde metoden stepper.run () til at affyre det næste trin på det rigtige tidspunkt for den aktuelle hastighed. For styring via sensorer skal du hurtigt kunne behandle nye målinger. Udskrivningen af position/hastighed indeholder to LATENCY -målinger, så du kan kontrollere, at din skitse er hurtig nok.

Stepper Latency (pfodBufferedStream)

Stepper latency måler den maksimale forsinkelse mellem successive opkald til metoden stepper.run (). For at køre trinmotoren med 1000 trin pr. Sek., Skal trinlatency være mindre end 1000uS (1mS). Den første version af denne skitse havde en latens på mange millisekunder. For at overvinde dette ekstra opkald til runStepper () -metoden (som kalder stepper.run ()), hvor det tilføjes gennem koden. Dette løste ikke problemet helt, fordi menu- og outputudskriftssætningerne blokerede skitsen, når den lille Serial Tx -buffer var fuld. For at undgå denne blokering blev pfodBufferedStream fra pfodParser -biblioteket brugt til at tilføje en 360 -byte udskriftsbuffer, som udskriftssætningerne hurtigt kunne skrive til. Derefter frigiver pfodBufferedStream bytes med den baudhastighed, der er angivet 115200 i dette tilfælde. pfodBufferedStream har mulighed for enten at blokere, når bufferen er fuld eller bare slippe overløbstegnene. Her er det indstillet til at slippe eventuelle ekstra tegninger, når bufferen er fuld, så skitsen ikke blokeres og venter på, at Serial sender chars.

Loop Latency (NonBlockingInput)

Loop -latency måler den maksimale forsinkelse mellem successive opkald til loop () -metoden. Dette angiver, hvor hurtigt du kan behandle nye sensormålinger og justere motorens indstillede hastighed. Hvor hurtig den derefter skal være, afhænger af, hvad du forsøger at kontrollere.

Forsinkelserne på grund af udskriftssætningerne blev fjernet ved hjælp af pfodBufferedStream ovenfor, men for at behandle brugerens input skal du tage inputets bare første tegn og ignorere resten af linjen. NonBlockingInput-klassen i pfodParer-biblioteket bruges til at returnere et ikke-nul-tegn, når der er input, ved hjælp af readInput (), og til at slette og kassere følgende tegn ved hjælp af clearInput (), indtil der ikke modtages tegn i 10 ms uden at blokere sløjfen ()

Sløjfetid vil naturligvis blive øget med den ekstra kode, du tilføjer for at læse sensorerne og beregne den nye indstillede hastighed. Mange sensorbiblioteker tager den slags nedskæring af bare at bruge forsinkelse (..) mellem at starte en måling og hente resultatet. Du bliver nødt til at omskrive disse biblioteker for i stedet at bruge millisDelay for at hente målingen efter en passende ikke-blokerende forsinkelse.

Trin 6: Kørsel af SpeedStepperSetup med en trinmotor og SparkFun Redboard Turbo

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

For at køre SpeedStepperSetup -skitsen for alvor skal du bruge en trinmotor, driver og strømforsyning og i dette eksempel SparkFun Redboard Turbo.

Ledningsdiagrammet ovenfor (pdf -version) viser forbindelserne. I SpeedStepperSetup -skitsen skal du ændre SERIAL -definitionen til #define SERIAL Serial1

Steppermotor, strømforsyning, driver og beskyttelse

Der er mange typer og størrelser af steppermotorer. Her bruges en to spole 12V 350mA stepper motor til test. For at drive denne stepper har du brug for en strømforsyning på 12V eller mere og større end 350mA.

Dette bibliotek giver kun en retning og trinoutput, så du har brug for en driver til at interface med trinmotoren. Easy Driver og Big Easy Driver styrer strømmen til motorens spoler, så du sikkert kan bruge en strømforsyning med en højere spænding, f.eks. Ved at bruge 6V forsyning til en 3.3V motor. Easy Driver kan levere mellem 150mA/spole og 700mA/spole. For højere strøm kan Big Easy Driver levere op til 2A pr. Spole. Læs ofte stillede spørgsmål nederst på siden Easy Drive.

Disse eksempler bruger D6 og D7 som trin- og retningsoutput. Du kan ændre udgangsstifterne til enhver digital udgang ved at ændre indstillingerne STEP_PIN og DIR_PIN nær toppen af skitsen.

Programmering af Sparkfun Redboard Turbo

Programmering af Redboard Turbo er problematisk. Hvis det ikke lykkes at programmere, skal du først trykke på reset -knappen én gang og vælge COM -porten igen i menuen Arduino Tools og prøve igen. Hvis det ikke virker, skal du trykke to gange på reset -knappen og prøve igen.

Tilslutning af Easy Driver

To spole stepper motorer har 4 tråde. Brug et multimeter til at finde de par, der forbinder til hver spole, og led derefter den ene spole til Easy Driver A -terminalerne og den anden spole til B -terminalen. Det er ligegyldigt, hvilken vej du kører dem, fordi du kan bruge s cmd i opsætningsmenuen til at skifte bevægelsesretning.

Motorens strømforsyning er forbundet til M+ og GNDS Indstil det logiske niveau på kortet med 3/5V -linket. Kort linket sammen for 3,3V mikroprocessorudgange, som SparkFun Redboard Turbo (hvis du lader det være åbent, er det egnet til 5V digitale signaler, f.eks. UNO, Mega) Tilslut GND, STEP, DIR -stifterne til mikroprocessoren GND og trin og dir udgangsstifter. Ingen andre tilslutninger er nødvendige for at drive motoren.

USB til TTL serielt kabel

Når du flytter SpeedStepperSetup -skitsen fra Uno/Mega til Redboard Turbo, kan du naivt bare udskifte #define SERIAL Serial med #define SERIAL SerialUSB, så den passer til Redboard Turbo usb seriel forbindelse, men du vil opdage, at den resulterende step latency er cirka 10 ms. Det er 10x langsommere end for UNO. Dette skyldes, hvordan Redboard cpu håndterer USB -forbindelsen. For at komme over dette skal du tilslutte et USB til TTL serielt kabel til D0/D1 og indstille#definere SERIAL Serial1 for at bruge hardware seriel forbindelse til at styre trinmotoren. Brug af Serial1 giver LATENCY: stepper: 345uS loop: 2016uS som er 3 gange hurtigere end UNO for step og loop latency

Terminal program

Arduino Serial Monitor er lidt sværere at bruge til at styre steppermotoren, da du skal indtaste char i cmd -linjen og derefter trykke på Enter for at sende den. Et hurtigere, mere responsivt middel er at åbne et terminalvindue, TeraTerm til PC (eller CoolTerm Mac), der er tilsluttet USB til TTL kabel COM -porten. Derefter i vinduet ved at trykke på en cmd -tast sender den den med det samme. Tryk på Enter, bare send en tom linje.

Indstilling af motorhastighedsområdet

Som kablet ovenover er Easy Drive konfigureret til 1/8 trin, så 1000 trin/sek vil dreje motoren ved 1000/8/200 trin/omdrejningstal = 0,625 omdrejninger pr. Sek. Eller maks. 37,5 omdr./min. Ved at ændre input til MS1/MS2 kan du skifte mellem 1/8, ¼, ½ og hele trin. For fuld trin skal både MS1 og MS2 tilsluttes GND. Dette tillader hastigheder på op til 300 omdr./min. Ved at vælge de passende MS1/MS2 -indstillinger kan du justere for installeret gearforhold mellem motoren og den drevne del.

Hardware beskyttelse

Mens SpeedStepper -biblioteket giver dig mulighed for at indstille positionsgrænser for motorens bevægelse, gøres positionen ved at tælle de trin, der udsendes af softwaren. Hvis motoren går i stå, dvs. drejningsmomentet er utilstrækkeligt til at drive motoren det næste trin, vil softwarepositionen være ude af synkronisering med motorpositionen. Når du derefter bruger kommandoen 'goHome', overskrider motoren udgangspositionen. For at forhindre beskadigelse af hardware skal du montere endestopkontakter ved de hårde grænser for at afbryde motorens strømforsyning

Indstilling af motorstrømgrænse

Indstil det først til den laveste indstilling af potentiometeret. dvs. spænding ved TP1 er minimum. Potentiometeret er delikat, så tving ikke potentiometeret forbi de mekaniske stop. Indstil motoren til at køre med en langsom, konstant hastighed en langsom, og drej derefter langsomt på potentiometeret, indtil motoren ikke springer eller rykker mellem trinene.

Konklusion

Dette projekt viser, hvordan man bruger SpeedStepper -biblioteket i en praktisk applikation. Selvom AccelStepper-biblioteket giver god positionskontrol, var hastighedskontrol nødvendig for Prototype Ice-Smelting Probe til indsamling af biologiske prøver på Europa, så AccelStepper-biblioteket blev omskrevet for at give hastighedskontrol med slutgrænser og en goHome-funktion.

Anbefalede: