Sunum yükleniyor. Lütfen bekleyiniz

Sunum yükleniyor. Lütfen bekleyiniz

Motor Sürücü Devresi ile Kontrol

Benzer bir sunumlar


... konulu sunumlar: "Motor Sürücü Devresi ile Kontrol"— Sunum transkripti:

1 Motor Sürücü Devresi ile Kontrol
Aslı Ergün

2 L298 sürücüsü ile Adafruit L293D sürücüsü ile

3 L298 Özellikleri: 2 ampere kadar dayanıklıdır.
2 adet H köprüsünün bulunmaktadır. ( H Köprüsü DC motorların ileri ve geri yönde hareket etmesini sağlayan devredir. Devrede 2 adet NPN ve 2 adet PNP transistör bulunur.) 2 motor bağlanabilir.

4 L298 Pinler

5 İnput Pinleri INPUT 1, 2, 3 ve 4 : INPUT pinleri motorların dönme yönünün kontrolü için Arduino'ya bağlanır. INPUT 1 ve 2 pinleri 1. motorun, INPUT 3 ve 4 pinleri ise 2. motorun kontrolünde kullanılır. Örneğin 1. Motorun kontrolü için, INPUT 1 pini 5 volt, INPUT 2 pini 0 volt yapılır ise motor ileri yönde dönmeye başlar. Eğer INPUT 1 pini 0 volt ve INPUT 2 pini 5 volt yapılır ise motor geri yönde dönmeye başlar. İki pinin aynı anda 5 volt olması motoru kilitleyerek fren yapmasını sağlar. İki pininde 0 volt düzeyinde olması ise motorun boşta olmasına neden olup kısa süre sonra motorun durmasını sağlar.

6 Output Pinleri • OUTPUT 1, 2, 3 ve 4 : Bu pinler motorlara bağlanan pinlerdir. OUTPUT 1 ve 2. pinler 1. Motora, OUTPUT 3 ve 4. pinler ise 2. motora bağlanır.

7 Enable Pinleri • ENABLE A ve ENABLE B : Bu iki pin motorların dönüş hızını ayarlamak için kullanılır. Bu yüzden bu pinleri Arduino'nun PWM ayaklarına bağlamamız gerekir. PWM sinyalinin görev zamanına göre motorun hızı arttırılabilir veya azaltılabilir. ENABLE A pini 1. motorun, ENABLE B pini ise 2. motorun hızını kontrol etmek için kullanılır. Eğer hız kontrolü yapılmayacak sa bu pinler 5 volt hattına bağlanabilir. PWM kullanmak için AnalogWrite komutu kullanılır.

8 Besleme Pinleri • VSS (LOGIC SUPPLY voltAGE – 9. pin): Adından da anlaşıldığı gibi bu pinin 5 volta bağlanması gerekmektedir. Devrenin kararsızlığını azaltmak için bu pinle toprak arasına 100nF'lık kondansatör bağlanabilir. • GND (8. pin): Besleme hattının devreyi tamamlayabilmesi için bu pin toprak hattına bağlanması gerekir. Ayrıca entegrenin üzerindeki demir de GND pinine bağlıdır. Bu metalin devre kurulumunda yanlış pinlere değip kısa devre yapmamasına özen göstermek gerekir. • VS (4. pin): Entegrenin motorlara vereceği enerjiyi aldığı ana besleme hattıdır. Bu hatta bağlanacak enerji kaynağı motorlara verileceği için, motorlarımızın özelliğine göre besleme gerilimi kullanmalıyız. Genellikle bu hatta 7 ila 12 volt arasında besleme kaynakları bağlanmaktadır.

9

10 Değişkenler // motor A int enA = 3; int in1 = 4; int in2 = 8; // motor B int enB = 6; int in3 = 5; int in4 = 7; char Data; void setup() { // motor control pinlerini çıkış tanımlıyoruz pinMode(enA, OUTPUT); pinMode(enB, OUTPUT); pinMode(in1, OUTPUT); pinMode(in2, OUTPUT); pinMode(in3, OUTPUT); pinMode(in4, OUTPUT); } Serial.begin(9600);

