Odrive BLDC Motor Sürücü Deneyimler

Harika gorunuyor. Hub motor baglantilari nasil ? Orada slipring mi var ? Yoksa motor tasarimi bunun icin yapildigindan onun icinde mi bir cozum var ?
 
Motor mili sabit, dışı dönen bir yapıya sahip. Kablolar sabitleme mili içinden çıkıyor. Bu sayede motorda (teker dışında) hareket eden parça yok.

1718179445460.png

Motorun gövdeye sabitlenmesi hidrolik alanında kullanılan bir tutucu ile yapıldı.
1718179407228.png


1718179483988.png
 
3 tane hall effect sensor var. Bir turda 90 pulse üretiyor.
1718179768654.png
 
Durum sasirtti beni , genelde odrive anahtar teslim rahat cozum gibi gorunuyordu. Ben pro'yu bekliyorum bakalim :)
Pro'nun kargosunu mu yoksa yeni versiyonunu mu? Yakışıklı ama çok pahalı.

1718179850500.png
 
Elinde datasheeti olan encoderli bldc varsa işin kolay.
Tecrübelerini paylaşırsan sevinirim
 
Odrive Config:
Device 368D387E3333: Not a genuine ODrive! Some features may not work as expected.
Reconnected to device 368D387E3333 as dev0
In [59]: dev0.axis0.requested_state = AXIS_STATE_MOTOR_CALIBRATION

In [60]: dev0.axis0.motor.error
Out[60]: 0

In [61]: dev0.axis0.motor.config.phase_inductance
    ...: dev0.axis0.motor.config.phase_resistance
Out[61]: 0.2752224802970886

In [62]: dev0.axis0.motor.config.phase_inductance
    ...:
    ...: dev0.axis0.motor.config.phase_resistance
Out[62]: 0.2752224802970886

In [63]: dev0.axis0.motor.config.phase_inductance
Out[63]: 0.0003735609061550349

In [64]: dev0.axis0.motor.config.pre_calibrated = True
    ...:

In [65]: dev0.axis0.requested_state = AXIS_STATE_ENCODER_OFFSET_CALIBRATION

In [66]: dump_errors(dev0)
system: no error
axis0
  axis: Error(s):
    AxisError.ENCODER_FAILED
  motor: no error
  DRV fault: none
  sensorless_estimator: no error
  encoder: Error(s):
    EncoderError.HALL_NOT_CALIBRATED_YET
  controller: no error
axis1
  axis: no error
  motor: no error
  DRV fault: none
  sensorless_estimator: no error
  encoder: no error
  controller: no error

Odrive ile tekrar uğraşmaya fırsat buldum.
konfigurasyon ile ilgili sıkıntını hall efftect sensor ve sensor kalibrasyonu ile ilgili olduğu kesinleşti.
En azından burada bir ilerleme kaydettim.
Hall effect konfigurasyona el atıp çözmeye çalışacağım. Olmaz ise ABZ encoder alıp bu enkoder ile çözüm arayacağım ama ortaya temiz bir iş çıkmayacak. O kesin.
 
Son düzenleme:
Abi merak ettim , benimkininde eli kulaginda. Sensorless mod'da denedin mi ?
 
Hall Effect Encoder çıktı:
In [13]: dev0.axis0.encoder.hall_state
Out[13]: 1

In [14]: dev0.axis0.encoder.hall_state
Out[14]: 6

In [15]: dev0.axis0.encoder.hall_state
Out[15]: 1

In [16]: dev0.axis0.encoder.hall_state
Out[16]: 4

In [17]: dev0.axis0.encoder.hall_state
Out[17]: 6

In [18]: dev0.axis0.encoder.hall_state
Out[18]: 2

In [19]: dev0.axis0.encoder.hall_state
Out[19]: 1

In [20]: dev0.axis0.encoder.hall_state
Out[20]: 5

In [21]: dev0.axis0.encoder.hall_state
Out[21]: 4

In [22]: dev0.axis0.encoder.hall_state
Out[22]: 6

In [23]: dev0.axis0.encoder.hall_state
Out[23]: 3

In [24]: dev0.axis0.encoder.pos_cpr_counts
Out[24]: 0.0

