Buscar este blog

Mostrando entradas con la etiqueta Circuitos integrados. Mostrar todas las entradas
Mostrando entradas con la etiqueta Circuitos integrados. Mostrar todas las entradas

miércoles, 17 de febrero de 2016

Marquesina con electrónica con leds

1 comentarios
Una marquesina electrónica es un conjunto de leds con la finalidad de proporcionar alguna secuencia lógica con dispositivos electrónicos.

La presente marquesina electrónica cuenta con 3 funciones.

Función   Descripción

1               Enciende un led a la vez de izquierda a derecha da la impresion de girar a la izquierda

2               Enciende un led a la vez de derecha a izquierda da la impresion de girar a la derecha

3              Enciende dos leds uno hacia la derecha y el otro a la izquierda


Para la función 1 se oprime solo el botón A. 
Para la función 2 se oprime solo el botón B.
Para la función 3 se oprime ambos botones.


Convertidor de USB a Puerto Serie (DB9)

0 comentarios

Muchas veces necesitamos algun tipo de convertidor para conectar nuestra computadora a un dispositivo compatible con el puerto serie.

Para esto se empleara el circuito integrado FTDI 232 el cual se encarga de convertir los datos provenientes del USB a datos con el protocolo RS-232 con niveles TTL.

Este circuito integrado necesita los Driver's correspondientes que pueden descargar de la pagina oficial Driver's FTDI. Una vez instalados se creara un puerto COM virtual en la computadora.

El siguiente circuito integrado es el MAX 232 el cual se encarga de convertir los niveles TTL a los niveles necesarios para el puerto serie DB9.

A continuacion se presenta el diagrama con las conexiones necesarias para el convertidor. Notese que el circuito se alimenta directamente del puerto USB.



miércoles, 14 de octubre de 2015

Manejo de una memoria RAM 6116

3 comentarios
La memorias su principal función es la de mantener la informacion guardada ya sea por un momento o por un largo periodo de tiempo. En las ocaciones que solo se necesita guardar informacion por un corto periodo por ejemplo para guardar la informacion de variables que cambian durante la ejecucion de un programa es necesario tener donde guardar esa informacion por ese corto periodo.

Para esta aplicacion emplearemos una memoria RAM 6116 que mantendra nuestra informacion por un periodo y despues al  necesitar renovar de nuevo esa informacion la podremos "refrescar".

LA MEMORIA RAM 6116 El dispositivo 6116 es una memoria de acceso aleatorio, Random Acces Memory (RAM), cuenta con una capacidad de 2048 palabras de 8 bits cada una, es una memoria estática de alta velocidad, esta fabricada con la tecnología CMOS, opera con una fuente de alimentación de +5.0 Volts y esta dispuesta en una pastilla de 24 terminales.


CARACTERÍSTICAS DE LA MEMORIA RAM 6116
• Organización de la memoria: 2048 X 8
• Alta velocidad: tiempo de acceso 150 nseg.
• Baja potencia en estado inactivo: 10 uW
• Baja potencia en estado activo: 160 mW
• RAM completamente estática: No requiere reloj para su funcionamiento
• Temperatura de operación: 0.75 grados centígrados
• Temperatura de almacenamiento: De -55 a +125 grados centígrados.
• Potencia de disipación: 1 Watts
• Todas sus entradas y salidas son compatibles directamente con la tecnología TTL

DESCRIPCIÓN DE LAS TERMINALES
• A0-A10: Lineas de direcciones
• E/S0-E/S7: Entrada y Salida de datos
• CS Habilitador de la pastilla
• OE Habilitador de salidas
• WE Habilitador para la escritura
• Vcc Voltaje de alimentación +5.0 Volts
• GND Terminal de tierra 0.0 Volts

OPERACIÓN DE LECTURA

Un dato será leído del dispositivo de almacenamiento RAM 6116, mediante la aplicación de un nivel alto en la terminal (WE)', un nivel bajo en (CS)', y estando en nivel bajo la terminal (OE)', con estas conexiones se dispone que se pueda leer la memoria RAM 6116, si se coloca un nivel alto en la terminales (OE)'. y/o (CS)' las lineas de E/S y/o la pastilla 6116 se ponen en estado de alta impedancia, respectivamente.
(CS)' posee la función de controlar la activación de la pastilla, la cual puede ser usada por un sistema con microprocesadores para la selección del dispositivo.
La terminal (OE)' habilita las salidas, o las pone en estado de alta impedancia, la cual puede ser habilitada cada vez que el microprocesador requiera leer la memoria.

OPERACIÓN DE ESCRITURA

Un dato es escrito en el dispositivo RAM 6116 mediante la aplicación de un nivel bajo en la terminal (WE)', un nivel bajo en (CS)', y un nivel alto o bajo en la terminal (OE)'.
La terminal (WE)' al ser activa provoca que las terminales E/S de la memoria RAM 6116 se habiliten para aceptar la información, en estas condiciones la terminal (OE)' posee la opción de ser colocada en estado de alto bajo, para realizar así la operación de escritura.



                                                             

