Rev_3 e-MTB front mount

After being in dialog with representatives of Gates and Optibelt, the design is starting to settle. Since I want the belt to be rugged and able to tolerate rainwater, 8mm pitch is definitely the way to move forward. Ideally the design should work for both Gates (Poly Chain Carbon - Blue Nylon Cloth) and Optibelt (Delta Chain - Red Nylon Cloth). It is hard to se if it is in fact possible to drive the two belts on the same sprocket. I have now switched to 203mm disc, since it enables me to design around the 720mm length belt´s (12mm width) and not the shorter 640mm. This mean a spacer should be used for front forks not build for 203mm direct-mount. By switching to a larger, more appropriate 720mm the teeth count for the driving sprocket can be increased and thereby having more teeth in mesh with belt groves, which in turn increases power rating and reduces wear on the drivetrain.

This disc is just an example and may not be the most affordable option.

Just received the motors. Got three different kinds. Two 54mm (140kv & 190kv) and one 68mm (140kv).
Looking forward to test these battle-hardened outrunners with the library.

I was concerned about the balance of the bike with the motor on, but after a ride to see for myself, Im not so concerned any more. I can still ride without hands, without the handlebars tilting. When the motor will pull the wheel, that might be a different story.

Here it is mounted to my Beasty

1 Like


After doing some initial testing on the controller, now running FOC mode and inline current sensing, I have come to the conclusion that I need larger bridges. The dual channel half bridge from Infineon works for the LED lamp it is intended for, but running 0.053 ohm BLDC, they will get hot when pulling more the 10 amps (10 kHz pwm switching).

There is of course the possibility to add cooling, but I fear it will not be adequate.

Nice work, So instead of Infineon IFx007T which other bridge you will be using.

3D printed standoffs for MOSFET cooling surface contact.


86mm x 49mm

Hey, that link is for the shunt resistors… but I’d also be interested to know which FETs you have now chosen, if you don’t mind to share…


Since the recent design did not live up to my expectation regarding current switching capabilities for the bike setup, I have decided to move towards a more bike dedicated controller.

The FET bridges for the Dimmer design has a on-resistance of 3mOhm, the new design will be using four 0.65mOhm FET´s per bridge. As I have discovered, the dual bridge FET will get hot around 10 amp (10kHz switching). In the datasheet for the dual bridge (IAUC60N04S6L030HATMA1) It is written to handle 22 amp on 2s2p. The PG-HSOF-5 (IAUA250N04S6N006) footprint on the other hand, should have a 57amp capacity on 2s2p. Double that by using two FET´s in parallel. This makes me believe, that it is realistic to achieve 35 amp doing 10khz switching, maybe more for short bursts.

So what should a bike dedicated controller be able to control?

Besides the motor, having control of the front and rear light will be a nice to have. I don’t know about turn signal lights. Maybe it´s over the top. If my cat where to connect to controllers over the CAN bus, it would make sense to use the rear for rear light and the front for front light.

It should be able to read a cadence sensor.

It should be able to communicate with a small handlebar display or maybe have phone/app (BLE) access. If connecting a BLE module, the thought is to keep it a addon IC, in order to offload the main processor while transmitting.

1 Like

I found out, that the flipsky outrunner actually comes with 2mm pitch JST 6 pin plugs.

My cat unfortunately chewed one over…

Im starting to think, to move away from the 85amp power lugs, and make it possible or more convenient to solder in a large power wire directly.




These lugs are nice! 85 amp rated.

To avoid having contact between the main power connector and cooling surface. Any heatsink with the right dimensions can be used. Four threaded holes, that´s all for now folks.


Do you think its possible to send messages in USB host mode, while running a motor, more or les like we use the serial monitor. It would only be for monitoring purposes. I think maybe I can connect to a BLE dongle.

 if (SerialBT.connected) {
    if (firstMessage) {
      firstMessage = false;
      SerialBT.println(F("Hello from Arduino")); // Send welcome message
    if (SerialDebug.available())
    if (SerialBT.available())
    firstMessage = true;

There is a board that does USB host, called UHS Mini v2.0, using Max 3421EE

I’ve used it in the past to add USB host functionality. The Arduino library is very tricky but it works.

Edit: This is the library

Solving the software USB host issue (and other IOs in general— USB point, CAN, etc. ) with silicon is IMO the smart and correct way to add industrial-grade functionality to any solution.

JLC Part number C45862

USB host functionality

I see the nrf52840 dongle does have full speed USB. It would be a matter of updating some variables, like temp, battery voltage and so on. I think it should be physical buttons for changing assist mode. But the setting should be passed to the app.

Ive found a water proof SMD USB plug. The thought is to 3D print a shell and fill it with epoxy potting compound. Its the only true sealing method for harsh environment’s, like on a MTB. My goal is to make a capacitor add on bank, to be mounted between the two main terminals.

Getting ready for epoxy potting

Im having a hard time getting any real speed out of the 0.053 ohm outrunner, using up to 10 amp. This is how my simpleFoC studio looks like (running very slow, like 2 rad/s. When I push it, It runs like 35 rad/s). Do you think there is like a amp saturation point, where higher speeds are possible ?

Sample One

[Edit] When I do the tuning process, I can reach 5 rad/s by using this :

motor.PID_velocity.P = 4;
motor.PID_velocity.I = 4;
motor.PID_velocity.D = 0.001;

At which point it will be drawing around 5-8 amp…

I accidentally fried the controller by setting a wrong pwm frequency. I do think the current draw blew the scale on the shunts. I believe it will be easier to control if/when I can sample up to 50 amp or so. So no more testing at this point. Will need larger FET´s. More power !


controller mount

Some of the newer MCUs support host mode USB. But there are also MCUs (STM32W* and ESP32) which support BT directly, doing it via a dongle in host mode would mean writing a driver… lots of work I think.
I think one of the most promising options is to use a MCU like the STM32H7 - like on the Portenta. Then the M4 core can do motor control, and share the telemetry data to the M7 core via DMA and shared memory. The M7 core can then upload the data as a USB device to a host running SimpleFOC studio… in this way it should be possible to get very high density data at no cost to the motor control loop… :smiley: this is the kind of thing I dream up but never have time to implement

I agree, it seems like a lot of fiddling with bluetooth and app writing. One can just use a wire to phone USB connection and parse some monitoring data in JSON format, If that where the case. You might wanna read one letter at a time. To charge phone while driving should be possible, but will drain the battery. Aiming at 45minuttes ride on 15Ah battery.

Thinking about it. If there where a USB wire link, one could do without buttons for motor assist settings.