Каталог 7

Katse 7.1

Eesmärk:
Eelmises projektis kasutasime transistori, et kontrollida mootorit, millega suutsime kontrollida vaid mootori kiirust. Selles projektis võtame kasutusele H-silla, et saaksime kontrollida mootori pöörlemissuunda. Kuna tegemist on suure sammuga robotiehitusele, siis lisame skeemi lüliti, mis paneb mootori tööle, lüliti mis muudab pöörlemissuunda ja muuttakisti mootori kiiruse muutmiseks.

Vajalikud komponendid:

  • L293D või SN754410 mootori draiver
  • lülitid 2tk
  • 10kOhm takistid 2tk
  • potentsiomeeter

L293D

Mootori draiver L293D on kiip 16-jalaga.

Kiibi jalad on tavaliselt nummerdatud. Iga kiibi on ülemises osas lohk ja võta see ette nii, et lohk jääb üles. Number 1 jalg jääb üles vasakule ja jooksevad U-kujuliselt.

  • Vss – kiibi toide +5V
  • Vs – väline toide kuni +36V
  • ENABLE1 ja ENABLE2 – aktiveerivad mootor1 ja mootor2
  • INPUT1 ja INPUT2 – mootor1 juhtimiseks
  • OUTPUT1 ja OUTPUT2 – mootor1 ühendamiseks
  • INPUT3 ja INPUT4 – mootor2 juhtimiseks
  • OUTPUT3 ja OUTPUT4 – mootor2 ühendamiseks
  • GND – maandus

L293D ühendamine Arduinoga

Paneme siis mootorid praktilised mootori draiveri abiga tööle. Skeemi lisame kaks nuppu ja potentsiomeetri moodoti juhtumiseks.

Ühendame kõigepealt L293D kiibi, lüliti ja patarei juhtmed arendusplaadiga. Ära veel patareid kinnita. Seejärel ühendame arendusplaadi pluss ja miinus pikiribad omavahel. Edasi ühendame mootori draiveri järgmised viigud numbrite järgi. Jälgi, kuhu poole jääb kiibi lohk!

  • 1. viik – ühendame Arduino pesasse 9
  • 2. viik – ühendame Arduino pesasse 4
  • 3. ja 6. viik – ühendame mootoriga
  • 4., 5., 12. ja 13. viik – ühendame maandusega
  • 7. viik – ühendame Arduino pesasse 3
  • 8. ja 16. viik  – ühendame patareid toitega

kood:

int switchPin = 2; // lüliti 1 
int motor1Pin1 = 3; // viik 2 (L293D) 

int motor1Pin2 = 4; // viik 7 (L293D) 

int enablePin = 9; // viik 1(L293D) 

 void setup() { 

 // sisendid 

 pinMode(switchPin, INPUT);

 //väljundid 

 pinMode(motor1Pin1, OUTPUT); 

 pinMode(motor1Pin2, OUTPUT); 

 pinMode(enablePin, OUTPUT); 

 // aktiveeri mootor1 

 digitalWrite(enablePin, HIGH); 

} 

 void loop() { 

 // kui lüliti on HIGH, siis liiguta mootorit ühes suunas: 

 if (digitalRead(switchPin) == HIGH) 

{ 

 digitalWrite(motor1Pin1, LOW); // viik 2 (L293D) LOW 

 digitalWrite(motor1Pin2, HIGH); // viik 7 (L293D) HIGH 

 } 

 // kui lüliti on LOW, siis liiguta mootorit teises suunas: 

 else

 { digitalWrite(motor1Pin1, HIGH); // viik 2 (L293D) HIGH 

 digitalWrite(motor1Pin2, LOW); // viik 7 (L293D) LOW 

 } 

} 

kood:

int switchPin = 2; // lüliti 1 

int switchPin2 = 1; // lüliti 2 

int potPin = A0; // potentsiomeeter 

int motor1Pin1 = 3; // viik 2 (L293D) 

int motor1Pin2 = 4; // viik 7 (L293D) 