martes, 6 de octubre de 2015

Amplificador de audio con TDA2003 10 watts

1 comentarios
Al principio cuando arme este proyecto pensé no tener tan buenos resultados porque al ver el circuito integrado TDA2003 de encapsulado TO-220, sus dimensiones no me parecieron que se le sacara tanta potencia, no creí que tuviera buen volumen.


 Este amplificador no requiere muchos conocimientos de electronica para armarlo, por lo que cualquier persona con ganas de aprender electronica debe manejarlo alguna vez. En el siguiente imagen se muestra como debe ir conectado.


                           



En mi experiencia al armarlo obtuve buenos resultados haciendo unos pequeños cambios. Por ejemplo el capacitor C3 no es necesario incluirlo con solo el de 100 microFaradios bastara. La resistencia Rx la reemplace por una de 56 Ohms el capacitor 39nf lo reemplace por uno de  100nF, la R2 por una resistencia de 10 ohms y R3 igual por uno de 10 ohms, Con estos cambios obtuve un buen resultado ademas que son valores mas comerciales, es decir, mas faciles de encontrar.

Para alimentar este amplificador bastara con una fuente entre 9 a 12 volts minimo 1 ampers para tener buenos resultados y evitar que se caliente mucho el TDA2003.

Para tener una mayor claridad de como armarlo la siguente imagen muestra como estan dispuestos los pines en el TDA2003 real.

                           



Donde los pines mas cortos en la figura son los pines localizados en la parte delantera y los pines mas largos en la figura son los que se encuentra en la parte trasera del TDA2003.




domingo, 4 de octubre de 2015

Manejo de una memoria EEPROM 28C16 Parte 2

7 comentarios
En la parte 1 de este tutorial del manejo de una EEPROM 28C16 vimos algunas especificaciones de este dispositivo que en un principio se ve dificil de manejar pero en la realidad no lo es.

Para esto lo primero que debemos hacer es saber como vamos a emplear nuestro dispositivo, es decir, que circuito le vamos a agregar para hacer alguna aplicacion practica. Lo primero que vamos a hacer es emplearla en modo lectura.

Veamos de nuevo como estan dispuestos los pines de la EEPROM para despues saber que circuitos le vamos a agregar, si tienes dudas de cada pin te sugiero que veas primero Manejo de una memoria EEPROM 28C16 Parte 1 de este tutorial.


Direccionar la memoria EEPROM


                                                        

Como vimos en la parte 1 los pines de A0 a A10 sirven para direccionar las 2048 localidades de memoria. Hay varias formas como se podrian direccionar estas localidades podria ser por medio de un contador de 10 bits o un microcontrolador. Pero lo mas recomendable para un "principiante" es hacerlo por medio de un contador, podria ser uno de 8 bits aunque se tendria el inconveniente de solo poder direccionar 256 localidades de las 2048 disponibles, pero si aun asi tienes dificultades para armar un contador ya que se requiere de un temporizador y los contadores y quieres ver la manera de manejar la memoria lo mas simple  podrias emplear un dip switch y es lo que se hara en este post.




Resultado de imagen para dip switch
                                                            Dip switch de diferentes bits.


Si no conocias los dip switch son como los que se muestran en la figura anterior, entonces lo primero que vamos a hacer es conectar un dip switch en las terminales de A0 a A10 no importa si no tienes o consigues uno de 10 pines con uno de 4 u 8 pines bastaria.

En este ejemplo vamos a emplear un dip switch de 4 pines por lo que solo direccionaremos 16 de las 2048 direcciones mas que sificiente para nuestro ejemplo.

Los primeros 4 pines se  conectaran al dip switch y el resto se dejara conectado a GND pues no se emplearan en este ejemplo.

La conexion quedara como se ve en la siguiente imagen.


Polarizar la memoria EEPROM


Para polarizar este dispositivo solo bastara conectarlo a una fuente de 5 volts. La siguiente figura muestra como va ir polarizado.




Habilitar la memoria EEPROM

Como habimos explicado el pin para habilitar se dispone del CE negado pin numero 18. Este pin le ponemos conectar diferentes salidas  ya sea una compuerta logica o la salida de un microcontrolador para habilitarlo, pero como en este tutorial debe ser lo mas didactico para comprender bien el funcionamiento para habilitarlo lo conectaremos a gnd directamente por medio de un cable. En la siguiente imagen se muestra como se hace la conexion se muestra en color rojo.




Ponerlo en modo lectura

Para poner en modo lectura conectaremos por facilidad y para aprender a manejarlo. El pin numero 20 ( OE negado )  y el pin numero 21 (WE negado) los conectaremos a 5 volts. En la siguiente imagen se muestra las conexiones en color azul.




Visualizar los datos

