Ev yapımı Segway. Kendin Yap Segway

Neye ihtiyacımız var? Başlangıç ​​olarak karın egzersiz makinesinin tekerleklerini alalım. Şanzıman 12 volt ve 160 rpm. 15.000 miliamper saatlik güç bankası. Aracı kontrol edebilmek yani sağa veya sola dönebilmek, hızlanıp yavaşlayabilmek için ev yapımı çim biçme makinesi imalatında halihazırda kullandığımız modülleri kullanacağız. Bu şekilde motor devrini düzenleyebilirsiniz. Buna göre 2 modül, 2 motor, 2 powerbank.

İki set ayrı ayrı çalışır. Sağ motora hız eklediğimizi varsayalım, Segway sola dönecektir. Aynı şey, ancak sağa dönerken aynalı. İki motora aynı anda hız eklerseniz ürün hızlanacaktır.

İlk önce dişli kutularını takalım. Bunu yapmak için, kontrplak bir levhanın ortasına yerleştirin, taslağını çizin ve bir oyuk açmak için bir kesici kullanın. Şanzımanın sol tarafa takılmasıyla aynı şekilde karşı tarafta da yapıyoruz.

Bu çubuklardan birkaçını kesip yanlara vidalamanız gerekiyor. Kontrplağın sarkmaması için bu gereklidir.
Tekerlekleri söküp aksa takıyoruz. Gördüğünüz gibi birbirlerinden farklılar. Önce iki ahşap burç yapmalısınız. Ev yapımı olanı kullanacağız torna ahşap üzerinde. Sonuç iki ahşap boşluktu.

İş parçasını yerleştirin. Bir delik açın ve iş parçasını yapıştırın epoksi reçine. (Yazar videonun sonunda bir değişiklik yapmış, aşağıda okuyun).

Şimdi direksiyonu yapacağız. Bunun için bir parça kullanacağız kanalizasyon borusu. Kolu simülatörden aldık. Kontrplakın üst kısmına delikler açıp boruyu ve sapı sabitleyeceğiz. Segway'in gidonu hafif eğimli olmalıdır, bu yüzden kontrplakta eğimli bir delik açtık ve plastik boruyu kestik.

Tüm kontrol modülleri direksiyon simidine monte edilecektir. Direksiyondan vites kutularına kadar 8 adet kablo uzatmanız gerekiyor. Yukarıdan dışarı çıkmalarını önlemek için önce boruya bir delik açıp telleri yerleştiriyoruz.

Ve şimdi yine her şeyi epoksi reçine ile yapıştırmanız ve 24 saat beklemeniz gerekiyor. Tekerleklerin deforme olduğu ortaya çıktı, epoksinin pek güvenilir bir malzeme olmadığı ortaya çıktı. Dişli kutularını söktüm, milleri çıkardım ve üzerlerindeki dişleri kestim. Ayrıca ahşap burçlara da delikler açtım. Metal burçlar yerleştirdim ve artık her şey çok daha güvenilir görünüyor. Tekerlekler ayrıca çok sıkı bir şekilde vidalanabilir. Plastik boru Tamamen güvenilir görünmüyordu; güçlendirmek için içine bir kürek sapı yerleştirildi.

Panelin içerisine 2 adet modül yerleştirdik. Dirençler için boruya delikler açmanız gerekir. Geriye kalan tek şey düğmeleri sıcak tutkal kullanarak yapıştırmak. Kabloları modüle, dişli kutularına ve güç bankalarına yönlendirin. Tekerlekleri vidalayın.

Kabloları yanlış bağlamaktan korkanlar için modüllerde her şey ayrıntılı olarak anlatılmıştır.

Segway'de ayrıca bisiklet hız göstergesi de bulunacak. Test sürümü ev yapımı Segway hazır. Hadi test edelim.

İçeride uçan kaykay

Ana ayrıntılar

Bir uçan kaykay nelerden oluşur? Dışarıdan baktığınızda uçan kaykay ilginç cihaz. Birincisi bir çalışma platformu veya panosudur. Bir kişi bunun üzerinde durur ve dengeyi korumaya çalışırken, yönlendirir, sürer veya düşer. Platformun yanlarında iki tekerlek var, bunlar bize ilerleme ve ileri veya geri hareket etme fırsatı veriyor.

