Cintillo Institucional
Diferencias entre las revisiones 38 y 39
Versión 38 con fecha 2011-07-15 17:16:10
Tamaño: 12916
Comentario:
Versión 39 con fecha 2011-07-15 17:34:37
Tamaño: 13169
Comentario:
Los textos eliminados se marcan así. Los textos añadidos se marcan así.
Línea 3: Línea 3:
||<tablewidth="753px" tableheight="21px" tablestyle="text-align:center; "#ffff00 style="text-align:center; ">[[http://hl.cenditel.gob.ve/wiki/|wiki comunidad]] ||<#ffff33 style="vertical-align:top;text-align:center; ">[[hlpd|Proyecto Hardware Libre Cenditel]] ||<#ffff66 style="text-align:center; ">[[http://www.cenditel.gob.ve/|Página Cenditel]] ||<#ffff99 style="vertical-align:top;text-align:center; ">[[http://wiki.cenditel.gob.ve/wiki|wiki Cenditel]] ||<#ffffcc style="text-align:center; ">[[http://fsl.cenditel.gob.ve/|Plataforma de Desarrollo Colaborativo]] || ||<tablewidth="753px" tableheight="21px" tablestyle="text-align:center;  "#ffff00 style="text-align:center;  ">[[http://hl.cenditel.gob.ve/wiki/|wiki comunidad]] ||<#ffff33 style="vertical-align:top;text-align:center;  ">[[hlpd|Proyecto Hardware Libre Cenditel]] ||<#ffff66 style="text-align:center;  ">[[http://www.cenditel.gob.ve/|Página Cenditel]] ||<#ffff99 style="vertical-align:top;text-align:center;  ">[[http://wiki.cenditel.gob.ve/wiki|wiki Cenditel]] ||<#ffffcc style="text-align:center;  ">[[http://fsl.cenditel.gob.ve/|Plataforma de Desarrollo Colaborativo]] ||
Línea 12: Línea 12:
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.
<<BR>><<BR>>
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. <<BR>><<BR>>
Línea 37: Línea 37:
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.
<<BR>><<BR>>
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. <<BR>><<BR>>
Línea 56: Línea 56:
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.
<<BR>><<BR>>
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. <<BR>><<BR>>
Línea 61: Línea 61:
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.
<<BR>><<BR>> <<BR>>
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. <<BR>><<BR>> <<BR>>
Línea 65: Línea 64:
Línea 108: Línea 106:
Línea 109: Línea 108:
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.
Línea 110: Línea 110:
Para el control de con señales PWM con Arduino ===
Como mencionamos 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.
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.
Línea 115: Línea 116:

Conexión del Servo ===Conectando un servo las conexiones son de tres cables, y se basan en una normativa de colores que involucran al Rojo como positivo de la alimentación principal, junto a otro cable que puede ser de color Negro o Marrón y que refiere al negativo de alimentación. Un tercer cable, correspondiente al control de posicionamiento del actuador mecánico, es Amarillo o Blanco.

{{attachment:colores.png}}
''figura 5. Apariencia y código de colores del servomotor''
{{attachment:colores.png||height="252px",width="410px"}} ''<<BR>>figura 5. Apariencia y código de colores del servomotor''
Línea 122: Línea 119:
Línea 130: Línea 126:
 * Servomotor   * Servomotor
Línea 137: Línea 133:
<<BR>><<BR>> <<BR>>
Línea 138: Línea 135:



<<BR>><<BR>> <<BR>>
Línea 143: Línea 136:
Línea 148: Línea 140:

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:

  • Velocidad: es la tasa de velocidad entre el computador y el microcontrolador, típicamente se utiliza una velocidad de 9600 bits por segundo.
  • Bit de Inicio: identifica el inicio de la transmisión.
  • Palabra: el dato que se quiere transmitir.
  • Bit de Parada: Identifica el fin de la transmisión
  • Bit de paridad: es un simple protocolo de detección de errores, se puede configurar paridad par o impar.

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

  • Serial.begin():Configura la velocidad de transmisión en baudios (baud rate ejemplo: 9600). esta debe ir dentro de la estructura del void setup().

  • Serial.available():Se una para la recepción de datos desde el puerto serial, se coloca en verdadero cuando hay datos en el puerto serie. Generalmente se usa en una estructura de decisión.

  • Serial.read:Permite la lectura de datos, el valor leído debe guardarse en una variable.

  • Serial.print(data,format):Se utiliza para enviar datos o comentarios (string). Los datos pueden ser enviados en distintos formatos: DEC, HEX, OCT, BIN, BYTE.

  • Serial.println(data,format):De manera similar al anterior, escribe en el puerto serial pero agregando una nueva linea.

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

  • D es el ciclo de trabajo \frac{\tau}{T}
  • τ es el tiempo en que la función es positiva (ancho del pulso)
  • T es el período de la función

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

  • Tarjeta Arduino con cable conexión USB
  • Potenciómetro 10k
  • Resistencia 220
  • Led

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

  • Tarjeta Arduino con cable conexión USB
  • Sensor de luminosidad temt 6000
  • Resistencia 220
  • Led

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

  • Tarjeta Arduino con cable conexión USB
  • Servomotor

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)