Download - Labfinal de Control Digital
5/14/2018 Labfinal de Control Digital - slidepdf.com
http://slidepdf.com/reader/full/labfinal-de-control-digital 1/8
Convertidor de frecuencia a voltaje
Los convertidores de frecuencia a voltaje son circuitos integrados que convierten un voltaje de entrada
análogo en un tren de pulsos cuya frecuencia de salida es proporcional al nivel de entrada. Se utilizan en
aplicaciones de conversión análogo a digital donde la velocidad no es un factor crítico, también operan
como convertidores de frecuencia a voltaje y pueden ser utilizados como convertidores de señales
digitales a análogas de baja frecuencia. Dentro de los convertidores de señales de voltaje a frecuencia o
de frecuencia a voltaje se encuentran:
LM2907 de National semiconductor
AD650 de Analog Devices
VFC32 de Burn Brown
XR4151 de Exar
Se muestra el circuito básico para convertir frecuencia a tensión con este integrado:
Para el diseño se tomo en cuenta que:
La serie LM2907, LM2917 comprende convertidores de frecuencia a voltaje monolíticos con un
Amplificador Operacional / Comparador de alta ganancia diseñado para operar un relé, lámpara u otra
carga cuando la frecuencia de entrada alcanza o excede un intervalo. El tacómetro usa una técnica de
bomba de carga y ofrece conversión de frecuencia con un bajo rizado, protección de entrada total en
dos versiones (LM2907-8, LM2917-8) y salida balanceada a tierra para una frecuencia de entrada cero.
Salida balanceda para una frecuencia de entrada cero
Fácil de usar: VOUT = fIN x VCC x R1 x C1
Una red RC proporciona la conversión de frecuencia
Zener regulador en el chip permite exactitud y estabilidad en la frecuencia para la conversión de
voltaje a corriente (LM2917)
Elección de los valores:
5/14/2018 Labfinal de Control Digital - slidepdf.com
http://slidepdf.com/reader/full/labfinal-de-control-digital 2/8
min3
max31
I
V R
por temas de diseño, se recomienda según la hoja de datos que I3max=150mA, también:
21..1
2.21.
I C FinVcc
C C VccV ripple , luego
fullscale
fullscale
F Vcc RV C
..131 y finalmente
2.131
.21.2
I RV
V C VccC
ripple
Con las formulas anteriores calculamos los valores de los componentes para el circuito:
Establecemos Vcc=7.5v, Vripple= 0.05v y Fmax=4.5 Khz
R1>V3max/I3min del datasheet, I3min=0.00015, entonces R1=10K (vlor comercial)
nf F Vcc R
V C
fullscale
fullscale03.1
45005.7100000
5.3
..1
31
, escogemos el valor comercial más cercano (C1
= 820pF)
nF R
C FinVcc
V
C VccC
ripple
74100000
1045005.71
05.02
105.7
1
1..1
.2
1.2
99
, escogemos un valor
comercial ( C2=100nF)
Y para R2 según el datasheet se recomienda debe ser de 10K.
Con todos los valores entonces proseguimos con el armado del circuito:
5/14/2018 Labfinal de Control Digital - slidepdf.com
http://slidepdf.com/reader/full/labfinal-de-control-digital 3/8
Del grafico anterior obtenemos que:
0
0.057-0.05=0.007
0
0.175-0.057=0.12
0
k (45-0)/(16-0)=2.81
Donde T<0
/4; T=0.001s
00
02.1
k k p =6.857
02 iT =0.014
05.0 d T =0.0035
Luego:
a= pk =3.32
i
p
T
T k b
=1.083
T
T k c
d p =12.61
Con los valores ingresados obtenemos el siguiente resultado:
5/14/2018 Labfinal de Control Digital - slidepdf.com
http://slidepdf.com/reader/full/labfinal-de-control-digital 4/8
Teniendo en cuenta que es posible modificar todos los parámetros del PID para obtener una mejor
respuesta a la señal de entrada, los valores calculados según a formula anterior son referenciales,
ajustando epiricamente tenemos la salida que muestra la figura aterior.
5/14/2018 Labfinal de Control Digital - slidepdf.com
http://slidepdf.com/reader/full/labfinal-de-control-digital 5/8
El pic 18f4550
Para que el pic detecte al hardware al host-usb en este ejemplo hay que tener en cuenta esta constante:
#include <18F4550.h>
#fuses XTPLL,MCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN,NOPBADEN
#use delay(clock=48000000) #include "usb_cdc.h"
void main() {
...
La constante es el llamado usb_cdc.h y no es el único archivo usado, si miran dentro de este verán
después de varias líneas:
#if __USB_PIC_PERIF__
#if defined(__PCM__)
#error CDC requires bulk mode! PIC16C7x5 does not have bulk mode
#else
#include <pic18_usb.h> //Microchip 18Fxx5x hardware layer for usb.c
#endif
#else #include <usbn960x.c> //National 960x hardware layer for usb.c
#endif
#include "rr2_USB_Cdc_Monitor.h" //USB Configuration and Device descriptors for this UBS device
#include <usb.c> //handles usb setup tokens and get descriptor reports
Como estamos usando el 18f4550 entonces se utilizara el driver pic18_usb.h y además el
rr2_usb_Cdc_Monitor.h y el usb.c
Ahora nos fijamos en el Datasheet del 18f4550 nos encontramos un SFR llamado UIR
5/14/2018 Labfinal de Control Digital - slidepdf.com
http://slidepdf.com/reader/full/labfinal-de-control-digital 6/8
Este SFR contiene los flags de los estados de interrupción seleccionados por UIE
Con este par de bits lo que hacemos es seleccionar el par USB Reset Interrupt y Idle Detect Interrup
Enable bit.
Haciendo las modificaciones al código quedara asi:
/* ejemplo6_parte4_temp.c
en este ejemplo se tratará se ordenará al PIC reconocer la detección del HOST USB de la PC
adaptación del código original de RRCdcUSB de RedPic
Pedro-PalitroqueZ 4/feb/07
*/
#include <18F4550.h>
#fuses XTPLL,NOMCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN,NOPBADEN
#use delay(clock=48000000)
#define use_portb_lcd TRUE
#define USB_CON_SENSE_PIN PIN_E3
#include <lcd.c>
#include "usb_cdc.h"
void main(){
lcd_init(); // llamadas necesarias para iniciar la LCD
usb_cdc_init(); // llamadas necesarias para iniciar el módulo USB
usb_init(); // llamadas necesarias para iniciar el módulo USB
5/14/2018 Labfinal de Control Digital - slidepdf.com
http://slidepdf.com/reader/full/labfinal-de-control-digital 7/8
while(!usb_cdc_connected()) { //bucle eterno
delay_us(500);
}
do{
usb_task();
delay_us(500);
}while (TRUE); // bucle eterno
}
/* ejemplo6_parte4_temp.c
en este ejemplo se tratará se ordenará al PIC reconocer la detección del HOST USB de la PC
adaptación del código original de RRCdcUSB de RedPic
Pedro-PalitroqueZ 4/feb/07
*/
#include <18F4550.h>
#fuses XTPLL,NOMCLR,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL1,CPUDIV1,VREGEN,NOPBADEN
#use delay(clock=48000000)
#define use_portb_lcd TRUE
#define USB_CON_SENSE_PIN PIN_E3
#include <lcd.c>
#include "usb_cdc.h"
void main(){
lcd_init(); // llamadas necesarias para iniciar la LCD
usb_cdc_init(); // llamadas necesarias para iniciar el módulo USB
usb_init(); // llamadas necesarias para iniciar el módulo USB
do{
usb_task();
delay_us(500);
}while (TRUE); // bucle eterno
}
Conclusiones:
Vemos que el control PID llega a controlar no solo la velocidad sino también si le tuviera alguna
obstrucción este tratara de mantener su secuencia de giro.
5/14/2018 Labfinal de Control Digital - slidepdf.com
http://slidepdf.com/reader/full/labfinal-de-control-digital 8/8
Bibliografia:
http://www.unpocodelectronica.netau.net/mis-primeros-pasos-con-el-18f4550#introduccion
http://www.melca.com.ar/datasheets.html