Hay varias formas de visualizar los datos que contega la memoria eeprom 28C16 ya sea por medio de un display de 7 segmentos, activando transistores para el manejo de cargas, conectando las salidas al multimetro para medir el voltaje de salida o una punta logica o simplemente conectando leds que es la forma mas simple de hacerlo y es la que vamos a emplear. Los leds los conectas de la siguiente manera.



Como pueden apreciar en la imagen anterior cada diodo led esta conectado a los pines  I/O con su respectiva resistencia limitadora, el valor de la resistencia debe de ser de 330 ohms para evitar quemar los leds y de igual forma no quemar el integrado.


Una aplicacion mas real.

Una aplicacion  que le podemos dar a la memoria eeprom es la visualizacion de los datos por medio de display de 7 segmentos. Esta se hace de la siguiente manera : con un display de 7 segmentos de catodo comun como se muestra en la siguiente imagen.


                                                     

Conectados en pin numero 9 en el pin del display con la letra a, el 10 con el b, el 11 con el c, el 13 con el d, el 14 con el e, el 15 con el f, el 16 con el f y por ultimo el pin 17 con la g. y los pines que estan entre f y a le conectamos una resistencia de 330 ohms a tierra y el pin que esta entre d y c de igual forma le conectamos una resistencia de 330 ohms.


Una aplicacion mas compleja.


En la siguiente parte explicaremos como grabarle datos a la memoria EEPROM.

Como programar un microcontrolador parte 3 (Programando el pic 18F4550)

0 comentarios

En el post anterior empezamos a ver algunas funciones basicas para emplear el pic 18f4550, estas funciones son como configurar los puertos de E/S.

En este capitulo vamos a seguir programando el puerto como entradas para realizar algunas aplicaciones basicas en el manejo del microcontrolador Pic18F4550.


Para programar el puerto como entradas del  pic18f4550 se comentó que el registro encargado era el TRISx y que tenia que cargarse con un uno lógico para ser entrada.

Por ejemplo si queremos configurar el puerto B como entrada tenemos que escribir lo siguiente:

TRISB = 0XFF;

Y si solo queremos emplear algunas terminales se debe escribir el uno donde se requiera, por ejemplo para configurar la terminal (3, 4 y la 7 por decir algo) como entradas tendriamos que el numero en binario seria:

1001 1000 donde el bit de mas peso es el de la izquierda y el de menor peso es el de la derecha.

Pero eso seria en binario para hexadecimal seria :   0x98
Por lo que quedaria asi:

TRISB = 0X98 // para las terminales 3,4 y 7

Y si solo empleamos la primer terminal  en binario seria: 0000 0001
y en hexadecimal : 0X01

Por lo que quedaria asi:

TRISB = 0X01;


Ya con eso y lo visto en el post anterior se puede generar el siguiente enunciado.

Con el microcontrolador pic18f4550 configure la terminal 1 del puerto B como entrada y la terminal 7 del puerto A como salida  que tendra un led conectado y que por medio de un botón el cual este conectado a la terminal 1 del puerto B, cuando se oprima el boton se encienda el led y cuando este sin oprimir el boton el led se encuentre apagado.



#include <p18f4550.h> // Incluye procesador

void main (void)
{

TRISB = 0X01;// Configurar la terminal 1 del puerto B como entrada
PORTB=0X00;// Puerto B en ceros
TRISA = 0x00;// Puerto A como salida
PORTA=0x00;// Puerto A en ceros

// configura pines como digitales
ADCON1 |= 0X0F;

while(1)
{
  if (PORTB==0x01) // Si la terminal 1 tiene un 1
  PORTA = 0x80;// La terminal 7 del puerto A se pone un uno
  else // Si no
  PORTA = 0x00; // Puerto A apagado.
}
}

martes, 28 de octubre de 2014

Curso electronica digital capitulo 1 Compuertas logicas y sus funciones

0 comentarios
En los siguientes post se desarrollaran capitulo a capitulo un curso de electronica digital basica, si bien en la web hay una infinidad de cursos y temas que hablan sobre electronica digital, hay muy pocos a casi ninguno que muestran ejemplos basicos tanto teoricos como practicos, este curso pretende ser diferente ya que se desarrollara teoria y practica con resultados reales y se mostrara como armar los circuitos correspondientes.

En los cursos de electronica digital siempre se opta por comenzar a explicar que son los numeros binarios, octales y hexadecimales, en este curso se omitira esa introduccion para realizar cosas mas practicas pero no se olvidaran de esos conceptos ya que se mostraran en el momento adecuado.

Entre los temas que veremos son:


  1. Compuertas logicas y sus funciones.
  2. Funciones logicas combinacionales.
  3. Max terminos.
  4. Min terminos.
  5. Simplifacion con Mapas de Karnaugh.
  6. Circuitos Logicos combinacionales.
  7. Codificadores y Decodificadores.
  8. Multiplexores Y Demultiplexores.
  9. Circuitos Secuenciales
  10. Flip-Flops.
  11. Contadores asincronos y sincronos.
  12. Aplicacion de contadores.
  13. Maquinas de estados.
  14. Maquina de Mealy.