In [25]: dev0.axis0.encoder.pos_cpr_counts
Out[25]: 0.0

In [26]: dev0.axis0.encoder.hall_state
Out[26]: 1

Sanırım burada hall effect sensörü algılamakta sıkıntı yok. sıkıntı kalibrasyonda
 
O zaman bence kritik bir kismi atlamissiniz. Bence bir sonraki mesajda video gelir :)
 

Suçluyu buldum:

dev0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE
 
Odrivetool Hoverboard Motor Konfigürasyon:
dev0.erase_configuration()
dev0.config.enable_brake_resistor = True
dev0.config.brake_resistance = 2.0
dev0.config.dc_max_negative_current = -0.01

dev0.axis0.motor.config.pole_pairs = 15
dev0.axis0.motor.config.resistance_calib_max_voltage    #sorgu
dev0.axis0.motor.config.requested_current_range        #sorgu
dev0.axis0.motor.config.current_control_bandwidth        #sorgu
dev0.axis0.motor.config.current_control_bandwidth

dev0.axis0.motor.config.resistance_calib_max_voltage = 4
dev0.axis0.motor.config.requested_current_range = 25
dev0.axis0.motor.config.current_control_bandwidth = 100

dev0.axis0.motor.config.torque_constant = 8.27
dev0.axis0.encoder.config.mode = ENCODER_MODE_HALL
dev0.axis0.encoder.config.cpr = 90

dev0.axis0.encoder.config.calib_scan_distance             #sorgu
dev0.axis0.encoder.config.calib_scan_distance = 150

dev0.axis0.encoder.config.bandwidth                        #sorgu

dev0.axis0.encoder.config.bandwidth = 100
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
dev0.axis0.controller.config.vel_limit = 10
dev0.axis0.controller.config.control_mode = CONTROL_MODE_POSITION_CONTROL
dev0.save_configuration()
dev0.reboot()

dev0.axis0.requested_state = AXIS_STATE_MOTOR_CALIBRATION
dev0.axis0.motor.error

dev0.axis0.motor.config.phase_inductance
dev0.axis0.motor.config.phase_resistance
dev0.axis0.motor.config.pre_calibrated = True
dev0.axis0.requested_state = AXIS_STATE_ENCODER_OFFSET_CALIBRATION

dev0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE #önemli

Hoverboar motoru için odrivetool tam konfigürasyon ayarı yukarıda
 
Belki yukarıdaki gibi bir sayfa ile 2 ay önce karşılaşsam çok daha hızlı bir şekilde çözüme ulaşabilirdim ama sağlık olsun. Bundan sonra iş biraz daha kolay olacak.
 
Son düzenleme:
Odrive ile ilgili sayfaları karıştırırken ısrarla "isolation" konusuna vurgu yapılmış.
Odrive Pro ve Odrive S1 modellerinde izole Uart ve SPI kanalları var.


Ozdisan'dan H11L1 opto sipariş ettim. Uart hattı üzerine

1721204708741.png

H11L1M opto ile rx ve tx kanalları ayrı olmak üzere izolasyon yapacağım.
Ayrıntılarını buradan paylaşırım yine.
 
IMG_20240802_173825.jpg

Bugün odrive ile Indabot Mini'yi birleştirdim. Artık yürüme aşamasına geçmek istiyorum.

2-3 post önceki konfigürasyonu uyguladım ama hala encoder hatası alıyorum. Sanırım "hâlâ" atladığım bir şeyler var.
 
