SI NO FUNCIONA EN LA PRACTICA, NO ES VALIDO EN TEORIA

26/7/15

¿Cuales son los Periféricos Básicos que debo tener para ir Implementando mis Ejercicios con Microcontroladores?

Al momento de plantearse una aplicación con un microcontrolador, se debe tener claro los dispositivos asociados a dicha aplicación, desde lo que efectivamente se desea controlar, hasta los "adornos" o circuitos secundarios que se utilizarán.

Es por ello, que debemos tener una serie de circuitos periféricos, ya ensamblados y listos, para poder ser utilizados posteriormente y adaptarlos al control que deseamos. Es entonces donde se parte de la idea de "módulos" que acompañan a las tarjetas principales, en donde se aloja el microcontrolador, y es a éste al cual se le interconectan dichos módulos, en función a la aplicación a implementar.
Entonces nacen los entrenadores, que no es mas que módulos, los cuales se interconectan a la tarjeta principal de control.

Ahora bien,

¿Que es lo que debo hacer?

En principio, construir dichos módulos, partiendo de una base, es decir, módulos sencillos, los cuales podrán irse perfeccionando a medida que se vaya adquiriendo experiencia en la programación y uso de los microcontroladores.

¿Cuales son esos módulos básicos principales?
  1. Un módulo de entrada que contenga una serie de pulsadores e interruptores de manera de poder enviar al microcontrolador niveles lógicos desde un panel o botonera.
  2. Un módulo de salida que me permita visualizar resultados. Esté puede estar implementado con visualizadores a 7 segmentos, en los cuales se pueda representar todos los símbolos del código BCD y hexadecimal.
  3. Un módulo de salida que permita la energización de un conjunto de relés a fin de poder controlar cargas a través de contactos secos (contactos de los relés). Con ello podremos energizar a través de los contactos asociados, diferentes cargas.
¿Cual es el siguiente paso?

Una vez que hayamos definido, la cantidad de pulsadores e interruptores de nuestro módulo de entrada, se procede al diseño de dicho circuito.


Ahora procederemos a implementar un Módulo de Visualización, compuesto de 6 visualizadores o Display de 7-segmentos de tipo ánodo común.


Ahora nuestro Módulo para energización de cargas a través de contactos de Reles. Muy útil debido a que siempre deseamos, "prender" o "apagar" algún dispositivo.


Ya con estos tres módulos, podemos empezar a implementar nuestros programas, visualizando resultados en los displays, activando cargas, y enviando ordenes a través de los pulsadores.

Recuerden que aunque estos módulos son básicos, requieren de un conjunto de instrucciones para operar.

En una próxima entrega, les daré el conjunto de instrucciones de uno de ellos. Por los momentos, deben ir adquiriendo los componentes e ir los armandolos en su protoboard o baquelita.

Los quiero mucho!! Mis queridos alumnos!!

1/9/13

TEMPORIZADOR REGRESIVO (99 a 00 Segundos)

ME130901

Saludos queridos amantes de la electrónica :-D

Nuevamente les presento otro interesante proyecto para implementar. 
Esta vez se trata de un contador BCD (regresivo) de 2 dígitos, desarrollado con el popular SN74LS192 (Up / Down BCD Counter with Load).
Se trata de utilizar el contador BCD (compuesto por los dos integrados 74LS192: U1 y U2) como temporizador, con ajuste del tiempo establecido mediante el pulsador PLS1. El interruptor SW1 se utiliza para MARCHA / PARO del temporizador.
La señal de reloj aplicada al contador se toma de la red de 60 Hz a traves del secundario del transformador, pasando por un conformador de señal compuesto por R1, D1, D2 y el Schmitt Trigger 74LS14 (U8:A). La función de los diodos D1 y D2 son la recortar la tensión proveniente del transformador (D1 hasta 5V + 0,7V y D2 hasta 0V - 0,7V) y; la función del disparador de Schmitt es la de corregir la forma de onda de la señal proveniente del recortador a una señal cuadrada.
Los 60 Hz (ya en nivel TTL), se aplican a un divisor de frecuencia o prescaler 1:60, el cual está conformado por los integrados U6 y U7 (74LS90), que no son mas que un par del ya conocido contador BCD 7490 :-D.
El primer contador es de Módulo 6 y el segundo contador de Módulo 10, con lo que se consigue a la salida del U7:Pin 11 la frecuencia de 1 Hz, la cual se aplica al contador regresivo.

El interruptor SW1 permite seleccionar la frecuencia de 1 Hz, o la generada por el pulsador PLS1, el cual se utiliza para ajustar del tiempo estrablecido.
Las compuertas U9A y U9B conforman un Flip-Flop RS, controlado por el pulsador PLS1 y, en cunjunto con las compertas U9C y U9D, forman el selector de dirección de cuenta y de frecuencia de nuestro temporizador.
El ajuste del tiempo establecido se realiza de manera ascendente, por cada pulsación del boton PLS1.
Una vez finalizada la cuenta del temporizador (es decir, cuando llega a 00), los visualizadores parpadean a razón a 1 segundo. Esto se debe a que estamos utilizando la entrada BI de los descodificadores.
Quise utilizar visualizadores a 7-segmentos de tipo ánodo común. Es por ello que debes utilizar el descodificador 74LS247. :-D
Todo el circuito está simulado en Proteus. Si deseas el archivo en dicho formato, escribeme a mi correo y con gusto te lo envío.

14/7/13

Matriz de LEDS - 5 x 8 - 1ra Parte

ME130602A

A mis queridos alumnos: 

Una Matriz de Leds es un circuito integrado conformado por leds, conectados de forma tal, que para poder encenderlos se utiliza un sistema de coordenadas (Columna x Fila).
Generalmente estos visualizadores alfanuméricos vienen en arreglos de 5 columnas por 8 filas (5 x 8), o arreglos de 5 columnas por 7 filas (5 x7).


http://www.sunled.com/manager/upload/pdf/MUR60C(V4).pdf
Como puedes observar en la figura, las filas (Row) están etiquetadas desde R1 (Fila 1) hasta R8 (Fila 8); y las columnas (Column) están etiquetadas desde C1 (Columna 1) hasta C8 (Columna 8).
La matriz que estamos usando de ejemplo, está configurada con las filas en ánodo común cada una; y las columnas en cátodo común. Un ejemplo puede ser el visualizador MUR60C de la empresa SUNLED.COM.


El procedimiento para poder encender un led en una matriz, es polarizar dicho diodo utilizando un sistema de coordenadas (fila x columa). Por ejemplo, para encender el LED D1 de la figura arriba mostrada hay que polarizarlo a través de los pines R1 y C1 (R1 x C1). Para ello, se aplica tensión de manera que el diodo LED (D1) quede polarizado correctamente, esto es,  toda la Columna 1 a tierra (C1 a 0V); y la Fila 1 a potencial positivo (R1 a VCC - Recuerda colocar una resistencia en serie a cada fila.)

Por lo tanto, si deseas encender todos los LED's de la Columna 1: Unicamente C1 a tierra (C1 a 0V); y todas las Filas (R1 a R8) a potencial positivo (Recuerda colocar una resistencia en serie a cada fila.)
Si deseas encender todos los LED's de la Columna 2: Unicamente C2 a tierra (C2 a 0V); y todas las Filas (R1 a R8) a potencial positivo (Recuerda colocar una resistencia en serie a cada fila.)
Si deseas encender todos los LED's de la Columna 3: Unicamente C3 a tierra (C3 a 0V); y todas las Filas (R1 a R8) a potencial positivo (Recuerda colocar una resistencia en serie a cada fila.)
Si deseas encender todos los LED's de la Columna 4: Unicamente C4 a tierra (C4 a 0V); y todas las Filas (R1 a R8) a potencial positivo (Recuerda colocar una resistencia en serie a cada fila.)
Si deseas encender todos los LED's de la Columna 5: Unicamente C5 a tierra (C5 a 0V); y todas las Filas (R1 a R8) a potencial positivo (Recuerda colocar una resistencia en serie a cada fila.)
Ya te has dado cuenta que no debes encender todos los leds de todas las columnas al mismo tiempo. Se debe encender una sola columna a la vez.
Para poder practicar un poco, he diseñado un circuito, el cual puedes simular en el Proteus. El mismo está disponible en mi grupo FACETRONICS en el Facebook (recuerda solicitar tu amistad para poder ser aceptado en el Grupo).
La función del SW1 es seleccionar de manera secuencial la columna respectiva (comenzando desde C1), habilitándola luego con el SW2.
Los 8 micro-interruptorres del DSW1 te permirten polarizar los diodos que desees encender en la columna previamente seleccionada.

Ejemplo:
¿Como representaría una letra "A" mayúscula en el visualizador alfanumérico?
Muy sencillo. Primero dibuja la matriz representando cada LED con un circulo. Luego rellena los circulos respectivos para representar la letra o símbolo que desees (en nuestro ejemplo la letra "A").

Generalmente los para representar los números, letra y símbolos en una matriz se utilizan 7 LED's de cada columna (5 x 7), es por ello que observas que todos los LED's de la útlima fila están apagados.
Luego, usando los dip-switches, colocas la combinación correspondiente a la primera columna 01111110. Luego seleccionas la primera columna (primera de la izquierda) con el interruptor rotatorio. Por último, cierras en interruptor SW2 y verás como se ilumina la primera columna de la matriz. Luego desactivas el SW2. La columna se apaga.
Repites el procedimiento para las demás columnas 2, 3, 4 y 5. Ten en cuenta que debes cambiar la coombinación en lops dip-switches y realizar la selección de la columna respectiva.
Este procedimiento es 100% manual, y si logras hacerlo a una velocidad de unas 40 veces por segundo :-P, entonces verás la letra "A" de manera fija. Es simplemente una "ilusión" que se le crea al ojo humano, por el procedimiento es por barrido de columnas (columns swept) a una velocidad alta.
Obviamente hay circuitos mucho mas adecuados que hacen todo el procedimiento anterior de manera automática.





21/4/13

Otro punto de vista de las Compuertas

ME130421

Además de utilizar las compuertas como elementos para implementar circuito de control ya sean combinacionales o secuenciales, las compuertas pueden ser utilizadas como inhibidores de señales. Esto es, permitir o no permitir el paso de una señal digital hacia otras etapas. A esto se le denomina Inhibidor de Señales. Aqui les muestro algunos ejemplos y repaso de las funciones lógicas. El circuito tambien está disponible en archivo .dsn en Proteus.
Con la compuerta EX-OR se puede o no, invertir una señal lógica. Una aplicación bastante utilizada en la polarización de pantallas LCD y desfasadores de señales.
Los Tri-States puedes utilizarse como Multiplexores sencillos o Selectores de señales sencillos.
Ya para circuitos de mayor complejidad, existen los dedicados, que como usteden saben son descodificadores, codificadores, Multiplexores, Demultiplexores, comparadores, entre otros.

5/3/13

ECM / BODYCONTROL - BASICO

ME130228

Un circuito bastante sencillo el cual puede ser instalado en un Automóvil. Su funcionamiento permite:

  1. Detectar la apertura de puertas.
  2. Monitorear la temperatura del motor.
  3. Detectar la distancia minima para aparcado en retroceso.