Öncelikle platforma bakalım. Çalışma platformu sağ ve sol kısım olmak üzere iki kısma ayrılmıştır. Sağ ve sol ayaklar için tam doğru. Bu, bu platformlarda sadece ayak parmağına basarak sağa veya sola dönmenin mümkün olması için yapıldı.

Bir uçan kaykay nasıl çalışır?

Mini Segway cihazı

Tekerlekler

Yanlarda iki adet tekerlek bulunmaktadır. Tipik olarak uçan kaykaylar 4 tipte gelir ve sınıf ve tekerlek boyutu bakımından farklılık gösterir. Birinci uçan kaykay sınıfı, 4,5 inç çapında tekerleklere sahip bir çocuk uçan kaykayıdır. Küçük boy Tekerlekler uçan kaykayın yolun bazı kısımlarında çok kullanışsız ve geçilmez olmasına neden oluyor.

Bir sonraki sınıf 6,5 inçlik uçan kaykaydır. O zaten var daha büyük çap tekerlekler, ancak her şey aynı zamanda yalnızca düz yüzeylerde sürüş için tasarlanmıştır. 8 inçlik uçan kaykay, tüm uçan kaykaylar arasında altın ortalamadır. Hemen hemen her yolun üstesinden gelebilecek en uygun tekerlek boyutuna sahiptir.

Ve en büyüğü, tüm mini Segways'in SUV'sidir - 10 inçlik uçan kaykay. Bu bir modeldir ilginç özellik Bu tekerleklerde büyük tekerleklerin yanı sıra hazne sistemi de bulunmaktadır. Yani tekerlekler şişirilebilir, daha yumuşak bir sürüşe sahiptir ve bu tür uçan kaykaylar, daha küçük prototiplere göre aşınmaya daha dayanıklıdır.

Çerçeve

Tüm uçan kaykayların gövdesi malzemeden yapılmıştır farklı malzemeler, ancak aynı özelliğe sahip. Muhafaza tekerlekleri her yerde kaplayarak onları su sıçramalarına, kire, suya, kar ve toza karşı korur. 4.5 ve 6 numaralı küçük tekerlekli uçan kaykaylar genellikle sıradan plastikten yapılır. Bu modeller düz bir yolda sürüş için tasarlandığından ve bu kadar yüksek bir hız geliştirmediğinden, mühendisler pahalı plastik yerleştirmemeye ve dolayısıyla uçan kaykayın fiyatını artırmamaya karar verdi.

8 inç tekerlekli uçan kaykayların gövdeleri şunlardan yapılmıştır: çeşitli malzemeler Hem basit plastikten hem de karbon, darbeye dayanıklı magnezyum plastikten. Bu tür plastik neredeyse her türlü fiziksel darbeye ve darbeye dayanabilir. Örneğin karbon aynı zamanda hafif malzeme böylece elektrik motorları üzerindeki yük azalır ve akünün boşalma hızı azalır.

Motorlar

Kapağı çıkardığınızda tekerleğe yakın kenarlarda bir elektrik motoru görmelisiniz. Elektrik motorları farklı kapasitelerde gelir. Tüm mini Segway'ler arasında ortalama her iki tekerlekte de 700 watt'tır. Veya tekerlek başına 350 watt. Gerçek şu ki uçan kaykayların elektrik motorları birbirinden bağımsız çalışıyor. Bir tekerlek bir hızda, diğeri başka bir hızda hareket edebilir veya aynı yönde hareket edebilir. farklı taraflar, bir geri, bir ileri. Böylece bu sistem uçan kaykayın kontrol edilebilirliğini sağlıyor.

Yüksek hızda viraj alırken daha hassas hale gelir. Ayrıca 360 derece dönebilirsiniz. Motor gücü ne kadar yüksek olursa, taşınan yük de o kadar yüksek olur ve hız da o kadar yüksek olur, ancak her zaman değil. Platformdaki yükün kütlesi ne kadar yüksek olursa, hızın o kadar düşük olacağını ve akünün daha hızlı boşalacağını anlamalısınız. Bu nedenle uçan kaykaylar güçlü motorlar daha pahalıdır.

Dengeleme sistemi

Dengeleme sistemi pek çok bileşenden oluşur ve içerir. Öncelikle bunlar platformun sağ ve sol taraflarında bulunan iki jiroskopik sensördür. Muhafaza kapağını çıkarırsanız, iki yardımcı kart görebilirsiniz, jiroskopik sensörler onlara bağlıdır. Yardımcı kartlar bilgilerin işlenmesine ve işlemciye gönderilmesine yardımcı olur.

