Controlando Un Servomotor Con Una Fotorresistencia
Controlando Un Servomotor Con Una Fotorresistencia
Controlando Un Servomotor Con Una Fotorresistencia
Componentes
arduino
protoboard
un servomotor
una fotorresistencia
una resistencia de 10 KOms.
- al inicio
Circuito
Los servomotores son motores elctricos con un mecanismo interno
de control que nos da la posibilidad de controlarlo su posicin.
Normalmente estn construidos para girar en un angulo de de 0 a
180 grados en ambos sentidos, aunque los hay que tienen giro
continuo.
El servomotor de nuestro kit es un servomotor de 5 volts y tiene tres
cables para hacerlo funcionar. Un cable rojo, que se debe conectar a
5 volts. Un cable negro, que se debe conectar a tierra. Y un tercer
cable, amarillo en nuestro motor, que es el cable de control y que
vamos a conectar a un pin de salida del arduino.
- al inicio
Cdigo
Para utilizar los servomotores desde el Arduino contamos con la
biblioteca Servo, que nos permite controlarlo de manera muy simple.
Lo primero que debemos hacer es incorporar la biblioteca Servo en
nuestro sketch, que es una de las bibliotecas que ya viene con el
software del Arduino.
Con esta biblioteca primero hay que crear un objeto Servo. Despues
hay que ligarlo al pin con el que vamos a controlarlo y finalmente con
la funcin write() lo colocamos en la posicin deseada.
Los valores que nos da el divisor de voltaje con la fotorresistencia, no
son valores entre 0 y 1023, como sera con un potenciometro, si no
valores en un rango ms pequeo. Para usar el valor de la
fotorresistencia vamos a agregar una rutina en el setup() que nos
permita saber cuales son los valores mximo y minimo de este
circuito y con esos valores haremos el mapeo al valor que usaremos
para el servo.
Para hacer esto, que llamaremos calibrar nuestro sensor, vamos a
usar la estructura de control while, que nos permite repetir un ciclo
mientras se cumple una condicin. En este caso tomaremos el valor
del reloj de nuestro microcontrolador usando la funcin millis() y
repetiremos el ciclo mientras no hayan pasado 5 segundos.
En este ciclo usaremos dos variables: maximo, que iniciaremos con 0
y minimo que iniciaremos con 1023. Tomaremos la lectura de nuestro
sensor e iremos actualizando el valor de estas dos variables. Si es
mayor que el mximo o si es menor que el mnimo.
/*
En este proyecto vamos a mover un servo de acuerdo al valor
de una fotorresistencia
Servo miservo;
el motor
servo
sensor
sensor
// pin de la fotorresistencia
int angulo = 0;
int valSensor = 0;
int minimo = 1023;
int maximo = 0;
void setup() {
miservo.attach(pinServo);
Serial.begin(9600);
Serial
// hace la calibracion del sensor
pinMode(pinLed, OUTPUT);
digitalWrite(pinLed, HIGH);
while (millis() < 5000) {
valSensor = analogRead(pinSensor);
if (valSensor < minimo) {
minimo = valSensor;
}
if (valSensor > maximo) {
maximo = valSensor;
}
}
digitalWrite(pinLed, LOW);
}
void loop() {
valSensor = analogRead(pinSensor);
sensor
//
delay(15);
que el servo llegue a su posicion
//
Serial.print("min = ");
Serial.print(minimo);
Serial.print(" max = ");
Serial.print(maximo);
Serial.print(" sen = ");
Serial.print(valSensor);
Serial.print(" angulo = ");
Serial.println(angulo);
}
- al inicio
Variantes
Puedes hacer que el divisor de voltaje con dos fotorresistencias.
Puedes usar otros sensores analgicos para mover el servo.
- al inicio
Referencias:
Arduino Reference: Servo Library
Referencia Arduino: Biblioteca Servo
Biblioteca para el manejo y control de servomotores
Arduino Reference: While
Referencia Arduino: While
Estrucura de control while()
Arduino Reference: millis()
Referencia Arduino: millis()
Funcin millis(), tiempo en milisegundos desde que arranco el arduino
- al inicio
Esta pgina est siendo creada para apoyar las actividades del
Taller de Arduino en la Fac. de Ciencias de la UNAM.
Para mayor informacin comunicarse con eduardosac (at) gmail.com
http://arduino.matem.unam.mx/proyectos/fotorresistenciaServo