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ää
50-napainen FFC kaapeli 100mm
50-napainen FFC kaapeli 100mm
3,60€
Klikkaa tästä tuoteuutuudet
Tarjoukset lisää
Iskra SUUNTA-ANTENNI GSM/2G/3G-TAAJUUKSILLE
Iskra SUUNTA-ANTENNI GSM/2G/3G-TAAJUUKSILLE
60,76€ 48,61€
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 Anduino Motorshield

Puolankielisistä ohjeista johtuen tutkitaan korttia hieman tarkemmin. Yleisenä huomiona kortilla on yksi moottoriohjainpiiri L293D kuten monissa muissakin vastaavissa korteissa. Pintaliitosversiona olevat 4066-piirit ovat reitittämässä DIR ja PWM signaaleja riippuen jumpperivalinnasta.

JUMPPERIT

Jumpperi Pin laitetaan joko kohtaan 4,5,6,7 tai 10,11,12,13. Siis jompaan kumpaan! Mikäli käytät tätä korttia LCD216 shieldin kanssa, valitse 10,11,12,13. Relekortin kanssa ei ole merkitystä koska sen ohjaus tapahtuu Arduinon I2C-pinneillä 18 (A4) ja 19 (A5).  Ethernet-shieldin kanssa valitse 4,5,6,7 koska Ethernet-shield tarvitsee Arduinon SPI-väylän pinnit itselleen.

LISÄVIRRANSYÖTTÖ

Skemassa on merkitty VMOT joka tarkoittaa erillistä virransyöttöä moottoreille. L293D piirillä pinni 8 eli VCC2. Kahden nastan ruuviliitin on kortilla jumppereiden vieressä. Voit syöttää Arduinon pääregulaattorille tätä kautta myös käyttöjännitteen asettamalla jumpperin Ext/Vin paikoilleen. Oletuksena kuitenkin Motorshield saa moottoreille tarkoitetun sähkönsä Arduinon DC-liittimeltä (jumpperi Ext/Vin irti). Moottoreita ja vastaavia ei voi siis käyttää pelkästään USB-virransyötön kautta!

KYTKIMET

Reset-kytkimen lisäksi on kaksi vapaakäyttöistä painikekytkintä S1 ja S2 jotka vetävät maihin Arduinon pinnit 15 (A1) ja 16 (A2). Muista määritellä kys. pinnien ylösvetovastukset aktiivisiksi. Eli seuraavasti:

void setup() {
  pinMode(A1, INPUT_PULLUP); // ylösvetovastus päälle 1.0.1
  pinMode(13, OUTPUT); // oletusledi
}

void loop() {
  if(digitalRead(A1) == LOW) {
    // kytkin pohjassa
    digitalWrite(13, HIGH); // ledi päälle
  } else {
    digitalWrite(13, LOW); // ledi pois
  }
}

SIMPPELI ESIMERKKI DC-MOOTTORIN PÄÄLLE/POIS OHJAUKSESTA JA SUUNNANVAIHDOSTA


// määritellään pinnit
#define LED 13
#define S1 15      // kytkin S1
#define S2 16      // kytkin S2
#define M1_DIR 12  // suunnanohjaus (DIRA)
#define M1_EN 10   // aktivointi (PWMA)

boolean dir;  // muuttuja moottorin pyörimissuunnalle

void setup(void) {
  pinMode(S1, INPUT_PULLUP); // ylösvetovastus päälle 1.0.1
  pinMode(S2, INPUT_PULLUP); // ylösvetovastus päälle 1.0.1
  pinMode(LED, OUTPUT); // oletusledi
  pinMode(M1_DIR, OUTPUT); // moottorin suunta
  pinMode(M1_EN, OUTPUT); // moottori päälle / pois
}