Ayrıca sağ tarafta ana kartı görebilirsiniz, burası 32 bit işlemcinin bulunduğu ve tüm kontrol ve hesaplamaların yapıldığı yerdir. Sağda veya solda platformda yapılacak herhangi bir değişikliğe tepki veren bir program da bulunmaktadır.

Platform öne doğru eğilirse, bilgiyi işleyen işlemci, kartı fiziksel olarak düz bir konumda tutan elektrik motorlarına bir sinyal gönderir. Ancak platform belirli bir basınçla daha fazla eğilirse tekerlek hemen ileri veya geri hareket etmeye başlar.

Mevcut tüm uçan kaykayların jiroskopik sensörler için iki yardımcı panele ve işlemcinin bulunduğu bir ana karta sahip olması gerektiğini unutmamak gerekir. Eski modeller iki kartlı sisteme sahip olabilir, ancak 2015 sonbaharından bu yana standartta bir değişiklik yapıldı ve artık tüm uçan kaykaylar ve mini Segway'ler 3 kartla yapılıyor.

Çin sahte veya düşük kaliteli uçan kaykaylarda, ana olan bir tahta olabilir. Ne yazık ki, bu mini Segway'in kullanım özellikleri zayıf. Titreşime neden olabilir veya sürücünün devrilmesi mümkündür. Ve daha sonra tüm sistem tamamen başarısız olabilir.

Şema iç yapı Bir uçan kaykayın kontrol edilmesi göründüğü kadar zor değildir. Sistemin tamamı, platformun herhangi bir davranışına mümkün olduğunca hızlı yanıt verecek şekilde tasarlanmıştır. Hesaplama saniyeler içinde ve inanılmaz bir doğrulukla gerçekleştirilir.

Pil

Uçan kaykayın güç kaynağı sistemi iki veya daha fazla pille çalışır. Standart ucuz modeller genellikle 4400 mAh kapasiteli bir bataryaya sahiptir. Akü, tüm sistemin bir bütün olarak çalışmasından ve ona elektrik sağlanmasından sorumludur, dolayısıyla akünün kaliteli ve markalı olması gerekir. Genellikle iki marka pil kullanılır - Samsung ve LG.

Piller sınıfa göre de farklılık gösterir. 1C, 2C sınıflarının düşük seviyeli pilleri vardır. Bu tür piller genellikle 4,5 ve 6,5 inç tekerlekli uçan kaykaylara takılır. Hepsi aynı nedenden ötürü, çünkü bu uçan kaykaylar düzgün yollar, pürüzsüz asfalt, mermer veya zeminler için tasarlandı.

8 inç tekerlekli uçan kaykaylar genellikle orta sınıf 3C piller kullanır; bu daha güvenilir bir pil modelidir. Ani duruşlarda veya kaldırıma veya çukura çarpıldığında kapanmayacaktır.

Büyük tekerlekli 10 inçlik modellerde genellikle 5C sınıfı piller bulunur. Bu uçan kaykay neredeyse her yolda, zeminde, su birikintisinde veya çukurda sürüş yeteneğine sahiptir. Bu nedenle pilin daha güvenilir olması gerekiyor.

Hoverboard'un temel prensibi dengeyi korumaktır. Büyük bir sürücü ağırlığı nedeniyle uçan kaykayın manevra yapmak ve hareket etmek için daha fazla elektriğe ihtiyacı var.

Diğer

Birçok uçan kaykayın ayrıca bir Bluetooth sistemi ve hoparlörleri vardır. Bununla birlikte en sevdiğiniz müziği dinleyebilir ve arkadaşlarınızla yolculuk yapabilirsiniz. Ancak bu sistem aynı zamanda akıllı telefonunuzu uçan kayağa bağlamanıza ve aracınızın durumunu izlemenize de olanak tanıyor. Ortalama hızınızı izleyebilir ve ne kadar mesafe kat ettiğinizi görebilirsiniz. İzin verilen maksimum hızı ve çok daha fazlasını ayarlayın.

Pek çok modelde arka ışık bulunur, karanlıkta yolunuzu aydınlatır ve aynı zamanda müzikle birlikte parlak bir şekilde yanıp sönebilir. Ancak müzik ve ışıklandırmanın pili çok tükettiğini unutmamalısınız. Pek çok kişi güç rezervini artırmak için arka ışığı tamamen kapatıyor.

Çözüm

