From BitWizard WIKI
Jump to: navigation, search

BESC -- BitWizard ESC


The BitWizard ESC is based on Benjamin Vedder's VESC. The BESC has as advantages that the FETS are better positioned so that they can be cooled. A disadvantage is that it is slightly larger so it takes a bit more space.

getting started


Power electronics is finicky stuff. Create a short somewhere and things blow up spectacularly immediately (or not (*)).

The BESC shuts down permanently when:

  • you connect the two sub-boards shifted one pin. Don't ask how I know.
  • the connector between both boards comes

loose. if your enclosure does not force the boards together, consider a tiewrap to keep them together.

  • In cardboard box, riding at 15A continuous for 20 minutes causes the board to overheat. Or at least enter thermal slowdown.

(*) it blows up trust me, just maybe not spectacularly.

connecting the motor and the battery

The power board needs connections to the motor and to the battery.

There are three obvious places for the motor wires. Right? Those are near a TAB for a FET. You MAY connect to that tab as well. There are 6-and-a-half feet of the other fet nearby. The leftmost is the gate. Do not short there. The middle, shorter one is the V+. Do not short there. That leaves five legs of the transistor that you're allowed to solder to. This last option is the easiest. Before powering it up: PLEASE check that you don't have any shorts. Check for shorts from the motor wires to both supply pins and to the gates of the highside FETs.

If you have the power-board right-side-up, you'll have the battery connections nearest yourself, the pin header on the right. The left battery connection is the battery +, the right one is the ground. Double check: The battery + is connected to all three tabs of the high side fets. Those are the tabs nearest the PCB edge. The battery - is connected to all three shunt resistors. (according to your multimeter: both sides ;-) ).

Keep the capacitors as close as possible to the board. Consider soldering them between the ground side of the shunt resistors and the tabs of the high-side fets.

The back of the power board is meant for cooling. At 20A max current, and riding 18 minutes at 15A I heated my board into thermal slowdown yesterday night. I should get a bit better cooling for my own bike.

If you're going to cool that side of the PCB, make sure your wires do not protrude through the PCB, or short against the heatsink.

Software and updating

I'm on branch "cr" of rewolff/bldc-bw.git on github. (I don't remembery why I created that branch. Todo: figure that out). Doublecheck that conf_general.h has "BW2" as the hardware selected. That's the version that is being sold.

I have never used Benjamins bootloader. Connect the board to the PC. Next power up the board. Now press-and-hold the boot button, press-and-release the reset button, and release the boot button. Now the CPU is in USB bootloader mode.

I use

       dfu-util -a 0 -D build/BLDC_4_ChibiOS.dfu

to upload new firmware. use

 make  build/BLDC_4_ChibiOS.dfu

to build the required file.

To control the BESC use Benjamins VESC-tool software. Download it at

connections on the main board


This is the analog input port

  • 1 GND
  • 2 AIN 1 0-5V (a 4k7/10k resistor divider connects this to the input on the CPU)
  • 3 AIN 2 0-3.3V (directly connected to the CPU: do not exceed 3.3V).
  • 4 5V


SV1 is meant for PWM input or output.

  • 1 GND
  • 2 +5V
  • 3 signal

Benjamin recommends something like changing the resistor on the board when changing from input to output. On the BESC, an 1k resistor is used. This is fine for input and should work for output as well. Let me know if you use it and find out otherwise. If you want to change the resistor, follow the trace and you find R40.

In case you're configuring the software. The pin is connected to PB12 on the CPU.


  • 1 GND
  • 2 RX PC7
  • 3 TX PC6
  • 4 VCCIO

You can select the voltage on the power pin with the solder jumper near pin 4 of the uart connector. Currently there is no default. That would leave pin 4 unconnected until you drop a solder blob on one of the sides of that solder jumper.


The SWD connector mirrors the SWD connector available on ST's Discovery and Nucleo boards. If all else fails, you can program your board through this connector with a nucleo.

  • 1 3.3V
  • 2 SWCLK
  • 3 GND
  • 4 SWDAT
  • 5 NRST
  • 6 NC


The hall sensor connector has the following pinout:

  • 1 GND
  • 2 HALL 3
  • 3 HALL 2
  • 4 HALL 1
  • 5 TEMP
  • 6 +5V.

The temp sensor is connected to the temp sensor (MCP9700 ) on the FET board So alas, no separate motor/fet temperature sensing. :-(

To be compatible with 5V hall sensors (most of them) there is a 10k resistor between the pin and the CPU. This would have helped make the input 5V tolerant if the CPU didn't already have 5V tolerance on the relevant pins. There is also a pullup to 5V on the connector side. This allows the use of open collector (or open drain) output hall sensors. The pullup is 10k.


The CAN connector has the following pinout:

  • 1 GND
  • 2 CAN_L
  • 3 CAN_H
  • 4 +5V

I have not tested the can functionality yet.


This is a debugging connector for "other current sensing techniques". Your board may not have it. Pinout is:

  • 1 GND
  • 2 CS_A
  • 3 CS_B
  • 4 CS_C
  • 5 VCCIO

The VCCIO is again locally selectable with a solder jumper. If you want to monitor the current sense signal here, that would be an option.


The board has a builtin 60V -> 12V DCDC converter centered around U10. To probe the motor voltage, or 12V you can use the U6 footprint. I also use it on "higher voltage" experiments where the 60V of the DCDC converter there is insufficient. There are two options: An external say 100V DCDC converter or externally provide 12V.

  • 1 VIN (VMOT)
  • 2 GND
  • 3 12V

due to using standard resistor values, the 12V on the board comes out to 11.89V IIRC.


The SPI connector uses ATMELS ICSP pinout. Search this wiki (or google it) for the exact pinout.

The power supply voltage is selectable with the solder jumper below it.

I have a 20x4 SPI LCD display on my bike with speed, voltage, motor/battery current and FET temperature.