Skip to content

Tests on BLCD controller to understand robotic articulation design

License

Notifications You must be signed in to change notification settings

ThotAlion/BLDC-design-help

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

37 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Help to design BLDC articulations

BLDC controllers are very new with respect the classical DC motor controllers, mainly taking into account position control. The objective of this repo is to gather studies to help design of robots (small and big) with BLDC.

STL files

Find in this Repo the STL Files used to test the two motors. Find also STL files for the USB-CAN Box for the Tinymovr kit.

Motors

Motor 1 Motor 2
Picture alt text
Ref Eachine 2204-2300KV MAD component 5005-280KV
Resistance/phase(milliOhms) 170 100
Inductance/phase(microHenri) 10 76
Outer diameter(mm) 28 56
Max quadratic current Iq in coils 12 A 18 A
Purpose Fast/silent animatronics (eye) Powerful robotic articulation

Tinymovr controller

Documentation Here, the tinymovr controller board is powered by a DC power supply 15V - 10A. The communication is done via a standard FTDI USB - UART device (for experiment purpose here... Later via CAN bus) By default, Iq is limited to 10A and speed to 300000ticks/s 1 turn is 8192 ticks.


Theory about BLDC

The motor current

Iq = (Ia/sqrt(3) + 2*Ib/sqrt(3))cos(theta) - Iasin(theta)

The torque constant

Torque (N.m) = Kc*Iq(A)

The speed constant

U(V) = Kv*Omega(rad/s)

Knowing that Kc = 1/Kv

The power in the system is used in internal resistor, controller and to general mechanical movement

P_in = P_Joule + P_controller + P_mecha

P_in = U_in.I_in = I_q.I_q.R + P_controller + C*Omega

P_controller in control state is here 0.060A for 15V => 1W

To get the input current when motor is blocked (consider power of controller is small enough) :

I_in = R.I_q.I_q/U_in


A small motor (2204-2300KV) + Tinymovr controller - push test

the motor is set next to a weighing scale with a lever arm of 95mm. Input voltage : 15V.

Measures

Position target (ticks) Motor current Iq (A) Input current Iinput (A) weight (g) torque (N.m)
0 0.918 0.060 0 0.000
1000 -0.165 0.060 5 0.005
2000 -3.640 0.120 13 0.012
3000 -6.112 0.230 21 0.020
4000 -8.710 0.420 29 0.028
5000 -10.040 0.570 34 0.032

Find below the input current of the Tinymovr controller function of the current delivered in coils.

Find below the torque generated by the motor function of the current delivered in coils

Kc = Torque/Iphase = 0.032/10.04 = 0.0032 N.m/A

Kv = 1/Kc = 310.8 rad/s/V

KV = 2970 rpm/V

And find below the torque produced function of input current

A bigger motor (5005-280KV) + Tinymovr controller - push test

the motor is set next to a weighing scale with a lever arm of 98mm. Input voltage : 15V.

Measures

Position target (ticks) Motor current Iq (A) Input current Iinput (A) weight (g) torque (N.m)
0 0.277 0.050 0 0.000
1000 -1.983 0.090 50 0.048
2000 -4.547 0.200 112 0.106
3000 -6.995 0.420 175 0.166
4000 -9.527 0.740 236 0.224
5000 -9.973 0.840 247 0.235
6000 -10.025 0.860 249 0.237

Find below the input current of the Tinymovr controller function of the current delivered in coils.

Find below the torque generated by the motor function of the current delivered in coils

Kc = Torque/Iphase = 0.032/10.04 = 0.0234 N.m/A

Kv = 1/Kc = 42.7 rad/s/V

KV = 407 rpm/V

And find below the torque produced function of input current


A small motor (2204-2300KV) + Tinymovr controller - speed test

the motor is without load

Speed target (ticks/s) Input amps (A) Measured speed (ticks/s)
0 0.060 168
7000 0.060 506
8000 0.060 2373
10000 0.060 9880
20000 0.060 17605
40000 0.060 38343
80000 0.060 79606
160000 0.070 147904
320000 0.080 278386
640000 0.090 281503

See that until 10000 ticks/s, the measured speed is far from the commanded one. The rotor slips and is too slow. On the contrary, the high speed does not go above 300000 ticks/s. This is nominal since the speed is limited (can be tuned in Tinymovr)

A bigger motor (2204-2300KV) + Tinymovr controller - speed test

the motor is without load

Speed target (ticks/s) Input amps (A) Measured speed (ticks/s)
0 0.060 -0
5000 0.060 -292
6000 0.060 4173
7000 0.060 4915
8000 0.060 5408
9000 0.060 7836
10000 0.060 8835
20000 0.090 75905
160000 0.140 166808
320000 0.470 270000

See that the motor can reach slower speeds even if it slips.

Reactivity tests with a LeapMotion

This part is in progress, waiting for CAN controllers. Here is a small video with serial communication. The position gain is small by default, that is why, the phase inversion occurs at a very low frequency (with respect to a classical DC controller like Dynamixel) The code is in this Repo (Leap2BLDCUART folder)

Alt text

Motor control with pygame

The folder MotorControl contains a Python3 script to control a brushless motor with a Tinymovr controller. Change the name of the serial port in the script before starting.

The key hacks are :

  • Up arrow : hold position
  • right arrow : decrease and hold position
  • left arrow : increase and hold position
  • z : set current position as zero
  • c : calibrate
  • r : reset the controller
  • p : oscillate position between max and min current
  • space : soft emergency stop

With a belt reductor

The belt reductor design is under progress, based on Open Dynamic Robot Initiative

About

Tests on BLCD controller to understand robotic articulation design

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages