tips and tricks

23
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

Upload: fergeom

Post on 04-Aug-2015

102 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: 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

Page 2: Tips and Tricks

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

Page 3: Tips and Tricks

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

Page 4: Tips and Tricks

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!

Page 5: Tips and Tricks

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)

Page 6: Tips and Tricks

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

Page 7: Tips and Tricks

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!

Page 8: Tips and Tricks

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

Page 9: Tips and Tricks

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!

Page 10: Tips and Tricks

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)

Page 11: Tips and Tricks

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.

Page 12: Tips and Tricks

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

Page 13: Tips and Tricks

12

Figura 15. Manejando 16 digitos con un consumo de 16 pines

Page 14: Tips and Tricks

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!

Page 15: Tips and Tricks

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)

Page 16: Tips and Tricks

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

Page 17: Tips and Tricks

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

[email protected].

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-

Page 18: Tips and Tricks

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

Page 19: Tips and Tricks
Page 20: Tips and Tricks
Page 21: Tips and Tricks
Page 22: Tips and Tricks

Vistas 3D

PCB Vista frontal y posterior

Page 23: Tips and Tricks

PCB Vistas laterales