Robot self dancing Arduino uno dan Driver motor BTS7960

 


Langkah yang paling awal mungkin untuk membuat sebuah karya ilmiyah dan mengaplikasinya menjadi nyata atau fisik. diartikel yang sederhana admin akan menulas tentang robot self dancing,

dimana dalam perakitanya banyak menemukan lika-liku pemrogramanalgorithma dan jalur daya arus listrik yang harus banyak di plajari terutama bagi pemula Termasuk admin sendiri.. hhee..

dengan pemrograman robot Arduino uno.
Media fisik yang admin gunakan melibatkan :

1. Arduini uno

2. Driver motor BTS7960

3. MPU6050

4. Roda Standar speda anak

dipersilahkan teman-teman juga persiapkan pendukunya seperti mendonload sotware arduino beserta lengkap dengan driver yang dibutuhkannya.

Mengunakan Algoritma atau langkah-langkah pemrogeraman robot yang nantinya Bagimana Robot akan menyelesaikan permasalahan.

admin berfokus mengandalkan MPU6050 Agar Robot Self dancing dapat berdiri dengan sempurna dengan gerakan yang halus.

 

untuk mengupas tuntas karya ini admin tuangkan dalam artikel https://defenselocal.blogspot.com/
dimana pembahasanya admin perjelas dan detil. dengan biaya yang cukup merogo kantong dalam-dalam teman-teman dapat mendapatkan informasi atau ilmu yang amat berguna di era perkembangan indonesia yang akan mencapai Industri teknologi 5.0

 

Example scure code : 

Downloade code : https://drive.google.com/drive/folders/1tqgj-j8tvbbxaVzWnai1gVme0wBW68QV

###########################################

#include <Wire.h>

#include <MPU6050.h>

 

MPU6050 mpu;

// --- Variabel MPU6050 ---

float roll = 0;        // Sudut roll (sumbu Y)

float accAngle = 0;

float gyroRate = 0;

float alpha = 0.98;

unsigned long lastTime;

float gyroOffsetY = 0;  // Offset untuk gyro Y

 

// --- PID ---

float Kp = 7.5;

float Ki = 1.10;

float Kd = 1.0;

float setpoint = 0.0;

float error, lastError = 0, integral = 0, derivative;

float pidOutput;

 

// --- Pin Motor Kiri (BTS7960) ---

const int L_RPWM = 6;

const int L_LPWM = 9;

const int L_REN  = 8;

const int L_LEN  = 7;

 

// --- Pin Motor Kanan (BTS7960) ---

const int R_RPWM = 10;

const int R_LPWM = 11;

const int R_REN  = 13;

const int R_LEN  = 12;

 

// --- Base Speed ---

const int baseSpeed = 16;  // PWM minimal agar motor berputar

void setup() {

  Serial.begin(9600);

  Wire.begin();

  mpu.initialize();

  if (!mpu.testConnection()) {

    Serial.println("MPU6050 tidak terhubung!");

    while (1);

  }

 

  Serial.println("Kalibrasi gyro Y... diamkan sensor!");

  calibrateGyroY();

  Serial.println("Kalibrasi selesai.");

  pinMode(L_RPWM, OUTPUT);

  pinMode(L_LPWM, OUTPUT);

  pinMode(L_REN, OUTPUT);

  pinMode(L_LEN, OUTPUT);

  pinMode(R_RPWM, OUTPUT);

  pinMode(R_LPWM, OUTPUT);

  pinMode(R_REN, OUTPUT);

  pinMode(R_LEN, OUTPUT);

  digitalWrite(L_REN, HIGH);

  digitalWrite(L_LEN, HIGH);

  digitalWrite(R_REN, HIGH);

  digitalWrite(R_LEN, HIGH);

  lastTime = millis();

}

