Dagor Brushless Motor Controller

Brushless motor controller for velocity and position control with wireless communication.

Public Chat
Similar projects worth following
Arduino-based fully integrated tiny solution for brushless-based actuators with wireless capabilities.

This controller is based on my previous design, the board includes an on-board ESP32, a buck regulator, a DRV8305 MOSFET driver, three current sensing resistors, a magnetic encoder and a temperature sensor. I have tested wireless communication with the ESP32 through ESPNOW and it seems to work reliable and more-than-fast enough without affecting the control sample-time. With ESPNOW you could potentially create a full robot without any single cable aside from power.

Old design:

The code is completely open-source and Arduino based. The bulk of the code will be based on the SimpleFOC arduino library, since it has worked perfectly in the past and is constantly being upgraded and updated.

  • 1 × ESP32 Wroom module
  • 1 × DRV8305 Smart MOSFET Gate Driver
  • 3 × TPH1R403NL Discrete Semiconductors / Power Transistors and MOSFETs
  • 1 × AS5147 Magnetic Encoder
  • 1 × LMR14010A 4-40V 1A Buck regulator

View all 7 components

View all 16 project logs

Enjoy this project?



swalmen.angelino wrote 07/03/2022 at 19:07 point

Is this project still active?

  Are you sure? yes | no

srhassan71 wrote 11/30/2021 at 03:51 point

Would it be possible for you to build a brushless motor controller that would take PWM input from an RC receiver to control position? 

  Are you sure? yes | no

dekutree64 wrote 11/08/2022 at 01:25 point

That would be a simple firmware modificaton. You only need one digital input pin that can trigger an interrupt. Set it to interrupt on rising edge. When that triggers, record the current time with something like startTime = micros(), and set it to interrupt on falling edge. When that triggers, set it back to rising edge for next time, and micros() - startTime is your pulse width. 1000 microseconds is minimum position, 2000 microseconds is maximum position. Usually the actual range output by RC transmitters is more like 1100 to 1900, so for best results you should calibrate and scale the received value.

  Are you sure? yes | no

albertson.chris wrote 11/08/2022 at 17:43 point

I've found that if you have to explain how to measure a pulse to someone, they are not able to implement it.  This guy is looking for a turn-key product.

  Are you sure? yes | no

dekutree64 wrote 11/09/2022 at 06:26 point

Maybe so, but the answer is not just for him. You never know who will pass by in the future and learn something.

  Are you sure? yes | no

John Lauer wrote 12/08/2020 at 07:46 point

Hey, I posted on your form, but totally interested in a couple boards. jlauer12

  Are you sure? yes | no

David Gonzalez wrote 12/08/2020 at 22:54 point

I saw it, already contemplated for the alpha run :)

  Are you sure? yes | no

h3nrikmail wrote 11/25/2020 at 13:46 point

Very nice project! Can you approximate, how many erpm are possible with an esp32 and the simplefoc library? How fast can the brushless Motor turn?

  Are you sure? yes | no

Xasc wrote 11/25/2020 at 09:11 point

Nice, how big current can it hold?

  Are you sure? yes | no

David Gonzalez wrote 11/26/2020 at 19:26 point

It depends on the dissipation and the amount of time you draw current. I've draw continuous 3A without dissipation and without issues. The board should be around peak 40A for very very brief periods of time, again, depending on the cooling system and dissipation.

  Are you sure? yes | no

j fer wrote 11/20/2020 at 17:51 point

Really cool project, bravo :)
For a wire mode, the best option is to use an i2c network with the qwiic connector?

  Are you sure? yes | no

David Gonzalez wrote 11/20/2020 at 18:33 point

Totally a possibility. There is no i2c slave implementation for the ESP32 in the arduino core as of right now. There's a few workarounds, but I'm not sure how well these behave as I haven't tested them myself.

  Are you sure? yes | no

j fer wrote 11/20/2020 at 19:05 point

I was wondering if a quadruped robot with 12 actuators would be manageable with a Raspberry pi and the ESPNOW protocol.

  Are you sure? yes | no

David Gonzalez wrote 11/20/2020 at 19:12 point

I'm wondering the same. That link you sent me is part of the Solo 8 robot and I believe they don't use ESP-NOW for each individual motor. Id didn't know about the raspberry implementation, thanks for sharing :)

  Are you sure? yes | no


[this comment has been deleted]

David Gonzalez wrote 10/17/2020 at 18:43 point

Will take a look!

  Are you sure? yes | no

bozkurt13 wrote 10/09/2020 at 15:16 point

PBC'yi paylaşacak mısın?

  Are you sure? yes | no

zhuangfengzi wrote 09/27/2020 at 01:11 point

Well done! I want to be one too! Can you share your PCB?

Waiting for the goods, more your first version! Looking forward to it!


  Are you sure? yes | no

Owen Williams wrote 08/28/2020 at 09:02 point

I want one.  When do you think yours will arrive? I've read about espnow, wonder how the latency will compare with can bus. E.g for balancing applications it probably needs to be <5ms.

I'd love to study your design files. I've been following your janus and didn't realise you've moved on to dagor. 

Is this a jlpcb? What parts will you need to solder?

  Are you sure? yes | no

Simon Merrett wrote 08/28/2020 at 22:18 point

@Owen Williams off the top of my head I recall ESP-NOW taking under 1ms each way. But I could be confusing that timing with NRF24 which is around the same order of magnitude.

  Are you sure? yes | no

David Gonzalez wrote 08/29/2020 at 19:11 point

I haven't done a proper latency test, but I believe for small payloads it should be around 3-4 ms, which in my opinion is totally acceptable for most applications.

  Are you sure? yes | no

Paul Gould wrote 08/30/2020 at 01:57 point

You are correct. It varies between 0.5ms and 1ms for small payloads.

  Are you sure? yes | no

David Gonzalez wrote 08/29/2020 at 19:13 point

I think I will have them on my hand by next Friday. I will have to solder the ESP32, the encoder, buttons and an inductor; I already have all these parts here. I'll try to make sure you get one soon enough :)

  Are you sure? yes | no

Aaron wrote 08/06/2020 at 09:11 point

Nice,so tiny

  Are you sure? yes | no

Similar Projects

Does this project spark your interest?

Become a member to follow this project and never miss any updates