Smoothing en Arduino.
Allanamiento.
Este boceto se lee repetidamente desde una entrada analógica,
calculando un promedio de ejecución e imprimiéndolo en la computadora. Este
ejemplo es útil para suavizar los valores de sensores nerviosos o erráticos, y
también demuestra el uso de matrices para almacenar datos.
Hardware.
- Plaça Arduino.
- Potenciómetro de 10K ohmios.
Circuito.
- Conecte un pin de un potenciómetro a 5V, el pin central al pin analógico 0 y el último pin a tierra.
Código.
El siguiente código almacena secuencialmente 10 lecturas de su sensor analógico en una matriz, una por una. Con cada nuevo valor, la suma de todos los números se genera y se divide, produciendo un valor promedio que luego se utiliza para suavizar los datos periféricos. Debido a que este promedio tiene lugar cada vez que se agrega un nuevo valor a la matriz (en lugar de esperar 10 valores nuevos, por ejemplo), no hay tiempo de retraso en el cálculo de este promedio de ejecución.
Alterar el tamaño de la matriz utilizada, cambiando a un valor mayor, suavizará aún más los datos recopilados.numReadings
/*
Allanamiento
Lee repetidamente desde una entrada analógica, calculando un promedio de ejecución y
imprimiéndolo en el ordenador. Mantiene diez lecturas en una matriz y continuamente
Los Promedia.
El circuito:
- Sensor analógico (potenciómetro servirá) conectado a la entrada analógica 0
creado 22 abr 2007
por David A. Mellis <dam@mellis.org>
modificado 9 abr 2012
por Tom Igoe
Este código de ejemplo es de dominio público.
https://www.arduino.cc/en/Tutorial/BuiltInExamples/Smoothing
*/
Defina el número de muestras de las que desea realizar un seguimiento. Cuanto mayor sea el número, más
Más se suavizarán las lecturas, pero más lenta será la salida a la que responderá
la entrada. Usar una constante en lugar de una variable normal nos permite usar esto
para determinar el tamaño de la matriz de lecturas.
const int numReadings = 10;
int readings[numReadings]; Las lecturas de la entrada analógica
int readIndex = 0; El índice de la lectura actual
int total = 0; El total acumulado
int promedio = 0; el promedio
int inputPin = A0;
void setup() {
Inicializar la comunicación serie con la computadora:
Serial.begin(9600);
Inicialice todas las lecturas a 0:
for (int thisReading = 0; thisReading < numReadings; thisReading++) {
lecturas[thisReading] = 0;
}
}
void loop() {
Resta la última lectura:
total = total - lecturas[readIndex];
Lea desde el sensor:
readings[readIndex] = analogRead(inputPin);
Agregue la lectura al total:
total = total + lecturas[readIndex];
Avance a la siguiente posición en el arreglo de discos:
readIndex = readIndex + 1;
Si estamos al final de la matriz...
if (readIndex >= numReadings) {
// ... Envolver al principio:
readIndex = 0;
}
Calcule el promedio:
promedio = total / numLecturas;
enviarlo al ordenador como dígitos ASCII
Serial.println(promedio);
retraso(1); Retraso entre lecturas para mayor estabilidad
}
Proteus es un sistema completo de diseño electrónico que combina un avanzado programa de
captura de esquemas, un sistema de simulación mixto (analógico y digital) basado en Spice, y
un programa para disposición de componentes en placas de circuito impreso y auto-ruteado.
Se trata de un software comercial fabricado por Labcenter Electronics [1], caracterizado por
su potencia y facilidad de uso.
La razón principal que nos condujo a experimentar con Proteus fue su capacidad para
simular circuitos basados en microcontroladores, con toda la electrónica que rodea a estos
diseños (chips, LEDs, teclados, displays LCD, terminales RS-232, etc.), y hacerlo en tiempo
real, de forma interactiva, y a partir del fichero ejecutable creado por cualquier ensamblador o
compilador. Dicho lo anterior, ya no resulta sorprendente que Proteus también pueda simular
diseños que incorporen PLDs y/o memorias ROM o RAM, y que para ello, utilice como
entrada los ficheros JEDEC, BIN o HEX generados por cualquier herramienta software.






.jpeg)
.jpeg)


Comentarios
Publicar un comentario