Hoverboard BLDC Motor vs Odrive 3.6 Setup

  • Konuyu başlatan Konuyu başlatan fide
  • Başlama tarihi Başlama tarihi

fide

Meraklı ve "nasıl" sorusunu seven biri
Katılım
8 Eylül 2021
Mesajlar
2,197
Tezim için Hoverboard BLDC Motor ve Odrive 3.6 sürücü kart ile bir araç yapmaya çlışıyorum. Daha önce Hall effect sensör ile çalıştırmıştım ama şimdi incremental encoder ile güncellemeye çalıştırmak istiyorum.

2~3 gündür uğraşıyorum ama ilerleyemedim.

In [124]: dump_errors(dev0)
system: no error
axis0
axis: Error(s):
AxisError.MOTOR_FAILED
motor: Error(s):
MotorError.PHASE_RESISTANCE_OUT_OF_RANGE
DRV fault: none
sensorless_estimator: no error
encoder: no error
controller: no error
axis1
axis: no error
motor: no error
DRV fault: none
sensorless_estimator: no error
encoder: no error
controller: no error

Aldığım hata yukarıda.

Setup ise aşağıda.
dev0.axis0.motor.config.pole_pairs = 15

dev0.axis1.motor.config.pole_pairs = 15

Because the motors have a high resistance, you need to increase the calibration voltage.

dev0.axis0.motor.config.resistance_calib_max_voltage = 4

dev0.axis1.motor.config.resistance_calib_max_voltage = 4

Lower the current range to get a better reading.

dev0.axis0.motor.config.requested_current_range = 25

dev0.axis1.motor.config.requested_current_range = 25

Lower the bandwidth to get better control.

dev0.axis0.motor.config.current_control_bandwidth = 100

dev0.axis1.motor.config.current_control_bandwidth = 100

Enter the estimated torque constant.

dev0.axis0.motor.config.torque_constant = 8.27 / 16

dev0.axis1.motor.config.torque_constant = 8.27 / 16

The hoverboard motors use hall effect sensors.

dev0.axis0.encoder.config.mode = ENCODER_MODE_HALL

dev0.axis1.encoder.config.mode = ENCODER_MODE_HALL

The hall effect sensors in combination with the magnets produce 90 counts per revolution.

dev0.axis0.encoder.config.cpr = 90

dev0.axis1.encoder.config.cpr = 90

To get better alignment, use 150 pulses for the calibration.

dev0.axis0.encoder.config.calib_scan_distance = 150

dev0.axis1.encoder.config.calib_scan_distance = 150

dev0.axis0.encoder.config.bandwidth = 100

dev0.axis1.encoder.config.bandwidth = 100

Set the controller gains.

dev0.axis0.controller.config.pos_gain = 1

dev0.axis1.controller.config.pos_gain = 1

dev0.axis0.controller.config.vel_gain = 0.02 * dev0.axis0.motor.config.torque_constant * dev0.axis0.encoder.config.cpr

dev0.axis1.controller.config.vel_gain = 0.02 * dev0.axis1.motor.config.torque_constant * dev0.axis1.encoder.config.cpr

dev0.axis0.controller.config.vel_integrator_gain = 0.1 * dev0.axis0.motor.config.torque_constant * dev0.axis0.encoder.config.cpr

dev0.axis1.controller.config.vel_integrator_gain = 0.1 * dev0.axis1.motor.config.torque_constant * dev0.axis1.encoder.config.cpr

Set the velocity limit.

dev0.axis0.controller.config.vel_limit = 10

dev0.axis1.controller.config.vel_limit = 10

Set the control mode to velocity.

dev0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL

dev0.axis1.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL

If you are using the latest firmware version.

dev0.config.enable_brake_resistor = True

After changing settings, use save and reboot.

dev0.save_configuration()

dev0.reboot()
 
BLDC motor ile projeye başladığıma pişman oldum ama çözmem lazım bu olayı.

Motor sargısı DC direnci 0.9R

Daha önce aynı konuyu açmıştım ama şimdi bu konu ilgili olsa da encoderden dolayı farklı bir yerde.

 
Gelişme var suçluyu buldum ama şimdilik sonuç yok.
Hall effect sensor yerine encoder kullanınca vel_gain ve pos_gain değerleri değişiyor.

Hall effect sensor için setupta aşağıdaki ayarlar var:
dev0.axis0.controller.config.pos_gain = 1
dev0.axis0.controller.config.vel_gain = 0.02 * dev0.axis0.motor.config.torque_constant * dev0.axis0.encoder.config.cpr
dev0.axis0.controller.config.vel_integrator_gain = 0.1 * dev0.axis0.motor.config.torque_constant * dev0.axis0.encoder.config.cpr

E6B2-CWZ6C 500 pulse encoder için haliyle bu değerler değişiyor. Chatgptye sorup değerleri değiştirdim ama sonuca ulaşamadım.
 
Önce Omron E6B2-CWZ6C ile 1/2 oranda dişli ile kontrol sağlamaya çalıştım ama sürekli olarak motor faz direnci güvenli alanın dışında uyarısı aldım.
IMG_20250404_172605.jpg



Sonrasında sıkıntının motor kaynaklı olduğunu buldum. Aynı setup (kalibrasyon dahil) bir mıtırda çalışırken diğerinde phase_resistance out of range hatası verdi.
Motoru değiştirdim. Dişliler yeni motora sığmadı. Onları da değiştirdim. Buradaki oran 1/1 yan motorun bir devri encoderin de bir devri gali e geldi.

IMG-20250410-WA0010.jpeg




IMG-20250410-WA0006.jpeg
 


 
Toz toplama riskine girmek istemedim. Toz giderek artacak ve ortaya lavabo gideri gibi iğrenç birşey çıkacak.
 
Konuyla alakası yok ama 1~2 görsel daha paylaşayım robottan.
1744450132256.png


1744450146227.png

Lidar Holder. Daha önce lazer kesim saç üzerine sabitlenen Lidarı 3d yazıcı bastığım malzeme ile sigma profil üzerine taşıdım. Hem yer açıldı hem de biraz daha estetik oldu.

1744450221214.png

1744450232348.png


 
Toz toplama riskine girmek istemedim. Toz giderek artacak ve ortaya lavabo gideri gibi iğrenç birşey çıkacak.
Deney için idare eder, ama dışarıda çalışınca çamur da işin içine girer tozda plastiği aşındırır.
Enkoderi motor destek mile yakın yerleştirerek tekerliğe bağlı yuvarlak kutu ile muhafaza etmekte yarar var. Kutu ile sabit mil arasına eklenmiş toz keçesi ise dış etkenlerden korur. Aşağıdakı link örnek olarak verilmiş, keçelerin baya çeşitleri var.
 
Korumayı kendim de basabilirim ama kullanım alanı iç mekanda beton yada parke zemin olacak. Çamur yada irili ufaklı parça ihtimali yok ama toz birikmesi olabilir. Şu anda doktora tezim olan robotu bitirmeye çalışıyorum. Konu gerçek uygulamaya dönerse başka alternatiflerim var.
 

Forum istatistikleri

Konular
7,582
Mesajlar
126,796
Üyeler
3,071
Son üye
tekin124

Son kaynaklar

Son profil mesajları

Python Geliştirmeye eklediğim yapay zeka sunucusu, yeni başlayanlar için roket etkisi
Bir insanın zeka seviyesinin en kolay tesbiti, sorduğu sorulardır.
yapay zeka interneti yedi bitirdi, arama motoru kullanan, forumlara yazan kaldı mı ?
Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
az bilgili çok meraklı
Back
Top