Subido por saavila724

Informe LAB 1 CONTROL

Anuncio
1
Laboratorio 1: Conversiones A/D y D/A de
señales
Santiago Avila Quiroz, Nikolas David Riapira Rodríguez, Andrés Felipe
Hernández Jurado
Resumen – En el siguiente documento consigna la información
referente hacia la conversión digital análoga de señales digitales,
en ello hay presencia de observar cómo varían las funciones
discretas de acuerdo con su tiempo de muestreo, en ello la
presencia de programación en el momento de asunto para el
estudio de control digital
Para comenzar a hablar de programación, antes, hay que
hablar acerca de las características del PIC18F46K22, es un
microcontrolador con arquitectura RISC de 8 bits, cuenta con
periféricos, como lo son puertos digitales análogos, en
conjunto con puertos de comunicación SPI, I2C, entre otros
I. INTRODUCCION
Este informe presenta la implementación de un sistema
generador de señal analógica utilizando un microcontrolador
para obtener una señal sinusoidal discreta con una resolución
de 10 bits. Para lograrlo, se utilizaron circuitos conversores
digitales-analógicos para reconstruir la señal analógica a partir
de la codificación digital. A lo largo del informe, se describen
detalladamente los métodos utilizados en la implementación del
sistema y se presentan los resultados obtenidos. En particular,
se analizan las características de la señal obtenida y se discuten
las limitaciones y posibles mejoras del sistema.
II. MATERIALES Y METODOS
Teniendo en cuenta las siguientes características de la señal
sinusoidal a generar mediante el microcontrolador, donde su
resolución debe estar dada en 10 bits con amplitud variable y
tiempo de muestreo variable menor a 1 segundo, se aplica la
siguiente función.
𝑦(𝑘 ∗ 𝑇𝑠) = 𝛼 ∗ 𝐴1 ∗ 𝑠𝑒𝑛(𝜔 ∗ 𝑘 ∗ 𝑇𝑠)
Siendo α un factor de escalización dependiente de la amplitud,
A1 la amplitud de la onda, ω la frecuencia angular, k la
variable independiente del tiempo discreto y Ts el tiempo de
muestreo. La señal analógica reconstruida debe variar entre
0V y 7V.
Ante ello, se selecciona un microcontrolador con las
características idóneas para dicha tarea, entre estas que cuente
con un temporizador con una preescala amplia para alcanzar el
rango de aproximadamente un segundo, en el mercado existen
variedades de microcontroladores con dicho rango y
preescalas aún mayores, pero por opción en confiabilidad y
sencillez de programación, se toma como microcontrolador el
PIC18F46K22 de la empresa Microchip para cumplir dicho rol
en la generación de la señal discreta
Figura 1. PIC18F46K22 PDIP 40
Además de ello, el microcontrolador PIC18F46K22, cuenta
con temporizadores, que cuentan con preescalas desde 1 hasta
256 bits, por lo que se podría llegar a un tiempo de cuenta de
4.1 segundos, lo que abre puerta a jugar con dichos tiempos y
emplear alto rango de vertibilidad en tiempo de muestreo
Por ello el PIC cuenta con 3 módulos de temporizado,
denominados timer 0,1/3/5 y timer 2/4/6, en el cual el timer 0,
cuenta con una preescala de hasta 256 bits, lo que lo hace
idóneo ante la tarea.
Ante ello, el PIC 18F46K22, cuenta con temporizadores
configurables de 8 y 16 bits, el empleado durante la practica
sera de 16 bits, con configuración de temporización a cada 4
ciclos de reloj del microcontrolador
Por lo que se tiene que el tiempo de cuenta del
microcontrolador llega a ser hasta de 65535, el medio que
operan las interrupciones en el microcontrolador en el timer es
mediante desbordamiento, existe el registro TMR0H y
TMR0L, donde se aloja la cuenta del microcontrolador, donde
se sitúa un valor de cuenta inicial, para allí, experimentar con
el tiempo de cuenta para alcanzar un mayor o menor tiempo.
2
Figura 5. Configuracion de funciones de la señal
Figura 2. Timero0 a 16 bits de operacion
Para ello el fabricante ofrece la siguiente fórmula para calcular
el tiempo de retraso, partiendo que el periodo del timer es el
inverso de la frecuencia de oscilación por 4, lo que
corresponde a una frecuencia de oscilación de 16MHz interna
Donde void settings es la funcion encargada del de alojar las
configuracions por defecto de los puertos digitales y uso del
timer, en conjunto con configuraciones de habilitacion de
interrupciones globales y perifericas, la funcion void interrupt,
en el IDE de Microchip(MPLAB), funciona para llamar la
interrupcion por desbordamiento del timer, ejecutando la
funcion alojada dentro de la llamada, por ultimo se encuentra
la funcion pulsadores que aloja las intrucciones presente en el
bucle principal de programa
Por lo que dado el delay que puede variar, el registro TMR0 se
debe variar, para variar también el tiempo de muestro, por lo
que despejando TMR0
Figura 6. Configuracion de variables de codigo
Por lo que en el código de programación, se desea variar el
tiempo de muestreo cada 10ms, mediante dos pulsadores,
donde uno se encargara de aumentar dicho tiempo cada 10ms
y el pulsador restante en disminuirlo en un tiempo menor, esto
en caso de querer comenzar con disminuirlo en 10ms, no se
apague la señal, en ello se explica a continuación la dinámica
del código
En primera instancia se configura el tiempo de oscilación del
microcontrolador, en conjunto con el apagado de el
temporizador por perro guardián y desactivación de bajo
voltaje, también se hace adición de la librería math.h para
adición de funciones trigonométricas a la señal
Figura 3. Configuracion de condiciones iniciales del codigo
En conjunto con las configuraciones iniciales, se define como
constante de configuración la configuración interna de
oscilación, definida de 16 MHz, en conjunto con definir la
constante PI, en el empleo graficacion de la formula
Figura 4. Configuracion de frecuencia de oscilacion y constante PI
En consiguiete, se explica las funciones implementadas en el
codigo
La configuracion de variables del codigo, se realizan de
acuerdo a la funcionalidad y naturaleza de las mismas un
ejemplo de ello es la variable double valSIN, que por defecto
al llamar la funcion seno en math. H debe ser una variable
double que aloje el resultado del calculo de dicha, según datos
de fabricante, en conjunto, se albergan en las funciones de
tiempo y entero, la variable de tipo volatile, que hace que
dichas opciones se alojen en la memoria SRAM del PIC, esto
para aumentar la tasa de cambio de las variables en cuestion,
en conjunto con la variable de conteo para el tiempo de
muestreo
La configuracion de variables del codigo, se realizan de
acuerdo a la funcionalidad y naturaleza de las mismasm un
ejemplo de ello es la variable double valSIN, que por defecto
al llamar la funcion seno en math. H debe ser una variable
double que aloje el resultado del calculo de dicha, según datos
de fabricante, en conjunto, se albergan en las funciones de
tiempo y entero, la variable de tipo volatile, que hace que
dichas opciones se alojen en la memoria SRAM del PIC, esto
para aumentar la tasa de cambio de las variables en cuestion,
en conjunto con la variable de conteo para el tiempo de
muestreo
3
Figura 7. Ajustes de codigo
Dentro de los tiempos de configuracion, se utilizan diversos
registros para configurar ajustes del microcontrolador, el
registro OSSCON es encargado de realizar ajustes hacia la
frecuencia de oscilacion interna, ademas en configuracion de
registros, para generar una señal de 10 bits en un DAC, aloja
10 bits de la señal de salida, donde por naturaleza del
microcontrolador y de la señal, se habilitan dos puertos, para
habilitar los bits menos significativos de la señal y en otro
puerto se habilitan los bits mas significativos de la señal
senosoidal, en la señal, por efectos de distribucion de datos, se
alojan los 2 bits menos significativos de la señal en el puerto C
del microcontrolador,y los 8 bits mas significativos seran
alojados en el puerto D, en ello, se configuran los pines
RC0,RC1 como salidas, en conjunto, todo el puerto D seran
salidas digitales, habilitando el registro en 0x00
Tambien son configurados la hablitacion de interrupciones
perifericas, mediante los registros GIE y PEIE, que habilitan
las interrupcion por temporizador, para configurar los registros
del temporizador, se activan las interrupciones por TIMER0,
donde al configurarlo en 1, se activa la habilitacion de la
interrupcion, como indicar que la bandera no se ha activado y
situar la prioridad de la interrupcion en alto con el registro
TMR0IP, es asignado la variable timer a el registro TMR0
para variar el tiempo de acuerdo a los valores de pulsadores,
El registro T0CON es encargado de configurar la preescala del
timer, en este caso sera configurado a una preescala de 64, y
configurado como temporizador
Figura 8. Ajustes de pulsadores
Dentro de el area de la funcion pulsadores, se conmuta
mediante resistencias pull up, en ello, se configuran los pines
RC2 y RC3 como entradas, dado a esto el problema del rebote
es constante, por lo que en codigo se corrije mediante una
linea antirrebote, que llama una variable llamada aumentar o
disminuir cuando el pulsador es accionado, seguido de esto, se
evalua en un condicional cuando llegue a ser equivalente a 1
logico la entrada del pin en conjunto en activado el indicador,
ejecuta la orden de aumentar o disminuir el tiempo de
muestreo, esto con el fin de no variar el tiempo de muestreo a
un ritmo irregular del propuesto, es de resa i
En conjunto a ello, se ha alojado dentro de bucle de
funcionamiento, la variable timer, que variara el retardo a
medida que varie el tiempo con los pulsadores, en conjunto, la
variable valSIN, alojara el resultado de la señal seno, a partir
del tiempo de muestreo presente en la ecuacion, y la variable
independiente k de muestras recolectadas, se situa en la
ecuacion una frecuencia angular de 2π, en ello, se realiza un
aumento de amplitud y punto de corte en la señal, esto con el
fin de hacer reservaciones de bits negativos a otros pines, por
lo que si se tiene un DAC de 10 bits, el pico de amplitud de la
señal debe ser 1023 bits, en conjunto, si se tiene que sea una
señal unipolar, el valor minimo de la señal debe ser cero, por
lo que se hace una suma a la variable de 511.5, mitad de 1023,
para alcanzar el valor inicial en ese punto, y una amplitud de
onda de 511.5 para alcanzar valor pico de 1023
Finalmente es activado el timer0 para realizar el conteo
mediante TMR0ON
Figura 9. Valor Sinusoidal x=511.5*sin(2π*t)+511.5
4
𝑅𝑥 =
Por lo que tambien, se toma el resultado de la señal seno, y es
bifurcado en 2 segmentos, las variables highbyte y lowbyte,
que alojaran los 8 MSB y 2 LSB respectivamente, esto
mediante un corrimiento de dos bits a la izquierda en highbyte,
y en lowbyte mediante la operación bitwise AND 0x03 que
realizara un enmascaramiento a los 8 bits mas significativos,
permitiendo alojar en dicha variable los 2 bits menos
significativo, cabe destacar que el resultado de la señal seno,
se debe forzar a entero para almacenarse en las variables de
puerto LATD y LATC, que realizaran una conversion interna
de entero sin signo a caracteres sin signo, desplegando la
salida de la señal en bianrio al conversor digital analogo
Reemplazando
𝑅𝑥 =
Conversores digitales – analógicos
Se utilizaron dos métodos de conversión, resistencias
ponderadas y red escalera R-2R. se implemento como
amplificador operacional el LM358, de polarización simple
Para la implementación de la configuración de red escalera R2R teniendo en cuenta el rango de variación de la señal se
realizó el siguiente calculo para obtener como valor pico los
7v conociendo que las salidas digitales del microcontrolador
PIC 18F45K22 son de 5v, a partir de la fórmula para la red
escalera.
1000Ω ∗ 1400Ω
1000Ω − 1400Ω
Resultando
𝑅𝑥 = −3500Ω
Conluyendo que si el valor de Rx, es negativo debe ser
conectada a tierra desde el pin inversor del amplificador
operacional, en caso contrario se conecta a tierra igualmente,
desde el pin no inversor
Obteniendo de esta manera el siguiente circuito para la red
escalera R-2R
Figura 10. Valor Sinusoidal x=511.5*sin(2π*t)+511.5
Hacia la funcion de interrupcion, es alojada las tareas de
aumento de contador de la variable discreta, esto con el fin de
aumentar cada desborde del temporizador las muestras de la
señal senosoidal, esto se realiza cuando la bandera de
interrupcion TMROIF es igual a uno, en conjunto, en software
debe ser limpiada la bandera de interrupcion y situar en el
valor de TMR0, el calculo de timer, para realizar la
actualizacion de tiempo de muestreo cada desborde del
temporizdor
𝑅 ∗ 𝑅𝑓
𝑅 − 𝑅𝑓
Figura 11. Red escalera R-2R (Proteus)
Con respecto a la configuracion de resistencias ponderadas ,
al igual que la red escalera R-2R se establece a partir de la
formula y con una resistencia inicial de 100Ω lo siguiente.
𝑣
𝑣
𝑣
𝑣
𝑉0 = (𝑅𝑓) ( +
+
+ ⋯+
) = 7𝑣
𝑅 2𝑅 4𝑅
512𝑅
0.99𝑣/Ω
𝑅𝑓 = (
) = 70Ω
7𝑣
E igualmente se sitúa una resistencia de estabilización para
trabajar en polarización sencilla, mediante la ecuación para Rx
Que en este caso es el cociente de Rf entre 1- la ganancia
𝑅𝑓
𝑅𝑥 =
1−𝐴
70Ω
𝑅𝑥 =
= −175Ω
1 − 1.4
Igualmente, esta resistencia al estar en un valor negativo, se
debe conectar del pin inversor a tierra
𝑅𝑓 𝑣
𝑣
𝑣
𝑣
𝑉0 = ( ) ( 1 + 2 + 3 + ⋯ + 10 ) = 7𝑣
𝑅 2
2
2
2
R57
R35
175
70
U3
R25
R26
R27
R28
R29
R30
R31
R32
R33
R34
51200
25600
12800
6400
3200
1600
800
400
200
100
7𝑣(1000Ω)
𝑅𝑓 =
= 1400Ω
5𝑣
En conjunto a un valor Rx de estabilización para manejar el
montaje en polarización sencilla
A partir de la formula
10
9
8
7
6
5
4
3
1
2
OPAMP
𝑅𝑓
(5𝑣)
7𝑣 =
1000Ω
Figura 12. Resistencias ponderadas (Proteus)
Finalmente se realiza calculo en común a los DAC en
resolución y FS
𝑅𝑒𝑠𝑜𝑙𝑢𝑐𝑖𝑜𝑛 =
𝐴 ∗ 𝑉𝑟𝑒𝑓
2𝑁 − 1
5
Siendo un DAC de 10 bits y 5V de referencia
1.4 ∗ 5𝑉
𝑅𝑒𝑠𝑜𝑙𝑢𝑐𝑖𝑜𝑛 =
= 6.843𝑚𝑉
1024 − 1
Expresado en %de FS=7V
𝑅𝑒𝑠𝑜𝑙𝑢𝑐𝑖𝑜𝑛
%𝐹𝑆 =
∗ 100
𝐹𝑆
6.843𝑚𝑉
%𝐹𝑆 =
∗ 100 = 0.097%
7𝑉
Resultados en Simulación
Figura 15. Señal Senosoidal y(KT)=511.5*sin(2π*(KT))+555.5
K=0;100; T=10ms
Figura 13. Montaje en Proteus
Dado la condición inicial de código en iniciar con una señal
con tiempo de muestreo de 10ms, equivalente a tomar 100
muestras por segundo, en el canal 1 del
osciloscopio(amarillo), se encuentra el tratamiento de la señal
por medio de R2R y en el canal 2(azul), se encuentra el
tratamiento a la señal por medio de resistencias ponderadas,
cabe resaltar que los cursores muestran la condición de
frecuencia de 1Hz y la amplitud máxima de 7V
Figura 16. Demostracion de Tiempo de muestreo a 10ms
Con 20 muestras
Figura 14. Salida R2R (Amarillo) y Resistencias Ponderadas
(Azul) 100 muestras
En conjunto se visualiza tambien el proceso discreto en
MATLAB, con diferentes tiempos de muestreo
Figura 17. Salida R2R (Amarillo) y Resistencias Ponderadas
(Azul) 20 muestras
6
Figura 18. Señal Senosoidal y(KT)=511.5*sin(2π*(KT))+555.5
K=0;20 T=50ms
Figura 21. Señal Senosoidal y(KT)=511.5*sin(2π*(KT))+555.5
K=0;10 T=100ms
Figura 22. Demostracion de Tiempo de muestreo a 100ms
1 segundo
Figura 19. Demostracion de Tiempo de muestreo a50ms
Con 10 muestras
Figura 23. Salida R2R (Amarillo) y Resistencias Ponderadas
(Azul) 1 muestras
Figura 20. Salida R2R (Amarillo) y Resistencias Ponderadas
(Azul) 10 muestras
Figura 24. Señal Senosoidal y(KT)=511.5*sin(2π*(KT))+555.5
K=0;1 T=1s
7
III. RESULTADOS
MONTAJE R2R
Figura 28 Señal de Salida R2R a tiempo de muestreo de 27ms
Figura 25 Montaje en Fisico DAC R2R
Figura 26 Salida de Señal R2R a 10ms de tiempo de muestreo
Figura 28 Señal de Salida R2R a tiempo de muestreo de 62ms
Montaje Resistencias Ponderdadas
Figura 26 Demostracion de tiempo de muestreo de 10ms
Figura 29 Microcontrolador PIC1846K22 con pulsadores de
variacion de tiempo de muestreo y DAC por resistencias
ponderadas
Figura 27 Señal de Salida R2R, con tiempo de muestreo
aumentado
Figura 30 Señal de salida de DAC Rponderadas con
demostracion de periodo de señal
8
Figura 31 Microcontrolador PIC1846K22 con pulsadores de
variacion de tiempo de muestreo y DAC por resistencias
ponderadas
Figura 35 Demostracion de tiempo de muestreo de 10ms en señal
DAC por resistencias ponderadas
IV. ANALISIS DE RESULTADOS
Figura 32 Señal de Salida DAC R ponderadas a 120ms de
muestreo
Al realizar la verificación de la señal sinusoidal reconstruida a
partir del microcontrolador y las configuraciones de los
conversores digitales – analógicos se evaluó la precisión y la
resolución del circuito y se encontró que era bastante buena.
La resolución del circuito era de 10 bits, lo que significa que
era capaz de representar la señal con una precisión de hasta
1024 niveles discretos. Por otro lado, la precisión del circuito
fue evaluada comparando los valores de voltaje generados por
el circuito con los valores esperados y se observó que la
mayoría de los valores eran bastante precisos, aunque algunos
valores presentaron pequeñas desviaciones.
Para evaluar la resolución del DAC de 10 bits, se utilizó un
osciloscopio para medir la señal generada donde se pudo
observar que la señal resultante por el DAC es una
aproximación muy cercana de la señal sinusoidal.
Además, se calculó la resolución del DAC dividiendo la
amplitud máxima de la señal de salida del microcontrolador (5
V) entre el número máximo de niveles discretos (1024), lo que
resultó en una resolución de 0.0049 V por nivel.
Figura 33 Señal de Salida DAC R ponderadas a 18ms de
muestreo
Durante las pruebas realizadas en la practica se llego a obtener
una señal con distintas anomalías como lo eran picos altos y
bajos de voltajes, en donde se establece que tanto el circuito
de red escalera R-2R como el de resistencias ponderadas solo
reciben la información del microcontrolador para
posteriormente realizar el tratamiento de los 10 bits y generar
la señal, de esta manera se da a entender que cualquier
alteración en la señal final es debido a la codificación aplicada
en el microcontrolador.
También con respecto a cada una de las dos configuraciones,
se analiza que en cuanto a la red escalera R-2R tiene una
exactitud mucho mejor que el circuito de resistencias
ponderadas pero su configuración es un poco mas compleja
que la anterior mencionada.
Figura 34 Señal de Salida DAC R ponderadas a 10ms de
muestreo
V. CONCLUSIONES
•
El uso del circuito para manejar el entorno discreto
puede suponer que es posible caracterizar una gran
9
variedad de señales o emular muchos sistemas, esto es
muy importante en dado caso de que se necesite
realizar pruebas sobre un sistema en concreto
•
La configuración de resistencias R-2R, tiene una gran
utilidad en el muestreo de valores de la señal generada
digitalmente, así mismo se involucra el tiempo de
muestreo como una variable de vital importancia para
observar la señal solicitada con un detalle
considerablemente bueno.
•
Se decidio utilizar el microcontrolador PIC18F46K22
debido a su mayor facilidad en el uso de registros y
estructura puesto que se necesita un seguimiento muy
preciso en la señal para poder cumplir con los
propósitos del laboratorio
•
Respecto a las aplicaciones del laboratorio antes
presentado, estás configuraciones serían una versión
minusiosa y en cierto modo la representación de un
conversor digital análogo, suponiendo que en este caso
su importancia se basa en el muestreo o
caracterización de magnitudes para su posterior uso o
parametrización en entornos de trabajo de la industria
•
El uso de temporizadores en los microcontroladores
ayuda a implementar tareas con ocupacion de computo
minimo, y se pueden implementar tareas de procesos
casi simultaneos con ayuda de la configuracion, para
optimizacion de procesos, y un mejor rendimiento en
las tareas
•
Las resistencias ponderadas es un buen metodo para
convertir señales digitales en analógicas, sin embargo
su exigencia de precision en los valores de dichas
resistencias, hace que el metodo sea sumamente dificil
de implementar y requiriese de los valores exactos en
el formulado
•
Las aplicacione de muestreos en señales, se pueden
implementar en aplicaciones de emulacion de
sistemas, o respuestas de estos mismos a partir de
estimulos, pueden ser a partir de una lectura analogica
o señales discretas
•
La implementacion de las configuraciones R2R puede
variar segun su tipo de montaje, ganancia y si es
implementado unicamente con componentes pasivo, o
bien dicho se agregen componentes activos
•
La precision ante los dos metodos puede variar de
acuerdo a la resolucion del DAC, y en el valor de
resistencia seleccionados para los montaje
•
La implementacion de conversores digital analogia
mediante resistencias R2R y Resistencias ponderadas,
es dificl cuando hay mas 10 bits de resolucion, por lo
que comercialmente se comercializan modulos
convertidores, de una señal de entrada y salida unica,
de modo que son comunicados con un
microcontrolados mediante diversos protocolos de
comunicación y diversos niveles de voltaje
•
El muestreo insuficiente de partes de la señal, puede
provocar visualmente que la señal desplegada en
fisico, sea vea totalmente diferente a la señal
planteada, conociendose esto como aliasing, y
incumplimiento del teorema de muestreo de Nysquit
•
El uso de conversores digitales analogicos, se puede
implementar no solo en el desplegado de señales de
estimulo, sino para generar señales bastante
especificas, que solo un componente de computo
puede generar
VI. REFERENCIAS
[1]. J. E. Cote B, "Introducción control digital", presentación
en diapositivas, Universidad ECCI, Bogotá, Colombia, 03-feb2023.
Descargar