Verkkokauppa Kotisivut Tuoteluettelo Ota yhteyttä Kirjaudu Ostoskori Kassalle
Verkkokauppa » Artikkelit » Arduino Oma tili  
Tuoteryhmät
3D-TULOSTUS
AKUT/PARISTOT->
ANTENNIT->
ARDUINO->
AUDIO/VIDEO->
ELEKTRONIIKAN KOMPONENTIT->
HÄLYTIN/VALVONTA
JUOTTAMINEN->
JÄÄHDYTYS->
KAAPELIT/JOHDOT->
KAAPELITARVIKKEET->
KIRJAT
LEDIT->
LIITTIMET->
MEKANIIKKA->
MUISTIKORTIT
PALVELUT
PROTOILU->
PUHELIMET->
RAKENNUSSARJAT
RASPBERRY PI->
SEKALAISET
SÄHKÖMEKANIIKKA->
SÄHKÖTARVIKKEET->
TEHOLÄHTEET->
TIETOKONEET->
TIETOLIIKENNE->
TV/RADIO/VCR/CD->
TYÖKALUT->
* POISTETUT TUOTTEET *
* TARJOUSERÄT *
Pikahaku lisää
 
Etsi tuote hakusanalla
Tarkka haku
Uutuudet lisää
Raspberry Pi 3 ALOITUSPAKETTI
Raspberry Pi 3 ALOITUSPAKETTI
94,90€
Klikkaa tästä tuoteuutuudet
Tarjoukset lisää
BI-PIN LAMPPU 28V 40mA T-1-3/4 R3,17mm
BI-PIN LAMPPU 28V 40mA T-1-3/4 R3,17mm
2,23€ 1,12€
Valmistajat
Artikkelit lisää
Arduino (7)
ARM -> (6)
Banana Pi
Laitehuolto (1)
Ohjelmoitavat logiikat (1)
Rakennussarjat (1)
Raspberry Pi (3)
Tekniikat (1)
Yleistä (1)
Lisätiedot
Vinkit
Uutisotsikot
Toimitusehdot
Tietosuoja
Käyttöehdot
Ota yhteyttä
Löydä meidät
Noutomyymälä
Varoitus Uusi verkkokauppa www.partco.fi avattu!
Arduino ja askelmoottorit

Netti on pullollaan juttuja askelmoottoreista ja niiden ohjauksesta mikrokontrollereilla. Ajattelin alle kerätä hieman perustietoa moottoreista ja niiden ohjauksesta lähinnä Arduinon kannalta.

Lyhyesti askelmoottoreista

  • askelmoottoreita käytetään todella paljon tietoteknisissä sähkömekaanisissa laitteissa
    • valitettavasti nykyään jo romuksi päätyneet matriisikirjottimet olivat hyviä moottoreiden lähteitä
  • kahta tyyppiä
    • UNIPOLAR (viisi tai kuusi johtoa = neljä käämiä)
    • BIPOLAR (neljä johtoa = kaksi käämiä)
  • jännitteet pienillä +5VDC ja korkeintaan nyrkin kokoisilla +12VDC
  • isommat moottorit ovat todella voimakkaita ja vaativat useita ampeereja ohjausvirtaa
  • yleinen askelmäärä moottoreille on 200 askelta per kierros

Lyhyesti moottoreiden kelojen ohjauksesta sähköisessä mielessä

  • UNIPOLAR-moottoria voi yksinkertaisimmillaan ohjata käämi kerrallaan
  • UNIPOLAR-moottoreilla ohjausvirran suunta on aina sama kun taas BIPOLAR-moottoreille käämin ohjausvirran suuntaa pitää muuttaa
  • virran suunnanmuutos onnistuu esim. H-siltakytkennällä (yksi silta per yksi kela ts. yhtä askelmoottoria varten tarvitsee kaksi H-siltaa)
  • muutamia ampeereja suuremmat ohjausvirrat vaativat jo erilliskomponentteja mutta pienemmät virrat hoituvat kätevästi integroiduilla piireillä joihin on sisäänrakennettuna mm. ohjauspulssit logiikkatasoisina (TTL), suojadiodit induktiivista kuormaa varten (moottori, solenoidi), suojapiiri ylilämpenemistä vastaan