La detección de puertas se realiza mediante la instalación de interruptores magnéticos. Al activar cualquiera de ellos, se activa una alarma sonora y se indica la puerta abierta en la pantalla LCD.
La temperatura del motor es detectada por un sensor de temperatura, el cual entrega una señal analógica, la cual es procesada por el microcontrolador y cuyo valor se muestra de manera periódica en la pantalla LCD. Cuando el valor de temperatura excede el máximo establecido, se enciende un indicador LED.
Para detectar la distanciá mínima se utiliza un sensor infrarrojo, el cual, ubicado en la parte trasera del vehículo, detecta la distancia mínima que debe estar el vehículo al momento de dar marcha hacia atrás. una vez detectada dicha distancia, se activa una señal auditiva y visual en la pantalla LCD.

El microcontrolador es el PIC16F877A.

Un proyecto interesante, el cual forma parte de las asesorias a mis estimados seguidores.

1/12/12

TECLADO MATRICIAL - (una "sencilla" solución)



** TECLADO MATRICIAL**
Figura 1 - Estructura de un arreglo 2 x 2
 Un teclado matricial es un arreglo o conjunto de interruptores conectados de manera tal que la activación de cualqueria de ellos permita la unión de puntos o terminales, es decir, un terminal de una columna con un terminal de una fila. 

La figura #1 muestra basicamente 4 pulsadores en un arreglo de 2 columnas por 2 filas. 




En la figura #2 puedes observar y analizar el principio básico. Al presionar el Pulsador "1" se comunica la COLUMNA 1 con la FILA 1.

Figura 2 - Enlace o unión entre una columna (1) y una fila  (1) 
La cantidad de columnas y filas que conforman un teclado matricial dependerá de su distribución física asi como de la cantidad de pulsadores en el teclado. Asi, por ejemplo, un teclado de 16 teclas, podría tener arreglos distintos en la matriz, pudiendo ser de 8 columnas por 2 filas, 2 columnas x 8 filas, 4 columnas por 4 filas, siempre y cuando el producto de pulsadores en cada columna multiplicado por los pulsadores en cada fila dé el total de la matriz.

Por ejemplo, para un teclado conformado por una matriz de 4 columnas por 4 filas, cada columna estará conformada por 4 pulsadores o cada fila estará conformada por 4 pulsadores.

ESTRUCTURA BASICA DE UN TECLADO EN UNA MATRIZ DE 4 X 4
Cada pulsación de una tecla es una conexión entre columna y fila:

Columna (C)  - Fila (F) - Tecla Pulsada            Columna (C)  - Fila (F) - Tecla Pulsada

      C1     con    F1               1                                  C1     con    F3               7
      C2     con    F1               2                                  C2     con    F3               8
      C3     con    F1               3                                  C3     con    F3               9
      C4     con    F1               C                                 C4     con    F3               E
      C1     con    F2               4                                  C1     con    F4               *
      C2     con    F2               5                                  C2     con    F4               0
      C3     con    F2               6                                  C3     con    F4               #
      C4     con    F2               D                                 C4     con    F4               F


Ahora, vamos a conectar a cada columna una resistencia Pull-Up a +5V cuyo valor puede estar comprendido entre 1 Kohm a 10 Kohm. De esta manera los terminales de las columnas estarán siempre a nivel lógico "1".
Con esto logramos que las columnas del teclado siempre van a entregar un nivel lógico "1" mientras no hayan pulsadores activados. A esto se le denomina "estado de reposo del teclado" (Keyboard Idle State).

Para este ejemplo, el proceso de detección o activación de cualquier tecla, genera un código binario único de 8 bits que combina la columna y fila respectiva, el cual se efectúa realizando un procedimiento denominado "barrido de filas" (Row Swept). A continuación procederemos a su descripción.


BARRIDO DE LAS FILAS:
Por ejemplo. Para detectar la activación o pulsación de las teclas 1, 2, 3 y C, se aplica, desde un dispositivo externo, un nivel lógico cero ("0") a la FILA 1.

Detectando las teclas de la Fila 1