EMPEZAMOS

La electronica digital se basa en el procesamiento de numeros binarios "ceros" y "unos" que se representan con la ausencia o presencia ya sea de voltaje o corriente electrica. Los cimientos de toda la electronica digital se basan en las importantisimas compuertas logicas. Las compuertas logicas no son mas que dispositivos electronicos que realizan una funcion especifica y que dependiendo de lo que tengan en sus entradas van a tener en sus salidas.

Las compuertas logicas basicas son:

AND
                         
 
Figura compuerta and

 Como se aprecia en la anterior figura la primera  imagen corresponde al simbolo de la compuerta and que tiene dos entradas (A y B) y una salida X, la segunda imagen nos muestra la tabla de verdad de la compuerta and, esta tabla nos indica  las posibles combinaciones que se tienen en la entrada (conectar la compuerta a tierra "0" o a 5 volts "1") para tener una salida especifica (tener un "0" cero volts o un "1"  5 volts a  la salida). La tercera imagen nos muestra la funcion logica, esta funcion es matematica es decir si se sustituye el valor de A o de B que corresponde a las entradas y al hacer la operacion correspondiente (operacion logica) se tendra un valor que corresponda al resultado de la operacion.

Ejemplo 1

En este ejemplo la funcion logica es una multiplicacion por eso cuando se tiene 1 en A y 0 en B al hacer la multiplicacion nos da cero (1 por 0 es 0).

Ejemplo 2


En este ejemplo se mostro un caso ya practico donde se conecta a la compuerta logica a 5 volts en ambas entradas que representan un "1" logico y al hacer la operacion correspondiente (multiplicacion logica) se tiene un "1" en la salida es decir 5 volts.  


OR






NOT 


Tanto las compuertas OR como la NOT la logica de su funcionamiento es igual que la de la compuerta AND. Solo es cuestion de ver la tabla de verdad para saber su funcionamiento, en la compuerta OR se ve en la imagen que si no hay  un 1 (5 volts) en cualquier entrada o en ambas su salida es un 0 (cero volts) y su funcion matematica es una suma logica (mucho cuidado aqui no es lo mismo que una suma binaria) por lo que un 1 mas otro 1 en una suma logica sigue siendo 1. En la compuerta NOT se aprecia que la entrada se invierte es decir si en la entrada le ponemos un  1 logico (5 volts) en la salida tendremos un cero logico (0 volts) en su funcion logica se muestra una linea arriba que representa el simbolo de la negacion.

Las demas compuertas logicas se basan en las anteriores por lo que antes de pasar a las siguientes compuertas logicas vamos a dar un ejemplo practico de como utilizarlas.  
Por lo que necesitaremos el siguiente material :

1 Protoboard
1 fuente de voltaje de 5 volts (puede ser un cargado de celular en desuso)
3 resistencias de 220 Ohms
1 mini dip (minimo de 2 entradas)
1 led (cualquier color)
1 circuito integrado 74ls04 (NOT)
1 circuito integrado 74ls08 (AND)
1 circuito integrado 74ls32 (OR)
Cables para protoboar



A continuacion se muestra una imagen del material a utilizar.



 En la imagen anterior se aprecia la protoboar, el mini dip de 2 entradas (color azul), las compuertas logicas (3 circuitos integrados), el led en este caso color rojo, las tres resistencias, algunos cables para "alambrar" el circuito y la fuente de voltaje ( se uso una fuente de 5 volts de un PSP).

Con el material anterior vamos a empezar a armar nuestro circuito para comprobar la teoria anterior.  En la siguiente imagen se puede obsevar el circuito ya armado, pero no se preocupen vamos a explicar paso a paso cada parte de como se debe de armar.



Primero se debe de "alambrar " cada lado de la protoboard  de extremo a extremo para que ambas partes tenga el voltaje correspondiente, se observa que el cable color rojo va a las parte positiva del protoboar (linea roja) y el cable negro en la parte negativa del protoboar donde esta la (linea negra).



En la imagen siguiente se muestra como polarizar el circuito, el conector (caiman) de la fuente de color rojo (que en la fuente utilizada son los 5 volts) va en la linea roja y el conector (caiman)  de la fuente color negro (tierra) va a la linea azul del protoboard.


La siguiente imagen muestra como se debe conectar el mini dip (color azul), de un lado se conecta dos cables (color rojo) a la parte positiva (5 volts) y del otro lado se conectan las resistencias al mini dip y a tierra (0 volts). Entre el mini dip y las resistencias van conectados otros dos cables (color verde y morado) estos van a ir conectados del otro lado al circuito integrado en este caso compuerta and. En  el circuito integrado se observa un circulito (muesca) apartir de  ahi se cuenta el numero de pines de izquierda a derecha por tanto siguiendo el orden numerico el cable verde esta conectado al pin numero 1 y el cable morado al pin numero 2.



 En la siguiente imagen se muestra que en el pin numero 3 va conectada una resistencia y del otro lado una patita del led.




