Küsimus:
Kui täpselt saan Arduino saada pöördkoodrite abil?
Anonymous Penguin
2014-03-04 08:50:55 UTC
view on stackexchange narkive permalink

Stepper-mootorid on suure mootori jaoks sageli kallid. Võimsa, tavalise alalisvoolumootori ja pöördkoodriga saate aga samm-mootorit "simuleerida". Kui täpsed on Arduinoga pöörlevad kooderid, millel on ainult põhiline silmus ja palju muud koodi pole? Kas see "ei jäta pulssi" ja ei registreeri sageli piisavalt pöörlemist? Kuidas ma saan sellega hakkama saada palju suurema koodiga? Kas selleks on mõni parem viis? Kas katkestused aitaksid? Kas on olemas mingisugune vooluring, mis aitaks seda probleemi lahendada?

Märkus: see ei ületa tõenäoliselt 4 pööret sekundis ... (See võib olla palju, kuid kui teete pliikruvi tüüpi mehhanism, mis oleks ainult 24 tolli minutis, kui lineaarse liikumise tolli kohta on 10 pööret.)

Olen kasutanud pöördkoodereid, mis keeldusid korralikult töötamast, kui neid kiiresti keerutada. Vist erineb hinnast.
Kaks vastused:
#1
+10
Matt Clark
2014-03-04 09:26:24 UTC
view on stackexchange narkive permalink

Katkestusi kasutatakse selles olukorras.

Mainitud määrad on piisavalt aeglased, kus tõenäoliselt suudaksite seda tsükli sees lugeda, see pole siiski soovitatav, kuna tavalise tsükli lõpuleviimiseks kulub palju kellatsükleid ja sõltuvalt instinktide arvust tsüklis võib mõni loend puududa.

Sel eesmärgil tehakse katkestusi, kuna need saab käivitada igal ajal, olenemata tsükli olekust.

On funktsioon nimega attachInterrupt () , mis võtab kolm argumenti.

  1. Katkestuspistik
  2. Hooldustoimingu katkestamine
  3. Režiim

Allpool on näide katkestuse loendamisest

  volatile int myCounter = 0; void setup () {attachInterrupt (0, count, RISING);} void count () {myCounter ++;}  

Režiimid on järgmised:

LOW, CHANGE, RISING, FALLING

Lisateavet katkestuste kasutamise kohta leiate siit.

Sõltuvalt kasutatavast kodeerijast peate koodi kohandama vastavalt oma vajadustele ja oma asukoha kindlaksmääramiseks tegema veel mõned arvutused, kuid see peaks olema hea lähtepunkt.

Muuda Siin on näide koodist Arduino Sandboxilt pöördkoodri kasutamiseks.

Katkestusega juhitav servadetektor Duemilanove'il saab hõlpsasti hakkama 100 servaga sekundis (mootoril 6500 p / min).
@WayfaringStranger Nii et siis pole Uno-ga probleemi. Aitäh!
@AnnonomusPerson - kui palju olete valmis tööd tegema? Kui te lähete alasti (`ISR_NAKED ()`), võite automaatse C-konteksti salvestamise vahele jätta ja tõmmata 100-500 Khz katkestussagedust välja andmata, kuid kirjutate sel hetkel põhiliselt montaaži C-s.
Kui soovite katkestusreaktsioonist absoluutse jama optimeerimise kohta täiesti banaanide dokumenti, vaadake [siin] (http://raphnet.net/programmation/snes2md/index_en.php). Koodi asetamine otse katkestustabelisse, et katkestuse latentsust veelgi vähendada!
Pange tähele ka seda, et kui kavatsete kasutada väikese latentsusega katkestusi, süstib funktsioon arduino attachInterrup terve täiendava funktsioonikõne üldkulude versus otse katkestuse `ISR () 'abil.
Tõepoolest, kui soovite midagi madala latentsusega, ei tohiks te arduino midagi siiski kasutada.
#2
+3
gwideman
2014-04-09 08:22:53 UTC
view on stackexchange narkive permalink

Lisades mõned viited juba kirjutatud raamatukogudele ja näidetele, et võimaldada erinevate lähenemisviiside ja kogemuste võrdlemist kiiruse ja vastuvõtlikkuse puuduvate sammude vahel.

Pöördkoodrite lugemine: http: // mänguväljak .arduino.cc / Main / RotaryEncoders

Quadrature Encoder on Arduino jaoks liiga kiire (koos lahendusega): http://www.hessmer.org/blog/2011/01/30 / quadrature-encoder-too-fast-for-arduino /

Teensy Encoderi teek: https://www.pjrc.com/teensy/td_libs_Encoder.html

Pöördkoodri lugemine Arduinol: http://www.circuitsathome.com/mcu/reading-rotary-encoder-on-arduino/



See küsimus ja vastus tõlgiti automaatselt inglise keelest.Algne sisu on saadaval stackexchange-is, mida täname cc by-sa 3.0-litsentsi eest, mille all seda levitatakse.
Loading...