void loop(void) {
  if(digitalRead(S1) == LOW) {
    // kytkintä painettu
    digitalWrite(LED, HIGH); // ledi päälle
    delay(50);
    if(digitalRead(S1) == LOW) {  // kytkin varmasti pohjassa
      digitalWrite(M1_EN, HIGH);  // moottori päälle
      while(digitalRead(S1) == LOW);    // kytkin pohjassa ja moottori pyörii
    }
  } else {
    digitalWrite(LED, LOW); // ledi pois
    digitalWrite(M1_EN, LOW); // moottori pois
  }
  
  if(digitalRead(S2) == LOW) {
    // kytkintä painettu
    delay(50);
    if(digitalRead(S2) == LOW) { // kytkin varmasti pohjassa
       dir = !dir;  // suunta kääntyy
       digitalWrite(M1_DIR, dir);  // asetetaan suunta
       while(digitalRead(S2) == LOW);    // kytkin pohjassa odotellaan
    }
  }
}

SIMPPELI ESIMERKKI DC-MOOTTORIN PWM-OHJAUKSESTA JA SUUNNANVAIHDOSTA


// määritellään pinnit
#define LED 13
#define S1 15      // kytkin S1
#define S2 16      // kytkin S2
#define M1_DIR 12  // suunnanohjaus (DIRA)
#define M1_PWM 10  // nopeus (PWMA)

int motor_speed = 0;
boolean new_values = false;

void setup(void) {

  Serial.begin(9600);  
  pinMode(S1, INPUT_PULLUP); // ylösvetovastus päälle 1.0.1
  pinMode(S2, INPUT_PULLUP); // ylösvetovastus päälle 1.0.1
  pinMode(LED, OUTPUT); // oletusledi
  pinMode(M1_DIR, OUTPUT); // moottorin suunta
  pinMode(M1_PWM, OUTPUT); // moottorin pwm-ohjaus eli pyörimisnopeuden säätö
  
  Serial.println("Anduino Motorshield DC-moottoritesti PWM-lahdolla ja suunnanvaihdolla");
  Serial.println("Kytke DC-moottori pinneihin M1 1&2");
  Serial.println("Paina S1 tai S2 - molemmat pohjassa pysayttaa moottorin");
}

void loop(void) {
  
  // molemmat kytkimet
  if(digitalRead(S1) == LOW && digitalRead(S2) == LOW) {
    delay(50);
    if(digitalRead(S1) == LOW && digitalRead(S2) == LOW) {
      motor_speed = 0;
      new_values = true;
      while(digitalRead(S2) == LOW || digitalRead(S2) == LOW);    // kytkimiä vielä pohjassa
    }
  } else if(digitalRead(S1) == LOW && digitalRead(S2) == HIGH) {
    // vain kytkintä S1 painettu
    delay(10);
    if(digitalRead(S1) == LOW && motor_speed > -100) {  // kytkin varmasti pohjassa
      motor_speed -= 1;
      new_values = true;
    }
  } else if(digitalRead(S2) == LOW && digitalRead(S1) == HIGH) {
    // vain kytkintä S2 painettu
    delay(10);
    if(digitalRead(S2) == LOW && motor_speed < 100) { // kytkin varmasti pohjassa
      motor_speed += 1;
      new_values = true;
    }
  }
  
  if(new_values == true) {  // päivitellään pinnejä vain jos kytkimiä painettu
    
    if(motor_speed == 0) {
      digitalWrite(LED, LOW);     // ledi pois
      digitalWrite(M1_PWM, LOW);  // moottori pois
    } else if(motor_speed > 0) {
      digitalWrite(M1_DIR, LOW);  // suunta
      analogWrite(M1_PWM, map(motor_speed, 0, 100, 0, 255));
      digitalWrite(LED, HIGH);    // ledi päälle
    } else if(motor_speed < 0) {
      digitalWrite(M1_DIR, HIGH); // suunta
      analogWrite(M1_PWM, map(motor_speed, -100, 0, 255, 0));
      digitalWrite(LED, HIGH);    // ledi päälle
    }
    new_values = false;    
    delay(10);
    Serial.println(motor_speed, DEC);
  }
    
}
Tämä artikkeli on julkaistu 28.11.2012.
Takaisin Kirjoita arvostelu
Artikkeliin liittyviä tuotteita:
ARDUINO YHTEENSOPIVA MOOTTORIOHJAINKORTTI (pinottava)
ARDUINO YHTEENSOPIVA MOOTTORIOHJAINKORTTI (pinottava)
PIENI YLEISKÄYTTÖINEN DC-MOOTTORI
PIENI YLEISKÄYTTÖINEN DC-MOOTTORI
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