Nuevos drivers para los motores
Desde RepRapBCN siempre intentamos mejorar la máquina de manera continua y es por eso que hoy os traemos un nuevo cambio que creemos que mejorará la fiabilidad de vuestras impresoras.
Hemos decidido cambiar los drivers de los motores paso a paso por unos más potentes y robustos. Concretamente son los DRV8825 de Pololu.
Mejoras
Estos drivers basados en el chip DRV8825 de Ti muestran una serie de ventajas respecto a los que veníamos utilizando anteriormente.
- El potenciómetro de calibración es de más calidad y de una sola vuelta, lo que permite ajustes más precisos y menores roturas.
- Según especificaciones, este integrado puede suministrar hasta 2.2A con buena refrigeración, una mejora sustancial respecto a los anteriores drivers. Más que suficiente para nuestra aplicación.
- Este driver puede ofrecer una mayor resolución ya que permite un microstepping de 1/32. Para más información acudir a la sección de nivel avanzado.
- Mayor disipación de potencia. Primero por el tipo de encapsulado y segundo por el diseño del circuito impreso. No hace falta disipador.
- Mayor voltaje de alimentación para los motores, hasta 45V (35V antiguos). A primera vista parece no importar teniendo una fuente de 12V pero esta característica permite a los drivers ser más resistentes a posibles picos de tensión producidos por LC’s del sistema.
- Son lilas!
Creemos que son motivos suficientes para realizar un cambio y que se traducirá en menos errores y menos dolores de cabeza para todo el mundo.
Sustitución y Calibrado
Tanto si queremos sustituir algún driver defectuoso o hacer una actualización de todos los drivers, tendremos que seguir estos sencillos pasos.
Simplemente tenemos que retirar los drivers antiguos (blancos), extraer dos jumpers de la placa electrónica Ramps y colocar el nuevo driver (lila) en la orientación correcta.
Como vale más una imagen que mil palabras, a continuación podemos ver los jumpers que se han de retirar. La retirada de estos jumpers hace que los nuevos drivers sean compatibles con los anteriores, evitando tener que realizar ningún cambio adicional.
A continuación vamos a describir como regular de forma correcta los drivers para que suministren la potencia necesaria a los motores y todo funcione suave y sin sobrecalentamientos.
Los drivers se regulan mediante un pequeño potenciómetro que tienen en uno de sus extremos. Si giramos en sentido horario aumentamos la potencia, en sentido antihorario la disminuimos.
Por defecto, de fábrica vienen mal regulados y por tanto será una buena práctica dedicarle un tiempo a su correcta calibración. Si los cambiamos tal como vienen, corremos el riesgo de suministrar más corriente a los motores y nos podemos llegar a quemar.
En la imagen se puede apreciar que el potenciómetro tiene un pequeño chaflán en la cabeza (una cara plana). Nosotros hemos encontrado que orientando esta cara plana hacia arriba, conseguimos regular el driver bastante bien sin necesidad de un multímetro o tester.
Para los usuarios más “experimentados/teóricos” existe la posibilidad de calibrar los drivers con un tester. Para ello, aconsejamos leer antes este artículo en la RepRapWiki. Cabe decir que hay que ir con cuidado de no provocar ningún cortocircuito, existe el riesgo de dañar algún componente electrónico de la máquina.
Nivel Avanzado
Para los que quieran ir un paso más allá, proponemos exprimir la característica estrella de estos drivers, el microstepping.
El microstepping es simplemente una técnica para aumentar la resolución de un motor paso a paso haciendo que los pasos sean cada vez más pequeños. Esto se consigue excitando las bobinas de manera progresiva para que el movimiento sea lo más continuo posible (a pesar que los pasos son discretos). De esta manera si nuestros motores son de 1.8º/paso sin microstepping, con 1/32 de microstepping estos pasos pasan a ser de 0.056º/paso.
A continuación se puede ver una tabla comparativa entre el microstepping y la resolución de los ejes X e Y de la BCN3D+. Para el eje Z simplemente se tendría que tener en consideración el paso de la varilla roscada de 8mm.
Con un microstepping más pequeño conseguiremos más resolución y los movimientos serán más fluidos y continuos (aunque no seamos capaces de apreciarlo), pero no todos son ventajas ya que ahora el microcontrolador tendrá que suministrar el doble de pulsos que antes para moverse la misma distancia (recordad que cada paso ahora recorre menos distancia) y esto puede afectar a la velocidad máxima de la impresora. Es por este motivo que necesitamos reajustar los valores de pasos por milímetro de cada eje en el firmware.
Por lo que en este caso no hace falta retirar los jumpers. Los jumpers nos permiten seleccionar en que modo de microstepping trabaja nuestro driver. Simplemente son pines del chip que en función si están a nivel alto o bajo se selecciona un modo u otro. Con la siguiente tabla podemos verificar que si dejamos todos los jumpers estaríamos en el caso de HIGH/HIGH/HIGH que corresponde a un microstepping de 1/32.
Para configurar los parámetros de step/mm en el firmware tenemos tres opciones:
- Desde la pantalla: Si vamos a Menu>Control>Motion> Xsteps/mm, Ysteps/mm, Zsteps/mm, Esteps/mm. Debemos ajustar los valores de cada eje que hayamos cambiado el driver al doble del valor actual. A continuación, para que no se borren los valores cuando apaguemos la máquina, seleccionamos la opción Store memory dentro de Menú>Control. Los valores se pueden encontrar en el punto 2.
- Arduino IDE: Necesitamos abrir el firmware con el IDE de Arduino y acudir a la pestaña de Configuration.h y localizar la línea 353.
#define DEFAULT_AXIS_STEPS_PER_UNIT { 80.19, 80.43, 2560, 458.3 } Estos valores definen los pasos necesarios para recorrer una unidad de distancia. Nosotros simplemente tenemos que modificarlos multiplicándolos por 2. Por lo tanto quedarían de esta manera:
#define DEFAULT_AXIS_STEPS_PER_UNIT { 160.38, 916.6, 5120, 458.3 } - USB: Necesitamos un programa que abra una comunicación serie con la impresora mediante USB.
Una vez establecida la conexión mandamos los siguientes g-codes que nos permitirán cambiar los valores que buscamos.M501 //Leemos los valores almacenados en la EEPROM MM92 X160.38 Y160.86 Z5120 E916.6 //Modificamos los valores de Step/mm M500 //Guardamos los nuevos valores en la EEPROM M501 //Volvemos a comprobar los valores de la memoria y verificamos el cambio
Esperamos que este artículo sea de gran utilidad y tenemos ganas de escuchar vuestros comentarios al respecto. Cualquier sugerencia será bienvenida.