Mostrando las entradas con la etiqueta ARDUINO. Mostrar todas las entradas
Mostrando las entradas con la etiqueta ARDUINO. Mostrar todas las entradas

Medicion de Filtros con Arduino



En este post, vamos a realizar un programa muy simple que nos va a permitir medir un filtro y visualizarlo con el Serial Plotter.
El principio de funcionamiento es bastante sencillo, 
Debemos realizar un Sweep de frecuencia, esto se hace generando una salida de frecuencia, básicamente un oscilador, que va variando la frecuencia desde un valor bajo a un valor alto, por ejemplo comenzamos con 1kHz y vamos subiendo la frecuencia de forma continua hasta llegar a los 100kHz, esto es a modo ejemplo podrían ser otros valores pero quiero demostrar solamente que lo que necesitamos es variar frecuencia de forma continua y ascendente.


Aquí se puede ver mejor la idea, donde al principio tenemos la frecuencia mas baja y al final (a la derecha) la frecuencia mas alta, pero es un aumento de frecuencia de forma continua.

Una vez que logramos generar este Sweep o Tracking de Frecuencia, vamos a inyectar esto en el dispositivo bajo testeo (DUT) que queremos ensayar o medir, por ejemplo un filtro pasa bajos (LPF).



Donde dice Vin vamos a inyectar este Sweep de frecuencias, y donde dice Vout vamos a analizar el comportamiento.



Como podemos ver en la imagen del diagrama de respuesta en frecuencia del filtro, tenemos la mayor magnitud en frecuencias bajas, y a medida que aumenta la frecuencia comienza a bajar.
Si ponemos un voltimetro en la salida Vout, tendríamos que ver esta curva, primero con un valor de tensión máximo y luego a medida que la frecuencia aumenta podremos ver como desciende la tensión.
En nuestro circuito utilizaremos un canal analógico para medir la tensión Vout.
Entonces, con un canal digital generamos el Sweep de frecuencias y con un canal analógico leemos el valor de salida del filtro.



El programa: 

unsigned long previousMicros = 0;
volatile int interval = 500;
int i=500, j=0;
void setup(){
pinMode(7, OUTPUT);
Serial.begin(115200);
}
void loop(){
while(i!=0){
for(j=0;j<10;j++){
digitalWrite(7, !digitalRead(7));
delayMicroseconds(interval);
}
interval=i;
Serial.println(analogRead(A0));
i--;
}
}

En este programa utilizamos el Pin 7 como salida de Sweep, y el pin A0 como entrada del ADC.



Mi título contenido de la página

ARDUINO

Arduino Original vs Clon

Introducción a Arduino
Arduino IDE
Simulación con Proteus
Fritzing
El Atmega328p
Que es un Bootloader - Arduino como Programador
Placas de desarrollo Arduino
Shields y Modulos
Diseñar un Shield
Lenguaje Wiring
Estructura de un programa o Sketch
Variables y Constantes
Llamado de rutinas o funciones
Demoras
Contadores
Funciones Matemáticas
Condicionales If, Else y SwitchCase
Iteraciones While, Do y For
Entradas y Salidas Digitales
Entradas y Salidas Analógicas
Salidas Digitales (LEDs)
Entradas Digitales (Pulsadores)
Teclado Numérico
Salida Analógica (PWM con Filtro)
Entrada Analógica (Potenciómetro)
Reacondicionar una entrada analógica
Control con salida digital y Transistor
Control con salida PWM y Transistor
Inversión de giro con puente H L293
Control de un motor Paso a Paso
Lectura de Luz con LDR
Lectura de Luz con Fototransistor o Fotodiodo
Medición de Temperatura con PTC o NTC
Medición de Temperatura con LM35
Medición de Temperatura y Humedad con DHT22 o DHT11
Sensor de Distancia con Ultrasonidos SR04
Sensor de Distancia con Infrarrojos GP2Y0A21
Sensor de Movimiento PIR
Sensor de Contacto Célula de Carga
Sensor de Contacto Galga Extensiométrica
Sensor de Sonido con Micrófono Electret
Generación de tonos
Salida a parlante con transistor
Buzzer Piezoelectrico
Tecnología LCD, LED y OLED
Escritura en una pantalla LCD Alfanumérica
Dibujos en pantallas GLCD
Control de un Display de 7 segmentos
Multiplexado de displays de 7 segmentos
Matrices de Punto
Memorias 24C256 por I2C
Memorias SD por SPI
Enlace UART Serie
Convertidores USB/UART
Enlace Bluetooth/UART
Enlace UHF
Interfaz RS232
Interfaz RS485
Comunicacion WiFi
Comunicación Ethernet