void loop() {

  unsigned long now = millis();

  float dt = (now - lastTime) / 1000.0;

  if (dt <= 0 || dt > 1) dt = 0.01;

  lastTime = now;

  int16_t ax, ay, az, gx, gy, gz;

  mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

 

  // Gunakan sumbu Roll (Y)

  accAngle = atan2((float) - ax, (float)az) * 180.0 / PI;

  gyroRate = ((float)gy - gyroOffsetY) / 131.0;

 

  // Filter complementary

  roll = alpha * (roll + gyroRate * dt) + (1 - alpha) * accAngle;

 

  // --- PID ---

  error = setpoint - roll;

  integral += error * dt;

  derivative = (error - lastError) / dt;

  pidOutput = Kp * error + Ki * integral + Kd * derivative;

  lastError = error;

 

  // Batasi output

  if (pidOutput > 135) pidOutput = 135;

  if (pidOutput < -135) pidOutput = -135;

  int pwm = abs(pidOutput);

  if (pwm > 0) pwm = max(pwm, baseSpeed); // Pastikan minimal baseSpeed

 

  // --- Safety cutoff jika miring lebih dari ±6 derajat ---

  // Kontrol motor

  if (pidOutput > 1) {

    gerakMaju(pwm);

  } else if (pidOutput < -1) {

    gerakMundur(pwm);

  } else {

    motorStop();

  }

 

  // Debug

  Serial.print("Roll: ");

  Serial.print(roll);

  Serial.print("  err: ");

  Serial.print(error);

  Serial.print("  PID: ");

  Serial.print(pidOutput);

  Serial.print("  pwm: ");

  Serial.println(pwm);

}

void calibrateGyroY() {

  long gySum = 0;

  int16_t ax, ay, az, gx, gy, gz;

  const int n = 500;

  for (int i = 0; i < n; i++) {

    mpu.getMotion6(&ax, &ay, &az, &gx, &gy, &gz);

    gySum += gy;

    delay(2);

  }

  gyroOffsetY = (float)gySum / n;

}

// --- Fungsi Kontrol Motor ---

// Motor kiri maju, motor kanan mundur (berlawanan arah)

void gerakMaju(int speed) {

  speed = constrain(speed, 0, 255);

  analogWrite(L_RPWM, speed);

  analogWrite(L_LPWM, 0);

  analogWrite(R_RPWM, speed);

  analogWrite(R_LPWM, 0);

}

 

// Motor kiri mundur, motor kanan maju (berlawanan arah)

void gerakMundur(int speed) {

  speed = constrain(speed, 0, 255);

  analogWrite(L_RPWM, 0);

  analogWrite(L_LPWM, speed);

  analogWrite(R_RPWM, 0);

  analogWrite(R_LPWM, speed);

}

void motorStop() {

  analogWrite(L_RPWM, 0);

  analogWrite(L_LPWM, 0);

  analogWrite(R_RPWM, 0);

  analogWrite(R_LPWM, 0);

}

######################################

diartikel lain, admin mencari refrensi banyak juga yang membahas tentang Robot self dancing dimana dari 99% mungkin kota-kota besar di indonesia terutama Universitas atau perguruan tingi Mekanik Robotik, sudah mengembangkan dan mengkolaborasikanya.

tidak jauh juga sekarang lembaga pendidik entah itu tingkat SD,SMP dan SMK ada juga yang memanfaatkan Ektrakulikuler menjadi Pemrograman/Perancangan Robot, seperti robt linerobot sensor apirobot alarem anti maling.

Sudah bertebaran di dunia maya (Internet) Media sosial, Youtobe dan Website yang membuka pemblajaran tersebut, mdia online pun tersedia banyak. kadang diberikan secara percuma kalau kita rajin Searching di Googel. Tidak bukan jika teman-teman mengetikan (ROBOT SELF DANCING) teman-teman akan mendapatkan informasi yang diperlukan.

 
Teman-teman bisa melihat di chenel https://studio.youtube.com/video/5jtPQUbtXf8 diatas, untuk melihat profilnya.

dan untuk vidio yang terbaru admin ada rencana akan pemperbarui perangkat keras, yang akan di Mutahirkan dengan IA Insa allah segera Rilis Akhir Desember ini.

Tidak ada komentar:

Printah Microsoft Powor Point sederhana

                                           gambar : Microsoft Power point 2016 Sedikit mengenai Microsoft Office adalah Sebuah software atau...