26 Ağustos 2019 Pazartesi

DEVELOPMENT OF BALANCING SYSTEM WITH ARDUINO

Abstract
A balancing system with arduino is designed and constructed to hinder toppling of truck bed and that will hinder to accident. The system is controlled by gyro sensor feedback which is placed at the center of the truck bed. A feedback control system coded in arduino drives servo motors acording to gyro sensor feedback to balance the truck bed




IDEA OF PROJECT
To keep to truck bed balanced. The motors must counteract the vehicle falling. This action requires feedback element in the MPU6050 (gyroscope + accelerometer ). Which gives both acceleration and rotation in all three axes. The arduino uses this to know the current orientation of the truck bed. The correcting element is the motor and wheel combination.

Main Components
MPU5060 (Gyro sensor), ArduinoServo Motors
CONCLUSION
We were successfully able to control the truck bed. From this Project we learnt the working and programming of a arduino in real time. We also learnt to communicate arduino, servo motor and gyroscope.

#include <Wire.h>
#include <I2Cdev.h> //I2C kütüphanesini ekledik
#include <MPU6050.h> //Mpu6050 kütüphanesi ekledik
#include<Servo.h> // Servo motor kütüphanesi

MPU6050 emsal; // sensörümüze Emsal arkadasımızın :) ismini verdik adını verdik
int16_t ax, ay, az; //ivme tanımlama
int16_t gx, gy, gz; //gyro tanımlama

int16_t ax1, ay1, az1; //ivme tanımlama
int16_t gx1, gy1, gz1; //gyro tanımlama

Servo motor1; // motor1 isminde    bir servo nesnesi oluşturduk.
Servo motor2; // motor2 isminde    bir servo nesnesi oluşturduk.
Servo motor3; // motor3 isminde    bir servo nesnesi oluşturduk.
Servo motor4; // motor4 isminde    bir servo nesnesi oluşturduk.

void setup() {
motor1.attach(3); // servo motorun bağlandığı arduino pini
motor2.attach(5); // servo motorun bağlandığı arduino pini
motor3.attach(9); // servo motorun bağlandığı arduino pini
motor4.attach(11); // servo motorun bağlandığı arduino pini

Wire.begin();
Serial.begin(9600);         // serial olarak baslattık ayrıca
Serial.println("I2C cihazlar baslatiliyor...");
emsal.initialize();
Serial.println("Test cihazi baglantilari...");
Serial.println(emsal.testConnection() ? "MPU6050 baglanti basarili" : "MPU6050 baglanti basarisiz");
}

void loop() {
emsal.getMotion6(&ax, &ay, &az, &gx, &gy, &gz); // ivme ve gyro değerlerini okuma
emsal.getMotion6(&ax1, &ay1, &az1, &gx1, &gy1, &gz1); // ivme ve gyro değerlerini okuma

//açısal ivmeleri ve gyro değerlerini serial ekrana yazdıralım
ay=map(ay,-17000,17000,180,0); // İvme sensöründen okunan değer 0-180 arasına indirgeniyor
ay1=map(ay1,-17000,17000,0,180); // İvme sensöründen okunan değer 0-180 arasına indirgeniyor


Serial.print(ay); Serial.println("\t");

motor1.write(ay); // Y ekseninden okunan değer servo motora açı değeri olarak yazıldı.
motor2.write(ay); // Y ekseninden okunan değer servo motora açı değeri olarak yazıldı.
motor3.write(ay1); // Y ekseninden okunan değer servo motora açı değeri olarak yazıldı.
motor4.write(ay1); // Y ekseninden okunan değer servo motora açı değeri olarak yazıldı.
delay(20); //değerlerin değişimini daha net görmek için biraz beklesin
}









REFERENCES









Hiç yorum yok:

Yorum Gönder