Go Down

Topic: Now you can control a brushless motor w/ Arduino, hoverboards up to motorcycles (Read 468 times) previous topic - next topic

yes_we_can_go_green

Hi Arduino users :)

We did developed OpenSource firmware for the dirty cheap (starting at 16€) chinese EBike brushless motor controllers -- they now work as generic brushless motor controllers, that can be controlled over UART, like using an Arduino or Bluetooth module to send commands to start running the motor at a specific speed, torque/current, regen current, direction, etc.

This family controllers supports from 0.25kW to max of 4.3KW (72V, 60A), which should be ok to implement vehicles like hoverboards up to motorcycles running at 100km/h!!
They can be found in many online shops on Asia, Europe and USA, for instance this one: https://bmsbattery.com/ebike-kit/546-s06s-250w-torque-simulation-sine-wave-controller-ebike-kit.html

See the video bellow, that shows the motor running amd firmware was limiting the motor max current to be about 8A. Motor max speed was 45km/h when the wheel was on the air.

Current motor interface implement the following methods, that can be used to control the motor and get his running speed value. This was tailored for EBike application but if anyone want to build a different thing like an hoverboard, electric unicycle, etc, we can help developing the firmware for that specific needs of the motor control.

    /***************************************************************************************/
    // Motor interface
    void hall_sensor_init (void); // must be called before using the motor
    void motor_init (void); // must be called before using the motor
    void motor_set_mode_coast (void); // disable PWM output
    void motor_set_mode_run (void); // enable PWM output
    void motor_set_pwm_duty_cycle_target (uint8_t value);
    void motor_set_current_max (uint8_t value); // steps of 0.5A each step
    void motor_set_regen_current_max (uint8_t value); // steps of 0.5A each step
    void motor_set_pwm_duty_cycle_ramp_inverse_step (uint8_t value); // each step = 64us
    uint16_t motor_get_motor_speed_erps (void);
    /***************************************************************************************/

Video:
https://www.youtube.com/watch?v=H1GZXHkMK7M

Project page: http://opensourceebikefirmware.bitbucket.io/

Go Up