Ajuste conexión Mando-Potencia

Ajuste del protocolo usado en el bus SPI.

Comenzamos el ajuste de la zona de potencia.

Si observamos la placa en conjunto, monta 5 micro-controladores: El micro-controlador principal, de tipo ARM Cortex M3, está en la zona de mando, y hay otros 4 micro-controladores especializados en la zona de potencia, cada uno controlando un motor Paso a Paso.

El micro-controlador de tipo ARM Cortex M3 es quien coordina a todos, es decir, es el Máster, mientras que los demás son Slave de éste. Todos ellos están conectados a un bus SPI, que es el canal de comunicación entre el Master y los Slaves, formando una arquitectura Master-Slave tradicional.

Por eso, para poner en funcionamiento la zona de potencia de la placa, lo primero que hay que hacer es ajustar el bus SPI: Los chips de ST Microelectronics especializados en el control de los motores recibirán las órdenes del micro-controlador ARM Cortex M3, a través de él, por lo que si este bus no funciona, no podremos hacer ninguna prueba, por básica que pensemos que es.

El principal escollo a solucionar es que estos chips implementan una variante del protocolo SPI, para que el hardware tenga tiempo de procesar los comandos que le van llegando, y también para crear las respuestas y colocarlas en la pila FIFO, para que se envíen al micro principal.

En la imagen se muestra cómo especifica el fabricante del chip-drive que ha de ser la comunicación SPI.

Para realizar este ajuste, he optado por utilizar dos placas ya probadas, de forma que excluya mis posibles errores de diseño hardware. Así, me aseguro que cualquier problema de funcionamiento será debido exclusivamente al sofware que gestiona el bus SPI.






En la imagen se aprecia el equipamiento empleado:

Una placa STM32F4 Discovery, una placa con un chip de la misma familia que el que empleo en las etapas de potencia, el compilador en modo Debug, y un analizador de señal.

El analizador de señales se vuelve imprescindible cuando se trata de ajustar tiempos, flancos, etc.

Como vemos en la siguiente imagen, se emplea un protocolo SPI en modo 3, es decir, con el reloj (Clock) en estado alto cuando no está operando, y con lectura de datos en el segundo flanco del reloj, flanco ascendente.

Esto se suele indicar como:

Mode 3:

  • CPOL = 1 (reloj normalmente alto)
  • CPHA = 1 (dato leido en transición de bajo a alto)

También se observa en la señal "ENABLE" que pasa a "1" durante unos micro-segundos, después de cada byte leído. Esto es algo que solo hace ST, y es lo que permite al chip especializado en control de motores, disponer del tiempo suficiente para procesar el comando.

Tamaño del registro de datos DR del periférico SPI.

Otro punto a vigilar es que los registros de datos DR de chips modernos, son de 16 bits. Sin embargo, los chips-drive necesitan recibir paquetes de solo 8 bits. Esto se soluciona cargando el registro DR con un molde a 8 bits en ambos lados del símbolo "=":

// SPI byte send.

*(__IO uint8_t *)&hspi1.Instance->DR = (uint8_t)byte;

El símbolo __IO es propietario de ST Microelectronics, pero simplmente quiere decir "volatile", por lo que se puede sustituir por este, para que quede un código más estándar C.

Detalle de la comunicación SPI.

Detalle de la entrada del byte 0x1A (en binario 00011010) en el chip-drive que gobierna cada motor paso a paso. Vemos que la lectura de cada bit se hace en los flancos ascendentes del reloj. Durante todo este tiempo, la señal de selección de chip debe estar a low, para que esté seleccionado.

Vemos que entre el envío de dos bytes consecutivos, el chip-drive L6482 necesita un tiempo (como mínimo de 796 nano segundos) en el que no esté seleccionado, para procesar el byte recibido, y colocar el byte respuesta en el registro circular de salida.

Pruebas sobre placa prototipo.

Una vez que el bus SPI está ajustado, podemos pasar a la siguiente fase, que consiste en verificar su funcionamiento en la placa prototipo que hemos diseñado.









Vemos que el entorno de pruebas es siempre el mismo, a excepción de una pequeña fuente de alimentación de 24v, ya que la zona de potencia no puede ser alimentada desde la conexión USB al ordenador.

En la imagen se ve que he conectado cables al bus SPI de la placa, de forma que pueda analizar su comportamiento, en tiempo real. También he conectado un pequeño motor PaP. La idea es que el conjunto de pruebas se mantenga pequeño y manejable, para que se pueda transportar fácilemente.

Durante esta puesta en marcha, me he encontrado pequeños problemas, como una soldadura unida a otra, en el micro-controlador especializado.

También he aprovechado para leer una y otra vez las hojas de datos de los componentes, y gracias a ello, he podido encontrar una forma mejor de alimentar la zona de mando del estos chips. De esta forma, la placa necesitará ocho condensadores SMD menos, y además estos micros se calentarán menos.


Siguiente página ->

<-Página anterior