Download - Tips and Tricks
PCTRONICS
Técnicas de Hardware con microcontroladores
MICROCHIP Técnicas para ahorrar hardware
Raúl Barreto Quinteros
10/26/2011
Basado en la nota de aplicación AN234 “Hardware Techniques for PIC microcontrollers” de microchip, y el Resumen técnico TB40040B “Tips and tricks for 8 bits pic micro” y otras experiencias propias del autor
1
Contents Rompiendo mitos .......................................................................................................................................... 2
TIP 1. Los voltajes superiores a 5V no dañan tu PIC ..................................................................................... 3
TIP 2. Comunicación sin acondicionador de niveles TTL/RS232 ................................................................... 5
TIP3. Leyendo varios pulsantes con un solo I/O pin (método I) .................................................................. 7
TIP4. Leyendo varios pulsantes con un solo I/O pin (método II) ................................................................. 7
TIP5. Manejando múltiples LEDS .................................................................................................................. 9
TIP 6. Manejo de Displays de 7 Segmentos ................................................................................................ 11
Kit de entrenamiento para PIC de 8 pines .................................................................................................. 13
Recursos del kit de entrenamiento ............................................................................................................. 14
Referencias .................................................................................................................................................. 15
Agradecimientos ......................................................................................................................................... 16
2
Te cnicas de Hardware con PICMicros Microchip
“Muchos de los conceptos que vamos adquiriendo a través del tiempo, tal vez fueron válidos para ese
momento; Pero, lo que antes era cierto; ahora en la actualidad que vivimos ya no lo es; o
simplemente, lo que te ensenaron tus amigos, colegas y profesores estuvo mal o habrá que
reconsiderarlo; es bueno romper paradigmas, abrir la mente y el espíritu para dejar que nuevas y
revolucionarias ideas fluyan por tu mente y te hagan crecer, como técnico y como persona; con este
articulo te pretendo mostrar un conjunto de sugerencias para mejorar el desempeño y aminorar el
costo de tus proyectos basados en microcontrolador, para ello deberás dejar de pensar en la forma
tradicional y dar paso a las nuevas tendencias”
Rompiendo mitos ¿Sabías que…?
Puedes ingresar directamente a tu microcontrolador una señal de varios cientos de voltios sin
provocar daño alguno en el mismo
Puedes comunicar directamente al microcontrolador con tu PC sin necesidad de MAX232 u otro
circuito transistorizado
Puedes conectar un teclado matricial 4x4, utilizando un solo pin del microcontrolador
Puedes encender 12 LEDS individuales con solo 4 pines
Puedes leer señales analógicas sin necesidad de un conversor AD
Me dirás que estoy loco, o que soy un mentiroso,… más todas las afirmaciones anteriores, son ciertas, te
invito a que leas el siguiente artículo y compruebes por ti mismo
3
TIP 1. Los voltajes superiores a 5V no dañan tu PIC Cada pin del microcontrolador, excepto MCLR y TOCK, posee un circuito interno de protección
contra sobre voltajes, así que puedes tu recibir señales de varios de cientos de voltios sin
provocar daño alguno a tu CHIP
Figura 1. Circuito interno de protección contra sobre voltajes
Te explico; internamente cada pin tiene dos diodos recortadores de tensión; así que cualquier
tensión que ingresa será limitada entre VSS y VDD.
Por lo dicho anteriormente; si ingresas una tensión 120Vac al pin de tu microcontrolador; el
circuito la limitara entre 0 y +5V.
Ahora; la corriente si es un asunto para preocuparse; debes de limitarla con un resistor; cuyo
valor se calcula de la ley de OHM.
( )
√
Ejemplo: Según la hoja de datos cada pin puede soportar 25mA y deseas recibir una señal de
115V alterna ¿Cuál es el valor de la resistencia que te servirá para limitar la corriente?
√
Entonces se recomienda colocar una resistencia limitadora mayor a 3K2.
Entre 3K2 y 6M se recomienda (ver Figura 2)
¡Ya no más transformadores u optoacopladores, que incrementan el tamaño y el costo de tu
PCB!
4
Figura 2. Resistor de 5M limita la corriente que ingresa al microcontrolador
Los pines MCLR y TOCK solo tienen un diodo limitador de tensión a VSS voltios; así que si deseas
recibir señales de potencia en estos pines; deberás colocar un diodo externo que limite la
tensión a VDD. Ver figura siguiente:
Figura 3. Acondicionamiento del pin MCLR y TOCK para recibir superiores a VDD
A continuación te muestro una simulación en ISI que muestra cómo una de 120Vac, 60Hz es
recortada a un rango entre 0 y +5V I/O
Figura 4. Señal de 120VAC es recortada a un rango entre 0 y +5VDC
D1DIODE
D2DIODE
Vin(ac) R1
10k
V(micro)
5
TIP 2. Comunicación sin acondicionador de niveles TTL/RS232 Por lo dicho anteriormente, los pines del microcontrolador están protegidos contra sobre voltaje; y si
varios cientos de voltios no matan a tu PIC; peor aún lo van a matar los +15 y -15 voltios que genera el
computador durante la comunicación RS232.
Durante la comunicación serie el transmisor del PC genera una onda cuadrada que varía entre -15 a +15;
Por lo tanto lo único que necesitaras es limitar la corriente con una resistencia que calculamos de la
formula (1.1)
Una resistencia cuyo valor es mayor a 600 ohmios y menor 22K se recomienda
Ahora; el PIC enviara al PC una señal comprendida entre 0 y +5 Voltios; no hay necesidad de
amplificarla; el PC la reconocerá sin ningún problema.
De seguro te estarás peguntando ¿Qué papel desempeñan entonces los adaptadores de nivel
TTL-RS232?
Respuesta: La norma USART indica que los niveles RS232 deben estar entre el rango de -15V y
+15V. Para garantizar la comunicación a distancia máxima de 30 metros. Pero si nuestro
microcontrolador va a estar como máximo a 2m de distancia del computador, ¿Qué necesidad
tenemos de esos voltajes?
Figura 5. El MAX232 es un inversor
6
El adaptador de niveles RS232 lo que hace es amplificar la señal que genera el PIC y atenuar la
señal que genera el PC. Pero también invierte a esa señal. Si queremos ahorrarnos el de
adaptador de niveles; tenemos que configurar en el software terminal de comunicaciones,
como comunicación invertida. (RX/TX Polarity)
Figura 6. Configuración del hiperterminal cuando no utilizas un adaptador de nivel (Virtual
terminal de ISIS te da esa opción en su ventana de propiedades)
A continuación te presento un fragmento de la información que ofrece el manual de PIC Basic
Pro:
Figura 7. Fragmento del manual PICBASIC PRO Compiler de microingeneering Labs
Yo he comunicado al PIC y la PC sin adaptador nivel incluso a 3 metros de distancia el uno del
otro y no he tenido ningún problema; Simplemente asegúrate de invertir la polaridad de
transmisión RX/TX polarity.
¡Al MAX232, a los transistores y capacitores; ya le podemos decir adiós!
7
TIP3. Leyendo varios pulsantes con un solo I/O pin (método I) Método I. Requiere de medir el tiempo de carga de un capacitor.
Partiendo del conocimiento y la experiencia; podemos decir que en un circuito RC el tiempo que demora
en cargarse un capacitor es directamente proporcional al producto de la resistencia por su capacitancia
Figura 8. Método de carga del capacitor, necesitara de un PIN con modulo comparador
En la figura 8, cada vez que pulsemos un botón el capacitor comenzara a cargarse, cada botón genera un
tiempo de carga distinto; si logramos medir cual ese tiempo de carga; sabremos que botón fue
presionado.
La secuencia de software para el circuito de la figura 8 sería la siguiente:
1. Configure el pin como salida y a un nivel lógico BAJO para descargar el capacitor a través de la
resistencia de R5
2. Configure el pin como entrada a un comparador y CVref como la otra entrada a comparar.
3. Utilice un TIMER para medir el tiempo en el que el comparador es disparado. Si el tiempo es
mayor al máximo permitido; entonces regrese al paso 1; caso contrario determine que botón
fue presionado
TIP4. Leyendo varios pulsantes con un solo I/O pin (método II) Método II. Utilizando el conversor AD
En la figura 9 se muestra un circuito típico para conectar varios pulsantes a un solo pin analógico;
partiendo que R1 es diferente a R2 y que R2 es diferente a R3, dependiendo del botón que sea
presionado, un voltaje distinto aparecerá en el pin ADC. Encuestando el estado del conversor AD;
podremos identificar que botón fue presionado.
En caso de que uno o más interruptores se cierren a la vez, las combinaciones de dos o más botones
cerrados generaran voltajes distintos y también podrán ser identificadas
8
Figura 9. Como identificar a varios interruptores con un solo pin analógico
Haciendo una extensión a lo anteriormente dicho; en la figura 10 muestro como podría conectarse un
teclado matricial de 4x4 a un solo pin analógico del microcontrolador. Note que este circuito tiene un
valor práctico solo cuando se desea detectar una tecla a la vez. Detectar combinaciones de 2 o más
teclas pulsadas, ya resulta demasiado complicado.
Figura10. Leyendo un teclado matricial con un solo pin analógico
¡Con un PIC de 8 pines podremos manejar teclado y display a la vez… eso sí que es ahorro!
9
TIP5. Manejando múltiples LEDS El diodo emisor de luz es uno de los dispositivos más populares para ser conectado a un PICmicro, los
microcontroladores de microchip son ideales para manejar LEDS, ya que proporcionan la corriente
suficiente, desafortunadamente el número de salidas disponibles es un limitante; debido al costo, para
resolver este problema; daré unas pocas sugerencias
Manejando dos LEDS con un solo pin
Manejando seis LEDS con tres pines
Manejando doce LEDS con cuatro pines
Los diodos te permiten conducir corriente en una sola dirección; teniendo en cuenta aquello; la
siguiente figura te muestra cómo manejar dos diodos LED con un solo pin
Figura 11. Manejando dos LEDS con un solo PIN
Funcionamiento
Si a la salida escribimos un nivel lógico BAJO, D1 se encenderá, D2 se apagara;
Si escribimos nivel lógico ALTO D2 se encenderá, D1 se apagara
Si intercambiamos entre nivel lógico bajo y nivel lógico alto proporcionando así una onda
cuadrada de frecuencia suficientemente veloz; parecerá que los dos LEDS están encendidos a la
vez
Si a la salida le hacemos entrada, D1 y D2 permanecerán apagados
El mismo concepto puede extenderse a seis y a doce LEDS manejados por tres y cuatro pines
respectivamente (figura 12 y 13)
10
Figura 12. Manejo de 6 LEDS con tres pines
Figura 13. Manejando 12 LEDS con 4 pines
En las configuraciones mostradas en figuras 12 y 13 solo un LED podrá encenderse a la vez y requiere de
dos pines (el que se pondrá en nivel lógico ALTO y el que se pondrá en nivel lógico BAJO). Por ejemplo;
Para encender D1 tendremos que configurar Digital I/O R2 como ALTO y Digital I/O R1 como BAJO; los
demás pines se configuraran como entradas para que la corriente no fluya por ellos
Si deseamos hacer parecer que dos o más LEDs están encendidos a la vez, tendremos que programar
una secuencia que se repita lo suficientemente rápido para que el ojo humano no pueda captar el
parpadeo de los LEDS
Este método de multiplexaje es efectivo hasta doce LEDS; ya que manejar más de doce se complicaría
enormemente el firmware y el parpadeo se haría cada vez más visible.
11
TIP 6. Manejo de Displays de 7 Segmentos El método de multiplexaje descrito anteriormente puede extenderse al manejo de displays de 7
segmentos; la figura 14 muestra cómo manejar un display de dos dígitos con únicamente 8 pines
Figura 14. Manejo de un display de dos dígitos
Note en la figura que; el display de las decenas es ánodo común (CA) y el de las unidades es catodo
común (CC). Entonces solo un digito permanecerá encendido a la vez; deberemos nuevamente
intercambiar entre niveles ALTO y BAJO a una frecuencia lo suficientemente veloz como para hacer
creer que los dos displays están encendidos a la vez
Ahora te mostrare algo sorprendente; haciendo una extensión a lo aprendido; En la figura 15 se muestra
cómo manejar un display de 16 dígitos con únicamente 16 pines; es decir un digito por cada pin. Algo
que no podrías lograr ni con dos microcontroladores de 40 pines juntos utilizando el método tradicional
12
Figura 15. Manejando 16 digitos con un consumo de 16 pines
13
Kit de entrenamiento para PIC de 8 pines Todos los TIPS que he mencionado aquí son válidos para ser implementados en un PIC de 8 o más pines
(excepto el control de display de 16 digitos).
Te propongo el diseño de un PCB que te permitirá experimentar con microcontroladores PIC de la
familia 12XXXX. Fue desarrollado en ARES y a continuación te muestro algunas imágenes 3D del
prototipo en proceso de construcción.
Figura 16. Vistas 3D del Kit de Entrenamiento para PIC de 8 pines
No te dejo las fotos reales del PCB porque no tengo ninguno a la mano; sin embargo ya está en proceso
de construcción y uno de estos días le tomo unas fotos para que lo conozcas. El diseño ha sido revisado
minuciosamente y espero no haber cometido ningún error; todo esto lo sabré cuando ya lo ponga en
funcionamiento. ¡Probabilidad de un 99.99% que funciona!
14
Recursos del kit de entrenamiento El kit de entrenamiento posee los siguientes recursos:
Regulador de Voltaje +5V
Conector ICSP para grabar el PIC sin necesidad de desmotarlo del circuito
Conector DB9 para comunicación RS232
Jumpers para poner en modo grabación o modo RUN
Borneras de acceso a cada pin del microcontrolador
La imagen explica mejor que mil palabras:
Figura 17. Recursos del kit de entrenamiento para PICmicros de la familia 12xxxx
D2 y D3 son diodos rectificadores 1N4004 o 1N4007
JP1 y JP2 son jumpers para seleccionar en modo PROG o modo RUN (el esquemático se muestra en el
apéndice A)
15
Referencias Para escribir esta nota de aplicación me he basado varios documentos técnicos que presento a
continuación:
TIP 1. Los voltajes superiores a 5V no dañan tu PIC. – AN521 de microchip “AC power lines
intefacing”
TIP2.Comunicacion RS232 sin adaptador de niveles TTL/RS232 “PIC Basic Pro Compiller manual
de microengineering labs”
TIP3. Leyendo varios pulsantes con un solo pin (método I) –AN234 “Hardware techniques for
PICmicro microcontrollers”
TIP4. Leyendo varios pulsantes con un solo pin (método II) –AN234 “Hardware techniques for
PICmicro microcontrollers”
TIP5. Manejando multiples LEDS –TB029 “Complementary LED Drive technical brief”
TIP6. Manejando displays de 7 segmentos –TB029 “Complementary LED Drive technical brief”
Todas las notas de aplicación, excepto el manual de PIC Basic Pro, puedes descargarte en la página
www.microchip.com ahí encontraras más TIPS interesantes, que te permitirán ahorrar hardware y en
consecuencia todo esto se verá traducido en economía. Es verdad que el software se complica un
poquito; pero si te diseñas un conjunto de rutinas en el lenguaje que utilizas ese problema quedara
resuelto para futuros proyectos
16
Agradecimientos Considero firmemente que la mejor manera de aprender es compartiendo el conocimiento; por ello
dedico un tiempo de mi día a escribir estas notas de aplicación que semanalmente brindo a cada uno de
ustedes. Agradezco mucho su atención, sus comentarios, sugerencias y críticas constructivas vayan en
favor de este proyecto.
Atentamente
Raúl Barreto Quinteros.
Ecuador, 28 octubre 2011
Telf.:087017318
“¡No supe comprender nada entonces! Debí juzgarla por sus actos y no por sus palabras. ¡La flor
perfumaba e iluminaba mi vida y jamás debí huir de allí! ¡No supe adivinar la ternura que ocultaban sus
pobres astucias! ¡Son tan contradictorias las flores! Pero yo era demasiado joven para saber amarla".
Antoine Saint Exupery –El Principito-
VSSVDD
TXRX
VPP
DATCLK
GP5/OSC12
GP4/OSC23
GP3/MCLR4
GP0 7
GP1 6
GP2/T0CKI 5
U1
PIC12C509A
VI 1VO3
GN
D2
U27805
C1100u
C2100nF
1234
J1
CONN-SIL4
R11.5k
AK
D1LED
12345
J2
CONN-SIL5
K AD2
DIODE
R210k
12
JP1JUMPER2
JP2JUMPER2
1234
J3
CONN-SIL4
Email: [email protected]: 087017318
PCTronics Prj #No:3
Titulo: Kit de entrenamiento
Descripcion: Valido para microcontroladores PIC de 8 pines
Autor: Raul Barreto Quinteros
RESET
162738495
J4
CONN-D9F
R322k
D3
BAT42
12
J5
SIL-156-02
Vistas 3D
PCB Vista frontal y posterior
PCB Vistas laterales