Cintillo Institucional

wiki comunidad

Proyecto Hardware Libre Cenditel

Página Cenditel

wiki Cenditel

Plataforma de Desarrollo Colaborativo

Curso Sensibilización Hardware Libre (Unidad 002)

logohl.png logohl.png logohl.png


002/03 Actividad 003

Con esta actividad se busca comenzar con el manejo del puerto serie, su iniciación y sus comandos, que permite la comunicación con la computadora a través de la interfaz del arduino y con el programa processing. Esta actividad se inicia con la descripción del puerto serial, las señales de modulación PWM y servomotores, para finalizar con programas que permitan el manejo del puerto serial y control de servomotores.

El puerto Serie

La mayoría de los microcontroladores están diseñados para trabajar de manera autónoma, es decir sin necesidad de tener comunicación de manera continúa con el computador. El hardware arduino utiliza el puerto serie para la transmisión tanto del código en el momento de la programación, como envío de datos para comunicación con periféricos.

De manera general, para la comunicación serial se utilizan dos lineas, una para el envío y otra para la recepción, llamadas comúnmente como tX y rX, lo que permite tener una comunicación "full duplex", es decir enviar y recibir de manera simultánea.

serie2.png
figura 1. Diagrama de una comunicación serie

De la figura 1, se pueden observan las principales características de una transmisión por el puerto serie, a continuación se realiza una descripción de los principales términos utilizados en la transmisión:

Desde la interfaz arduino se utiliza comandos que permite el manejo del puerto serie, estos comandos se describen a continuación:

Como un aspecto de seguridad, se debe mencionar que la tarjeta Arduino Diecimila no contiene protección contra sobre-corriente por el puerto serie, lo que puede ocasionar daños en los puertos o en la tarjeta madre del computador. Existe una versión llamada Arduino Duemilanove [1], que corrige esta falla, incorporando un sistema que se activa cuando al existir una corriente superior a 500mA protegiendo el puerto de la PC.

La Señal PWM

La modulación por ancho de pulsos (también conocida como PWM, siglas en inglés de pulse-width modulation) de una señal, es una técnica en la que se modifica el ciclo de trabajo de una señal periódica, generalmente cuadrada, 0 ya sea para transmitir información a través de un canal de comunicaciones o para controlar la cantidad de energía que se envía a una carga.

El ciclo de trabajo de una señal periódica es el ancho relativo de su parte positiva en relación con el período. Expresado matemáticamente:

motor.png

La construcción típica de un circuito PWM se lleva a cabo mediante un comparador con dos entradas y una salida. Una de las entradas se conecta a un oscilador de onda dientes de sierra, mientras que la otra queda disponible para la señal moduladora. En la salida la frecuencia es generalmente igual a la de la señal dientes de sierra, y el ciclo de trabajo está en función de la portadora.

onda_20ms.png
figura 2. Gráfica de la señal PWM

La principal desventaja que presentan los circuitos PWM es la posibilidad de que haya interferencias generadas por radiofrecuencia. Éstas pueden minimizarse ubicando el controlador cerca de la carga y realizando un filtrado de la fuente de alimentación.

El refresco se realiza habitualmente con una frecuencia de 50 veces por segundo, pero es normal y efectivo trabajar entre los 10 y los 30 milisegundos. Por otro lado, el ancho del impulso, es decir, su tiempo de duración, dará la posición u orientación del actuador mecánico. En este punto en particular, se cuando se está constantemente atento a enviar un impulso de duración exacta para evitar oscilaciones mecánicas indeseadas, se centra la complejidad y la cautela al trabajar con servomotores.

El Servo Motor

Un Servomotor es un dispositivo que tiene un eje de rendimiento controlado, que configura las posiciones angulares específicas al enviar una señal codificada, al cambiar esta señal enviada al motor la posición angular cambia. Los servomotores se consideran como primer paso en la robótica, cuando se necesite un posicionamiento mecánico preciso, ejemplos de aplicaciones se puede mencionar: El zoom de una cámara, el autoenfoque de un conjunto óptico, aeromodelismo, puertas automáticas, entre muchas otras.

