İçindekiler:

Kendi Kendini Dengeleyen Robot - PID Kontrol Algoritması: 3 Adım
Kendi Kendini Dengeleyen Robot - PID Kontrol Algoritması: 3 Adım

Video: Kendi Kendini Dengeleyen Robot - PID Kontrol Algoritması: 3 Adım

Video: Kendi Kendini Dengeleyen Robot - PID Kontrol Algoritması: 3 Adım
Video: Bölüm 6 - Arduino PID Kontrol 2024, Kasım
Anonim
Kendi Kendini Dengeleyen Robot - PID Kontrol Algoritması
Kendi Kendini Dengeleyen Robot - PID Kontrol Algoritması

Bu proje, Kontrol Algoritmaları ve işlevsel PID döngülerinin nasıl etkin bir şekilde uygulanacağı hakkında daha fazla şey öğrenmekle ilgilendiğim için tasarlandı. Bluetooth özellikli bir akıllı telefondan robot üzerinde kontrole izin verecek bir Bluetooth modülü henüz eklenmediğinden proje hala geliştirme aşamasındadır.

Kullanılan N20 DC motorları nispeten ucuzdu ve bu nedenle içlerinde önemli miktarda oynama var. Bu, motorlar tekerleklere tork uygularken 'gevşekliği' aşarken az miktarda sarsıntıya yol açar. Bu nedenle, mükemmel düzgün hareket elde etmek neredeyse imkansızdır. Yazdığım kod oldukça basit ama PID algoritmasının yeteneklerini etkili bir şekilde gösteriyor.

Proje özeti:

Robotun kasası, Ender 3 yazıcı kullanılarak 3D olarak yazdırılır ve birbirine bastırmak üzere tasarlanmıştır.

Robot, MPU6050'den sensör verilerini alan ve DC motorları harici bir motor sürücüsü aracılığıyla kontrol eden bir Arduino Uno tarafından kontrol edilir. 7.4V, 1500mAh pil ile çalışır. Motor sürücüsü, Arduino'ya güç sağlamak için bunu 5V'a ayarlar ve motorlara 7.4V sağlar.

Yazılım, gitHub'dan 'Arduino-KalmanFilter-master' ve 'Arduino-MPU6050-master' kütüphanelerinin yardımıyla sıfırdan yazılmıştır.

Gereçler:

  • 3D Baskılı Parçalar
  • Arduino UNO'su
  • MPU6050 6 Eksen Sensörü
  • DC Motor Sürücüsü
  • N20 DC Motorlar (x2)
  • 9V Pil

1. Adım: Robot Yapısı

Robot Yapısı
Robot Yapısı
Robot Yapısı
Robot Yapısı
Robot Yapısı
Robot Yapısı

Baskı ve Montaj

Tüm yapı baskılı olmalıdır, ancak dengeleme sırasında robotun tamamen sert olmasını sağlamak için bileşenleri sabitlemek için süper yapıştırıcı kullandım.

Parçaları Fusion 360'ta tasarladım ve daha sıkı toleranslar ve daha temiz bir yüzey kalitesi sağlamak için her parçayı desteksiz yazdırmak üzere optimize ettim.

Ender 3 Yazıcıda kullanılan ayarlar şunlardı: 0.16mm Katman Yükseklikleri @ tüm parçalar için %40 dolgu.

2. Adım: 3D Baskı Robotu

3D Baskı Robotu
3D Baskı Robotu

Şasi (x1)

Sol Tekerlek (x2)

Sol Motor Muhafazası (x2)

Arduino Kasası (x1)

Adım 3: PID Kontrol Algoritması

PID Kontrol Algoritması
PID Kontrol Algoritması

GitHub'dan 'Arduino-KalmanFilter-master' ve 'Arduino-MPU6050-master' kitaplıklarını kullanarak sıfırdan bir PID Kontrol Algoritması yazdım.

Algoritmanın temeli aşağıdaki gibidir:

  • MPU6050'den ham verileri okuyun
  • Sensörün hızlanmasından kaynaklanan jiroskop okumalarındaki yanlışlıkları ortadan kaldırmak için hem Jiroskoptan hem de İvmeölçerden gelen verileri analiz etmek için Kalman Filtresini kullanın. Bu, sensörün eğimi için derece cinsinden iki ondalık basamağa kadar nispeten düzleştirilmiş bir değer döndürür.
  • Açıdaki Hatayı hesaplayın, yani: Sensör ile ayar noktası arasındaki açı.
  • Orantılı hatayı (Orantılılık Sabiti x hatası) olarak hesaplayın.
  • İntegral Hatasını (Entegrasyon Sabiti x hatası) toplamı olarak hesaplayın.
  • Türev Hatasını Sabit Olarak Hesapla [(Farklılaşma Sabiti) x (Hatadaki Değişim / Zamandaki Değişim)]
  • Motorlara gönderilecek hız çıkışını vermek için tüm hataları toplayın.
  • Hata açısının işaretine göre motorları hangi yöne çevireceğinizi hesaplayın.
  • Döngü süresiz olarak çalışacak ve girdi değiştikçe çıktıyı oluşturacaktır. Bir sonraki yineleme için çıkış değerlerini yeni giriş değerleri olarak kullanan bir geri besleme döngüsüdür.

Son Adım, PID döngüsü Kp, Ki & Kd parametrelerini ayarlamaktır.

  1. İyi bir başlangıç noktası, robot denge noktası etrafında salınan ve bir düşüş yakalayabilene kadar Kp'yi yavaşça artırmaktır.
  2. Ardından, Kd'yi Kp değerinin yaklaşık %1'inde başlatın ve salınımlar kaybolana ve robot itildiğinde pürüzsüzce kayana kadar yavaşça artırın.
  3. Son olarak, Kp'nin yaklaşık %20'si kadar Ki ile başlayın ve robot aktif olarak bir düşüşü yakalamak ve dikey konuma dönmek için ayar noktasını "aşana kadar" değiştirin.

Önerilen: