Cintillo Institucional
Diferencias entre las revisiones 25 y 39 (abarca 14 versiones)
Versión 25 con fecha 2011-07-14 13:53:14
Tamaño: 12979
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;"bgcolor="#ffff00" style="text-align: center;">[[http://hl.cenditel.gob.ve/wiki/|wiki comunidad]] ||<bgcolor="#ffff33" style="vertical-align: top; text-align: center;">[[hlpd|Proyecto Hardware Libre Cenditel]] ||<bgcolor="#ffff66" style="text-align: center;">[[http://www.cenditel.gob.ve/|Página Cenditel]] ||<bgcolor="#ffff99" style="vertical-align: top; text-align: center;">[[http://wiki.cenditel.gob.ve/wiki|wiki Cenditel]] ||<bgcolor="#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 9: Línea 9:
<<TableOfContents>>
<<BR>>
<<TableOfContents>> <<BR>>
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.
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 17: Línea 15:
Línea 37: Línea 34:
 * '''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.print(data,format):'''Se utiliza para enviar datos o comentarios (string). Los datos pueden ser enviados en distintos formatos: DEC, HEX, OCT, BIN, BYTE.
Línea 40: 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.

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 45: Línea 40:

La modulación por ancho de pulsos (también conocida como PWM, siglas en inglés de pulse-width modulation) de una señal o fuente de energía es una técnica en la que se modifica el ciclo de trabajo de una señal periódica (una senoidal o una cuadrada, por ejemplo), 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.
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.
Línea 50: Línea 44:
{{attachment:formula.png}} {{attachment:motor.png}}
Línea 52: Línea 46:
 . D = \frac{\tau}{T}
. D es el ciclo de trabajo
 . D es el ciclo de trabajo \frac{\tau}{T}
