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.
 
Odrive Config:
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.
 
Eline saglik abi, acayip mutlu oldum. :saril:
 

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
6,524
Mesajlar
110,913
Üyeler
2,681
Son üye
Oğuzhan06

Son kaynaklar

Son profil mesajları

hakan8470 wrote on Dede's profile.
1717172721760.png
Dedecim bu gul mu karanfil mi? Gerci ne farkeder onu da anlamam. Gerci bunun anlamini da bilmem :gulus2:
Lyewor_ wrote on hakan8470's profile.
Takip edilmeye başlanmışım :D ❤️
Merhaba elektronik tutsakları...
Lyewor_ wrote on taydin's profile.
Merhabalar. Elektrik laboratuvarınız varsa bunun hakkında bir konunuz var mı acaba? Sizin laboratuvarınızı merak ettim de :)
Lyewor_ wrote on taydin's profile.
Merhabalar forumda yeniyim! Bir sorum olacaktı lcr meterler hakkında. Hem bobini ölçen hemde bobin direnci ölçen bir lcr meter var mı acaba?
Back
Top