Valikoimistamme löytyy valmiita H-siltapiirejä kuten L293D ja tehotransistoripaketteja kuten ULN2003A.

Lyhyesti moottoreiden askeltamisesta

Yksi askel muodostuu neljästä ohjausvaiheesta A-B-C-D.  Ainoastaan yhtä käämiä ohjataan kerrallaan. Tätä kutsutaan nimellä WAVE DRIVE. Hidas mutta tarkka. Yleisin askellusmuoto on nimeltään FULL-STEP tai TWO-PHASE DRIVE. Siinä ohjataan molempia käämejä samanaikaisesti. Tällöin roottori hakeutuu aina käämien magneettikenttien väliin. Tällä saadaan aikaiseksi lisää vääntöä. HALF-STEP ohjauksella saadaan askelluksen resoluutio tuplattua. Saavutettu etu menetetään väännöstä. Muita hienostuneempia tapoja on mm. MICROSTEPPING.

Valikoimistamme löytyy valmiita moottoriohjainpiirejä kuten UCN5804, L297.

Sitten Arduinon oman Stepper-kirjaston kimppuun

Kirjastolla voi ohjata molempia moottorityyppejä kahdella tai neljällä I/O-pinnillä. Viereisessä kuvassa kokeillaan valikoimista löytyvää pientä bipolaarista askelmoottoria jota voi ohjata suoraan Arduinon I/O-pinneillä neljällä johtimella. EMF-suojadiodit kytkennästä tosin puuttuvat mutta luotamme AVR:n sisäisiin suojiin tällä kertaa.

#include <Stepper.h>

/*
Kirjaston askelluskuvio = FULL-STEP DRIVE
Step  C0  C1  C2  C3
     PUN SIN KEL MUS
   1.  1   0   1   0
   2.  0   1   1   0
   3.  0   1   0   1
   4.  1   0   0   1
*/

#define KEL  4
#define PUN  5
#define MUS  6
#define SIN  7
#define STEPS  20    // askelten määrä per kierros
#define SPEED  200    // nopeus 200 kierrosta minuutissa

Stepper stepper(STEPS, PUN, SIN, KEL, MUS);    // itse moottorin alustus

// alustus
void setup() {
  stepper.setSpeed(SPEED);    // asetetaan moottorin nopeus
}

// pääluuppi
void loop() {  
  stepper.step(1);    // yksi askel kerrallaan
  delay(500);    // puolen sekunnin viive
}

Sehän liikkuu. Mainiota. Joitain huomioitavia seikkoja:

Useamman moottorin ohjaus onnistuu myös mutta neljä johdinta per moottori on melko paljon. Koska kaksi ohjaussignaalia on aina käänteisesti kahteen muuhun nähden, ulkopuolisilla transistoreilla on helppo vähentää johdintarve kahteen.

Kun kutsuu stepper.step funktiota, niin se blokkaa. Tämä tarkoittaa sitä että kunnes moottori on pykinyt halutun määrän askelia, mitään muuta ei sitten tehdäkkään. Yksi parannus tähän löytyi täältä.

Arduinon Stepper.h ja Stepper.cpp löytyvät ohjelmointiympäristön alihakemistosta hardware/libraries/Stepper.

Arduinolle löytyy myös muita kirjastoja kuten Adafruitin Motor Shield sekä AccelStepper jossa on mukana kiihdytys/jarrutustoiminnot.

 

Tämä artikkeli on julkaistu 18.08.2010.
Takaisin Kirjoita arvostelu
Artikkeliin liittyviä tuotteita:
MIKROPIIRI =NPN= ULN2003
MIKROPIIRI =NPN= ULN2003
MIKROPIIRI =MOTOR= UCN5804
MIKROPIIRI =MOTOR= UCN5804
MIKROPIIRI =MOTOR= L297
MIKROPIIRI =MOTOR= L297
MIKROPIIRI =MOTOR= L293D DIP16
MIKROPIIRI =MOTOR= L293D DIP16
Ostoskori lisää
0 tuotetta
Kielet
Suomi English

Elgood Oy / Partco - Malminkaari 10, 00700 Helsinki - p. 0207 981 130 - www.elgood.fi - myynti@elgood.fi
Powered by osCommerce