Hoverboard kompakt ve hafif olmasının yanı sıra hızlı, güçlü ve dayanıklı olacak şekilde tasarlanmıştır. Önemli olan, başarısız bir sürüşten sonra onu sökmek zorunda kalmamak için gerekli tüm belgelere sahip güvenilir tedarikçilerden bir uçan kaykay satın almaktır.

Segway gibi karmaşık bir cihazı kendiniz yapmak gerçekten mümkün mü? Bunun mümkün olduğu ortaya çıktı. Yeterince titizlik gösterirseniz ve özel bilgi kullanırsanız. Mezun olan Petter Forsberg adlı genç bir mühendisin yaptığı da buydu. İsveç Chalmers Teknoloji Üniversitesi'nde Otomasyon ve Mekatronik diploması var.

Bilgi ve becerilerin yanı sıra çok paraya da ihtiyacı olacağını söylüyorsunuz. Evet, belirli bir dizi parça ve ekipmanı satın almak için paraya ihtiyaç vardı, ancak çok fazla değil, yaklaşık 300 avro. Çabalarının sonucu bu videoda:

Mekanik

Motorlar, tekerlekler, zincirler, dişliler ve piller iki ucuz Çin elektrikli scooterından alındı. Motorlar 24Volt, 300W, 2750 rpm sağlar.

Aktarım, motordaki küçük dişliden direksiyon simidindeki büyük dişliye kadar gerçekleştirilir. Oran yaklaşık 6:1'dir; daha iyi tork ve azaltılmış tork elde etmek için bu yüksek oran tercih edilir. azami hız. 12 inçlik tekerleğin şanzımanı bir serbest tekerlek mekanizmasına dayanıyordu, bu nedenle tekerleğin her iki yönde de sürülmesine izin vermek için gerekli değişikliklerin yapılması gerekiyordu.

Platformun temeli, her iki tekerleğin de dönmesi gereken sabit bir akstır. Aks, 5 mm'lik ayar vidalarıyla sabitlenen üç alüminyum blokla sabitlenmiştir.

Bir Segway'i kontrol ederken direksiyon kolonunu sola ve sağa eğerek dönebilmek için bir çizim yapıldı gerekli kısım SolidWorks programında yapıldıktan sonra CNC makinesinde üretildi. Makine programı CAMBAM kullanılarak yazılmıştır. Elektronik kutusunun üretiminde ve acil frenleme ünitesinin montajında ​​da aynı yöntem kullanıldı.

Gelecekteki Segway'in gidonu, borusu 25 mm'lik içi boş bir çelik boruya tutturulmuş sıradan bir bisiklet gidonu. Direksiyon kolonunu merkezde tutmak ve bir miktar kuvvet sağlamak için geri bildirim iki adet çelik yay kullanıldı. Direksiyon simidinde ayrıca araçtan gelen standart bir röleye bağlanan ve motor gücünü azaltabilen bir acil durum düğmesi de bulunmaktadır.

Güç kaynağı olarak 24V motorlarda kullanılan iki adet 12V 12Ah kurşun akü kullanılır.

Elektronik

Tüm baskılı devre kartları bu gelişmeye özel olarak üretildi. Ana kart, jiroskop (ADXRS614), ivmeölçer (ADXL203) ve trimpot gibi sensörlerden veri toplayarak hesaplamaları yapar ve buna göre hangi yöne dönmek istediğinizi belirleyebilir.

Ana işlemci AVR ATmega168. Dizüstü bilgisayarla bağlantı RN-41 kullanılarak Bluetooth aracılığıyla yapılır. İki H köprüsü, ana karttan gelen kontrol sinyallerini motorlar için güce dönüştürür. Her H köprüsünde bir ATmega168 bulunur, kartlar arasındaki iletişim UART aracılığıyla yapılır. Tüm elektronik cihazlar ayrı bir bataryayla (LiPo 7.4V 900mAh) çalışır.

Pilleri şarj etmek, ana kartı programlamak, kontrol döngüsü parametrelerini değiştirmek için kolay erişim sağlamak amacıyla, üst tarafta gerekli konektörler, bir elektronik güç anahtarı ve bir trim potansiyometresi bulunan küçük bir kutu yapıldı.

Yazılım

