tecnico1987
Usuario

Estoy empezando un desarrollo con Arduino Mega 2560 y 2 motores paso a paso más un punzón electromagnético. Acá voy a explicar cómo conectar los módulos ya mencionados y cómo mover un motor paso a paso NEMA 17. Ahi los elementos... empecemos paso a paso. ArduinoMega2560 RAMPS 1.4 Ramps 1.4 es un módulo para Arduino mega 2560 y sirve idealmente para controlar una impresora 3d. Permite controlar ejes X, Y, Z y dos otros para el extrusor que es el mecanismo que va empujando el hilo plastico hacia el hotend (el calentador que va derritiendo el plastico y lo va depositando en la pieza a imprimir). También tiene 3 mosfets para controlar 3 salidas simples. En el ejemplo de ahora voy a conectar un solo driver (controlador) de motor paso a paso y un solo motor para simplemente moverlo con un pequeño código improvisado. Lo primero es quitar el diodo que se muestra aumentado en la imagen, sacando este diodo evitamos que se genere un corto entre la fuente de alimentación del RAMPS y el Arduino cuando lo conectamos al USB de la pc. Voy a usar una fuente externa para alimentar el RAMPS y voy a usar el mismo puerto usb para alimentar el arduino. Ahí el ramps dado vuelta y el diodo ya desoldado. Ya desoldé el diodo del RAMPS ahora con cuidado, haciendo coincidir bien todos los pines, montamos el RAMPS sobre el ArduinoMega Acá se puede ver que un pin del conector de alimentación verde (ramps) toca con el conector de alimentación del arduino impidiendo que quede plano completamente Lo corto con un alicate oblicuo... Listo. Hasta aquí tenemos Ramps + Arduino 2560 Abro el blister del driver Pololu A4988 Encuentro un disipador de calor y el pololu Dejo el link de la hoja de datos del integrado http://pdf1.alldatasheet.com/datasheet-pdf/view/338780/ALLEGRO/A4988.html El pololu trae un preset que sirve para ajustar la corriente que va al bobinado del motor, por defecto viene a la mitad (es lo mismo que un potenciómetro de volumen de los que tienen tope levógiro o dextrógiro (muejje, antihorario-horario sería..)) Con un destornillador plano (o mejor aún, unos para preset) lo llevamos al mínimo de corriente. Ojo que no tiene límite y es preferible que no se pase. Lo dejamos en esa posición aprox. Ahí tenemos el Pololu ya instalado en el eje X. Ver bien la serigrafía del RAMPS para saber dónde van ubicados los Pololu. No expliqué cómo pegar el disipador de calor porque es como pegar un calco... se le saca el papel y se pega sobre el integrado. Tener cuidado de no cortocircuitar con el disipador ninguno de los pines aledaños. También conecté el motor en donde están las salidas del eje X. El arduino se alimenta con el puerto USB de la pc, y el RAMPS con una fuente externa de 12v. Ahí se ve dónde va + y - respectivamente. Ahí la fuente ya conectada (la reciclé de una pc y le puse salidas para ficha banana, la pinté de rojo porque soy socialista) Ahí la fuente de frente, tiene un led azul porque soy cobani Bien, hasta ahí la parte del hardware. Ahora estudiando el esquema del RAMPS vemos qué pines del Arduino controlan el eje X, que es donde conectamos el pololu y el motor. Los pines para controlar un motor son 3, paso (step) con cada pulso mueve un paso el motor. Dirección, estando en 1 gira hacia un lado y en 0 gira hacia el otro. La placa no especifíca esto porque depende de cómo se conecten los dos bobinados del motor el resultado. Si se invierten los bobinados la lógica funcionará a la inversa. Eso lo tiene que revisar cada uno en su trabajo para saber el resultado final, si el motor gira al revés de lo esperado según la lógica, simplemente se invierte el conector. El tercer conector es el Enable o habilitar que es lo que habilita el integrado. El enable es negado, esto significa que tiene que estar en cero para que el integrado se active. Si está en 1 el integrado a la salida presentará alta impedancia teniendo ningún efecto en el bobinado del motor. Ahora el código que hice para las pruebas, en los comentarios se puede ver a qué corresponde cada número de pin. No usé etiquetas, puse directamente el numero de pin con el que se llama dentro del IDE de arduino a los pines. void setup() { pinMode(38, OUTPUT); // pin ENABLE del pololu eje X pinMode(54, OUTPUT); // pin STEP del pololu eje X pinMode(55, OUTPUT); // pin DIR del pololu eje X digitalWrite(38, LOW); //el enable funciona invertido, con cero se activa el driver } int T = 1; int Cyclo = 1; void loop() { if (Cyclo <= 6) { for (T=1; T<30; T++) { digitalWrite(54, HIGH); delay(T); digitalWrite(54, LOW); delay(T); } for (T=30; T>2; T--) { digitalWrite(54, HIGH); delay(T); digitalWrite(54, LOW); delay(T); Cyclo++; } } else { for (T=1; T<20; T++) { digitalWrite(54, HIGH); delay(T); digitalWrite(54, LOW); delay(T); } for (T=20; T>2; T--) { digitalWrite(54, HIGH); delay(T); digitalWrite(54, LOW); delay(T); } Cyclo=1; } if( digitalRead(55) == HIGH) {digitalWrite(55, LOW); } else {digitalWrite(55, HIGH); } } Finalmente un video, con el motor vertical no hacía ruido practicamente pero quería que el motor sea más expresivo. Eso es todo, saludos. link: https://www.youtube.com/watch?v=fD2ziKJuc_I