▷ Practica 2 #PlcLab: Entradas Analogicas

 

Repositorio:

Materiales:

  • PLC-LAB
  • 1 Potenciómetros 1Kohm
  • R1, R2, R3, R4 - Resistencia 100Ohmios
  • D1, D2 ,D3, D4 - Diodo Led



Requisitos previos:

Entradas Analógicas:

En la practica pasada (▷ Practica 1 #PlcLab: Entradas y Salidas Digitales) pudimos observar como utilizar las entradas digitales, ahora veremos como utilizar las analógicas, sus características.

Una señal analógica tiene una magnitud que puede variar en función de tiempo, a diferencia de las digitales que solo puede tomar 0 y 1, esta tiene una cantidad finita de valores que puede tomar, en un rango determinado. La mayoría de sensores y aplicaciones utiliza este tipo de señal porque permite representan una mayor cantidad de información, por ejemplo la temperatura, humedad, cantidad de luz solar, etc. 

Eléctricamente hablando significa que nuestro dispositivo podrá detectar valores entre 0[V] y 3.3[V], para ello nuestro MCU(ESP32) posee un ADC. Este es un dispositivo capaz de convertir valores analógicos de voltaje en valores digitales de N bits que un microcontrolador puede leer. Según el tipo de ADC que se tenga esta cantidad de bits puede ser mayor o menor.

En nuestro caso el ADC es de 12bits, esto quiere decir que nuestro dispositivo clasificara el rango de 0[V] a 3.3[V] en valores de 0 a 4095, tal como se puede apreciar en la siguiente imagen.



Para nuestro modulo tenemos las siguientes entradas Analógicas: 



Código:


/*
Autor: Vidal Bazurto (avbazurt@espol.edu.ec)
GitHub: https://github.com/avbazurt/CURSO-PLC-LAB
Practica #2: Entradas Analogicas
*/
//Entrada
#define INPUT_ANALOG GPIO_NUM_36
//Salidas
#define LED_1 GPIO_NUM_23
#define LED_2 GPIO_NUM_22
#define LED_3 GPIO_NUM_21
#define LED_4 GPIO_NUM_19
//Constantes
bool medicion_adc;
void setup() {
/*
Definimos los pines para sus propositos
*/
//Entradas
//Para las entradas analogicas no se debe configurar
//Salidas
pinMode(LED_1, OUTPUT);
pinMode(LED_2, OUTPUT);
pinMode(LED_3, OUTPUT);
pinMode(LED_4, OUTPUT);
}
void loop() {
//Leemos el valor de nuestra entrada, analogRead nos devolvera un valor entre 0-4095
medicion_adc = analogRead(INPUT_ANALOG);
//Segun la medicion encendemos los led
if (medicion_adc > 4000) {
digitalWrite(LED_1, HIGH);
digitalWrite(LED_2, HIGH);
digitalWrite(LED_3, HIGH);
digitalWrite(LED_4, HIGH);
}
else if (medicion_adc > 3000) {
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, HIGH);
digitalWrite(LED_3, HIGH);
digitalWrite(LED_4, HIGH);
}
else if (medicion_adc > 2000) {
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, HIGH);
digitalWrite(LED_4, HIGH);
}
else if (medicion_adc > 1000) {
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, HIGH);
}
else {
digitalWrite(LED_1, LOW);
digitalWrite(LED_2, LOW);
digitalWrite(LED_3, LOW);
digitalWrite(LED_4, LOW);
}
//Un pequeño delay
delay(500);
}
view raw PLC-LAB-P2.ino hosted with ❤ by GitHub

Comments

Popular posts from this blog

▷ Practica 7 #PlcLab: WebServer PZEM-014/016 AC Energy Meter

▷ Practica 8 #PlcLab: WebServer PZEM-014/016 AC Energy Meter

▷ Practica 10 #PlcLab: MQTT PZEM-014/016 AC Energy Meter