Estos microcontroladores de 16 bits aủaden a las prestaciones tớpicas de los MCU anteriores los re- cursos hardware y software propios de los DSP (Procesadores Digitales de Seủales) lo que permite utilizarlos en las extraordinarias aplicaciones relacionadas con el procesado digital de seủales. In- tentan aprovechar todas las ventajas de los microcontroladores MCU y de los DSP y Microchip les identifica con el nombre DSC: Controladores Digitales de Seủales.
Los DSC constan de dos familias, la dsPIC30F y la dsPIC33F. Los modelos de la familia dsPIC30F tienen importantes capacidades de memoria, contienen la mayoría de los recursos y periféricos y tie- nen un rendimiento de 30 MIPS cuando se les alimenta con un voltaje comprendido entre 4,5 y 5,5 V.
Incorporan un “motor DSP” en el Camino de Datos que les permite realizar las instrucciones que rea-
Modelo Patitas FLASH
(KB) RAM CANALES DMA
Timer 16-bit
Módulo Capt.
Módulo
Comp. ADC UART SPITMI2CTMCANLíneas de E/S
24HJ64GP206 64 64 8 8 9 8 8 1 ADC
18 CAN. 2 2 1 0 53
24HJ64GP210 100 64 8 8 9 8 8 1 ADC
32 CAN. 2 2 2 0 85
24HJ64GP506 64 64 8 8 9 8 8 1 ADC
18 CAN. 2 2 2 1 53
24HJ64GP510 100 64 8 8 9 8 8 1 ADC
32 CAN. 2 2 2 1 85
24HJ128GP206 64 128 8 8 9 8 8 1 ADC
18 CAN. 2 2 2 0 53
24HJ128GP210 100 128 8 8 9 8 8 1 ADC
32 CAN. 2 2 2 0 85
24HJ128GP506 64 128 8 8 9 8 8 1 ADC
18 CAN. 2 2 2 1 53
24HJ128GP510 100 128 8 8 9 8 8 1 ADC
32 CAN. 2 2 2 1 85
24HJ128GP306 64 128 16 8 9 8 8 1 ADC
18 CAN. 2 2 2 0 53
24HJ128GP310 100 128 16 8 9 8 8 1 ADC
32 CAN. 2 2 2 0 85
24HJ256GP206 64 256 16 8 9 8 8 1 ADC
18 CAN. 2 2 2 0 53
24HJ256GP210 100 256 16 8 9 8 8 1 ADC
32 CAN. 2 2 2 0 85
Figura 1.19. Principales características de los 13 modelos de microcontroladores PIC de 16 bits de la familia PIC24H.
lizan las operaciones matemáticas típicas de los algoritmos usados en el procesamiento digital de las seủales. Segỳn la orientaciún prỏctica de los modelos los dsPIC30F se dividen en tres categorớas:
a) dsPIC30F de Propósito General, con 8 modelos.
b) dsPIC30F de Control de Motores, con 9 modelos.
c) dsPIC30F para Control de Sensores, con 4 modelos.
Los dispositivos pertenecientes a la familia dsPIC33F son compatibles con los dsPIC30F puesto que tienen el mismo repertorio de instrucciones, la misma distribución del patillaje y utilizan las mis- mas herramientas de desarrollo. Sin embargo los dsPIC33F se distinguen por las siguientes cualidades:
Figura 1.20. Relación de algunos modelos de dsPIC30F destinados al Control de Motores con sus características.
Modelo PatitasMem. de programa
RAM Bytes
EEPROM Bytes
Timer 16-bit
Módulo Capt.
Módulo Comp. PWM
CAD 10 bits 500 ksps
QEI UART SPITMI2CTMCAN
dsPIC30F2010 28 12K/4K 512 1024 3 4 2 6 canales 6 canales SI 1 1 1 -
dsPIC30F3010 28 24K/8K 1024 1024 5 4 2 6 canales 6 canales SI 1 1 1 -
dsPIC30F4012 28 48K/16K 2048 1024 5 4 2 6 canales 6 canales SI 1 1 1 1
dsPIC30F3011 40/44 24K/8K 1024 1024 5 4 4 6 canales 9 canales SI 2 1 1 -
dsPIC30F4011 40/44 48K/16K 2048 1024 5 4 4 6 canales 9 canales SI 2 1 1 1
dsPIC30F5015 64 66K/22K 2048 1024 5 4 4 8 canales 16 canales SI 1 2 1 1
dsPIC30F6010 80 144K/48K 8192 4096 5 8 8 8 canales 16 canales SI 2 2 1 2
1. Se alimentan con 3,3 V aunque las E/S pueden trabajar con niveles TTL.
2. Incorporan un Controlador DMA de 8 canales.
3. Aumenta el número de interrupciones y excepciones.
4. Alcanza un rendimiento de 40 MIPS.
5. Posee un interfaz para CODEC.
6. Hay modelos con 256 KB de memoria FLASH y 30 KB de RAM.
Existe un total de 27 dispositivos dsPIC33F, 15 de los cuales se encuadran dentro de los de Pro- pósito General y el resto en el de Control de Motores. (Figura 1.21.) No disponen de EEPROM.
Los modelos dsPIC33F de Propósito General son adecuados para aplicaciones de voz y audio, seguridad, electromedicina, módem, etc. Los agrupados en el Control de Motores se orientan a los electrodomésticos como las lavadoras, al control de la dirección electrónica de automóviles, control medioambiental, sistemas de alimentación ininterrumpible, inversores y a matrices de iluminación con LED. En la Figura 1.22 se muestra el diagrama por bloques correspondiente a la estructura in- terna de los dsPIC33F.
Modelo Patitas FLASH (Kbyte) RAM
(Kbyte) Timer 16 bits
Módulo Capt.
Módulo Comp.
Convertidor
ADC UART SPITM I2CTM CAN Líneas de E/S
33FJ64GP206 64 64 8 9 8 8 1 A/D
18 CAN. 2 2 1 0 53
33FJ64GP306 64 64 16 9 8 8 1 A/D
18 CAN. 2 2 2 0 53
33FJ64GP310 100 64 16 9 8 8 1 A/D
32 CAN. 2 2 2 0 85
33FJ64GP706 64 64 16 9 8 8 2 A/D
18 CAN. 2 2 2 2 53
33FJ64GP708 80 64 16 9 8 8 2 A/D
24 CAN. 2 2 2 2 69
33FJ64GP710 100 64 16 9 8 8 2 A/D
32 CAN. 2 2 2 2 85
33FJ128GP206 64 128 8 9 8 8 1 A/D
18 CAN. 2 2 1 0 53
33FJ128GP306 64 128 16 9 8 8 1 A/D
18 CAN. 2 2 2 0 53
33FJ128GP310 100 128 16 9 8 8 1 A/D
32 CAN. 2 2 2 0 85
33FJ128GP706 64 128 16 9 8 8 2 A/D
18 CAN. 2 2 2 2 53
33FJ128GP708 80 128 16 9 8 8 2 A/D
24 CAN. 2 2 2 2 69
33FJ128GP710 100 128 16 2 A/D
32 CAN. 2 2 2 2 85
33FJ256GP506 64 256 16 9 8 8 1 A/D
32 CAN. 2 2 2 1 53
33FJ256GP510 100 256 16 9 8 8 1 A/D
32 CAN. 2 2 2 1 85
33FJ256GP710 100 256 30 9 8 8 2 A/D
32 CAN. 2 2 2 2 85
Figura 1.21. Tabla con las características principales de algunos modelos de la familia dsPIC33F.
Figura 1.22.Diagrama por bloques de la estructura interna de los dsPIC33F.
Temporizador 16 bits
Busperiférico
Watchdog CAD de 12 bits y 16 canales CAD de 12 bits y 16 canales
UART(2) I2CTM(2) SPITM(2) CAN (1-2) CODEC I/F MOTOR
DSP JTAG & Emul.
Interfaz
Acumuladores A y B Registro de Desplazamiento Multiplicador
17 X 17
Generación de direcciones BUS DE MEMORIA
PROCESADOR DE 16 BITS Y 40 MIPS FLASH
64-256KB
RAM 8-30 KB
Control de Motores DMA
ALU-16 bit Banco de Registros 16 x 16
RECORDANDO EL VIEJO PIC16F84
En esta sección demostraremos, capítulo a capítulo, que la programación de los nuevos PIC hace más sencilla la realización de ciertas tareas en muchos casos, como consecuencia de sus recursos.
Todo es cuestión de probar y no quedarse en meros espectadores, así que manos a la obra que co- mienza la función y usted es el principal actor.
Enunciado
Vamos a comenzar recordando cómo se trabaja con el PIC16F84 para pasar luego a mayores con los PIC16F87x y los PIC18F.
Tenemos un PIC16F84 trabajando a 4 MHz, en el cual se han conectado 2 interruptores en las lí- neas RA1 y RA2 de la Puerta A y 2 LEDs en las líneas RB0 y RB1 de la Puerta B.
El programa debe mostrar cuándo el valor lógico que introducen ambos interruptores es cero. Pa- ra ello, si los dos interruptores introducen por la Puerta A nivel lógico 0, los LEDs de la Puerta B deben encenderse, y en los demás casos permanecen apagados.
Esquema eléctrico
Tras entender lo que se pide hay que especificar el esquema eléctrico del circuito para saber cómo están conectados los periféricos. (Figura 1.23.) En dicho esquema se representa el PIC, con los ele- mentos auxiliares que siempre necesita (cristal, alimentación y circuito de reset), y los periféricos de entrada/salida que se utilizan en cada momento.
En este ejercicio tanto los interruptores como los LEDs están conectados para ser activos por ni- vel alto. En el caso de los interruptores este hecho no altera la resolución del problema, pero si los LED estuvieran conectados para activarse por nivel bajo, el valor para encenderlos y apagarlos se- ría justamente el contrario.
Organigrama
Otra práctica muy recomendable antes de empezar a programar es plasmar en un organigrama la for- ma de resolver el problema. (Figura 1.24.)
Cuanto más complicado sea dicho enunciado, más abstracto será el organigrama, pudiendo in- cluso necesitarse varios para llegar a un nivel aceptable de concretización. Al contrario, si el pro- blema es sencillo el programa es casi una traducción inmediata del organigrama a código.
Programar PIC es fácil
23
Figura 1.23. Esquema eléctrico correspondiente al ejercicio propuesto.
Figura 1.24. Organigrama del ejercicio.
Programa comentado
Una vez dados estos pasos previos estamos en disposición de comenzar la programación.
Vamos a seguir unas reglas básicas a la hora de escribir los programas que, aunque no son obli- gatorias, facilitan la lectura y la comprensión.
Siguiendo estas normas y en base al esquema eléctrico y al organigrama se obtiene el programa que aparece bajo estas líneas. Antes de continuar, ¿por qué no intenta resolverlo usted mismo y com- prueba luego cómo anda su práctica de programación con los PIC? Recuerde que no hay un modo único de resolución y que se aprende practicando y cometiendo errores.
1.a Tanto las directivas como las etiquetas se escribirán con mayúsculas, así como las instrucciones serán escritas en minúsculas.
2.a Las instrucciones deberán tabularse con respecto a las etiquetas.
3.a Se pondrán comentarios que aclaren el contenido de instrucciones y rutinas.
LIST P=16F84 ; Se indica el tipo de
; procesador
RADIX HEX ; Sistema de numeración
; hexadecimal
INCLUDE ôP16F84.INCằ ; Se incluye la definiciún de
; los registros internos en
; una librería
ORG 0x00 ; Inicio en el Vector de
; Reset
goto INICIO ; Va a la primera instrucción
; del programa
ORG 0x05 ; Salta el Vector de
; Interrupción
INICIO bsf STATUS,RP0 ; Cambio al banco 1
clrf TRISB ; Puerta B como salida
movlw b’00000110’ ; RA1-RA2 entradas
movwf TRISA
bcf STATUS,RP0 ; Cambio a banco 0
clrf PORTB ; Borrado de LEDs
clrf PORTA ; Borrado de líneas no
; utilizadas de Puerta A
BUCLE movf PORTA,W ; Puerta A W
btfss STATUS,Z ; Comprobación de Z = 1
goto APAGAR ; Si RA1-RA2 no son 0
goto ENCENDER ; Si RA1-RA2 son 0
APAGAR clrf PORTB ; Se apagan los LEDs
goto BUCLE ; Para volver a comprobar
ENCENDER movlw 0xFF ; Se encienden los LEDs
movwf PORTB
goto BUCLE ; Para volver a comprobar
END ; Fin de programa
Llega la hora de probar la solución del problema para ver si se comporta como está previsto.
Los pasos a realizar serán siempre los siguientes:
Se explican a continuación detalladamente los tres últimos pasos.
Utilización del ensamblador MPASM
El ensamblador MPASM es un programa de libre distribución que se puede obtener en la página web de Microchip, y que sirve para ensamblar ficheros con extensión ASM. Su aspecto se muestra en la Figura 1.25.
Para desplazarse por los campos de la pantalla se usan los cursores y el tabulador. Los pasos pa- ra ensamblar un programa son:
1.o Llamar a un editor de textos cualquiera y copiar el programa. Grabarlo sin formato con extensión
ôASMằ.
2.o Ensamblarlo con el ensamblador de Microchip llamado MPASM. Corregir errores si los hubiera volviendo al paso 1º.
3.o Grabar el microcontrolador utilizando, por ejemplo, el sistema de desarrollo Micro’PIC Trainer y su software de grabación PICME-TR.
4.o Probar la solución utilizando los periféricos contenidos en el Micro’PIC Trainer.
Figura 1.25. Aspecto del ensamblador MPASM.
Grabación y prueba de un programa en el Micro’PIC Trainer
El sistema de desarrollo Micro’PIC Trainer está ideado para grabar en el microcontrolador el pro- grama, una vez ensamblado y convertido en formato HEX, y probar posteriormente dicho progra- ma utilizando los periféricos de que dispone. Más información en www.microcontroladores.com.
Empezaremos nuestro acercamiento a la placa identificando las partes más importantes de la misma, tal y como se muestra en la Figura 1.26.
1.o En el campo Source Filese introduce el nombre del fichero con extensión ASMa ensamblar jun- to con su ruta de acceso. Si ésta no se conoce se deberá pulsar Enterpara que aparezca la lista de ficheros y directorios.
2.o En el campo Processor Typese busca el microcontrolador para el cual está pensado el progra- ma, en nuestro caso el PIC16F84. Para cambiar los valores se utiliza el Enter.
3.o Al introducir el nombre del archivo en el primer paso, el programa rellena de forma automática la mayoría de los campos restantes. Por defecto, genera dos ficheros con el mismo nombre que el ASM; uno con extensión ERR, donde se detallan los errores de ensamblado, y que se puede mirar con cualquier editor, y otro con extensión HEX, que será el que se grabe en el microcon- trolador.
4.o Por último, se procede a ensamblar el programa pulsando F1 .
5.o En el caso de que se produzcan errores habrá que abrir el fichero ERRcon un editor de texto pa- ra ver su/s causa/s, corregirla/s en el programa fuente y volver a realizar los pasos para ensam- blarlo.
Figura 1.26. Sistema de desarrollo Micro’PIC Trainer con las partes mỏs significativas seủaladas.
Cortesía de “Ingeniería de Microsistemas Programados S. L.”.
PUERTO PARALELO
L LCCDD ALIMENTACIÓN
J9 J10
POTENCIÓMETROS
JUMPERS A/D
INTERRUPTORES 7
7SSEEGG L LEEDDSS
P PIICC--2288
JUMPERS
PICBUS
PIC-18
Antes de utilizar los periféricos arriba descritos hay que grabar el programa en el PIC. Se reali- zarán los siguientes pasos:
1.o Introducir el PIC adecuado en el zócalo correspondiente.
2.o Conectar la fuente de alimentación de 12 VAC a la placa y a un enchufe de 220 VAC estándar.
3.o Unir el PC con la placa mediante un cable paralelo.
4.o Quitar los jumpers que habilitan/deshabilitan el LCD, el display y la barrita de LEDs.
5.o Abrir el programa de grabación PICME-TR, mostrado en la Figura 1.27.
1.a Alimentación: aquí se conecta la fuente de alimentación, que debe proporcionar 12 VAC.
2.a Puerto paralelo: mediante un cable paralelo se conecta la placa con el PC. Es necesario para efectuar la grabación del microcontrolador.
3.a Picbus: por este conector salen al exterior todas las líneas del PIC que se encuentren en el zó- calo de la placa. Sirve para realizar ampliaciones de periféricos, ya que permite conectar los PIC- BUS de diferentes placas. Hay que tener cuidado de que dichas ampliaciones no causen inter- ferencias en las seủales de los perifộricos que ya se encuentran en la placa, deshabilitando en caso contrario alguno de ellos.
4.a PIC-18: es el zócalo donde se insertan los PIC de 18 patitas, como por ejemplo el PIC16F84.
5.a PIC-28: éste es el zócalo en el que se insertan los PIC de 28 patitas, caso de los 16F873/6. Sólo se debe introducir un PIC en uno de los dos zócalos.
6.a Jumpers: sirven para conectar o desconectar el LCD, el display de 7 segmentos y la barrita de LEDs.
7.a Interruptores: están conectados a las cinco líneas de la puerta A. Para poder utilizarlos los jum- pers A/D, situados en la zona central de la placa entre los interruptores y los potenciómetros, de- ben estar en la posiciún de ôdigitalằ. Ademỏs, el jumper ôJ9ằ, situado en la parte superior de- recha del LCD, tiene que estar en la posiciún ôA4ằ. Si este jumper estuviese en su posiciún T0CK quedaría deshabilitado el interruptor de la placa y podríamos usar esta entrada para otras cosas, como por ejemplo, para conectar una fuente de impulsos externa para el TMR0.
8.a LEDs: estỏn conectados a la puerta B. Para utilizarlos el Jumper serigrafiado como ôLED ONằ
debe estar cerrado. En esta posición todo lo que salga por la puerta B del PIC se representará en la barrita de LEDs. El jumper ôJ10ằ, situado en la parte superior del LCD, debe estar en la po- siciún ôB0ằ. Si este jumper estuviese en la posiciún ôINTằ la salida por la lớnea RB0 quedarớa deshabilitada, y ộsta podrớa usarse, por ejemplo, como entrada para una seủal de interrupciún externa.
9.a Display 7seg: el display de siete segmentos también está conectado a la puerta B del PIC. Para que este perifộrico funcione, el Jumper ôDIS ONằ debe estar cerrado y el ôJ10ằ en su posiciún
ôB0ằ.
10.a LCD: este periférico es el que más conexiones requiere. Comparte las ocho líneas de la puerta B con el display de siete segmentos y la barrita de LEDs, y además utiliza RA0, RA1 y RA2 co- mo líneas de control. Por este motivo, cada vez que queramos enviar información al LCD, los in- terruptores que comparten estas mismas líneas deben estar a 1 (hacia arriba). Además, el jum- per ôLCD ONằ debe estar cerrado y el ôJ10ằ en su posiciún ôB0ằ.
11.a Jumpers A/D: seleccionan quộ seủales entrarỏn en las lớneas RA0-RA4 del PIC. En la posiciún
ôDigitalằ conectan los interruptores y en la posiciún ôAnalúgicoằ los potenciúmetros.
12.a Potenciúmetros: sirven para introducir seủales analúgicas a los PIC que poseen conversores analógico/digitales. Es importante que los Jumpers A/D estén bien configurados para que no existan conflictos entre estos potenciómetros y los interruptores.
Si vuelve al programa que acabamos de realizar y grabar, comprobará que las líneas de E/S han sido configuradas de modo que coincidan con los periféricos dispuestos en el Micro’PIC Trainer.
Para este primer programa sólo necesitamos dos interruptores y la barra de diodos LED, de mo- do que desconecte la pantalla LCD y el display de 7 segmentos abriendo sus jumpers correspon- dientes.
Asegúrese de que los jumpers A/D de las líneas RA1-RA2 están en la posición Digital e introduz- ca ahora diferentes combinaciones para comprobar el funcionamiento del programa. Si éste no se com- porta como esperaba no es un fallo sintáctico, ya que los errores han sido corregidos hasta obtener un programa correctamente ensamblado. El fallo será semántico, es decir, deberá repasar el código fuente para comprobar en qué punto difieren el organigrama del programa en ensamblador y corregirlo.
6.o Dentro de este programa pulsar los siguientes botones:
a) Abrirel Ficheroensamblado. En el Buffer de Memoria de Programaaparecerá el fichero en for- mato HEX.
b) Borrarel PIC.
c) Comprobarel Borradodel PIC.
d) Poner la Palabra de Configuración con las opciones:
– Código Protegido: NO.
– Watchdog Timer: NO.
– Oscilador: XT.
– Power Timer: SÍ.
e) Programar Todoel programa en el PIC.
f) Verificarla programación del PIC.
7.o Conectar los jumpers que se han quitado antes, correspondientes a los periféricos que se van a utilizar.
Figura 1.27. Aspecto del programa de grabación PICME-TR.
PRESENTACIÓN DE LOS SENSORES ANALÓGICOS MÁS UTILIZADOS
Aunque el PIC16F84 sirve para realizar un sinfín de aplicaciones comerciales y su aprendizaje es muy didáctico y sencillo, existen ciertas aplicaciones muy comunes para las cuales este PIC no sir- ve. Estamos hablando de aquellas que requieren la utilización de sensores analógicos. Vamos a pre- sentar en este apartado dos sensores que, aunque muy utilizados en diversos aparatos que maneja- mos a diario, no eran soportados directamente por el PIC16F84. Los nuevos PIC16F87x, al disponer de Conversor A/D, pueden usarlos cómodamente.
El sensor de luminosidad: LDR
Un sensor de luminosidad tipo LDR es un elemento cuya resistencia entre bornes varía en función de la luz que incide sobre su superficie. Así, cuando no existe luz presenta una resistencia infinita y su resistencia va decreciendo, hasta llegar a cero, según va aumentando la luz.
Su uso puede ser interesante en todas aquellas aplicaciones en las cuales el hecho de existir más o menos luz determine cierto comportamiento del sistema. Por ejemplo, la iluminación de la entrada a una vivienda, de una habitación o de un criadero de peces, puede regularse automáticamente de mo- do que se active una o varias bombillas con la detección de determinados niveles de luminosidad.
Es un elemento sin polaridad y se puede encontrar con diferentes diámetros según el rango de va- lores de luminosidad que sea capaz de diferenciar. (Figura 1.28.)
Diseủar con PIC es fỏcil
30
Figura 1.28. Aspecto y circuito práctico de una LDR.
A la derecha de la Figura 1.28 se muestra el esquema de conexionado al PIC. La tensión gene- rada según el grado de luminosidad se aplicará por una de las patitas analógicas del PIC16F87x de- bidamente configurada, y será transformada en un valor digital para su tratamiento posterior. Cuan- do no exista luz, el voltaje de salida, VOUT, será 5 V y con luminosidad máxima 0 V.
El sensor de temperatura estándar: LM35
Otro sensor analógico ampliamente utilizado es el de temperatura. En el mercado existen muchos modelos de sensores de temperatura y su elección depende de diversos parámetros, como pueden ser el rango de temperaturas que sean capaces de admitir, la precisión necesaria, el coste, la resistencia que debe presentar a ciertas condiciones ambientales, etc.
En la siguiente tabla se presentan los valores de algunos de estos sensores.
Uno de los sensores más utilizados es el LM35, por lo que se considera estándar. Sus caracterís- ticas son:
En la Figura 1.29 se muestra el aspecto externo de un sensor de temperatura estándar. La patita +VSse debe conectar a la tensión positiva, comprendida entre +4 V y +30 V. GND será
1.a Su tensión de salida VOUTes proporcional a la temperatura en una proporción de 10 mV/˚C.
2.a Su rango de funcionamiento está comprendido entre 0˚C y 100˚ C.
3.a Su tensión de funcionamiento VSestá entre +4 VDC y +30 VDC.
4.a Su precisión es de + 0,9˚C.
SENSOR RANGO INCREMENTO PROPIEDADES
LM335A -40º C – 100º C 0,10 mV/ºC
PRC100 -40º C – 150º C 0º C – 100 W Precisión debido a su 100º C – 138,5 W comportamiento lineal
Resistente.
PT100 -50º C – 500º C 100 W – 0º C Reducido tamaủo y rỏpida respuesta.
PTC (Coeficiente de Diferentes Baja resistencia a baja En circuitos de aviso.
Temperatura positivo) temperatura y aumenta Protección contra sobretensiones y rápidamente al superar sobrecorrientes.
la temperatura de referencia.
NTC (Coeficiente de Diferentes Alta resistencia a baja Buena fiabilidad a bajo coste.
Temperatura negativo) temperatura y al contrario. Muy empleados en electrodomésticos.
Termopar tipo N -50º C – 400º C Altas temperaturas.
Elevada vida útil.
Espacios reducidos.