Sunday, 28 July 2019

power - PCB design considerations for running 48 stepper motors


For a while now I'm working on a project where I want to control 48 stepper motors.


A pair of two motors is controlled by an Atmega8. All modules are connected as slaves on an I2C/TWI-bus with an Arduino acting as the master device.


A while ago I already posted a question about power supply issues and got many useful comments regarding ground loops, capacitors and PCB design. The main issue that the Atmega8s are not working properly anymore when I run more than 5 of the motor-control-modules simultaneously.


I've tried to implement most of the suggestions, but still have some questions for possible improvements:



  • Are the large capacitors at the VCC-input as well as next to the motors placed properly?

  • Is the layout of the "power-plane" designed properly?


  • Is the decoupling of the analogue ground any good?


One module with both steppers running takes up roughly 0.5A at the same time. My power supply should be capably of running all modules at the same time. I'm running a star-topography with thick wires between all modules.


Okay, so here is what the whole thing looks like (I2C-bus/resistors not displayed to keep it simple): system overview


The circuit for each of the modules (0X10 etc.) is looking like this. Some notes about the different sections:



  • The two motors on the bottom right are connected to the ports PB and PD via darlington arrays

  • Connected to PC1/PC2 on the top right are two optical sensors for homing the stepper motors

  • PRG on the bottom is the programming port for the Atmega8



duostepper_RevC_schematic


The PCB design (40 x 60 mm) I plan to order looks like this. This is not implemented, yet! duostepper_RevC_topbottom


duostepper_RevC_top


duostepper_RevC_bottom


UPDATE 2017-04-15:


I updated the power input section of the schematic with a beefier capacitor, additional 100nF-capacitors and a ferrite bead. I changed the motor-capacitors to 220µF as well.


RevD_new_power_input


In the layout, I implemented it like this: duostepper_RevD_all duostepper_RevD_top duostepper_RevD_bottom




No comments:

Post a Comment

arduino - Can I use TI's cc2541 BLE as micro controller to perform operations/ processing instead of ATmega328P AU to save cost?

I am using arduino pro mini (which contains Atmega328p AU ) along with cc2541(HM-10) to process and transfer data over BLE to smartphone. I...