Mz80 Sensör İle Çizgi İzleyen Robot Yapımı Yardım.

ferat26

Yeni Üye
11 Mar 2020
6
3
3
İyi akşamlar hızlı çizgi izliyen robot için mz 80 sensör kullanıcaz ama kodlama kısmında kaldık elinde olan varsa paylaşabilir mi?
 

ferat26

Yeni Üye
11 Mar 2020
6
3
3
hocam arduino üzerinden yapıyoruz ilerlettik şu an mz80 taktık kodlaması kaldı mz80 kodunu yapamadık internetten aradığımda ledler için kodlar çıkıyor elinde olan varsa yazabilirse çok makbule geçer
 

RobotikForum

RF Admin
Yönetici
19 Şub 2020
83
48
13
Balıkesir
www.robotikforum.net
Arduino ve MZ80 bağlantısı ile ilgili bu kodları buldum işinize yarayabilir mi?

Arduino:
#include <QTRSensors.h>



#include <AFMotor.h>



AF_DCMotor solmotor(2,MOTOR12_8KHZ);

AF_DCMotor sagmotor(3,MOTOR12_8KHZ);



#define m1_hiz 10

#define m2_hiz 10



#define NUM_SENSORS 6

#define NUM_SAMPLES_PER_SENSOR 4

#define EMITTER_PIN 2



#define kp 1

#define kd 2.50



int hata=0;

int oncekihata=0;



QTRSensorsAnalog qtra((unsigned char[]) {0, 1, 2, 3, 4, 5},

NUM_SENSORS, NUM_SAMPLES_PER_SENSOR, EMITTER_PIN);

unsigned int sensorValues[NUM_SENSORS];



void setup() {



delay(200);

pinMode(13, OUTPUT);

digitalWrite(13, HIGH);

for (int i = 0; i < 400; i++)

{ qtra.calibrate(); }

digitalWrite(13, LOW); }

void loop() {

unsigned int sensorler[6];

int position = qtra.readLine(sensorler,QTR_EMITTERS_ON,1);

int hata=position-2500;

int hizim=kp*hata+kd*(hata-oncekihata);

oncekihata=hata;

int solmotorhiz=m1_hiz+hizim;

int sagmotorhiz=m1_hiz-hizim;

if(solmotorhiz>m1_hiz)solmotorhiz=m1_hiz;



if(sagmotorhiz>m2_hiz)sagmotorhiz=m2_hiz;



solmotor.run(FORWARD);

solmotor.setSpeed(solmotorhiz);

sagmotor.run(FORWARD);

sagmotor.setSpeed(sagmotorhiz);



}
Arduino:
#include <AFMotor.h>



AF_DCMotor motor2pin(2,MOTOR12_8KHZ);

AF_DCMotor motor3pin(3,MOTOR12_8KHZ);



#define ref 35 //referans 3.50

#define Kp 4

#define Kd 5

#define ham 50

#define Speed 50



int hata = 0;

int oncekiHata = 0;

int hiz = 0;

int turev = 0;

int pwm_sag = 70;

int pwm_sol = 70;

int konum=0;



int say=0;

int oku1,oku2,oku3,oku4,oku5,oku6;

int ledon=2;



void setup() {



Serial.begin(9600);

pinMode(ledon, OUTPUT);

analogWrite (ledon,255);



}



