İçindekiler:
- Gereçler
- Adım 1: İnşaat
- Adım 2: Kablolama
- Adım 3: Kontrol Teorisi
- Adım 4: MPU 6050'yi Kullanma
- Adım 5: Kodlama
- Adım 6: PID Ayarlama Prosedürü
- 7. Adım: Sonuç
Video: İki Tekerlekli Kendi Kendini Dengeleyen Robot: 7 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:17
Bu talimat, kendi kendini dengeleyen bir robot için tasarım ve yapım sürecinden geçecektir. Bir not olarak, kendi kendini dengeleyen robotların yeni bir konsept olmadığını ve başkaları tarafından yapıldığını ve belgelendiğini söylemek istiyorum. Bu fırsatı, bu robot hakkındaki yorumumu sizinle paylaşmak için kullanmak istiyorum.
Kendi kendini dengeleyen robot nedir?
Kendi kendini dengeleyen bir robot, dik durmak için konumunu sürekli olarak ayarlamak için yerleşik bir sensörden toplanan atalet ölçüm verilerini kullanan bir sistemdir.
O nasıl çalışır?
Göz önünde bulundurulması gereken basit bir benzetme, ters çevrilmiş bir sarkaçtır. Kütle merkezinin pivot noktasının üzerinde olduğu yer. Ancak bizim durumumuzda, bir dönme ekseni, bizim durumumuzda iki tekerleğin dönme ekseni ile sarkacı 1 serbestlik derecesiyle sınırlandırıyoruz. Herhangi bir rahatsızlık robotun düşmesine neden olacağından, robotu aktif olarak dengede tutacak bir yönteme ihtiyacımız var. Robotumuzun hangi yöne düştüğünü bilerek, sistemi dengede tutmak için motorlarımızın dönüş yönünü ayarlayabiliriz.
Kapalı döngü algoritması nasıl çalışır?
Robotu dengede tutmanın temel prensibi, eğer robot öne düşüyorsa, kendini yakalamak için robotun altını ileri doğru hareket ettirerek telafi edecek ve bu nedenle dikey kalacaktır. Aynı şekilde, robot geriye doğru düşüyorsa, kendini yakalamak için robotun altını geriye doğru hareket ettirerek telafi edecektir.
Yani burada yapmamız gereken iki şey var, öncelikle robotun yaşadığı eğim açısını (Yuvarlanma) hesaplamamız ve sonuç olarak motorların dönüş yönünü kontrol etmemiz gerekiyor.
Eğim açısını nasıl ölçeceğiz?
Eğim açısını ölçmek için bir Atalet Ölçüm Birimi kullanacağız. Bu modüller bir ivmeölçer ve jiroskop içerir.
- İvmeölçer, uygun ivmeyi ölçen elektromanyetik bir cihazdır, bu, bir cismin anlık bir dinlenme çerçevesindeki ivmesidir.
- Jiroskop, açısal hızı ölçen ve cihazın yönünü belirlemek için kullanılan elektromekanik bir cihazdır.
Ancak, bu tür sensörleri kullanmanın sorunu şudur:
- İvmeölçer çok gürültülüdür ancak zamanla tutarlıdır, açı ani yatay hareketlerle değişir
- Öte yandan jiroskop değeri zamanla kayacaktır, ancak başlangıçta oldukça doğrudur.
Bu talimat için, yerleşik Dijital Hareket İşleme'yi (DMP) kullanmak yerine bir filtre uygulamayacağım. Diğerleri, düzgün bir sinyal elde etmek için tamamlayıcı bir filtre kullanmıştır, istediğiniz yöntemi seçebilirsiniz. robot her iki uygulamayla da dengelendiğinden.
Gereçler
Parçalar:
- 8 Mhz ATMEGA328 ile Arduino Pro Mini 3.3V 8
- FT232RL 3.3V 5.5V FTDI USB - TTL seri adaptör modülü
- MPU-6050 ile GY-521 modülü
- Bir çift N20 mikro dişli motor 6V - 300rpm
- L298N motor sürücüsü
- LM2596S DC'den DC'ye dönüştürücü dönüştürücü
- Pil (Şarj edilebilir 9.7V Li-ion pil takımı)
- Pil kayışı
- İki prototipleme PCB devre kartı
- Erkek ve dişi başlık pimleri atlama telleri
Aletler:
- Havya ve lehim
- Naylon altıgen ara parçası
- Hassas tornavida seti
- 3 boyutlu yazıcı
Adım 1: İnşaat
Bir 3D yazıcıya erişimim olduğu için kasayı 3D yazdırmaya ve her şeyi birbirine bağlamak için zıtlıklar kullanmaya karar verdim.
Robot 4 katmandan oluşuyor
- Alt katman motorları birbirine bağlar ve L298N motor sürücü modülü için montaj noktalarına sahiptir.
- Bir sonraki katman, Arduino pro mini ile prototip panosunu ve ona lehimlenmiş başlıkları barındırır.
- Üçüncü katman IMU'yu bağlar
- “Tampon katmanı” dediğim üst katman, pili, dönüştürücüyü ve parasal anahtarı barındırıyor.
Ana tasarım prensibim her şeyi modüler tutmaktı. Bunun nedeni, bileşenlerden birinde bir sorun olursa kolayca değiştirebilirim veya başka bir proje için bir bileşene ihtiyacım olursa, sistemi tekrar kullanamama endişesi olmadan kolayca alabilirdim.
Adım 2: Kablolama
Arduino pro mini başlık pinleriyle eşleşmesi için bazı dişi başlık pinlerini mükemmel bir panoya lehimledim. Bunu takiben, I/O'ya erişime izin vermek için tahtaya erkek başlık pinlerini lehimledim. Bileşenlerin geri kalanı 3D baskılı çerçeveye monte edildi ve bağlantı telleri kullanılarak bağlandı.
Adım 3: Kontrol Teorisi
Şimdi projenin özüne geçiyoruz. Robotu dengeli tutmak için, robotu dengeli ve kararlı tutmak için motorları doğru yönde ve doğru hızda sürmek için uygun bir kontrol sinyali üretmemiz gerekiyor. Bunu yapmak için, PID denetleyicisi olarak bilinen popüler bir kontrol döngüsü algoritması kullanacağız. Kısaltmanın önerdiği gibi, bu denetleyici için üç terim vardır, bunlar orantılı, integral ve türev terimleridir. Bunların her birine sistem üzerindeki etkilerini belirleyen katsayılar eşlik eder. Genellikle, denetleyicinin uygulanmasının en çok zaman alan kısmı, en uygun yanıtı elde etmek için her benzersiz sistem için kazançların ayarlanmasıdır.
- Orantılı terim, bir çıktı vermek için hatayı doğrudan çarpar, bu nedenle hata ne kadar büyük olursa yanıt da o kadar büyük olur.
- İntegral terimi, kararlı durum hatasını azaltmak için hatanın birikimine dayalı bir yanıt üretir. Sistem ne kadar uzun süre dengesiz kalırsa motorlar o kadar hızlı tepki verir
- Türev terimi, gelecekteki yanıtı tahmin etmek için kullanılan hatanın türevidir ve bunu yaparken kararlı durumu aşma nedeniyle salınımı azaltır.
Bu algoritmanın temel prensibi, istenen konum ile mevcut konum arasındaki fark olan eğim açısını sürekli olarak hesaplamaktır, buna hata denir. Daha sonra bu hata değerlerini kullanır ve motorlara gönderilen kontrol sinyalleri olan bir çıktı elde etmek için orantısal, integral ve türev yanıtlarının toplamını hesaplar. Sonuç olarak, hata büyükse motorlara gönderilen kontrol sinyali, dengeli bir duruma gelmek için motorları yüksek hızda döndürecektir. Aynı şekilde, hata küçükse, kontrol sinyali robotu dengede tutmak için motorları düşük hızda döndürür.
Adım 4: MPU 6050'yi Kullanma
MPU6050 Kitaplığı
github.com/jrowberg/i2cdevlib/tree/master/…
Ofsetleri kalibre etme Tüm sensörler birbirinin tam kopyası değildir. Sonuç olarak, iki MPU 6050'yi test ederseniz, aynı yüzeye yerleştirildiğinde ivmeölçer ve jiroskop için farklı değerler elde edebilirsiniz. Bu sabit açı ofsetinin üstesinden gelmek için kullandığımız her sensörü kutlamamız gerekiyor. Bu betiği çalıştırmak:
www.i2cdevlib.com/forums/topic/96-arduino-…
Luis Rodenas tarafından yazılmış, ofsetleri alacağız. Offset hataları, setup() rutininde ofset değerleri tanımlanarak ortadan kaldırılabilir.
Dijital Hareket İşlemcisini Kullanma
MPU6050, bir DMP (Dijital Hareket İşlemcisi) içerir.
DMP nedir? DMP'yi, kendi hareket birleştirme algoritmalarını kullanarak mpu6050'deki 3 eksenli jiroskop ve 3 eksenli ivmeölçerden gelen karmaşık hareketi işleyen yerleşik bir mikro denetleyici olarak düşünebilirsiniz. Aksi takdirde Arduino tarafından yapılacak olan işlemin boşaltılması
Bu nasıl kullanılır? DMP'nin nasıl kullanılacağını anlamak için MPU6050 kitaplığı ile birlikte gelen MPU6050_DMP6 örneğini inceleyin (Arduino IDE'de: Dosya->Örnek->MPU6050->MPU6050_DMP6). Bu aynı zamanda sensörünüzün gerçekten çalıştığını ve kablolamanın doğru olduğunu kontrol etmek için iyi bir fırsattır
Adım 5: Kodlama
Arduino pro mini'yi programlamak için Arduino IDE ve bir FTDI arayüzü kullandım.
MPU6050 kitaplığıyla birlikte gelen örnek çizimi (MPU6050_DMP6) temel kodum olarak kullanarak bir PID() ve MotorDriver() işlevleri ekledim.
Kitaplığı ekle
- MPU6050: MPU6050 sensörünü kullanmak için Jeff Rowberg'den I2C geliştirici kitaplığını indirmemiz ve bilgisayarınızdaki program dosyalarında bulunan Arduino “kütüphaneleri” klasörüne eklememiz gerekecek.
- Wire: I2C cihazlarıyla iletişim kurabilmemiz için Wire kitaplığına da ihtiyacımız var.
Sözde Kod
Kitaplıkları Dahil Et:
- tel.h
- MPU6050
- I2Cdev.h
Değişkenleri, sabitleri ve nesneleri başlat
Kurmak ()
- Motorları kontrol etmek için pin modunu ayarlayın
- Durum LED'i için pin modunu ayarla
- MPU6050'yi sıfırlayın ve ofset değerlerini ayarlayın
PID ()
PID değerini hesapla
MotorSürücü (PID yanıtı)
Motorların hızını ve yönünü kontrol etmek için PID değerini kullanın
Döngü ()
- DMP'den veri alın
- PID() a MotorDriver() işlevlerini çağırın
Adım 6: PID Ayarlama Prosedürü
Bu, projenin en sıkıcı kısmıdır ve çok şanslı olmadığınız sürece biraz sabır gerektirir. İşte adımlar:
- I ve D terimini 0 olarak ayarlayın
- Robotu tutarak P'yi ayarlayın, böylece robot denge konumu etrafında salınmaya başlar.
- P seti ile, robotun dengede olmadığında daha hızlı hızlanması için I'yi artırın. P ve I düzgün bir şekilde ayarlandığında, robot biraz salınımla en az birkaç saniye kendi kendini dengeleyebilmelidir.
- Son olarak, D'yi artırın salınımı azaltın
İlk deneme tatmin edici sonuçlar vermezse, adımları farklı bir P değeriyle tekrarlayın. Ayrıca, performansı daha da artırmak için PID değerlerine daha sonra ince ayar yapabileceğinizi unutmayın. Buradaki değerler donanıma bağlıdır, çok büyük veya çok küçük PID değerleri alırsanız şaşırmayın.
7. Adım: Sonuç
Kullanılan mikro dişli motorlar, büyük rahatsızlıklara tepki vermek için yavaştı ve sistem çok hafif olduğu için, istenen sarkaç etkisini elde etmek için yeterli atalet yoktu, bu nedenle robot öne doğru eğilirse, sadece bir açıyla eğilecek ve ileri doğru yarışacaktı. Son olarak, 3D baskılı tekerlekler kaymaya devam ettikleri için kötü bir seçimdi.
İyileştirme için öneri:
- Daha yüksek torklu daha hızlı motorlar, yani DC motorlar için voltaj değeri ne kadar yüksekse o kadar yüksek tork
- daha ağır bir pil alın veya kütleyi biraz daha yükseğe taşıyın
- Daha fazla çekiş elde etmek için 3D baskılı tekerlekleri kauçuk olanlarla değiştirin
Önerilen:
Kendi Kendini Dengeleyen Robot - PID Kontrol Algoritması: 3 Adım
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 modülü henüz eklenmediğinden proje hala geliştirme aşamasındadır ve bu
Magicbit'ten Kendi Kendini Dengeleyen Robot: 6 Adım
Magicbit'ten Kendi Kendini Dengeleyen Robot: Bu eğitim, Magicbit geliştirme kartını kullanarak kendi kendini dengeleyen bir robotun nasıl yapıldığını gösterir. ESP32 tabanlı bu projede geliştirme kartı olarak magicbit kullanıyoruz. Bu nedenle bu projede herhangi bir ESP32 geliştirme kartı kullanılabilir
2 Tekerlekli Kendi Kendini Dengeleyen Robot: 4 Adım
2 Tekerlekli Kendi Kendini Dengeleyen Robot: Benim düşünceme göre, kendi 2 tekerlekli kendi kendini dengeleyen robotunuzu yapmadığınız sürece gerçek bir Maker değilsiniz. :-) Yani, işte burada… ve en önemlisi, çalışıyor !!!Bu proje çok basit görünüyor. Bunun yerine, iyi bir bilgi düzeyi gerektirir
Uzaktan Kumandalı Arduino Kendi Kendini Dengeleyen Robot Oluşturma: B-robot EVO: 8 Adım
Uzaktan Kumandalı Arduino Kendi Kendini Dengeleyen Robot Oluşturma: B-robot EVO: ------------------------------------ --------------GÜNCELLEME: Bu robotun yeni ve geliştirilmiş bir versiyonu burada: Yeni özelliklere sahip B-robot EVO!----------- --------------------------------------Nasıl çalışır?B-ROBOT EVO uzaktan kontrol
Kendi Kendini Dengeleyen Tek Tekerlekli Araç: 8 Adım (Resimlerle)
Kendi Kendini Dengeleyen Tek Tekerlekli Araç: Segway ve solowheel gibi kendi kendini dengeleyen bazı ürünlere ilgi duyan evet, yorulmadan direksiyonunu sürerek her yere gidebilirsin. ama kendin alabilirsen harika. Peki Yapalım