Consideraciones de diseño de PCB para ejecutar 48 motores paso a paso

1

Por un tiempo, ahora estoy trabajando en un proyecto donde quiero controlar 48 motores paso a paso.

Un par de dos motores está controlado por un Atmega8. Todos los módulos están conectados como esclavos en un bus I2C / TWI con un Arduino que actúa como dispositivo maestro.

Hace un tiempo ya publiqué una pregunta sobre problemas con la fuente de alimentación y obtuve muchos comentarios útiles con respecto a los bucles a tierra, los condensadores y Diseño de PCB. El principal problema es que los Atmega8s ya no funcionan correctamente cuando ejecuto más de 5 módulos de control de motores simultáneamente.

He intentado implementar la mayoría de las sugerencias, pero aún tengo algunas preguntas para posibles mejoras:

  • ¿Están colocados correctamente los condensadores grandes en la entrada VCC, así como junto a los motores?
  • ¿El diseño del "plano de poder" está diseñado correctamente?
  • ¿Es bueno el desacoplamiento de la base analógica?

Un módulo con ambos motores paso a paso ocupa aproximadamente 0,5 A al mismo tiempo. Mi fuente de alimentación debería poder ejecutar todos los módulos al mismo tiempo. Estoy ejecutando una topografía en estrella con cables gruesos entre todos los módulos.

Bien, así es como se ve todo esto (I2C-bus / resistencias no se muestran para que sea sencillo):

Elcircuitoparacadaunodelosmódulos(0X10,etc.)seveasí.Algunasnotassobrelasdiferentessecciones:

  • Losdos motores en la parte inferior derecha están conectados a los puertos PB y PD a través de arlington arrays
  • Conectados a PC1 / PC2 en la parte superior derecha hay dos sensores ópticos para llevar a cabo la motores paso a paso
  • PRG en la parte inferior es el puerto de programación para el Atmega8

duostepper_RevC_schematic

El diseño de PCB (40 x 60 mm) que planeo ordenar se ve así. Esto no está implementado, todavía! duostepper_RevC_topbottom

duostepper_RevC_top

duostepper_RevC_bottom

ACTUALIZACIÓN 2017-04-15:

Actualicé la sección de entrada de alimentación del esquema con un capacitor más robusto, capacitadores adicionales de 100 nF y un cordón de ferrita. También cambié los condensadores del motor a 220µF.

Eneldiseño,loimplementéasí:

    
pregunta dhst

3 respuestas

2

Los "cables gruesos" tienen menos inductancia que los cables delgados. La proporción de 100: 1 es de 1500 nH / m, mientras que la relación de 50: 1 es de 1000 nh / m

  • El cable Litz tiene una L mucho menor y viene en muchas hebras y AWG de cable de esmalte.

Con todas estas subidas de tensión paso a paso y medios puentes de banda muerta, será una pesadilla de ruido CM para cualquier acoplamiento de alta impedancia L o C a cables o pistas de entrada dispersa.

Recomendaciones

  • CM se ahoga en cada par para aumentar la impedancia CM con tapas de derivación opcionales o perlas de ferrita para la supresión del modo DM. SMD CM Choke 200mA < 1ohm
  • Cables de par trenzado, apantallados, si se incluyen.
  • sentido de falla en conexiones abiertas
  • Datum (también conocido como Home / End Stop) opto realimentación del sensor del inversor Schmitt en el mismo par de giro del estrangulador CM para la inmunidad. dependiendo de la longitud del cable y los ruidos del arco cercanos.
  • bajo límite de ESR para desviar los picos actuales de RdsOn / Coss
  • 0.5 ~ 1.5us Tiempo muerto según las relaciones L / R de las cargas, etc.
  • modele el diseño de su circuito para el control de EMI incluyendo DCR, R distribuido en R en cables y tapa ESR vs C
  • use la frecuencia de pulso acelerada para la factorización del control de giro El par motor y las cargas de inercia para obtener la velocidad máxima y evitar saltos o caídas a toda costa.
  • incluir sensores de corriente de agarre en caso de una imposición inesperada
  • las ranuras son generalmente antenas EMI eficientes y malas si los tiempos de subida < < 50 nd cerca

(Descargo de responsabilidad) Esto no es de ninguna manera una lista completa de recomendaciones de DFM

    
respondido por el Tony EE rocketscientist
2

Creo que la frase más importante en tu pregunta es-

  

"El problema principal es que los Atmega8s ya no funcionan correctamente cuando ejecuto más de 5 módulos de control de motores simultáneamente".

Los motores crean una tonelada de ruido en todas las diferentes frecuencias. Esto sucede porque, a medida que se conmutan los devanados del motor, se crean pulsos delta que son extremadamente cortos (t - > 0) y alto voltaje (v - > ∞). Su espectro de ruido es teóricamente infinito. (Sí, sé que para ser verdaderamente infinito, solo puedes tener un pulso)

