Motor Sürücü Devresi ile Kontrol

Slides:



Advertisements
Benzer bir sunumlar
Hazırlayan ve Sunan Ali Yasin Çakılcı HUNROBOTX
Advertisements

Kontrol Çevrimleri FOR WHILE DO-WHILE IF-ELSE SWITCH-CASE-DEFAULT
ORT – 104 Hoş Geldiniz.
Program Kontrol İfadeleri
5. EGITIM Mikrodenetleyiciler PIC16F628 – PIC16F877
ARDUINO İLE ANALOG ÇIKIŞ VERMEK
16F628 TANIMLAMA KISMI Devrenizi çalıştırmak için 16F628 mikrodenetleyicisini programlarken kullanacağınız tanımlama kısmı verilmiştir. Defterinize not.
ARDUINO DİJİTAL PİN KONTROLÜ
Logical Design Farid Rajabli.
Timer 1 16bit (65535) Programlanabilir dahili ve harici saat kaynağı
ARDUINO DİJİTAL GiRİŞ KONTROLÜ
ARDUINO RÖLE KONTROLÜ.
MİKRODENETLEYİCİ İLE DİJİTAL GİRİŞ KONTROLÜ
PHP'de Program Denetimi
ARDUINO İLE SERVO MOTOR KONTROLÜ
DÖNGÜLER(Loop) while, for döngüleri Break ve continue işlevleri
4. KONTROL VE DÖNGÜ KOMUTLARI
DİJİTAL ÇIKIŞ KOMUTLARI
KOŞUL İFADELERİ.
CCS C İLE PIC PROGRAMLAMA DERS-4-
Doç. Dr. Cemil Öz SAÜ Bilgisayar Mühendisliği Dr. Cemil Öz.
TEMEL ELEKTRONİK -2-.
BM-305 Mikrodenetleyiciler Güz 2015 (6. Sunu) (Yrd. Doç. Dr. Deniz Dal)
ARDUINO DİJİTAL PİN KONTROLÜ
Yapısal Programlama Yüksek Düzeyli Dillerin Gelişim Süreci – , Fortran (by IBM), for creating scientific and engineering applications, first commercial.
Seri Port ile İletişim.
ARDUINO SENSÖR KONTROLÜ
ARDUINO DİJİTAL GiRİŞ KONTROLÜ
ARDUINO İLE SAYAÇ UYGULAMASI
OMRON 1 C-Serisi I Bölüm 6 C-Serisi I/O Modül Kablolaması.
IF if (şart) { İşlemler… }
AB’15 Arduino ile sensörler dersi
Sensörler Ders2 Aslı Ergün.
GPIO Burhan Baraklı.
Sensorler Ders4 Aslı Ergün.
Mekatronik Mühendisliği
Seriport String İletimi
PWM (Pulse Width Modulation- Sinyal Genişlik Modülasyonu)
Bluetooth İle Haberleşme
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
Fonksiyonlar.
ARDUİNO Arduino Eğitimleri Bölüm 6 Analog Giriş – Çıkış İşlemleri
BM-305 Mikrodenetleyiciler Güz 2016 (7. Sunu)
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
Arduino ve Gaz Sensörü.
Sensörler Ders 8 Aslı Ergün.
Doğu Akdeniz Üniversitesi Bilgisayar Ve Teknoloji Yüksek Okulu
Arduino Uno R3 ile Merhaba Dünya Yrd. Doç. Dr. Deniz DAL
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
ARDUİNO Arduino Eğitimleri Bölüm 6 Analog Giriş – Çıkış İşlemleri
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
Fonksiyonlar.
Doğu Akdeniz Üniversitesi Bilgisayar Ve Teknoloji Yüksek Okulu
Arduino Eğitimleri Bölüm 5 Dijital Giriş – Çıkış İşlemleri
ARDUİNO Arduino Eğitimleri Bölüm 3 Programlama Dili Temelleri
4- OPERATÖR – koşul - döngü Nesne Yönelimli Programlama - i
ARDUİNO Arduino Eğitimleri Bölüm 2 Arduino’ya Giriş
GAZİ ÜNİVERSİTESİ TEKNOLOJİ FAKÜLTESİ BİLGİSAYAR MÜHENDİSLİĞİ BÖLÜMÜ
Arduino Programlama Dili
MBLOCK ile Arduino ve Robotik Kodlama
MBLOCK ile Arduino ve Robotik Kodlama
MBLOCK ile Arduino ve Robotik Kodlama
Elektronik Devre Örnekleri
Arduino Uno R3 ile Merhaba Dünya Dr. Öğr. Üyesi Deniz DAL
(Dr. Öğr. Üyesi Deniz Dal)
ENGEL ALGILAYAN ÇİZGİ İZLEYEN ROBOT HAZIRLANMASI.
Marmara Üniversitesi Mekatronik Tezli YL Programı
Interrupts.
Sunum transkripti:

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

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

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.

L298 Pinler

İ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.

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.

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.

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.

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);

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

İ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); }

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); }

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); }

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); }

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

L293D

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

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

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){

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

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

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

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

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

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

// 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: }

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: }

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

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 }