void loop() {



oku1 = analogRead(A0);

oku2 = analogRead(A1);

oku3 = analogRead(A2);

oku4 = analogRead(A3);

oku5 = analogRead(A4);

oku6 = analogRead(A5);



if(oku1 < ham){ say++; konum+=0; }

if(oku2 < ham){ say++; konum+=10; }

if(oku3 < ham){ say++; konum+=20; }

if(oku4 < ham){ say++; konum+=30; }

if(oku5 < ham){ say++; konum+=40; }

if(oku6 < ham){ say++; konum+=50; }

if(say==0){ konum=0; }

else { konum=konum/say;}

oncekiHata = hata;

hata = ref - konum; // yoldan ne kadar saptığımızı görmek için 35 yani referanstan şuanki konumu çıkardık.

pwm_sol = Speed - (Kp * hata + Kd *(hata - oncekiHata)); // sol motorun pwm hesabını yaptık, kp*hata hizimizi veriyor, kd*turev ani yoldan çıkma işlemimiz

pwm_sag = Speed + (Kp * hata + Kd *(hata - oncekiHata)); // sağ motorun pwm hesabını yaptık, kp*hata hizimizi veriyor, kd*turev ani yoldan çıkma işlemimiz

if (pwm_sol > 245 ) pwm_sol = 250; //sağ motorun kısıtlamalarını yapıyoruz, eğer büyükse kısıtladığımız değere eşitliyoruz.

if (pwm_sag > 245 ) pwm_sag = 250; //Sol motorun kısıtlamalarını yapıyoruz, eğer büyükse kısıtladığımız değere eşitliyoruz.

if (pwm_sol < 10) pwm_sol = 10; //sağ motorun kısıtlamalarını yapıyoruz, eğer 0 dan küçükse 0 a eşitliyoruz.

if (pwm_sag < 10) pwm_sag = 10; //sol motorun kısıtlamalarını yapıyoruz, eğer 0 dan küçükse 0 a eşitliyoruz



motor2pin.setSpeed(pwm_sol);

motor3pin.setSpeed(pwm_sag);

motor2pin.run(FORWARD);

motor3pin.run(FORWARD);

konum=0;say=0;



}
 
Son düzenleme:
  • Beğen
Tepkiler: ferat26

ferat26

Yeni Üye
11 Mar 2020
6
3
3
Hocam çok sağ olun yarın okulda kodları bi girelim eğer sorun olursa yine buraya yazarım tekrar çok teşekkür ederim
 
  • Beğen
Tepkiler: RobotikForum

ferat26

Yeni Üye
11 Mar 2020
6
3
3
Çok yerinde bir girişim olmuş böyle güzel platformlara ihtiyacımız var gerçekten bizlerde edindiğimiz bilgileri paylaşarak sonuna kadar size destek olacağız ilginiz ve nezaketiniz için teşekkürler
 
  • Beğen
Tepkiler: RobotikForum

kudretuzuner

Yeni Üye
22 Şub 2020
9
13
3
Merhaba, MZ80 sensörünü tanımıyordum.Datasına baktım,daha çok mesafe sensörü olarak geçiyor.Çizgi izleme işini nasıl yapacak pek anlayamadım.Ayrıca,çizgi izleyen robotlarda 8 sensör kullanılıp PID kontrollu oluyor diye biliyorum.PIC ile yapmayı düşünürseniz kodları yazmaya çalışırım.(arduino bilmiyorum)
https://www.youtube.com/channel/UC2Vc0XsWVImMevBNrqMOLVQ/videos
 
Son düzenleme:

ferat26

Yeni Üye
11 Mar 2020
6
3
3
Mz80ni yarış başlamadan önce başlangıç çizgisindeki bariyer için kullanıcaz çizgi izlemesi için qtryi takıcaz şu an biraz amatörüz yavaş ilerliyoruz hocam
 
  • Beğen
Tepkiler: RobotikForum

Robotikforum.net Nedir?

  • Robotikforum.net 2020 yılında kurulup yayın hayatına başlayan ve Türkiye’de robotik kodlama alanının gelişimine katkıda bulunmak için bu alan ile ilgilenen bireylerin bir birleri ile yardımlaşmaları ve fikir danışmalarını sağlayarak daha iyi öğrenmek için her bir bireyin bilgisini ve tecrübesini alarak kendini geliştirebileceği ve sorularına cevap bulabileceği bir platform olarak kurulmuştur.

Bilgilendirme!!!

İçerik sağlayıcı paylaşım sitelerinden biri olan www.robotikforum.net Adresimizde T.C.K 20.ci Madde ve 5651 Sayılı Kanun'un 4.cü maddesinin (2).ci fıkrasına göre TÜM ÜYELERİMİZ yaptıkları paylaşımlardan sorumludur.

Sayfamızı beğendin mi?