Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Reporte Proyecto U1, Fernando
Reporte Proyecto U1, Fernando
de Ciudad Hidalgo
PROYECTO UNIDAD 1
ASIGNATURA:
CONTROL DIGITAL
PROFESOR:
ERIC GONZALEZ VALLEJO
GRUPO:
359-GA
PRESENTA:
LUIS FERNANDO VICTORIA MARTINEZ
CARRERA:
INGENIERIA MECATRONICA
“Entrega: 22/Sep/22”
Introducción:
A continuación, se muestra y describe el trabajo sobre la discretización de señales
analógicas. Esto a partir de una función x(t) que se encuentra en el dominio del
tiempo, se usa un microcontrolador para recibir la señal y transformarla en datos
digitales, enseguida se debe reconstruir la señal original con un muy pequeño
margen de error.
Junto a esto, se explican los pasos que se realizaron para la simulación y obtención
de las señales mediante el uso de softwares como Matlab y Proteus, que permiten el
análisis y simulación de la función, así como la identificación visual de la misma. Con
el uso de Proteus se detalla los componentes que se utilizaron para generar de
manera correcta la forma de la onda en base a función dada y la manera en que se
reconstruyo la señal mediante el uso de un conversor de digital a analógico.
Dicho código permite graficar la forma de la onda de manera exacta, por lo que
resultaría más fácil entender que es lo que se trata de generar mediante el uso de un
micro controlador, sus características como fase, amplitud y frecuencia, así como su
ciclo de trabajo y la determinación del tiempo de muestreo.
Ilustración 3: Señales generadas en mathlab
El valor de las resistencias de 50k ohms se decidió que fuese elevado debido a que
el operacional amplificador es un circuito que trabaja con señales de voltaje, por lo
que hacer que circule una corriente elevada y no limitada puede terminar dañando el
circuito de manera física.
Las amplitudes utilizadas para las señales fueron de 2, 1, 1.5 y 0.5 volts
respectivamente con la configuración de offset para lograr que la señal estuviera
dentro del cuadrante positivo y fuera posible leerla con el micro controlador. Todas
las señales poseen un ángulo de desfase de 90° y su frecuencia es de 2, 12.5. 20 y
150 Hz respectivamente.
Donde se explica que Rf será n veces mayor que R para esta configuración y n es el
número de señales que se desean sumar, para este caso 4, por lo que Rf será 3
veces mayor que R. Se optó nuevamente por una resistencia de 10k Ohms para
limitar la corriente del circuito para el valor de R, por lo que Rf será de 30k Ohms.
Con todo esto se armó la primera etapa del circuito donde ya se podía observar la
forma reconstruida de la señal y como es que esta se comportaba, junto con los
valores pico que la gráfica alcanzaba, esto siendo muy similar a los resultados de las
gráficas obtenidas en el análisis de MatLab.
Ilustración 8: Señal senosoidal
Posteriormente, vamos a utilizar una serie de subprogramas los cuales están fuera
del void main, con la finalidad de que solamente mandemos llamar con una sentencia
alguno de estos sin necesidad de desarrollarlo todo en el main void. A continuación,
se observa lo descrito anteriormente.
Ilustración 14: Subprogramas utilizados en el código
Como se mencionó anteriormente, el PIC18F4550 no cuenta con DAC integrado, por
lo que se decidió utilizar un ADC externo, como lo es el DAC MCP4922.
Para nosotros realizar una conexión con este DAC, es necesario utilizar la
comunicación MSSP (MASTER SYNCHRONOUS SERIAL PORT), por lo que se usó
el modo SPI para lograr una comunicación maestro-esclavo entre el PIC y el DAC.
Como se observa en la imagen anterior, se tienen subprogramas de la comunicación
SPI en la cual se almacena la variable SSPBUF, la cual contiene en mensaje que se
transmitirá por la comunicación SPI. También se tiene un subprograma del DAC en el
cual se almacenan algunos comandos que nos permiten que el DAC no tenga
ganancias, otros para separar el bit en alto y en bajo y al final mostrarlo todo junto,
así como un comando para elegir que canal se quiere elegir del DAC ya que este
modelo cuenta con 2 canales para la conversión Digital-Analógica.
También se tiene un subprograma del ADC en el cual se tienen los registros
necesarios que nos permiten elegir que pin de los 2 que se habilitaron como entradas
analógicas se va a utilizar, esta va asociada a la subrutina del DAC con la variable
canal. Así como los registros para encender el ADC y la bandera que nos hace saber
si hay un dato en proceso. Y por último los registros que nos permiten agrupar los
bits en una misma variable para así poder procesarla. Además, se tiene el
subprograma correspondiente al Timer0, en el cual como se puede observar, se
tienen todas las configuraciones de los registros como el prescaler, las banderas, la
resolución etc.
Ilustración 15: Void Main
Posteriormente tenemos el void main en el cual se encuentran algunas
configuraciones que el microcontrolador ejecuta solamente una vez, como registros,
los estados de las entradas, configuraciones del SPI, del ADC, la inicialización del
Timer0 y el ciclo while en el cual se incluye la tasa de muestreo que calculamos.
Como se puede observar, en el ciclo while, se tiene una variable con el valor de la
tasa de muestreo calculada anteriormente, además de la lectura del ADC
almacenada en la variable código. Posteriormente se tienen los valores calculados
del timer 0 para un tiempo de 0.0040s, esto con el fin de que tengamos un conteo y
poderlo interceptar antes de que llegue a su límite. Se guarda en 2 variables ya que
es de 16 bits de resolución el timer pero después lo juntamos en una sola variable.
Después tenemos una condicional if, en la que se declara que si el valor del contador
es mayor al de la tasa de muestreo que saque por el DAC el valor que está leyendo
en ese momento el ADC y posteriormente que las banderas del Timer 0 se apaguen
con el fin de reiniciarlo y comenzar la cuenta de nuevo.
Es importante mencionar que el microcontrolador tiene una resolución de 10 bits y el
ADC de 12 bits, por lo que esto podría generar problemas al momento de pasar
datos de uno a otro. Pero para solucionar esto se multiplicó por 4 la variable código
que es donde se almacena la lectura del ADC para que con esto no nos generen
problemas por tener resoluciones diferentes.
Resultados.
Con ayuda del osciloscopio se pudo observar las dos señales obtenidas, mientras
que una es la señal original, al otra se realiza una aproximación con a la salida de
DAC.
Ilustración 16: Comparación de señales