Mikrodenetleyici yazılımı temel olarak jiroskop ve ivmeölçer için bir filtre ve bir PD kontrol döngüsünden oluşur. Test için iki filtre alındı: Kalman ve Complenatry. Performanslarının çok benzer olduğu ortaya çıktı, ancak Tamamlayıcı filtre daha az hesaplama gerektirdiğinden kullanım için seçildi. Sensörlerin ve kontrol sinyallerinin tüm değerlerini, pil durumunu vb. görebilmeniz için uygulamalar Java ile de yazılmıştır.

Bu videoda kendi ellerinizle Segway yaratmanın teknik tarafı:


Bu makale kendi kendini dengeleyen bir aracın veya kısaca "Segway"in yaratılmasına bakacaktır. Bu cihazı oluşturmak için hemen hemen tüm malzemeler kolaylıkla temin edilebilir.

Cihazın kendisi sürücünün üzerinde durduğu bir platformdur. Gövdeyi eğerek iki elektrik motorları Dengelemeden sorumlu devreler ve mikrodenetleyiciler zinciri aracılığıyla.

Malzemeler:


-XBee kablosuz kontrol modülü.
-Arduino mikrodenetleyici
- piller
- “GY-521” modülü üzerinde InvenSense MPU-6050 sensörü,
-tahta bloklar
-düğme
-iki tekerlekli
ve makalede ve fotoğraflarda belirtilen diğer şeyler.

Birinci Adım: Gerekli özellikleri belirleyin ve sistemi tasarlayın.

Yazar, bu cihazı oluştururken aşağıdaki parametrelere uymasını sağlamaya çalıştı:
- Çakılda bile serbest hareket için gerekli arazi kabiliyeti ve gücü
-Cihazın en az bir saat sürekli çalışmasını sağlayacak yeterli kapasiteye sahip piller
-fırsat sağlamak Kablosuz kontrol, ayrıca sorun giderme için cihazın çalışmasıyla ilgili verileri bir SD karta kaydetme.

Ayrıca, yaratma maliyetlerinin de uygun olması arzu edilir. benzer cihaz orijinal arazi uçan kaykayının siparişinden daha azdı.

Aşağıdaki şemaya göre devreyi görebilirsiniz elektrik devresi kendini dengeleme araç.


Aşağıdaki resimde uçan kaykayın tahrik sistemi gösterilmektedir.


Yazar, Segway sistemlerini kontrol etmek için mikro denetleyici seçiminin çeşitli olduğunu söylüyor Arduino sistemi fiyat kategorileri nedeniyle en çok tercih edilen. Arduino Uno, Arduino Nano gibi kontrolörler uygundur veya ATmega 328'i ayrı bir çip olarak kullanmak üzere alabilirsiniz.

Çift köprülü motor kontrol devresine güç sağlamak için 24 V'luk bir besleme voltajı gereklidir; bu voltaja şu şekilde kolayca ulaşılabilir: seri bağlantı 12 V araç aküsü.

Sistem, motorlara yalnızca başlatma düğmesine basıldığında güç sağlanacak şekilde tasarlanmıştır; dolayısıyla hızlı bir durdurma için düğmeyi bırakmanız yeterlidir. Bu durumda Arduino platformunun hem köprü motor kontrol devresi hem de kablosuz kontrol modülü ile seri iletişimi desteklemesi gerekmektedir.

Hızlanmayı işleyen ve jiroskop fonksiyonlarını taşıyan “GY-521” modülü üzerinde bulunan InvenSense MPU-6050 sensörü sayesinde eğim parametreleri ölçülüyor. Sensör iki ayrı genişletme kartına yerleştirildi. L2c veri yolu Arduino mikro denetleyicisi ile iletişimi destekler. Ayrıca 0x68 adresli eğim sensörü her 20 ms'de bir yoklama yapacak ve Arduino mikrodenetleyicisine kesinti sağlayacak şekilde programlandı. Diğer sensörün adresi 0x69'dur ve doğrudan Arduino'ya bağlanır.

Kullanıcı scooter platformunun üzerinde durduğunda, Segway'i dengelemek için algoritma modunu etkinleştiren yük sınırlama anahtarı tetiklenir.

İkinci adım: Uçan kaykayın gövdesini oluşturmak ve ana elemanları kurmak.


Yazar, uçan kaykayın çalışma şemasının temel konseptini belirledikten sonra doğrudan gövdesini birleştirmeye ve ana parçaları kurmaya başladı. Ana malzeme şuydu: ahşap panolar ve barlar. Ağacın ağırlığının az olması pilin şarj süresini olumlu etkileyecektir, ayrıca ahşabın işlenmesi kolaydır ve yalıtkandır. Bu kartlardan pillerin, motorların ve mikro devrelerin takılacağı bir kutu yapıldı. Böylece U şeklinde olduğu ortaya çıktı ahşap detay tekerleklerin ve motorların cıvatalarla bağlandığı.

