Çizgi izleyen robotun çalışma prensibi :
İki farklı şekilde çizgiyi takip eder.
-
Siyah zemin üzerinde beyaz çizgiyi takip etmek
-
Beyaz zemin üzerinde siyah çizgiyi takip etmek
Robot hakkında bilgiler:
Kızılötesi sensörler sayesinde siyah veya beyaz çizgiyi takip eder.Kısaca algoritmadan baysedersek , ortadaki sensör çizginin üzerine geldiğinde robot düz devam eder.Soldaki sensörler çizginin üzerine gelirse sola, sağdaki sensörler çizginin üzerine gelirse robot sağa hareket eder.
Malzemeler:
-
Arduino Uno
-
QTR-8RC Kızılötesi Sensör
-
L293D Motor sürücü kartı
-
Robot Kit
Malzemeleri Satın Al
Qtr8rc üzerinde 8 tane alıcı verici bulunmaktadır.Arduino ile çizgi izleyen robot projesinde 5 tane sensör kullanarak çizgiyi takip ettirdik.Arduino bağlantısında istediğiniz 5 sensörü kullanabilirsiniz.Fakat 5 sensör de ard arda olmalı ki aksi halde aradaki boş sensörler çizgiyi takip etmeyeceğinden robotunuz çizgi dışına çıkabilir. Yazılımda sensörler analog 1 den 5 e kadar pinlere tanımlanmıştır.Burada dikkat etmeniz gereken nokta a5 den 1 e kadar ki bağlantınız sensör de soldan sağa aynı şekilde olsun.Motor sürücü arduino üzerine direk takılıyor.Sadece motor pinlerine bağlantılarını yapıp düz takıldığını kontrol etmelisiniz.
Afmotor Shield için Arduino Kodu:
#include <AFMotor.h>
#include <QTRSensors.h>
AF_DCMotor motor1(1, MOTOR12_8KHZ );
AF_DCMotor motor2(2, MOTOR12_8KHZ );
#define KP .2
#define KD 5
#define M1_minumum_hiz 120
#define M2_minumum_hiz 120
#define M1_maksimum_hiz 210
#define M2_maksimum_hiz 210
#define MIDDLE_SENSOR 3
#define NUM_SENSORS 5
#define TIMEOUT 2500
#define EMITTER_PIN 2
#define DEBUG 0
QTRSensorsRC qtrrc((unsigned char[]) { 19,18,17,16,15} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
unsigned int sensorValues[NUM_SENSORS];
void setup()
{
delay(1500);
manual_calibration();
set_motors(0,0);
}
int lastError = 0;
int last_proportional = 0;
int integral = 0;
void loop()
{
unsigned int sensors[5];
int position = qtrrc.readLine(sensors);
int error = position - 2000;
int motorSpeed = KP * error + KD * (error - lastError);
lastError = error;
int leftMotorSpeed = M1_minumum_hiz + motorSpeed;
int rightMotorSpeed = M2_minumum_hiz - motorSpeed;
// set motor speeds using the two motor speed variables above
set_motors(leftMotorSpeed, rightMotorSpeed);
}
void set_motors(int motor1speed, int motor2speed)
{
if (motor1speed > M1_maksimum_hiz ) motor1speed = M1_maksimum_hiz; //MAKSİMUM MOTOR 1 HIZ LİMİTİ
if (motor2speed > M2_maksimum_hiz ) motor2speed = M2_maksimum_hiz; // MAKSİMUM MOTOR 2 HIZ LİMİTİ
if (motor1speed < 0) motor1speed = 0; // MİNIMUMMOTOER 1 HIZ LİMİTİ
if (motor2speed < 0) motor2speed = 0; // MİNİMUM MOTOR 2 HIZ LİMİTİ
motor1.setSpeed(motor1speed); //1.MOTOR HIZI
motor2.setSpeed(motor2speed);// 2.MOTOR HIZI
motor1.run(FORWARD); //İLERİ
motor2.run(FORWARD); //İLERİ
}
void manual_calibration() {
int i;
for (i = 0; i < 250; i++)
{
qtrrc.calibrate(QTR_EMITTERS_ON);
delay(20);
}
if (DEBUG) {
Serial.begin(9600);
for (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print(qtrrc.calibratedMinimumOn[i]);
Serial.print(' ');
}
Serial.println();
for (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print(qtrrc.calibratedMaximumOn[i]);
Serial.print(' ');
}
Serial.println();
Serial.println();
}
}
Engel Algılama Özellikli Çizgi İzleyen Robot
Güncelleme : 19.01.2016
Projenin L298N entegresi ile yapımı:
Bu kısımda sadece motor sürücüyü değiştirdik. Sensör pinleri aynı ve bağlantılarında değişiklik yok.
Yukarıdaki L298N entegresinin datasheetine bakalım ve aşağıdaki gibi bağlantılarımızı yapalım.
Sol Motor için: output1 ve output2 pinleri motorun uçlarına bağlayın. input1 ve input2 pinleri arduinonun 9 ve 10. dijital pinlerine, enableA ise dijital 4. pine takın.
Sağ Motor için: output3 ve output4 pinleri motorun uçlarına bağlayın. input3 ve input4 pinleri arduinonun 11 ve 12 dijital pinlerine, enableB ise dijital 5. pine takın.
Enerji Pinleri: Supply voltage vs yazılı pin bizim motorlar için besleme pilimizin artı uç girişidir. 9v yeterlidir.
Logic supply voltage vss yazılı pini arduinonun 5v pinine takın.
currentsensingA ve currentsensingB pinlerini 0.47ohm 5W direnç üzerinden pilin eksi ucuna bağlayın.
Son olarak da Gnd yazılı pini hem arduinun hem de pilin eksi ucuna bağlayın.
Güncelleme – 30.11.2016
Projenin L293B veya L293D Motor Sürücüleri ile Devresi:
L298N , L293B ve L293D Motor Sürücüleri için Arduino Kodu:
//Çizgi izleyen robot
//www.robimek.com
#include <QTRSensors.h>
#define SolMotorileri 9
#define SolMotorGeri 10
#define SagMotorileri 11
#define SagMotorGeri 12
#define ena 4
#define enb 5
#define KP .2
#define KD 5
#define M1_minumum_hiz 120
#define M2_minumum_hiz 120
#define M1_maksimum_hiz 210
#define M2_maksimum_hiz 210
#define MIDDLE_SENSOR 3
#define NUM_SENSORS 5
#define TIMEOUT 2500
#define EMITTER_PIN 2
#define DEBUG 0
int lastError = 0;
int last_proportional = 0;
int integral = 0;
QTRSensorsRC qtrrc((unsigned char[]) { 19,18,17,16,15} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
unsigned int sensorValues[NUM_SENSORS];
void setup() {
pinMode(SolMotorileri,OUTPUT);
pinMode(SolMotorGeri,OUTPUT);
pinMode(SagMotorileri,OUTPUT);
pinMode(SagMotorGeri,OUTPUT);
pinMode(ena,OUTPUT);
pinMode(enb,OUTPUT);
delay(1500);
manual_calibration();
set_motors(0,0);
}
void loop() {
unsigned int sensors[5];
int position = qtrrc.readLine(sensors);
int error = position - 2000;
int motorSpeed = KP * error + KD * (error - lastError);
lastError = error;
int leftMotorSpeed = M1_minumum_hiz + motorSpeed;
int rightMotorSpeed = M2_minumum_hiz - motorSpeed;
set_motors(leftMotorSpeed, rightMotorSpeed);
}
void set_motors(int motor1speed, int motor2speed)
{
if (motor1speed > M1_maksimum_hiz ) motor1speed = M1_maksimum_hiz; //MAKSİMUM MOTOR 1 HIZ LİMİTİ
if (motor2speed > M2_maksimum_hiz ) motor2speed = M2_maksimum_hiz; // MAKSİMUM MOTOR 2 HIZ LİMİTİ
if (motor1speed < 0) motor1speed = 0; // MİNIMUMMOTOER 1 HIZ LİMİTİ
if (motor2speed < 0) motor2speed = 0; // MİNİMUM MOTOR 2 HIZ LİMİTİ
analogWrite(ena,motor1speed);
analogWrite(enb,motor2speed);
digitalWrite(SolMotorileri,HIGH);
digitalWrite(SagMotorileri,HIGH);
digitalWrite(SolMotorGeri,LOW);
digitalWrite(SagMotorGeri,LOW);
}
void manual_calibration() {
int i;
for (i = 0; i < 250; i++)
{
qtrrc.calibrate(QTR_EMITTERS_ON);
delay(20);
}
if (DEBUG) {
Serial.begin(9600);
for (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print(qtrrc.calibratedMinimumOn[i]);
Serial.print(' ');
}
Serial.println();
for (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print(qtrrc.calibratedMaximumOn[i]);
Serial.print(' ');
}
Serial.println();
Serial.println();
}
}
Projede kullanılan kütüphaneler ve kodları buradan indirebilirsiniz >> Çizgi İzleyen Robot
yukarıda iki tane kod var hangisini kullanacağız
yukarıda iki tane kod var hangisini kullanacağız
Siyah zemin üzerinde beyaz yolu takip etmesi için ne yapmamız gerekiyor öğrenebilir miyim acaba?
Merhaba kodlar çalıştı ancak doksan derece ve keskin dönüşlerde yoldan çıkıyor. Bunu nasıl düzeltebiliriz.
Sezgin Abi 8li QTR ile nasıl olur?
Utkan şöyle yapmalısın.
#define NUM_SENSORS 5 değeri 8 olacak,
QTRSensorsRC qtrrc((unsigned char[]) kısmındaki { 19,18,17,16,15} sensör pinlerini 8 tane tanımla
loop kısmındaki unsigned int sensors[5]; değerini 8 yaparak kullanabilirsin.
5 sensör yerine 6 sensör kullanırsak kodu nasıl değiştirmeliyiz
Ena ve enb pinlerini PWM bir pine bağlamak gerekmiyormı
Sezgin abi L298n ile yapınca sensörden bağımsız çalışıyor. Neden olabilir?
Sezgin abi benim sağ motor 130 hızın altında çalışmıyor. Neden Olabilir
Sezgin abi benim sağ motor 130 hızın altında çalışmıyor. Neden Olabilir
Sezgin abi benim sağ motor 130 hızın altında çalışmıyor.
Merhaba. Bu proje için tüm malzemeler var. Bir tek motor sürücü entegresi yok. Ancak L298N motor sürücü kartı var. Acaba bununla yapmak mümkün mü? Motor sürücü kartında L298N in datasheet inde gösterildiği kadar uç yok. Ena Enb lerle birlikte toplam 6 çıkış var. Bu kart ile mümkün mü acaba çizgi izleyen?
aynı sıkıntı bende de var. yardımcı olursanız sevinirim…
Evet,mümkündür koddaki sağ motor ileri geri ve sol motor ileri geri çıkışlarını IN lere ena ve enb yi ise 5-4 e bağlayın motor bağlantılarını da out lardan yapın
selamlar güzel paylaşımınız için teşekkürler.
kodun bu kısmında:
int leftMotorSpeed = M1_minumum_hiz + motorSpeed;
int rightMotorSpeed = M2_minumum_hiz – motorSpeed;
sol motorun hızı neden artarken sağınki azalıyor açıklar mısnız?
Sezgin abi robotta değişiklikler yapsin ama tam olarak kullanilan malzemelerin listesi ve toplam tutar fiyatini yazarmisin ona göre yapicam
Sezgin Ani Ben utkan beyaz çizgide gitmio benimki ne yapayım
int leftMotorSpeed = M1_minumum_hiz + motorSpeed;
üstteki fonksiyonu bul + yeri – yap.
aşağıdaki fonksiyonu bul ordaki – işareti + yap
int rightMotorSpeed = M3_minumum_hiz – motorSpeed;
Sezgin Abi bu kafasına göre takılıyor dediğini de yaptım ama yapılabilecek başka bir şey varmı
sırayla sensörleri tak çalışır
C:\Users\Casper\Desktop\sketch_jun01b\sketch_jun01b.ino:1:24: fatal error: QTRSensors.h: No such file or directory
#include
^
compilation terminated.
exit status 1
Error compiling for board Arduino/Genuino Uno.
KARDES BU HATAYI VERIYO NAPCAM…….
Qtr8rc kütüphanesini kurdumu
rica etsem l298p ile yapılmıs kodunu paylaşırmısınız.Tessekürler.
ıyı gunler. l298n sürücü devresi üzerindeki vs , vss, currentsensingA ve currentsensingB pinleri hangileri oluyor acaba ? yardımcı olurmusunuz.
Sezgin bey;
QTR 8rc yerine QTR 8a kullandık. 8a analog olduğu için koddaki QTRSensorsRC yerine QTRSensorsanalog yazdık. başka bir değişiklik yapmamıza gerek var mı aceba?. birse Motor sürücü olarak l298N kullandık. 6V pili tam olarak bu motor sürücüye nasıl bağlayacağız? sürücü üzerindeki 12v girişini nereye bağlayacağız? tesekkürler.
merabalar devreyi kurdum beyaz zemin üzerinde siyah çizgiyi takip ediyor ama aynı zamanda siyah zemin üzerinde de beyaz çizgiyi takip ettirmem lazım ne yapmam gerekiyor yardımcı olurmusunuz
bana yardımcı olurmusunuz
Abi merhabalar abi araç kipini ayarladım ardinio yu araca nasıl monte edicem yardımcı olursan sevinirm araca tekerlek motor ve pili taktım motorlar çalışıyor çipleri nasıl yerleştircez bi yardımcı olursan sevinirim
abi senin burada kastettiğin motor sürücü shield mı
ben normal L293D almıştım yanlış oldu galiba
merhaba verdiğiniz bilgileri kullanarak yaptım ve motorlarım dönmüyor sebebi ne olabilir
merhaba selman, öncelikle devreyi yeniden kontrol et. yine de dönmüyor ise koddaki şu değerleri biraz arttır.
#define M1_minumum_hiz 120
#define M2_minumum_hiz 120
#define M1_maksimum_hiz 210
#define M2_maksimum_hiz 210
maks hızı 255 min hızı da 180 civarı yapabilirsin. Normalde koddaki değerler yeterli fakat gerilim ve akım değeri düşük pil kullandıysan dönmemesi normaldir.
teşekkür ederim deniyeceğim
motorlarım çalıştı fakat sensör falan bişey görmüyor motorlar sensöre göre tepkide vermiyor ne yapabilirim
Şu kod neden çalısmıyor bilgi verirmisiniz ?
#include
#include
#define NUM_SENSORS 3
#define TIMEOUT 2500
#define EMITTER_PIN QTR_NO_EMITTER_PIN
AF_DCMotor motor1(1, MOTOR12_64KHZ);
int DonmeHizi = 250;
QTRSensorsRC qtrrc((unsigned char[]) {2, 4, 7}, 3);
unsigned int sensorValues[NUM_SENSORS];
void setup()
{
motor1.setSpeed(250);
delay(500);
pinMode(13, OUTPUT);
digitalWrite(13, HIGH);
for (int i = 0; i < 400; i++)
{
qtrrc.calibrate();
}
digitalWrite(13, LOW);
Serial.begin(9600);
for (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print(qtrrc.calibratedMinimumOn[i]);
Serial.print(' ');
}
Serial.println();
for (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print(qtrrc.calibratedMaximumOn[i]);
Serial.print(' ');
}
Serial.println();
Serial.println();
delay(1000);
}
void loop()
{
unsigned int position = qtrrc.readLine(sensorValues);
for (unsigned char i = 0; i 250)
{
motor1.run(FORWARD);
}
else if (sensorValues[1] < 250){
motor1.run(RELEASE);
}
}
Serial.println(position);
delay(250);
}
ustam biz ayrı bir program yazdık robot çalıştı yalnız ustam yarıştırcağımız pistte kısa yollar var o kısa yola girmesi için programda napmak lazım
Tolga kardeşim sen 8 rc ilemi yazdın ?
qtr 3 rc ile bu projeyi yapmak istesek ne degişiklik yapmalıyız ?
Aşağıdaki gibi değişiklik yapınız.
#define MIDDLE_SENSOR 3 değerini 2 yapın
#define NUM_SENSORS 5 değerini 3 yapınız.
Ayrıca pin tanımlamasında 5 pin tanımını 3 pine indirin.
Malesef Çalısmadı program derledi ama calısmıyor :/
Sezgin BEY BUNU QTR-3RC kullanarak Motor shıld kullanarak arduıno uno da yapmak istiıyorum yardımcı olabilirmisiniz ?
#include
#include
AF_DCMotor motor1(1, MOTOR12_8KHZ );
AF_DCMotor motor2(3, MOTOR12_8KHZ );
#define KP .2
#define KD 5
#define M1_minumum_hiz 120
#define M3_minumum_hiz 120
#define M1_maksimum_hiz 210
#define M3_maksimum_hiz 210
#define MIDDLE_SENSOR 2
#define NUM_SENSORS 3
#define TIMEOUT 2500
#define EMITTER_PIN 2
#define DEBUG 0
QTRSensorsRC qtrrc((unsigned char[]) { 4,5,6} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
unsigned int sensorValues[NUM_SENSORS];
void setup()
{
delay(1500);
manual_calibration();
set_motors(0,0);
}
int lastError = 0;
int last_proportional = 0;
int integral = 0;
void loop()
{
unsigned int sensors[3];
int position = qtrrc.readLine(sensors);
int error = position – 2000;
int motorSpeed = KP * error + KD * (error – lastError);
lastError = error;
int leftMotorSpeed = M1_minumum_hiz + motorSpeed;
int rightMotorSpeed = M3_minumum_hiz – motorSpeed;
// set motor speeds using the two motor speed variables above
set_motors(leftMotorSpeed, rightMotorSpeed);
}
void set_motors(int motor1speed, int motor2speed)
{
if (motor1speed > M1_maksimum_hiz ) motor1speed = M1_maksimum_hiz; //MAKSİMUM MOTOR 1 HIZ LİMİTİ
if (motor2speed > M3_maksimum_hiz ) motor2speed = M3_maksimum_hiz; // MAKSİMUM MOTOR 2 HIZ LİMİTİ
if (motor1speed < 0) motor1speed = 0; // MİNIMUMMOTOER 1 HIZ LİMİTİ
if (motor2speed < 0) motor2speed = 0; // MİNİMUM MOTOR 2 HIZ LİMİTİ
motor1.setSpeed(motor1speed); //1.MOTOR HIZI
motor2.setSpeed(motor2speed);// 2.MOTOR HIZI
motor1.run(FORWARD); //İLERİ
motor2.run(FORWARD); //İLERİ
}
void manual_calibration() {
int i;
for (i = 0; i < 250; i++)
{
qtrrc.calibrate(QTR_EMITTERS_ON);
delay(20);
}
if (DEBUG) {
Serial.begin(9600);
for (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print(qtrrc.calibratedMinimumOn[i]);
Serial.print(' ');
}
Serial.println();
for (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print(qtrrc.calibratedMaximumOn[i]);
Serial.print(' ');
}
Serial.println();
Serial.println();
}
}
Calısmalımı ? bu program bakarmısın
çalışır
Çalışmıyor ama baska ne sebep olabilir sizce ?
Hocam merhabalar ben l298n ile olanı yaptım motorlar gecıkmeli baslıyor sensörlerden herhangi veri gelmiyor 19 18 17 16 15 ben sensor arduino bağlantılarını sensorun 1.pini arduino a1 2.pin a2 şeklinde A5 e kadar bağladım herhangi bir problem var mıdır? bağlantıda yardımcı olursanız cok memnun olurum maılde atmıstım sıze konu ile alakalı
Robotu çizgi üzerine koyduğunuzda çizginin solundan sağına olacak şekilde sensörleri sırasıyla a5 den a1 e kadar takınız. Yani en soldaki sensör a5 ve en sağdaki de a1 e takılı olacak. 8 tane sensörün 5 ini kullanırken arada sensör atlamadan takınız.
Arduino:1.6.11 (Windows 10), Kart:”Arduino/Genuino Uno”
C:\Users\doguk\Documents\Arduino\_izgi_izlyn_rbt_robimek\_izgi_izlyn_rbt_robimek.ino:4:24: fatal error: QTRSensors.h: No such file or directory
#include
^
compilation terminated.
exit status 1
Error compiling for board Arduino/Genuino Uno.
This report would have more information with
“Show verbose output during compilation”
option enabled in File -> Preferences.
Abi bu hatayı alıyorum yardım edermisiniz
sensör olarak qtr 8rc yerine qtr 8a kullanınca neleri değiştirmeliyiz
gerçekten
Arduino:1.8.0 (Windows 10), Kart:”Arduino/Genuino Uno”
C:\Users\MERT BASKIN\Documents\Arduino\mennan\mennan.ino:4:24: fatal error: QTRSensors.h: No such file or directory
#include Preferences.
böyle hata veriyor kodda niye oluyor sizin kodunuzu kopyaladım
Mrb brn hazir 5 li monte edilmis sensot aldim.ama bunda ledon cikisi yok.5 sensor cikisi, NEAR ve CLP seklinde cikislar var.sizin kodlarinizda ve semanizda emitter digital pin2 ye baglanmis.bunu elimdeki 5li sensorle bunu nasil yapabilirim sizin kodlarinizi degistirmeden.?tesekkurler
merhaba. hersey icin. tesekkurler. sizin.sayenizde. cok seyler. ögrendim.sagolun.
allaha.emanet olun
A büyük yazılır
ne kadar zekisin öyle sen
Abi senörün bacakları 8 tane arduino ya hangi pinleri bağlayacağım bide senörün güç bağlantıları nasıl bağlayacağım
CNY70 Kızılötesi Sensör ü kullanarak yapmak istesem nasıl yapabilirim bu konuda yardımcı olabilir misiniz ?
Hocam birde bi sorum daha var.ben sadece in1 ile in3 e pwm verdiğimde hızlandırıp yavaşlatabiliyorum .bu yanlış bir yöntem mi acaba.doğrusu sizin yazdığınız şekilde mi
sezgin hocam kolay gelsin.Bu 2000 değeri sensör tam ortadayken position diye yazdırılan değer mi acaba.bu bende 2500 ile 5000 arasında değişiyor sanırım ne yapmalıyım
tamam dediğiniz gibi yapıyorum ama olmuyor işte.. bi türlü çözemedim problemi..
hız değerleri maksimum 255 olmalı ve minimum ile maksimum hız değeri arasında biraz fark bırakmalısınız. örneğin maksimum hız değeri 220 iken minimum hız değeri 180 olsun.
Ayrıca motor sürücüyü besleyen pil uygun volt ve akımda olmalı projede kullandığım pil 6v 700 mah di. tabi sizdeki motorlara uygun besleme yapın. 9v pil kömür ile beslemeyin akımı düşüktür karşılamaz.
yardım edin de bu gece bitirelim şu işi ..mübarek gece..:D
200 e kadar çıkardım hız değerini ama malesef yukarda dediğim gibi int error = position – 2000; deki 2000 i 200 e dusurunce iki tekerde çalışıyo ama çizgiyi izlemiyo..
error kısmını değiştirme sadece hız değerini arttır
hız değerini 600 lere çıkarınca iki tekerde dönüuor ama çizgiyi takip etmiyor..
günlerdir bu proje ile uğraşıyorum en sonunda sensör bozuk olabilir diye yeni bir sessör aldım.. taktım çalıştı ama bir süre sonra o da çalışmaz oldu.. yeni bir sensör daha aldım ama çalışmadı.. motor sürücü kartını.. arduinoyu fln hep değiştirdim ama olmadı.. tek teker dönüyor sadece.. ayrı ayrı pille besliyom.. farklı konumlarda deniyom sensörü fln ama olmuyo bitürlü..
tek motorun çalışmama durumu iki nedenden kaynaklıdır. birincisi yeterli enerji olmadığıdır. ikincisi ise kodda minimum hız değeri düşük yani pwm çıkışında motoru hareket ettirmek için yeterli olmayabilir. tabi bu da enerjiyle alakalı. ama minimum değeri arttırırsan motor hareket edecektir. yalnız maksimum değeri de orantılı olarak arttırman gerekir. çünkü keskin dönüşlerde yoldan çıkma ihtimali yükselir.
motor sürücü kartındaki m1 m2 m3 m4 ten aynı anda ikitanesi çalışmıyor.. sadece bir tanesi çalışıyor.. o çalışan blüme hangi tekeri takarsam sadece o çalışmış oluyor..
minimum hız değerini arttırın. ve uygun enerji ile besleyin.
son durum şöyle
int error = position – 2000;
burdaki 2000 i 200 yapınca iki tekerde çalışıyor ancak çizgiyi takip etmiyor..
sanırım kp kd değerleri ile oynanacak.. ne yapabilirim..
hem arduinoya hem de motor sürücüye 9v duracel takıyorum.. sms tek teker çalışıyo yukarda dediğim gibi koddaki 2000 i 200 ye dusurunce iki teker de çalışıyo ama çizgiyi takip etmiyor..
kodda minimum hız değerini arttırın
Merhabalar sezgin kardeşim.Yapmış oldugun bu robotta sensör QTSEnsör değilde normal çizgi izleyen sensör olsa bu koda nasıl uyarlarız onu. bu gün içinde dönersen sevinirim
iyi günler.
ben bu projeyi yapmaya çalışıyorum elimde malzemeler var ve projeyi breadboard üzerinde yapıyorum ve L293D entegre olarak var . bağlantıları yapmakta başarısız oldum, kızılötesi sensörün bağlantısını nasıl yapmamız gerekiyor elinizde bir bağlantı şeması yada bilgi alabileceğim başka bir proje varmı kızıl ötesi sensörün bağlantısına bakabileceğim.Yardımcı olabilirseniz çok müteşekkir olurum.
Şimdiden teşekkürler.
sezgin hocam merhaba.
qtr8rc ile çizgi izleyen robot yapıyorum. sensör çizgiyi algılamıyor.lehimlerini kendim yaptım..aynı projeyi arkadaşlarım yapıyor.Aynı kodla bütün elemanlar aynı onların robotu çizgiyi takip ediyor.arkadaşların sensörünü benim robota bağlıyorum benimkide çalışıyor.kendi sensörümü deneme kodlarıyla deniyorum sensörde sıkıntı yok gibi duruyor.Sebebini anlayamadım.yardımcı olurmusunuz.
arduino uno R3 L293B motor sürücü QTR 3RC sensör kartı kullanarak yaptım fakat sensör yeterlimi ucuz diye aldım yeterli ise kodunu nasıl yazabilirim acil bi proje yardımcı olursanız çok iyi olur zaman sıkıntısı var
kodda sensör sayısını 3 e indirmelisiniz. ayrıca orta sensor tanımını da 2. sensör yani 2 yapmalısınız. sensör iş görür fakat robot hızlı giderse çizgiden çıkma olasılığı 5 sensörlü robota göre yüksek olur.
sorun var hocam kodlarda 19 18 pinleri var mega herhalde resimde uno anolog pinlere bağlanmıs
Robot 90 derece ve beyaz ksımda çalışmıyor bunun için napmalıyız ??
öncelikle çok teşekkür ederim hocam eline sağlık çok güzel olmuş bu makalen.Benım bi sorum olcaktı hocam. Robotu sorunsuz olarak çalıştırdım beyaz zemin ve siyah çizgide ama benım istediğim tam tersi yani siyaz zemin beyaz cizgide gitmesini istiyorum . Fazla bilgim olmadığı için yapamadım yardımcı olursan çok sevinirim hocam,
Allah Razı olsun iyi çalışmalar…
murat hocam bı yardımcı olursanız cok tesekkur ederim
merhaba com5 erişim engellendi sorunu alıyorum
selam arkadaşlar ban bi konu hakındas bilgi verebilir misiniz
Hocam kolay gelsin ben bu projede siyah yerine beyaz çizgiyi takip ettirmek için ne yapmam gerekiyor ? programın neresinde bir değişiklik yapmam gerekiyor.
Cevabı bulabildiniz mi?
robotun motorları çalışıyor ama sensörçalışmıyor QTR-8A
Merhaba. Qtr 8A kullandım ledon pinini nereye bağlamalıyım shield üstünde
LEDon pini digital 2 pinine bağla
merhaba shield kodunu yükledim ancak sadece tek motor dönüyor …
hız değerlerini arttır ya da voltajı arttır.
merhaba
L293d ve QTR-8A bağlantısını yaptım ışık yanıyor ancak motor dönmüyor.. Yukarıdaki shield için kodu mu yoksa L298n İÇİN KODU MU YÜKLEMELİYİM …teşekürler
yazılımı hatasız yükledim ama sadece ışıklar yanıyor motorlar dönmüyor
motorlar için yeterli enerji vermediğinizden kaynaklıdır.
L298 ile yaptım projeyi.
Kolay gelsin sezgin bey. ben QTR-8A ile yaptım kodlarda da sadece QTRSensorsRC qtrrc((unsigned char[]) { 14,15,16,17,18} yaptım ve sorunsuz şekilde çalıştı yani kodda qtra yapmadan çalıştı. Siyah zemin üzeri beyaz çizgide kod değişikliği yapmadan çalışır mı ? böyle bi ortam hazırlayamadım şu anda deneyemedim. kod değişikliği varsa nasıl olması gerekiyor yazabilirmisiniz? şimdiden teşekkür ederi. iyi çalışmalar.
siyah zemin için kodu düzenlemeniz gerekiyor.
çok zamanınızı almazsa yazabilirmisiniz ? kod bilgim yetmiyor şu anda bunu yapmaya.
Bütün Projelerunu İnceledik Kendimizce Yapmaya Çalıştık Helal Osun İşinde Süpersin Dostum
😀 😀 😀
Merhaba Sezgin Bey, dediğiniz gibi tb6612fng motor sürücünün datasheetine baktım ancak sizin verdiğiniz kodda 9.10.11.12 pinleri motora bağlı bu datasheette ise sürücünün AIN1,STYB,BIN1.BIN2 bu kısımlara bağlı olarak gösteriyor. O kısımlara sürücü bağlandığında motorlar çalışmıyor ancak direkt olarak motorlar bağlandığında motorlar çalışıyor. Bu durumu nasıl çözebilirim?
mrblar sezgin bey acaba projenin arduino uno ile yapılmıs baglantı seması varmı atabilirmisiniz ??
İyi günler Sezin Bey, çizgi izleyen robotumda tb6612fng motor sürücü kullanıyorum ancak arduino uno ma bağlantısını yapmakta çok zorlandım yardımcı olur musunuz?
sürücünün datasheetine bakarak bağlantıları yapabilirsiniz.
qr sensorden 8-7-6-5-4 numaralara takınca iki teker de çalışıyor ancak çizgiyi takip etmiyor..
ne yapabilirim.. 1den 5 e kadar takınca sadece tek teker çalışıyor..
sensörleri sırası ile doğru şekilde takmalısınız. Bir de emitter pini yani ledon pinini de arduinoda 2. dijital pine takın.
Sezgin bey merhaba ;
Biz engel algılayan ve çizgi izleyen robot yapıyoruz. Kodları ayrı ayrı yazdık. Fakat birleştirme ve çalıştırma kısmında sorun yaşıyoruz. Kesme gönderip birini aktif birini pasif etme durumlarından bahsediyorum.Yazdığımız kodu size mail üzerinden göndersek ilgilenme durumunuz olur mu ?
şimdiden teşekkürler ..
gönderdim görseli mailinize..
sezgin bey videodaki gibi.. qtr sensorun vvc ve gnd lerinden çıkan mavi ve yeşil renkli kabloları motor sürücünün üzerindeki gnd ve 5v larına bağladım.. sensorun 1 den beşe kadar olan çıkışları motor sürücü üzerindeki a1-a5 e kadar bağladım.. ancak sensorden çıkıp arduinoya bağlanan beyaz bir kablo var.. o nereye bağlanıyor..ne işe yarıyor bilemedim..
videodaki beyaz kablo sensörün ledon pininden arduinonun 2.dijital pinine bağlantı kablosudur. Yani ledon pini kodda da emitter olarak geçer kesme işlemi yapar.
O SEKİLDE BAĞLADIM AMA HALA RANDUMANLI ÇALIŞMIYOR..BAZEN İKİ TEKERDE ÇALIŞIYO BAZEN BİRİSİ ÇALIŞIYO..
maksimum ve minimum hız değerlerini değiştir. sensörü de doğru konumlandır çizgiyi okuması için.
bi mail adresi verebilir misin.. fotoğrafını atsam sana..
hız değerlerini değiştirmek işe yaramadı..
maker.robimek@gmail.com
olmadı arkadaş bitürlü yaa.. birisi QTR-8RC ile AFmotor sheldin bağlantısını resimli olarak gösterebilir mi.. msuheyb@hotmail.com adresine mail atsanız da olur..
merhaba sezgin hocam Konya kadınhanı’nda bir lisede öğretmenim. tubitak 4006 bilim fuarı için sizin yardımınıza ihtiyacımız var. iletişime geçebilir misiniz?
email. emrah00015@gmail.com
mail gönderdim.
Merhaba Sezgin hocam;
Kullandığım malzemler: Arduino uno, yaptığım 5 adet CNY70 sensor kartı ve yaptığım L293B motor kartı.
Bağlantıları L298N deki gibi yaptım. Öncelikle sensör değerlerini test ettim. çizgiye göre sensör degerleri okunuyor. ancak L298Ndeki kodları yuklediğimde motorlar dengesiz dönüyor.
Yardımcı olursan sevinrim. Teşekkürler…
PID ile mi yaptınız
#include
#define SolMotorileri 13
#define SolMotorGeri 8
#define SagMotorileri 12
#define SagMotorGeri 9
#define ena 3
#define enb 11
#define KP .2
#define KD 5
#define M1_minumum_hiz 150
#define M2_minumum_hiz 150
#define M1_maksimum_hiz 255
#define M2_maksimum_hiz 255
#define MIDDLE_SENSOR 3
#define NUM_SENSORS 5
#define TIMEOUT 2500
#define EMITTER_PIN 2
#define DEBUG 0
int lastError = 0;
int last_proportional = 0;
int integral = 0;
QTRSensorsAnalog qtra((unsigned char[]) { A4, A3, A2, A1, A0} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
unsigned int sensorValues[NUM_SENSORS];
void setup() {
pinMode(SolMotorileri,OUTPUT);
pinMode(SolMotorGeri,OUTPUT);
pinMode(SagMotorileri,OUTPUT);
pinMode(SagMotorGeri,OUTPUT);
pinMode(ena,OUTPUT);
pinMode(enb,OUTPUT);
delay(1500);
manual_calibration();
set_motors(0,0);
}
void loop() {
unsigned int sensors[5];
int position = qtra.readLine(sensors);
int error = position – 2000;
int motorSpeed = KP * error + KD * (error – lastError);
lastError = error;
int leftMotorSpeed = M1_minumum_hiz + motorSpeed;
int rightMotorSpeed = M2_minumum_hiz – motorSpeed;
set_motors(leftMotorSpeed, rightMotorSpeed);
}
void set_motors(int motor1speed, int motor2speed)
{
if (motor1speed > M1_maksimum_hiz ) motor1speed = M1_maksimum_hiz; //MAKSİMUM MOTOR 1 HIZ LİMİTİ
if (motor2speed > M2_maksimum_hiz ) motor2speed = M2_maksimum_hiz; // MAKSİMUM MOTOR 2 HIZ LİMİTİ
if (motor1speed < 0) motor1speed = 0; // MİNIMUMMOTOER 1 HIZ LİMİTİ
if (motor2speed < 0) motor2speed = 0; // MİNİMUM MOTOR 2 HIZ LİMİTİ
analogWrite(ena,motor1speed);
analogWrite(enb,motor2speed);
digitalWrite(SolMotorileri,HIGH);
digitalWrite(SagMotorileri,HIGH);
digitalWrite(SolMotorGeri,LOW);
digitalWrite(SagMotorGeri,LOW);
}
void manual_calibration() {
int i;
for (i = 0; i < 250; i++)
{
qtra.calibrate(QTR_EMITTERS_ON);
delay(20);
}
if (DEBUG) {
Serial.begin(9600);
for (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print(qtra.calibratedMinimumOn[i]);
Serial.print(' ');
}
Serial.println();
for (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print(qtra.calibratedMaximumOn[i]);
Serial.print(' ');
}
Serial.println();
Serial.println();
}
}
PID sabitleriyle alakalı olma ihtimali nedir ? Sanırım donanımımda sorun yok. Siz analoğa göre bu kodları çevirebilirmisiniz. Sanırım biryeri atlıyorum.
Bağladım fakat gene olmuyor bu sefer kendi etrafında dönüyor. Lütfen Yardım edebilirmisiniz ? Şuan herşey aynı ve analoğa göre ama sorunu bilemiyorum 2000 rpm motor kullanıyorum.
#include
#define SolMotorileri 9
#define SolMotorGeri 12
#define SagMotorileri 8
#define SagMotorGeri 13
#define ena 3
#define enb 11
#define KP .2
#define KD 5
#define M1_minumum_hiz 120
#define M2_minumum_hiz 120
#define M1_maksimum_hiz 210
#define M2_maksimum_hiz 210
#define MIDDLE_SENSOR 3
#define NUM_SENSORS 5
#define TIMEOUT 2500
#define EMITTER_PIN 2
#define DEBUG 0
int lastError = 0;
int last_proportional = 0;
int integral = 0;
QTRSensorsAnalog qtra((unsigned char[]) { 19,18,17,16,15} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
unsigned int sensorValues[NUM_SENSORS];
void setup() {
pinMode(SolMotorileri,OUTPUT);
pinMode(SolMotorGeri,OUTPUT);
pinMode(SagMotorileri,OUTPUT);
pinMode(SagMotorGeri,OUTPUT);
pinMode(ena,OUTPUT);
pinMode(enb,OUTPUT);
delay(1500);
manual_calibration();
set_motors(0,0);
}
void loop() {
unsigned int sensors[5];
int position = qtra.readLine(sensors);
int error = position – 2000;
int motorSpeed = KP * error + KD * (error – lastError);
lastError = error;
int leftMotorSpeed = M1_minumum_hiz + motorSpeed;
int rightMotorSpeed = M2_minumum_hiz – motorSpeed;
set_motors(leftMotorSpeed, rightMotorSpeed);
}
void set_motors(int motor1speed, int motor2speed)
{
if (motor1speed > M1_maksimum_hiz ) motor1speed = M1_maksimum_hiz; //MAKSİMUM MOTOR 1 HIZ LİMİTİ
if (motor2speed > M2_maksimum_hiz ) motor2speed = M2_maksimum_hiz; // MAKSİMUM MOTOR 2 HIZ LİMİTİ
if (motor1speed < 0) motor1speed = 0; // MİNIMUMMOTOER 1 HIZ LİMİTİ
if (motor2speed < 0) motor2speed = 0; // MİNİMUM MOTOR 2 HIZ LİMİTİ
analogWrite(ena,motor1speed);
analogWrite(enb,motor2speed);
digitalWrite(SolMotorileri,HIGH);
digitalWrite(SagMotorileri,HIGH);
digitalWrite(SolMotorGeri,LOW);
digitalWrite(SagMotorGeri,LOW);
}
void manual_calibration() {
int i;
for (i = 0; i < 250; i++)
{
qtra.calibrate(QTR_EMITTERS_ON);
delay(20);
}
if (DEBUG) {
Serial.begin(9600);
for (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print(qtra.calibratedMinimumOn[i]);
Serial.print(' ');
}
Serial.println();
for (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print(qtra.calibratedMaximumOn[i]);
Serial.print(' ');
}
Serial.println();
Serial.println();
}
}
bunlarla deniyorum fakat olmuyo
Bu arada ben EMITTER pin bağlamıyorum onunla alakalı olabilirmi ? Bağlamak istemiyorum açıkçası elimde lehimlicek o pin bulunmuyor . Onunla alakalı olabilirmi?
emitter pini bağlamalısın.
küçük harfle olan qtrrc leri qtra yaptım. Ondan kaynaklanabilirmi ?
Kodları o şekilde değiştirdim fakat sorunu hala bulamıyorum.. Değiştirdiğim kodları atıyımmı?
Tekrardan merhaba. Ben analog sensör kullanıyorum ama ne denediysem robotu kıpırdatamıyorum. Sorunun ne olduğunuda çözemedim daha . Dediğim gibi milim oynamadı.
kodda sensör tanımı var QTRSensorsRC diye bu dijital sensör tanımıdır. analog sensör kullanırsan bunun yerine bunu yaz QTRSensorsAnalog
batarya taktım şuan çalıştı ancak.. çizgiyi takip etöiyor..mümkünse QTR-8RC ile aAFmotor sheldin bağlantısını resimli olarak gösterebilir misiniz..
merhaba ne yaparsam yapayım sadece motor 2 çalışıyo..
farklı piller ve güç adaptorleri kullndım yine aynı ne olabilir sorun..
Merhabalar; Çizgi izleyenin hem beyaz zemin siyah çizgi, hemde siyah zemin beyaz çizgide gitmesini istiyorum cny70 kullanıyorum. Nasıl bir program algoritması oluşturmam lazım. yardımcı olursanız sevinirim.
adc ile yaparsanız daha sağlıklı olur.
Saolasınız Sezgin bey. Teşekkür ederim.
rica ederim.
merhaba. sag olun. tesekkur ederim. size. allah isinizi. rast getirsin.
rica ederim. sizlerin de.
merhaba. sizin dediginiz gibi. yerleri degistirdim. 255 yaptim. olmadi. shel.l293 .2 test etim. bu kodla.
tek motor calisiyor.DC. kod bu
/ Adafruit Motor shield library
// copyright Adafruit Industries LLC, 2009
// this code is public domain, enjoy!
#include
#include
// DC motor on M2
AF_DCMotor motor(2);
// DC hobby servo
Servo servo1;
// Stepper motor on M3+M4 48 steps per revolution
AF_Stepper stepper(48, 2);
void setup() {
Serial.begin(9600); // set up Serial library at 9600 bps
Serial.println(“Motor party!”);
// turn on servo
servo1.attach(9);
// turn on motor #2
motor.setSpeed(200);
motor.run(RELEASE);
}
int i;
// Test the DC motor, stepper and servo ALL AT ONCE!
void loop() {
motor.run(FORWARD);
for (i=0; i<255; i++) {
servo1.write(i);
motor.setSpeed(i);
stepper.step(1, FORWARD, INTERLEAVE);
delay(3);
}
for (i=255; i!=0; i–) {
servo1.write(i-255);
motor.setSpeed(i);
stepper.step(1, BACKWARD, INTERLEAVE);
delay(3);
}
motor.run(BACKWARD);
for (i=0; i<255; i++) {
servo1.write(i);
motor.setSpeed(i);
delay(3);
stepper.step(1, FORWARD, DOUBLE);
}
for (i=255; i!=0; i–) {
servo1.write(i-255);
motor.setSpeed(i);
stepper.step(1, BACKWARD, DOUBLE);
delay(3);
}
}
sizi meskul etim icin kusura bakma. istedigim bu Shiel. motor surucu. hem cizgi izliye. hemde engel robotu. icin kulanmak. isterdim? siz bu. cizgi izliyen. Shiel. motorsuru. kulandiniz. oylemi. video. izledim. motorsuru. bendeki. aynisi? tek istedigim. bu cizgi. izliyen robot. motor.surucu.Shiel. calisin. sizin sayenizde. hersey. icin tesekkurler.
bu kodla test etmeyin bu kodda step motor tabanlı yapılmış. siz normal dc motor kodunu kullanın. çizgi izleyen ile engel robotu birleştirebilirsin. yapman gerek robotun önüne ultrasonik sensör koy ve kodda mesafe ölçüm fonksiyonlarını yazıp belirlediğin mesafenin altında engel algıladığında robotun durdur.
İyi günler Sezgin bey. sizin bilgilerinizi referans alarak çizgi izleyen robot çalışması yapıyorum.Size iki sorum olacak.
1. ln298n sürücünün in1,in2,in3,in4 ve enb pinlerine çıkışı arduinonun pwm pinlerinden mi almamız gerekiyor.
2. qrt 8rc sennsör kullandım projede. ledon pinine enerji verdiğim halde qrt sensörünün üzerindeki ledlerin yandığını göremiyorum. nedeni ne olabilir.Birde yazılımda #define EMITTER_PIN 2 tanımlamıssınız. Bu ledon pinine mi giden çıkız arduinodan.
Çok teşekkür ederim sorulara cevap verdiğiniz için.
iyi günler Ali bey, şöyle cevap vermek gerkirse;
1 . ena ve enb pinlerini pwm pinlerine tanımlamanız gerekir. diğer in pinleri dijital olarak high low şeklinde kontrol edildiğinden pinleri fark etmez.
2. #define EMITTER_PIN 2 tanımı ledon pini için tanımdır. bu tanımla ile dış kesme yapılarak sensörün gereksiz enerji harcaması engellenir. sensör ışıkları aydınlık ortamda fark edilmez. karanlık ortamda kağıt üzerine koyup o zaman görebilirsiniz.
merhaba. tessekur . ederim size kod calisti. sorun kalmadi. sizin sayenizde. calistirdim. allah.sizden razi olsun. cizgi izliyen L298. ve L293. calisiyor. Shell motor .2. adet L293D. Ve 74HC595. entegre var uzerinde. onunla. denedim. calismadi. sizce. ne olur? sizin sayenizde. cok seyler. ögrendim. sagolun.
allah isinizi. rast. getirsin.
rica ederim. shield ile çalışmamasının nedenleri şunlar olabilir. birincisi yanlış motor girişlerine bağlamış olabilirsiniz. M1 ve M2 yazan girişlere bağlayacaksın. İkincisi ise maksimum ve minimum hız değerlerinden kaynaklı motorlara yeterli enerji gitmiyor olabilir bunu da kod kısmındaki
#define M1_minumum_hiz 120
#define M2_minumum_hiz 120
#define M1_maksimum_hiz 210
#define M2_maksimum_hiz 210
bu değerleri değiştirip deneyebilirsin. maksimum hız değerini 255 yapıp dene. çalışmazsa shield bozuktur. Son olarak sadece shield e pil takmışsan yeterli enerji alamıyor. arduino ya da 9v pille jak girişinden enerji ver.
merhaba. son gonderdigin. bu sitedeki . Sezgin GÜL30 Mart 2016hata vermemesi gerekiyor. Kütüphaneleri doğru eklediyseniz eğer kodu siteden kopyalarken eksik kopyalıyor olabilirsiniz. Buradan kod dosyalarını indirin birisi l293d, l298n, l293b için diğeri de afmotor shield için >> http://www.robimek.com/wp-content/uploads/Çizgi-izleyen-robot.rar
kodlar. calisti tesekkurler. bura indirdim. senin dedigin gibi. libraries klasörünün içine atım
kodlar degerlendi. hata vermedi. Shiel motor surucu. DC 2 motor bagladim. motorlar calismadi.
acaba QTR8. anolog sensor bende aynisi var. bunu soracaktim. sizden. tesekkurler. allaha emanet olun
merhaba. kusura bakma. inanki. bu konudan. sizi cok rahatsiz. etim. sizin dedigin gibi. iki lasörude.
libraier icine atim. soyle yaptim. verdigin sitede indirdim. winarda. cikartip. masa. ustune .getirdim.
sonra. iki klasöru. de. Libraries. klasörunun icine atim. ( dogrumu? sizden ricam. bunun kodu.gonderme. mumkunmu? winarla. bir daha deneyim. ben bir .hata .yapiyorum. ama ne .
QTR sensor. Newpin Exeple. Adafruit motor shiel. libre. calisiyor . bu kodlar.
ozaman siz bana kodu. gonderme. imkanin varmi. cunku bir hata yapiyorum. evelde gonderdigin. oyuncak kodlari calistirdim. sizden istedigim. bu cizgi izliyen motor Shiel. calisin. uzerindeki.L293D 2.tane , bide uzerinde.74hc595 var. sizin sayenide. bu .calistirma? allaha emanet olun.
bir istegin olursa. cekilme. hersey. icin tessekkurler
merhaba. hayirli isler dilerim size. gonderdiginiz. dosya.content/uploads/%C3%A7izgi-izleyen-k%C3%BCt%C3%BCphaneleri.rar indirdim. rarda. cikartim masa ustune getirdim. 1.AFMOTOR. 2.QTRsensor.
sunu soracaktim. sizden. 2 dosya. birdemi. Libraries. icine. yapistirmak. ayri ayrimi. olacak?
bunun hakinda. tesekkurler. allaha emanet olun.
iki klasörü de libraries klasörünün içine atın.
#include AFMOTOR Sheild icin arduno. bu kodu. degerleyince. hata. verdi?
#include
AF_DCMotor motor1(1, MOTOR12_8KHZ );
AF_DCMotor motor2(2, MOTOR12_8KHZ );
#define KP .2
#define KD 5
#define M1_minumum_hiz 120
#define M2_minumum_hiz 120
#define M1_maksimum_hiz 210
#define M2_maksimum_hiz 210
#define MIDDLE_SENSOR 3
#define NUM_SENSORS 5
#define TIMEOUT 2500
#define EMITTER_PIN 2
#define DEBUG 0
merhaba. bu sizin yazdiginiz. cizgi izliyen robot. motorsurucu. Sheld uzeinde.L283D. 2 adet var.
sizin gonderdiginiz. linkte. rar. cizgi izliyen. onunu indirdim. rar. cikartinca. 1.AFmotor.2 QTR.var.
bu ikisinidemi. libera. oldugu. yere. yaptim. 2 sini. birden. libeare. oldugu. yapistirdim. dogrumu.
sizin gondeerdigin. cizgi rarda. 2 kodu. liberare. icine yukledim. acaba. ondami. hata verdi?
senin sitede yazdigin kodu. arduino. degerledim. hata verdi?sizden ricam. cigi.izliyen robotunuzu.AFMOTOR. shiel. motor surucu calisin. L293D. arduino beraber calisin. cizgi izliyen. kod bumu? hersey icin tesekkurler. ederim. size allaha emanet olun. hata. bende oluyor. sizin sayenizde. duzeltmek. tesekkurler.
hata vermemesi gerekiyor. Kütüphaneleri doğru eklediyseniz eğer kodu siteden kopyalarken eksik kopyalıyor olabilirsiniz. Buradan kod dosyalarını indirin birisi l293d, l298n, l293b için diğeri de afmotor shield için >> http://www.robimek.com/wp-content/uploads/Çizgi-izleyen-robot.rar
merhaba. mumkunmu. sizin sayenizde. bu robotunuzu. yapmak. isterdim.
Arduino ile Çizgi izleyen Robot Yapımı. bende . motorsurucu. Sheld. L293D. var. 2 adet.
sitede. verdiginizlinkte. AFmotor. winarla. indirdim. sonra. winardan. cikartip. liberael. arduino. oldugu. yere.yapistirdim.degerleyince. hata verdi. bunun hakinda. cevap verirseniz. cok tessekur. ederim. size.
sizin sayenizde. yapmak. tercube sahibi. olmak. tessekurler. allaha. emanet olun.
merhaba, muhtemelen qtr sensör kütüphanesi eklemediğiniz için hata almışsınız. Buradan bu proje için gerekli kütüphaneleri indirebilirsiniz. >> http://www.robimek.com/wp-content/uploads/%C3%A7izgi-izleyen-k%C3%BCt%C3%BCphaneleri.rar
bi de analog pinlere bağladım bu şekilde QTRSensorsAnalog qtra((unsigned char[]) {0, 1, 2, 3, 4} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
Merhaba hocam ,
çizgi sensörleri 5 adet ncy70 sensörleri kullanarak yaptım . Ayrıca motor sürücüsü l293d kullandım. L298N için yazılan kodu kullansam sorun olur mu ve ne yapmam gerekıyor ?
ADC ile kontrol etmen daha iyi olur. CNY70 lerde ölçümler adc ile daha başarılıdır.
Analog kullanımı daha verim olur diye duymuştum. Dijital olarak mi daha uygun mu ? Teşekkürler
Analog daha iyi. Adc ile kontrolde de analog okuduğun değeri dijitale çeviriyor.
sağ ve sol tekerler dengesiz olarak dönüyor veya dönmüyor neyden kaynaklı olabilir
minimum ve maksimum hız değerlerini değiştir. minimum hızı arttır.
değişen birşey olmadı dostum. türev ile ilgil bir sorun olabilirmi
Hayır, sizin sorununuz donanımdan kaynaklıdır. Yazılımsal sorun yok gayet iyi çalışıyor. Sensörlerin çalıştığından ve çizgiyi tam görebilecekleri konumda olduklarını kontrol edin. Ayrıca LedOn yazan pini de 2. dijital pine takın sensörlerin ledlerine kesme yapacaktır.
Sensorler calisiyor 0 ve 5 v cikis veriyor hersey normal fakat motorlar stabil degil. Değerlerden kaynakli birsey olabilir
PID değerleri uygun. Gerilim yetersiz veya sensörlerin geç algılamasından kaynaklanabilir.
abi ben bu kodu 2 sensör için kullanabilirmiyim ? kullanabilirsem kod nasıl olur?
iki sensör kullanmak mantıklı olmaz çünkü pid konum olarak orta sensöre göre ayarlama yapıyor. iki sensörden birini orta sensör olarak göstermen lazım ki bu da merkez olmayacağından minimum 3 sensör ile yapman sağlıklı olur. 3 sensör için;
Orta sensör tanımlamasındaki >> #define MIDDLE_SENSOR 3 >>bu şekilde değiştir >> #define MIDDLE_SENSOR 2
Sensör sayısı tanımlamasındaki >> #define NUM_SENSORS 5 >> bu şekilde değiştir >> #define NUM_SENSORS 3
Sensör tanımında pin numaraları 3 pin kullandığın için 3 tane pin yazman gerekir >> QTRSensorsRC qtrrc((unsigned char[]) { 19,18,17,16,15} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
Örnek 3 pin için tanım >> QTRSensorsRC qtrrc((unsigned char[]) {17,16,15} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
hocam,arduno ya gönderdiğimiz kodları bir sonraki ardunoya bağladığımızda görebiliyormuyuz yoksa içerisinde kodlar var ama kod yükleme arayüzünde gözükmüyormu,pc ye kodları yedeklememizmi gerekiyor.
bir de robotun karşısına engel geldiğinde demek, çizgi algılamıyor demekse sensorValue fonksiyonuna null değer atayıp set_motors fonksiyonu ile dönüş işlemlerinimi yapmamız gerekiyor….c# bilmeme rağmen ilk defa ardunoyla çalışacağımız için tam hakim olamadım kodlara…ilginize teşekkür ederim
Merhaba sezgin bey,
ben ek olarak çizgi rengine göre motorun hız ayarını yapmak istiyorum nasıl yapabilirim bide rgb sensör kullanıcam bunun için
TCS34725 rgb renk sensörü kullanıp, tanımladığınız renge göre hız değeri atayıp robotun hızını renge göre değiştirebilirsiniz. TCS34725 ile renk okuma projemize buradan bakabilirsiniz. http://www.robimek.com/sesli-renk-okuyucu-robot-yapimi/
hocam, arduno ya kodumuzu yazıp gönderdik, ertesi gün değişiklik yapmak için tekrar bağladık. portlarını ayarladıktan sonra arduno içerisinde daha önceki attığımız kodları görebiliyormuyuz, yoksa kodlar arduno içerisinde olduğu halde pc ortamı göremiyoruzda sürekli her değişikliğimizin pc de yedeğinimi almamız gerekiyor.
Ve birde engeli gördüğünde sağ ve ya sola gitmesi için ardumotor kodlarında setmotor(0,0) ile durdurup mu yapmamız gerekecek.engeli görmesi demek çizginin bitmesi demek değilmidir.(sensorvalues e null ise mantığındamı)
kısaca çizgi bittiğinde sağ veya sol dönmesinimi kontrol edeceğiz..ilginize teşekkür ederim
hocam iyi günler. L298N entegresiyle yazdığınız kod çok işime yaradı.Teşekkür ederim.Bu koda ayrıca hcsr04 mesafe sensörüyle engel algılaması yapmak istiyoruz.Engeli algılayarak etrafından dönerek yoluna devam etmesini istiyoruz.Nasıl yapabiliriz bize yardımcı olurmusunuz.
Çizgiyi takip ederken engel gördüğünde çizgi fonksiyonunu devre dışı bırakıp, yön komutlarıyla dönmesini sağlayın. Dönüş tamamlandığında tekrar çizgi fonksiyonunu aktif edin.
Mesafe sensörünün kodunu yazdık.Bu kodu çizgi izleyen koduyla birleştirmek istiyoruz.Çizgi fonksiyonunu nasıl devre dışı bırakacağız.
kesme tanımla engel gördüğünde çizgi izleme durur ve kesme fonksiyonundaki algoritma çalışır
iyi günler ben sürekli bu hataları alıyorum lütfen yardım eder misin ?
sketch_mar15a:19: error: ‘QTRSensorsRC’ does not name a type
sketch_mar15a:19: error: expected unqualified-id before ‘,’ token
sketch_mar15a:19: error: expected unqualified-id before numeric constant
sketch_mar15a.ino: In function ‘void loop()’:
sketch_mar15a:37: error: ‘qtrrc’ was not declared in this scope
sketch_mar15a.ino: In function ‘void manual_calibration()’:
sketch_mar15a:67: error: ‘qtrrc’ was not declared in this scope
sketch_mar15a:67: error: ‘QTR_EMITTERS_ON’ was not declared in this scope
sketch_mar15a:75: error: ‘qtrrc’ was not declared in this scope
sketch_mar15a:82: error: ‘qtrrc’ was not declared in this scope
sketch_mar15a:82: error: ‘span’ was not declared in this scope
QTRSensors kütüphanesini eklemediğiniz için hata vermiş.
sildim hala devam ediyo aynı hata
neyi sildiniz ? kütüphaneyi eklediniz mi ? Arduino sürümü güncel değilse eski sürümlerde çalışmayabilir.
QTRSensorsRC ‘ yi digital olarak okuyabilirmiyim?
okuyabilirsin. zaten rc denmesinin nedeni o . dijital olarak çıkış alınmasıdır.
degişiklik yapılcak yerleri bana atar mısın abi degiştirerek
sezgin abi beyaz sensörde motor hız degerlerini degiştirdim ama en sol sensöre göre hareket ediyor ne yapmalıyım iyi gunler
pinlerinin yerini değiştir. ortadaki sensöre göre hareket etmesi lazım
degiştirdim ama yine olmadı
aşağıdaki kısımlarda değişiklik yapman gerekir deneyerek doğru değeri bulmalısın. serial monitörü açıp değerlere bak.
int error = position – 2000;
int motorSpeed = KP * error + KD * (error – lastError);
lastError = error;
int leftMotorSpeed = M1_minumum_hiz + motorSpeed;
int rightMotorSpeed = M2_minumum_hiz – motorSpeed;
iyi günler bu şemayı arduıno nanoya uyarlanabilir mi
tabiki de uyarlayabilirsin .
cny 70 sensörler ile 7414 entegersı sizin kullanıdınız ıle aynı hassasiyette çalışırmı . Bİrde kütüphanelerin son çalışır halinin verebilirmisinz
kütüphaneler : http://www.robimek.com/wp-content/uploads/çizgi-izleyen-kütüphaneleri.rar
çalışabilir ama aynı verimde olmayabilir. cny70 ler en iyiler bu konuda. bir de çizgi izleyenler pid kullanılamdan dc dc dönüştürücü ile sensörlerden gelen verileri dönüştürüp öyle programlanıyor. O şekilde de deneyebilirsiniz.
kızılötesi sensörler analog mu digital mi giriş yapılıyor, birde motor sürücünün Enable pinleri input atanmış, başka bir kaynakta output olarak görmüştüm doğrusu hangisi acaba? yardımlarınız için çok teşekkür ederim.
sensörün türüne göre iki şekilde de giriş yapılabilir. enable pini output olacak yanlışlık olmuş .
QTRSensorAnalog değişkenini tanımlıyorum fakat robotta hareket yok bütün rc leri analoğa göre değiştirdim fakat hareket yok motorlar bile çalışmıyor değerlerle alakalı sorun olabilirmi ben min max değerlerini değiştirdim fakat gene bir hareket yok sanırım sensörü yanlış kullanıyorum bide sensörün vcc bağlantısı 5v a gnd si (enssağ) gnd ye değlmi başka bir bağlantı yapmam gerekmiyor bu ikinci aldığım sensor ilkinde gücü farklı portttan verip 4. sensörden sonrasından bilgi alamamıştım. Sanırım sorun bağlantıda.
sensörü örnek kütüphane koduyla denediniz mi ? Bir de l298n için yazılı kodda enable pinleri input olarak tanımlanmıştı sonradan output olarak değiştirdim.
Sezgin hocam Paylaşımlarınız için ve sorduğumuz her soruya cevap verdiğiniz için teşekkür ederim. Hocam labirent içinde gezip yangın pervane ile yangın söndüren robot projesi var ama bununla ilgili hiç bir sitede devre şeması yada kod görmedim elinizde böyle bir proje varsa arduino ile hazılanmış devresini ve kodlarını paylaşırmısınız?
Şuan bu proje yok fakat kısa zaman içinde eklerim. Bahsettiğiniz proje aslında labirent çözen robota yangın söndürme eklentisi getirilmiş halidir. Labirent çözen de engel algılayan robot olduğundan buna göre araştırma yapabilirsiniz. Yangın söndürme kısmını buradaki projeden yapabilirsiniz. http://www.robimek.com/yangin-sonduren-robot-yapimi-fire-extinguishing-robot/
L298 entegresi kullanıyorum hangi kodları analoğa göre çevirmem gerekiyor ?
projede L298N e göre kod ve devre şeması var. Analog sensör kullandıysan sensör tanımını analog kütüphanesine göre yapmalısın.
Analog sensör satın aldım kafa sallama olayı ile kalibre ediyorum ama sensörlerde sıkıntı olduğunu gösteriyor.
bu kod için dijital olan sensör tanımlı. Analog sensör için tanımlamayı değiştirmelisiniz. Yani QTRSensorsRC olan sensör tanım fonksiyonunu QTRSensorsAnalog olarak değiştirmelisiniz.
QTRSensors yerine cny 70 kullansak onların kalibrasyonunu aynı şekildemi yapacaz? ve
QTRSensorsRC qtrrc((unsigned char[]) { 19,18,17,16,15} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN) bir kütüphane. Burada cny 70 için nasıl bir tanımlama yapmalıyım?
QTR deki sensörler tekil olarak kullanıldıkları için, cny70 sensörünü kullanabilirsiniz. Yazılımı değiştirmenize gerek yok. Kalibrasyon işlemini kod kendisi yapıyor.
sensörlerim 7414 entegresine bağlı oradan çıkış alıyorum
entegre kullandıysanız sorun olmaz . Devre korumasından kastım sensörleri tekil olarak kullanırken uygun voltaj ve akımı sağlamak gerekiyor. Shield ve entegreler kullanımı bu yüzden önemlidir.
Sensör olarak cnc 70 seti kullandım 5 adet bunlarda herhangibir sıkıntı yaratıcı
sensörleri devre koruması yaparak stabil çalışmasını sağlarsanız sorun yaşamassınız.
devre korumasından kastınız ney acaba
ardiuno kütüphanelerinin linklerini verirmsiniz acaba
Kütüphaneler >> http://www.robimek.com/wp-content/uploads/çizgi-izleyen-kütüphaneleri.rar
Bizim bir bitirme projesı odevimiz cizgi izleyen robot devresini farklı uc ayrı renk izleyen devre olarak yapmamiz istendi nasıl bi sensor kullanmamız gerekiyo yardımcı olur musunuz
analog kızılötesi sensörler işini görür. yapman gereken 3 renk için değerleri referans alıp bu yazılımdaki gibi entegre edebilirsin.
Sezgin hocam size bir sorum olacaktı konu hakkında bilginiz varsa sevinirim arduino içindeki programı bilgisayara almam şansım var mı simo robot var bitane ben yapmamıştım ama içindeki kodlerı mereak ettim nasıl görebilirim
malesef arduino daki yüklü olan kod görülemiyor.
Hocam keşke resim olarak bağlantısını da paylaşsan
paylaşacağım.
Motor sürücünün altındaki yeri kazıyıp gücü ayırsam daha iyi verim alırmıyım ?
motor sürücüyü ayrı beslemen lazım. arduinoyu farklı pille besle
iyi çalışmalar kolay gelsin arduino ile bağlantı şeması var mı acaba paylaşabilir misiniz..
bugün paylaşacağım.
imgur.com/40YdiPd burdaki kart
Peojedeki L298n e göre olan kodu kullanacaksın. 3 . pin ena, 11.pin enb 9 ve 12 pinler birinci motor, 8 ve 13. pinler de ikinci motor.
Buna göre koddaki motor pinlerini aşağıdaki gibi yap.
#define SolMotorileri 9
#define SolMotorGeri 12
#define SagMotorileri 8
#define SagMotorGeri 13
#define ena 3
#define enb 11
motor sürücünün vin girişinden beslemesini yapıp çalıştır.
Benim çözemediğim sorun rev3 kart halınde yani pinlerdede PwmA Pwm b gibi şeyler var bunların bağlantısını ena enb yemi yazmalıyım?
evet onlar pwm girişleri yine de siz fotoğraf linkini atın bağlantılarını söyleyeyim.
Bu arada ardu kodlarını kullanmayıp L298 i kullanmalıyız değilmi? O konuda hata olmaz sanırsam.
İstediğin arduino modelini kullan kod değiştirmene gerek yok .
Aşağıdaki tanımlar motor sürücülerin sinyal pin çıkışlarıdır yani arduinonun bağlantı pinleridir.
#define SolMotorileri 9
#define SolMotorGeri 10
#define SagMotorileri 11
#define SagMotorGeri 12
#define ena 4
#define enb 5
Motor sürücünün datasheet ine bakıp sinyal ve motor pin bağlantılarını yaparsın. L298n için datasheet projede verdim.
Yani Rev 3 kullanarak bu kodları kullanabileceğiz fakat REV 3 PWM bulunduruyo (L298P). PWM in bağlantılarını l298 kodunda nereye yazmamız gerekiyor. Biz tam bu noktada takılıyoruz. PWM ile PID beraber çalıştırmaya çalışırken sanırsam biyerde hata yapıyoruz. L298 kodunuzu referans olarak alıyoruz fakat bir sorun çıkıyor. Bu arada REV3 ün beslemesini nasıl yapmamız gerektiği hakkında bir fikriniz varsa çok yardımcı olursunuz. Cevabınız için teşekkürler. Dediğim gibi L298P PWM bulunduruyo ilk kullandığım sürücü kartı olduğu için o kısmını nasıl yöneticeğimi bilemiyorum.
Merhaba sezgin bey bi proje için çizgi izleyen robot kullanıyoruz. Arduino Motor shield REV3 kullanmaktayız. Rev 3 için bu kodların hangi kısımlarında değişiklik yapmalıyız. PID hakkında pek bilgimiz olmadığından nasıl değiştireceğimizi bilemedik. Siz ne önerirsiniz. Yada başka bir motor sürücümü satın almalıyız. Bu arada l298 ile l293 arasındaki fark fiyatta yansımama sebebi nedir. Yani bizim kullandığımızda L298P var Fakat bunu L298N olarak değiştirirsek yani onu satın alırsak sorun düzelebilirmi? PID ile bunu yazmaya pek hakimd değiliz .s . Sevgiler Saygılar.
değişiklik yapmanıza gerek yok 5 sensör için analog pinler yeterli zaten.
l298 ler l293 e göre daha fazla akıma dayanır bundan dolayı da tork ve hız gerektiren durumlarda avantaj sağlar.
tmm abi tesekkur ederim allah razı olsun
birde aşağıdaki hız değerlerini arttır
#define M1_minumum_hiz 120
#define M2_minumum_hiz 120
#define M1_maksimum_hiz 210
#define M2_maksimum_hiz 210
ki hangi satırda abi bulamadım da
burada ki değerini kullanmıyoruz. hesaplamalar diğer iki değer referans alınarak yapılıyor. Yani ki değeri kodda yok.
abi kusura bakma ben daha yeni başladim bu işe kp,ki ve kd ne demek oluyor
ona gore degerleri degiştireyim
kp degeri .2 gibi hep noktaylami başliycak
kp >> oransal kazanç
ki >> integral kazanç
kd >> türevsel kazanç
buradaki kp değeri arttırılırsa cevap verme süresi hızlanır ama çok arttırlıması durumunda kararsız hale geleceğinden diğer iki değerde buna oranla arttırılmalıdır. kp deki 2 nin solundaki nokta aslında 0.2 demektir. yani bu şekilde de yazabilirsin.
allah razı olsun senden abi çalıstı
bunun daha hızlı çizgiyi okuması için ne yapmamız gerek
rpm yüksek motor ve l298n motor sürücü kullanabilirsin. Yukarıda kodu var l298n ile. Yalnız çok hızlı olduğunda çizgiden çıkabilir o yüzden pid deki kp, ki ve kd değerlerini değiştirmen gerekir onu da denem yanılma ile uygun değeri bularak yapabilirsin. İlerleyen günlerde hızlı çizgi izleyen robotu da ekleyeceğim.
sensorleri ne taraftan dizicez
baştan sona sırayla analog 0 dan 6 ya kadar takın robot ters yöne hareket ederse sensörleri analog 6 dan o a doğru sırayla takın.
bu şekilde yap analog 0 dan 6 ya kadar pin tanımladım. arduino mega için kullanabilirsin. eğer uno veya nano kullanacaksan analog 6 pini olmadığı için dijital pinlerden pwm olan herhangi bir pini tanımlayabilirsin. QTRSensorsRC qtrrc((unsigned char[]) {A6,A5,A4,A3,A2,A1,A0} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
Aşağıdaki kısımları da şu şekilde yap.
bu kısmı >> #define NUM_SENSORS 5 >> bu şekilde yap >> #define NUM_SENSORS 7
bu kısmı >> #define MIDDLE_SENSOR 3 >> bu şekilde yap >> #define MIDDLE_SENSOR 4
bu kısmı >> unsigned int sensors[5]; >> bu şekilde yap >> unsigned int sensors[7];
QTRSensorsRC qtrrc((unsigned char[]) { 19,18,17,16,15} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN);
abi bu satiri 7 sensöre ve arduino megaya göre yazabilir misin
tesekkur ederim sezgin abi
bi sıkıntı olursa yine sorabilir miyim
tabiki de sorabilirsin.
programi yukledim 7 sensore göre ama tek motor surekli çalışıyor
çizgiyi okuyamadığından kaynaklıdır.
Merhabalar güzel bir çalışma olmuş ve bunu yapmak istiyorum bunun için bir kaç sorum olacaktı 2 parça ayrı ayrı kodlar var bunları nasıl yükleyeceğim yani ne olarak kayıt edip ne olarak kullanıp hangisini yükleyeceğim diğerine ne olacak daha sonrasında bu robotun daha hızlı olması için neler yapabilirim =)
Kullandığın motor sürücüye göre iki kod yazdım. Bunların biri afmotor shield için diğeri de l298N, l293b, l293d gibi motor sürücüler için kullanınız. Hızını arttırmak için
#define M1_maksimum_hiz 210
#define M2_maksimum_hiz 210
buradaki değerlari arttırın fakat çizgiyi çıkma durumuna göre uygun değeri bulun. Ayrıca kullandığınız motor sürücü ve batarya da hız için önemli husustur.
kusura bakmassanız bişey daha sorcam
ledon pini hangisi
Sensörün üzerinde yazıyor. Arduino da ise 2. dijital pin yani kesme pini.
elimde arduino mega var onada uyarmi bu program
Tabiki de uyar .
iyi gunler bu programla beyaz çizgiyi de izler mi
Program izler fakat hızı yavaş olur yani minimum hız olur. Bu durumda maksimum ve minimum hız değerlerini yer değiştirirseniz sorunsuz olarak çalışacaktır.
Merhaba kp ve kd değerlerini neye göre belirlediğinizi öğrenebilir miyim?
deneme yanılma yoluyla hatasal oranların değerleri eklenerek en stabil çalışma durumundaki değerler yazıldı.
Meraba kolay gelsin ben bu projeyi yaptım ama gövde ve motorları farklı kullandım çok fazla hızlı oldu yolda tutamıyorum ne yapmam gerekiyor
buradaki değerleri değiştirin
#define M1_minumum_hiz 120
#define M2_minumum_hiz 120
#define M1_maksimum_hiz 210
#define M2_maksimum_hiz 210
qtr 8x’in kütüphanesindeki kodların ne işe yaradığını yazabilir misiniz? bazılarını anladım ama bazıları hakkında soru işaretleri var aklımda.
“int i;
for (i = 0; i < 250; i++)
{
qtrrc.calibrate(QTR_EMITTERS_ON);"
yukarıdaki kod ve
"if (DEBUG) {
Serial.begin(9600);
for (int i = 0; i < NUM_SENSORS; i++)
{
Serial.print(qtrrc.calibratedMinimumOn[i]);
Serial.print(' ');"
bu kodlardan bir şey anlamadım.
bu kod kısımları sensörü kalibre etmek için kullanılır. Yani robot ilk çalıştığında kalibrasyon işlemini başlatır. Bu kalibrasyon işleminin amacı beyaz ve siyah çizgilerin değerlerini alarak o değerleri referans kabul edip diğer işlemler de bu değerlere göre hesaplanır. Birinci kod kısmında sensörlere 250 kere kesme uygulanarak kalibre edilir. İkinci kod kısmında ise kullanılan her sensörün o an okuduğu minimum değer alınır.
kodu yüklüyorum ara kablo baglıyken çalışıyor . usb ara kablosunu söküp pilden enerji verdiğimde çalışmıyor.
Afmotor Shield ve arduino uno’ya ayrı ayrı enerji vermelisiniz.
Sezgin Bey Afmotor Shield ve arduino uno’ya ayrı ayrı mı besleme vermemiz gerekiyor
Sezgin bey matlab ile pid hesabı yapmaya değinmişsiniz bunu biraz açar mısınız? Örnek veya kaynak verir misiniz?
matlab kendi sitesinde var. Ayrıca matlab simulink de pid blokları mevcut oradan hazır veya kendi değerlerinizle grafiksel analizler yaptırabilirsiniz ya da simulink ile arduinoyu direk haberleştirebilirsiniz.
Merhaba Sezgin Bey , 2500 rpm motorla robotu kontrol etmeye çalışıyorum da Kp değeri robotun dönüşünün keskinliğini mi ayarlıyor? Kd değeri robotun salınımını mı ayarlıyor?
Birde L 293 N motor sürücüsüne soğutucu takılı değil, biraz ısınma oluyor sıkıntı çıkartır mı?
kp hatasal oranlama kd ise türevsel hatayı verir. kd değeri daha etkilidir. 2500 rpm için referans oranını değiştirmende fayda var ve motor sürücünün ısınma durumu akıma bağlıdır ki anlık zorlanmada çekeceği akım maksimum olacağından bu değere göre soğutucu eklemende fayda vardır.
Efendim iyi günler.Robotumu yaptım sensörler çizgiyi gördükleri zaman iki tekerde oynuyor fakat zemine koyduğum zaman tek teker oynuyor
İyi Günler Selim Bey, Robot dönüşlerde minimum ve maksimum hız değerlerini referans alarak gerekli hızı ayarlayıp döner. diğer tekerleğin oynamama sebebi minimum hız değeri düşük olması ile birlikte kullandığınız pile göre motora yeterli enerji gitmemesidir. yani kodda pwm olarak tanımlı 120 değeri motorunuzu döndürmeye yetmiyor demektir.
#define M1_minumum_hiz 120
#define M2_minumum_hiz 120
bu iki değeri yükseltirseniz motorlar dönecektir. 180 civarı yeterlidir
8 sensörlü kodda sadece 3 tane sensör daha tanımlamamız yeterli olurmu kod da başka bir değişiklik yapmaya gereke varmı?
#define MIDDLE_SENSOR 3
buradaki tanımla orta sensörün numarasını verir. yani 8 tane kullanacaksan 4 veya 5 yapman lazım ama o zamanda sağ ve sol sensör sayısı eşit olmayacaktır. onun için 4 ve 5 nolu sensörleri aynı pine tak. yani 7 sensör gibi düşünerek orta sensör değerini 4 al.
#define NUM_SENSORS 5
buradaki tanımlama da sensör sayısını yazıyorsun. yukarıda 4 ve 5 i aynı pine takacağımız için 7 sensör pinine ihtiyacımız olacaktır. onun için 7 yazıyoruz.
toplamda 8 sensör kullanarak bu şekilde tanımlamalarını ekleyebilirsin. kodun diğer kısımlarını değiştirmene gerek yok. sorun yaşarsan sadece pid hata oranlarını değiştirmen yeterli olur
teşekkürler sezgin bey
peki motor olarak ne önerirsiniz veya kullandıgınız motorun rpm i nedir ?
projedeki 600 rpm kullandım.o civarlarda uygundur
sensor olarak 8rc yerine 8A kullansam sorunla karıslasırmıyım.teknik olarak cok az farkları var diye araştırmıştım.
kullanabilirsin ama kütüphane ve fonksiyonları değiştirmen lazım
C:\Users\umut\AppData\Local\Temp\arduino_e2f20cc6aff72622c5c732b852aace31\sketch_jan21a.ino:4:24: fatal error: QTRSensors.h: No such file or directory
#include
Bende bu hatayı veriyor Sezgin Bey yardımcı olurmusunuz.
QTRSensors kütüphanesini eklemediğin için hata alıyorosun
Teşekürler Sezgin Bey.Kod’da KP ve KD degerlerini neye göre veya hangi hesaplamalara göre değiştireceğiz?
Yoksa deneme yanılma yoluylamı robota uygun degerleri bulmaya çalışacağız?
kp ve kd değerleri motorun hızına göre referans alınır. bu değerlerde sorun yaşamasın. ama deneme ile de değişiklik yaparsın. pid değerini program ile de hesaplayabilirsin. matlab pid bölümüne bakarsan matamatiksel formüller ve algoritmaları bulabilirsin. burada hata payı ve oran hesaplandı ve motora hız olarak entegre edildi.
iyi aksamlar hocam ben bu kodu kullanıyorum fakat dönüş yapmıyor.yardımcı olabilir misiniz
sensör çizgiyi okuyamıyordur. konumunu iyi ayarla
Teşekkürler
Efendim ben direk arduinoya 9v taksam arduino shielde takmasam olur mu ?
enerji yetmez hemen biter pil
Efendim iyi günler peki 4.8 Volt kullansam olur mu ?
Peki kaç volt ile çalıştırmam gerekiyor
6v veya 7.2 v pille motor shield i besle arduinoyu ise farklı bir pille besle
Olabilir çünkü ben şu anda USB fişe dönüştüren adopterle çalıştırıyorum
Başka ne yapabilirim yine olmadı hızları 200 çıkardım
enerji yetmiyor büyük olasılıkla.
evet aynen yazdığım şekilde
motorlar m1 ve m2 girişlerine takılacak
Tamam efendim bende aynı şekilde M1 ve M2 giriş yerlerine taktım sensörde elimi sağ tarafa gösteriyorum sağ teker oynuyor sola çekiyorum elimi sol teker oynuyor fakat siyah çizgi koyuyorum ikisi bir anda oynamıyor
siyah çizgiyi tam görmüyor olabilir. ayrıca koddaki min motor hız değeri 120 yani düşük olduğundan hareket etmiyo olabilir. Siz bu değeri yükseltin biraz 160 180 arası deneyin
aynı sorun bende de vardı ya motorların baglantıları kısa devre yapıyordur ya da pil gücünüz yetersiz geliyordur
Efendim kütüphaneyi indirdim fakat hata veriyor TRSensorsRC qtrrc((unsigned char[]) { 19,18,17,16,15} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN); böyle yazıyor ne yapabilirim
hata vermemesi lazım sürüm farkından kaynaklanabilir. Bir de o kısım QTRSensorsRC qtrrc((unsigned char[]) { 19,18,17,16,15} ,NUM_SENSORS, TIMEOUT, EMITTER_PIN); bu şekilde mi siz de ?
evet aynen yazdığınız gibi
derlemede sorun yok sürümü değiştirin ondan kaynaklı olabilir
teşekkürler halletim sağolun
Araba çizgiyi görüyor fakat sadece bir teker oynuyor ikisi birden oynamıyor
Hocam bu sensörü digital olarak kullanacağımızda ilk başta 10 nf lık kondansatörü doldurup boşaltmamız mı gerekiyor bunu niçin yapıyoruz onuda anlamadım kalibrasyon dedikleri olay bunu yaparken mi oluyor açıklarsanız sevinirim . dijital çıkış allırkende kütüphane almamız gerekiyor mu
kalibrasyon olayı aslında referans alma işlemidir. Örneğin beyaz ve siyah algılama sırasında analogdan voltaj değeri okursunuz. Bunlar sizin referans noktalarıdır. Kondansatörün görevi de renkten dolayı devreye gerilim değişkeni verir.Örneğin voltaj değeri 2.5 altı ise LOW 2.5 üstü ise HIGH işlemi yapmasını söylersiniz.
Kütüphane kullanmadan her sensörü bağımsız kullanabilirsiniz.
merhaba ben bu sensörü dijital olarak okumak istiyorum fakat okumuyor sebebi nedir acaba mesela en soldaki sensor 1 ise sağdaki motoru tam devir çalıstır motoru en soldakinin yanındaki sensorse yarım devir çalıstır motoru demem gerekiyor bunu nasl yapabilirim
Merhaba Mehmet bey, kullandığınız pini input olarak ayarlayın ve analogRead fonksiyonu ile okuyun.
Merhaba, ben daha yeni başladığım için bağlanmaları tam anlayamadım. Motorları motor sürücü kartına nasıl bağladığınız ?
Merhaba, projede kullanılan motor sürücü direk arduino üzerine takılıyor ve motorların bağlantıları için de sürücü üzerinde M1, M2, M3, M4 yazan pin girişlerinden motorlarınızın bağlantısını yapıyorsunuz
Çok teşekkürler. Peki pillerin bağlantısını nasıl yapmam gerekiyor acaba ?
Rica ederim. Buradan bütün bağlantılara bakabilirsiniz. http://www.robimek.com/wp-content/uploads/af-motor-pin-bağlantısı.png
kütüphaneyi nereden ekliyoruz
arduinonun kurulu olduğu yerde libraries klasörünün içine ekle
peki ben daha yeni arduino programlamaya başladım allh izin verirse robot yarışmasına katılacağım ve internet üzerinden bilgi topluyorum. sizin yazdığınız programda şu gibi hatalar veriliyor.
cızgı_ızleyen_robot_ınternet.ino:1:21: fatal error: AFMotor.h: No such file or directory
compilation terminated.
Derleme sırasında hata oluştu.
gibi hatalar veriyor.
#include
#include
bir de buraları anlamadım yardım ederseniz çok sevinirim.
afmotor kütüphanesi eklemeniz lazım buradan ekleyin >> http://www.robimek.com/wp-content/uploads/AFMOTOR-master.rar
QTR bağlantılarını nasıl yaptınız acaba? 5sensör kullanılmış bunlar hangi pinlere bağlandı?arduino bağlantısını nasıl yaptınız?
ayrıca programda eksiklikler var mı?
Sensör pinlerini A1 den A e kadar ki pinlere bağla. Sensörleri soldan başlayarak sırayla bağla. Yani en soldaki a1 en sağdaki a5 olacak şekilde diğerlerini de sırayla bağla.
seri haberleşme ile ne yapıyor niye seri haberleşme kullanılmış
cevabınızı bekliyorum
Seri haberleşme sensördeki verileri yazdırmak için kullanıldı. Bu verileri sürekli yenileyerek kalibre ediliyor.