Blog Zonaduino

  • Home
  • Sub Menu
    • Lorem Ipsum
    • Ipsum Lorem
    • Muspi Merol
    • Merol Muspi
  • Menu
  • Sub Sub Menu
    • Lorem Ipsum
    • Ipsum Lorem
      • Lorem Ipsum
      • Ipsum Lorem
      • Muspi Merol
      • Merol Muspi
    • Muspi Merol
    • Merol Muspi
  • 404
Home » Arduino » Arduino Projects » Coding » Mikrokontroler » Cara Membuat Robot Line Followers Menggunakan Arduino

Cara Membuat Robot Line Followers Menggunakan Arduino



ZONADUINO- Robot dizaman yang sudah canggih ini mungkin tak asing lagi bagi kawan-kawan pecinta Arduino. Nah, pada kesempatan kali ini juga Admin ingin membagikan kepada kawan-kawan pecinta Arduino untuk mengulas lebih tajam setajam pacul:D tentang "Cara Membuat Robot Line Followers Menggunakan Arduino" Untuk itu silahkan analisa terlebih dahulu cara kerja dari Robot tersebut :

https://www.youtube.com/watch?v=67vKmmUJT3Q

https://www.youtube.com/watch?v=HZi6r7K8YgI

https://www.youtube.com/watch?v=dw8ToA1B6kU

Oke tujuan pada project kali ini adalah bagaimana cara menciptakan atau membuat sebuah robot line follower bagi kawan-kawan yang sedang belajar, dalam masa percobaan dan menerapkan kontrol PID, tentunya dengan cara yang mudah dan harga yang pas.

Cara Kerja Robot Line Followers
Sensor IR dipasang di depan robot digunakan sebagai sensor utama digital yang masing-masing sensor tersebut akan mengirimkan signal 1 (HIGH) atau 0 (LOW), tergantung pada lingkungan sekitarnya. Sebuah deskripsi singkat tentang bagaimana sensor ini bekerja adalah sebagai berikut: pada dasarnya setiap sensor terdiri dari kedua IR pemancar dan penerima IR. cahaya inframerah / sinar yang dipancarkan dari IR pemancar dan ketika dalam jarak dekat mengenai suatu objek kemudian dipantulkan kembali dan diterima oleh penerima sensor IR.

Langsung saja kita masuk ke pembahasan.

Alat dan Bahan:

  1. Arduino UNO & Genuino UNO × 1

  2. SparkFun Dual H-Bridge motor drivers L298 × 1

  3. 9V battery (generic) × 1

  4. Soket Battery 9V × 1

  5. Breadboard × 1

  6. Kabel Jumper × 1

  7. IR Sensors

  8. DC motor (generic) × 1


Skema:



Coding:

float pTerm, iTerm, dTerm;
int error;
int previousError;
float kp = 11; //11
float ki = 0;
float kd = 11; //11
float output;
int integral, derivative;
int irSensors[] = {13, 12, 11, 8, 7}; //IR sensor pins
int irReadings[5];
int motor1Forward = A0;
int motor1Backward = A1;
int motor1pwmPin = 5;
int motor2Forward = A3;
int motor2Backward = A2;
int motor2pwmPin = 3;
int motor1newSpeed;
int motor2newSpeed;
int motor2Speed = 70; //Default 70
int motor1Speed = 120; //Default 120

void setup() {
 //Declare all IR sensors as inputs
 for (int pin = 0; pin < 5; pin++) {
   int pinNum = irSensors[pin];
   pinMode(pinNum, INPUT);
 }
 pinMode(motor1Forward, OUTPUT);
 pinMode(motor1Backward, OUTPUT);
 pinMode(motor1pwmPin, OUTPUT);
 pinMode(motor2Forward, OUTPUT);
 pinMode(motor2Backward, OUTPUT);
 pinMode(motor2pwmPin, OUTPUT);
}

void loop() {
 //Put all of our functions here
 readIRSensors();
 calculateError();
 pidCalculations();
 changeMotorSpeed();
}

void readIRSensors() {
 //Read the IR sensors and put the readings in irReadings array
 for (int pin = 0; pin < 5; pin++) {
   int pinNum = irSensors[pin];
   irReadings[pin] = digitalRead(pinNum);
 }
}

