Control de posición de un servomotor
Enviado por Ledesma • 9 de Enero de 2019 • 1.434 Palabras (6 Páginas) • 413 Visitas
...
----------------------------------------------------------------------------------------------
#include
Servo Servo1; // Crear objeto para el servo
void setup() {
Servo1.attach(2); // Enlazar el servo al pin 2
pinMode(13, OUTPUT); // Salida para LED indicador
// En esta seccion se deben configurar las entradas y salidas
//para un enconder de 4 bits
}
void loop() {
// En esta parte del codigo se especificarian los parametros
//del enocoder de posicion asi como las conversiones
//correspondientes y las comparaciones necesarias
digitalWrite(13, LOW); // Iniciar con LED indicador apagado
Servo1.write(0); // Iniciar en 0 grados
delay(1000);
Servo1.write(135); // Desplazamiento a 135 grados
delay(5000);
Servo1.write(0); // Regresar a 0 grados
delay(1000);
Servo1.write(180); // Desplazamiento a 180 grados
delay(1000);
Servo1.write(0); // Regresar a 0 grados
delay(1000);
Servo1.write(180); // Desplazamiento a 180 grados
delay(1000);
Servo1.write(0); // Regresar a 0 grados
delay(1000);
Servo1.write(180); // Desplazamiento a 180 grados
delay(1000);
Servo1.write(0); // Regresar a 0 grados
delay(1000);
Servo1.write(180); // Desplazamiento a 180 grados
delay(1000);
Servo1.write(0); // Regresar a 0 grados
delay(1000);
Servo1.write(180); // Desplazamiento a 180 grados
delay(1000);
Servo1.write(90); // Desplazamiento a 90 grados
delay(10000);
Servo1.write(180); // Desplazamiento a 180 grados
delay(1000);
Servo1.write(90); // Desplazamiento a 90 grados
delay(1000);
Servo1.write(180); // Desplazamiento a 180 grados
delay(1000);
Servo1.write(90); // Desplazamiento a 90 grados
delay(1000);
Servo1.write(180); // Desplazamiento a 180 grados
delay(1000);
Servo1.write(90); // Desplazamiento a 90 grados
delay(1000);
Servo1.write(22.5); // Desplazamiento a 22.5 grados
delay(6000);
Servo1.write(45); // Desplazamiento a 45 grados
delay(6000);
Servo1.write(135); // Desplazamiento a 135 grados
delay(6000);
Servo1.write(45); // Desplazamiento a 45 grados
delay(10000);
digitalWrite(13, HIGH); // Encender LED para indicar fin de la secuencia
delay(2000); // Encendido por un segundo
digitalWrite(13, LOW); // Apagar LED indicador
delay(1000); // Retraso de un segundo para reiniciar rutina
}
-----------------------------------------------------------------------------------------------------------------------------------
- RESULTADOS
- Existe una discrepancia entre el cero mecanico y el cero electrico, para encontrar el cero electrico se tuvo que hacer mediante codigo, mientras que el cero mecanico fue encontrado cambiando manualmente la posicion del rotor, pero la diferencia entre estos es de diez grados.
- El rango angular de movimiento es mayor al rango especificado en la hoja de datos tecnicos del fabricante, el rango total de movimiento es de aproximadamente doscientos cuarenta grados, mientras que el fabricante solo especifica ciento ochenta grados.
- El ancho de pulso especificado en la hoja de datos tecnicos del fabricante para el cero electrico y un desplazamiento de ciento ochenta grados no corresponden para estos desplazamientos angulares.
- CONCLUSIONES
Hubo dificultad para hacer que el cero mecanico coincidiera con el cero electrico debido a que el rango de movimiento es diferente al especificado en la hoja de datos tecnicos del fabricante, investigando en foros sobre este tipo de servomotores encontramos que es debido a que el modelo en especifico presenta muchas fallas en cuanto a fabricacion, sin embargo aun asi fue posible obtener los resultados esperados en la practica.
Salas
Pudimos observar que el ancho de pulsos especificados para el cero electrico y el ancho de pulsos para el desplazamiento angular maximo no corresponden con el desplazamiento angular real, por lo que se utilizaron los comandos de arduino en la librería servo.h ya que estos comandos no requieren de los parametros especificos del servomotor utilizado, este
...