Cómo asegurar la lectura de una Librería de entrada digital/analógica herramientas 40 filtro digital

16 de enero de 2019 por
Cómo asegurar la lectura de una Librería de entrada digital/analógica herramientas 40 filtro digital
Alejandro Jabalquinto

Introducción

This post, it will be shown how to ensure the reading of a digital input using our library Filter. This library has been developed by Industrial Shields.

Requisitos

Ethernet o 20 I/Os PLC:      Ethernet PLC     20 I/Os PLC    

 Placas de Industrial Shields:    Placas de Industrial Shields:   

 Filter IS library:                 Filter Github library

Descripción

En primer lugar, es importante conocer el propósito de nuestro filtro digital. Básicamente, filtra los rebotes cuando una entrada digital cambia de HIGH a LOW o viceversa. Cuando el estado del pin está cambiando, durante este cambio de HIGH a LOW por ejemplo la señal hace unos debounces, por lo que se puede leer un valor erróneo que puede provocar errores ya que se está leyendo un dato que no es correcto. La implementación de esta Librería se basa en un simple temporizador que ignora todas las señales dentro de un periodo de tiempo una vez que ha leído una entrada diferente a la anterior. Si ponemos un periodo de tiempo de 200ms y leemos un estado LOW, habiendo antes un estado HIGH, el filtro ignora durante 200ms la señal de entrada, después de estos 200ms vuelve a leer y si sigue siendo un estado LOW, el estado de la entrada se cambia a LOW.  Es exactamente la misma idea para cuando se cambia de LOW a HIGH.


Ejemplo

Por último, se mostrará un ejemplo que filtra la entrada digital I0.8 (Uso de un filtro digital):

#include <Filter.h>

// Create a filter
// Filtering time: 200ms
DigitalFilter<500> filter;

void setup(){ // Init Serial port Serial.begin(9600L); } void loop(){ // Read pin value int value = digitalRead(I0_8); // Filter it int filtered = filter.update(value); // Print the filtered value Serial.println(filtered); }


 Este otro ejemplo de la Librería Filter.h muestra cómo filtrar una señal de entrada analógica ( I0_10 en este ejemplo). Como puede ver, debe definir el número de filtros y también el periodo de muestreo (en ms):


#include <Filter.h>

// Create a filter
// Number of samples: 10
// Sample period: 5ms (setting it to 0, samples are taken as fast as possible)
AnalogFilter<10, 5> filter;

////////////////////////////////////////////////////////////////////////////////////////////////////
void setup() {
  // Init Serial port
  Serial.begin(9600L);
 }

////////////////////////////////////////////////////////////////////////////////////////////////////
void loop() {
  // Read pin value
  int value = analogRead(I0_10);

  // Filter it
  int filtered = filter.update(value);

  // Print the filtered value
  Serial.println(filtered);
}

Buscar en nuestro blog

Cómo asegurar la lectura de una Librería de entrada digital/analógica herramientas 40 filtro digital
Alejandro Jabalquinto 16 de enero de 2019
Compartir

¿Estás buscando tu Controlador Lógico Programable ideal?

Echa un vistazo a esta comparativa de producto de varios controladores industriales basados en Arduino.

Comparamos entradas, salidas, comunicaciones y otras especificaciones con las de los equipos de otras marcas destacadas.


Industrial PLC comparison >>>