Arduino Oooooo
Arduino Oooooo
MATERIALES
- Arduino
- Resistencia de 10 kilo ohm
- Leds
- Servomotor
- Protoboat
- Fotorresistencia
MARCO TEORICO
El control de un servomotor mediante entradas analógicas es una práctica común en el ámbito
de la electrónica, la robótica y los sistemas embebidos. Los servomotores son actuadores que
permiten controlar de manera precisa la posición angular de su eje. A diferencia de los
motores de corriente continua convencionales, los servos incorporan un circuito de control
interno y un sistema de realimentación que les permite mantener una posición específica
determinada por una señal de entrada. Estos dispositivos son muy utilizados en aplicaciones
como brazos robóticos, sistemas de dirección en vehículos a control remoto, automatización
de mecanismos y dispositivos interactivos.
El principio de funcionamiento de un servomotor se basa en el uso de una señal de control que
emplea modulación por ancho de pulso (PWM, por sus siglas en inglés). Esta señal consiste en
una serie de pulsos periódicos con un ancho variable. Generalmente, los servomotores
estándar responden a una señal de 50 Hz, es decir, un pulso cada 20 milisegundos. El ancho
del pulso determina el ángulo al que se posicionará el eje del servo. Por lo común, un pulso de
1 milisegundo mueve el eje a 0 grados, un pulso de 1.5 milisegundos lo posiciona a 90 grados
y un pulso de 2 milisegundos lo lleva a 180 grados. Este control permite un posicionamiento
suave y preciso, ideal para aplicaciones donde la exactitud es importante.
En este tipo de práctica, el control de la señal PWM se realiza a partir de una entrada
analógica. Las entradas analógicas son capaces de leer voltajes continuos, como los que puede
generar un potenciómetro al girarse manualmente. Estos voltajes son convertidos a valores
digitales mediante un convertidor analógico-digital (ADC), que es parte del microcontrolador.
Por ejemplo, un ADC de 10 bits puede representar voltajes entre 0 y 5 voltios como valores
digitales entre 0 y 1023. Este valor digital se puede utilizar para calcular el ancho del pulso
necesario que debe enviarse al servo, estableciendo así una relación directa entre la posición
del potenciómetro y la posición angular del servomotor.
Esta técnica de control es intuitiva, didáctica y ampliamente aplicable. Permite al usuario
interactuar de manera manual con un sistema automático y observar en tiempo real cómo una
entrada analógica puede traducirse en un movimiento mecánico preciso. Además, facilita la
comprensión de conceptos clave como la conversión analógica-digital, la generación de
señales PWM, y la relación entre señales eléctricas y movimiento físico.
En la implementación práctica, es importante considerar ciertos aspectos técnicos. Por
ejemplo, muchos servomotores requieren más corriente de la que puede suministrar
directamente un microcontrolador, por lo cual es recomendable utilizar una fuente de
alimentación externa adecuada. Además, para lograr un control estable y preciso del PWM, se
suelen emplear librerías o temporizadores por hardware que aseguren una señal constante y
confiable. También es relevante calibrar adecuadamente el sistema, de modo que los valores
extremos del potenciómetro correspondan a los ángulos extremos del servo, evitando así
movimientos erráticos o no deseados.
DESARROLLO Y METODOLOGIA
Este circuito presenta un nivel de complejidad superior en comparación con configuraciones
básicas. Uno de los primeros elementos que destaca es la presencia de pilas. Habitualmente,
muchos de los dispositivos que se conectan a una placa Arduino pueden ser alimentados
directamente desde la propia placa, a través del puerto USB del ordenador utilizado para la
programación.
Sin embargo, la situación cambia al incorporar motores. Tanto los motores de corriente
continua como los servomotores tienden a tener un consumo elevado de corriente. Dado que la
capacidad de suministro de corriente del Arduino es limitada a un máximo de 40 mA por pin,
se requiere una fuente de alimentación externa para satisfacer las demandas energéticas de
estos componentes.
Cuando se emplean múltiples fuentes de alimentación, es fundamental conectar todas las
tierras (GND) entre sí. Esto asegura que todos los componentes del sistema compartan un
mismo nivel de referencia eléctrica, evitando posibles fallos de funcionamiento.
Otro aspecto a considerar es la disponibilidad de pilas de 5V, las cuales no son comunes. En
cambio, es más fácil encontrar pilas de 1.5V o 9V. Para adaptar estos voltajes a los
requerimientos del circuito, se incorpora un regulador de voltaje, en este caso, un 7805. Este
componente, aunque similar en apariencia a un transistor, cumple la función específica de
mantener una salida constante de 5V, independientemente de las variaciones en la entrada
dentro de su rango operativo.
El circuito
Al observar el integrado con la cara frontal visible y las letras orientadas correctamente para
su lectura, las funciones de sus pines, en el sentido de lectura, son las siguientes:
Pin 1 – Entrada de voltaje: Se conecta al terminal positivo de la fuente de alimentación.
Pin 2 – Tierra (GND): Se conecta al terminal negativo de la fuente de alimentación.
Pin 3 – Salida de voltaje: Entre este pin y tierra se obtiene una salida regulada de 5V.
En cuanto a la LDR (resistencia dependiente de la luz), se utilizó un circuito clásico en
electrónica conocido como divisor de tensión. Este tipo de configuración permite transformar
una variación de resistencia en una señal de voltaje proporcional, adecuada para su lectura
mediante una entrada analógica del microcontrolador.
Reguladores de voltaje
El programa
En esta sección se utiliza una librería específica para el control de servomotores. Desde las
primeras líneas del código, es posible identificar nuevos elementos, como la instrucción:
#include <Servo.h>
Esta línea indica la inclusión de la librería Servo.h, la cual contiene un conjunto de funciones y
definiciones preprogramadas que facilitan el control de servomotores mediante Arduino.
La inclusión de librerías en el entorno de desarrollo de Arduino se realiza generalmente a
través del menú principal: en la barra de herramientas se selecciona Sketch, luego Include
Library, y se elige la librería deseada de entre las disponibles.
Las librerías en Arduino agrupan funciones ya desarrolladas por terceros, lo que permite
simplificar el código y evitar la programación desde cero de funcionalidades complejas. En
este caso particular, Servo.h proporciona la definición de una clase orientada a objetos,
diseñada específicamente para facilitar el manejo de servos. Aunque hasta este punto del
proyecto se ha trabajado mayormente con funciones, esta implementación introduce el
concepto de clases y objetos, permitiendo una estructura de programación más modular y
eficiente.
En este punto es importante aclarar que muchas de las instrucciones utilizadas en el programa
no corresponden a funciones en el sentido tradicional, sino a métodos asociados a un objeto.
Esto se enmarca en el paradigma de la programación orientada a objetos, un enfoque que
permite organizar el código mediante estructuras llamadas clases y sus respectivas instancias
(u objetos).
Un objeto agrupa de forma lógica tanto datos como funciones relacionadas con esos datos,
facilitando la modularidad y reutilización del código. En este caso, se utiliza la clase Servo,
proporcionada por la librería Servo.h, para crear una instancia denominada servo1.
A continuación, se presentan las primeras tres declaraciones de variables enteras, utilizadas
para almacenar los valores leídos desde sensores y definir la posición del servomotor:
- int valorLDR_Dcha = 0;
- int valorLDR_Izda = 0;
- int valorServo = 0;
- Servo servo1;
Aquí se está declarando una instancia de la clase Servo, que permitirá acceder a los métodos
definidos en dicha clase para el control del servomotor. Esta instancia se identifica como
servo1.
Dentro de la función setup(), se encuentra una instrucción clave para vincular el objeto con un
pin específico de la placa Arduino:
- servo1.attach(10);
Esta instrucción indica que el servomotor controlado mediante el objeto servo1 está conectado
al pin digital 10 de la placa. A partir de este momento, será posible controlar la posición del
servo utilizando los métodos asociados a esa instancia.
Cosas importantes: Sólo podremos conectar servos a las salidas analógicas de Arduino,
básicamente porque en el control de servos se utiliza una señal PWM.
- servo1.write(valorServo)
BIBLIOGRAFIA Y WEBOGRAFIA
Regalado Pacheco, J. G. (s.f.). Curso de supervivencia con Arduino. [Licencia Creative Commons
Reconocimiento-NoComercial-CompartirIgual 3.0 Unported]. Creado a partir de la obra en arduino
- Página web oficial de Arduino: http://www.arduino.cc
- Laboratorio de creación e innovación tecnológica de Canarias (Canarnova):
https://groups.google.com/group/canarnova?hl=es
- Blog de bricogeek: http://blog.bricogeek.com/
- Sparkfun electronics: http://www.sparkfun.com/ 43 de 44
- Make Magazine: http://makezine.com/
- Fritzing: http://fritzing.org/
- KiCAD: http://kicad.sourceforge.net/wiki/Main_Page
ANEXOS