Denge sensörü kodunu nasıl servo sürücü koduna uyarlarım?

Robotu dengede tutmak ve denge ile hareket etmesi için asağıda motor balans kodu var. Yalnız ben motor sürücü kullanıyorum ve sadece +1,-1 seklinde belirttiğin süre boyunca ileri geri diyor, dutycycle yok.360 derece servo kullanıyorum. Motor balans kodu ise raspberry’nin gpio girisleri için yazılmıs. pid ile dutycycle’a ince ayar veriyor. sürücüme kodu nasıl uyarlayacağımı çözemedim. dutycycle yerine ileri geri gidis süresini mi ayarlamak lazım? Bilen arkadaslar yardımcı olursa sevinirim.

Servo sürücüsü motor çalıstırma kodu:
https://github.com/adafruit/Adafruit_CircuitPython_ServoKit/blob/master/examples/servokit_simpletest.py

Motor balans kodu:
https://github.com/shivaay1/Equsant-Self-Balancing-Robot-Python/blob/master/equsant.py

Selam. Sorun iki konu arasinda atlayip duruyor. Cumleleri su sekilde duzenlersek atlamayi minimuma indirip anlasilabilirligi artirabilecegimizi dusunuyorum:

Robotu dengede tutmak ve denge ile hareket etmesi için asağıda motor balans kodu var. Motor balans kodu:
https://github.com/shivaay1/Equsant-Self-Balancing-Robot-Python/blob/master/equsant.py

Motor balans kodu ise raspberry’nin gpio girisleri için yazılmıs. pid ile dutycycle’a ince ayar veriyor.

Yalnız ben motor sürücü kullanıyorum ve sadece +1,-1 seklinde belirttiğin süre boyunca ileri geri diyor, dutycycle yok.360 derece servo kullanıyorum. sürücüme kodu nasıl uyarlayacağımı çözemedim. dutycycle yerine ileri geri gidis süresini mi ayarlamak lazım? Bilen arkadaslar yardımcı olursa sevinirim.

Servo sürücüsü motor çalıstırma kodu:
https://github.com/adafruit/Adafruit_CircuitPython_ServoKit/blob/master/examples/servokit_simpletest.py

Motor balans kodu nasil bir fiziksel setup icin yazilmis? Gercekte nasil bir fiziksel setup var?

Çok teşekkür ederim.

  • Motor balans kodu mpu6050 denge sensörü için yazılmış. Raspberry pi’nin Gpio girişlerinden bağlanan 180 yada 360 derece servolar için.

Motor balans python kodunda pid kodunu import etmişler. Duytcycle değerine ince ayar yaparak robotun dengede durmasını sağlıyor.

  • Gene mpu6050 denge sensörünü kullanmam gerekiyor. Bende ise raspberry’ye bağlanan PCA9685 motor sürücü ve 2 adet 360 servo motor var.

Pca9685 sürücünün python kodunda ise belirttiğin süre boyunca ileri,geri gitme durumu var.

Servolar klasik analog servo mu? Calisma voltaji 5V ve menzil 0°~N° ise, 0V verince 0°, 2.5V verince N/2° pozisyonuna gidiyorlar, etc.

Kodda PWM yapilmis ve devresine ve fiziksel insasina bakarak anlamayi tercih edecegim bir sekilde bazi durumlarda “ileri git”, bazi durumlarda “geri git”, bazilarinda ise “oyle kal” sinyalleri verilmis.

Ayrica belirgin bir zamanlama mekanigi yok; kod calisabildigi en hizli sekilde calisiyor.

Bu durumda senin yapman gereken forward, backward ve equilibrium fonksiyonlarini kendi devrene ve fiziksel insaatina gore duzenlemek.

PCA9685 surucusunun nasil calistigina bakacak vaktim (su anda) yok ama koddaki servolardan “continuous” olanini kullandigini varsayarsak (Adafruit kodunda iki adet degisik servonun iki degisik kontrol mekanizmasi ornek verilmis) backward durumunda +1 (veya -1), forward durumunda tersi ve equilibrium durumunda 0 yazman yeterli olabilir.

1 Beğeni

5v. 360 servolardan, klasik olması lazım çok fazla bilmiyorum tower pro 996r . Söylediklerinize katılıyorum. Bağlayıp deneyeceğim +1 veya -1 şeklinde olması gerekiyor tabiki ama tabi ne kadar hızlı ne kadar yavaş gidecek ne kadar saniye de gidecek felan bunlarında önemi var. Belkide olmayacak bir şey üzerine konuşuyoruz diyeceğim ama dengede duran robotlar hep bu servolarla yapılıyor belkide aldığım kart yanlıştır. Yada 360 derece servolar bu işe uygun değildir. Normal raspberry pi girişlerine 360 servo bağladığınız zaman hep dönüyor. Gücü kesme ile duruyor bu da motoların tutuşunu engelliyor. Bu yüzden kart aldım. Hani belki ince bir ayarını tecrübe edinmis birileri vardır diye yazmıştım ama söyledikleriniz yeterli oldu. Teşekkürler.

Hah tamam, benim bildigim de bunlar.
Ama simdi hatirladim, analog voltajla degil de gercekten PWM ile calisiyorlar. RPi veya PCA9685 ile kullanmadim ama surulebiliyor olmalari lazim.

Kesinlikle. PID controller’in P'sini (aslinda I'sini ve D'sini de) buna gore ayarlamak lazim.

Bu arada kontrol loop’unun suresini sabitlemek de iyi fikir. (Atiyorum) 50 ms’ye ayarlanir; hizli calisirsa bekler, yavas calisirsa uyari mesaji cikartir. Boylece kod yavasladiginda veya hizlandiginda P/I/D katsayilarinin degismesi gerekmez.

Aslında bu kartında iç sistem kodlarına bakınca Duytcycle gördüm ama 360 derecelerde dışarıdan o kodlarla yönetemiyorsun. Kendi ayarlıyor herşeyi. 360 servolar raspberry pi’de stabil çalışmıyor, En son çare dc motor yada 180 derece motorlarla denemeler yapmak artık. Artık bir kaç deneme yapıp tecrübe etmek gerekiyor sanırım. Bilgiler için çok teşekkürler.