GithubHelp home page GithubHelp logo

bldc-design-help's Introduction

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

bldc-design-help's People

Contributors

thotalion avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.