En la siguiente imagen se observa que el otro lado del led va conectado a tierra (lado azul del protoboard), hay que tener especial cuidado al conectar el led porque este debe estar correctamente polarizado, si observa bien su led que tenga a la mano observara que tiene una patita mas larga que la otra, la patita mas corta siempre sera la que se conecte a tierra y la patita mas larga sera conectada a positivo (5 volts).



Comprobando funcionamiento compuerta AND


La siguiente imagen muestra practicamente como funciona la compuerta and. Se puede apreciar que en el mi dip los dos interruptores se encuentran en la posicion de abajo osea estan ambos conectados a tierra  o a cero volts,  que es lo mismo tener en sus entradas  ceros logicos si se recuerda la funcion logica es una multiplicacion por lo que A= 0 Y B= 0 al hacer la multiplicacion nos da cero en la salida (X=0) por lo que el led no se enciende.



La siguiente imagen muestra a los interruptores del minidip  en diferente posiciones en este caso A=1 y B=0 al aplicar la funcion logica  X= ( 1 )( 0 ) el resultado seria X=0 por lo que el led sigue sin encender si se fuera el caso opuesto A=0 y B= 1 el resultado seria lo mismo.




 En la siguiente imagen ambos interruptores del minidip se encuentran en la posicion de arriba osea conectados a  5 volts, al aplicar la funcion logica  de acuerdo a las entradas A=1 y B=1 tenemos X= ( 1 ) ( 1 ) el resultado es X=1 por lo que en la salida tenemos 5 volts y el led enciende.


Comprobando funcionamiento compuerta OR.

  La compuerta or su funcionamiento es similar que la compuerta and, la misma circuiteria sirve. Lo unico que cambia es la funcion logica en este caso es una suma como habiamos comentado arriba solo se debe de recordar que es una suma logica no binaria. En la siguiente imagen se muestra los dos interruptores del mini dip en la posicion abajo osea conectados a tierra por lo que en la entradas de la compuerta se tienen "ceros" al sustituir los valores en la funcion logica tenemos  X= 0 + 0  teniendo como resultado X= 0 por lo que el led no enciende.  




La siguiente imagen muestra el minidip con un interruptor en la posicion de arriba y el otro en la posicion de abajo por lo que en las entradas se tiene A=1 y B=0 sustituyendo esos valores en la funcion logica se tiene X= 1 + 0  y el resultado X=1 por lo que en la salida se tendria 5 volts y el led enciende.



En la siguiente imagen la explicacion anterior tambien se aplica aqui A= 0 y B= 1 sustituyendo       X = 0 + 1 el resultado X = 1 y el led enciende.



En la siguiente imagen se aplica lo que se anda repitiendo a qui se aplica la suma logica (no binaria) observando el mini dip  se tiene ambos interruptores en la posicion de arriba por lo que estan conectados a los 5 volts ( unos) al sustituir en la funcion logica  X = 1 + 1 el resultado es     X = 1 por lo que el led enciende. 


 

Comprobando funcionamiento compuerta NOT.

La compuerta not funciona de la siguiente manera. Cuando se tiene un 1 en la entrada en la salida se tiene un 0 y viceversa. En la siguiente imagen se muestra que el circuito es casi el mismo ya que tiene un pequeño cambio, si se recuerda la compuerta not solo tiene una entrada por lo que si se observa bien solo el cable verde esta conectado a la compuerta (al pin numero 1) y la resistencia que va al led va conectado al pin numero 2. Los cambios anteriores son los unicos. En la logica del funcionamiento se se tiene el interruptor en la posicion de abajo por lo que en la entrada se tiene un  cero logico al sustituir en la funcion logica X = 0 ' el resultado es X = 1 por lo que el led enciende.



La siguiente imagen muestra al minidip en la posicion de arriba por lo que en la entrada se tiene  5 volts osea un 1 logico al sustituir en la funcion logica se tiene  X = 1'  el resultado es X = 0 por lo que el led no enciende.


Apendice del capitulo 1

Compuerta XOR

La puerta lógica OR-exclusiva, más conocida por su nombre en inglés XOR, realiza la función booleana A'B+AB'. Su símbolo es el más (+) inscrito en un círculo. En la figura  pueden observarse sus símbolo, tabla de verdad y su ecuacion.


Compuerta XNOR

Es semejante a la anterior pero su salida es negada respecto a la XOR.


Hasta aqui se concluye el primer capitulo de este curso de electronica digital.


miércoles, 22 de octubre de 2014

Como programar un microcontrolador parte 2