Odrive Config:
dev0.erase_configuration()
dev0.config.enable_brake_resistor = True
dev0.config.brake_resistance = 2.0
dev0.config.dc_max_negative_current = -0.01
#axis0
dev0.axis0.motor.config.pole_pairs = 15
dev0.axis0.motor.config.resistance_calib_max_voltage    #sorgu
dev0.axis0.motor.config.requested_current_range        #sorgu
dev0.axis0.motor.config.current_control_bandwidth        #sorgu
dev0.axis0.motor.config.current_control_bandwidth
dev0.axis0.motor.config.resistance_calib_max_voltage = 4
dev0.axis0.motor.config.requested_current_range = 25
dev0.axis0.motor.config.current_control_bandwidth = 100
dev0.axis0.motor.config.torque_constant = 8.27
dev0.axis0.encoder.config.mode = ENCODER_MODE_HALL
dev0.axis0.encoder.config.cpr = 90
dev0.axis0.encoder.config.calib_scan_distance             #sorgu
dev0.axis0.encoder.config.calib_scan_distance = 150
dev0.axis0.encoder.config.bandwidth                        #sorgu
dev0.axis0.encoder.config.bandwidth = 100
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
dev0.axis0.controller.config.vel_limit = 10
dev0.axis0.controller.config.control_mode = CONTROL_MODE_POSITION_CONTROL
#axis1
dev0.axis1.motor.config.pole_pairs = 15
dev0.axis1.motor.config.resistance_calib_max_voltage    #sorgu
dev0.axis1.motor.config.requested_current_range        #sorgu
dev0.axis1.motor.config.current_control_bandwidth        #sorgu
dev0.axis1.motor.config.current_control_bandwidth
dev0.axis1.motor.config.resistance_calib_max_voltage = 4
dev0.axis1.motor.config.requested_current_range = 25
dev0.axis1.motor.config.current_control_bandwidth = 100
dev0.axis1.motor.config.torque_constant = 8.27
dev0.axis1.encoder.config.mode = ENCODER_MODE_HALL
dev0.axis1.encoder.config.cpr = 90

dev0.axis1.encoder.config.calib_scan_distance             #sorgu
dev0.axis1.encoder.config.calib_scan_distance = 150

dev0.axis1.encoder.config.bandwidth                        #sorgu

dev0.axis1.encoder.config.bandwidth = 100
dev0.axis1.controller.config.pos_gain = 1
dev0.axis1.controller.config.vel_gain = 0.02 * dev0.axis0.motor.config.torque_constant * dev0.axis0.encoder.config.cpr
dev0.axis1.controller.config.vel_integrator_gain = 0.1 * dev0.axis0.motor.config.torque_constant * dev0.axis0.encoder.config.cpr
dev0.axis1.controller.config.vel_limit = 10
dev0.axis1.controller.config.control_mode = CONTROL_MODE_POSITION_CONTROL

dev0.save_configuration()
dev0.reboot()



dev0.axis0.requested_state = AXIS_STATE_MOTOR_CALIBRATION
dev0.axis0.motor.error

dev0.axis0.motor.config.phase_inductance
dev0.axis0.motor.config.phase_resistance
dev0.axis0.motor.config.pre_calibrated = True
dev0.axis0.requested_state = AXIS_STATE_ENCODER_OFFSET_CALIBRATION

dev0.axis0.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE #önemli


dev0.axis1.motor.config.phase_inductance
dev0.axis1.motor.config.phase_resistance
dev0.axis1.motor.config.pre_calibrated = True
dev0.axis1.requested_state = AXIS_STATE_ENCODER_OFFSET_CALIBRATION

dev0.axis1.requested_state = AXIS_STATE_FULL_CALIBRATION_SEQUENCE

Uyguladığım konfigürasyon bu.

Aldığım encoder hatası ise aşağıda

Odrive Config:
In [102]: dump_errors(dev0)
system: no error
axis0
  axis: Error(s):
    AxisError.ENCODER_FAILED
  motor: no error
  DRV fault: none
  sensorless_estimator: no error
  encoder: Error(s):
    EncoderError.HALL_NOT_CALIBRATED_YET
  controller: no error
axis1
  axis: Error(s):
    AxisError.ENCODER_FAILED
  motor: no error
  DRV fault: none
  sensorless_estimator: no error
  encoder: Error(s):
    EncoderError.HALL_NOT_CALIBRATED_YET
  controller: no error
 
Burda bahsettigi encoder harici baglanan yuksek cozunurluklu bir encoder olmasin.
 
dev0.axis0.encoder.config.mode = ENCODER_MODE_HALL
Burda Hall effect sensör ayarı yapılıyor.

İşin garibi bu konfigürasyon daha önce çalıştı. Şimdi ise hata veriyor.
Çözeceğim inşallah ama uğraştıracak.
 

Çevrimiçi üyeler

Forum istatistikleri

Konular
6,951
Mesajlar
118,752
Üyeler
2,824
Son üye
selocan32

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