Difference between revisions of "Electric Bobby Car Build"

From ivc wiki
Jump to navigationJump to search
 
(87 intermediate revisions by the same user not shown)
Line 2: Line 2:
! colspan="2" style="font-size: 1.2em;background-color:#ccc" | Electric Bobby Car
! colspan="2" style="font-size: 1.2em;background-color:#ccc" | Electric Bobby Car
|-
|-
| colspan="2" | [[Image:electric_bobby_car_build_final.jpg|300px]]
| colspan="2" | [[Image:electric_bobby_car_build_final.jpg|350px]]
|-  
|-  
! colspan="2" style="background-color:#ccc" | Overview
! colspan="2" style="background-color:#ccc" | Overview
Line 13: Line 13:
|-
|-
! style="text-align:left;vertical-align:top" | Base:
! style="text-align:left;vertical-align:top" | Base:
| Big New Bobby Car
| [https://en.wikipedia.org/wiki/Bobby_Car Big New Bobby Car]
|-  
|-  
! style="text-align:left;vertical-align:top" | Layout:
! style="text-align:left;vertical-align:top" | Layout:
Line 19: Line 19:
|-
|-
! style="text-align:left;vertical-align:top" | Firmware:
! style="text-align:left;vertical-align:top" | Firmware:
| [https://github.com/larsmm/hoverboard-firmware-hack-bbcar larsmm]
| [https://github.com/larsmm/hoverboard-firmware-hack-bbcar larsmm hoverboard-firmware-hack-bbcar]
|-
|-
! colspan="2" style="background-color:#ccc" | Specifications
! colspan="2" style="background-color:#ccc" | Specifications
Line 30: Line 30:
|-
|-
! style="text-align:left;vertical-align:top" | Motors:
! style="text-align:left;vertical-align:top" | Motors:
| Four 350W BLDC permanent magnet motors with hall-sensors
| Four 350W BLDC permanent magnet motors with hall-sensors, 800W peak
|-
|-
! style="text-align:left;vertical-align:top" | Battery:
! style="text-align:left;vertical-align:top" | Battery:
| Lithium-ion 10S2P 4400mAh (4.4Ah)
| Lithium-ion 10S2P 4400mAh (10S-13S supported)
|-
|-
! style="text-align:left;vertical-align:top" | System voltage:
! style="text-align:left;vertical-align:top" | System voltage:
Line 42: Line 42:
|-
|-
! style="text-align:left;vertical-align:top" | Driving modes:
! style="text-align:left;vertical-align:top" | Driving modes:
| 4 - safe/slow/fun/power with turbo
| 4 - safe/slow/fun/power with turbo boost + reverse
|-
|-
! colspan="2" style="background-color:#ccc" | Dimensions
! colspan="2" style="background-color:#ccc" | Dimensions
Line 56: Line 56:
|-
|-
! style="text-align:left;vertical-align:top" | Weight:
! style="text-align:left;vertical-align:top" | Weight:
| X kg
| 17.6 kg
|}
|}


Line 67: Line 67:
* [[Electric Bobby Car Hoverboard Upgrade]] - research page
* [[Electric Bobby Car Hoverboard Upgrade]] - research page
* [http://ivc.no/bobbycar-electric/electric_bobby_car_cad_models_2019.rar Electric Bobby Car CAD package] - new parts in Inventor IPT, STEP and STL formats
* [http://ivc.no/bobbycar-electric/electric_bobby_car_cad_models_2019.rar Electric Bobby Car CAD package] - new parts in Inventor IPT, STEP and STL formats
<html>6nbsp;&nbsp;&nbsp;&nbsp;</html>'''Dec. 2019:''' [[Image:36c3_resource_exhaustion.png|50px]] '''[https://events.ccc.de/congress/2019/wiki/index.php Attending 36C3: Resource Exhaustion]'''


== Base preparation ==
== Base preparation ==
Line 72: Line 74:
=== Main equipment bay ===
=== Main equipment bay ===


A slot had to by cut out of the bottom to allow internal access and functions as the main equipment bay. It measures 78 x 148 mm, just enough to fit the controllers and battery. Rounded corners to minimize stress areas.  
A slot had to by cut out of the bottom to allow internal access and functions as the main equipment bay. As the Bobby Car is made from polyethylene (PE-plastic) it is pretty easy to cut and handle.
 
The slot measures 78 x 148 mm, just enough to fit the controllers and battery. Rounded corners to minimize stress areas.  


[[Image:electric_bobby_car_build_base_cut_internal_bay1.jpg|400px]] [[Image:electric_bobby_car_build_base_cut_internal_bay2.jpg|400px]] [[Image:electric_bobby_car_build_base_cut_internal_bay3.jpg|400px]]
[[Image:electric_bobby_car_build_base_cut_internal_bay1.jpg|400px]] [[Image:electric_bobby_car_build_base_cut_internal_bay2.jpg|400px]] [[Image:electric_bobby_car_build_base_cut_internal_bay3.jpg|400px]]
Line 224: Line 228:
=== Rod length and holes ===
=== Rod length and holes ===


The original rod was too short, so the steering wheel had to be raised and consequently the steering rod had to be lengthened by 155 mm.
The original rod was too short, so the steering wheel had to be raised and consequently the steering rod had to be lengthened by 155mm, the end rod length turned out to be 450mm.


Finding the best height can be done by trying the rod on the Bobby Car with the steering wheel next to it. Mark the spot and cut the rod - be sure to include the inserted length too.  
Finding the best height can be done by trying the rod on the Bobby Car with the steering wheel next to it. Mark the spot and cut the rod - be sure to include the inserted length too.  
Line 244: Line 248:
=== Throttle and brake ===
=== Throttle and brake ===


Using Fisch's method for the throttle and brake levers by mounting them on the front end (10:30 and 1:30 o'clock) on the steering wheel. A special 3D-printed holder keeps the trigger mechanism, 10kΩ potentiometer and support board in place. All put in place on the steering wheel using hot glue. An upgrade here would be a through screw.
Using [https://larsm.org/allrad-e-bobby-car/ Larsm's method for the throttle and brake levers] by mounting them on the front end (10:30 and 1:30 o'clock) on the steering wheel. A special 3D-printed holder keeps the trigger mechanism, 10kΩ potentiometer and support board in place. All put in place on the steering wheel using hot glue. An upgrade here would be a through screw.


[[Image:electric_bobby_car_build_steering_throttle_brake_mounting1.jpg|400px]]  
[[Image:electric_bobby_car_build_steering_throttle_brake_mounting1.jpg|400px]]  
[[Image:electric_bobby_car_build_steering_throttle_brake_mounting2.jpg|400px]]
[[Image:electric_bobby_car_build_steering_throttle_brake_mounting2.jpg|400px]]


Wiring the potentiometer is simple, 3V3 (red), analog out (yellow, mid-pin), and ground (black). The wires are tucked away underneath the steering cup. When pressing the trigger the voltage rises gradually to 3V3.
Wiring the potentiometer is simple, 3V3 (red), analog out (yellow, mid-pin), and ground (black). The wires are tucked away underneath the steering cup. When pressing the trigger the voltage rises gradually from 0V to 3V3 (in practice more like 0.6V to 2.6V because the pull-down resistor and the potentiometer not hitting its extreme range of motion.)


[[Image:electric_bobby_car_build_steering_throttle_brake_wiring1.jpg|400px]]  
[[Image:electric_bobby_car_build_steering_throttle_brake_wiring1.jpg|400px]]  
Line 266: Line 270:
=== Break-out board ===
=== Break-out board ===


This is board makes it easier to finish the build. It has easy to connect single JST XH B4B socket for the throttle and brake lead, two sockets for each controller, analog signal filtering, master and slave throttle op-amp isolation - where one driver board can be turned off without interfering with the other. It tucks away inside the steering wheel under the red beeper cap.
This is board makes it easier to finish the build. It easily connects the potentiometers and mainboards using JST XH B4B sockets, has analog signal filtering, a 3V3 250mAh LDO, I2C pull-ups (if required), and dual ADC voltage follower op-amp isolation. The isolation makes it possible for one driver board to be turned off without interfering with the other. The break-out tucks away inside the Bobby Car, next to the main boards.


Inspired by the [https://github.com/Jan--Henrik/hoverboard-breakout Jan Henrik break-out boards].
Inspired by the [https://github.com/Jan--Henrik/hoverboard-breakout Jan Henrik break-out boards].


* [[Media:bobbycar_hoverboard_throttle_breakout_schematic.pdf|Schematic of the throttle breakout board]]
* [[Media:bobbycar_hoverboard_throttle_breakout_schematic.pdf|Schematic of the throttle breakout board]]
* [http://ivc.no/bobbycar-electric/bobbycar_throttle_rev6.rar Break-out PCB Gerber-files]  
* [http://ivc.no/bobbycar-electric/bobbycar_throttle_rev7.rar Break-out PCB Gerber-files]  
* [http://ivc.no/bobbycar-electric/bobbycar_throttle_rev6.csv Break-out BOM-list]  
* [http://ivc.no/bobbycar-electric/bobbycar_throttle_rev7.csv Break-out BOM-list]  


[[Image:bobbycar_hoverboard_throttle_breakout_board1.jpg|400px]] [[Image:bobbycar_hoverboard_throttle_breakout_schematic.png|400px]]
[[Image:bobbycar_hoverboard_throttle_breakout_schematic.png|545px]] [[Image:bobbycar_hoverboard_throttle_breakout_board1.jpg|400px]]


[[Image:bobbycar_hoverboard_throttle_breakout_pcb_top.png|300px]]
[[Image:bobbycar_hoverboard_throttle_breakout_pcb_top.png|350px]]  
[[Image:bobbycar_hoverboard_throttle_breakout_pcb_bottom.png|300px]]
[[Image:bobbycar_hoverboard_throttle_breakout_pcb_bottom.png|350px]]


=== Motor wiring ===
=== Motor wiring ===


Connecting the front motors to controller is straight plug and play, but the rear main motor wires needed to be extended 10 cm to reach the controller. Simple cut-and-solder in 16 AWG extension wires, keeping the existing bullet connectors.
Connecting the front motors to controller is straight plug and play, but the rear main motor wires needed to be extended 10 cm to reach the controller. Simple cut-and-solder in 16 AWG / 1.3mm2 extension wires, keeping the existing bullet connectors.


Note that if the motors will not turn correctly when throttle is applied, try to swap two of the leads and make sure every connection is solid.
Note that if the motors will not turn correctly when throttle is applied, try to swap two of the leads and make sure every connection is solid.
Line 299: Line 303:
[[Image:electric_bobby_car_build_controller1.jpg|400px]] [[Image:electric_bobby_car_build_controller2.jpg|400px]] [[Image:electric_bobby_car_build_controller3.jpg|400px]]  
[[Image:electric_bobby_car_build_controller1.jpg|400px]] [[Image:electric_bobby_car_build_controller2.jpg|400px]] [[Image:electric_bobby_car_build_controller3.jpg|400px]]  


Both controllers are mounted back-to-back using four M4 x 30mm screws and nuts with a stand-off spacer in-between, and installed vertically using a custom 3D-printed bracket and two slotted M5 x 16mm mushroom screws and nuts.
The controllers were mounted back-to-back using four M4 x 30mm screws and nuts with a stand-off spacer in-between, and installed vertically using a custom 3D-printed bracket and two slotted M5 x 16mm mushroom screws and nuts. A compact XT60 Y-splitter made out of two female and one male connector joins the two main power leads into one.


[[Image:electric_bobby_car_build_controller_mounting1.jpg|400px]] [[Image:electric_bobby_car_build_controller_mounting2.jpg|400px]] [[Image:electric_bobby_car_build_controller_mounting3.jpg|400px]]
[[Image:electric_bobby_car_build_controller_mounting1.jpg|400px]] [[Image:electric_bobby_car_build_controller_mounting2.jpg|400px]] [[Image:electric_bobby_car_build_controller_mounting3.jpg|400px]]
Line 305: Line 309:
=== Battery ===
=== Battery ===


This build is using the stock 4.4Ah 10S2P 36V Lithium-ion battery from the Hoverboard. It is made of 20x Samsung ICR18650 3.7V 2200mAh cells, with a BMS built-in. A 12S2P 44.4V battery is supported by the controllers (even 13S), but that is left for a future upgrade.  
This build is using the stock 4.4Ah 10S2P 36V Lithium-ion battery from the Hoverboard. It is made of 20x Samsung ICR18650 3.7V 2200mAh cells, with a BMS built-in. The BMS (Battery Management System) takes care of overcharging, overcurrent protection, deep-discharge cut-off, and balancing the cells. A 12S 44.4V battery is supported by the mainboard components (even 13S), but that is left for a future upgrade.


The battery is kept secure by a hook-and-look strap around the battery and through two slots in a Lexan cover plate.
The battery is kept secure by a hook-and-look strap around the battery and through two slots in a Lexan cover plate.
Line 315: Line 319:
As this is a four motor, two controller setup, I wanted to have the possibility to power-on each controller independently. This would allow for FWD, RWD or AWD, depending on the occasion. This required the break-out board in order to isolate (op-amp voltage follower) the two controllers so they would not power each other or pull-down the throttle/brake signal when one of the controllers were powered down.
As this is a four motor, two controller setup, I wanted to have the possibility to power-on each controller independently. This would allow for FWD, RWD or AWD, depending on the occasion. This required the break-out board in order to isolate (op-amp voltage follower) the two controllers so they would not power each other or pull-down the throttle/brake signal when one of the controllers were powered down.


Two momentary green LED push non-latching buttons were prepared with a four-pin JST XH B4B connector. The corresponding socket were connected to the 15V regulator on the controller and power-on pins. A 2k resistor were put on the button LED power pin to lower the illumination. A Ø12mm hole was prepared and the buttons installed next to the steering rod.
Two momentary green LED push non-latching buttons were prepared with a four-pin JST XH B4B connector. The corresponding socket was connected to the 15V regulator on the controller and power-on pins. A 2k resistor was put on the button LED power pin to lower the illumination. A Ø12mm hole was drilled and the buttons installed next to the steering rod.


[[Image:electric_bobby_car_build_power_buttons1.jpg|400px]] [[Image:electric_bobby_car_build_power_buttons2.jpg|400px]] [[Image:electric_bobby_car_build_power_buttons3.jpg|400px]]
[[Image:electric_bobby_car_build_power_buttons1.jpg|400px]] [[Image:electric_bobby_car_build_power_buttons2.jpg|400px]] [[Image:electric_bobby_car_build_power_buttons3.jpg|400px]]


=== Disconnect plug and charging ===
=== Power harness and charging ===
 
A 3D-printed bracket holds the disconnect plug (cuts all power) and the re-used charging port in place just rear of the equipment bay slot, by [https://figch.de/index.php?nav=bobbycar Fisch's inspiration]. A Y-split harness was made to accommodate a future dual-battery setup, only one connector was used here. It connects four XT60 connectors and 10cm long 14AWG / 2.0mm2 silicone power wires (in retrospect 10-12AWG / 4.0mm2 is a better option.) The male end connects to the battery and the female to the compact Y-splitter from the mainboards, with a 60A fuse in-between.
 
The bracket was fastened using three shortened M4 x 25mm mushroom screws and nuts.


A 3D-printed bracket holds the disconnect plug (cuts all power) and charging port in place just rear of the equipment bay slot, by Fisch's inspiration. Silicone 14AWG power cables and the stock charging plug was used. Fastened using three shortened M4 x 25mm screws and nuts.
Note that you can still use the stock charging port, as it is a straight pass-through on the mainboard to the battery, with a simple charge-detect circuit for the MCU (not used in the new firmware). This charging-circuit should in theory be able to handle 12S and 13S setups.


[[Image:electric_bobby_car_build_power_charging1.jpg|400px]] [[Image:electric_bobby_car_build_power_charging2.jpg|400px]]
[[Image:electric_bobby_car_build_power_charging1.jpg|400px]] [[Image:electric_bobby_car_build_power_charging2.jpg|400px]]
Line 327: Line 335:
=== Vibration protection ===
=== Vibration protection ===


As there will be a fair about of vibration experienced by the main controllers, each major component (caps, regs, wires) was secured by hot glue - this is not the best compound, a future upgrade would be silicone potting compound.
As there will be a fair about of vibration experienced by the main controllers, each major component (caps, regs, wires) was secured by hot glue - this is not the best compound as it does not grab very well, a future upgrade would be silicone potting compound.


[[Image:electric_bobby_car_build_vibration1.jpg|400px]]
[[Image:electric_bobby_car_build_vibration1.jpg|400px]]


== Firmware ==
== Firmware ==
=== Configuration and calibrate ===
The larsmm Bobby Car optimized hoverboard firmware needed to be changed, calibrated and recompiled in order to be usable.
In <code>Inc/config.h</code>, assign the correct battery cell count under <code>#define BAT_NUMBER_OF_CELLS 10</code>. Use a multi-meter to measure the battery voltage, put the values in <code>#define BAT_CALIB_REAL_VOLTAGE</code> and <code>#define BAT_CALIB_AD</code>.
Calibrate the ADC inputs <code>#define ADC1_MIN</code> <code>#define ADC1_MAX</code> <code>#define ADC2_MIN</code> <code>#define ADC2_MAX</code> under <code>#define CONTROL_ADC</code>, using the serial debugging output (see next section). Press the triggers and note the max. and min. values. The STM32 ADCs are 12-bit, meaning 0 to 4096. For this build the calibrated range was approx. 720 to 3790, which corresponds to 0.6V to 2.6V.
If the wheels rotate the wrong direction, comment out <code>//#define INVERT_R_DIRECTION</code> and <code>//#define INVERT_L_DIRECTION</code>. Note that you will end up with two firmware versions, one for each controller.
To adjust the reverse speed, adjust the <code>...(ADC2_DELTA / 280.0f)...</code> snippet in <code>Src/main.c</code> for each driving mode. Higher values increases the speed, try 400.0f to 800.0f.


=== Compile firmware ===
=== Compile firmware ===


The larsmm Bobby Car optimized hoverboard firmware needed to be changed, calibrated and recompiled in order to be usable. I used an [https://www.osboxes.org/arch-linux/#archlinux-201905-vmware Arch CLI VMWare image from OSBoxes.org] to set up the ARM toolchain.
To compile the firmware I used an [https://www.osboxes.org/arch-linux/#archlinux-201905-vmware Arch CLI VMWare image from OSBoxes.org] to set up the ARM toolchain.


  pacman -S arm-none-eabi-gcc arm-none-eabi-newlib autoconf automake bison confuse coreutils cower diffutils expac fakeroot flex gcc gcc-libs gettext git glibc groff gzip libtool licenses m4 make man-db nano openocd patch perl pkgconf s-nail sed stlink texinfo util-linux vi
  pacman -S arm-none-eabi-gcc arm-none-eabi-newlib autoconf automake bison confuse coreutils cower diffutils expac fakeroot flex gcc gcc-libs gettext git glibc groff gzip libtool licenses m4 make man-db nano openocd patch perl pkgconf s-nail sed stlink texinfo util-linux vi
  git clone https://github.com/larsmm/hoverboard-firmware-hack-bbcar
  git clone https://github.com/larsmm/hoverboard-firmware-hack-bbcar
  cd hoverboard-firmware-hack-bbcar
  cd hoverboard-firmware-hack-bbcar
  pico Inc/config.h
  nano Inc/config.h
  make
  make


The new firmware will reside in <code>build/hover.bin</code>
The new firmware will reside in <code>build/hover.bin</code>
Download my compiled firmware here:
* [https://ivc.no/bobbycar-electric/hoverboard-firmware-hack-bbcar-ivc.tgz Download full firmware source package]
* [https://ivc.no/bobbycar-electric/hover-front.bin Download front motor controller firmware]
* [https://ivc.no/bobbycar-electric/hover-rear.bin Download rear motor controller firmware]
* [https://ivc.no/bobbycar-electric/config.h View config.h for firmware]
=== Debugging ===
In <code>Inc/config.h</code> you can enable debugging output <code>#define DEBUG_SERIAL_USART3</code> <code>#define DEBUG_SERIAL_ASCII</code> to enable an serial UART console on the right sensor board connector. Each board got its own debugging connector, as seen in the photo. Connect an USB-to-serial adapter to the TX, RX, and GND pins - 3V3 not needed.
This console outputs a comma separated string of the current operating parameters, as listed.
Example: <code>1:812 2:723 3:0 4:0 5:1547 6:3903 7:1650 8:36</code>
* <code>1:</code> ADC1, TX, right, forward
* <code>2:</code> ADC2, RX, left, brake/reverse
* <code>3:</code> Output speed: 0-1000
* <code>4:</code> Output speed: 0-1000
* <code>5:</code> For battery voltage calibration
* <code>6:</code> For verifying battery voltage calibration
* <code>7:</code> For board temperature calibration
* <code>8:</code> For verifying board temperature calibration
[[Image:electric_bobby_car_build_debugging_port1.jpg|400px]] [[Image:electric_bobby_car_build_debug_console_arch1.png|405px]]


=== Flash firmware ===
=== Flash firmware ===


The Hoverboard controller board exposes the SWD programming port. Only three wires need to be soldered in order to flash the mainboard. Each board got its own programming connector, as seen in the photo.
The Hoverboard controller board exposes the SWD-programming port. Only three wires needed to be soldered in order to flash the mainboard. Each board got its own programming connector, as seen in the photo.


{| border="0" cellspacing="0" cellpadding="1" style="margin-left:5px" class="wikitable"
{| border="0" cellspacing="0" cellpadding="1" style="margin-left:5px" class="wikitable"
Line 383: Line 429:
[[Image:electric_bobby_car_build_flash_port1.jpg|400px]] [[Image:electric_bobby_car_build_flash_port2.jpg|400px]]
[[Image:electric_bobby_car_build_flash_port1.jpg|400px]] [[Image:electric_bobby_car_build_flash_port2.jpg|400px]]


Make sure the battery, and power-button is connected as this is required to put the MCU into DFU flashing mode. Connect the ST-Link V2 Mini programmer to the mainboard.
Make sure the battery and power-button is connected as this is required to flash. Connect the ST-Link V2 Mini programmer to the mainboard.


Power off, press and hold the power-button while restoring power, executing the following commands.
Power off, press and hold the power-button while restoring power, keep holding and executing the following commands. It only takes a few seconds. If you get an error were openocd detects the ST-Link but not the mainboard, check the power-button and that you hold it during the entire process.


Unlock MCU:
Unlock MCU:
Line 397: Line 443:
[[Image:electric_bobby_car_build_flash_firmware_arch1.png|400px]]
[[Image:electric_bobby_car_build_flash_firmware_arch1.png|400px]]


=== Debugging ===
== Usage ==
[[Image:electric_bobby_car_build_final_usage1.jpg|420px|right]]
 
Using the Electric Bobby Car is pretty easy. There are two triggers for throttle and brake, two buttons to enable/start-up the front and/or rear motors, and a steering wheel. After acceleration and releasing the triggers (no input), the controller will exponential brake to a halt.
 
{| border="0" cellspacing="0" cellpadding="1" style="margin-left:5px" class="wikitable"
! Input function
! Control output
|-
| Right trigger/ADC1
| Acceleration/throttle
|-
| Left trigger/ADC2
| Brake/turbo activation
|-
| Right power button
| Front controller/motors
|-
| Left power button
| Rear controller/motors
|-
| Steering wheel
| Turn the front wheels
|}


In <code>Inc/config.h</code> you can enable debugging output and get a UART console on the right sensor board connector. Each board got its own debugging connector, as seen in the photo. This console outputs a comma separated string of the current operating parameters, as listed.
When the controller start up, it will beep according to the active driving mode.


Example: <code>1:812 2:723 3:0 4:0 5:1547 6:3903 7:1650 8:36</code>
{| border="0" cellspacing="0" cellpadding="1" style="margin-left:5px" class="wikitable"
! Trigger
! Beep(s)
! Driving mode
! Max. speed
! Turbo
|-
| Left trigger
| 1 beep
| Mode 1 - Safe
| 3 km/h
| No
|-
| No trigger, default
| 2 beep
| Mode 2 - Slow
| 6 km/h
| No
|-
| Right triggger
| 3 beep
| Mode 3 - Normal
| 12 km/h
| No
|-
| Left and right trigger
| 4 beep
| Mode 4 - Fast
| 22 km/h
| Yes, L+R trigger 29 km/h
|}


# ADC1, TX, right, forward
== Areas of improvements ==
# ADC2, RX, left, backwards
# Output speed: 0-1000
# Output speed: 0-1000
# For battery voltage calibration
# For verifying battery voltage calibration
# For board temperature calibration
# For verifying board temperature calibration


[[Image:electric_bobby_car_build_debugging_port1.jpg|400px]] [[Image:electric_bobby_car_build_debug_console_arch1.png|500px]]
* Steering wheel mounting to steering rod, less slack
* Battery voltage increase, 10S to 12S
* Power cable upgrade, 14AWG to 10AWG
* Steering wheel assembly upgrade, from ABS to Aluminium
* Steering wheel display, showing battery and driving details
* Front beams and rear red brake lights, traffic ready 😁


== BOM ==
== BOM ==
CAD models:
* [http://ivc.no/bobbycar-electric/electric_bobby_car_cad_models_2019.rar Electric Bobby Car CAD package] - Inventor IPT, STEP and STL formats


General parts
General parts
Line 424: Line 525:
|-
|-
| 1x  
| 1x  
| Big New Bobby Car
| [http://rover.ebay.com/rover/1/711-53200-19255-0/1?ff3=4&pub=5575546334&toolid=10001&campid=5338634150&customid=&mpre=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DBig%2520New%2520Bobby%2520Car%26_sacat%3D0%26LH_TitleDesc%3D0%26_sop%3D12%26_udlo%3D400%26rt%3Dnc Big New Bobby Car]
| Main base
| Main base
|-
|-
| 2x
| 2x
| Xbox 360 Game controller 10kΩ potentiometer
| [http://rover.ebay.com/rover/1/711-53200-19255-0/1?ff3=4&pub=5575546334&toolid=10001&campid=5338634150&customid=&mpre=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3DMicrosoft%2BXbox%2B360%2BGame%2Bcontroller%26_sacat%3D0%26LH_TitleDesc%3D0%26_sop%3D12%26rt%3Dnc%26LH_ItemCondition%3D4 Xbox 360 Game controller 10kΩ potentiometer]
| Throttle and brake triggers
| Throttle and brake triggers
|-
|-
| 2x  
| 2x  
| Hoverboard with STM32 MCU
| [http://rover.ebay.com/rover/1/711-53200-19255-0/1?ff3=4&pub=5575546334&toolid=10001&campid=5338634150&customid=&mpre=https%3A%2F%2Fwww.ebay.com%2Fsch%2Fi.html%3F_from%3DR40%26_nkw%3Dhoverboard%26_sacat%3D0%26_sop%3D12%26rt%3Dnc%26LH_ItemCondition%3D3000 Hoverboard with STM32 MCU]
| Wheels, controllers, batteries and misc.
| Wheels, controllers, batteries and misc.
|-
|-
| 1x  
| 1x  
| [https://www.ebay.com/itm/ST-Link-V2-Programming-Unit-mini-STM8-STM32-Emulator-Downloader-M89-New/401088363326 ST Link V2 compatible programmer]
| [http://rover.ebay.com/rover/1/711-53200-19255-0/1?ff3=4&pub=5575546334&toolid=10001&campid=5338634150&customid=&mpre=https%3A%2F%2Fwww.ebay.com%2Fitm%2FST-Link-V2-Programming-Unit-mini-STM8-STM32-Emulator-Downloader-M89-New%2F401088363326 ST Link V2 compatible programmer]
| Flash new firmware
| Flash new firmware
|-
|-
| 1x
| 1x
| [https://www.ebay.com/itm/FT232RL-3-3V-5-5V-FTDI-USB-to-TTL-Serial-Adapter-Module-for-Arduino-Mini-Port/381374421597?hash=item58cbafda5d:g:jk8AAOSwrklVMjIp FTDI USB to TTL Serial Adapter Module]
| [http://rover.ebay.com/rover/1/711-53200-19255-0/1?ff3=4&pub=5575546334&toolid=10001&campid=5338634150&customid=&mpre=https%3A%2F%2Fwww.ebay.com%2Fitm%2FFT232RL-3-3V-5-5V-FTDI-USB-to-TTL-Serial-Adapter-Module-for-Arduino-Mini-Port%2F381374421597 FTDI USB to TTL Serial Adapter Module]
| Debugging console
| Debugging console
|-
|-
| 1x
| 1x
| [https://www.ebay.com/itm/ALUMINUM-6061-Flat-Bar-Solid-Plate-Sheet-0-5-50mm-Thick-Any-Size-Cut-Mill-Stock/391533966801?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649 Aluminium 6061 205x70x12mm plate]
| [http://rover.ebay.com/rover/1/711-53200-19255-0/1?ff3=4&pub=5575546334&toolid=10001&campid=5338634150&customid=&mpre=https%3A%2F%2Fwww.ebay.com%2Fitm%2FALUMINUM-6061-Flat-Bar-Solid-Plate-Sheet-0-5-50mm-Thick-Any-Size-Cut-Mill-Stock%2F391533966801 Aluminium 6061 205x70x12mm plate]
| Rear wheel plate
| Rear wheel plate
|-
|-
Line 452: Line 553:
|-
|-
| 1x
| 1x
| [https://www.sloyd-detaljer.no/sortiment/tre-metallsloyd/ror-stenger/stal/stalrundstang-2696 Round Stainless Steel Rod Ø10mm x 100cm]  
| [http://rover.ebay.com/rover/1/711-53200-19255-0/1?ff3=4&pub=5575546334&toolid=10001&campid=5338634150&customid=&mpre=https%3A%2F%2Fwww.ebay.com%2Fitm%2FDia-4mm-20mm-45-Steel-Round-Rod-Bar-Shaft-Axis-Metal-Optical-150mm-480mm-Long%2F302880540279 Round Stainless Steel Rod Ø10mm x 45cm] [https://www.sloyd-detaljer.no/sortiment/tre-metallsloyd/ror-stenger/stal/stalrundstang-2696 alt.]
| Steering wheel rod
| Steering wheel rod
|-
|-
| 1x
| 1x
| [https://www.elektroimportoren.no/plastroer-32mm/1211104/Product.html Plastic PVC Ø32mm x 50cm tube]
| [http://rover.ebay.com/rover/1/711-53200-19255-0/1?ff3=4&pub=5575546334&toolid=10001&campid=5338634150&customid=&mpre=https%3A%2F%2Fwww.ebay.com%2Fitm%2FVacuum-Cleaner-Attachment-Plastic-Wand-Pipe-Hose-Tools-Extension-32mm-Dia%2F372734868121 Plastic PVC Ø32mm x 50cm tube] [https://www.elektroimportoren.no/plastroer-32mm/1211104/Product.html alt.]
| Steering wheel height and wire protection  
| Steering wheel height and wire protection  
|-
|-
| 4x
| 4x
| [https://www.ebay.com/itm/10-Sets-15cm-4-Pin-JST-SM-2-54-22AWG-Wire-Male-Female-Connectors-With-Wire-BE/263366668378?hash=item3d51e0705a:g:FOEAAOSw56NaJl28 JST SM-2.54 22AWG Wire Male and Female Connectors]
| [http://rover.ebay.com/rover/1/711-53200-19255-0/1?ff3=4&pub=5575546334&toolid=10001&campid=5338634150&customid=&mpre=https%3A%2F%2Fwww.ebay.com%2Fitm%2F10-Sets-15cm-4-Pin-JST-SM-2-54-22AWG-Wire-Male-Female-Connectors-With-Wire-BE%2F263366668378 JST SM-2.54 22AWG Wire Male and Female Connectors]
| Hall-effect extension cable
| Hall-effect extension cable
|-
|-
| 1x
| 1x
| [https://hobbyking.com/en_us/nylon-xt60-connectors-male-female-5-pairs-genuine.html XT60 60A connectors]
| [http://rover.ebay.com/rover/1/711-53200-19255-0/1?ff3=4&pub=5575546334&toolid=10001&campid=5338634150&customid=&mpre=https%3A%2F%2Fwww.ebay.com%2Fitm%2F4-10-20pcs-XT60-Male-Female-Bullet-Connectors-Plugs-for-RC-Lipo-Battery-NEW%2F192141146606 XT60 60A Female Male connectors]
| Power plug and power cable
| Power plug and power cable
|-
|-
| 1x
| 1x
| [https://hobbyking.com/en_us/turnigy-high-quality-14awg-silicone-wire-1m-red.html Silicone Wire 14AWG red]
| [http://rover.ebay.com/rover/1/711-53200-19255-0/1?ff3=4&pub=5575546334&toolid=10001&campid=5338634150&customid=&mpre=https%3A%2F%2Fwww.ebay.com%2Fitm%2FUL3239-Silicone-Wire-30awg-28awg-26awg-24awg-22awg-20awg-18awg-14awg-200-C-3000V%2F183867859955 Silicone Wire 14AWG red] [https://hobbyking.com/en_us/turnigy-high-quality-14awg-silicone-wire-1m-red.html Hobbyking]
| Power cable
| Power cable
|-
|-
| 1x
| 1x
| [https://hobbyking.com/en_us/turnigy-high-quality-14awg-silicone-wire-1m-black.html Silicone Wire 14AWG black]
| [http://rover.ebay.com/rover/1/711-53200-19255-0/1?ff3=4&pub=5575546334&toolid=10001&campid=5338634150&customid=&mpre=https%3A%2F%2Fwww.ebay.com%2Fitm%2FUL3239-Silicone-Wire-30awg-28awg-26awg-24awg-22awg-20awg-18awg-14awg-200-C-3000V%2F183867859955 Silicone Wire 14AWG black] [https://hobbyking.com/en_us/turnigy-high-quality-14awg-silicone-wire-1m-black.html Hobbyking]
| Power cable
| Power cable
|-
|-
| 2x
| 2x
| [https://www.ebay.com/itm/10-Deep-Groove-Ball-Bearing606-608-623-624-625-626-688-698-6000-6001ZZ-Miniature/162731707838 Deep Groove Ball Bearing 608ZZ ID Ø8mm]
| [http://rover.ebay.com/rover/1/711-53200-19255-0/1?ff3=4&pub=5575546334&toolid=10001&campid=5338634150&customid=&mpre=https%3A%2F%2Fwww.ebay.com%2Fitm%2F10-Deep-Groove-Ball-Bearing606-608-623-624-625-626-688-698-6000-6001ZZ-Miniature%2F162731707838 Deep Groove Ball Bearing 608ZZ ID Ø8mm]
| Front upper wheel join load distribution
| Front upper wheel join load distribution
|-
|-
| 2x
| 2x
| [https://www.ebay.com/itm/NMB-Steel-Bearing-Motor-Grade-Bearing-Φ4-5-6-8-10mm-Bearing-Toy-Model-Car-Robot/263423709236?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649 NMB Steel Bearing Motor Grade Bearing ID Ø10mm]
| [http://rover.ebay.com/rover/1/711-53200-19255-0/1?ff3=4&pub=5575546334&toolid=10001&campid=5338634150&customid=&mpre=https%3A%2F%2Fwww.ebay.com%2Fitm%2FNMB-Steel-Bearing-Motor-Grade-Bearing-%25CE%25A64-5-6-8-10mm-Bearing-Toy-Model-Car-Robot%2F263423709236 NMB Steel Bearing Motor Grade Bearing ID Ø10mm]
| Steering rod lower load distribution
| Steering rod lower load distribution
|}
|}
Line 540: Line 641:
|-
|-
| 1x
| 1x
| [https://www.ebay.com/itm/M5-5mm-304-Stainless-Steel-Spring-Tension-Pins-Split-Dowel-Sellock-Roll-Pins/322173741553?ssPageName=STRK%3AMEBIDX%3AIT&_trksid=p2057872.m2749.l2649 M5 304 Compression spring rod]
| [https://www.westfieldfasteners.co.uk/Bolts-Screws-Metric/Slotted-Mushroom-Screw-M5x25-A2-Stainless.html M5 x 25mm Slotted Mushroom Screw in A2 Stainless]
| Steering wheel to steering rod lock screw
|-
| 1x
| [https://www.westfieldfasteners.co.uk/Metric-Nuts/Square-Weld-Nut-M5-A2-Stainless.html M5 Square Weld Nut in A2 Stainless]
| Steering wheel to steering rod lock screw
| Steering wheel to steering rod lock screw
|-
|-

Latest revision as of 09:10, 29 May 2020

Electric Bobby Car
Electric bobby car build final.jpg
Overview
Type: Small electric vehicle
Build year: 2019
Base: Big New Bobby Car
Layout: Rear-wheel drive, front-wheel drive, all-wheel drive
Firmware: larsmm hoverboard-firmware-hack-bbcar
Specifications
Max speed: 29km/h (turbo)
Range: ~10km
Motors: Four 350W BLDC permanent magnet motors with hall-sensors, 800W peak
Battery: Lithium-ion 10S2P 4400mAh (10S-13S supported)
System voltage: 36V
Charging: External 42V 2A charger
Driving modes: 4 - safe/slow/fun/power with turbo boost + reverse
Dimensions
Wheelbase: 394 mm
Width: 330 mm
Length: 575 mm
Weight: 17.6 kg

This is the Electric Bobby Car, or E-Bobby Car, motor upgrade build (not chronological log) using parts from two Hoverboards. The end result will have four motors (one per wheel), two Xbox 360 potentiometers as throttle and brake triggers, and two push buttons to turn on and off each motor controller independently for FWD, RWD, or AWD. Inside the Bobby Car all the equipment resides, e.g. the controllers, battery, and cabling, in addition to new parts to improve the strength of the base.

Most of the front wheel steering assembly had to be replaced by new 3D-printed parts. The same is true for the rear wheel base as it was replaced with an aluminum mounting plate.

The controllers was flashed to a new alternative firmware developed by Larsmm, which is a fork of the original work by NiklasFauth, rene-dev, and crinq. This firmware provides four driving modes with different speed, acceleration, turbo activation, and smooth acceleration and breaking ramps!

6nbsp;   Dec. 2019: 36c3 resource exhaustion.png Attending 36C3: Resource Exhaustion

Base preparation

Main equipment bay

A slot had to by cut out of the bottom to allow internal access and functions as the main equipment bay. As the Bobby Car is made from polyethylene (PE-plastic) it is pretty easy to cut and handle.

The slot measures 78 x 148 mm, just enough to fit the controllers and battery. Rounded corners to minimize stress areas.

Electric bobby car build base cut internal bay1.jpg Electric bobby car build base cut internal bay2.jpg Electric bobby car build base cut internal bay3.jpg

In the final stage it is covered by a see-through Lexan plate.

Rear wheel slots

Two rear indentations were cut out to make space for a wooden structure which later would be used to mount a 12mm aluminium wheel plate. These were cut just at/below the stock axle hole and are at the same height as the new front wheels when installed, so the base would be level.

To judge the right cut height, it is an advantage to first prepare the rear wheel base and use it for make an educated approximation.

Electric bobby car build base cut rear slot1.jpg Electric bobby car build base cut rear slot2.jpg Electric bobby car build base cut rear slot3.jpg Electric bobby car build base cut rear slot4.jpg

To remove sharp edges and to release stress areas, the edges were treated with a heat gun.

Electric bobby car build base cut heatgun.jpg

Rear wheel structure

The internal rear wood structure consists of one cross beam and six smaller wood pieces stacked on top of each other. The load of the driver will be nicely distributed to the wheels and ground, easily increasing the max. driver weight to over 100kg!

Each wooden piece was fastened to the parent piece using wood screws, making sure to use a different screw pattern for each layer to avoid conflicts.

Electric bobby car build base rear structure1.jpg Electric bobby car build base rear structure2.jpg Electric bobby car build base rear structure3.jpg

Mounting the wooden structure to the plastic base wall was done by nine 4 x 30mm wooden screws (pilot holes pre-drilled), linking each layer of the internal structure. Using washers to distribute the load as wide as possible. If the wheel touches the head of the screws, file them down a bit.

Electric bobby car build base rear mounting structure1.jpg Electric bobby car build base rear mounting structure2.jpg

The end result was a very massive and solid base structure to mount the plate and wheels.

Rear wheels

All the stock parts of the Bobby Car front and rear wheels was removed, only a few parts of the steering was reused. Two Hoverboard wheel brackets and screws were also reused.

Electric bobby car build wheels rear cad overview.png Electric bobby car build wheels rear plate design.png

Wheel base plate

As much of the driver's weight will be over the rear wheels, the wheels had to be mounted on an strong 205x70x12mm 6061 aluminium plate. Slots and screw holes were routed and drilled/tapped out, respectively, using regular home/garage gear. Additional screw holes were added for future expansions, like a hook for a trailer, photo interrupter sensor, and lights.

The plate was prepared by outlining the design on surface. The holes were first counter-sunk, then drilled. Sharp edges were deburred using the counter-sunk drill bit. Holes to fasten the plate to the wood structure were counter-sunk for a flush finish.

Electric bobby car build wheels rear plate holes1.jpg Electric bobby car build wheels rear plate holes2.jpg Electric bobby car build wheels rear plate holes3.jpg

The plate was cut to length with a jig saw, at 205mm.

Electric bobby car build wheels rear plate length1.jpg Electric bobby car build wheels rear plate length2.jpg

To cut out the wheel axle slots, a Bosch router with a HSS straight two flute Ø8mm milling cutter was used (see drawing for dimensions). I did 1-2mm cutting depth at each pass and multiple finer passes to end up at the final smooth finish. Used WD40 and low RPM on the router to avoid overheating the cutter.

Electric bobby car build wheels rear plate slots1.jpg Electric bobby car build wheels rear plate slots2.jpg Electric bobby car build wheels rear plate slots3.jpg

The screw holes needed to be drilled with a pilot hole of Screw Diameter x 0.9 = Drill bit size, e.g. M8 x 0.9 = 7.2mm, or the closest one available (7mm). Then using a taper tap to gradually cutting out the required threads. Normal through holes use the required drill diameter, e.g. 8mm drill for 8mm hole.

Electric bobby car build wheels rear plate screw holes1.jpg Electric bobby car build wheels rear plate screw holes2.jpg

Installing plate

Once the wooden structure and plate was ready, pilot holes were drilled in the wooden structure (to relieve pressure and avoid cracking) and the plate was installed using 6 x 45mm counter-sunk wood screws. This provided a very stabel platform to mount the wheels.

Electric bobby car build wheels rear installing plate1.jpg Electric bobby car build wheels rear installing plate2.jpg

Mounting wheels

Both wheels are mounted to the base plate by sandwiching the axle between the stock Hoverboard bracket using the existing four M8 x 30mm screws. The tip of the screws won't protrude once fastened.

Electric bobby car build wheels rear mounting1.jpg Electric bobby car build wheels rear mounting2.jpg Electric bobby car build wheels rear mounting3.jpg

Axle cover

The axle and motor wires are directly exposed and could be damaged. A 3D-printed cover (include in the CAD package) screws in place over this area. Water drainage holes provided.

Electric bobby car build wheels rear cover1.jpg

Rear wiring

The wiring coming from the motor was feed through the base plate and then inside the base through a small hole just underneath the front end of the wheel plate.

Electric bobby car build wheels rear wiring1.jpg Electric bobby car build wheels rear wiring2.jpg

The wires were protected from abbreviation by a cable sleeve and heat shrink cover.

Front wheels

The front wheel assembly was modeled and new parts designed to incorporate the motors into the stock front wheel structure. Wheel clearance height was increase/raised by 10 mm to all the bigger radius Hoverboard wheels to fit (155mm vs 170mm).

All parts were designed/3D-printed (ABS) with strength as one of the main principles, primarily using long through screws and 70% infill to compress and distribute, respectively, much of the stresses experienced on the parts.

Electric bobby car build wheels front cad overview1.png Electric bobby car build wheels front cad overview2.png

Full aluminium CNC parts or metal support inserts would be a future upgrade here.

Steering wheel assembly

The assembly consists of four main parts and six screws along with six nuts to keep it all together. See the BOM for full break-down of the screw selection. A skateboard bearing lessens some of the pressure and tear on the upper steering joint.

Electric bobby car build wheels front assembly1.jpg Electric bobby car build wheels front assembly2.jpg Electric bobby car build wheels front assembly3.jpg Electric bobby car build wheels front assembly4.jpg

Cross bracket

Both wheels are kept in alignment by the stock front cross bracket. This is screwed onto the base frame. The bracket had to be reinforced using eight M4 x 30mm screws which connect to a counter plate with the nuts inside the base, instead of the stock two threaded plastic screws. No washers on the four corner screws, for space reasons.

Electric bobby car build wheels front bracket1.jpg Electric bobby car build wheels front bracket2.jpg Electric bobby car build wheels front bracket3.jpg Electric bobby car build wheels front bracket4.jpg

Front wiring

The wiring coming from the motor was feed through a small hole just in the middle of steering range motion to minimize cable stress/bending.

Electric bobby car build wheels front wiring1.jpg Electric bobby car build wheels front wiring2.jpg

The wires were protected from abbreviation by a cable sleeve and heat shrink cover.

Steering

Much of the steering assembly was redesigned from ground, except for the steering wheel itself. Much work went into figuring out how the throttle and brake trigger would mount and wiring would be routed. Addition base reinforcement was also needed.

Electric bobby car build steering cad overview1.png


Base rod support

As there will be a lot of load on the steering rod, additional support had been added to the top and bottom side where the rod protrudes through the plastic base.

The top and bottom support brackets were fastened to the base using slotted M4 x 25 mm mushroom screws and nuts.

Electric bobby car build steering rod support top1.jpg Electric bobby car build steering rod support top2.jpg

Inside both brackets are ID Ø10mm ball bearing to make the axial steering motion smoother.

Electric bobby car build steering rod support bottom1.jpg Electric bobby car build steering rod support bottom2.jpg

Rod bending

The new rod was based on the stock dimension and bend, just longer on one end to put the steering wheel at a comfortable position.

Using a Ø10mm stainless steel rod, one end was heated using a simple butane camping gas stove to make it pliable. Stuck it in vise and bent it to the approx. radius. Then put the entire bend into the vise and squeeze it into the right dimension, using the stock as a template. If the bent end is too long, saw it to the correct length. This took almost 2 hours.

Electric bobby car build steering rod1.jpg Electric bobby car build steering rod2.jpg

Rod length and holes

The original rod was too short, so the steering wheel had to be raised and consequently the steering rod had to be lengthened by 155mm, the end rod length turned out to be 450mm.

Finding the best height can be done by trying the rod on the Bobby Car with the steering wheel next to it. Mark the spot and cut the rod - be sure to include the inserted length too.

To allow for different steering wheel heights/accommodate more drivers, I made three different mounting holes, Ø5mm each. This also requires a through hole in the plastic on the steering wheel column. As I was going to use a small 300x300mm cotton cushion I included that in the measurement.

The holes were spaces in 15mm intervals:

  • 15mm from end
  • 30mm from end
  • 45mm from end

Electric bobby car build steering rod mounting1.jpg Electric bobby car build steering rod mounting2.jpg Electric bobby car build steering rod mounting3.jpg

To keep the rod from falling through on assembly or pop out of the steering swing arm, an outer Ø32 x 140mm white PVC tube keeps the steering wheel at the correct position and protects the wiring going to the controller.

Electric bobby car build steering rod tube1.jpg Electric bobby car build steering rod tube2.jpg

Throttle and brake

Using Larsm's method for the throttle and brake levers by mounting them on the front end (10:30 and 1:30 o'clock) on the steering wheel. A special 3D-printed holder keeps the trigger mechanism, 10kΩ potentiometer and support board in place. All put in place on the steering wheel using hot glue. An upgrade here would be a through screw.

Electric bobby car build steering throttle brake mounting1.jpg Electric bobby car build steering throttle brake mounting2.jpg

Wiring the potentiometer is simple, 3V3 (red), analog out (yellow, mid-pin), and ground (black). The wires are tucked away underneath the steering cup. When pressing the trigger the voltage rises gradually from 0V to 3V3 (in practice more like 0.6V to 2.6V because the pull-down resistor and the potentiometer not hitting its extreme range of motion.)

Electric bobby car build steering throttle brake wiring1.jpg Electric bobby car build steering throttle brake wiring2.jpg

Steering wiring

Both triggers connects to a modified break-out board - it just makes it easier to plug everything together using JST XH B4B connectors. It is located inside the steering wheel column. The real active break-out board is located next to the controllers.

The lead was feed through a drilled hole in the steering wheel column and the lead from the break-out board comes out of a hole next close to the steering rod - making repairs easy.

Electric bobby car build steering steering wiring1.jpg Electric bobby car build steering steering wiring2.jpg Electric bobby car build steering steering wiring3.jpg

Electronics

Break-out board

This is board makes it easier to finish the build. It easily connects the potentiometers and mainboards using JST XH B4B sockets, has analog signal filtering, a 3V3 250mAh LDO, I2C pull-ups (if required), and dual ADC voltage follower op-amp isolation. The isolation makes it possible for one driver board to be turned off without interfering with the other. The break-out tucks away inside the Bobby Car, next to the main boards.

Inspired by the Jan Henrik break-out boards.

Bobbycar hoverboard throttle breakout schematic.png Bobbycar hoverboard throttle breakout board1.jpg

Bobbycar hoverboard throttle breakout pcb top.png Bobbycar hoverboard throttle breakout pcb bottom.png

Motor wiring

Connecting the front motors to controller is straight plug and play, but the rear main motor wires needed to be extended 10 cm to reach the controller. Simple cut-and-solder in 16 AWG / 1.3mm2 extension wires, keeping the existing bullet connectors.

Note that if the motors will not turn correctly when throttle is applied, try to swap two of the leads and make sure every connection is solid.

Electric bobby car build motor wiring1.jpg Electric bobby car build motor wiring2.jpg

The thinner motor hall-effect wires were easily extended using custom made 15cm JST SM extension wires with connectors on each end.

Electric bobby car build motor hall wiring1.jpg

A future upgrade would be to increase the gauge of the battery and motor wires, as they are already at their limits.

Mounting controllers

The controllers are essentially identical, except for slightly different caps, power transistors, and wiring method. Both are from Hoverboard productions in 2015. Both rock the same STM32F103 ARM Cortext-M3 MCU.

Electric bobby car build controller1.jpg Electric bobby car build controller2.jpg Electric bobby car build controller3.jpg

The controllers were mounted back-to-back using four M4 x 30mm screws and nuts with a stand-off spacer in-between, and installed vertically using a custom 3D-printed bracket and two slotted M5 x 16mm mushroom screws and nuts. A compact XT60 Y-splitter made out of two female and one male connector joins the two main power leads into one.

Electric bobby car build controller mounting1.jpg Electric bobby car build controller mounting2.jpg Electric bobby car build controller mounting3.jpg

Battery

This build is using the stock 4.4Ah 10S2P 36V Lithium-ion battery from the Hoverboard. It is made of 20x Samsung ICR18650 3.7V 2200mAh cells, with a BMS built-in. The BMS (Battery Management System) takes care of overcharging, overcurrent protection, deep-discharge cut-off, and balancing the cells. A 12S 44.4V battery is supported by the mainboard components (even 13S), but that is left for a future upgrade.

The battery is kept secure by a hook-and-look strap around the battery and through two slots in a Lexan cover plate.

Electric bobby car build battery1.jpg File:Electric bobby car build battery2.jpg

Power buttons

As this is a four motor, two controller setup, I wanted to have the possibility to power-on each controller independently. This would allow for FWD, RWD or AWD, depending on the occasion. This required the break-out board in order to isolate (op-amp voltage follower) the two controllers so they would not power each other or pull-down the throttle/brake signal when one of the controllers were powered down.

Two momentary green LED push non-latching buttons were prepared with a four-pin JST XH B4B connector. The corresponding socket was connected to the 15V regulator on the controller and power-on pins. A 2k resistor was put on the button LED power pin to lower the illumination. A Ø12mm hole was drilled and the buttons installed next to the steering rod.

Electric bobby car build power buttons1.jpg Electric bobby car build power buttons2.jpg Electric bobby car build power buttons3.jpg

Power harness and charging

A 3D-printed bracket holds the disconnect plug (cuts all power) and the re-used charging port in place just rear of the equipment bay slot, by Fisch's inspiration. A Y-split harness was made to accommodate a future dual-battery setup, only one connector was used here. It connects four XT60 connectors and 10cm long 14AWG / 2.0mm2 silicone power wires (in retrospect 10-12AWG / 4.0mm2 is a better option.) The male end connects to the battery and the female to the compact Y-splitter from the mainboards, with a 60A fuse in-between.

The bracket was fastened using three shortened M4 x 25mm mushroom screws and nuts.

Note that you can still use the stock charging port, as it is a straight pass-through on the mainboard to the battery, with a simple charge-detect circuit for the MCU (not used in the new firmware). This charging-circuit should in theory be able to handle 12S and 13S setups.

Electric bobby car build power charging1.jpg Electric bobby car build power charging2.jpg

Vibration protection

As there will be a fair about of vibration experienced by the main controllers, each major component (caps, regs, wires) was secured by hot glue - this is not the best compound as it does not grab very well, a future upgrade would be silicone potting compound.

Electric bobby car build vibration1.jpg

Firmware

Configuration and calibrate

The larsmm Bobby Car optimized hoverboard firmware needed to be changed, calibrated and recompiled in order to be usable.

In Inc/config.h, assign the correct battery cell count under #define BAT_NUMBER_OF_CELLS 10. Use a multi-meter to measure the battery voltage, put the values in #define BAT_CALIB_REAL_VOLTAGE and #define BAT_CALIB_AD.

Calibrate the ADC inputs #define ADC1_MIN #define ADC1_MAX #define ADC2_MIN #define ADC2_MAX under #define CONTROL_ADC, using the serial debugging output (see next section). Press the triggers and note the max. and min. values. The STM32 ADCs are 12-bit, meaning 0 to 4096. For this build the calibrated range was approx. 720 to 3790, which corresponds to 0.6V to 2.6V.

If the wheels rotate the wrong direction, comment out //#define INVERT_R_DIRECTION and //#define INVERT_L_DIRECTION. Note that you will end up with two firmware versions, one for each controller.

To adjust the reverse speed, adjust the ...(ADC2_DELTA / 280.0f)... snippet in Src/main.c for each driving mode. Higher values increases the speed, try 400.0f to 800.0f.

Compile firmware

To compile the firmware I used an Arch CLI VMWare image from OSBoxes.org to set up the ARM toolchain.

pacman -S arm-none-eabi-gcc arm-none-eabi-newlib autoconf automake bison confuse coreutils cower diffutils expac fakeroot flex gcc gcc-libs gettext git glibc groff gzip libtool licenses m4 make man-db nano openocd patch perl pkgconf s-nail sed stlink texinfo util-linux vi
git clone https://github.com/larsmm/hoverboard-firmware-hack-bbcar
cd hoverboard-firmware-hack-bbcar
nano Inc/config.h
make

The new firmware will reside in build/hover.bin

Download my compiled firmware here:

Debugging

In Inc/config.h you can enable debugging output #define DEBUG_SERIAL_USART3 #define DEBUG_SERIAL_ASCII to enable an serial UART console on the right sensor board connector. Each board got its own debugging connector, as seen in the photo. Connect an USB-to-serial adapter to the TX, RX, and GND pins - 3V3 not needed.

This console outputs a comma separated string of the current operating parameters, as listed.

Example: 1:812 2:723 3:0 4:0 5:1547 6:3903 7:1650 8:36

  • 1: ADC1, TX, right, forward
  • 2: ADC2, RX, left, brake/reverse
  • 3: Output speed: 0-1000
  • 4: Output speed: 0-1000
  • 5: For battery voltage calibration
  • 6: For verifying battery voltage calibration
  • 7: For board temperature calibration
  • 8: For verifying board temperature calibration

Electric bobby car build debugging port1.jpg Electric bobby car build debug console arch1.png

Flash firmware

The Hoverboard controller board exposes the SWD-programming port. Only three wires needed to be soldered in order to flash the mainboard. Each board got its own programming connector, as seen in the photo.

Pin Board Programmer Wire color (in photo) Note
1 DIO SWDIO Yellow wire -
2 GND GND Black wire -
3 CLK SWCLK Blue wire -
4 3V3 3V3 Red wire Leave unconnected, 3V3 provided by board

Electric bobby car build flash port1.jpg Electric bobby car build flash port2.jpg

Make sure the battery and power-button is connected as this is required to flash. Connect the ST-Link V2 Mini programmer to the mainboard.

Power off, press and hold the power-button while restoring power, keep holding and executing the following commands. It only takes a few seconds. If you get an error were openocd detects the ST-Link but not the mainboard, check the power-button and that you hold it during the entire process.

Unlock MCU:

openocd -f /usr/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/share/openocd/scripts/target/stm32f1x.cfg -c "init" -c "reset halt" -c "stm32f1x unlock 0"

Flash MCU:

openocd -f /usr/share/openocd/scripts/interface/stlink-v2.cfg -f /usr/share/openocd/scripts/target/stm32f1x.cfg -c "init" -c "reset init" -c "halt" -c "flash write_image erase build/hover.bin 0x8000000" -c "shutdown"

Electric bobby car build flash firmware arch1.png

Usage

Electric bobby car build final usage1.jpg

Using the Electric Bobby Car is pretty easy. There are two triggers for throttle and brake, two buttons to enable/start-up the front and/or rear motors, and a steering wheel. After acceleration and releasing the triggers (no input), the controller will exponential brake to a halt.

Input function Control output
Right trigger/ADC1 Acceleration/throttle
Left trigger/ADC2 Brake/turbo activation
Right power button Front controller/motors
Left power button Rear controller/motors
Steering wheel Turn the front wheels

When the controller start up, it will beep according to the active driving mode.

Trigger Beep(s) Driving mode Max. speed Turbo
Left trigger 1 beep Mode 1 - Safe 3 km/h No
No trigger, default 2 beep Mode 2 - Slow 6 km/h No
Right triggger 3 beep Mode 3 - Normal 12 km/h No
Left and right trigger 4 beep Mode 4 - Fast 22 km/h Yes, L+R trigger 29 km/h

Areas of improvements

  • Steering wheel mounting to steering rod, less slack
  • Battery voltage increase, 10S to 12S
  • Power cable upgrade, 14AWG to 10AWG
  • Steering wheel assembly upgrade, from ABS to Aluminium
  • Steering wheel display, showing battery and driving details
  • Front beams and rear red brake lights, traffic ready 😁

BOM

CAD models:

General parts

Quantity Description Designation
1x Big New Bobby Car Main base
2x Xbox 360 Game controller 10kΩ potentiometer Throttle and brake triggers
2x Hoverboard with STM32 MCU Wheels, controllers, batteries and misc.
1x ST Link V2 compatible programmer Flash new firmware
1x FTDI USB to TTL Serial Adapter Module Debugging console
1x Aluminium 6061 205x70x12mm plate Rear wheel plate
1x Several two-by-four wood pieces Rear wheel structure
1x Round Stainless Steel Rod Ø10mm x 45cm alt. Steering wheel rod
1x Plastic PVC Ø32mm x 50cm tube alt. Steering wheel height and wire protection
4x JST SM-2.54 22AWG Wire Male and Female Connectors Hall-effect extension cable
1x XT60 60A Female Male connectors Power plug and power cable
1x Silicone Wire 14AWG red Hobbyking Power cable
1x Silicone Wire 14AWG black Hobbyking Power cable
2x Deep Groove Ball Bearing 608ZZ ID Ø8mm Front upper wheel join load distribution
2x NMB Steel Bearing Motor Grade Bearing ID Ø10mm Steering rod lower load distribution

Screws

Quantity Description Designation
16x 4 x 30mm Screws Chipboard Pozi Pan in A2 Stainless Rear plastic body to wood structure
16x M4 Washer Form A in A2 Stainless - ISO 7089 DIN 125A Rear plastic body to wood structure
12x 6 x 45mm Torx Countersunk Chipboard Screws in A2 Stainless Steel Rear alu-plate to wood structure
8x M8 x 30mm screws for motor axle bracket - use existing Hoverboard screws, 1.25mm pitch Rear motor bracket to alu-plate
8x M8 x 40mm Socket Low Head Cap Screws 3mm profile A2 DIN 7984 Steering assembly motor clamp
2x M8 x 25mm Low Socket Head Cap Screw 5mm low head in A2 Stainless - DIN 7984 Steering wheel inner stability top plate core
2x M8 x 80mm Socket Head Cap Screw Full Thread cut to 74mm in A2 Stainless - ISO 4762 DIN 912 Steering wheel inner stability body and bearing
2x M8 x 40mm Cap Socket Head Cap Screw 8mm head depth in A2 Stainless - ISO 4762 DIN 912 Steering wheel inner stability arm core
14x M8 Nyloc Nut Type T Thin 8mm in A2 Stainless - DIN 985 Nuts for steering wheel assembly
8x M4 x 30mm Socket Head Cap Screws ISO 4762 DIN 912 in A2 Stainless Steel Reinforcement screws for cross bracket
4x M4 Nyloc Nut Type T Thin in A2 Stainless - DIN 985 Reinforcement screws for cross bracket
4x M4 Washer Form C in A2 Stainless - BS4320 Reinforcement screws for cross bracket
1x M5 x 25mm Slotted Mushroom Screw in A2 Stainless Steering wheel to steering rod lock screw
1x M5 Square Weld Nut in A2 Stainless Steering wheel to steering rod lock screw
4x M4 x 25mm Slotted Mushroom Screw in A2 Stainless Steering rod support brackets top and bottom
4x M4 Locking Nuts Nyloc Type T Thin in A2 Stainless - DIN 985 Steering rod support brackets top and bottom
4x M4 Washer Form C in A2 Stainless - BS4320 Steering rod support brackets top and bottom
4x M4 x 30mm Socket Head Cap Screws ISO 4762 DIN 912 in A2 Stainless Steel Motor controller board assembly
4x M4 Nyloc Nut Type T Thin in A2 Stainless - DIN 985 Motor controller board assembly
2x M5 x 16mm Slotted Mushroom Screw in A2 Stainless Motor controller board assembly mounting to plastic body
2x M5 Locking Nuts Nyloc Type T Thin in A2 Stainless - DIN 985 Motor controller board assembly mounting to plastic body
2x M5 x 16mm Slotted Mushroom Screw in A2 Stainless Bottom cover plate
2x M5 Locking Nuts Nyloc Type T Thin in A2 Stainless - DIN 985 Bottom cover plate

References