0 comentarios
En esta segunda parte de como programar un microcontrolador vamos empezar a ejemplificar con un microcontrolador en particular puesto que lo dicho en la primera parte se explico que se necesita saber de cualquier microcontrolador en general.

Algunos colegas electronicos recomiendan que para aprender a programar un microcontrolador se debe de empezar por uno sencillo un ejemplo de esto puede ser el pic16f84 de la compañia de microchip, este microcontrolado es considerado de gama baja por sus limitadas prestaciones (numero de pines, perifericos, instrucciones reducidas, etc...), pero por experiencia propia les podria decir que no importa con que microcontrolador empiezen a programar todos basicamente todos se programan con la misma idea, solo cambian las instrucciones, la estructura de los programas.

Como les menciono parrafos arriba podemos programar cualquiera (Pic's, texas instruments, freescale) pero en los siguientes post se enseñara a programar con el pic18f4550 de gama media (temas basicos) y despues se enseñara a programar el msp430  de texas instruments y haremos una comparacion para que se den cuenta en que cambian las metodologias en cada microcontrolador de diferentes compañias, tambien se dara unos ejemplos de como programar los avr's de ATMEL para completar este pequeño cursillo, si despues se deseara profundizar en cualquier microcontrolador ya sabrian como hacerlo. Asi que empezemos con el pic 18f4550.

Empezando a programar el pic18f4550

Antes que nada para empezar a programar el pic en particular se necesita saber en que lenguaje se programara dicho microcontrolador. Para el pic18f4550 existen dos lenguajes en particular para programarlos (ensamblador y C), por "simplicidad" y no meternos tanto en la arquitectura de los microcontroladores en particular ya que lo que nos interesa en si es solo programarlos, es decir, ver al microcontrolador como una caja negra solamente, se optara en programarlo en lenguaje C y esto ademas es una gran ventaja ya que es el lenguaja preferido por su gran flexibilidad. El lenguaje ensamblador tambien es muy importante pero este requiere de un curso mas extenso y para ejemplificarlo con un microcontrolador en particular, pero la finalidad de este curso es mostrar como programar cualquier microcontolador con la misma idea por eso el lenguaje C es el ideal ya que lo unico que cambiaria seria los mnemonicos de cada microcontrolador.

Para empezar se necesita descargarse el IDE de MPLAB del siguiente link MPLAB puede descargar el IDE de MPLAB segun la version que soporte su computadora. Como por ejemplo yo tengo la version 8.92 para windows en 32 bits.Ustedes pueden elegir la version que requieran para el sistema operativo que usen, en nada cambiara la version para seguir este tutorial.

Una vez que instalen el MPLAB y abran el IDE les aparecera la siguiente imagen.





Lo que tienen que hacer para crear un nuevo proyecto es lo siguiente:

1) Ir a la pestaña Project --> Set Lenguage Tool Locations abrir esta pestaña
2)Se abrira una pestaña y buscar la parte dice Microchip C18 Toolsuite
3)En Executables ver que los 4 ejecutables correspondientes a C18 se encuentre en la direccion adecuada o se encuentren añanidos. En dado que no se encuentre disponible debes descargar la suite de C18 para empezar a programar y añadirlo en la direccion correspondiente.
4) Una vez verificado lo anterior en la pestaña de Project --> Project Wizard
5) Aparecera una ventana que nos dira WELCOME le daremos en siguiente
6) Seleccionaremos Device pic18f4550 y siguiente
7)Nos aparecera una nueva ventana y seleccionaremos Microchip C18 Toolsuite siguiente
8)Nos aparecera una ventana que nos pedira un nombre para nuestro proyecto, en este caso hay que darle primero en Browse para crear una nueva carpeta en la direccion que nosotros queramos. Creamos la carpeta y dentro de esa carpeta añadiremos un nombre nuevo de proyecto que terminara con .mcp que por default MPLAB lo añade al nombre que elijamos por lo que no es necesario porne la extencion .mcp damos en guarda y pondremos siguiente a esa ventana.
9) La siguiente ventana solo muestra si queremos añadir algun archivo en nuestro caso no es necesario por lo que le daremos en siguiente.
10) Ya por ultimo aparecera una nueva ventana que bastara darle clic en finalizar.

Ya con esto nos aparecera nuestro espacio de trabajo.



Teniendo nuestro espacio de trabaja nos enfocaremos en escribir nuestro primer programa.
Para esto lo primero que vamos a explicar como utilizar los puertos de entrada/salida del microcontrolador.


Lo principal y primero que tenemos que escribir en nuestro programa es incluir una directiva que le diga al programa que microcontrolador vamos a emplear en nuestro caso es el pic18f4550.


#include <p18f4550.h> // Incluye directiva pic a usar


Lo siguiente que vamos a escribir es el cuerpo del programa para esto se va a emplear el siguiente codigo.


void main (void)
{

//Programa a escribir
}