Motor gücü bir dişli tahrik vasıtasıyla tekerleklere aktarılacaktır. Ana bileşenleri Segway'in gövdesine yerleştirirken, Segway'i dik çalışma pozisyonuna getirirken ağırlığın eşit şekilde dağıtılmasını sağlamak çok önemlidir. Bu nedenle ağır akülerden gelen ağırlığın dağılımını dikkate almazsanız cihazın dengelenmesi zor olacaktır.

Bu durumda yazar, cihaz gövdesinin ortasında bulunan motorun ağırlığını telafi etmek için pilleri arkaya yerleştirmiştir. Cihazın elektronik bileşenleri motor ile akülerin arasında bir yere yerleştirildi. Sonraki testler için Segway koluna geçici bir başlatma düğmesi de takıldı.

Üçüncü adım: Elektrik şeması.



Yukarıdaki şemaya göre tüm teller Segway gövdesine monte edilmiştir. Ayrıca aşağıdaki tabloya uygun olarak Arduino mikrokontrolcünün tüm pinleri köprü motor kontrol devresine ve dengeleme sensörlerine bağlandı.


Aşağıdaki şemada yatay olarak monte edilmiş bir eğim sensörü, kontrol sensörünün ise Y ekseni boyunca dikey olarak monte edildiği gösterilmektedir.



Dördüncü adım: Cihazın test edilmesi ve kurulması.


Önceki aşamaları tamamladıktan sonra yazar test için bir Segway modeli aldı.

Test yaparken, test alanının güvenliği gibi faktörlerin yanı sıra koruyucu kalkanlar ve sürücü için kask şeklindeki koruyucu ekipmanların dikkate alınması önemlidir.

Segway gibi denge kurabilen bir robot yaratmak için Arduino'yu nasıl kullanabileceğinizi konuşalım.

İngilizce'den Segway. Segway, elektrikli tahrikle donatılmış iki tekerlekli ayakta duran bir araçtır. Bunlara uçan kaykaylar veya elektrikli scooterlar da denir.

Segway'in nasıl çalıştığını hiç merak ettiniz mi? Bu dersimizde tıpkı Segway gibi kendi kendini dengeleyen bir Arduino robotunun nasıl yapılacağını size göstermeye çalışacağız.

Robotu dengelemek için motorların robotun düşmesine direnmesi gerekir. Bu eylem geri bildirim ve düzeltici unsurlar gerektirir. Geri bildirim öğesi - üç eksenin hepsinde () hem hızlanma hem de dönüş sağlar. Arduino bunu robotun mevcut yönünü bilmek için kullanır. Düzeltici unsur motor ve tekerleğin birleşimidir.

Nihai sonuç şöyle bir şey olmalı:

Robot diyagramı

L298N Motor Sürücü Modülü:

Dişli motor doğru akım tekerlekli:

Kendi kendini dengeleyen bir robot aslında ters çevrilmiş bir sarkaçtır. Kütle merkezinin tekerlek akslarına göre daha yüksek olması daha iyi dengelenebilir. Daha yüksek bir kütle merkezi, daha düşük bir açısal ivmeye (daha yavaş düşme) karşılık gelen kütlenin daha yüksek bir atalet momenti anlamına gelir. Bu yüzden pil takımını üste koyduk. Ancak robotun yüksekliği malzemelerin mevcudiyetine göre seçildi :)

Kendi kendini dengeleyen robotun tamamlanmış hali yukarıdaki şekilde görülebilir. Üst kısımda güç için altı adet Ni-Cd pil var baskılı devre kartı. Motorların arasında motor sürücüsü için 9 voltluk akü kullanılmaktadır.

Teori

Kontrol teorisinde, bazı değişkenleri (bu durumda robotun konumu) tutmak, PID (orantılı integral türev) adı verilen özel bir kontrolör gerektirir. Bu parametrelerin her birinin genellikle Kp, Ki ve Kd olarak adlandırılan bir "kazancı" vardır. PID, istenen değer (veya giriş) ile gerçek değer (veya çıkış) arasında düzeltme sağlar. Giriş ve çıkış arasındaki farka "hata" denir.

