Академический Документы
Профессиональный Документы
Культура Документы
MICROCONTROLADORES AVANZADOS
CON DSPIC”
Presentada por:
GUAYAQUIL – ECUADOR
2009
DEDICATORIA
A nuestros padres
A nuestros profesores
A nuestros compañeros
1
AGRADECIMIENTO
Agradecemos a Dios.
en nuestras vidas.
2
TRIBUNAL DE GRADUACIÓN
_________________________________
Ing. Carlos Valdivieso
Profesor de la Materia de Graduación
____________________________
Ing. Hugo Villavicencio
Delegado del Decano
3
DECLARACIÓN EXPRESA
4
INDICE GENERAL
5
4. DSPIC30F4011.................................................................................................28
4.1 Introduccion ........................................................................................28
4.2 Que es un dsPIC.................................................................................29
4.3 Principales características de los dsPIC .............................................30
4.4 Rango de funcionamiento ...................................................................30
4.5 Estructura del dsPIC30F4011 .............................................................31
4.6 Modelo del Programador.....................................................................32
4.7 El sistema Oscilador ...........................................................................35
4.8 Registro de Control de las Puertas de E/S..........................................37
4.9 Conversor Analógico Digital................................................................38
4.10 Módulo UART ...................................................................................44
6
8. APLICACIÓN: MACERACION DE LA MALTA..................................................61
CONCLUSIONES
RECOMENDACIONES
ANEXOS
BIBLIOGRAFIA
7
INDICE DE ILUSTRACIONES
FIGURAS
8. Figura 8...................................................................................................Registro SR
8
16. Figura 16.....................................................................................Registro ADPCFG
TABLAS
1. Tabla de Costos.....................................................................................................76
9
LISTA DE ABREVIATURAS
SIMBOLO SIGNIFICADO
10
RESUMEN
es recibida por el controlador para luego ser enviada mediante UART del
DSPIC hacia LabView que posee el driver VISA utilizado para realizar la
11
OBJETIVOS
12
INTRODUCCIÓN
circuito que permite recibir la variable que interesa en cada proceso desde
En este proyecto, receptamos los datos que son leídos desde un sensor de
Una de las salidas del receptor de bucle es enviada a una de las entradas
visualizada en LabVIEW.
13
1. Sensor de Temperatura LM35
1.1 Descripción
típico transistor con 3 pines, dos de ellos para alimentarlo (VCC y GND) y el
1.2 Características
• Bajo costo.
14
• La baja impedancia de salida, su salida lineal y su precisa calibración
circuito de control.
1.3 Encapsulado
corriente.
15
FIGURA 1
FIGURA 2
16
2. TRANSMISOR DE CORRIENTE
17
2.3 Diagrama esquemático del transmisor de corriente
FIGURA 3
2.4 Funcionamiento
18
Para todas las tensiones de entrada que estén por debajo de 10 VDC, el
mediante P1.
Una vez que la señal de entrada pasa por el amplificador, se lleva hasta la
19
amplificador operacional IC3b y un transistor bipolar PNP con realimentación
del emisor.
salida del operacional con la base del transistor Q1 para que sea este el que
Una vez que se haya ensamblado el circuito, se debe calibrar con el fin de
y 4 mA.
20
4. Finalmente, para calibrar el nivel superior de la corriente de salida,
deseada
21
3.RECEPTOR DE BUCLE DE 4 A 20mA.
ejemplo: par trenzado, cable coaxial, línea telefónica, la fibra óptica entre
otras.
22
Este circuito recibe una corriente continua entre 4 y 20mA la cual se acopla
de comunicación.
23
3.3 Diagrama de bloques del receptor de bucle
FIGURA 4
24
3.4 Diagrama esquemático del Receptor bucle
FIGURA 5
25
3.5 Funcionamiento
Los seguidores de tensión que se utilizan sirven para acoplar los voltajes
26
3.6 Calibración del Circuito
trimmer P1.
27
4. DSPIC 30F4011
4.1 INTRODUCCIÓN
(Digital Signal Controller), que puede ser traducido como Controlador Digital
de Señal.
28
4.2 ¿Qué es un dsPIC?
Los dsPIC nacen después de que los DSP hayan sido desarrollados durante
fabricantes.
FIGURA 6
29
4.3 PRINCIPALES CARACTERÍSTICAS DE LOS DSPIC
2 acumuladores de 40 bits.
Perro guardián.
30
4.5 Estructura del DSPIC 30F4011
pero siempre tiene el bit menos significativo en clear y el bit mas significativo
31
FIGURA 7
operación de la ALU y la parte más alta del byte del Registro Estado
FIGURA 8
32
registro de tabla de pagina, registros: Do Repeat, Do start Do End, Do Count
FIGURA 9
0x800.
33
Osciladores y Gestión de Energía de los DSPIC 30F:
de los DSPIC:
estabilización de la frecuencia.
34
4.7 El sistema Oscilador
y de un circuito PLL que sirve para elevar la frecuencia del oscilador interno
pero que desde los 10MHz hasta los 25MHz. Todos estos osciladores
respectivamente.
35
frecuencia de oscilación depende de la temperatura y el voltaje del
dispositivo.
FIGURA 10
36
4.8 Registros de Control de las Puertas de E/S
Todos los puertos del DSPIC tienen asociados directamente tres registros de
Registros TRIS: Con este registro de control configuramos los pines de los
puertos si son entradas o salidas. Por defecto cada vez que hay un reset en
Registro LAT: Con los registros LAT escribimos o leemos desde el registro
puertos B, C, D, E, F.
37
Señales del tipo de Oscilador: OSC1, OSC0, SOSC1, SOSC0.
Este DSPIC nos permite convertir una señal análoga en digital con una alta
software
38
Los tres primeros registros son los encargados de controlar al ADC, el
módulo ADC tiene cuatro canales y por último tenemos el registro ADCSSL
que está formado por los pines de entrada analógica, cuatro amplificadores
seleccionadores del canal, los mux para seleccionar el canal y el control para
secuencia y muestro.
39
FIGURA 11
40
El ADCON1 sirve para controlar el funcionamiento del conversor, el
figura veremos los bits encargados para realizar el trabajo que hemos dicho:
FIGURA 12
del ADC, además nos indica que canales están siendo seleccionados en la
FIGURA 13
41
ADCON3: Para seleccionar el tiempo de conversión TAD, el tiempo de
muestreo, para seleccionar la fuente del reloj de conversión y las treinta dos
FIGURA 14
los bits 15,..,8 configuran al MUXB y los bits 7,…,0 configuran al MUX A.
FIGURA 15
42
ADPCFG: Este registro me indica cuales son los pines del DSPIC que
FIGURA 16
FIGURA 17
43
4.10 MODULO UART
caracteres.
USTA: Este registro produce una interrupción cuando enviamos un bit para
recepción.
44
FIGURA 18
FIGURA 19
FIGURA 20
45
5. Uso del Software de programación MiKrobasic for
DSPIC
'************************
'Declaraciones:
'************************
symbol ...
const ...
structure ...
dim ...
46
...
end sub
<local declarations>
...
end sub
'************************
'************************
main:
end.
debemos utilizar las funciones que nos brinda el Mikrobsic como por
ejemplo: ADC Library, LCd Custom Library, PWM Library, y KeyPad Library
y UART Library.
47
5.1 ADC Library
la presentación de la LCD:
48
LCD_FIRST_ROW Mueve el cursor a la primera línea
49
5.3 PWM
Esta librería nos facilita el modulo CCP del DSPIC. La función que nos
función PWM_SET_DUTY.
5.4 KEYPAD
Con esta librería podemos trabajar teclados de 4x1, 4x2, 4x3 y 4x4 donde el
nos sirve para definir en que puerto debe estar conectado el teclado y se
porque esta enviaba el dato cuando habíamos soltado la tecla entonces nos
50
5.5 UART LIBRARY
debe estar en string por lo que demos utilizar mas líneas de programa
debemos convertirlas.
51
6.COMUNICACIÓN SERIE
forma serial como RS232, USB y de forma paralela como GPIB o VIX.
comunicarse.
52
6.1 RS232
como un CDE.
tensiones que son necesarias para el estándar RS232. Otros integrados que
53
Estos conversores son suficientes para manejar las cuatro señales más
utilizadas del puerto serie del PC, que son TX, RX, RTS y CTS.
datos.
6.3 Conectores
convertir los bits serie en paralelo. Siempre debemos evitar que los buffers
FIGURA 21
54
CD: Detector de
1
transmisión
Protección
Figura 22
55
7. Comunicación Serial con LabView:
podemos encontrar: VISA Configurate Serial Port, VISA Write, VISA Read y
en instrumentación.
VISA Configurate Serial Port: Sirve para configurar el puerto serie con los
VISA Write: Al igual que el anterior debemos indicarle desde que puerto el
que debe leer desde el buffer, para darle un valor a este parámetro suele
56
VISA CLOSE: Cierra una sesión VISA. Para abrirlas se usa el VI Instrument
Close <Visa.
VISA Bytes at Serial Port: Es una propiedad del driver VISA, que nos da el
número de bytes que están en el buffer esperando para ser leídos. Aparte de
esta propiedad hay otras que pueden cambiar la configuración del puerto.
control y que en este caso seria el VISA Resource Name en donde haremos
57
7.1 Comunicación Serial entre DSPIC 30F4011 y LabView
nodos.
Lo primero que hicimos en LabView fue configurar el puerto serial con los
Search ID Array:
Esta función me retorna el índice del dato que yo estoy buscando en nuestro
caso yo deseo saber el índice del número 120 que lo escogí porque es valor
58
Split ID Array:
Con esta función yo estoy partiendo los datos que yo envió desde el DSPIC
apartir del número 120 y como vemos esta función me devuelve dos
subarreglos.
Build Array:
Aquí vuelvo a unir el arreglo que había divido apartir del 120 pero con esto
Index Array:
Con esta función Index Array obtenemos cada variable que enviamos desde
Feedback Node:
siguiente.
59
VISA Close:
de nivel alto y bajo del boiler y del mixer. Y los contadores son para simular
60
8. APLICACIÓN: MACERACIÓN DE LA MALTA
61
CONCLUSIONES Y RECOMENDACIONES
comunicación.
que tiene incorporada una unidad MAC de un ciclo de máquina, con lo que
dispositivos de comunicación.
62
Al realizar la comunicación con LabView tuvimos que aumentar la velocidad
de transmisión del valor por defecto del DSPIC que es de 9600 baudios a
57600baudios.
recomienda que los niveles de los tanques sean enviados desde el DSPIC
Para realizar la comunicación tuvimos que eliminar los retardos DELAY que
las variables.
63
ANEXO A
PROGRAMACION EN MIKROBASIC
program bucle2_20ma
64
'Function_KeyPad: Retorna el ASCII para la LCD
sub function kypad (dim ky as byte) as byte
fa=0
if flag1=0 then dly50() end if
if c1=0 then gosub ar ky=49 end if '1
if c2=0 then gosub ar ky=50 end if '2
if c3=0 then gosub ar ky=51 end if '3
fa=1
fb=0
if flag1=0 then dly50() end if
if c1=0 then gosub ar ky=52 end if '4
if c2=0 then gosub ar ky=53 end if '5
if c3=0 then gosub ar ky=54 end if '6
fb=1
fc=0
if flag1=0 then dly50() end if
if c1=0 then gosub ar ky=55 end if '7
if c2=0 then gosub ar ky=56 end if '8
if c3=0 then gosub ar ky=57 end if '9
fc=1
fd=0
if flag1=0 then dly50() end if
if c1=0 then gosub ar ky=42 end if '*
if c2=0 then gosub ar ky=48 end if '0
if c3=0 then gosub ar ky=35 end if '#
fd=1
result=ky
ar:
if c1=0 then goto ar end if
if c2=0 then goto ar end if
if c3=0 then goto ar end if
return
end sub
65
case 49 result=1
case 50 result=2
case 51 result=3
case 52 result=4
case 53 result=5
case 54 result=6
case 55 result=7
case 56 result=8
case 57 result=9
end select
end sub
end sub
'******* Programa_Principal ********
main:
66
adpcfg = $fef7 'RB3/RB8: Analog Inputs antes fff7
'**********************************************************
' Presentando Mensajes del Proceso y Escoger Temperatura
'**********************************************************
lcd_out(1,1," ***Proceso***") lcd_out(2,3,"Maceracion")
porte.0=0 dly2000() 'On 1foco_ port2.0
porte.8=0
s2:
clear_lcd()
lcd_out(1,2,"Temp de Mezcla:") ' Receta Del Maestro Cervecero
lcd_out(2,5,"49<Tm<61") dly2000() clear_lcd()
lcd_out(1,2,"Temp de Mezcla:")
lcd_cmd(lcd_second_row)
'**********************************************************
' Inicializando Variables Para Ingresar La Temperaura
' por el Teclado: n_current/n_before/num
'**********************************************************
67
do
n_current=kypad(25) 'Retorna el ASCII para la LCD
n_current2=n_current 'Respaldo del codigo ASCII
n_current=convert1(n_current) 'Obtengo el verdadeero número
if n_current2=25 then goto s3 end if
if n_current2=35 then break end if
if n_current2=42 then 'Tecla * es invalida
clear_lcd()
lcd_out(1,8,"*") lcd_out(2,2,"Tecla_InValida")
dly2000() clear_lcd() lcd_out(1,2,"Temp de Mezcla:")
lcd_cmd(lcd_second_row) goto s2
end if
clear_lcd()
if ((n_before<61) and (n_before>49)) then
lcd_out(1,1,"Temp_Correcta:")
wordtostr(num,txt1)
lcd_out(2,3,txt1)
lcd_chr(2,9,111) lcd_chr(2,10,67)
dly2000()
else
lcd_out(1,1,"Temp_Incorrecta:")
wordtostr(num,txt1)
lcd_out(2,3,txt1)
lcd_chr(2,9,111) lcd_chr(2,10,67) 'lcd_chr(2,5,num)
dly2000()
goto s2
end if
pot3=adc_read(3)
f_pot3=pot3*0.146 '
fin:
'**************************************************************
' Inicializando Comunicacion con LabView utilizando el UART
'**************************************************************
uart_write_char(120)
68
uart_write_char(s1) uart_write_char(s2)
uart_write_char(s3) uart_write_char(s4)
uart_write_char(b1) uart_write_char(ev1)
uart_write_char(b2) uart_write_char(ev2)
uart_write_char(boiler)
comunicacion(f_pot3)
flag1=1
do
pot3=adc_read(3)
f_pot3=pot3*0.146
uart_write_char(120)
uart_write_char(s1) uart_write_char(s2)
uart_write_char(s3) uart_write_char(s4)
uart_write_char(b1) uart_write_char(ev1)
uart_write_char(b2) uart_write_char(ev2)
uart_write_char(boiler)
comunicacion(f_pot3)
loop until 51=kypad(25) '#3= s2
s2=0
uart_write_char(120)
uart_write_char(s1) uart_write_char(s2)
uart_write_char(s3) uart_write_char(s4)
uart_write_char(b1) uart_write_char(ev1)
uart_write_char(b2) uart_write_char(ev2)
uart_write_char(boiler)
comunicacion(f_pot3)
do
pot3=adc_read(3)
f_pot3=pot3*0.146
uart_write_char(120)
uart_write_char(s1) uart_write_char(s2)
uart_write_char(s3) uart_write_char(s4)
69
uart_write_char(b1) uart_write_char(ev1)
uart_write_char(b2) uart_write_char(ev2)
uart_write_char(boiler)
comunicacion(f_pot3)
loop until 50=kypad(25) '#2= s1
porte.0=1 'foco_ON
s1=1 b1=0 b2=0 boiler=1
uart_write_char(120)
uart_write_char(s1) uart_write_char(s2)
uart_write_char(s3) uart_write_char(s4)
uart_write_char(b1) uart_write_char(ev1)
uart_write_char(b2) uart_write_char(ev2)
uart_write_char(boiler)
comunicacion(f_pot3)
do
pot3=adc_read(3)
f_pot3=pot3*0.146
uart_write_char(120)
uart_write_char(s1) uart_write_char(s2)
uart_write_char(s3) uart_write_char(s4)
uart_write_char(b1) uart_write_char(ev1)
uart_write_char(b2) uart_write_char(ev2)
uart_write_char(boiler)
comunicacion(f_pot3)
loop until f_pot3>=num
boiler=0 porte.0=0 'foco_off
uart_write_char(120)
uart_write_char(s1) uart_write_char(s2)
uart_write_char(s3) uart_write_char(s4)
uart_write_char(b1) uart_write_char(ev1)
uart_write_char(b2) uart_write_char(ev2)
uart_write_char(boiler)
comunicacion(f_pot3)
do
pot3=adc_read(3)
f_pot3=pot3*0.146
uart_write_char(120)
uart_write_char(s1) uart_write_char(s2)
uart_write_char(s3) uart_write_char(s4)
uart_write_char(b1) uart_write_char(ev1)
uart_write_char(b2) uart_write_char(ev2)
70
uart_write_char(boiler)
comunicacion(f_pot3)
loop until f_pot3<=45
ev1=1 s4=0 s1=0
do
pot3=adc_read(3)
f_pot3=pot3*0.146
uart_write_char(120)
uart_write_char(s1) uart_write_char(s2)
uart_write_char(s3) uart_write_char(s4)
uart_write_char(b1) uart_write_char(ev1)
uart_write_char(b2) uart_write_char(ev2)
uart_write_char(boiler)
comunicacion(f_pot3)
loop until 53=kypad(25) '#5_sensor s3
porte.8=1 cnt1=0
s3=1 ev1=0 mix=1 s2=1
do
inc(cnt1)
pot3=adc_read(3)
f_pot3=pot3*0.146
uart_write_char(120)
uart_write_char(s1) uart_write_char(s2)
uart_write_char(s3) uart_write_char(s4)
uart_write_char(b1) uart_write_char(ev1)
uart_write_char(b2) uart_write_char(ev2)
uart_write_char(boiler)
comunicacion(f_pot3)
loop until cnt1>5000
porte.8=0
mix=0 ev2=1 s3=0
do
pot3=adc_read(3)
f_pot3=pot3*0.146
uart_write_char(120)
uart_write_char(s1) uart_write_char(s2)
uart_write_char(s3) uart_write_char(s4)
uart_write_char(b1) uart_write_char(ev1)
uart_write_char(b2) uart_write_char(ev2)
uart_write_char(boiler)
comunicacion(f_pot3)
71
loop until 54=kypad(25) '#6_sensor s4
s4=1 ev2=0
uart_write_char(120)
uart_write_char(s1) uart_write_char(s2)
uart_write_char(s3) uart_write_char(s4)
uart_write_char(b1) uart_write_char(ev1)
uart_write_char(b2) uart_write_char(ev2)
uart_write_char(boiler)
comunicacion(f_pot3)
goto fin
end.
72
ANEXO B
PLACAS UTILIZADAS
ACONDICIONADOR DE SEÑAL
Figura b1
TRANSMISOR DE CORRIENTE
Figura b2
73
RECEPTOR DE BUCLE
Figura b3
Figura b4
74
DIAGRAMA DE PINES DEL DSPIC30F4011
Figura b5
CONTROLADOR
Figura b6
75
ANEXO C
TABLAS DE COSTOS
Acondicionador
Descripción Cantidad Precio Unitario Precio Total
Sensor LM35 1 $ 4.00 $ 4.00
Amplificadores Operacionales LF353 1 $ 0.50 $ 0.50
Resistencia de 1K -1/4 W 4 $ 0.05 $ 0.20
Trimmer Multivueltas de 10 K - 1/4W 1 $ 0.70 $ 0.70
Circuito impreso 1 $ 1.50 $ 1.50
Bases de 8 pines 1 $ 0.15 $ 0.15
Conectoras de tornillo de 2 pines para
2
PBC $ 0.20 $ 0.40
Conectoras de tornillo de 3 pines para
1
PBC $ 0.20 $ 0.20
Total $ 7.65
76
Transmisor de Corriente
Descripción Cantidad Precio Unitario Precio Total
Componentes Electrónicos
Amplificadores Operacionales
3
LF353 $ 0.50 $ 1.50
Resistencia de 1K- 1/4 W 1 $ 0.05 $ 0.05
Resistencia de 10K- 1/4 W 4 $ 0.05 $ 0.20
Resistencia de 470-1/4 W 1 $ 0.05 $ 0.05
Trimmer Multivueltas de 100 K 1 $ 0.70 $ 0.70
Trimmer Multivueltas de 50 K 2 $ 0.70 $ 1.40
Accesorios Electromecánicos
Circuito Impreso 1 $ 3.00 $ 3.00
Conector Tipo Cerca de 3 pines 1 $ 0.30 $ 0.30
Bases para circuitos integrado
3
de 8 pines $ 0.15 $ 0.45
Conector en línea de 3 pines 1 $ 0.40 $ 0.40
Conectoras de tornillo de 2
2
pines para PBC $ 0.20 $ 0.40
Jumper 1 $ 0.20 $ 0.20
Total $ 8.65
77
Receptor Bucle de 4-20 mA
Descripción Cantidad Precio Unitario Precio Total
Circuito Integrado Fototransistor
1
4N25 $ 0.50 $ 0.50
Amplificadores Operacionales
3
LF353 $ 0.50 $ 1.50
Resistencia de 390 - 1/4 W 1 $ 0.05 $ 0.05
Resistencia de 150- 1/4 W 1 $ 0.05 $ 0.05
Resistencia de 470 - 1/4W 1 $ 0.05 $ 0.05
Resistencia de 10K -1/4 W 6 $ 0.05 $ 0.30
Resistencia de 4.7K -1/4 W 2 $ 0.05 $ 0.10
Resistencia de 2.7K -1/4 W 1 $ 0.05 $ 0.05
Trimmer Multivueltas de 100 K 1 $ 0.70 $ 0.70
Trimmer Multivueltas de 50 K 1 $ 0.70 $ 0.70
Diodos rápidos de propósito
3
General $ 0.20 $ 0.60
Diodo zener de 5.1 V -1W 1 $ 0.30 $ 0.30
Diodos Led de 3mm, rojos 2 $ 0.30 $ 0.60
Circuito Impreso 1 $ 3.00 $ 3.00
Bases de 8 pines 4 $ 0.15 $ 0.60
Conector en línea de 3 pines 1 $ 0.40 $ 0.40
Conectoras de tornillo de 2 pines
1
para PBC $ 0.20 $ 0.20
Total $ 7.60
78
Fuente de Alimentación de +5, +12 y -12 VDC/ 1A
Descripción Cantidad Precio Unitario Precio Total
IC-REG 7805 1 $ 0.50 $ 0.50
IC-REG 7812 1 $ 0.50 $ 0.50
IC-REG 7912 1 $ 0.50 $ 0.50
Puente Rectificador 1 $ 1.00 $ 1.00
Capacitor 2200uF/25V 2 $ 0.50 $ 1.00
Capacitor 0,1uF/50V 3 $ 0.50 $ 1.50
Jumper 1 $ 0.20 $ 0.20
Conectoras de tornillo de 3 2
pines para PBC $ 0.20 $ 0.40
Transformador 14-014/2A 1 $ 5.00 $ 5.00
Cable 110V 1 $ 2.00 $ 2.00
Disipadores To-220 3 $ 0.70 $ 2.10
Circuito Impreso 1 $ 4.00 $ 4.00
Total $ 18.70
79
Control Principal
Descripción Cantidad Precio Unitario Precio Total
Max232 1 $ 3.00 $ 3.00
Capacitores electrolíticos
4
10uF - 25V $ 0.10 $ 0.40
Conector DB9 Hembra 1 $ 1.50 $ 1.50
DsPic 30F4011 1 $ 11.50 $ 11.50
Resistencia de 10K -1/4 W 3 $ 0.05 $ 0.15
Teclado 1 $ 5.00 $ 5.00
LCD 1 $ 10.50 $ 10.50
Conector en línea de 16
1
pines $ 0.80 $ 0.80
Conector en línea de 7 pines 1 $ 2.80 $ 2.80
Conector en linea de 1 pines 1 $ 0.20 $ 0.20
Circuito Impreso 1 $ 9.20 $ 9.20
Total $ 35.85
80
ANEXO D
Manual de Usuario
empiece el proceso.
5. Ejecutar LabVIEW.
81
7. Inmediatamente se envía una señal para encender el foco (horno) el
tanque mezclador.
lo realizará por unos segundos y luego abrirá una válvula para extraer
el producto.
proceso se reinicia.
82
ANEXO E
GRAFICAS DE LABVIEW
FIGURA E1
83
84
BIBLIOGRAFIA
3. URL: www.datasheetcatalog.net
http://ww1.microchip.com/downloads/en/DeviceDoc/70135F.pdf
http://ww1.microchip.com/downloads/en/DeviceDoc/70046E.pdf.
85