Línea 59: Línea 52:
{{attachment:onda.png}} {{attachment:onda_20ms.png}} <<BR>> ''figura 2. Gráfica de la señal PWM ''<<BR>><<BR>>
Línea 63: 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.
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 67: Línea 59:
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.<<BR>>
Línea 68: Línea 61:
Un Servomotor es un dispositivo pequeño que tiene un eje de rendimiento controlado. Este puede ser llevado a 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.<<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 70: Línea 63:
El motor del servo tiene algunos circuitos de control y un potenciómetro que esta conectado al eje central del servo motor. 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. Normalmente, 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>> === 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.
Línea 72: Línea 66:
Si para el control de uno de estos sistemas utilizamos un microcontrolador que además de actuar sobre el servomotor deba realizar otras actividades, se nos planteará siempre el temor de no lograr actuar en los tiempos requeridos por estos sistemas. Sin embargo, la clave de un funcionamiento satisfactorio y de una realización sin mayores complicaciones se basa en la utilización de un cristal de alta frecuencia (20 Mhz) para poder ejecutar todo el trabajo adicional que sea necesario hasta que llegue el momento de refrescar nuevamente el impulso de control del servomotor. Esto debe ir acompañado, por supuesto, de la
observación cuidadosa del diagrama de tiempos de nuestra aplicación.<<BR>>
Para el .
Línea 75: Línea 68:
<<BR>>
<<BR>>
<<BR>>
<<BR>>
<<BR>>
<<BR>>
<<BR>>
== 003/01 Actividad 003 ==
==== Codificación ====
 * [[hlpd/curso_arduino/fuentes/caf0020301|enlace al prog01.pde]]
 * [[http://wiki.cenditel.gob.ve/wiki/hlpd/curso_arduino/fuentes?action=AttachFile&do=get&target=241_ianaloga.sch|serial_manejo_ianalog.sch]]
Línea 84: Línea 72:
Prueba de puerto serie ... ==== Materiales ====
 * Tarjeta Arduino con cable conexión USB
 * Potenciómetro 10k
 * Resistencia 220
 * Led
Línea 86: Línea 78:
==== Enlaces ==== ==== Diagrama de conexión ====
{{attachment:i_analogica.jpg}} <<BR>>
Línea 88: Línea 81:
 * http://arduino.cc/en/Main/ArduinoBoardDuemilanove ''figura 3.Conexión programa manejo de entrada analógica''<<BR>>
Línea 90: Línea 83:
<<BR>><<BR>><<BR>>
Línea 91: Línea 85:
<<BR>> <<BR>> <<BR>>
Línea 92: Línea 87:
=== 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.
Línea 93: Línea 90:
=== Control de PWM con Arduino === ==== Codificación ====
 * [[hlpd/curso_arduino/fuentes/caf0020302|enlace al prog02.pde]]
 * [[http://wiki.cenditel.gob.ve/wiki/hlpd/curso_arduino/fuentes?action=AttachFile&do=get&target=242_sensorluz.sch|serial_manejo_luz.sch]]
Línea 95: Línea 94:
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. ==== Materiales ====
 * Tarjeta Arduino con cable conexión USB
 * Sensor de luminosidad temt 6000
 * Resistencia 220
 * Led
Línea 97: Línea 100:
==== Diagrama de conexión ====
{{attachment:luz.jpg}} <<BR>>
Línea 98: Línea 103:
{{attachment:onda_20ms.png}} ''figura 4. Conexión del circuito del sensor de luminosidad''
Línea 100: Línea 105:
<<BR>><<BR>> <<BR>>
Línea 101: Línea 107:
=== 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.
Línea 102: Línea 110:
{{attachment:motor.png}} 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,
Línea 104: Línea 112:
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 105: Línea 114:
=== Conexión del Servo === 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 <<BR>>
Línea 107: Línea 116:
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}}
{{attachment:colores.png||height="252px",width="410px"}} ''<<BR>>figura 5. Apariencia y código de colores del servomotor''
Línea 114: Línea 120:
<<BR>><<BR>> ==== Codificación ====
 * [[hlpd/curso_arduino/fuentes/caf0020303|enlace al prog03.pde]]
 * [[http://wiki.cenditel.gob.ve/wiki/hlpd/curso_arduino/fuentes?action=AttachFile&do=get&target=242_sensorluz.sch|Manejo_servo.sch]]
Línea 116: Línea 124:
=== Prácticas === ==== Materiales ====
 * Tarjeta Arduino con cable conexión USB
 * Servomotor
Línea 118: Línea 128:
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
<<BR>>
==== Diagrama de conexión ====
{{attachment:servo01.jpg}} <<BR>>
Línea 121: Línea 131:
<<BR>>
==== Trabajo con servo motores con librería de arduino ====
''figura 6. Conexión del Servomotor (Programas 03 y 04)''
Línea 124: Línea 133:
<<BR>><<BR>> <<BR>>
Línea 125: Línea 135:
<<BR>>
                                                    
{{{
// Controlling a servo position using a potentiometer (variable resistor)
// by Michal Rinott <http://people.interaction-ivrea.it/m.rinott>
=== 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. <<BR>>
Línea 131: Línea 138:
#include <Servo.h>
 
Servo myservo; // create servo object to control a servo
 
int potpin = 0; // analog pin used to connect the potentiometer
int val; // variable to read the value from the analog pin
 
void setup()
{
  myservo.attach(7); // attaches the servo on pin 9 to the servo object
}
 
void loop()
{
  val = analogRead(potpin); // reads the value of the potentiometer (value between 0 and 1023)
  val = map(val, 0, 1023, 0, 179); // scale it to use it with the servo (value between 0 and 180)
  myservo.write(val); // sets the servo position according to the scaled value
  delay(15); // waits for the servo to get there
}
}}}
==== Codificación ====
 * [[hlpd/curso_arduino/fuentes/caf0020304|enlace al prog04.pde]]
Línea 152: Línea 141:
<<BR>><<BR>><<BR>><<BR>>
Línea 153: Línea 143:
==== Sin Librería Arduino ====

Este nos permite nodificar la frecuencia de la PWM
<<BR>>

{{{
int potpin = 0; // analog pin used to connect the potentiometer
int motorpin=9;
//int val; // variable to read the value from the analog pin
int sensorval;
float val;



void setup()
{
// myservo.attach(7); // attaches the servo on pin 9 to the servo object
pinMode (motorpin,OUTPUT);

  TCCR1A = 0x00; // esto es para setear el timer en uno de los modos de
generación de PWM
  TCCR1B = 0x13; // esto setea el "prescaler" (N), de la siguiente manera:

  // TCCR1B=0x11 --> N=1; TCCR1B=0x12 -->N=8; TCCR1B=0x13 -->N=64, etc.
  // N, el famoso "prescaler", es un divisor del clock de la Arduino (16MHz)

  ICR1 = 3000; // ICR1 es el valor máximo del analogWrite, lo que le
llaman el "TOP"

}

void loop()
{
  sensorval = analogRead(potpin); // reads the value of the
potentiometer (value between 0 and 1023)
  val = map(sensorval, 0, 1023, 75, 360); // scale it to use it with
the servo (value between 0 and 180)
// myservo.write(val); // sets the servo position
according to the scaled value
  analogWrite (motorpin,val);
  delay(15); // waits for the servo to get there
}
}}}
<<BR>><<BR>><<BR>>
Línea 198: Línea 144:

. * Modulación por ancho de pulsos, http://es.wikipedia.org/w/index.php?title=Modulaci%C3%B3n_por_ancho_de_pulsos&oldid=39913301 (consultado: mayo 31, 2011). 
 . * Modulación por ancho de pulsos, [[http://es.wikipedia.org/w/index.php?title=Modulación_por_ancho_de_pulsos&oldid=39913301|http://es.wikipedia.org/w/index.php?title=Modulaci%C3%B3n_por_ancho_de_pulsos&oldid=39913301]] (consultado: mayo 31, 2011).
Línea 201: Línea 146:
 . * Tarjeta Arduino [[http://arduino.cc/en/Main/ArduinoBoardDuemilanove|Duemilanove]]

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)