11 Seri Porttan Kontrol void loop() { if (Serial.available()){
Data=Serial.read();

12 İleri if(Data=='F'){ // motor A'yı çalıştır digitalWrite(in1, HIGH);
digitalWrite(in2, LOW); // hızı belirle.0 ile 255 arası analogWrite(enA, 200); // motor B'yi çalıştır digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(enB, 200); delay(1000); }

13 Geri else if (Data=='B'){ // motor A'yı çalıştır
digitalWrite(in1, LOW); digitalWrite(in2, HIGH); // hızı belirle.0 ile 255 arası analogWrite(enA, 200); // motor B'yi çalıştır digitalWrite(in3, LOW); digitalWrite(in4, HIGH); analogWrite(enB, 200); delay(1000); }

14 Sol else if (Data=='L'){ // motor A'yı çalıştır
digitalWrite(in1, HIGH); digitalWrite(in2, LOW); // hızı belirle.0 ile 255 arası analogWrite(enA, 200); // motor B'yi çalıştır digitalWrite(in3, LOW); digitalWrite(in4, HIGH); analogWrite(enB, 200); delay(1000); }

15 Sağ else if (Data=='R'){ // motor A'yı çalıştır
digitalWrite(in1, LOW); digitalWrite(in2, HIGH); // hızı belirle.0 ile 255 arası analogWrite(enA, 200); // motor B'yi çalıştır digitalWrite(in3, HIGH); digitalWrite(in4, LOW); analogWrite(enB, 200); delay(1000); }

16 Dur else { digitalWrite(in1, LOW); digitalWrite(in2, LOW); digitalWrite(in3, LOW); digitalWrite(in4, LOW); } delay(100);

17 L293D

18 Özellikleri 2 servo motor, 4 H-bridge motor outputs kullanilabilir.
4 motor sürülebilir.

19 Değişkenler #define MOTOR1_A 2 #define MOTOR1_B 3 #define MOTOR2_A 1
// Arduino pins for the PWM signals. #define MOTOR1_PWM 11 #define MOTOR2_PWM 3 #define MOTOR3_PWM 6 #define MOTOR4_PWM 5

20 void loop() { char input; if (Serial
void loop() { char input; if (Serial.available()) { // read the most recent character input = Serial.read(); // switch based on the character switch(input){

21 İleri case 'F': // forward motor(3, FORWARD, 255);
Serial.println("Forward"); delay(1500); break;

22 Geri case 'B': // backwards motor(3, BACKWARD, 255);
Serial.println("Backward"); delay(1500); break;

23 Dur case 'S': // stop motor(3, RELEASE, 255); motor(2, RELEASE, 255);
Serial.println("Stop"); delay(1500); break;

24 Sol case 'L': // left motor(3, FORWARD, 255); motor(2, BACKWARD, 255);
Serial.println("Left"); delay(1500); break;

25 Sağ case 'R': // right motor(3, BACKWARD, 255);
motor(2, FORWARD, 255); Serial.println("Right"); delay(1500); break;

26 default: // if character not recognized then stop
motor(3, RELEASE, 255); motor(2, RELEASE, 255); Serial.println("Dont understand"); delay(1500); break; }

27 // Select the motor (1-4), the command, and the speed (0-255)
// Select the motor (1-4), the command, and the speed (0-255). // The commands are: FORWARD, BACKWARD, BRAKE, RELEASE. // void motor(int nMotor, int command, int speed) { int motorA, motorB; if (nMotor >= 1 && nMotor <= 4) switch (nMotor) case 1: motorA = MOTOR1_A; motorB = MOTOR1_B; break; case 2: motorA = MOTOR2_A; motorB = MOTOR2_B; case 3: motorA = MOTOR3_A; motorB = MOTOR3_B; case 4: motorA = MOTOR4_A; motorB = MOTOR4_B; default: }

28 switch (command) { case FORWARD: analogWrite(MOTOR1_PWM, speed); digitalWrite(MOTOR1_A,HIGH); digitalWrite(MOTOR1_B,LOW); break; case BACKWARD: digitalWrite(MOTOR1_A,LOW); digitalWrite(MOTOR1_B,HIGH); case BRAKE: default: }

29 AF Kütüphanesi Kullanarak
#include <AFMotor.h> AF_DCMotor motor1(2); AF_DCMotor motor2(3); void setup() { Serial.begin(9600); motor1.setSpeed(255); motor2.setSpeed(255); } void AllStop() { motor1.run(RELEASE); // Turns off motor 1 motor2.run(RELEASE); // Turns off motor 2 void AllForward() { // Makes the robot go forward motor1.run(FORWARD); // Motor 1 goes forward motor2.run(FORWARD); // Motor 2 goes forward Serial.println("Going forward"); // Prints a line in the serial monitor void turnRight() { // Makes the robot go right motor2.run(BACKWARD); // Turns off motor 2 delay(1600); // Time required to turn right (1.6 seconds) Serial.println("Motors going Right"); // Prints a line in the serial monitor void GoBack(){ // Makes the robot go back motor2.run(BACKWARD); // Motor 2 goes back motor1.run(BACKWARD); // Motor 1 goes back delay(1600); // Time Required to go back (1.6 seconds) Serial.println("Backward"); // Prints a line in the serial monitor void turnLeft() { // Makes the robot go Left motor1.run(BACKWARD); // turns off motor 1 delay(1600); //Time Required to turn left (1.6)Seconds Serial.println("Motors going Left");// Prints a line in the serial monitor

30 void loop() { char input; if (Serial
void loop() { char input; if (Serial.available()) { // read the most recent character input = Serial.read(); // switch based on the character switch(input){ case 'F': // forward AllForward(); break; case 'B': // backwards GoBack(); case 'S': // stop AllStop(); case 'L': // left turnLeft(); case 'R': // right turnRight(); default: // if character not recognized then stop }


"Motor Sürücü Devresi ile Kontrol" indir ppt

Benzer bir sunumlar


Google Reklamları