Si cualquiera de las teclas 1, 2, 3 o C es pulsada o activada, el nivel lógico cero ("0") presente en la FILA 1, será "devuelto" o "reflejado" en la columna respectiva a la tecla activada. Por ejemplo:

  • Al presionar la tecla "1" el nivel lógico cero ("0") aplicado a la FILA 1 se devuelve al pin o terminal identificado como COLUMNA 1.
    • Al presionar la tecla "2" el nivel lógico cero ("0") aplicado a la FILA 1 se devuelve al pin o terminal identificado como COLUMNA 2.
  • Al presionar la tecla "3" el nivel lógico cero ("0") aplicado a la FILA 1 se devuelve al pin o terminal identificado como COLUMNA 3.
  • Al presionar la tecla "C" el nivel lógico cero ("0") aplicado a la FILA 1 se devuelve al pin o terminal identificado como COLUMNA 4.
Respuesta de cada tecla pulsada mientras se selecciona la Fila 1
Para detectar la pulsación o activacion de las teclas 4, 5, 6 y D desplazamos el nivel lógico "0" que se aplicó en la Fila 1 a la Fila 2. Por lo tanto se detectarán las teclas de las columnas 1, 2, 3 y 4 pertenecientes a la Fila 2, según se describe a continuación:


Detectando las teclas de la Fila 2


Si cualquiera de las teclas 4, 5, 6 o D es pulsada o activada, el nivel lógico cero ("0") presente en la FILA 2, será "devuelto" o "reflejado" en la columna respectiva a la tecla activada. Por ejemplo:

  • Al presionar la tecla "4" el nivel lógico cero ("0") aplicado a la FILA 2 se devuelve al pin o terminal identificado como COLUMNA 1.
    • Al presionar la tecla "5" el nivel lógico cero ("0") aplicado a la FILA 2 se devuelve al pin o terminal identificado como COLUMNA 2.
  • Al presionar la tecla "6" el nivel lógico cero ("0") aplicado a la FILA 2 se devuelve al pin o terminal identificado como COLUMNA 3.
  • Al presionar la tecla "D" el nivel lógico cero ("0") aplicado a la FILA 2 se devuelve al pin o terminal identificado como COLUMNA 4.
Respuesta de cada tecla pulsada mientras se selecciona la Fila 2

Para detectar la pulsación o activacion de las teclas 7, 8, 9 y E desplazamos el nivel lógico "0" que se aplicó en la Fila 2 a la Fila 3. Por lo tanto se detectarán las teclas de las columnas 1, 2, 3 y 4 pertenecientes a la Fila 3, según se describe a continuación:


Detectando las teclas de la Fila 3
 Si cualquiera de las teclas 7, 8, 9 o E es pulsada o activada, el nivel lógico cero ("0") presente en la FILA 3, será "devuelto" o "reflejado" en la columna respectiva a la tecla activada. Por ejemplo:

  • Al presionar la tecla "7" el nivel lógico cero ("0") aplicado a la FILA 3 se devuelve al pin o terminal identificado como COLUMNA 1.
    • Al presionar la tecla "8" el nivel lógico cero ("0") aplicado a la FILA 3 se devuelve al pin o terminal identificado como COLUMNA 2.
  • Al presionar la tecla "9" el nivel lógico cero ("0") aplicado a la FILA 3 se devuelve al pin o terminal identificado como COLUMNA 3.
  • Al presionar la tecla "E" el nivel lógico cero ("0") aplicado a la FILA 3 se devuelve al pin o terminal identificado como COLUMNA 4.

Respuesta de cada tecla pulsada mientras se selecciona la Fila 3
Para detectar la pulsación o activacion de las teclas *, 0, # y F desplazamos el nivel lógico "0" que se aplicó en la Fila 3 a la Fila 4. Por lo tanto se detectarán las teclas de las columnas 1, 2, 3 y 4 pertenecientes a la Fila 4, según se describe a continuación:


