Informe V2.0 PDF
Informe V2.0 PDF
Informe V2.0 PDF
Dpto. ELECTRÓNICA
UNIVERSIDAD TECNOLÓGICA NACIONAL
FACULTAD REGIONAL MENDOZA
TITULO
Plantilla de Documentos de Trabajo Final
TITLE
EDICIÓN
A B
ISSUE
FECHA
20-Oct-15 10-Nov-15
DATE
VERIFICADO POR
CHECKED BY
G. de CALIDAD
PRODUCT ASSURANCE
AUTORIZADO POR
AUTHORISED BY
La Universidad Tecnológica Nacional – Facultad Regional Mendoza tiene los derechos sobre este
documento, el cual es confidencial y no será usado para ningún otro propósito, salvo para el que fue
suministrado y no será reproducido, copiado o transmitido en todo o en parte sin el permiso de su dueño.
Cualquier otra persona diferente de la persona autorizada, que consiga el documento por haberlo
encontrado o por otra causa, deberá enviarlo junto con su nombre y dirección en sobre cerrado a:
The National Technical University at Mendoza owns the copyright of this document which is supplied in
confidence and which shall not be used for any purpose other than that for which it is supplied and shall
not in whole or in part reproduced, copied or communicated to any person without permission from the
owner.
Any person other than the authorized holder obtaining possession of this document by finding or otherwise,
should send it, together with his name and address, in a sealed envelope to:
Dpto de Electrónica
Universidad Tecnológica Nacional – Facultad Regional Mendoza
Rodríguez 273 (5500)
Mendoza ARGENTINA
TECNICAS DIGITALES II Proyecto final: TD 2 y Medidas Electrónicas 1
Dpto. Electrónica
FRM UTN Pag: iii Ulloa Gabriel – Quiroga Sykes Emiliano
Entrega de Proyecto
PD (Project Delivery)
Fecha
Autores
Presentación de Documento de Proyecto (este documento versión
final)
Respuesta y corrección de los RFA del FPR
Documentación Presentada
Nombre Nombre
Profesores
Firma Firma
TECNICAS DIGITALES II Proyecto final: TD 2 y Medidas Electrónicas 1
Dpto. Electrónica
FRM UTN Pag: 1 Ulloa Gabriel – Quiroga Sykes Emiliano
INDICE
1. INTRODUCCIÓN ................................................................................................................. 2
1.1. OBJETO ........................................................................................................................ 2
1.2. ALCANCE ..................................................................................................................... 2
1.3. ABREVIATURAS ............................................................ Error! Bookmark not defined.
1.4. DEFINICIONES .............................................................. Error! Bookmark not defined.
2. DOCUMENTOS APLICABLES ............................................. Error! Bookmark not defined.
2.1. DOCUMENTOS MANDATORIOS .................................. Error! Bookmark not defined.
2.2. DOCUMENTOS DE REFERENCIA ................................ Error! Bookmark not defined.
3. DESARROLLO .................................................................................................................... 3
3.1. High level design: ............................................................................................................. 3
3.2. Program/hardware design: ................................................................................................ 9
3.3. Results of the design: ..................................................................................................... 15
4. CONCLUSIONES .............................................................................................................. 20
5. ANEXOS ............................................................................... Error! Bookmark not defined.
TECNICAS DIGITALES II Proyecto final: TD 2 y Medidas Electrónicas 1
Dpto. Electrónica
FRM UTN Pag: 2 Ulloa Gabriel – Quiroga Sykes Emiliano
1. INTRODUCCIÓN
1.1. OBJETO
El objetivo principal del proyecto es realizar un instrumento de medición capaz de
diagnosticar el estado de una línea de tensión domiciliaria (220v) monofásica (extensible a
trifásico en un futuro), es decir, deberá ser capaz de proveer mediciones de valores
instantáneos y eficaces tanto de tensión como de corriente así como también información sobre
el factor de potencia (coseno fi, armónicos). También contará con la capacidad de generar
señales de advertencia en caso de funcionamiento atípico de la línea, ya sean sobre tensiones,
sub tensiones, corrientes excesivas, etc.
1.2. ALCANCE
El proyecto se realizará íntegramente sobre un microprocesador ARM CORTEX M4
(Discovery board STM32F407VG) el cual cuenta con los periféricos necesarios y la capacidad
de procesamiento suficiente. Se eligió este procesador debido a su soporte para funciones de
DSP, entre las que se encuentran la FFT para la detección y medición de armónicos, así como
también posee 3 conversores A/D cuya frecuencia máxima de muestreo supera con creces la
necesaria para analizar una señal senoidal de 50Hz, como es la tensión alterna domiciliaria.
La programación se realizará en lenguaje C y se utilizarán, principalmente, las librerías
CMSIS y HAL.
Además del hardware mencionado anteriormente, será necesario para la realización del
proyecto el uso de:
• Transformadores de tensión y corriente para adaptar los niveles de línea a unos más
adecuado para realizar las mediciones.
• Divisores resistivos de bajo error.
• Circuitos activos (Op. Amp) necesarios para realizar la adaptación de los niveles de
tensión y corriente negativos a valores positivos. Esto se debe a que los conversores
A/D de la placa de trabajo, solo funcionan con tensiones positivas. Es decir, su
tensión de referencia mínima es 0v, (siendo la máxima 3,3v), debido a esto, no se
puede tener excursión negativa en las magnitudes a medir.
• Pantalla de cristal líquido 20x4.
• Pulsadores y leds de indicación ya integrados en la placa de trabajo (Discovery
STM32F407VG).
Durante la realización del proyecto, seguramente esta lista de hará más extensa.
TECNICAS DIGITALES II Proyecto final: TD 2 y Medidas Electrónicas 1
Dpto. Electrónica
FRM UTN Pag: 3 Ulloa Gabriel – Quiroga Sykes Emiliano
2. DESARROLLO
20mseg _____360º
Xmseg _____ 1º 1º = 55,55µseg
Ahora bien, con una frecuencia de muestreo de 18KHz obtenemos una cantidad de
muestras por ciclo (390 muestras) que no es apropiada para la aplicación de la
transformada rápida de Fourier, necesaria para analizar la señal. La razón de esto se
expondrá más adelante.
Para corregir lo anteriormente dicho, se fija un número de 512 muestras por ciclo, y a
partir de allí se calcula la frecuencia de muestreo:
512
𝑓𝑠′ = = 25,6𝐾𝐻𝑧
20𝑚𝑠𝑒𝑔
1
𝑇𝑠′ = = 39,06µ𝑠𝑒𝑔
25,6𝐾ℎ𝑧
Esto significa que para obtener 512 muestras por cada ciclo de la señal (20mseg) se
debe muestrear a una frecuencia de 25,6KHz. Para lograr esta frecuencia de muestreo
se deberá configurar el ADC.
Estando el periférico ADC alimentado del bus PCLK2 el cual está seteado en 6.25MHz,
se configura el “clock prescaler” del ADC en PCLK/4, esto nos proporciona una
frecuencia de trabajo del ADC de 3,125Mhz.
1
Siendo el período: 𝑇 = 3,125𝑀ℎ𝑧 = 0,32µ𝑠𝑒𝑔
Para obtener una muestra cada 𝑇𝑠′ = 39,06µ𝑠𝑒𝑔, se deberá muestrear cada 122 ciclos
del ADC.
TECNICAS DIGITALES II Proyecto final: TD 2 y Medidas Electrónicas 1
Dpto. Electrónica
FRM UTN Pag: 4 Ulloa Gabriel – Quiroga Sykes Emiliano
Por ende, para poder medir hasta la armónica número 25, deberíamos muestrear
mínimo a 3KHz.
La impedancia máxima de entrada al ADC para garantizar un error menor a ¼ LSB está
dada por:
10 − 0,5
𝑅𝐴𝐼𝑁 = − 6𝐾Ω = 3,5KΩ
30𝑀ℎ𝑧 ∗ 4𝑝𝐹 ∗ ln(210+2 )
Cálculo de la FFT
Para el cálculo de la FFT se utilizarán 512 o bien 1024 muestras (N=512 o N=1024),
esto se decidirá de acuerdo a los resultados obtenidos en la práctica. En el caso de
utilizar 512 muestras estaríamos analizando poco más de un período completo
(20,48mseg). Si utilizáramos 1024 sería poco más de dos períodos.
Lo cual resulta perfecto siendo que lo que nos interesa principalmente son los
armónicos impares.
Fuentes:
http://www.ni.com/white-paper/4844/es/
https://www.gaussianwaves.com/2015/11/interpreting-fft-results-complex-dft-frequency-bins-and-fftshift/
Donde:
• n: cantidad de muestras
• xi: valor en volts de la señal en el instante “i”
Gracias a esto, se puede calcular sin errores el desfasaje entre la señal de tensión y
corriente.
El algoritmo lo que hace es buscar el primer cruce por cero de pendiente positiva de la
onda de tensión (roja), esto lo logra mediante la comparación de valores de la onda en
el instante [i-1] y [i+1]. Entonces si:
• [i-1] > [i+1] será pendiente negativa (la onda viene en decrecimiento)
• [i-1] < [i+1] será pendiente positiva (la onda viene en crecimiento)
Una vez detectado este cero, supongamos, en la posición “j”, se procede a buscar el
cero más próximo a la posición “j” pero en la onda de corriente (azul). Es decir, se
comienza a recorrer la onda de corriente desde la posición “j” en forma positiva, hasta el
próximo cruce por cero. En este caso se busca indistintamente un cero de pendiente
positiva como negativa.
El grado de desfasaje se calcula haciendo la resta de “j” menos “i”, es decir, se obtiene
la diferencia (en cantidad de muestras) entre el cero en corriente y el cero en tensión.
𝐷𝑒𝑠𝑓𝑎𝑠𝑎𝑗𝑒𝑒𝑛 𝑚𝑢𝑒𝑠𝑡𝑟𝑎𝑠 = 𝑗 − 𝑖
20mseg _____360º
Factor de cresta
Una vez calculado el valor RMS de la onda mediante la fórmula previamente dicha, se
busca el valor máximo de la onda (Vpico) en el mismo período de cálculo del valor RMS y
se procede a realizar el cociente para obtener el factor de cresta.
En una señal de tensión no deformada, CF deberá valor 1,414. Esto indica que el valor
de pico es 1,414 veces mayor al valor RMS. Si la señal se encontrara deformada, CF
sería mayor a este valor.
Fuente: http://www.interplus-industry.fr/index.php?option=com_content&view=article&id=52&Itemid=173&lang=en
Si bien el módulo entrega una señal alterna montada sobre un offset de continua, sus
niveles no son los apropiados para realizar la conversión en el ADC del Cortex M4. Es
por esto que la señal se debe tratar.
Esto entrega a la salida (ADC1_V) una tensión alterna senoidal (coincidente con la
señal de voltaje de la red) con una excursión de 1,4Vp montada sobre un offset de
continua de 1,5v.
Siendo:
Este sensor consiste en un núcleo de ferrite partido, el mismo produce a su salida una
corriente alterna (idéntica en forma a la señal medida) 3000 veces más pequeña.
Si bien el sensor está diseñado para medir corrientes de hasta 150Amperes, en esta
primera etapa del proyecto, se calibrará para realizar una medición máxima de
65Amperes.
La señal de corriente alterna de salida debe ser transformada a una señal de tensión
mediante una resistencia y luego adaptada para ser inyectada a la entrada del ADC. La
adaptación consiste en sumar un nivel de offset a esta señal alterna de forma que a la
entrada del conversor analógico digital tengamos una señal alterna de excursión
puramente positiva y de valor pico no mayor a 3v.
El circuito recibe a su entrada una señal de tensión senoidal de 3Vpp con excursión
tanto positiva como negativa (centrada en 0v).
A la salida entrega esta misma señal invertida y montada sobre un nivel de continua de
1.5v:
Si el sensor está midiendo una corriente de 1Amp a la salida entregará una corriente de
333,33µAmp.
El fondo de escala estará representado por una corriente de 6,66mA, lo que se deberá
traducir en una tensión alterna cuya excursión pico a pico sea 2.7v.
2,7𝑣
𝑅𝑠𝑒𝑛𝑠𝑜𝑟𝑎 = = 120Ω
22.5𝑚𝐴
La parte más sensible del circuito y la que mayor error introduce en las mediciones tanto
de tensión como de corriente, es el hecho de que todas las mediciones que se realizan
se basan en que el nivel de continua sobre el cual se encuentran montadas las señales
no varíe. Esto no es así debido a que la fuente sufre pequeñas variaciones de tensión
prácticamente imperceptibles, si bien a la hora de realizar el muestreo a una frecuencia
de 25KHz, esto no pasa tan desapercibido.
Se trató de minimizar el efecto de estas fluctuaciones sobre la medición haciendo que la
fuente de tensión de estos voltajes de referencia sea la misma que la referencia de los
conversores A/D. Es decir, las fluctuaciones que sufren las referencias de los
operacionales también las sufren los conversores y por ende su efecto en la medición
se ve disminuida.
Interfaz de usuario
Para la visualización de las mediciones se utiliza un display de 20x4 del siguiente tipo:
El usuario podrá navegar por los distintos menús de la interfaz mediante un único
pulsador.
Las posibles pantallas que verá el usuario y la información contenida en cada una de
ellas es la siguiente:
• VMAX
• IMAX
3. Información de potencia
• Potencia activa
• Potencia reactiva
TECNICAS DIGITALES II Proyecto final: TD 2 y Medidas Electrónicas 1
Dpto. Electrónica
FRM UTN Pag: 14 Ulloa Gabriel – Quiroga Sykes Emiliano
• Potencia aparente
• Coseno fi
Diseño de PCB
Como se observa, el diseño se realizó con la idea de hacer las veces de “shield” para la
placa Discovery STM32F407VG. Para esto el diseño se debió realizar en función de las
dimensiones de la placa
TECNICAS DIGITALES II Proyecto final: TD 2 y Medidas Electrónicas 1
Dpto. Electrónica
FRM UTN Pag: 15 Ulloa Gabriel – Quiroga Sykes Emiliano
Debido a que las señales (entiéndase tensión y corriente) antes de ingresar al conversor
analógico~digital debieron ser tratadas, no se puede disponer de una “constante
matemática” la cual nos indique la relación exacta entre las variables a medir y las
señales de entrada a los conversores. Esto se debe a que la ganancia de los
amplificador no es exactamente unitaria, así como a que el nivel sobre el cual se
montan las señales finales (offset) depende de divisores resistivos los cuales deben ser
ajustados manualmente.
Vppred = √2 ∗ 𝐿𝑒𝑐𝑡𝑢𝑟𝑎 ∗ 2
Cabe destacar que estos valores máximos son prácticos y no están definidos por
limitaciones de los sensores ni del hardware. El sensor de corriente está
diseñado para realizar una medición máxima de 150Amp rms en tanto que el
sensor de tensión el máximo valor capaz de medir son 1000v rms.
El aumentar el rango de medición significaría tener que aumentar la resolución
de los conversores AD para no perderla en las mediciones. Esto no es una
limitación para la placa, simplemente al inicio del proyecto se definió una
resolución a utilizar y unos valor máximos a medir para evitar la complejidad.
2,7𝑉𝑝𝑝
= 0,04𝑣 = 40𝑚𝑉
67,5𝐴𝑚𝑝
Dado que este valor se refiere a valores pico a pico, la resolución en valores
RMS será:
71,75𝑚𝐴
= 25,36𝑚𝐴 𝑅𝑀𝑆
2 ∗ √2
0,72𝑉𝑝𝑝
= 0,25𝑉𝑟𝑚𝑠
2 ∗ √2
3. CONCLUSIONES
El diseño en general cumplió con las expectativas, si bien hay muchas cosas que se
pueden y se van a mejorar. Debido a falta de tiempo no se pudo ampliar la funcionalidad,
así como la exactitud del mismo.
Durante el desarrollo del proyecto fueron surgiendo problemas que fueron superados en su
mayoría. Sin embargo, uno de los últimos problemas que surgieron fue el de la necesidad
de aumentar notablemente la frecuencia de muestreo debido a la necesidad de tener mayor
resolución en el tiempo y así poder calcular desfasajes entre ondas de tensión y corriente
con un error menor o igual a 1º. Este aumento de la frecuencia de muestreo (de 5KHz a
25KHz) introdujo un nuevo problema y fue el de la necesidad de tener que filtrar la señal de
entrada para evitar ruido de alta frecuencia. Debido a que esto se presentó una vez ya
armada la PCB no se pudo disponer de un filtro adecuado a tiempo.
El hecho de que el cálculo de distorsión armónica total (THDf) sea mayor a lo esperado en
algunos casos se le atribuye a esto y al hecho de que la onda sobre la cual se aplica la FFT
no es exactamente un período por lo que puede tener pequeñas discontinuidades en sus
extremos. Estas discontinuidades provocan la presencia de armónicos que en realidad no
existen en altas frecuencias, lo que provoca un cálculo erróneo de la THDf.
Otro de los mayores problemas que se presentaron fue durante la etapa inicial del proyecto,
durante la etapa de investigación principalmente. La documentación sobre el uso del
conversor AD en el modo utilizado aquí (Dual simultaneous mode) se encuentra poco
documentado y con pocos ejemplos sobre su utilización. Es por esto que esta primera
etapa fue especialmente difícil de zanjar. Una vez superada el desarrollo del resto del
proyecto fue más fluido.
Durante y para el desarrollo del proyecto fue necesario consultar cientos de fuentes de
información distintas: foros, datasheets, documentación, ejemplos de código, etc. En el
anexo IV se trata de adjuntar cada una de dichas fuentes de información, si bien muchas no
fueron registradas en su momento. Cabe destacar que si no fuera por el dominio del idioma
inglés este proyecto hubiera sido imposible de realizar de la forma en que se realizó, ya que
la documentación y la gran mayoría de los foros donde se puede encontrar información útil
sobre la placa de desarrollo utilizada (Discovery Board STM32F407VG) se encuentran
exclusivamente en inglés.
En el software no se utilizó ninguna porción de código ajeno más allá de las librerías y el
código de configuración generado mediante el software proveído por ST Microelectronics:
STM32 Cube MX.
Todos los derechos reservados a ARM Limited por las librerías standard utilizadas, así
como a STMicroelectronics por sus librerías HAL.
TECNICAS DIGITALES II Proyecto final: TD 2 y Medidas Electrónicas 1
Dpto. Electrónica
FRM UTN Pag: 21 Ulloa Gabriel – Quiroga Sykes Emiliano
Especificaciones
• Alimentación
• Valores máximos
Valor máximo de tensión RMS 240Vrms
• Error
Error en lectura de tensión. Todo el rango Valor leído ±1v
Modo de uso
• Conexión de sensores:
La ficha macho correspondiente al sensor de tensión deberá ser enchufado en la línea a evaluar.
El sensor de corriente tipo transformador de núcleo partido, deberá ser colocado en uno solo de
los dos cables que alimentan a la carga a analizar. No es necesario abrir el circuito. Se deberá
tener la precaución de que el sensor “abrace” a uno solo de los conectores y no a los dos, de lo
contrario la lectura de corriente será nula.
La navegación por los distintos menús disponibles es sumamente sencilla debido a que el
instrumento sólo posee un botón.
Una vez energizado el aparato, aparecerá la pantalla de bienvenida (inicialización) luego de
2,5segundos se mostrará la pantalla principal donde se podrán visualizar las mediciones de
tensión y corriente de estar conectados los sensores.
La disposición de los menús es la siguiente:
• Menu 1:
▪ Valor RMS de tensión
▪ Valor RMS de corriente
• Menu 2:
▪ Valor máximo de tensión
▪ Valor máximo de corriente
▪ Factor de cresta (CF)
• Menu 3:
▪ Potencia aparente
▪ Potencia reactiva
▪ Potencia activa
▪ Factor de potencia Cos(Φ)
• Menu 4:
▪ Distorsión armónica total THDf en tensión
▪ Factor de cresta (CF)
Para avanzar por los menús, sólo se deberá presionar el botón rojo una sola vez y aguardar a que
cambie la pantalla.
TECNICAS DIGITALES II Proyecto final: TD 2 y Medidas Electrónicas 1
Dpto. Electrónica
FRM UTN Pag: 23 Ulloa Gabriel – Quiroga Sykes Emiliano
PARTE COSTO
Placa de desarrollo Discovery STM32F407VG $1000
Gabinete de proyecto 15x10 [cm] $140
Sensor de corriente núcleo partido 150Amp $300
Sensor de tensión 1000v $250
Amplificador operacional LM324A $40
Tira de headers 2x25 por dos unidades $80
Display 20x4 $200
Componentes varios $100
PCB con mascara de componentes y anti-soldante $175
TOTAL $2285
Cabe aclarar que los costos se pueden reducir, como sería en el caso de la placa de desarrollo. No es
estrictamente necesario hacer uso de dicha placa la cual cuenta con gran cantidad de periféricos
(amplificadores AB, micrófono, giróscopo, acelerómetro, etc).
En esta clase de proyectos los sensores son uno de los mayores costos. El sensor de corriente aquí
utilizado se consiguió a muy buen precio, siendo los precios de sensores similares superiores a $400
TECNICAS DIGITALES II Proyecto final: TD 2 y Medidas Electrónicas 1
Dpto. Electrónica
FRM UTN Pag: 24 Ulloa Gabriel – Quiroga Sykes Emiliano
Documentos:
STM32F407VG Datasheet
LM324N Datasheet
ADC modes and application - AN4195
STM32's ADC modes and applications - AN3116
DSP on STMF429 - AN4841
How to get the best ADC accuracy in STM32 - AN2834
Understanding and minimising ADC conversion errors - AN1636
Watt-hour meter based on the STM32F101 - AN3322
Getting started discovery STMF407VG
HAL & LL - User Manual
Keil_Debugging
Calidad de energía: Medición de armónicas de tensión en una instalación urbana. Editorial de la Universidad
Tecnológica Nacional. Diego M. Ferreyra y Alejandro D. Gudiño
Single supply OP amp design techniques – Texas Instruments
ZMPT101B - Mejorando la medición
ANEXO A LA RESOLUCIÓN ENRE Nº 184/2000
TECNICAS DIGITALES II Proyecto final: TD 2 y Medidas Electrónicas 1
Dpto. Electrónica
FRM UTN Pag: 27 Ulloa Gabriel – Quiroga Sykes Emiliano
/////////////////////
/// Muestreo ADC ///
/////////////////////
uint32_t ADC_Buffer[512]; //Buffer ADC valores finales
float32_t ADC_Buffer_I[512]; //Buffer valores de corriente finales
float32_t ADC_Buffer_V[512]; //Buffer valores de tensiinales
float32_t ADC_Buffer_I_scaled[512]; //Buffer valores de corriente finales - ENTRADA AL ADC
float32_t ADC_Buffer_V_scaled[512]; //Buffer valores de tensiinales
float32_t ADC_Buffer_I_scaled_S[512]; //Buffer valores de corriente finales - ANTES DEL SENSOR
float32_t ADC_Buffer_V_scaled_S[512]; //Buffer valores de tensiinales
float32_t Vin_ADC[512]; //Niveles de tensi corriente en la entrada del ADC
para debugear.
float32_t Iin_ADC[512];
float32_t Vrms_acumulado[20];
float32_t Vrms_acumulado_prom=0;
float32_t Irms_acumulado[20];
float32_t Irms_acumulado_prom=0;
float32_t scale_V_ADC = 0.003223; //Esto es 3.3/1024 (el 3.3 deber�ser din᭩co para mayor precisi
float32_t scale_I_ADC = 0;
/////////////////////
/////////////////////
///Valores finales///
/////////////////////
float32_t V_rms; //Valor rms de la tensifloat32_t I_rms;
//Valor rms de la corriente
float32_t V_max; //Maximos de tensi corriente
float32_t I_max;
float32_t V_min; //Mmos de tension y corriente
float32_t I_min;
uint32_t index; //No se usa pero es necesario para ciertas funciones
//TEMPORALES//
float32_t POT_s;
float32_t POT_q;
float32_t POT_p;
float32_t COSFI;
float32_t SENFI;
float32_t Desf_Grados;
float32_t THDf;
float32_t CF1=0;
float32_t f=0;
int acumulado=0;
/////////////////////
/////////////////////
/// Calibraci///
/////////////////////
uint32_t Offset_Calibration; //Variable para calibrar el offset
/////////////////////
/////////////////////
///FFT - Armos///
/////////////////////
float32_t RFFT_V_Buffer[512];
float32_t RFFT_V_Mag_Buffer[512]; //Buffer de la magnitud de la RFFT. VERIFICAR EL TAMAя DE BUFFER
float32_t Max_Mag_Value;
int Max_Mag_Value_index;
/////////////////////
HAL_ADCEx_MultiModeStop_DMA(&hadc1);
uint32_t temporal = ADC_Buffer[Buffer_Size - 1]; //Seteamos la varible temporal igual al valor del ultimo
elemento del array.
uint32_t i=0;
HAL_ADC_Start(&hadc2);
HAL_ADCEx_MultiModeStart_DMA(&hadc1,(uint32_t*)ADC_Buffer,Buffer_Size);
/* CERO EN TENSION */
if(i_v_m == -1){ //Si ya se encontr cero en la tensientonces salta.
}
}
}
}
/* CERO EN CORRIENTE */
pendiente = 1;
j=Buffer_Size;
}
}
i_i_m = i;
pendiente = -1;
j=Buffer_Size;
}
}
}
//Aqua tenemos las posiciones de los ceros en i_v_m y en i_i_m, asomo la pendiente del cero de corriente
en pendiente (1 ; -1)
desfasaje = desfasaje * (-1); //Esto se debe a que ambas ondas se encuentran defasadas 180 debido a los OP
AMP
return desfasaje;
//El defasaje final (tiempo) serᠥsta diferencia multiplicada por el tiempo que toma cada muestra.
/*En este punto tenemos los valores de los ceros en i_i_pos o neg y en i_v_pos o neg*/
//Verificar verificar que el defasaje no sea +90 o -90. TENER EN CUENTA EL DEFASAJE DE 180 EN LA TENSIӎ (op
amp)
//Viendo
http://fooplot.com/?lang=es#W3sidHlwZSI6MCwiZXEiOiIyc2luKHgpIiwiY29sb3IiOiIjMDAwMDAwIn0seyJ0eXBlIjowLCJlcSI6IjJ
zaW4oeCszMCkiLCJjb2xvciI6IiNGRjAzMDMifSx7InR5cGUiOjAsImVxIjoiMnNpbih4LTMwKSIsImNvbG9yIjoiIzAwMDBGRiJ9LHsidHlwZS
I6MTAwMCwid2luZG93IjpbIi0zIiwiNyIsIi00LjI5NzI3OTk5OTk5OTk5NyIsIjMuNzAyNzE5OTk5OTk5OTk4Il0sInNpemUiOlsxMDUwLDYwM
F19XQ--
//Para verificar si los defasajes son positivos o negativos se deberᠲealizar el siguiente procedimiento
//
}
arm_rms_f32(ADC_Buffer_X_scaled,Buffer_Size,&RMS);
arm_max_f32(ADC_Buffer_X_scaled,Buffer_Size,&MAX,&index);
CF = (MAX / RMS);
return CF;
}
float32_t Acumulador;
float32_t THDf;
return THDf;
/////////////////////
/// DISPLAY ///
/////////////////////
char phi[] = {0x06 , 0x05 , 0x5 , 0x15 , 0x0e , 0x04 , 0x04 , 0x04};
char buffer[16]; /* size of line on display */
HAL_Delay(2500);
/////////////////////
/// FFT REAL ///
/////////////////////
//Inicializacion de la RFFT para 512.
arm_rfft_fast_init_f32(&S , 512);
/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */
while(acumulado<20){
//CORRIENTE
scale_I_ADC = 2.94/1024; //Resoluciel ADC
//CORRIENTE
arm_scale_f32(ADC_Buffer_I,scale_I_ADC,Iin_ADC,512);
//OFFSET GABI
TECNICAS DIGITALES II Proyecto final: TD 2 y Medidas Electrónicas 1
Dpto. Electrónica
FRM UTN Pag: 31 Ulloa Gabriel – Quiroga Sykes Emiliano
arm_rms_f32(ADC_Buffer_V_scaled,512,&V_rms);
arm_rms_f32(ADC_Buffer_I_scaled,512,&I_rms);
Vrms_acumulado[acumulado] = V_rms;
Irms_acumulado[acumulado] = I_rms;
acumulado++;
acumulado = 0;
arm_mean_f32(Vrms_acumulado,20,&Vrms_acumulado_prom);
arm_mean_f32(Irms_acumulado,20,&Irms_acumulado_prom);
switch(LCD_Page){
hd44780_clear();
hd44780_position(0, 3);
hd44780_print("PROYECTO FINAL");
hd44780_position(2, 0);
sprintf(buffer, "%.3f", Vrms_acumulado_prom);
hd44780_print(buffer);
hd44780_position(2, 7);
hd44780_print("V");
hd44780_position(2, 11);
sprintf(buffer, "%.4f", Irms_acumulado_prom);
hd44780_print(buffer);
hd44780_position(2, 18);
hd44780_print("A");
HAL_Delay(400);
break;
CF1 = CF(ADC_Buffer_V_scaled,512);
hd44780_clear();
hd44780_position(0, 0);
hd44780_print("Max tension=");
TECNICAS DIGITALES II Proyecto final: TD 2 y Medidas Electrónicas 1
Dpto. Electrónica
FRM UTN Pag: 32 Ulloa Gabriel – Quiroga Sykes Emiliano
hd44780_position(0, 13);
sprintf(buffer, "%.2f", V_max);
hd44780_print(buffer);
hd44780_position(0, 18);
hd44780_print("Vp");
hd44780_position(1, 0);
hd44780_print("Max corriente=");
hd44780_position(1,15);
sprintf(buffer, "%.2f", I_max);
hd44780_print(buffer);
hd44780_position(1, 18);
hd44780_print("Ap");
// hd44780_position(2, 0);
// hd44780_print("Factor de cresta");
hd44780_position(3,0);
sprintf(buffer, "CF = %.2f", CF1);
hd44780_print(buffer);
// sprintf(buffer, "%.2f", V_min);
// hd44780_print(buffer);
// hd44780_position(2, 6);
// hd44780_print("Vmin");
// hd44780_position(2, 11);
// sprintf(buffer, "%.2f", I_min);
// hd44780_print(buffer);
// hd44780_position(2, 16);
// hd44780_print("Amin");
HAL_Delay(1000);
break;
Desf_Grados = Desfasaje(ADC_Buffer_V_scaled,ADC_Buffer_I_scaled,512);
hd44780_clear();
hd44780_position(0, 0);
sprintf(buffer, "%.2f", POT_s);
hd44780_print(buffer);
hd44780_position(0, 6);
hd44780_print("Watt");
hd44780_position(0, 11);
sprintf(buffer, "%.2f", POT_q);
hd44780_print(buffer);
hd44780_position(0, 16);
hd44780_print("VAR");
hd44780_position(2, 0);
sprintf(buffer, "%.2f", POT_p);
hd44780_print(buffer);
hd44780_position(2, 6);
hd44780_print("VA");
hd44780_position(2, 11);
sprintf(buffer, "%.3f", COSFI);
hd44780_print(buffer);
hd44780_position(2, 16);
hd44780_print("Cos");
hd44780_cgram(UDG, phi);
hd44780_position(2, 19);
hd44780_put(UDG);
HAL_Delay(1000);
break;
//Distorsirma total
case 3:
CF1 = CF(ADC_Buffer_V_scaled,512);
// Calculate magnitude
arm_cmplx_mag_f32(RFFT_V_Buffer,RFFT_V_Mag_Buffer,512);
hd44780_clear();
hd44780_position(0, 0);
hd44780_print("Calidad de tension");
hd44780_position(1, 0);
hd44780_print("THDf=");
hd44780_position(1, 5);
sprintf(buffer, "%.2f", THDf);
hd44780_print(buffer);
hd44780_position(1, 9);
hd44780_print("%");
hd44780_position(3, 0);
hd44780_print("CF=");
hd44780_position(3, 3);
sprintf(buffer, "%.2f", CF1);
hd44780_print(buffer);
/* hd44780_position(2, 0);
hd44780_print("frec=");
hd44780_position(2,6);
sprintf(buffer, "%.2f", f);
hd44780_print(buffer);
*/
HAL_Delay(200);
break;
default:
break;
}
}
/* USER CODE END 3 */
if(HAL_GPIO_ReadPin(GPIOE,GPIO_PIN_3)){
if(LCD_Page == 3){ //Si estamos en la ltima pantalla del menu, volvemos a la primera
LCD_Page = 0;
}else if (LCD_Page < 3){ //Sino, solo cambia a la pra.
LCD_Page++;
}
if(HAL_GPIO_ReadPin(GPIOD,GPIO_PIN_15) == GPIO_PIN_SET){
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_15,GPIO_PIN_RESET);
}else{
HAL_GPIO_WritePin(GPIOD,GPIO_PIN_15,GPIO_PIN_SET);
}
}