En el mundo de la electrónica, medir y entender las señales analógicas es esencial, y la función analogRead() en Arduino nos proporciona precisamente esa capacidad. Esta función se utiliza para leer el valor de un pin analógico y puede detectar niveles de voltaje que van desde 0 hasta 5 voltios. Es vital no exceder este rango de 5 voltios para evitar dañar el microcontrolador.
Arduino, siendo una plataforma de microcontrolador de código abierto, ha ganado una popularidad inmensa entre los entusiastas de la electrónica debido a su facilidad de uso y versatilidad. Uno de sus usos más notables es la capacidad de hacer mediciones analógicas. Esta característica es especialmente útil para leer señales de dispositivos que cambian su resistencia en función de algún factor externo, como la luz o la temperatura.
Para ilustrar cómo funciona esto, consideremos el ejemplo de la fotorresistencia, también conocida como LDR (Resistor Dependiente de la Luz). La LDR es un componente que varía su resistencia según la cantidad de luz que recibe. Cuando está oscuro, la resistencia puede ser muy alta, a menudo alrededor de 1 MΩ o incluso más. Pero cuando se expone a la luz, su resistencia disminuye significativamente. Esta propiedad es útil en una variedad de aplicaciones, desde la detección de luz ambiental hasta la construcción de seguidores solares.
El material principal utilizado en la fabricación de LDRs es el sulfuro de cadmio (CdS). Este material semiconductor es sensible a la luz, y por lo general, está encapsulado en un recubrimiento impermeable y transparente que protege el material y permite que la luz incida sobre él.
Para demostrar cómo se pueden obtener lecturas de una LDR utilizando Arduino, establecemos el siguiente circuito:
En este circuito, la LDR y una resistencia están conectadas en serie. La función analogRead() se utiliza para medir el voltaje entre ellos. A medida que cambia la intensidad de luz sobre la LDR, este voltaje varía, y al leerlo con Arduino, podemos determinar la cantidad de luz que incide sobre la fotorresistencia.
En los próximos segmentos, profundizaremos en cómo programar el Arduino para interpretar estas lecturas y convertirlas en información útil, como determinar si una habitación está oscura o iluminada.
Abrimos Arduino IDE y escribiremos el siguiente código:
1 2 3 4 5 6 7 8 9 |
void setup(){ Serial.begin(9600); } void loop(){ int m= analogRead(A0); Serial.println(m); delay(5000); } |
La función analogRead() toma el voltaje de aplicación y lo divide en 1024 partes que corresponden a los 10 bits que maneja por defecto.
Este código obtendrá una medición cada 5 segundos correspondientes a las fracciones del voltaje de aplicacion que hay en el punto de medición
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
876 892 898 888 869 869 888 898 216 319 525 697 896 894 879 870 869 871 876 882 899 894 890 897 897 898 896 890 881 888 |
Estos valores nos pueden ayudar a obtener el voltaje en el punto de medición mediante un divisor de voltaje
Donde:
- m: medicion obtenida
- Vtotal: votlaje de aplicación (5v en nuestro caso)
Podremos introducir este divisor dentro del codigo haciendo las siguientes modificaciones:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
int n=0; void setup(){ Serial.begin(9600); } void loop() { float m= analogRead(A0); float volt=m*5/1024; if(n==0){ Serial.println(" Medición en A0 Voltaje en A0"); Serial.print(m);Serial.print(" ");Serial.println(volt); n=n+1; } else{ Serial.print(m);Serial.print(" ");Serial.println(volt); } delay(5000); } |
Obtendremos la medida a la par del voltaje en ese punto
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Medición en A0 Voltaje en A0 899.00 4.39 903.00 4.41 888.00 4.34 881.00 4.30 872.00 4.26 775.00 3.78 630.00 3.08 531.00 2.59 372.00 1.82 327.00 1.60 63.00 0.31 886.00 4.33 |
Como se mencionó antes en este articulo la medida mostrada no corresponde al valor resistivo de la fotorresitencia. El valor de la misma puede ser obtenido de la siguiente manera:
Utilizando la equacion de divisor de voltaje para un circuito en serie:
Podremos despejar y obtener la siguiente expresión:
- R1: resitencia de 1k
- Vt: voltaje de aplicación (5v)
- VTP1: voltaje en el puntod e medición
- R2: fotoresistencia o LDR
Esta equación puede ser integrada al codigo desarrollado a manera de obtener mayores datos con los que trabajar. La integración al codigo se puede hacer de la siguiente manera.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
int n=0; void setup(){ Serial.begin(9600); } void loop() { float m= analogRead(A0); float volt=m*5/1024; float r=1000*volt/(5-volt); if(n==0){ Serial.println("Medicion en A0 Voltaje en A0 Valor LDR"); Serial.print(m);Serial.print(" ");Serial.print(volt); Serial.print(" ");Serial.println(r); n=n+1; } else{ Serial.print(m);Serial.print(" ");Serial.print(volt); Serial.print(" ");Serial.println(r); } delay(5000); } |
Con el código modificado obtendremos la medicion, el voltaje en el punto de medición y el valor de la resistividad del LDR:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
Medicion en A0 Voltaje en A0 Valor LDR 1023.00 5.00 1023000.00 1023.00 5.00 1023000.00 1023.00 5.00 1023000.00 1022.00 4.99 511000.00 877.00 4.28 5965.99 897.00 4.38 7062.99 874.00 4.27 5826.67 903.00 4.41 7462.81 873.00 4.26 5781.46 894.00 4.37 6876.92 879.00 4.29 6062.07 894.00 4.37 6876.92 874.00 4.27 5826.67 |
En resumen, la habilidad de Arduino para hacer lecturas analógicas, especialmente utilizando componentes como la fotorresistencia, abre un mundo de posibilidades para los entusiastas de la electrónica y profesionales por igual.
Estas capacidades permiten la creación de dispositivos inteligentes capaces de responder a su entorno. Ya sea que estés iniciando tu viaje en la electrónica o seas un veterano en el campo, siempre es fascinante ver cómo los fundamentos, como las lecturas analógicas, pueden utilizarse en innumerables aplicaciones innovadoras.
Esperamos que este post te haya proporcionado una comprensión clara y te inspire a experimentar y crear tus propios proyectos con Arduino.
Medicion en A0 Voltaje en A0 Valor LDR
1023.00 5.00 1023000.00
1023.00 5.00 1023000.00
1023.00 5.00 1023000.00
1022.00 4.99 511000.00
877.00 4.28 5965.99
897.00 4.38 7062.99
874.00 4.27 5826.67
903.00 4.41 7462.81
873.00 4.26 5781.46
894.00 4.37 6876.92
879.00 4.29 6062.07
894.00 4.37 6876.92
874.00 4.27 5826.67
hola cheque tu codigo y funciona muy bien y lo probe y laja perfecto…….yo no soy experto en arduino y quisiera un poco de ayuda….creo que es un poco facil pero no se como hacerlo …y es lo siguiente,digamos que al voltaje de 4.27 ya que este en monitor serial asignar un numero digamos 90…. como se le aria
No entiendo lo que quieres saber