Detectando las teclas de la Fila 4
  Si cualquiera de las teclas *, 0, # o F es pulsada o activada, el nivel lógico cero ("0") presente en la FILA 4, será "devuelto" o "reflejado" en la columna respectiva a la tecla activada. Por ejemplo:

  • Al presionar la tecla "*" el nivel lógico cero ("0") aplicado a la FILA 4 se devuelve al pin o terminal identificado como COLUMNA 1.
    • Al presionar la tecla "0" el nivel lógico cero ("0") aplicado a la FILA 4 se devuelve al pin o terminal identificado como COLUMNA 2.
  • Al presionar la tecla "#" el nivel lógico cero ("0") aplicado a la FILA 4 se devuelve al pin o terminal identificado como COLUMNA 3.
  • Al presionar la tecla "F" el nivel lógico cero ("0") aplicado a la FILA 4 se devuelve al pin o terminal identificado como COLUMNA 4.
Respuesta de cada tecla pulsada mientras se selecciona la Fila 4
Como puedes observar, simplemente es un nivel lógico "0" el que se desplaza por cada Fila, "buscando", por decirlo de esa manera, que una columna "lo devuelva" al presionar una tecla.
Si el procedimiento completo se repite de manera indefinida, a éste se le conoce con el nombre de "barrido de Filas".


Se obtienen ahora, todas las combinaciones válidas generadas por el teclado matricial 4 x 4 por cada tecla pulsada o detectada en cada fila respectiva:

TABLA DE VERDAD PARA UN TECLADO MATRICIAL 4 X 4


24/11/12

RELOJ DIGITAL - FORMATO 24 HRS

ME121124

Aqui les presento otro Reloj Digital en Formato de 24 Horas, implementado esta vez con lógica TTL y CMOS discreta.



  • La fuente de impulsos es tomada directamente de la frecuencia de la red electrica, para luego ser conformada por U8A y enviada a los divisores de Frecuencia CD4017 (U16 y U15), de los cuales se obtiene el pulso de 1 Hz (U15 pin 1).
  • El pulso de 1 Hz es aplicado al primer contador MOD 60 (U20B y U20A) para la cuenta de los segundos. 
  • La salida del pulso de RESET del contador de segundos (Pin 11 - U17D) es llevada a un selector de impulsos, el cual permite el ajuste de los minutos al activar el pulsador SW AJT MIN. 
  • La salida del selector de impulsos de los minutos (Pin 3 - U17A) es llevada al segundo contador MOD 60 (U19B y U19A) para la cuenta de los minutos.
  • La salida del pulso de RESET del contador de minutos (Pin 8 - U17C) es llevada a un segundo selector de impulsos, el cual permite el ajuste de las horas al activar el pulsador SW AJT HRS.
  • La salida del selector de impulsos de las horas (Pin 6 - U17B) es llevada al tercer contador MOD 60 (U18B y U18A) para la cuenta de las horas.
  • Las salidas en BCD de cada grupo de contadores es aplicada a los descodificadores BCD a 7-segmentos (U9 al U14) para displays de tipo Anodo Común.
  • Todo el conjunto de contadores se reinicializa al momento de energizar el circuito, gracias al circuito de auto-reset conformado por una red RC (R8 y C2) y la compuerta U8B (Compuerta NAND con disparador de Schmitt).
  • Una de las salidas del divisor de frecuencia (U15 - Pin 7) se aplica al FF que queda disponible en el Contador de las Horas (U18A - CKA), con lo cual se obtiene una señal de 2 Hz (500 mseg) en el Pin 3 (QA de U18A), la cual se aplica a un transistor Driver para los segmentos de punto decimal, indicando la intermitencia en el visualizador.
  • La fuente de alimentación está conformada por una fuente lineal que entrega +5 VDC con una corriente máxima de 1 amp, suficiente para suministrar la corriente necesaria a todo el circuito.
Recuerden que pueden ponerse en contacto conmigo via email (memotronics@yahoo.com) y con gusto responderé a sus inquitudes) :-D

Circuitos colocados hasta ahora: