Sisällysluettelo:
- Tarvikkeet
- Vaihe 1: Kirjastotoiminnot
- Vaihe 2: SpeedStepperPlot -esimerkin suorittaminen ilman moottoria
- Vaihe 3: SpeedStepperProfile -esimerkin suorittaminen ilman moottoria
- Vaihe 4: SpeedStepperSetup -esimerkin suorittaminen ilman moottoria
- Vaihe 5: Viive
- Vaihe 6: SpeedStepperSetupin käyttäminen askelmoottorin ja SparkFun Redboard Turbon avulla
Video: Arduinolle asennettu askelnopeuden säätövalikko: 6 vaihetta
2024 Kirjoittaja: John Day | [email protected]. Viimeksi muokattu: 2024-01-30 08:59
Tämä SpeedStepper -kirjasto on AccelStepper -kirjaston uudelleenkirjoitus, jotta askelmoottorin nopeus voidaan säätää. SpeedStepper -kirjaston avulla voit muuttaa asetettua moottorin nopeutta ja sitten kiihdyttää/hidastaa uuteen asetettuun nopeuteen samalla algoritmilla kuin AccelStepper -kirjasto. SpeedStepper -kirjaston avulla voit myös asettaa plus- ja miinusrajan sekä "koti" -asennon. Palaa perusasentoon on goHome -komennolla.
Rajoitukset: SpeedStepper -kirjasto ohjaa vain suunta- ja askelulostuloja, joten se on kytkettävä moottorinohjaimeen, kuten Easy Driver -laitteeseen, askelmoottorin käyttämiseksi. AccelStepper -kirjasto tarjoaa lisää ajovaihtoehtoja, jotka voidaan tarvittaessa kopioida tähän kirjastoon.
Mukana on kolme esimerkkiluonnosta, joista jokainen voidaan ajaa ilman moottoria tai moottorin ohjainta. speedStepperPlot -luonnos antaa esimerkkejä nopeuskomennoista ja goHome -komennosta ja luo käyrän tuloksena olevasta nopeudesta ja sijainnista. SpeedStepperSetup -luonnos tarjoaa valikkokohtaisen asennuksen moottorin kodin ja rajojen asettamiseksi ja moottorin käynnistämiseksi ja nopeuden säätämiseksi ylös ja alas ja goHome loppuun. SpeedStepperProfile -luonnos näyttää esimerkin nopeusprofiilin määrittämisestä ja suorittamisesta.
Vaikka AccelStepper-kirjasto tarjoaa hyvän sijainnin hallinnan, nopeuden säätöä tarvitaan prototyypin jään sulamisanturille, joka kerää biologisia näytteitä Euroopasta. Tässä on video prototyypin aiemmasta versiosta, joka käytti painoa moottorin sijaan. Versio 1.1 lisäsi nopeusprofiileja sen jälkeen, kun käyttäjä pyysi keinoja pumpun nopeusprofiilin ohjaamiseen.
Tämä kirjasto toimii Arduino Unolla ja Mega2560: lla, mutta prototyypissä käytettiin suurempaa muistia / nopeampaa prosessoria SparkFun Redboard Turboa.
Tämä ohje on saatavana myös verkossa Arduinon Stepper Speed Control Library -kirjasto
Tarvikkeet
Esimerkkiluonnosten suorittamiseen tarvitaan vain Arduino UNO tai Mega2560 ja ohjelmistokirjastot
Kirjaston penkkitestauksessa käytettiin SparkFun Redboard Turboa, jossa oli Easy Driver, 200 askelta/kierros, 12 V 350 mA: n askelmoottori ja 12 DC: n syöttöjännite 2A tai suurempi, esim. https://www.sparkfun.com/products/14934. USB A-mikrokaapeli USB-TTL-sarjakaapeli Arduino IDE V1.8.9 ja tietokone, jolla sitä voidaan käyttää. SpeedStepper-kirjasto
Vaihe 1: Kirjastotoiminnot
SpeedStepper -kirjasto käyttää askelmoottoria, jota rajoittavat kirjaston asettamat rajat. Katso käytettävissä olevat kirjastomenetelmät SpeedStepper.h -tiedostosta. Tässä on pääpiirteittäin logiikka niiden takana.
Askelman asentoa seurataan laskemalla askelmäärät (pulssit). Kirjasto rajoittaa sijainnin välillä setPlusLimit (int32_t) ja setMinusLimit (int32_t). Plusraja on aina> = 0 ja miinusraja on aina <= 0. Käynnistyksen yhteydessä moottorin asento on 0 (koti) ja rajat asetetaan erittäin suuriin +/- lukuihin (noin +/- 1e9 askelta). setAcceleration (float) määrittää, kuinka nopeasti moottori muuttaa nopeutta ylös tai alas. Kun moottori lähestyy plus- tai miinusrajaa, se hidastuu tällä nopeudella, kunnes se pysähtyy raja -arvolla. Käynnistyksen yhteydessä kiihdytys on asetettu arvoon 1,0 askelta/sek/sek. Kiihtyvyysasetus on aina +ve -luku. SetSpeed (kelluva) -asetuksen merkki asettaa moottorin liikesuunnan.
setSpeed (float) asettaa nopeuden moottorin kiihdyttämiseksi / hidastamiseksi sen nykyisestä nopeudesta. Nopeutta, joka voidaan asettaa setSpeedin (kellukkeen) kautta, rajoittavat absoluuttisena arvona asetukset, setMaxSpeed (kelluva), oletusarvo 1000 askelta/sek ja setMinSpeed (kelluva), oletusarvo 0,003 askelta/sek. Nämä oletusarvot ovat myös ehdottomia kovakoodattuja nopeusrajoituksia, joita kirjasto hyväksyy setMaxSpeed (): lle ja setMinSpeed (): lle. Jos haluat asettaa enimmäisnopeuden> 1000 askelta sekunnissa, sinun on muokattava SpeedStepper.cpp -tiedoston ensimmäistä riviä, jotta voit muuttaa maksiminopeuden (1000) haluamaasi nopeuteen. Käytännössä enimmäisnopeutta rajoittaa myös kirjaston run () -metodin kutsujen välinen aika. 1000 askeleen sekunnissa run () -metodi on kutsuttava vähintään joka 1 ms. Katso alla oleva viive.
Jos yrität asettaa nopeuden alle miniminopeuden, moottori pysähtyy. Jokaisella näistä asetuksista on vastaava getter, katso SpeedStepper.h -tiedosto. Nopeuden osalta getSetSpeed () palauttaa setSpeed (): n kautta asettamasi nopeuden, kun taas getSpeed () palauttaa nykyisen moottorin nopeuden, joka vaihtelee, kun se kiihdyttää/hidastaa asetettua nopeutta. Jos moottori ei mene suuntaan, jota ajattelet +ve, voit kutsua invertDirectionLogic () vaihtaaksesi moottorin suunnan +ve -nopeuksille.
getCurrentPosition () palauttaa moottorin nykyisen asennon verrattuna kotiin (0). Voit ohittaa moottorin nykyisen asennon setCurrentPosition (int32_t). Uusi sijainti on rajoitettu asetettuihin plus-/miinusrajoihin.
Aluksi moottori pysäytetään asentoon 0. SetSpeed (50.0) -kutsu saa sen kiihtymään +ve -suuntaan enintään 50 askelta minuutissa. Soittaminen hardStop () pysäyttää moottorin heti, missä se on. Toisaalta stop () -menetelmän kutsuminen asettaa nopeuden nollaan ja hidastaa moottorin pysähtymään. StopAndSetHome () -kutsu pysäyttää moottorin välittömästi ja asettaa sen asentoon 0. Plus/miinus -raja -arvoja ei muuteta, mutta ne viitataan nyt tähän uuteen 0 (koti) -asentoon. GoHome (): n kutsuminen palauttaa askeleen tähän 0 (koti) -asentoon ja pysähtyy. Soittaminen setSpeed () peruuttaa kotimatkan.
SpeedStepper -kirjasto tarjoaa myös nopeusprofiilin hallinnan menetelmillä setProfile (SpeedProfileStruct* profileArray, size_t arrayLen), startProfile (), stopProfile (), keskeyttääkseen käynnissä olevan profiilin ja isProfileRunning (). Katso esimerkki speedStepperProfile -luonnoksesta.
Vaihe 2: SpeedStepperPlot -esimerkin suorittaminen ilman moottoria
Asenna Arduino IDE V1.8.9 Lataa ja asenna SpeedStepper -kirjasto Tallenna SpeedStepper.zip ja käytä sitten Arduino IDE -valikkovaihtoehtoa Luonnos → Sisällytä kirjasto → Lisää. ZIP -kirjasto tuodaksesi kirjaston Lataa ja asenna myös millisDelay -kirjasto
Avaa Esimerkit → SpeedStepper → speedStepperPlot -esimerkkiluonnos (Käynnistä IDE tarvittaessa uudelleen). Tämä luonnos on määritetty toimimaan Serialin kanssa, esim. UNO ja Mega jne. Lisätietoja SparkFun Redboard Turbon käyttämisestä on alla.
Ohjainkorttia tai askelmoottoria ei tarvitse käyttää tässä esimerkissä. Näissä esimerkeissä käytetään lähtöinä D6 ja D7. Voit muuttaa lähtönastat mihin tahansa digitaaliseen lähtöön muuttamalla STEP_PIN- ja DIR_PIN -asetuksia luonnoksen yläosassa.
Lataa luonnos levylle ja avaa sitten Työkalut → Sarjaplotteri 115200 baudilla näyttääksesi nopeuden (PUNAINEN) ja sijainnin (SININEN) kuvaajan. Plus -raja on asetettu 360: een, jolloin nopeus nousee nollaan noin 100 pisteestä x-akselilla. Miinusraja on -510. Asento pysähtyy ~ -390 kohtaan, koska nopeus on vaadittu arvoon 0.0. X-akselin 380-pisteessä annetaan goHome cmd, joka palauttaa askeleen nollaan.
Tämä speedStepperPlot -luonnos käyttää millisDelays -aikaa eri nopeuksien ja kiihdytysten välillä. Monissa tapauksissa SpeedStepperProfile -tiedoston käyttäminen, kuten seuraavassa esimerkissä, on yksinkertaisempaa.
Vaihe 3: SpeedStepperProfile -esimerkin suorittaminen ilman moottoria
Avaa Esimerkit → SpeedStepper → speedStepperPlot -esimerkkiluonnos, tämä luonnos tuottaa yllä olevan kuvaajan Arduino -sarjaplotterin avulla ja on esimerkki määrätyn nopeusprofiilin suorittamisesta esimerkiksi pumpun ollessa käynnissä.
Stepper -nopeusprofiilit koostuvat joukosta SpeedProfileStruct -tiedostoja, jotka on määritelty SpeedStepper.h -tiedostossa.
struktuuri SpeedProfileStruct {
kelluva nopeus; // tavoitenopeus tämän vaiheen lopussa unsigned long deltaTms; // aika kiihtyä nykyisestä nopeudesta (tämän vaiheen alussa) tavoitenopeuteen};
Määritä SpeedProfileStruct -taulukko, joka sisältää tavoitteen nopeuden kullekin askeleelle ja ajan deltaTms, mS, saavuttaaksesi tämän tavoitekierrosluvun edellisestä tavoitenopeudesta. Jos deltaTms on nolla tai hyvin pieni, nopeus hyppää heti uuteen tavoite nopeuteen. Muussa tapauksessa vaadittu kiihtyvyys lasketaan setAcceleration () -kutsua ja sen jälkeen kutsua setSpeed () uudelle tavoite nopeudelle. Kaikissa tapauksissa profiilia rajoittavat nykyiset plus- ja miinusasetusrajat ja maksiminopeusasetukset. Jos haluat pitää nopeuden, toista vain edellinen nopeus haluamallasi nopeudella. Koska uusi tavoitenopeus on sama kuin nykyinen nopeus, laskettu kiihtyvyys on nolla eikä nopeus muutu.
Tämä SpeedProfileStruct -taulukko tuotti yllä olevan kuvaajan
const SpeedProfileStruct -profiili = {{0, 0}, // lopeta heti, jos ei ole jo pysähtynyt {0, 1000}, // pidä nolla 1 sekunnin ajan {-50, 0}, // hyppää arvoon -50 {-200, 2000}, // ramppi -200 {-200, 6000}, // pidä -200 -asentoon 6 sekuntia {-50, 2000}, // ramppi alas -50 {0, 0}, // // lopeta välittömästi {0, 1500}, // pidä nollaa 1,5 sekuntia {50, 0}, // hyppää 50: een {200, 2000}, // ramp 200: een {200, 6000}, // pidä 200 6 sekuntia {50, 2000}, // ramppi 50: een {0, 0}, // // lopeta välittömästi {0, 1000} // pidä nolla // tulostusta tulostettaessa}; const size_t PROFILE_LEN = sizeof (profiili) / sizeof (SpeedProfileStruct); // laskea profiilitaulukon koko
Profiili asetetaan soittamalla setProfile (SpeedProfileStruct* profileArray, size_t arrayLen) esim. stepper.setProfile (profiili, PROFILE_LEN);
Kun profiili on asetettu, soita startProfile () aloittaaksesi sen ajaminen moottorin nykyisestä nopeudesta (yleensä aloitat pysäytetystä). Profiilin lopussa moottori jatkaa vain viimeistä tavoite nopeutta. IsProfileRunning () -menetelmää voidaan kutsua ja tarkistaa, onko profiili edelleen käynnissä. Jos haluat pysäyttää profiilin aikaisin, voit soittaa stopProfile (), joka hylkää profiilin ja pysäyttää moottorin.
Vaihe 4: SpeedStepperSetup -esimerkin suorittaminen ilman moottoria
Esimerkkiluonnos on suunniteltu perustaksi omalle askelmoottorisovelluksellesi. Se tarjoaa valikkokäyttöisen käyttöliittymän, jonka avulla voit siirtyä moottoriin sen perusasentoon, jos se ei ole jo olemassa, ja sitten vaihtoehtoisesti nollata plus- ja miinusrajat ja käyttää moottoria tällä alueella. Suorita -valikon avulla voit lisätä ja vähentää nopeutta, jäädyttää nykyisellä nopeudella, pysäyttää ja myös palata kotiin.
Tämä luonnos havainnollistaa useita ohjelmistotoimintoja, jotka pitävät silmukan () reagoivana, jotta voit lisätä omia anturituloja ohjaamaan askelmaa. On välttämätöntä välttää viivästyksiä, jotka häiritsisivät nopeudenhallintaa. (Katso Viivästykset ovat pahoja)
Asenna edellä mainitut SpeedStepperPlot -sovelluksen käynnissä olevat kirjastot ja asenna sitten myös pfodParser -kirjasto. PfodParser -kirjasto toimittaa NonBlockingInput- ja pfodBufferedStream -luokat, joita käytetään käyttäjän syöttämien ja valikkolähtöjen käsittelyyn estämällä silmukan () käynnin.
Avaa Esimerkit → SpeedStepper → speedSpeedSetup esimerkki. Tämä luonnos on määritetty toimimaan Serialin kanssa, esim. UNO ja Mega jne. Lisätietoja SparkFun Redboard Turbon käyttämisestä on alla.
Ohjainkorttia tai askelmoottoria ei tarvitse käyttää tässä esimerkissä. Näissä esimerkeissä käytetään lähtöinä D6 ja D7. Voit muuttaa lähtönastat mihin tahansa digitaaliseen lähtöön muuttamalla luonnoksen yläosan STEP_PIN- ja DIR_PIN -asetuksia. Lataa luonnos taululle ja avaa sitten Työkalut → Sarjamonitori osoitteessa 115200 nähdäksesi ASETUKSET -valikon.
SETUP pos: 0 sp: 0.00 +Lim: 500000 -Lim: -500 LATENCY: stepper: 492uS loop: 0uS p -set Home l -aseta rajat h -goHome r -run>
Kun luonnos suoritetaan, askelimen nykyinen asento katsotaan asentoon "koti" (0). Jos sinun on siirrettävä askelin takaisin todelliseen "koti" -asentoonsa, kirjoita p-komento, jolloin SET HOME -valikko tulee näkyviin
SET HOME pos: 0 sp: 0.00 + Lim: 1073741808 -Lim: -1073741808 LATENCY: stepper: 752uS loop: 3852uS x -set Home here and exit + -Eteenpäin - -Käänteinen s -vaihda eteenpäin/taaksepäin -hardStop >
Kuten näet, luonnoksessa koodatut rajat on poistettu, joten voit sijoittaa askelman uudelleen mihin tahansa. Sinun on huolehdittava siitä, ettet aja sitä fyysisten rajojen ohi, tai saatat rikkoa jotain.
Aloita askeleen siirtäminen eteenpäin käyttämällä + cmd-näppäintä, jos huomaat sen liikkuvan väärään suuntaan, syötä ei-komento tai vain tyhjä rivi pysäyttääksesi sen ja vaihda sitten scommandilla eteenpäin. Sinun pitäisi päivittää luonnos niin, että se sisältää kutsun invertDirectionLogic () -asetukseen korjataksesi tämän seuraavan ajon ajaksi.
Käytä + / - cmd -näppäimiä askeleen asentamiseen oikeaan nolla -asentoon. Moottori käynnistyy hitaasti ja lisää nopeutta edetessään. Pysäytä se vain tyhjällä rivillä. Suurin nopeus tälle ja rajat -valikkoon asetetaan MAX_SETUP_SPEED -asetuksella setupMenus.cpp -sivun yläosassa.
Kun moottori on asetettu "koti" -asentoonsa, aseta x cmd -näppäimellä nykyinen asento uudelleen 0: ksi ja palaa SETUP-valikkoon.
Jos haluat asettaa rajat, yleensä vain alkuasetuksissa, siirry SET LIMITS -valikkoon painamalla l cmd
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>
Käytä + cmd siirtyäksesi eteenpäin plus -rajaan ja aseta se sitten plus -rajaksi l cmd -näppäimellä. Komentoa h voidaan käyttää palaamaan 0: een ja - cmd liikkua, jos moottori on miinusrajalla. Aseta miinusraja uudelleen l cmd: llä. Huomaa plus- ja miinusrajojen sijainnit ja päivitä setup () -menetelmän setPlusLimit- ja setMinusLimit -käskyt näillä arvoilla.
Kun rajat on asetettu, palaa SETUP -valikkoon x cmd: llä ja voit avata RUN -valikon r cmd: llä
RUN MENU pos: 0 sp: 3.31 + Lim: 500000 -Lim: -500 LATENCY: stepper: 944uS loop: 5796uS + -Speed up - -Speed down h -goHome. -hardStop-jäätymisnopeus> +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 -silmukka: 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 alkaa kiihtyä eteenpäin ja tulostaa sijainnin ja nopeuden 2 sekunnin välein. Kun moottori saavuttaa haluamasi nopeuden, voit pysäyttää kiihdytyksen millä tahansa muulla näppäimellä (tai tyhjällä syötteellä). Voit hidastaa nopeutta pysäyttämällä - cmd alas. Jos pysäytetään, - cmd kiihtyy taaksepäin.
Tässä RUN -valikossa voit hallita projektiasi manuaalisesti. Automaattista ohjausta varten sinun on lisättävä muita antureita.
Vaihe 5: Viive
Askelmoottorin ohjaus riippuu ohjelmistosta, joka ohjaa jokaista vaihetta. Asetetun nopeuden ylläpitämiseksi luonnoksen on kutsuttava stepper.run () -metodi tarpeeksi usein, jotta seuraava vaihe voidaan käynnistää oikeaan aikaan nykyisen nopeuden mukaan. Jotta voit ohjata antureita, sinun on kyettävä käsittelemään uudet mittaukset nopeasti. Sijainti-/nopeustuloste sisältää kaksi LATENCY -mittausta, joiden avulla voit tarkistaa luonnoksen riittävän nopean.
Stepper -latenssi (pfodBufferedStream)
Stepper -latenssi mittaa suurimman viiveen stepper.run () -metodin peräkkäisten kutsujen välillä. Jotta askelmoottoria käytettäisiin 1000 askelta sekunnissa, askeleen latenssin on oltava alle 1000uS (1mS). Tämän luonnoksen ensimmäisen version viive oli monta millisekuntia. Voit voittaa tämän ylimääräiset kutsut runStepper () -menetelmään (joka kutsuu stepper.run ()), jos se lisätään koodin kautta. Tämä ei ratkaissut ongelmaa kokonaan, koska valikko- ja tulostustulokset estivät luonnoksen, kun pieni Serial Tx -puskuri oli täynnä. Tämän estämisen estämiseksi pfodBufferedStream pfodParser -kirjastosta lisättiin 360 -tavuiseen tulostuspuskuriin, johon tulostuslausumat voivat nopeasti kirjoittaa. Sitten pfodBufferedStream vapauttaa tavut tässä tapauksessa määritetyllä baudinopeudella 115200. pfodBufferedStreamin on joko estettävä, kun puskuri on täynnä, tai vain pudotettava ylivuotomerkit. Tässä on asetettu pudottamaan ylimääräiset merkit, kun puskuri on täynnä, jotta luonnos ei esty odottaessaan, että sarja lähettää merkkejä.
Silmukan viive (NonBlockingInput)
Silmukan latenssi mittaa suurimman viiveen silmukan () -menetelmän peräkkäisten puheluiden välillä. Tämä asettaa kuinka nopeasti voit käsitellä uusia anturimittauksia ja säätää moottorin asetettua nopeutta. Kuinka nopea sen on oltava, riippuu siitä, mitä yrität hallita.
Tulostuslausekkeista johtuvat viiveet poistettiin yllä olevalla pfodBufferedStream -ohjelmalla, mutta käyttäjän syötteen käsittelemiseksi sinun on otettava syötteen ensimmäinen merkki ja jätettävä rivin loppu huomiotta. PfodParer-kirjaston NonBlockingInput-luokkaa käytetään palauttamaan ei-nollamerkki, kun syöte on syötetty. ()
Tietysti silmukan latenssia kasvattaa ylimääräinen koodi, jonka lisäät anturien lukemiseen ja uuden asetetun nopeuden laskemiseen. Monet anturikirjastot käyttävät vain viivästystä (..) mittauksen aloittamisen ja tuloksen haun välillä. Sinun on kirjoitettava nämä kirjastot uudelleen, jotta voit käyttää millisDelay-toimintoa, jotta mittaus voidaan suorittaa sopivan estämättömän viiveen jälkeen.
Vaihe 6: SpeedStepperSetupin käyttäminen askelmoottorin ja SparkFun Redboard Turbon avulla
SpeedStepperSetup -luonnoksen suorittamiseksi tarvitset askelmoottorin, ohjaimen ja virtalähteen sekä tässä esimerkissä SparkFun Redboard Turbo.
Yllä oleva kytkentäkaavio (pdf -versio) näyttää liitännät. Vaihda SpeedStepperSetup -luonnoksessa SERIAL -määritelmäksi #define SERIAL Serial1
Askelmoottori, virtalähde, ohjain ja suoja
Askelmoottoreita on useita tyyppejä ja kokoja. Tässä käytetään kaksikelaista 12V 350mA askelmoottoria testaukseen. Tämän askelmoottorin virransyöttöön tarvitset vähintään 12 V: n ja yli 350 mA: n virtalähteen.
Tämä kirjasto tarjoaa vain suunnan ja askeleen ulostulon, joten tarvitset ohjaimen liittymään askelmoottoriin. Easy Driver ja Big Easy Driver ohjaavat moottorin käämien virtaa, joten voit käyttää korkeamman jännitteen virtalähdettä turvallisesti, esimerkiksi käyttämällä 6 V: n syöttöä 3,3 V: n moottorille. Easy Driver voi syöttää 150 mA/kela ja 700 mA/kela. Suuremmille virroille Big Easy Driver voi syöttää jopa 2A kelaa kohti. Lue usein kysytyt kysymykset Easy Drive -sivun alareunasta.
Näissä esimerkeissä D6 ja D7 ovat askel- ja suuntaulostuloja. Voit muuttaa lähtönastat mihin tahansa digitaaliseen lähtöön muuttamalla STEP_PIN- ja DIR_PIN -asetuksia luonnoksen yläosassa.
Sparkfun Redboard Turbon ohjelmointi
Redboard Turbon ohjelmointi on ongelmallista. Jos ohjelmointi ei onnistu, paina ensin nollauspainiketta ja valitse COM -portti uudelleen Arduino Tools -valikosta ja yritä uudelleen. Jos tämä ei toimi, paina nollauspainiketta kahdesti ja yritä uudelleen.
Easy Driverin kytkeminen
Kahdessa kela -askelmoottorissa on 4 johtoa. Etsi yleismittarilla parit, jotka yhdistyvät kuhunkin kelaan, ja johda sitten toinen kela Easy Driver A -liittimiin ja toinen kela B -liittimeen. Ei ole väliä mihin suuntaan ne kytketään, koska voit käyttää asetusvalikon s cmd -näppäintä liikkeen suunnan vaihtamiseen.
Moottorin virtalähde on kytketty M+ - ja GNDS -järjestelmiin. Aseta kortin logiikkataso 3/5V -linkillä. Lyhennä linkki yhteen 3,3 V: n mikroprosessorilähdöille, kuten SparkFun Redboard Turbo (jos jätät sen auki, se soveltuu 5 V: n digitaalisille signaaleille, esim. UNO, Mega) Kytke GND, STEP, DIR nastat mikroprosessoriin GND ja vaihe ja muut lähtöliitännät eivät ole tarpeen moottorin käyttämiseksi.
USB -TTL -sarjakaapeli
Kun siirrät SpeedStepperSetup -luonnosta Uno/Megasta Redboard Turboon, saatat korvata naiivisti #define SERIAL Serial -sarjan #define SERIAL SerialUSB -laitteella Redboard Turbo -USB -sarjaliitäntään sopivaksi, mutta havaitset, että tuloksena oleva askelviive on noin 10 mS. Se on 10 kertaa hitaampi kuin UNO. Tämä johtuu siitä, miten Redboard -suoritin käsittelee USB -yhteyttä. Tämän ratkaisemiseksi liitä USB -liitin TTL -sarjakaapeliin D0/D1 -asentoon ja aseta#define SERIAL Serial1 käyttääksesi laitteistosarjayhteyttä askelmoottorin ohjaamiseen. Serial1: n käyttäminen antaa LATENCY: stepper: 345uS loop: 2016uS, joka on 3 kertaa nopeampi kuin UNO stepperin ja silmukan latenssissa
Pääteohjelma
Arduino -sarjamonitoria on hieman vaikeampi käyttää askelmoottorin ohjaamiseen, koska sinun on syötettävä merkki cmd -riville ja lähetettävä se painamalla Enter -näppäintä. Nopeampi ja reagoivampi tapa on avata pääteikkuna, TeraTerm for PC (tai CoolTerm Mac), joka on kytketty USB -TTL -kaapelin COM -porttiin. Sitten siinä ikkunassa cmd -näppäimen painaminen lähettää sen heti. Enter -näppäimen lähettäminen lähettää vain tyhjän rivin.
Moottorin nopeusalueen asettaminen
Kuten yllä on kytketty, Easy Drive on määritetty 1/8 askelille, joten 1000 askelta sekunnissa kääntää moottorin nopeudella 1000/8/200 askel/kierros = 0,625 kierrosta sekunnissa tai enintään 37,5 kierrosta minuutissa. Vaihtamalla tuloksi MS1/MS2 voit vaihtaa 1/8, ¼, ½ ja täysi vaiheiden välillä. Täydelliset vaiheet yhdistämällä sekä MS1 että MS2 GND: hen. Tämä mahdollistaa nopeuden jopa 300 rpm. Oikeiden MS1/MS2 -asetusten valitseminen mahdollistaa moottorin ja käyttöosan välisen asennetun välityssuhteen säätämisen.
Laitteiston suojaus
Vaikka SpeedStepper -kirjaston avulla voit asettaa sijaintirajoja moottorin liikkeelle, sijainnin liittäminen tapahtuu laskemalla ohjelmiston tuottamat askeleet. Jos moottori sammuu eli vääntömomentti ei riitä moottorin käyttämiseen seuraavassa vaiheessa, ohjelmistoasento ei ole synkronoitu moottorin asennon kanssa. Sitten kun käytät "goHome" -komentoa, moottori ylittää kotiasennon. Laitteiston vahingoittumisen estämiseksi sinun on asennettava rajakytkimet koville rajoille moottorin virransyötön katkaisemiseksi
Moottorin virtarajan asettaminen
Aseta ensin potentiometrin alin asetus. eli jännite TP1: ssä on minimi. Potentiometri on herkkä, joten älä pakota potentiometriä mekaanisten rajoitinten ohi. Aseta hitaalla tasaisella nopeudella ajava moottori hitaasti ja käännä sitten potentiometriä hitaasti, kunnes moottori ei hyppää tai nyki vaiheiden välillä.
Johtopäätös
Tämä projekti näyttää, kuinka SpeedStepper -kirjastoa käytetään käytännön sovelluksessa. Vaikka AccelStepper-kirjasto tarjoaa hyvän sijainnin hallinnan, nopeuden säätöä tarvittiin Prototyyppi-jääsulamisanturille, joka keräsi biologisia näytteitä Euroopasta, joten AccelStepper-kirjasto kirjoitettiin uudelleen nopeuden säätämiseksi pääterajoilla ja goHome-toiminnolla.
Suositeltava:
Langaton polkupyörään asennettu Bluetooth -kaiutin: 11 vaihetta (kuvilla)
Langaton polkupyörään asennettu Bluetooth -kaiutin: Hei! Tässä ohjeessa näytän sinulle, kuinka olen rakentanut langattoman polkupyörään asennetun Bluetooth -kaiuttimen. Täytyy sanoa, että tämä on ehkä yksi suosikkiprojekteistani tähän mennessä. Se näyttää hyvältä, sillä on upea ääni ja futuristinen ulkonäkö! Kuten al
Kaulamurskain (kitaralle asennettu tehopedaali): 6 vaihetta (kuvilla)
Kaulamurskain (kitaralle asennettu tehopedaali): Dale Rosen, Carlos Reyes ja Rob KochDATT 2000
Micro: bit MU Vision Sensor - Asennettu älyautoon: 5 vaihetta
Micro: bit MU Vision Sensor - Asennettu älykkääseen autoon: Tämä on opas siitä, miten MU -visioanturi asennetaan Smart Car -autoon, jonka rakennamme tämän ohjeen mukaan. Vaikka tämä opas näyttää kuinka asentaa MU -näköanturi, voit myös seurata sitä asentaaksesi kaikenlaisia muita antureita
Päivitys-7 tuuman tabletti asennettu My '14 Cruze -laitteeseen: 6 vaihetta
Päivitys-7 tuuman tabletti asennettu My '14 Cruze -laitteeseen: Tämä on opetusohjelma, joka perustuu käyttäjän thorpeen antamiin ohjeisiin tässä viestiketjussa Cruze Talk -foorumin sivustolla. Ilmeisesti tämä opetusohjelma pyörii tietyn ajoneuvosarjan ympärillä. Kirjoitan kuitenkin tämä opas kaikille, jotka yrittävät
Tasainen seinälle asennettu Raspberry Pi -kosketusnäyttö: 8 vaihetta (kuvilla)
Uppoasennettava Raspberry Pi -kosketusnäyttö: Raspberry Pi 7 " Kosketusnäyttö on hämmästyttävä, edullinen tekniikka. Päätin, että haluan asentaa yhden seinälleni kotiautomaatiota varten. Mutta mikään verkossa löytämistäni DIY -kiinnikkeistä ei käsitellyt ongelmaa siitä, kuinka se voidaan asentaa uppoasennukseen ilman