void calculateError() {
 //Determine an error based on the readings
 if ((irReadings[0] == 0) && (irReadings[1] == 0) && (irReadings[2] == 0) && (irReadings[3] == 0) && (irReadings[4] == 1)) {
   error = 4;
 } else if ((irReadings[0] == 0) && (irReadings[1] == 0) && (irReadings[2] == 0) && (irReadings[3] == 1) && (irReadings[4] == 1)) {
   error = 3;
 } else if ((irReadings[0] == 0) && (irReadings[1] == 0) && (irReadings[2] == 0) && (irReadings[3] == 1) && (irReadings[4] == 0)) {
   error = 2;
 } else if ((irReadings[0] == 0) && (irReadings[1] == 0) && (irReadings[2] == 1) && (irReadings[3] == 1) && (irReadings[4] == 0)) {
   error = 1;
 } else if ((irReadings[0] == 0) && (irReadings[1] == 0) && (irReadings[2] == 1) && (irReadings[3] == 0) && (irReadings[4] == 0)) {
   error = 0;
 } else if ((irReadings[0] == 0) && (irReadings[1] == 1) && (irReadings[2] == 1) && (irReadings[3] == 0) && (irReadings[4] == 0)) {
   error = -1;
 } else if ((irReadings[0] == 0) && (irReadings[1] == 1) && (irReadings[2] == 0) && (irReadings[3] == 0) && (irReadings[4] == 0)) {
   error = -2;
 } else if ((irReadings[0] == 1) && (irReadings[1] == 1) && (irReadings[2] == 0) && (irReadings[3] == 0) && (irReadings[4] == 0)) {
   error = -3;
 } else if ((irReadings[0] == 1) && (irReadings[1] == 0) && (irReadings[2] == 0) && (irReadings[3] == 0) && (irReadings[4] == 0)) {
   error = -4;
 } else if ((irReadings[0] == 0) && (irReadings[1] == 0) && (irReadings[2] == 0) && (irReadings[3] == 0) && (irReadings[4] == 0)) {
   if (previousError == -4) {
     error = -5;
   } else {
     error = 5;
   }
 } else if ((irReadings[0] == 1) && (irReadings[1] == 1) && (irReadings[2] == 1) && (irReadings[3] == 1) && (irReadings[4] == 1)) {
   error = 0;
 }
}

void pidCalculations() {
 pTerm = kp * error;
 integral += error;
 iTerm = ki * integral;
 derivative = error - previousError;
 dTerm = kd * derivative;
 output = pTerm + iTerm + dTerm;
 previousError = error;
}

void changeMotorSpeed() {
 //Change motor speed of both motors accordingly
 motor2newSpeed = motor2Speed + output;
 motor1newSpeed = motor1Speed - output;
 //Constrain the new speed of motors to be between the range 0-255
 constrain(motor2newSpeed, 0, 255);
 constrain(motor1newSpeed, 0, 255);
 //Set new speed, and run motors in forward direction
 analogWrite(motor2pwmPin, motor2newSpeed);
 analogWrite(motor1pwmPin, motor1newSpeed);
 digitalWrite(motor2Forward, HIGH);
 digitalWrite(motor2Backward, LOW);
 digitalWrite(motor1Forward, HIGH);
 digitalWrite(motor1Backward, LOW);
}


Cara Membuat Robot Line Followers Menggunakan Arduino , Pada: 12:30:00



Share to

Facebook Google+ Twitter

Related with Cara Membuat Robot Line Followers Menggunakan Arduino :

Tags: #Arduino, #Arduino Projects, #Coding, #Mikrokontroler Diposkan oleh syafrie di 12:30:00

0 komentar :

Post a Comment

« Next Prev »
  • Home

Labels

Acer Alat Ukur Analog Applications Arduino Arduino Projects Artikel atmega8 Blogger CMS CNC Coding Drone Dunia Komputer Edukasi Elektronika Analog Elektronika Dasar Flashing HP Google Adsense HandPhone IBM Internet Laptop Laptop Rusak Library Logic Probe Mekatronika Mikrokontroler Netbook Netbook Rusak PLC Pneumatik Robot Robotic Sekilas Info Dunia Elektronika Sensor Service Service Compaq Service FUJITSU Service HP Service IBM Service Lenovo Service LG Service Medion Service Panasonic Service Toshiba Servie Sevice Acer Software Tak Berkategori Trainer Tutorial Ultrasonik
Copyright © 2016 Blog Zonaduino All Rights Reserved | Sonic SEO Template