El motor del servo tiene algunos circuitos de control y un potenciómetro conectado a su eje central. Este potenciómetro permite a la circuitería de control, supervisar el ángulo actual del servo motor. Si el eje está en el ángulo correcto, entonces el motor está apagado. Si el circuito chequea que el ángulo no es el correcto, el motor girará en la dirección adecuada hasta llegar al ángulo correcto. El eje del servo es capaz de llegar alrededor de los 180 grados. Generalmente, en algunos llega a los 210 grados, pero varía según el fabricante. Un servo normal se usa para controlar un movimiento angular de entre 0 y 180 grados.


Programa 01: Manejo del puerto serial -entrada analógica-

En la actividad anterior (Actividad 002), se explicaba el manejo y funcionamiento de las señales analógicas, para la visualización de estas señales se utilizó un retardo en el "parpadeo" de un led, es decir mientras más alto fuese la entrada analógica mas rápido era el parpadeo. Para este primer programa con la incorporación de los comandos para el puerto serie, se puede observar el valor específico de la señal analógica, dicho valor oscila entre 0 y 1023.

Para el .

Codificación

Materiales

Diagrama de conexión

i_analogica.jpg

figura 3.Conexión programa manejo de entrada analógica







Programa 02: Manejo del puerto serial -sensor de luminosidad-

Con este programa se trabaja con una señal analógica proveniente de un sensor de luminosidad (temt6000), que proporciona un valor analógico en correspondencia al nivel de luminosidad del ambiente, para este programa se realiza una comparación con un valor umbral para apagar o encender el led, es decir cuando haya ausencia de luz, los led se encienden.

Codificación

Materiales

Diagrama de conexión

luz.jpg

figura 4. Conexión del circuito del sensor de luminosidad




Programa 03: Manejo del servomotor -con librería de arduino-

En los programas 03 y 04, se van a presentar dos programas para el manejo de servomotores, el programa 03 trabajando directamente con la librería de arduino servo.h, que permite fijar de acuerdo a un valor leido por entrada analógica, el ángulo del servomotor, es decir el angulo va a variar entre 0 y 180 grados que va hacer proporcional a la entrada analógica entre 0 y 1023, espeficicamente esto se realiza mediante el comando de arduino map que hace este escalamiento.

Dentro de la librería el arduino mantiene una frecuencia fija de 20 Khz, y de acuerdo al valor que se envíecon el comando myservo.write(val), se varía el ancho de los pulsos de la señal PWM,

como se mencionó al principio, los servomotores se controlan mediante impulsos de ancho variable que deben refrescarse periódicamente. Esto significa que si dejamos de enviar la señal de control en el tiempo en el que el servomotor lo necesita, éste (a pesar de estar energizado) dejará de mantenerse en la posición preestablecida y adoptará cualquier orientación regida por el esfuerzo al que esté sometido. Es decir, si no mantenemos la señal de control en forma efectiva todo el tiempo que sea necesario, el sistema quedará a merced de las fuerzas externas a la que sea sometido. Por ejemplo, un brazo de palanca dejará de sostener un objeto y se dejará caer todo el trayecto mecánico que pueda recorrer, o un sistema erguido en vertical se caerá hacia atrás o hacia adelante al momento en el que el servomotor deje de “sostener” la aplicación en la posición preestablecida.

Para esta actividad con la señal PWM se diseñaron dos prácticas, donde se trabaja con la señal PWM del arduino, utilizando la "salida analógica" del arduino, en realidad se refiere a la salida PWM, con el inconveniente que esta salida esta pre-configurada

colores.png
figura 5. Apariencia y código de colores del servomotor

Con respecto a la tensión de trabajo de los servomotores suele estar comprendida entre los 3 y los 7 Volts, siendo 5 Volts la tensión más utilizada. La corriente que requiere depende del tamaño del servo (usualmente indicada por el fabricante), esta corriente depende principalmente del par.

Codificación

Materiales

Diagrama de conexión

[ANEXAR]

figura 6. Conexión del Servomotor (Programas 03 y 04)




Programa 04: Manejo del servomotor -sin librería arduino-

Para este programa se utilizan los mismos materiales y diagrama de conexión del programa anterior, el funcionamiento del programa es el mismo, la ventaja de este programa es que se muestra como generar la señal de PWM, es decir permite modificar la frecuencia de la PWM.

Codificación





Referencias

hlpd/curso_arduino/uni00203 (última edición 2011-07-15 17:34:37 efectuada por _desactivada_csoto)