UNIVERSIDAD FRANCISCO DE PAULA SANTANDER INGENIERÍA ELECTRÓNICA MICROCONTROLADORES VCO LINEAL DIANA MILENA URBINA DIEZ
[email protected]
RESUMEN
CJNE
Realiza un Oscilador Controlado por Voltaje (VCO) que sea lineal, es decir que su frecuencia aumente proporcionalmente para diferentes entrada, es realizado y programado en un 89c51.
DESARROLLO
R1,#03H,CMP4 MOV R2,#13H MOV A,R2 MOV R3,A ACALL FREQ
LJMP CMP3 CMP4: MOV R1,P1 CJNE R1,#04H,CMP5 MOV R2,#0BH MOV A,R2 MOV
Para el desarrollo del VCO se utilizo un ADC que nos realizara la conversión de voltaje, se uso un ADC0804 configurado en carrera libre y se trabajo con 3 de sus bits (D4-D6), se realizo solo con estos 3 bits, porque el VCO fue realizado de tal forma que para una entrada de 1v saliera 1kHz, para 2v tuviera 2kHz y así hasta llegar a 7. Se trabajo el 89c51 con un cristal de 4Mhz, para generar su reloj. Para obtener los datos del converso se usaron los 3 primeros pines del puerto P1 y se uso el pin0 del puerto P0 para la salida del microcontrolador. A continuación se presenta el programa del VCO con el que fue realizado el VCO. $MOD51 $TITLE(VCO DIANA) ORG 00H LJMP 100H ORG 100H ANL P0,#00H CMP1: MOV R1,P1 CJNE R1,#01H,CMP2 MOV R2,#047H MOV A,R2 MOV R3,A ACALL FREQ LJMP CMP1 CMP2: MOV CJNE MOV MOV MOV ACALL LJMP CMP3: MOV
R1,P1 R1,#02H,CMP3 R2,#1FH A,R2 R3,A FREQ CMP2 R1,P1
R3,A ACALL LJMP CMP5: MOV CJNE
MOV
FREQ CMP4 R1,P1 R1,#05H,CMP6
R2,#08H
MOV MOV ACALL LJMP CMP6: MOV CJNE MOV MOV MOV ACALL LJMP CMP7: MOV CJNE MOV MOV MOV ACALL LJMP
A,R2 R3,A FREQ CMP5 R1,P1 R1,#06H,CMP7 R2,#05H A,R2 R3,A FREQ CMP6 R1,P1 R1,#07H,CMP8 R2,#03H A,R2 R3,A FREQ CMP7
CMP8: ANL LJMP
P0,#00H CMP1
FREQ: SETB ACALL NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP CLR ACALL RET
P0.0 DELAY
Ing. Gabriel Sánchez Suárez
[email protected]
P0.0 DELAY
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER INGENIERÍA ELECTRÓNICA MICROCONTROLADORES VCO LINEAL DIANA MILENA URBINA DIEZ
[email protected] DELAY: MOV A,R3 MOV R6,A DELAY1:DJNZ R6,DELAY1 RET END
Para calcular los retardos que se trabajo con la siguiente relación:
1 f OSCILADOR 1 f DESEADA
=K=
12 = 3 −6 s 4MHz
*K = m
Este valor m es el que vamos a poner en nuestro retardo, debemos considerar al hacer esta relación que cada instrucción posee entre 1 o 2 ciclos de maquina que es equivalente a 12 ciclos de reloj, debemos tener cuidado con estos tiempos para lograr una frecuencia deseada. Inicialmente programa:
se
trabajo
INCLUDE 89C51.mc ORG 00H LJMP INICIO INICIO: ORG 100H ANL P0,#00H MOV R2,#03CH CMP1: MOV R1,P1 CJNE R1,#01H,CMP2 MOV A,R2 MOV B,#01H DIV AB MOV R3,A ACALL FREQ LJMP CMP1 CMP2: MOV CJNE MOV MOV DIV MOV ACALL LJMP CMP3: MOV CJNE MOV MOV
R1,P1 R1,#02H,CMP3 A,R2 B,#02H AB R3,A FREQ CMP2 R1,P1 R1,#03H,CMP4 A,R2 B,#03H
con
el
siguiente
DIV MOV ACALL LJMP CMP4: MOV CJNE MOV MOV DIV MOV ACALL LJMP CMP5: MOV CJNE MOV MOV DIV MOV ACALL LJMP CMP6: MOV CJNE MOV MOV DIV MOV ACALL LJMP CMP7: MOV CJNE MOV MOV DIV MOV ACALL LJMP CMP7: ANL LJMP
AB R3,A FREQ CMP3 R1,P1 R1,#04H,CMP5 A,R2 B,#04H AB R3,A FREQ CMP4 R1,P1 R1,#05H,CMP6 A,R2 B,#05H AB R3,A FREQ CMP5 R1,P1 R1,#06H,CMP7 A,R2 B,#06H AB R3,A FREQ CMP6 R1,P1 R1,#07H,CMP8 A,R2 B,#07H AB R3,A FREQ CMP7 P0,#00H CMP1
FREQ: SETB ACALL NOP NOP NOP NOP NOP NOP NOP NOP NOP NOP CLR ACALL RET
P0.0 DELAY
P0.0 DELAY
DELAY:MOV A,R3 MOV R6,A MOV R7,A DELAY1:DJNZ R6,DELAY1
Ing. Gabriel Sánchez Suárez
[email protected]
UNIVERSIDAD FRANCISCO DE PAULA SANTANDER INGENIERÍA ELECTRÓNICA MICROCONTROLADORES VCO LINEAL DIANA MILENA URBINA DIEZ
[email protected] DELAY2:DJNZ R7,DELAY2 que para poder generar frecuencias mas altas de 7khz en este diseño se necesitaría un reloj RET de cristal menor a los 4MHz y el 89c51 debe END ser configurado con un reloj entre un rango de 4MHz a 20MHz, por esta razón se trabajo solo Como se puede observar lo que se hizo fue con 3 bits y un máximo de 7kHz a 7v. hallar una constante y luego dividir esta constante con la entrada, de esta forma se aseguraba la linealidad, de hecho si es lineal, CONCLUSIONES solo que al realizarse de esta forma no se considera el tiempo de las instrucciones y también se ve bastante afectada la frecuencia El 89C51 es un microcontrolador muy fácil de debido a que muchas de estas divisiones son programar, con instrucciones sencillas, fácil de enteras y otra no lo son. comprender y poner en funcionamiento. Por este motivo se decidió realizar el calculo para cada una de las frecuencias deseadas, El programa es bastante fácil, y solos e basa pero es importante decir que se partió del valor en rutinas de retardos y comparaciones. hallado en la división como se acaba de explicar y mostrar en el programa anterior. Se debe considerar bastante al realizar un Al realizar la prueba, se observo que algunas diseño, el manejo de los tiempos que se de las frecuencias no eran exactas, así que demora cada instrucción, ya que se observo sencillamente se empezó a incrementar o a que no es tan despreciable como una decrementar el valor del retardo, dependiendo considera, sino que todo lo contrario es de si se deseaba disminuir o aumentar la bastante significativo. frecuencia. Cabe decir que de cualquiera de estas dos formas el VCO es completamente lineal, solo que de la segunda forma no se obtienen frecuencias exactas de 1kHz para un 1v, ni para ninguna otro voltaje, mientras que con el primero programa se obtuvo una frecuencia de 1.04kHz a 1v, hasta un máximo de 6.98kHz para 7 v, el efecto de esta diferencia es ya debida al reloj y las instrucciones del programa. Como se puede observar en el retardo que se usa para generar el reloj, se ven varios NOP, estos NOP es para asegurar un ciclo útil de 50%, ya que si se analiza detenidamente el programa, se observara que cuando P0 esta en 0 y va a realizar el cambio a P1 tiene que recorrer mas instrucciones que cuando P1 esta en 1 y va a cambiar a 0, esta es la explicación de porque los NOP que se encuentran solo en el retardo cuando P0 esta en 1. Se trato de trabajar con un rango de frecuencias mas altas, pero si se observa en el retardo de cuando el voltaje es 7, se podrán dar cuenta que este retardo es solo de 3, así Ing. Gabriel Sánchez Suárez
[email protected]