Odrive BLDC Motor Sürücü Deneyimler

Kaynak olarak kullandığım videodan kod kısmını tek tek çıkarıp tekrar uyguladım. Bu noktada aynı Hall sensor not calibrated yet hatasını tekrar aldım.
Motorlardan birinin ya Hall effect sensörleri yada besleme kablosu gitmiş. Sensörler çıkış vermiyor.
Diğer motorda ise çıkış alıyorum ama aynı hatayı alıyorum.
Sonuç olarak başladığım yerdeyim.
 
Kaynak olarak kullandığım videodan kod kısmını tek tek çıkarıp tekrar uyguladım. Bu noktada aynı Hall sensor not calibrated yet hatasını tekrar aldım.
Motorlardan birinin ya Hall effect sensörleri yada besleme kablosu gitmiş. Sensörler çıkış vermiyor.
Diğer motorda ise çıkış alıyorum ama aynı hatayı alıyorum.
Sonuç olarak başladığım yerdeyim.
Abi en sabirli benim, sen hala ikinci siradasin :gulus2: :saril:
 
Bulasik makinasi var, trafo var, satilik 1507 var(Gerci ben satmiyorum bunu), var da var , hala dolaniyom etraflarinda
 
Bugün birkaç tane daha konfigürasyon denedim ama sonuç değişmedi.
ABZ enkoder bakmaya başladım. Sanırım Hall effect sensör ile bu motoru çalıştıramayacağım.
 
Kod:
dev0.axis0.motor.config.current_lim = 40
dev0.axis1.motor.config.current_lim = 40
dev0.config.enable_brake_resistor = True
#To calibrate axis 0:
dev0.axis0.motor.config.pole_pairs = 15
dev0.axis0.motor.config.resistance_calib_max_voltage = 4
dev0.axis0.motor.config.requested_current_range = 25
dev0.save_configuration()
dev0.reboot()

dev0.axis0.motor.config.current_control_bandwidth = 100
dev0.axis0.motor.config.torque_constant = 0.516875
dev0.axis0.encoder.config.mode = ENCODER_MODE_HALL
dev0.axis0.encoder.config.cpr = 90
dev0.axis0.encoder.config.calib_scan_distance = 150
dev0.config.gpio12_mode = GPIO_MODE_DIGITAL
dev0.config.gpio13_mode = GPIO_MODE_DIGITAL
dev0.config.gpio14_mode = GPIO_MODE_DIGITAL
dev0.axis0.encoder.config.bandwidth = 100
dev0.axis0.controller.config.pos_gain = 1
dev0.axis0.controller.config.vel_gain = 2.0
dev0.axis0.controller.config.vel_integrator_gain = 0
dev0.axis0.controller.config.vel_limit = 10
dev0.axis0.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL
dev0.save_configuration()
dev0.reboot()

dev0.axis0.requested_state = AXIS_STATE_MOTOR_CALIBRATION
dev0.axis0.motor
dev0.axis0.motor.config.pre_calibrated = True
dev0.axis0.requested_state = AXIS_STATE_ENCODER_HALL_POLARITY_CALIBRATION
dev0.axis0.encoder
dev0.axis0.requested_state = AXIS_STATE_ENCODER_OFFSET_CALIBRATION
dev0.axis0.encoder
dev0.axis0.encoder.config.pre_calibrated = True
dev0.save_configuration()
dev0.reboot()

#To test axis 0:
dev0.axis0.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
dev0.axis0.controller.input_vel = 2
dev0.axis0.controller.input_vel = 0
dev0.axis0.requested_state = AXIS_STATE_IDLE

#To calibrate axis 1:
dev0.axis1.motor.config.pole_pairs = 15
dev0.axis1.motor.config.resistance_calib_max_voltage = 4
dev0.axis1.motor.config.requested_current_range = 25
dev0.save_configuration()
dev0.reboot()

dev0.axis1.motor.config.current_control_bandwidth = 100
dev0.axis1.motor.config.torque_constant = 0.516875
dev0.axis1.encoder.config.mode = ENCODER_MODE_HALL
dev0.axis1.encoder.config.cpr = 90
dev0.axis1.encoder.config.calib_scan_distance = 150
dev0.config.gpio9_mode = GPIO_MODE_DIGITAL
dev0.config.gpio10_mode = GPIO_MODE_DIGITAL
dev0.config.gpio11_mode = GPIO_MODE_DIGITAL
dev0.axis1.encoder.config.bandwidth = 100
dev0.axis1.controller.config.pos_gain = 1
dev0.axis1.controller.config.vel_gain = 2.0
dev0.axis1.controller.config.vel_integrator_gain = 0
dev0.axis1.controller.config.vel_limit = 10
dev0.axis1.controller.config.control_mode = CONTROL_MODE_VELOCITY_CONTROL
dev0.save_configuration()
dev0.reboot()