PID denetleyici, çıkışı sürekli olarak ayarlayarak hatayı mümkün olan en küçük değere düşürür. Kendimizi dengelememizde arduino robotu giriş (derece cinsinden istenen eğimdir) yazılım tarafından ayarlanır. MPU6050, robotun mevcut eğimini okur ve bunu, motoru kontrol etmek ve robotu dik tutmak için hesaplamalar yapan PID algoritmasına besler.

PID, Kp, Ki ve Kd değerlerinin ayarlanmasını gerektirir optimum değerler. Mühendisler kullanıyor yazılım Bu değerleri otomatik olarak hesaplamak için MATLAB gibi. Ne yazık ki bizim durumumuzda MATLAB'ı kullanamıyoruz çünkü bu projeyi daha da karmaşık hale getirecek. Bunun yerine PID değerlerini ayarlayacağız. Bunu nasıl yapacağınız aşağıda açıklanmıştır:

  1. Kp, Ki ve Kd'yi sıfıra eşitleyin.
  2. Kp'yi ayarlayın. Çok küçük bir Kp, düzeltmenin yeterli olmaması nedeniyle robotun düşmesine neden olacaktır. Çok fazla Kp, robotun çılgınca ileri geri hareket etmesine neden olur. İyi bir Kp, robotun biraz ileri geri hareket etmesini (veya biraz salınmasını) sağlayacaktır.
  3. Kp ayarlandıktan sonra Kd'yi ayarlayın. İyi bir Kd değeri, robot neredeyse stabil hale gelinceye kadar salınımları azaltacaktır. Ayrıca doğru Kd, itilse bile robotu tutacaktır.
  4. Son olarak Ki'yi yükleyin. Açıldığında robot, Kp ve Kd ayarlanmış olsa bile salınım yapacak, ancak zamanla dengelenecektir. Doğru Ki değeri robotu dengelemek için gereken süreyi azaltacaktır.

Robotun davranışı aşağıdaki videoda görülebilir:

Kendini dengeleyen robot için Arduino kodu

Robotumuzu oluşturmak için dört harici kütüphaneye ihtiyacımız vardı. PID kütüphanesi P, I ve D değerlerinin hesaplanmasını kolaylaştırır.LMotorController kütüphanesi L298N modülü ile iki motorun kontrol edilmesi için kullanılır. I2Cdev kitaplığı ve MPU6050_6_Axis_MotionApps20 kitaplığı, MPU6050'den veri okumak için tasarlanmıştır. Kütüphaneler dahil kodu bu depodan indirebilirsiniz.

