Electrónica CNC/impresora 3D (driver, shields y placa)

Aunque normalmente se usan los propios transistores del puente H para descargar las bobinas, en otros chips este se deshabilita completamente cuando se usa la señal de enable, y me imagino que en este caso pasará lo mismo. En ese escenario, son los diodos parasitos de los transistores MOSFET los que descargan la bobina.

Supongo que eso está más que estudiado por TI, y si no indica nada al respeco en el manual, es que no habrá problemas.

ADLC:
Aunque normalmente se usan los propios transistores del puente H para descargar las bobinas, en otros chips este se deshabilita completamente cuando se usa la señal de enable, y me imagino que en este caso pasará lo mismo. En ese escenario, son los diodos parasitos de los transistores MOSFET los que descargan la bobina.

Supongo que eso está más que estudiado por TI, y si no indica nada al respeco en el manual, es que no habrá problemas.

Se activan los 3 drivers siempre y aun despues de haber realizado la operacion, estan un poquito mas de tiempo funcionando, asi que supongo que estara controlado ese caso que comentas.

Saludos

@fm, tienen un "pintón" de escándalo, más pequeñines,estoy pensando en una micro-cnc controlada por motores bipolares de lectores CD, con la CNC actual se podría fabricar el chasis con metacrilato, de forma que también quedase integrado en el chasis la electrónica y transparente para que se viese toda la electrónica .
Por cierto veo que el integrado es otro, has pasado del DRV8811 al DRV8818, más adecuado??' y dos led´s menos.O donde está L2???
En blanco quedan muy contrastados los componentes y me gusta como queda, ya me viene salibera.
Muy buenas fotografías,si señor.

ADLC:
Aunque normalmente se usan los propios transistores del puente H para descargar las bobinas, en otros chips este se deshabilita completamente cuando se usa la señal de enable, y me imagino que en este caso pasará lo mismo. En ese escenario, son los diodos parasitos de los transistores MOSFET los que descargan la bobina.

Supongo que eso está más que estudiado por TI, y si no indica nada al respeco en el manual, es que no habrá problemas.

Digamos que este driver es un poco más sofisticado que los antiguos drivers que había. Tienen varios modos operativos a la hora de hacer que recircule la corriente y cómo se sincroniza todo. Cuando la corriente alcanza el umbral pre-configurado, cuando cambia de fase, o cuando deja de controlar las bobinas, entran en funcionamiento la forma que tiene el ASIC de controlar cómo la corriente almacenada en la bobina en forma de campo magnético sale (degradación de la corriente). Los modos nominales de recirculación de la corriente son:

  • FAST decay: lo que se hace es invertir la polaridad del puente H para que la corriente circule en sentido opuesto o, la corriente recircula a través de los diodos del transistor o los schottky externos (los del internos solo son operativos para corrientes pequeñas y muy, muy corta duración). Os lo garantizo por experiencia ;-). Como se controla esto, con el modo síncrono o asíncrono (seguir leyendo).
  • SLOW decay: lo que se hace es activar los transistores opuestos del puente H para que la corriente recircule por la bobina a través de los dos transistores.

Por otro lado soporta un modo mixto, que es imprescindible para hacer micro-stepping (el modo mixto). Donde hay veces que que usa fast mode y veces que usa slow mode. No voy a entrar en cuando se usa cada modo para no aburrir.

Modos de sincronismo: Si el modo síncrono está activado, en FAST mode, se activan los transistores opuestos del puente H y cuando la corriente se aproxima a 0, se deshabilita el puente H. En cambio si está desactivado, la corriente fluye por los diodos externos o los del sustrato de los transistores. Usar diodos externos, mejora sustancialmente la disipación de calor, es decir, no se utilizan los transistores.

Para hacer micro-stepping se usan los dos modos.

La placa pequeña está optimizada para usar el menor número de componentes, sacrificando rendimiento térmico y utiliza el modo síncrono de operación del driver. Mientras que la placa grande, utilza el modo asíncrono para que la corriente recircules por los diodos schottky externos.

Este es el comportamiento que tienen los drivers modernos.

Estoy usando tanto DRV8811 para el que tiene diodos y DRV8818 para el pequeño. Al final utilizaré el DRV8818 porque los transistores tienen una resistencia de saturación mucho menor, por lo tanto mejoraré el rendimiento global del todo. Los diodo he quitado los verdes, porque no aportaban gran cosa. Ahora cuando se activan, se pone todo en rojo y cuando se desactivan se apagan.

Que permanezcan o no activados los drivers es algo que se controla por software. En la aplicación de la CNC, si no tiene que ejecutar ningún comando pasados 1 segundo todos los drivers se desactivan.

Hola a todos,

aquí os dejo el SW de control de la CNC, en concreto el SW que controla el stepper driver y el shield (ELFDRV1, ELFDRV2 y ELFSHL1). Es una variación de Txapuzas CNC con opciones para controlar un LCD y control activo de temperatura. Tiene un fichero: "configMe.h" para configurar todos los parámetros de la máquina. En principio se puede adaptar a cualquier controladora y drivers tipo STEP y DIR (como los ELFDRV1 y 2 o los de pololu).