Este codigo nos indica el programa principal. Dentro del programa principal vamos a escribir las instrucciones que queremos que haga el microcontrolador.

Lo siguiente que vamos a escribir es la configuracion de los puertos I/O  para esto escribimos
con los registros TRISA   y PORTA.

Con TRISx configuraremos los puertos ya sea como entrada o salida. la "x" nos indica el puerto que
emplearemos. Por ejemplo si queremos emplear el puerto A solo necesitamos escribir "TRISA" y si
queremos emplear el puerto C escribimos "TRISC".

Los puertos se pueden configurar de dos formas (como entrada o como salida). Para configurarlo
como entrada tenemos que escribir un 1 en el registro TRISx y para configurarlo como salida se tiene
que escribir un 0 en el registro TRISx.

Como en este ejemplo vamos a hacer parpadear un led del puerto A de una sola terminal (ya que
todo el puerto tiene 8 terminales) debemos escribir el siguiente codigo.

TRISA = 0XFE; // Aqui le decimos que la primera terminal del puerto A esta como salida.


Lo siguiente que debemos configurar es que si inicialmente el led va estar apagado o encendido para
este se configura el registro PORTx. Como en el caso anterior la "x" indica el puerto que queremos
configurar como es el puerto A escribimos PORTA, si fuera el puerto D se escribiría PORTD. Para
poner el puerto en bajo "apagado" se escribe en el registro PORTx un 0 y para ponerlo en alto
escribimos un 1 "encendido". El código quedaría de la siguiente forma.

PORTA= 0x00; // Inicialmente el led estara apagado.


Lo siguiente que hay que configurar es si los puertos van a funcionar como analogicos o digitales
en nuestro caso es obvio que serán digitales para esto se emplea el registro ADCON1 ya que
inicialmente los puertos están configurados como analógicos para esto emplearemos el siguiente
código.


ADCON1 |= 0x0f; // Configura las terminales como digitales


Mas adelante se explicara mas detalladamente este registro ADCON1.

Enseguida escribiremos nuestra primera condición en el programa ya que lo que haremos es hacer
prender y apagar nuestro led indefinidamente emplearemos un bucle infinito para esto la mejor
opción es la condicional "while". Con while las instrucciones que se localicen dentro se ejecutaran
hasta que la condición sea 0 pero en nuestro caso lo haremos indefinidamente por lo que bastara
poner un 1 dentro de la condición así la condición siempre sera diferente de 0 por lo que las
instrucciones se ejecutaran indefinidamente.


while(1)
{

//Todo lo que se encuentre dentro se ejecutara una y otra vez.

}


Dentro de la condicional while ejecutaremos las instrucciones de encendido y apagado por lo que
escribiremos el siguiente código.


PORTA = 0x01;
Delay10KTCYx (1000);
PORTA = 0x00;
Delay10KTCYx (1000);

Primero encenderemos el led con la instrucción PORTA =0x01;
Lo segundo es esperar 1 segundo que es el tiempo que el led estará encendido esto se hace con la
instrucción Delay10KTCYx (1000);

Donde el Delay10KTCYx(); es una función de C18 cuya libreria es la siguiente:

delays.h

Lo tercero es apagar el led con la instruccion PORTA= 0x00;
Lo cuarto y ultimo es esperar otro segundo que es el tiempo que el led permanecera apagado esto
se logra con la instruccion Delay10KTCYx (1000);

Apartir de aqui las instrucciones se volveran a ejecutar desde un principio. Encendiendo el led, esperando 1 segundo, apagando el led y volver a esperar otro segundo.

Por ultimo nuestro programa deberá quedar de la siguiente manera.


#include <p18f4550.h> // Incluye directiva pic a usar
#include <delays.h>//libreria del retardo
void main (void)
{

TRISA = 0x00; // Configurar puerto A como salida
PORTA=0x00; // Se pone el puerto A  apagado

// configura pines como digitales
ADCON1 |= 0x0f;

while(1)
{
PORTA = 0xf0;// Cuatro ultimos bits encendidos
Delay10KTCYx (1000);// Retardo
PORTA = 0x00;// Todo el  puerto A apagado
Delay10KTCYx (1000);// Retardo

}
}

En la siguiente parte veremos como generar un barrido de leds y como controlar un servomotor con
tan solo lo explicado en este capitulo.

sábado, 18 de octubre de 2014

Sistema minimo con microprocesador Z80 capitulo 2

1 comentarios
Continuamos en el armado del sistema minimo con microprocesador Z80. El siguiente paso para nuestro sistema minimo es agregarle la memoria EEPROM.

Memoria de programa (EEPROM)

La memoria EEPROM ya se habia comentado  en un post anterior ( Manejo de memoria EEPROM ). Esta memoria EEPROM es la encargada de guardar las instrucciones que le vamos a dar al microprocesador Z80 para que realice dicha funcion. La memoria EEPROM se conecta en las terminales de datos, en las terminales de direccion y control del Z80 que despues el microprocesador  leerá en forma secuencial y ejecutará las instrucciones guardadas en la memoria.