#katmak #katmak #include "I2Cdev.h" #include "MPU6050_6Axis_MotionApps20.h" #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE #include "Wire.h" #endif #define MIN_ABS_SPEED 20 MPU6050 mpu; // MPU kontrolü/durumu değişir bool dmpReady = false; // DMP başlatma işlemi başarılı olursa doğru olarak ayarlayın uint8_t mpuIntStatus; // MPU uint8_t devStatus'tan gerçek kesme durumu baytını tutar; // her cihaz işleminden sonra durumu döndür (0 = başarı, !0 = hata) uint16_t packageSize; // beklenen DMP paket boyutu (varsayılan 42 bayttır) uint16_t fifoCount; // şu anda FIFO'da bulunan tüm baytların sayısı uint8_t fifoBuffer; // FIFO depolama tamponu // yönelim/hareket değişkenleri Quaternion q; // kuaterniyon konteyneri VectorFloat yerçekimi; // yerçekimi vektörü float ypr; //yaw/pitch/roll konteyner ve yerçekimi vektörü //PID double orijinalAyar noktası = 173; çift ​​ayar noktası = orijinal Ayar noktası; çift ​​​​hareketli Açı Kayması = 0,1; çift ​​giriş, çıkış; //bu değerleri kendi tasarımınıza uyacak şekilde ayarlayın double Kp = 50; çift ​​Kd = 1,4; çift ​​Ki = 60; PID pid(&giriş, &çıkış, &ayar noktası, Kp, Ki, Kd, ​​​DIRECT); çift ​​motorHız FaktörüSol = 0,6; çift ​​motorHız FaktörüSağ = 0,5; //MOTOR KONTROL CİHAZI int ENA = 5; int IN1 = 6; int IN2 = 7; int IN3 = 8; int IN4 = 9; int ENB = 10; LMotorController motorController(ENA, IN1, IN2, ENB, IN3, IN4, motorSpeedFactorLeft, motorSpeedFactorRight); uçucu bool mpuInterrupt = false; // MPU kesme pininin yüksek seviyeye çıkıp çıkmadığını gösterir void dmpDataReady() ( mpuInterrupt = true; ) void setup() ( // I2C veriyoluna katılın (I2Cdev kütüphanesi bunu otomatik olarak yapmaz) #if I2CDEV_IMPLEMENTATION == I2CDEV_ARDUINO_WIRE Wire.begin( ); TWBR = 24; // 400kHz I2C saati (CPU 8MHz ise 200kHz) #elif I2CDEV_IMPLEMENTATION == I2CDEV_BUILTIN_FASTWIRE Fastwire::setup(400, true); #endif mpu.initialize(); devStatus = mpu.dmpInitialize(); // burada minimum hassasiyete göre ölçeklendirilmiş kendi jiroskop ofsetlerinizi sağlayın mpu.setXGyroOffset(220); mpu.setYGyroOffset(76); mpu.setZGyroOffset(-85); mpu.setZAccelOffset(1788); // Testim için 1688 fabrika varsayılanı chip // çalıştığından emin olun (eğer öyleyse 0 döndürür) if (devStatus == 0) ( // artık hazır olduğuna göre DMP'yi açın mpu.setDMPEnabled(true); // Arduino kesme algılamayı etkinleştirin Interrupt(0 , dmpDataReady, RISING); mpuIntStatus = mpu.getIntStatus(); // DMP Hazır bayrağımızı ana loop() işlevinin onu kullanmanın sorun olmayacağını bilmesi için ayarlayın dmpReady = true; // daha sonra karşılaştırma için beklenen DMP paket boyutunu alın packageSize = mpu.dmpGetFIFOPacketSize(); //PID kurulumu pid.SetMode(AUTOMATIC); pid.SetSampleTime(10); pid. SetOutputLimits(-255, 255); ) else ( // HATA! // 1 = ilk bellek yüklemesi başarısız oldu // 2 = DMP yapılandırma güncellemeleri başarısız oldu // (eğer bozulacaksa, genellikle kod 1 olacaktır) Serial.print(F("DMP Başlatma) başarısız oldu (code ")); Serial.print(devStatus); Serial.println(F()")); ) ) void loop() ( // eğer programlama başarısız olursa, hiçbir şey yapmaya çalışmayın if (!dmpReady ) dönüş; // (!mpuInterrupt && fifoCount) sırasında MPU kesintisini veya mevcut ekstra paket(ler)i bekleyin< packetSize) { //no mpu data - performing PID calculations and output to motors pid.Compute(); motorController.move(output, MIN_ABS_SPEED); } // reset interrupt flag and get INT_STATUS byte mpuInterrupt = false; mpuIntStatus = mpu.getIntStatus(); // get current FIFO count fifoCount = mpu.getFIFOCount(); // check for overflow (this should never happen unless our code is too inefficient) if ((mpuIntStatus & 0x10) || fifoCount == 1024) { // reset so we can continue cleanly mpu.resetFIFO(); Serial.println(F("FIFO overflow!")); // otherwise, check for DMP data ready interrupt (this should happen frequently) } else if (mpuIntStatus & 0x02) { // wait for correct available data length, should be a VERY short wait while (fifoCount < packetSize) fifoCount = mpu.getFIFOCount(); // read a packet from FIFO mpu.getFIFOBytes(fifoBuffer, packetSize); // track FIFO count here in case there is >1 paket mevcut // (bu, kesintiyi beklemeden hemen daha fazlasını okumamızı sağlar) fifoCount -= packageSize; mpu.dmpGetQuaternion(&q, fifoBuffer); mpu.dmpGetGravity(&yerçekimi, &q); mpu.dmpGetYawPitchRoll(ypr, &q, &yerçekimi); giriş = ypr * 180/M_PI + 180; ))

Kp, Ki, Kd değerleri çalışabilir veya çalışmayabilir. Yapmazlarsa yukarıdaki adımları izleyin. Koddaki eğimin 173 dereceye ayarlandığını unutmayın. İsterseniz bu değeri değiştirebilirsiniz ancak bunun robotun koruması gereken eğim açısı olduğunu unutmayın. Ayrıca motorlarınız çok hızlı ise motorSpeedFactorLeft ve motorSpeedFactorRight değerlerini ayarlayabilirsiniz.

Şimdilik bu kadar. Görüşürüz.