Actualmente es completamente operativo pero estoy optimizándolo, comentando el código, ... Esta versión aunque es completamente operativa, es una versión beta. A lo largo del mes iré sacando actualizaciones hasta llegar a la versión V1.0.0. La versión publicada es: V0.0.1.

He usado Txapuzas CNC Rx como fuente de inspiración. Mientras "refactorizaba" el código he encontrado unas cuantas pulgas de la fuente original que he quitado.

Os la podéis descargar de aquí: https://bitbucket.org/fmalpartida/cnc-controller/downloads

Espero que os guste.

Gracias por la informacion.

Buenos dias y saludos a todos
Estoy empezando en esto de las cnc y me parece que el conjunto de electronica desarrollado por fm es impresionante
me gustaria saber mas o menos cuando tienes previsto poder suministar el producto,estaria interesado en adquirirlo
y saber mas o menos su coste

He intentado probar el ultimo soft que posteaste pero no me compila creo que falta una libreria

In file included from CNC.cpp:34:
tempCntrl.h:44: error: 'lm75' does not name a type

Y por ultimo ya se que las placas de los driver por separado son mas versatiles pero porque no pensastes en hacer una placa escudo con los tres controladores juntos todo en uno.

Un saludo enhorabuena por tu trabajo.

Bajaste la libreria del sensor de temperatura? Y la del lcd?

Sobre hacerlo modular, es mucho mejor asi, porque si por algun motivo fallara algo, solo tienes que cambiar esa parte que esta mal. En caso contrario, hay que cambiarlo todo.

No deberia de tardar mucho Fm en tener material disponible.

Saludos

@Robertob - pues muchas, muchas gracias por tus amables comentarios.

Este fin de semana empiezo a distribuir drivers a todos los que lo han reservado. En principio van a salir los ELFDRV1 y una semana después los ELFDRV2. Con todas las reservas que la gente ha hecho me he quedado sin material! A lo largo de este mes iré completando el stock para poder poner material en mi web.

El soft que he publicado tiene activado por defecto el uso del MMI así como el uso del control automático de temperatura. En el fichero de configuración "confirMe.h", puedes comentar la línea donde se define si se usa el MMI o no:

  • #define MMI_ENABLED // comenta esta linea
  • #define TEMP_CONTROL_ENABLED // comenta esta línea también

También puedes descargarte la "New LiquidCrystal library" como sugiero en mi web y la librería "thermistor" también disponible en mi web.

En principio, lo que comenta grafisoft es el principal motivo por el que me decanté hacer una solución modular. Imagina que te compras el escudo con los drivers integrados, pasado un tiempo por el motivo que sea uno de los drivers deja de funcionar (por ejemplo desenchufaste un motor mientras el driver estaba trabajando). En este caso, tendrías que tirar la placa entera.

En cuestión de precio también mejora la cosa sustancialmente. Aunque es cierto que con esta solución estamos hablando de 4 PCBs, la solución con uno solo tiene el problema que es mucho más caro de fabricar ya que cualquier error en el proceso la convierte en algo inservible. Al tener más componentes hay una probabilidad mayor de fracaso.

Además, todas las placas que tengo en mi web, las monto de forma casi artesanal. Vamos que las monto yo y las pruebo todas antes enviar una a una. Con esto además consigo que casi todas las placas salgan bien por lo tanto la carencia de placas erróneas repercute muy favorablemente en el precio final de cada unidad.

Tampoco hago tiradas muy grandes, con lo cual no puedo competir con los grandes pero creo que los precios que tengo y la relación calidad precio es mucho mejor que cualquier tienda on-line de distribución de material para hobby. Prueba de ello es que actualmente he enviado placas de todo tipo por todo el mundo. El único continente que me queda por marcar es África y el país que más me ha pedido material es Alemania.

Hola a todos
Gracias por contestar

He comprobado el soft y efectivamente no he "leido" lo que esta escrito en varias lineas sobre la utilizacio de la libreria ya esta solucionado, el LCD no me daba fallo porque ya estaba utilizando tu libreria.

Hola a todos, hoy he subido la nueva versión V 1.0.0 del SW de control de la CNC. En principio es completamente operativa y añade unos cuantos comandos adicionales al parser. También es compatible con promterface, replicatorG y TxapuzasCNC.

Es compatible tanto con todas las máquinas que utilizan los drivers de pololu así como con el ELFDRV1 o ELFDRV2 y ELFSHL1 (el shield de la CNC).

Al final ha quedado relativamente manejable el código y es una refactorización radical del software de TxapuzasRx. Con estos cambios el código es mucho más escalable y fácil de mantener.

En el archivo "configMe.h" podéis cambiar todos los parámetros de la máquina (pines de control, feedrate, pasos, ...) al igual que activar el MMI y el control de temperatura.

Espero que lo disfrutéis.

Aquí tenéis el enlace: https://bitbucket.org/fmalpartida/cnc-controller/downloads

