Introducción
Colección de circuitos de E/S |
Este documento se basa en un hilo del foro TodoPIC, en el que se propuso armar una especie de biblioteca virtual de circuitos que generalmente usamos para resolver los problemas de entrada-salida de nuestros proyectos.
Recomendamos SIEMPRE visitar el hilo original dentro del foro, ya que esta siendo permanentemente actualizado, cosa que no sucede con este resumen.
Se ha consignado en cada caso el autor del circuito, usando como identificación su nombre dentro del foro.
Activar un Rele
Circuito básico que generalmente utilizo para activar un rele desde un pin del PIC.
Algunas aclaraciones: el diodo protege al transistor de la corriente devuelta por la bobina del rele. El transistor puede ser reemplazado sin demasiados problemas por algún TUN.
Manejo de lámparas y motores a 220v
El circuito es de lo mas genérico. La señal del PIC llega, a través de un resistor limitador, al fototriac MOC3041 que dispone de un alto nivel de aislamiento y un detector de paso por cero en su interior.
La resistencia R2 limita la corriente que pasa por el fototriac
para evitar que se dañe y puede estar en el orden de los 360 a 470 ohm.
Todas las resistencias usadas son de 1/2w exceptuando r1 que es
de 1/4w. La elección del triac ira en función de nuestras necesidades.
En este caso se eligió un BTA08600 (8A/600v) porque su parte metálica
esta aislada (en muchos casos esta parte metálica esta conectada a uno
de los ánodos, con el consiguiente peligro de descarga) porque soporta
sin necesidad de radiador hasta 500w y porque esta indicado
especialmente para cargas altamente inductivas según su hoja de datos.
aunque podría ser perfectamente un bt136,137 etc. Se recomiendo la
lectura de la hoja de datos tanto del triac como del moc3041 antes de
proceder. La resistencia R4 y el condensador C1 no serán necesarios si la carga es resistiva (lámparas).
Se deben de tomar las precauciones que se corresponden con el manejo de una tensión de 220v. |
RS-232 en 8 pines con DS275
Cuando pensamos en comunicar nuestro PIC vía RS-232 a todos nos viene a la cabeza el famoso MAX-232 de Maxim. Es un chip con 16 pines y dos canales RS-232 de los cuales en muchos casos solo utilizamos uno. Maxim dispone también del DS275 que puede servirnos en bastantes casos a nuestros propósitos, si nos conformamos con un solo canal.
En tan solo 8 pines y sin necesidad de condensadores externos. Recomiendo una lectura de su hoja de datos.
Aquí un sencillo esquema que creo no requiere de ningún tipo de explicación.
RS-232 en 8 pines con DS275. |
Adaptación de sensor LM35 a PIC16F877A
Aquí les comparto como adapté un LM35 a un PIC16F877A, y que me funciona de maravilla, está configurado para un fondo de escala de 102,3ºC.
En la pata 5 (RA3) tenemos la Vref+ con un diodo de
referencia de 2,5V que sería el fondo de escala, o sea el valor 1023 en
el conversor A/D, por lo tanto serían 2,5V/1023=2,44mV por cada paso del
conversor, esto se obtiene calibrando el preset de 1K (Yo uso un trimpot multivuelta) y midiendo con el tester en la pata 2 del LM35 para que en el display se lea lo mismo.
Si el LM35
entrega 1mV por cada décima de grado (salvando la exactitud del bicho)
tendría que amplificar la tensión 2,44 veces aproximadamente.
Adaptación de sensor LM35 a PIC16F877A.
Adaptador de niveles de voltaje, 5-25 v a Vcc
Aquí tenéis un muy simple adaptador de niveles de tensión.
Cualquier cosa entre 5 y 25 voltios que pongáis en la entrada tendréis
Vcc en la salida.
Adaptador de niveles de voltaje.
RS-232 sin integrados, solo con componentes discretos
Este es el esquema para utilizar conexiones RS-232 sin necesidad del MAX232
o similares. A veces, para salir de un apuro, con unos pocos
componentes discretos que seguro tenemos en un cajón podemos resolver el
problema.
RS-232 sin integrados.
RS-232 con MAX232
El mas popular de los esquemas de conversión TTL <-> RS-232:
RS-232 con MAX232.
RELE desde el PIC, con luz piloto
Esta es una variación sobre el primer circuito del hilo, solo agrega un LED que indica visualmente si el rele esta o no energizado.
RELE desde el PIC, con luz piloto.
LED, enciende con "0" o con "1"
El LED de arriba enciende cuando el pin del PIC esta en 0. En el segundo caso, cuando el pin esta en 1.
LED, enciende con "0" o con "1".
Fuente de alimentación de 5V sencilla
Si este esquema, u otro similar, nada de lo que hagamos sirve para nada.
Fuente de alimentación de 5V.
Optoacoplador para aislar una Entrada o una Salida
Una forma fácil de proteger un pin del PIC:
Optoacoplador para aislar una Entrada o una Salida.
LEDS en serie - Multiplexados para display
Bueno, el titulo de este esquema era medio complicado, pero la
idea es la siguiente: Se trata de un display de 7 segmentos gigante,
donde cada segmento de cada digito esta formado por varios LEDs en serie. Como son varios dígitos, los tengo que multiplexar, y poder desde el PIC seleccionar que segmento de que digito voy a encender.
La solución que encontré es usar dos transistores, uno para la selección del digito, y otro para el segmento. El ánodo del primer LED
de cada segmento de un digito están unidos a un transistor (el de
arriba), de forma de poder seleccionarlo independientemente de los
otros, y los cátodos del ultimo led de cada segmento (por ejemplo el del
medio de cada digito) unido a otro transistor que se encarga de
seleccionar el segmento adecuado. Es un lío la explicación, pero el
esquema se entiende mejor.
LEDS en serie Multiplexados para display.
El resistor limitador se puede calcular haciendo
Tener en cuenta la caída de tensión en el transistor. V debe ser por supuesto mayor a NLeds x VLed. El transistor de arriba debe ser elegido para que soporte la corriente que circulará por todos los LEDS implicados. Un BC327 puede ser mejor que el sugerido.
Salida con Optoacoplador y rele
No hay mucho que decir sobre el.
Salida con Optoacoplador y rele.
CD4511
Este integrado nos permite controlar un display de 7 segmentos mediante cuatro pines del PIC. No es muy complicado multiplexarlo para usar más de un digito con solo un circuito integrado (y un pin adicional por digito, para el multiplexado).
CD4511 y un display de 7 segmentos.
ON-OFF con el popular 555
Este circuito es muy útil para el encendido/apagado de nuestros proyectos.
Según cómo se conecte C1, arranca el circuito, si se conecta a GND arranca con un cero a la salida, por el contrario, si se conecta a VCC el circuito arrancará con un uno a la salida. Pulsamos una vez el botón, ON ... pulsamos otra vez, OFF. Sencillo y útil.
ON-OFF con el popular NE555.
Esa salida la podemos conectar a cualquiera de los circuitos propuestos para relés
u optotriacs y con eso activar cargas importantes. Una función ON-OFF
que nos puede ahorrar líneas de programa y terminales del PIC.
- Leer más sobre el NE555.
Protector de Alimentación
Muchos de los que nos dedicamos a esto de la electrónica, hacemos
nuestros ensayos de los proyectos con fuentes variables, generalmente
entre 2 o 3 Volts y unos 18 Volts, construidas con un transformador de algunos amperes, unos diodos que andaban por ahí, un electrolítico súper-gigante que no se usaba en absolutamente nada y nos vino bárbaro para nuestra fuente. El LM317, el/los 2N3055 o TIP35 , un par de capacitores más, (los más puristas, el 723) y listo! Nuestra fuente de laboratorio!
Y lógicamente como todo proceso de existencia, alguna vez trabajando con un circuito de 5 Volts ....... PIFFFF ! , los transistores se ponen en corto por algún error de manipulación nuestro y adiós circuito.
Aquí les propongo un circuito que encontré hace muchos años y es tan sencillo como eficiente.
Protector de Alimentación.
El fusible de entrada se va a colocar de acuerdo al consumo del circuito a alimentar, como se calculan siempre los fusibles, tema ya tratado en el foro. El zener debe ser de 1V más que el circuito a alimentar y de potencia 1W. El tiristor puede ser cualquiera, con un TIC226 anda perfecto, pero también depende de la aplicación a usar.
El funcionamiento habla por sí solo, viendo el esquema:
- Ante una inversión de polaridad se ceba el triac, funde el fusible y circuito salvado.
- Ante una suba de tensión de alimentación, por el zener circula una corriente inversa que ceba el triac y funde el fusible.
- No provoca caída de tensión en el circuito que se intercale.
Sencillo, barato, muy eficaz y lo mejor de todo ..... Es a prueba de genios como nosotros. Espero sea útil.
Driver para Motores CC
En este último tiempo he estado usando unos motores CC de casi 1
Amper (para que tengan una idea, un poco más grandes que los usados en
los reproductores de cassete) y utilicé este esquema que lo operaba
desde un PIC16F84A.
Los motores deslizaban unas puertas pequeñas de vidrio y la posición de
la mismas se detectaban con switch's en las correderas usadas. Pocos
componentes, útil y fácil de construir. Este tipo de circuito se usa en
algunos equipos de audio para la bandeja de 3 CD (Open/Close):
Driver para Motores CC.
Beep .... Beep .... Beep !
El típico pi-pi-pi-pi..... ("nerviosador") de activación de algún sistema de alerta. R1 y C1 determinan la frecuencia de activación de los beep, mientras que R2 y C2 determinan el tono del mismo. Para BUZ1
he usado con estridente éxito los piezoeléctricos (campanillas) de los
teléfonos de mesa. Cualquier tweeter barato es útil para esta
aplicación.
Menos líneas de código nunca vienen mal.
Cualquier tweeter barato es útil.
Registro de desplazamiento para manejar 4x7segmentos (+ 2 puntos)
El presente esquema esta pensado para controlar 4 displays LED de 7 seg. mediante unas pocas líneas de control desde el PIC: Clock, Data, Reset y una para el apagado del display (puede ser útil para evitar parpadeos durante el refresco).
Hay que tener en cuenta que las entradas de datos del 74HC164N
están NEGADAS, por lo que se debe escribir un "0" para que la salida
correspondiente este activa. Tener en cuenta el estado del RESET.
El primer bit
que se ingresa va siendo "empujado" hacia el "fondo" por los demás, por
lo que si metemos 32 bits, el primero en entrar seria el que queda en
la ultima posición del registro. Si seguimos enviando mas bits, se
empiezan a "perder" por el "fondo". Se pueden conectar mas en cascada.
Registro de desplazamiento para manejar 4x7segmentos.
- Aprende más sobre Registros de desplazamientos
Adaptador de niveles 5V/3.3V bidireccional
Adaptador de niveles 5V/3.3V bidireccional.
Mini-Amplificador de Audio con LM386
Alimentando el circuito,
como muestra la figura, con tensiones entre 5 y 12 Volts, obtendremos
sobre un pequeño parlante una potencia de audio de entre 300 y 800 mW.
Más que suficientes para algún speech ó para los sonidos "DING DONG !" de los indicadores de turnos en los cajeros del banco, o para cualquier aplicación que requiera un poquito de sonido.
Mini-Amplificador de Audio con LM386.
Interfaz para medir temperatura con una termocupla y un PIC
Hola a todos, aquí les dejo un circuito
que permite, por medio de una termocupla medir temperaturas de más de
1000°C, el mismo posee compensación de la unión fría para conservar la
linealidad, el esquema es el siguiente:
Interfaz para medir temperatura con una termocupla y un PIC.
Como se puede apreciar, a la entrada de la termocupla se la filtra fuertemente para evitar cualquier tipo de interferencias.
Las 2 bobinas
que están sobre la misma se construyen sobre un único núcleo toroidal
de ferrita con un diámetro de entre 10 y 15 mm, en el mismo y con doble
alambre de 0.2mm de cobre esmaltado (de los usado para bobinar transformadores
y motores eléctricos) se realizan entre 30 y 40 vueltas, al ser el
alambre doble una ves realizadas las 30 vueltas ya se tendrá construidas
ambas bobinas.
Entonces las 2 puntas pertenecientes al principio del bobinado se
sueldan del lado de la termocupla, y las 2 pertenecientes al final se
sueldan del lado del circuito.
Luego del filtrado la señal es amplificada por un OA tipo OP07
que es de bajo offset y alta ganancia, para luego atacar la entrada del
conversor A/D del PIC.
El LM35
(sensor de temperatura) debe ser instalado lo más próximo posible de la
unión donde los hilos de la termocupla se conectan a la PCB, para unir
la termocupla a la PCB es conveniente usar un conector ya que la misma
será muy difícil de soldarla directamente, por lo tanto el sensor de
temperatura debe estar lo más cerca posible de este conector.
La señal entregada por el LM35 es filtrada y amplificada por un OA del tipo LM358 para luego introducirla al conversor del PIC.
El circuito integrado LM336-2.5
es usado como tensión de referencia de 2.5V para los conversores, ya
que si usáramos de referencia la tensión de alimentación del propio PIC,
las lecturas de temperatura podrían tener grandes errores.
Por ultimo queda aclarar que la compensación de la unión en frío
se realiza mediante software, como la termocupla a temperatura ambiente
entrega a su salida una tensión igual a 0V lo único que hay que realizar
es la suma de la temperatura medida por la termocupla y la temperatura
entregada por el sensor, de tal manera que:
T°C = Tcupla + Tsensor
Por lo tanto este circuito solo medirá temperaturas iguales o mayores a
la temperatura ambiente, siendo imposible medir temperaturas inferiores a
la ambiente.
Para calibrar el circuito se debe hacer lo siguiente:
- Retirar la termocupla y en su lugar realizar un puente con un cable lo más corto posible.
- Ajustar el preset del LM358 hasta que la temperatura leída sea igual a la ambiente.
- Retirar el puente y conectar la termocupla (prestar atención que posee polaridad)
- Usando un termómetro como referencia y ambos (termocupla y termómetro) sumergidos en agua hirviendo ajustar el preset del OP07 hasta que el circuito indique la misma temperatura que el termómetro.
Interfaz de celda de carga para usar con PIC
Aquí les dejo un circuito que estoy usando para una celda de carga y funciona lindo:
Interfaz de celda de carga para usar con PIC.
El esquema hace uso de los OA tipo OP07, los mismos pueden ser
reemplazados por los OP77 o los OP177, pero no garantizo su correcto
funcionamiento si son reemplazados por otro tipo de amplificador
operacional.
La ganancia del circuito
de entrada puede ser regulada entre 200 y 1000 aproximadamente, por lo
tanto no impide que se usen celdas con distintos coeficiente de salida.
Una ves puesto en funcionamiento el circuito hay que ajustar el preset del LM336-Z2.5 hasta que en el emisor del transistor BC548 nos indique una tensión de 5V.
Luego sin peso sobre la celda se ajusta OFFSET hasta que el pin 7 del PIC12F675 se encuentre en cero volts, para esto es muy conveniente usar un voltímetro en la escala de 200mV o menor.
Por ultimo con un peso conocido sobre la celda debe ajustarse el preset de GANANCIA hasta que sobre el pin 7 del PIC nos indique la tensión correcta para ese peso. Para saber la tensión según el peso conocido se realiza el siguiente cálculo:
Vpin7 = ( peso colocado en Kg * 5 ) / carga admitida por la celda en Kg
Es muy importante el uso de resistores de 1% en las posiciones indicadas caso contrario se perderá exactitud en las lecturas.
Personalmente e usado dicho circuito con una celda de 50 Kg que
poseía un coeficiente de 2mV por cada volt de alimentación a la misma, y
con el PIC indicado y dicha celda e conseguido mediciones muy buenas de hasta 50 Kg con exactitudes de 50 gr.
¿Cómo funciona la parte que genera la referencia con el lm336,el amplificador operacional y el transistor?
El LM336-Z2.5 regulado adecuadamente entrega una referencia de
2.5V, que se introduce al pin12 del OA, a la salida del mismo (pin14)
tenemos un transistor conectado como seguidor de emisor el cual oficia
de driver para proporcionar una buena corriente a la regulación ya que
por medio de esta también alimentamos la celda (pueden tener
resistencias de 350 ohms) y usamos esta misma tensión como referencia
para el A/D del PIC, al usar la misma tensión para la celda y la
referencia conseguimos que no haya errores en las lecturas por las
pequeñas derivas térmicas de los componentes usados.
Desde el emisor del transistor
y por medio de 2 resistencias de 10K se consigue un divisor de tensión
que divide a la mitad la tensión de dicho emisor y esta es la tensión
que se introduce al pin 13 del OA para que el mismo quede configurado
como buffer o seguidor de tensión, en realidad a la ves de buffer el OA
actúa también de multiplicador con una ganancia de 2.
Con esa tensión de 5V muy estable y regulada se consigue en el
pin 7 del OA una tensión de referencia de -5V haciendo que el mismo
actué como amplificador inversor de ganancia unitaria.
Y con esas dos tensiones (5V y -5V) se atacan las resistencias en
los extremos del preset OFFSET, por lo tanto esas resistencias están
alimentadas de 5V y -5V respectivamente, como las mismas poseen un valor
de 100K y el preset 10K nos queda que:
Ej ramal positivo:
Resistencia de 100K + preset de 5K, el preset se divide su valor a
la mitad ya que la otra mitad corresponde al ramal negativo, por lo
tanto
(5V / 105K) * 5K = 0.238095V
Por lo tanto tenemos una variación de +/- 0.24V, lo que es lo mismo un variación de pico a pico de 0.48V aproximadamente.
El resto del circuito esta conformado de un clásico amplificador
diferencial con ganancia unidad (al cual se le regula el offset por
medio del pin 8 del TL084) con sus respectivos amplificadores de entrada
con ganancia de 200 a 1000 regulable por medio del preset y por un
sencillo seguidor de tensión o buffer que es el encargado de otorgar la
baja impedancia que necesita el convertidor A/D del PIC.
Los diodos 1N4148 conectados al pin 7 del PIC le ofrecen una protección
por sub o sobre tensiones a la entrada del mismo.
El condensador
de 0.1uF y la resistencia de 470 ohms ofician de filtro pasa bajos,
para la señal que proviene del pin 1 del OA, la misma función realizan
el condensador y la resistencia conectados al pin 3 del TL084, pero al
ser la frecuencia de corte de este ultimo filtro muy baja también
estamos conseguimos que la lectura sea más estable.
Los condensadores de 0.1uF y las resistencias de 1K presentes en
cada entrada hacen la función del filtros contra cualquier interferencia
proveniente desde la celda, otorgando junto a la bobina y el
amplificador diferencial muy buena inmunidad bajo cualquier condición de
trabajo.
Circuito para obtener la señal de un led que posee el ánodo a positivo
Este circuito que permite obtener la señal de un LED. Cuando un led de un equipo cualquiera esta conectado a positivo y esta tensión es superior a los 5Vcc de la alimentación del PIC
podemos usar este sencillo circuito que nos entregará un alto cada ves
que el led este encendido, la señal obtenida se la puede introducir al
PIC para que este actué de la manera programada.
Circuito para obtener la señal de un led.
Circuito para comandar display de 7 segmentos
Como se puede ver en el esquema, este circuito
es apto para funcionar con cualquier tensión de alimentación hasta un
máximo de 30Vcc, la intensidad máxima por cada segmento puede ser de
hasta 300mA.
Circuito para obtener la señal de un led.
Las entradas son todas activas en alto, las 3 superiores pertenecen una a
cada display y las 7 inferiores una a cada segmento, por lo tanto para
hacer un refresco adecuado de los display se debe hacer lo siguiente:
- Colocar las señales en los pines de control de los segmentos.
- Colocar en alto la señal de control del display que corresponda.
- Esperar un tiempo adecuado.
- Colocar en bajo la señal de todos los display.
- Volver a comenzar con el siguiente display.
Usar LM35 en todo el rango de temperatura con fuente simple
El circuito que les propongo en esta ocasión hace uso del sensor de temperatura LM35,
el mismo puede medir temperatura desde -50°C asta 150°C, pero para
medir todo el rango normalmente es necesario el uso de una fuente
simétrica.
LM35 en todo el rango de temperatura con fuente simple.
Bueno con la idea de simplificar la fuente de alimentación cuando
nuestra aplicación debe ser de bajo costo, con el circuito mostrado más
arriba obtenemos lo deseado.
Su implementación es muy sencilla y para tal es necesario en uso de 2 entradas análogas del PIC y la entrada de tensión de referencia para el convertidor.
Las resistencia de 1K5 y 3K3 (deben ser de 1%) proveen la tensión
de referencia y con tales valores será de aproximadamente 3.5Vcc
Los diodos 1N914 le otorgan al LM35 de una tensión de masa superior a la masa real del circuito y esto es lo que nos permite medir temperaturas por debajo de 0°C.
Por el motivo anterior y considerando que la tensión que el LM35
tomará como masa puede variar con la temperatura es necesario conoces
esa tensión para luego con los consiguientes cálculos matemáticos
obtener la temperatura real, para conoces esa tensión de "masa" se usa
la entrada AN1.
La señal de salida del LM35 es introducida al PIC por medio de
AN0, entonces a esta altura ya tenemos todas las señales necesarias
dentro del PIC, por lo que solo falta realizar los cálculos.
Para los mismo se hace lo siguiente:
Si AN0 > AN1
(Valor de AN0) - (Valor de AN1) = (Valor Temp.)
Si AN0 < AN1
(Valor de AN1) - (Valor de AN0) = (Valor Temp.)
Una vez obtenido Valor Temp hacemos:
(Valor Temp.) * (344 / 1023) = Temp ----------> si usamos conversor de 10 bits
(Valor Temp.) * (344 / 255 ) = Temp ----------> si usamos conversor de 8 bits
donde:
344 = tensión de referencia * 100
Entonces ya tenemos la temperatura real, solo faltaría saber si es
por sobre o debajo de cero grado, para lo cual analizamos nuevamente
cual de los 2 valores de entrada era el mayor:
Si AN0 > AN1 la temperatura es por sobre cero grado centígrado o sea +XX°C
Si AN0 < AN1 la temperatura es por debajo de cero grados centígrados o sea -XX°C
Este circuito que obtener la señal de un LED. Cuando un led de un
equipo cualquiera esta conectado a positivo y esta tensión es superior a
los 5Vcc de la alimentación del PIC podemos usar este sencillo circuito
que nos entregará un alto cada ves que el led este encendido, la señal
obtenida se la puede introducir al PIC para que este actúe de la manera
programada.
Inversor con NE555
El circuito que se muestra a continuación, nos da la posibilidad
de obtener una inversión de tensión. El mismo puede ser utilizado con un
amplificador operacional o en cualquier circuito donde se necesite de una tensión negativa, con un bajo consumo de corriente.
Inversor con NE555.
El corazón del circuito es el famoso NE555, donde por medio del mismo y en conjunción con elementos comunes se obtiene una configuración sencilla y funcional. La tensión +VCC debe estar comprendida entre +5V y +15V.