Debido a que los motores generan una cantidad significativa de ruido en frecuencias muy altas, todo lo que es inocuo en su PCB comienza a tener un efecto apreciable en su circuito. La capacitancia entre trazas permite que se produzcan interferencias, y la inductancia hace que las corrientes tomen caminos inesperados de regreso a tierra. Por lo que valga, supongo que su problema se debe a que el ruido conducido regresa a la fuente de alimentación y no al ruido acoplado. En otras palabras, el ruido del motor está volviendo a la fuente de alimentación, envenenando a los microcontroladores.

Solo algunas preguntas aleatorias:

  • ¿Los microcontroladores simplemente dejan de funcionar en alguna parte aleatoria del código, o en el mismo lugar cada vez?

  • ¿Podría ser un problema con los sensores ópticos que hacen que el código funcione inesperadamente?

  • ¿Siempre aparece el problema en un número exacto de motores? ¿Puedes hacer que 6 funcionen si ejecutas la selección correcta de motores? ¿Importa la velocidad del motor?

  • ¿Es posible proporcionar alimentación digital y analógica separada a cada módulo?

Supongo que solo tienes un par de problemas con tu tablero. Pero al igual que la caza de huevos de Pascua, puede encontrar el problema de inmediato, o puede tomar un tiempo y requerir mucho aprendizaje.

Puede ser más de lo que esperaba, pero Compatibilidad Electromática por Henry Ott, especialmente el capítulo 3 en tierra. , es un gran recurso para entender su problema. El terreno difícilmente es alguna vez a 0 voltios, lo que es extremadamente confuso al principio. Pero el Sr. Ott hace un gran trabajo para hacerlo mucho más comprensible.

Espero que esto ayude.

    
respondido por el Lance Beasley
1

Sugeriría que los problemas que tenga no tengan nada que ver con la resistencia del cable, la impedancia o la inductancia. Tiene una gran cantidad de capacitancia distribuida en todo el sistema.

En mi opinión, el problema más probable es la interfaz I2C.
No se muestran detonaciones en el extremo lejano de sus autobuses conectados en estrella, y asumo que los está manejando todos simultáneamente desde un maestro.
Además, cualquier caída de voltaje que se produzca en los cables a tierra de alta corriente se inyecta en la señal I2C para cada placa.

Este documento NXP puede ayudarlo (observe especialmente la naturaleza de tres cables con cableado de par trenzado).

Para probar su sistema, le sugiero que inicialmente escriba un código de prueba para sus ATMegas8 que no utilice el bus I2C. Simplemente haga una búsqueda continua de un extremo a otro de su viaje de motor paso a paso. Predigo que funcionará.
Puede usar un osciloscopio en los cables de la fuente de alimentación y poner en la cama cualquier idea de transitorios ... y medir su voltaje de CC en el extremo más alejado de cada línea de estrella para asegurarse de que no tenga una caída demasiado grande.

Desde allí ... arregla tu I2C. Asegúrese de que puede dirigir / controlar los tableros al final de las líneas en estrella y ver las señales de I2C para comprobar su integridad.
También noté que está usando el reloj RC interno para los ATMega ... ¿los ha calibrado?

También puede considerar el uso de un multiplexor I2C como PCA9547 para reducir la cantidad de dispositivos en Tu maestro I2C en cualquier momento.

Seguir adelante .... cuando busca consejos con varias preguntas no vinculadas entre sí, es difícil ofrecer consejos. Las tablas en las que se está ejecutando son de esta question , y claramente no tiene la inundación correcta para las líneas de suministro de energía, tiene condensadores de derivación inadecuados y conectores cuestionables para el flujo de corriente. También menciona en la pregunta el uso de un tablero para suministrar energía, esto no se puede hacer. Breadboards no están destinados a pasar grandes corrientes.

También señaló la fuente de alimentación que está utilizando en los comentarios (una adición importante )

Por cierto, con los tableros que está ejecutando actualmente, sugiero lo siguiente (el nuevo diseño de esta pregunta parece mucho mejor).

  1. Su cableado de alimentación debe ejecutarse directamente desde la fuente de alimentación a las tarjetas. El cable de 16 AWG parece bastante adecuado, pero poner dos cables de 16 AWG en su conector en una placa puede ser un desafío.
    Lo que hago para todo el cableado de mi fuente de alimentación (CA y CC) en los proyectos es usar conectores de inserción como this , están disponibles en formato de conexión 2-8 y son ideales para su cable de 16 AWG ; y puedes obtener calificaciones de 20 A o 30 A. Estos le permiten usar solo un solo cable en el conector de alimentación de la placa y, si tira de ellos, alise los cables para que se vean bien.

  2. Necesitas mucha más capacidad en tus tableros ... para los que tienes, es un poco tarde para hacer mucho, pero puedes obtener mejores resultados de ellos. Le sugiero que necesite alrededor de 1000 uf por placa, e incluso podría colocarlos en los conectores en el elemento 1).

  3. Un poco de un 'Ave María'. Eleve su fuente de alimentación a 5.4 VDC, esto podría ayudar a garantizar que las caídas de voltaje en las tarjetas no sean suficientes para afectar la operación de ATMegas.

  4. Como se sugirió antes, configure su BODLEVEL = 1 para obtener el nivel de detección de caída de tensión más bajo.

El nuevo diseño del tablero se ve mucho mejor.

    
respondido por el Jack Creasey

Lea otras preguntas en las etiquetas