Objetivo:
El objetivo de este
proyecto es conseguir controlar el eje x del motor de un plotter. Se usara el
chasis de un plotter antiguo reemplazando los circuitos de dentro. El control
se realizara desde un ordenador conectado a un arduino.
Componentes:
Los componentes que necesitaremos aparte de la chasis del plotter son:
8 diodos 1n-4001
1 l293d (puente en h dual con diodos incorporados)
1 arduino
1 cable usb a arduino para controlar el puerto serie
Los circuito que necesitamos son los drivers para los motores paso a paso. Usaremos este circuito.
Los pines que tenemos a la izquierda son las entradas que vienen desde el arduino y dictaran el sentido de la corriente. Los que tenemos a la derecha son los que se conectan al motor. El de arriba y abajo son vcc y masa respectivamente.
El paso siguiente es cablear al motor. El que hemos usadoes un paso a paso de 8 hilos. Al no disponer de la ficha técnica tenemos que averiguar el cableado usando un polimetro y un osciloscopio. Para descubrir el parejamiento de los cables cogemos el polimetro y lo ponemos en modo continuidad. Cogemos un hilo conectandolo a uno de los terminales del polimetro. Empezamos a conectar uno por uno los otros hilos hasta que suena el polimetro señalando que ese es el otro hilo. Repetimos el proceso hasta que tengamos las 4 parejas. Luego para averiguar los fases, conectamos una pareja a una probeta de un osciloscopio. Conectamos otra pareja a otra probeta y giramos el motor. Apareceran dos señales por el osciloscopio; si están iguales son de la misma fase y tienen la misma polaridad de bobina, si son iguales pero uno invertido, son de la misma fase pero la polaridad de la segunda es al reves. Si aparece un desfase de 90 grados son de distintas fases.
La conexión de bobinas que usaremos es el bipolar serie para simplificar el cableado. Así conectamos los cables de una fase para que la corriente pasa por ellos en el mismo sentido de polaridad. Hacemos eso para ambos fases y cubrimos la soldadura con termoretráctil. Deberia quedar así más o menos:
#include<Stepper.h>
const int stepsperrevolution = 200;
Stepper xstepper(stepsperrevolution, 8, 9, 10, 11);
void setup() {
Serial.begin(9600);
Serial.println("Init");
}
void loop()
{
int pasos = 1;
if(Serial.available() > 0){
int i = Serial.parseInt();
Serial.println(i);
if( i > 0){
for(int stepCount = 0; stepCount < i; stepCount++)
{
xstepper.step(1);
Serial.print("Pasos = ");
Serial.println(pasos);
pasos++;
}
}
else if( i < 0){
for(int stepCount = 0; stepCount >i; stepCount--)
{
xstepper.step(-1);
Serial.print("Pasos = ");
Serial.println(pasos);
pasos++;
}
}
}
}
const int stepsperrevolution = 200;
Stepper xstepper(stepsperrevolution, 8, 9, 10, 11);
void setup() {
Serial.begin(9600);
Serial.println("Init");
}
void loop()
{
int pasos = 1;
if(Serial.available() > 0){
int i = Serial.parseInt();
Serial.println(i);
if( i > 0){
for(int stepCount = 0; stepCount < i; stepCount++)
{
xstepper.step(1);
Serial.print("Pasos = ");
Serial.println(pasos);
pasos++;
}
}
else if( i < 0){
for(int stepCount = 0; stepCount >i; stepCount--)
{
xstepper.step(-1);
Serial.print("Pasos = ");
Serial.println(pasos);
pasos++;
}
}
}
}
El codigo arranca el puerto serie y espera hasta que recibe un numero por ese canal. En cuanto lo recibe valora si es menor a mayor que 0 y basado en eso gira tantos pasos en un sentido o otro.
Cosas que se podrian añadir a este proyecto serian finales de carrera, que se calibre al principio, tocando cada final de carrera y volviendo a un sitio determinado, el control del eje y que tiene el plotter y el control del marcador y seleccion de color.