dev0.axis1.requested_state = AXIS_STATE_MOTOR_CALIBRATION
dev0.axis1.motor
dev0.axis1.motor.config.pre_calibrated = True
dev0.axis1.requested_state = AXIS_STATE_ENCODER_HALL_POLARITY_CALIBRATION
dev0.axis1.encoder
dev0.axis1.requested_state = AXIS_STATE_ENCODER_OFFSET_CALIBRATION
dev0.axis1.encoder
dev0.axis1.encoder.config.pre_calibrated = True
dev0.save_configuration()
dev0.reboot()

#To test axis 1:
dev0.axis1.requested_state = AXIS_STATE_CLOSED_LOOP_CONTROL
dev0.axis1.controller.input_vel = 2
dev0.axis1.controller.input_vel = 0
dev0.axis1.requested_state = AXIS_STATE_IDLE

#To set up RC PWM
dev0.config.gpio3_mode = GPIO_MODE_PWM
dev0.config.gpio3_pwm_mapping.min = -2
dev0.config.gpio3_pwm_mapping.max = 2
dev0.config.gpio3_pwm_mapping.endpoint = dev0.axis1.controller._input_vel_property
dev0.config.gpio4_mode = GPIO_MODE_PWM
dev0.config.gpio4_pwm_mapping.min = -2
dev0.config.gpio4_pwm_mapping.max = 2
dev0.config.gpio4_pwm_mapping.endpoint = dev0.axis0.controller._input_vel_property
dev0.save_configuration()
dev0.reboot()

#To start in closed loop state:
dev0.axis0.config.startup_closed_loop_control = True
dev0.axis1.config.startup_closed_loop_control = True
dev0.save_configuration()
dev0.reboot()

#Note that after setting the Odrive to start in closed loop state, you need to set all axes to be in IDLE if you want to make changes to the setup afterwards (this is for safety):
dev0.axis0.requested_state = AXIS_STATE_IDLE
dev0.axis1.requested_state = AXIS_STATE_IDLE

Bu sayfadaki konfigürasyon ile bir motoru çalıştırdım. şimdi sıra ikinci motorda.

 
Sanırım şuçluyu buldum. Sıkıntı çıkmasa şaşardım zaten.
Sıkıntı şu. Bir ayar yapılıyor. Sonra konfigurasyon saklanıyor.
Kayıt işleminden sonra reset atılıyor. Bu reset işlemlerinin birinde MCU işi yavaştan alıyor ve cevap veremiyor yada konfigürasyonu saklayamıyor. Bu da yaptığım ayarların hatırlanamaması ile sonuçlanıyor.
 

Sonunda iki motoru da kontrol etmeyi sağladım. Uart üzerinden izole şekilde iletişim de kurabiliyorum şimdi. Resetten sonra aynı konfigürasyon stabil çalışıyor mu ona bakıcam.
 
Son düzenleme:
1722871104177.png

Odrive ile ilgili komutlar anlam kazanmaya başladı.
Arayüz üzerinden yaptığım ayarlar seri port iletişim üzerinden sorgu ve komut şeklinde yazılabiliyormuş.
Bunu öğrendiğim iyi oldu.
Bu sayede uart üzerinden karta reset atılması, motor konfigürasyonunun yenilenmesi gibi işlerde kullanılabileceğini gösteriyor.
Şimdi python ile sağlam bir kontrol algoritması yazmak gerekiyor.
 
1722871961779.png

USB / Uart izolasyon devresi
Kollektörlerdeki 1k dirençler 330R olarak takılmalı. Değerleri değiştirmeyi unutmuşum.
 

Forum istatistikleri

Konular
7,285
Mesajlar
123,134
Üyeler
2,938
Son üye
oguzbaste

Son kaynaklar

Son profil mesajları

Freemont2.0 herbokolog Freemont2.0 wrote on herbokolog's profile.
nick iniz yakıyor
:D
Freemont2.0 posta Freemont2.0 wrote on posta's profile.
Merhabalar :)
az bilgili çok meraklı
Prooffy semih_s Prooffy wrote on semih_s's profile.
Merhaba, sizden DSO2C10 hakkında bilgi rica ettim. Yanıtlarsanız sevinirim...
Unal taydin Unal wrote on taydin's profile.
Timur Bey, Arduino kontrollü bir akü şarj cihazı yapmaya çalışıyorum. Aklımdaki fikri basit bir çizim olarak konu açmıştım. Özellikle sizin fikirlerinizi çok önemsiyorum.
Back
Top