En el otro hilo comenté que había publicado la versión 1.0.1 del controlador de la CNC. Esta versión corrige una pulga que introduje a la hora de optimizar un poco el código :(.
Ya está resuelta y completamente operativa. La podéis encontrar donde siempre:
https://bitbucket.org/fmalpartida/cnc-controller/downloads

Que la disfrutéis y avisadme si veis algo raro.

Hola a todos.

Me he bajado la versión 1.0.2 del SW para cambiar el paso de rosca ya que los he estado probando y cuando le digo que avance 10 mm , avanza solo unos 7.

Supongo que simplemente hay que cambiar en el configMe.h M10 por M8 en:

#define X_STEPS_PER_MM ( M10 * SCALE_STEPS * MICRO_STEP )
#define X_STEPS_PER_INCH (X_STEPS_PER_MM * MM_PER_INCH)

#define Y_STEPS_PER_MM ( M10 * SCALE_STEPS * MICRO_STEP )
#define Y_STEPS_PER_INCH (Y_STEPS_PER_MM * MM_PER_INCH)

#define Z_STEPS_PER_MM ( M10 * SCALE_STEPS * MICRO_STEP )
#define Z_STEPS_PER_INCH (Z_STEPS_PER_MM * MM_PER_INCH)

Y ya que estoy preguntón, no me queda claro que es lo del MMI.

Y por último para colaborar un poco, aunque sea una chorrada en el configMe.h de la versión 1.0.2 pone:

#define FRMW_VERSION "1.0.1"

Los ELFDRV1 van como la seda, ya había conseguido mover los motores con otros drivers hechos por mi, pero no hay color.

Un trabajo (en dos palabras ) "im presionante".

Gracias.

Estaran maracdas como comentario las lineas correspondientes a M8, desmarcalas, y marca como comentarios las de M10.

@vic20 - el MMI es simplemente el (Man Machine Interface), en el caso de esta aplicación es una forma de visualizar en un LCD lo que está haciendo la máquina. El escudo se puede conectar un LCD I2C directamente y lo que se ve en pantalla (en la versión actual) es: temperatura, velocidad del ventilador, posición tras el último movimiento. Esto irá evolucionando con el tiempo. Por defecto tengo des habilitado tanto el control térmico como el MMI.

En las macros que has publicado, simplemente cambia M10 por M8, en la siguiente versión voy a poner una macro genérica para que simplemente haya que cambiar una línea de código para configurar el paso de la varilla roscada y poner un indicador para que se vean las constantes que se pueden y no tocar. La constante será algo como ROD_CONF o similar, que tome los valores M8, M10.

La versión se me ha pasado ;-), muchas gracias por la indicación, tengo que pulir el procedimiento de publicación de esta aplicacion.

Me alegro que te guste el ELFDRV1! La verdad es que va muy, pero que muy bien. El ELFDRV2 va de cine también.

Lo prometido es deuda... :stuck_out_tongue:

Ya he subido algunas modificaciones para simplificar la configuración de la máquina CNC:
Configurar la varilla roscada de la máquina:
M10_200 -> Varilla M10 con stepper 200 pasos por revolución.
M8_200 -> Varilla M8 con stepper 200 pasos por revolución.
Cada eje se puede configurar por separado por si alguna máquina utiliza una varilla diferente por cada eje.

#define ROD_CONF_X    (M10_200)
#define ROD_CONF_Y    (M10_200)
#define ROD_CONF_Z    (M10_200)

Configuración microstepping de los drivers de control

#define MICRO_STEP       (8)

En el código he puesto los comandos que se puede configurar con un comentario:

(CONFIG ME): configuración para los parámetros y configuración de mi máquina

(ENABLE ME): para activar o desactivar cierta funcionalidad de la aplicación de control (control LCD y temperatura).

La versión está disponible en https://bitbucket.org/fmalpartida/cnc-controller/downloads - Versión V 1.0.3

Un acierto esta pequeña actualizacion de codigo para hacerlo mas facil. Muy buen trabajo Fm.

Saludos

Buenas.

He estado probando la versión 1.0.3 y me ocurre lo siguiente.

Cuando cambio M8_200 por M10_200 en:

#define ROD_CONF_X (M10_200)
#define ROD_CONF_Y (M10_200)
#define ROD_CONF_Z (M10_200)

Compila bien, pero cuando conecto el vinciduino a la cnc al dar una orden para que mueva cualquier motor este se mueve muy despacio y pierde la comunicación con TxapuCNC_TX03, quedando girando el motor muy despacio e indefinidamente y creo que también aumenta el consumo con respecto a cuando tiene cargado los valores M10_200.

Al volver poner los valores a M10_200 los motores van como la seda, pero claro está el error por el tamaño de la varilla.

Muchas gracias.

Haz una pequeña prueba: pon 166.0 a ver que sucede. Me da la impresión que no le está gustando el número entero.

Le he puesto 160.0 y parece que funcionan bien.

Pero también estoy adaptando una pequeña fresadora manual como CNC y tiene una vuelta por mm, en este caso al poner 200 aparece el mismo problema y al poner de nuevo 200.0 va perfecta.

Muchas gracias, sigo trasteando.