La memoria EEPROM sera programada en forma independiente al microprocesador Z80. Dentro de la memoria  y en cada localidad se almacenara las instrucciones en forma binaria. La forma en que interactua la memoria EEPROM y el Z80 es la siguiente: El microprocesador con su contador de programa direcciona la localidad de memoria, lee la informacion en ella, la decodifica, la ejecuta, el contador de programa se incrementa y se lee una nueva direccion de memoria.

La conexión de nuestro sistema minimo quedara de la siguiente manera.




En nuestro siguiente post se añadira un nuevo elemento al sistema minimo para las lineas de control ademas se hara un programa simple para monstrar el funcionamiento del sistema minimo con el Z80.

martes, 23 de septiembre de 2014

Osciloscopio casero con leds

2 comentarios
Este osciloscopio es de facil  implementacion para el principiante de electronica como pueden ver solo se compone de tres circuitos integrados de facil adquision. Un 555 para generar los pulsos que van al contador CD4017 para generar el barrido horizontal de la señal que entra por el pin numero 5 del lm3915 donde podemos visualizar la forma de onda atraves de la matriz de leds de 10x10.

A continuacion les dejo el diagrama.



Cualquier duda o comentario es bien recibido.

jueves, 23 de enero de 2014

semaforo con dos led utilizando el 555

0 comentarios
Que tal seguidores del blog en este post les dejamos un video y un diagrama para armar un semaforo simple con dos leds uno de color verde y el otro rojo que se encienden alternadamente para variar la frecuencia con la que encienda y se apaguen en este caso solo es cuestion de cambiar el valor del capacitor.

A continuacion el video.



Diagrama



Lista de componentes.

1 fuente de 5 volts
1 protoboard
1 circuito integrado 555
4  resistencias-- 2 de 220 ohms -- 1 de 22kilo ohms --- 1 de 68 kilo ohms
1 capacitor de 100 nanofaradios ceramico
1 capacitor electrolitico de 10 micro faradios
cable para protoboard.

viernes, 9 de agosto de 2013

Transmisor fm con bc547

11 comentarios
Que tal queridos visitantes del blog hace mucho tiempo siempre tuve la inquietud de como se trasmitia la radio y mucho despues fui descubriendo como se hace (algo muy complejo en forma teorica) despues me entraron las ganas de construir mi propio transmisor fm, pero muchos diagramas encontrados en la red parecian muy complejos de armar, despues de buscar mucho encontre un diseño que me parecio muy interesante ya que solo ocupa un transistor bc547 y se veia muy sencillo de armar. A continuacion muestro el diagrama:

 


 Al principio pense que  hiba a funcionar y me decidi a armarlo y probar suerte, despues de armarlo me di cuenta que no funcionaba, despues de horas y correcciones lo logre hacer funcionar despues de jugar un buen rato jejeje quedo como otra de mis pequeñas victorias y el diagrama quedo guardado en la memoria de mi computadora, pero despues pense que como yo hay mucha gente interesada en lo mismo asi que he decidido publicarlo para que lo prueben y pasen unas buenas horas entretenidos jugando y aprendiendo mas. Acontinuacion muestro las correcciones correspondientes:



Como se aprecia la resistencia de 47k no es necesaria ya que se polariza el transistor en clase A y sin esa resistencia y el capacitor se encuentra polarizado en clase C. Aunque cabe aclarar que con el capacitor y la resistencia en C.A si polariza al transistor en clase C pero el inconveniente reside en que es a una frecuencia determinada y si la frecuencia no es la adecuada el transistor siempre estara polarizado en clase A por lo que el circuito no funcionara, por eso se quita esa resistencia y capacitor para evitar esa complicacion tambien hay que observar en la imagen que cambie el transistor bc547 por el 2n3904 ya que con este transistor se tiene mejor desempeño. El segundo detalle esta en la bobina y es con la que se tendra mayor dificultad ya que si no esta bien hecha el circuito transmitira a otras frecuencias por lo que tienen que tener cuidado de hacerlo como se indica, para el rango comercial de fm 88-108 Mhz se podra construir la bobina de 6 a 8 vueltas, entonces hay que jugar con el numero de vueltas, la bobina se podra construir tanto de alambre magneto del numero 24 o con alambre normal plastificado. Un detalle a cuidar es la antena ya que si la hacen demasiado grande, la tocan con las manos o esta doblada cambia la inductancia por lo que la frecuencia del transmisor cambiara haciendo inestable por lo que cuando se hagan las pruebas hay que evitar esos detalles en la antena.


Bueno a continuacion se muestra como debe quedar en la protoboard.








Espero les sirva y mucha suerte al probarlo. Cualquier duda que tengan al respecto en la seccion de comentarios escribanla y con gusto responderemos a sus dudas.


Electronica facilita