int enablePin = 9; // viik 1(L293D) 

 void setup() { 

 // sisendid 

 pinMode(switchPin, INPUT); 

 pinMode(switchPin2, INPUT); 

 //väljundid 

 pinMode(motor1Pin1, OUTPUT); 

 pinMode(motor1Pin2, OUTPUT); 

 pinMode(enablePin, OUTPUT); 

} 

 void loop() { 

 //mootori kiirus 

 int motorSpeed = analogRead(potPin); 

 //aktiveeri mootor 

 if (digitalRead(switchPin2) == HIGH)

{ 

 analogWrite(enablePin, motorSpeed); 

 } 

else 

{ analogWrite(enablePin, 0); } 

 // kui lüliti on HIGH, siis liiguta mootorit ühes suunas: 

 if (digitalRead(switchPin) == HIGH)

{

 digitalWrite(motor1Pin1, LOW); // viik 2 (L293D) LOW 

 digitalWrite(motor1Pin2, HIGH); // viik 7 (L293D) HIGH 

 } 

 // kui lüliti on LOW, siis liiguta mootorit teises suunas: 

 else 

{ 

 digitalWrite(motor1Pin1, HIGH); // viik 2 (L293D) HIGH 

 digitalWrite(motor1Pin2, LOW); // viik 7 (L293D) LOW 

 } 

}

Katse 7.2

Vajalikud komponendid:

Ultrasonic Distance Sensor

4 traati

Skeem:

Kood:

#define ECHO_PIN 8

#define TRIG_PIN 7

void setup() {

  pinMode(ECHO_PIN, INPUT);

  pinMode(TRIG_PIN, OUTPUT);

  Serial.begin(960);

}

void loop() {

  digitalWrite(TRIG_PIN,HIGH);

  digitalWrite(TRIG_PIN,LOW);

  int distance=pulseIn(ECHO_PIN, HIGH)/50;

  Serial.println(distance);

}

-----------------------------------------------------------------------------------------

#define ECHO_PIN 8

#define TRIG_PIN 7

void setup() {

  pinMode(ECHO_PIN, INPUT);

  pinMode(TRIG_PIN, OUTPUT);

  Serial.begin(960);

}

void loop() {

  Serial.println(measure()); 

}

int measure()

{

  digitalWrite(TRIG_PIN,HIGH);

  digitalWrite(TRIG_PIN,LOW);

  int distance=pulseIn(ECHO_PIN, HIGH,15000)/50;

  return constrain(distance,1,300);

}

Katse 7.1

Komponendid:

Arduino UNO plaat (1tk)
Arendusplaat (1tk)
Ultraheli kaugusandur (1tk),
Servo (1tk),
LED(red, green )
Juhtmed (19tk)

Tööprotsess:

kui tood käe anduri juurde, süttib roheline tuli ja servomootor pöörleb 90 kraadi; käe eemaldamisel süttib punane tuli ja servomootor pöörleb 0-ni

Skeem:

Kood:

include
Servo servoMotor;

int trigPin = 7;
int echoPin = 6;
int greenLedPin = 5;
int redLedPin = 3;

void setup() {
servoMotor.attach(9);
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
pinMode(greenLedPin, OUTPUT);
pinMode(redLedPin, OUTPUT);
}

void loop() {
long duration, distance;
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(10);
digitalWrite(trigPin, LOW);

duration = pulseIn(echoPin, HIGH);
distance = duration * 0.034 / 2;

if (distance >= 3 && distance <= 10) {
servoMotor.write(90);
digitalWrite(greenLedPin, HIGH);
digitalWrite(redLedPin, LOW);
} else {
servoMotor.write(0);
digitalWrite(greenLedPin, LOW);
digitalWrite(redLedPin, HIGH);
}

delay(100);
}

Reaalse elu rakendused:

Robotitehnika: Servomootorid liigutavad roboti osi, ultrahelidetektorid mõõdavad takistuste kaugust.
Autod: Servomootorid juhivad peegleid, ultrahelidetektorid aitavad parkimisel.
Koduautomaatika: Servomootorid juhivad koduseadmeid, ultrahelidetektorid tuvastavad inimeste kohaloleku.
Tööstusautomaatika: Servomootorid juhivad roboteid tootmises, ultrahelidetektorid paigutavad objekte liinil.

Uued funktsioonid:

pulseIn(): See funktsioon mõõdab impulsi kestust määratud viigul.

delayMicroseconds(): See funktsioon peatab programmi täitmise määratud arvu sekundite ajaks.

Video: