# Review request: low-cost dual motor controller based on Pico + DRV8316

**URL:** https://community.simplefoc.com/t/review-request-low-cost-dual-motor-controller-based-on-pico-drv8316/8161
**Category:** hardware support
**Tags:** raspberry\_pi\_pico, as5048a, rp2040, rp2350, drv8316
**Created:** [May 29, 2026, 10:33am UTC](https://community.simplefoc.com/t/review-request-low-cost-dual-motor-controller-based-on-pico-drv8316/8161 "2026-05-29T10:33:59Z")
**Posts on this page:** 10
**Page:** 1

<div class="post-metadata">

### Author: ![thomasfla](https://community.simplefoc.com/user_avatar/community.simplefoc.com/thomasfla/32/9066_2.png) [@thomasfla](https://community.simplefoc.com/u/thomasfla)
#### Post date: [May 29, 2026, 10:34am UTC](https://community.simplefoc.com/t/review-request-low-cost-dual-motor-controller-based-on-pico-drv8316/8161/1 "2026-05-29T10:34:00Z")

</div>

Hi,

I’m about to design a low-cost dual motor controller for teaching purposes and would appreciate some feedback before I commit to the PCB.

The target application is a 2-DOF direct-drive arm using two GM3506 motors with integrated AS5048A encoders. The goal is to keep the cost as low as possible while still supporting closed-loop FOC with current control.

Current architecture:

- Raspberry Pi Pico or Pico 2 module
- 2 × DRV8316 (3PWM mode)
- Dual low-side current sensing
- External ADCs (based on this proof of concept: [DO NOT MERGE WIP. Add support for external SPI ADC on rp2040 and rp2350 by thomasfla · Pull Request #65 · simplefoc/Arduino-FOC-drivers · GitHub](https://github.com/simplefoc/Arduino-FOC-drivers/pull/65))
- Shared SPI bus for encoders and DRV configuration
- Optional RS485 transceiver footprint
- 24 V supply

The target BOM cost is around €20–30 (excluding motors and encoders).

I’d be happy to get any general feedback on the schematic before I send the board for manufacturing. I’ll also post the PCB layout later for review.

If the concept works well, a future revision could use the RP2354B directly instead of a Pico module to make the board more compact and expose additional I/O.

Thanks!

 ![image](https://community.simplefoc.com/uploads/default/original/2X/c/cf41f95f485c361e13fbc23bb113614e85f10f5f.png)

---

<div class="post-metadata">

### Author: ![thomasfla](https://community.simplefoc.com/user_avatar/community.simplefoc.com/thomasfla/32/9066_2.png) [@thomasfla](https://community.simplefoc.com/u/thomasfla)
#### Post date: [June 1, 2026, 1:51pm UTC](https://community.simplefoc.com/t/review-request-low-cost-dual-motor-controller-based-on-pico-drv8316/8161/4 "2026-06-01T13:51:07Z")

</div>

A first draft of the PCB is hosted here: [GitHub - thomasfla/pico\_dual\_PMSM\_BUG79100G\_DRV8316C: Low cost PMSM using RPI Pico, external ADC and integrated mos+driver+current sensing. · GitHub](https://github.com/thomasfla/pico_dual_PMSM_BUG79100G_DRV8316C/tree/main)

 ![image](https://community.simplefoc.com/uploads/default/original/2X/2/2511f02c5e1a60aa76cfe503aab0fef480e23c8a.jpeg)

---

<div class="post-metadata">

### Author: ![thomasfla](https://community.simplefoc.com/user_avatar/community.simplefoc.com/thomasfla/32/9066_2.png) [@thomasfla](https://community.simplefoc.com/u/thomasfla)
#### Post date: [August 13, 2026, 2:58pm UTC](https://community.simplefoc.com/t/review-request-low-cost-dual-motor-controller-based-on-pico-drv8316/8161/6 "2026-08-13T14:58:38Z")

</div>

[![](https://img.youtube.com/vi/iHCYxwcTwaY/maxresdefault.jpg "Steer-by-Wire demo: Dual GM3506+AS5048A, External ADC Current Sensing, RPi Pico 2, and SimpleFOC.") ](https://www.youtube.com/watch?v=iHCYxwcTwaY)

---

<div class="post-metadata">

### Author: ![o\_lampe](https://community.simplefoc.com/letter_avatar_proxy/v4/letter/o/85e7bf/32.png) [@o\_lampe](https://community.simplefoc.com/u/o_lampe)
#### Post date: [May 29, 2026, 12:33pm UTC](https://community.simplefoc.com/t/review-request-low-cost-dual-motor-controller-based-on-pico-drv8316/8161/2 "2026-05-29T12:33:42Z")

</div>

I’m to lazy to check the DRV8316 datasheet, but I find it odd you put INLA-INLC to VCC?  
I’d expect GND…  
Also routing both **nFault** outputs to one pico pin is odd IMHO. I’d decouple them with a dual Schottky.  
I haven’t seen _nReset_ anywhere. Which might be nice to have, if you want to clear a fault

---

<div class="post-metadata">

### Author: ![thomasfla](https://community.simplefoc.com/user_avatar/community.simplefoc.com/thomasfla/32/9066_2.png) [@thomasfla](https://community.simplefoc.com/u/thomasfla)
#### Post date: [June 1, 2026, 7:41am UTC](https://community.simplefoc.com/t/review-request-low-cost-dual-motor-controller-based-on-pico-drv8316/8161/3 "2026-06-01T07:41:25Z")

</div>

Thanks,  
I double checked the 3PWM mode:

 ![image](https://community.simplefoc.com/uploads/default/original/2X/5/5c76b8fe60128e144df9e4c3afe2de6cef831017.png)  
Also nFault is open drain, so no problem here,  
 ![image](https://community.simplefoc.com/uploads/default/original/2X/5/590aa1a9c2a636586cb7b9b4e901935e09f984e2.png)  
I will however add an external pullup since first rp2350 chips can have an errata on pin pad, and also this will prevent test mode on startup.

I’ll not wire the nSPEEP (reset) because of low GPIO budget. I should be able to recover from a fault with SPI CLR\_FLT bit.

---

<div class="post-metadata">

### Author: ![thomasfla](https://community.simplefoc.com/user_avatar/community.simplefoc.com/thomasfla/32/9066_2.png) [@thomasfla](https://community.simplefoc.com/u/thomasfla)
#### Post date: [August 3, 2026, 12:13pm UTC](https://community.simplefoc.com/t/review-request-low-cost-dual-motor-controller-based-on-pico-drv8316/8161/5 "2026-08-03T12:13:17Z")

</div>

I had this board assembled in the end, However the current readings are no great.. I’ll need to investigate if this is comming from the DRVs or the ADCs. Here the motors are controlled in openloop velocity.

At least this first test validate the dual motors (GM3506), dual encoders (AS5048A) and 4 external ADC (BUG79100G) working together on a pico2.

 ![image](https://community.simplefoc.com/uploads/default/original/2X/1/16035fa024bcaea8b609212fcba4e39030965678.png)

---

<div class="post-metadata">

### Author: ![thomasfla](https://community.simplefoc.com/user_avatar/community.simplefoc.com/thomasfla/32/9066_2.png) [@thomasfla](https://community.simplefoc.com/u/thomasfla)
#### Post date: [October 2, 2026, 3:30pm UTC](https://community.simplefoc.com/t/review-request-low-cost-dual-motor-controller-based-on-pico-drv8316/8161/7 "2026-10-02T15:30:34Z")

</div>

> **[MOTKINBENCH 5bars plot demo](https://peertube.laas.fr/w/58hdhZa8a5KJ8QTfDTHRMf)**
>
> https://github.com/thomasfla/MOTKINBENCH

Working very well !

---

<div class="post-metadata">

### Author: ![Antun\_Skuric](https://community.simplefoc.com/user_avatar/community.simplefoc.com/antun_skuric/32/21_2.png) [@Antun\_Skuric](https://community.simplefoc.com/u/Antun_Skuric)
#### Post date: [October 3, 2026, 8:19am UTC](https://community.simplefoc.com/t/review-request-low-cost-dual-motor-controller-based-on-pico-drv8316/8161/8 "2026-10-03T08:19:09Z")

</div>

Very nice!

It reminds me a lot of @David_Gonzalez’s robot. One of the first robots ever created with SimpleFOC 🙂

I’m wondering, was the speed measurement of the as5048 too noisy? Did you have to do some additional filtering or was the LPF good enough?

---

<div class="post-metadata">

### Author: ![thomasfla](https://community.simplefoc.com/user_avatar/community.simplefoc.com/thomasfla/32/9066_2.png) [@thomasfla](https://community.simplefoc.com/u/thomasfla)
#### Post date: [October 8, 2026, 4:45pm UTC](https://community.simplefoc.com/t/review-request-low-cost-dual-motor-controller-based-on-pico-drv8316/8161/9 "2026-10-08T16:45:37Z")

</div>

Thanks for the ref, I love his demo! Yes this is the same kinematics.

The velocity is quite ok. It is done with finite diff set at 1khz + LPF set to about 80Hz.  
Since I’m reading positions at 20khz, I could try to update this 1ms appart finite diff more often (every 50us), but so far this wasn’t needed.

This plot is from the above video motion:

 ![image](https://community.simplefoc.com/uploads/default/original/2X/e/ebedde5a08f6efc8727c39288e26cdab26088be3.png)  
 ![image](https://community.simplefoc.com/uploads/default/original/2X/d/d984ff9d6ac0fd5bbca17f1866237f2ad2751d3f.png)

I included an even more filtered version of the velocity for high level controller using the velocity at lower frequency.

---

<div class="post-metadata">

### Author: ![Antun\_Skuric](https://community.simplefoc.com/user_avatar/community.simplefoc.com/antun_skuric/32/21_2.png) [@Antun\_Skuric](https://community.simplefoc.com/u/Antun_Skuric)
#### Post date: [October 9, 2026, 1:07pm UTC](https://community.simplefoc.com/t/review-request-low-cost-dual-motor-controller-based-on-pico-drv8316/8161/10 "2026-10-09T13:07:35Z")

</div>

@thomasfla That’s great to hear, I’ve had some issues with the velocity before. It looked much more similar to what you have here:

> [@thomasfla](#):
>
> At least this first test validate the dual motors (GM3506), dual encoders (AS5048A) and 4 external ADC (BUG79100G) working together on a pico2.
> 
> ![image](https://community.simplefoc.com/uploads/default/original/2X/1/16035fa024bcaea8b609212fcba4e39030965678.png)

Your results are amazing there. 🙂

> [@thomasfla](#):
>
> ![image](https://community.simplefoc.com/uploads/default/original/2X/d/d984ff9d6ac0fd5bbca17f1866237f2ad2751d3f.png)
> 
> I included an even more filtered version of the velocity for high level controller using the velocity at lower frequency.
