Ejercicio 25: Limpiaparabrisas
Un motor paso a paso hace avanzar y retroceder un mecanismo entre dos finales de carrera.
| Novedades hardware | Novedades software |
| Motor paso a paso | |
Requisitos:
- 2 finales de carrera, 2 resistencias de 1Kohmio .
- Un motor unipolar paso a paso.
Planteamiento:
Presentación de: Control de un motor unipolar paso a paso.
Lo primero es identificar las conexiones del motor: con un polímetro se registrará continuidad entre los extremos de cada bobinado. Luego hay que encontrar el orden correcto, para ello, conviene identificar cada terminal con un color. Unas cuantas permutaciones probando cada vez y ya está.
Una vez conocida la secuencia de pulsos que hace girar al motor, todo es muy sencillo.
Hay varias posibles secuencias, la que hemos elegido usa los dos bobinados y produce un torque mayor que la que usa uno solo.
Empaquetamos las secuencias en dos procedimientos, dejando la anchura del pulso como una variable que nos permite regular la velocidad, de forma que a menor valor, mayor velocidad.
Conviene probar diversos valores hasta encontrar la velocidad adecuada.
Si el motor ha de trabajar con una carga considerable, la intensidad que proporcionan las salidas digitales no será suficiente y tendremos que usar un driver. Distintos drivers para motores se estudian en detalle en el Apéndice 3?.
Para identificar el momento de la inversión de giro asociamos un cambio en la variable c a que haya tocado uno u otro de los finales de carrera. De esta forma c es 1 cuando ha tocado el segundo final de carrera y 0 cuando ha tocado el primero. En el primer caso avanza hasta tocar el segundo fin de carrera y en el primero retrocede hasta tocar el primero.
Variantes:
- Cambia la variable que regula la velocidad para que cuando aumente su valor aumente la velocidad y viceversa.
VIDEO DEL EJERCICIO 25
CODIGO FUENTE
Copyright (C) 2006 Juan Carlos Alonso de Mena
This program is free software; you can redistribute it and/or modify it under the terms
of the GNU General Public License as published by the Free Software Foundation;
See the GNU General Public License for more details?
int vel=10; //variable que guarda la duración de los pulsos y controla la velocidad de giro del motor
int unoa=3; //variables que guardan los números de los PINes a los que se conectan
int unob=4; //los extremos de los dos bobinados del motor unipolar
int dosa=5; //variable que guarda el sentido del giro
int dosb=6;
int c=0;
int findecarrera1=8;
int findecarrera2=9;
void setup() {
pinMode(unoa,OUTPUT);
pinMode(unob,OUTPUT);
pinMode(dosa,OUTPUT);
pinMode(dosb,OUTPUT);
pinMode(findecarrera1, INPUT);
pinMode(findecarrera2, INPUT);
}
void avanza(){ //procedimiento que envía la secuencia de pulsos para que el motor
digitalWrite(unoa,HIGH); //gire en un sentido
digitalWrite(unob,LOW);
digitalWrite(dosa,HIGH);
digitalWrite(dosb,LOW);
delay(vel);
digitalWrite(unoa,LOW);
digitalWrite(unob,HIGH);
delay(vel);
digitalWrite(dosa,LOW);
digitalWrite(dosb,HIGH);
delay(vel);
digitalWrite(unoa,HIGH);
digitalWrite(unob,LOW);
delay(vel);
}
void retrocede(){ //procedimiento que envía la secuencia de pulsos para que el motor
digitalWrite(unoa,LOW); //gire en sentido contrario
digitalWrite(unob,HIGH);
digitalWrite(dosa,LOW);
digitalWrite(dosb,HIGH);
delay(vel);
digitalWrite(dosa,HIGH);
digitalWrite(dosb,LOW);
delay(vel);
digitalWrite(unoa,HIGH);
digitalWrite(unob,LOW);
delay(vel);
digitalWrite(dosa,LOW);
digitalWrite(dosb,HIGH);
delay(vel);
}
void loop(){
if(digitalRead(findecarrera1)==HIGH){ //si toca el primer fin de carrera
c=0;
}
if(digitalRead(findecarrera2)==HIGH){ //si toca el segundo fin de carrera
c=1;
}
if(c==0){
avanza();
}
if(c==1){
retrocede();
}
}
Volver?
Copyright (c) 2006 Juan Carlos Alonso de Mena
Permission is granted to copy, distribute and/or modify this document under the terms of
the GNU Free Documentation License, Version 1.2 or any later version published by the
Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no
Back-Cover Texts. A copy of the license is included in the section entitled
GNU Free Documentation License?.