Laboratorio 2 - Gaesillo/Lab-Robotica GitHub Wiki

Informe Laboratorio 2

Introducción

La experiencia realizada consistió en una introducción al uso de Arduino y programación de códigos simples. Para ello se hizo uso de códigos de ejemplo provistos por la misma plataforma, para el encendido de un LED y la lectura análoga de un potenciómetro.

Desarrollo de actividades

La actividad se desarrollo en dos fases, la primera consiste en el ensamblado de un circuito simple LED en protoboard, utilizando los pines de Arduino en salida digital para proveer 5V, la corriente del LED debe limitarse con una resistencia adecuada.

Circuitos LED (digitales)

En primera instancia se armó el siguiente circuito:

Para ello se hizo uso de un LED rojo, una resistencia de 3,3 Ohm (seleccionada de forma aleatoria), los pines 8 del Arduino en modo de salida digital (pinMode(8, OUTPUT)) y el pin GND como tierra para cerrar el circuito. El circuito se armo sobre una protoboard de la siguiente manera:

Se utilizaron los siguientes códigos para la experimentación:

  • Blink: Basado en el programa de ejemplo BLINK de Arduino, enciende y apaga el LED bajo intervalos de tiempo fijo (1000 milisegundos en este caso).
  • Blink variante FOR: Modificación al programa anterior, incorporando secuencia FOR para variar los intervalos de tiempo.
  • Blink variante WHILE: Modificación al programa anterior, incorporando secuencia WHILE para variar los intervalos de tiempo.

Calculo de potencia del LED

Para determinar la potencia del LED y resistencia utilizados, deben asumirse ciertos parámetros no entregados:

  • El LED es de color rojo, por tanto, se puede asumir que este posee una caída de voltaje de entre 1,8 y 2,0 V. Se asumirá que esta es 1,8V para este caso.
  • La resistencia entregada se selecciono de forma aleatoria, se identificó por el código de color de bandas (Naranjo; Naranjo; Dorado; Dorado) que esta tiene una magnitud de 3,3 Ohm.
  • El PIN utilizado por el Arduino entrega un voltaje constante de 5V.

Luego, al ser un circuito en serie el voltaje se distribuye, por tanto, en la resistencia el voltaje será de 5-1,8 = 3,2V. El LED mantendrá su voltaje de 1,8V por caída.

De esta forma aplicando Ley de Ohm sobre la resistencia determinamos la intensidad de corriente: I=V/R. Por lo que I será 0,97 A o 970 mA, común en la resistencia y el LED.

Con esto la potencia final en el LED debiese ser: P = 1,8 V * 0,97 A = 1,75 Watts. La potencia disipada por la resistencia, por otra parte, será P = 3,2 V * 0,97 A = 3,1 Watts.

Nota: Para un LED rojo se recomienda utilizar una corriente de 20 mA, para el caso de una fuente de 5V, se requeriría una resistencia de 180 Ohm.

Circuitos potenciómetro (análogos)

Para el uso de señales análogas se requirió el uso de los pines de entrada análoga del Arduino, para este caso se utilizó el pin A0, el pin 5V para energizar el circuito y el pin GND para cerrarlo:

Como se aprecia en el diagrama, se utilizó el potenciómetro para interconexión entre los tres pines, de forma tal que la señal transmitida a través de este varíe en el wiper hacia A0. El circuito se ensamblo de esta forma en la protoboard:

Luego se hizo uso del código de ejemplo AnalogReadSerial, el que utiliza el monitor Serie para reportar el valor sensado por el pin A0, variando este entre 0 y 1024 dependiendo de la posición del wiper en el potenciómetro.

Nota: Debe tenerse en cuenta que la conexión a tierra (GND) en el circuito no es estrictamente necesaria, ya que el circuito se cierra aun sin esta, se recomienda utilizarla por buenas prácticas pues el potenciómetro (fabricado en material conductor) se encontraría energizado de manera constante.

En segunda instancia se integró el LED anterior sobre la línea del pin A0:

Como se indica en el diagrama:

Adicionalmente se replicó sin éxito un circuito similar, simulando lectura análoga en los pines digitales. (Link).

Conclusiones y análisis de resultados

Puesto que todos los códigos utilizados fueron solo ligeras modificaciones de código existente, todos funcionaron de manera adecuada. Sin embargo, deben indicarse varios alcances y errores, especialmente sobre los circuitos LED:

  • Al seleccionar una resistencia aleatoria en vez de la adecuada, la corriente sobre el LED estaba fuera de rango (970 mA vs. 20 mA).
  • La corriente limitada de salida del pin de Arduino también se encontraba fuera de rango de los valores máximos absolutos recomendados para los diferentes pines del equipo (corriente máxima recomendada por pin digital de 40 mA).
  • La corriente solicitada por el sistema supera la salida de corriente de un puerto USB estándar utilizado para energizar el Arduino (500 mA máximo para puertos USB con conexión a datos). Todos estos errores podrían haber causado una falla de cualquiera de los tres componentes por manejo inadecuado de las intensidades de corriente. Sin embargo, esto no ocurrió.

Podría asumirse que la sobre exigencia del Arduino podría haber estado limitando la corriente efectiva sobre el circuito, pues esta estaba claramente fuera del rango recomendado de uso. El uso prolongado del circuito de esta manera podría dañar el o los pines configurados.

Se recalca que el uso de Arduino para encender LEDs, sin una resistencia de por medio, está absolutamente no recomendado (a diferencia de lo que sugirió el profesor de laboratorio). El controlador Arduino posee resistencias internas en cada pin digital, accesibles configurando los pines en modo INPUT_PULLUP (resistencias Pull-Up de 20K Ohm). Estas no están disponibles en el modo OUTPUT, utilizado en los códigos de la experiencia.

Por otro parte, los circuitos análogos con potenciómetro también contaron con algunos errores:

  • El circuito para LecturaAnaloga inicial funciona de forma adecuada utilizando el pin A0.
  • El circuito para AnalogReadLed no logro encender el LED al insertar este sobre la línea del pin A0, durante la experiencia no se logró identificar la razón (puede estar ligado al problema del valor de la resistencia usada o su combinación de esta con el wiper del potenciómetro).
  • El circuito simulado LecturaAnalogaFallida no tuvo éxito en replicar al circuito AnalogRead original, esto principalmente debido al hecho de que, a pesar de que los pines digitales PWM pueden entregar salidas pseudo-analogas, no pueden tomar lecturas análogas. No se puede simular un pin de entrada análoga como lo son los pines A0-A7 mediante pines digitales.