martes, 29 de noviembre de 2011

Proyecto Final : Contador Electronico.

                                                           Introducción
La idea de este proyecto es optimizar un contador electrónico del laboratorio de física. A la vez, se busca demostrar las ventajas que se presentan al trabajar con un microcontrolador, que con los circuitos integrados tradicionales.
El laboratorio de física utiliza este dispositivo, junto con un mecanismo de sujecion aparte, para determinar tiempos tomados desde dos puntos distintos. De esta forma, calculan velocidad y masa del objeto medido.

                                                           Descripción
En la parte frontal, el dispositivo contiene un boton de encendido, un boton de "Start" el cual abre o cierra el circuito del mecanismo previamente utilizado mediante un rele, un boton de Reset, el cual reinicia el contador para poder iniciar un nuevo conteo, y 4 displays, para demostrar el resultado obtenido.


En la parte trasera se hallan 2 fichas banana hembra (las cuales se conectan 2 bobinas externas que se encuentran en el mecanismo) 2 fichas DB 9 hembras, las cuales son usadas para conectar los sensores, un cable para conectar a una fuente alterna, fusible de seguridad y una ficha banana NC sin uso.

Aqui unas imagenes del contador por dentro:






                                                              Objetivos

Acudimos al laboratorio de física para informarnos de las necesidades que este tenía para la optimización del contador, ya que esta área va a ser el futuro operador del mismo.
Segun los datos adquiridos, el laboratorio requiere:
  • 12 volts a la salida de ambas fichas banana hembra.
  • El dispositivo debe contar en escala de 1ms y en 10ms.
En forma adicional, decidimos rehacer los sensores. La idea es conservar la distancia, altura y posición del diseño madre, para no romper la costumbre de trabajo para el laboratorio.

                                                             Desarrollo
El PIC propuesto para este proyecto, fue uno grande: El PIC16F887. Con este PIC no solo aprendemos a manejar muchos mas pines de I/O sino tambien otras caracteristicas como Interrupciones, Timer's, Entradas analógicas, entre otras.
Para dar una visualizacion mas agradable del contador, decidimos usar un LCD WH-1602, en vez de usar displays.
Utilizaremos el programa CCS compiler, el cual se requiere de un conocimiento previo sobre programacion en C.
El programa consiste en usar el tiempo del TIMER0 para que cada cierto tiempo (dependiendo la escala) se interrumpa el programa y sume en "1" a una variable. En esta variable se va guardando los dos digitos de valor mas bajo del tiempo transcurrido. Cada vez que dicha variable llegue a 99, se sumara un "1" a otra variable, la cual tendra en ella el valor de los dos digitos mas altos del tiempo transcurrido.
Esto es accionado cuando se pasa por el sensor A. Una vez que el tiempo empezo a correr, no va a parar y tampoco va a figurar en la pantalla LCD, hasta que se accione el otro sensor B. Lo que hará este sensor B sera detener las interrupciones por Overflow (desbordamiento) del TIMER0 y que en la pantalla figure el tiempo Transcurrido y a su vez la escala usada.Para cambiar de escala, el programa esta preparado para que si detecta que en el boton de RESET se presione un tiempo de mas, cambie la escala automáticamente.
Tambien, en dicha pantalla esta señalado el estado del RELE (On/Off) para conocer si esta encendido o no.
                                                               
                                                     Diagrama en bloques


La primera etapa se centra en transformar la señal de entrada (220Volt de alterna) a continua, y en derivar el voltage a dos salidas: una de 12 Volts y otra con 5 Volts.
Los 12 V seran utilizados como salida, para alimentar una bobina externa que contiene el mecanismo de sujecion. (La salida seran las fichas Bananas ya mencionadas).
Los 5 V se utilizan para alimentar la placa controladora, la cual contiene nuestro PIC, la salida para el LCD, resistencias de Pulldown y la derivacion por medio de los bornes hacia las diferentes salidas (Como cada sensor, los botones de RESET y START y la alimenacion de 12V)
Mediante la placa controladora, se controla el Rele para que este abra o cierre el circuito por donde figuran los 12 V.

                                                                        PCB'S
Estos son los diseños finales de la placa controladora, los sensores, y la placa de alimentación.

Placa Controladora

 Placa de los Sensores

 Placa de Alimentacion



Fotos del actual dispositivo



El dispositivo encendido


 En el Laboratorio de Fisica realizando pruebas junto con el mecanismo de sujecion.

 


Video del dispositivo en funcionamiento





martes, 11 de octubre de 2011

Cable Db9

Los  conectores DB-9  se utilizan generalmente para conectar computadoras  con distintos periféricos o con otras computadoras.
Para hacer un cable Db9 ,en un extremo del cable deberá ir una ficha macho Db9 y en el otro le dejaremos 3 cables pelados.
Para colocar el db9 macho en uno de los extremos del cable, se deberá respetar un "Pinout”, el cual le mostraremos en la siguiente imagen:

miércoles, 7 de septiembre de 2011

Problemas de Programación 2

Bomba de Agua
Introducción al problema:
Se quiere usar un microcontrolador para manejar el uso de 2 bombas de agua, para el llenado de una tanque. El sistema que se usará para controlar el nivel del agua dentro del tanque, van a hacer 3 receptores de nivel (Vacio, Lleno, Rebose), colocados a distintos niveles dentro del tanque. Cada estado del tanque (Vacio, Llenandoce, Lleno y Rebose) va a estar indicado por un LED distinto. En caso de error, va a haber una alarma. Esta alarma se activa solo si se activa uno de los sensores de nivel y que el anterior no se haya activado.
Lo primero que debemos hacer, es saber que patas van a usarse de entrada de datos y de salida de datos.

Microcontrolador utilizado: PIC16F84
Patas de entrada de datos: Los datos que se ingresaran al uC van a hacer los 3 receptores de nivel.
Total: 3. Usaremos el Puerto A para la entrada de datos.
Patas de salida de datos: 4 Led's, 1 Alarma, y 2 Bombas de Agua.
Total: 7. Usaremos el Puerto B para la salida de Datos

Con esto, lo siguiente será armar una tabla, para que sabiendo los datos que entren por el Puerto A, tendremos un valor de salida en el Puerto B.


Programación en Assembler del uC para las bombas de Agua.

Pendiente

Programación en C del uC para las bombas de Agua.

Pendiente

martes, 30 de agosto de 2011

Problemas de Programación 1

Programación en C:
La dividiremos en 2 partes.
La primera parte es para la configuración de los Fuses: el Watch Dog Timer, el Power Up Timer, el Cristal, la Frecuencia y el Delay.

Luego tenemos la segunda parte, que es el programa en sí, para cada uno de los casos a resolver.

Elemental_01


Elemental_02


Elemental_03


Elemental_04


Elemental_05


Elemental_06


Elemental_07


Elemental_08


Elemental_09


Elemental_10



Programación en Assembler:
La dividiremos en 2 partes.
La primera parte es para la configuración del microcontrolador,el Watch Dog Timer, el Power Up Timer, el Cristal, la Frecuencia.


 Luego tenemos la segunda parte, que es el programa en sí, para cada uno de los casos a resolver.

Elemental_01


Elemental_02


Elemental_03


Elemental_04


Elemental_05


Elemental_06


Elemental_07


Elemental_08



Elemental_09


Elemental_10


Si uno compara ambos programas correspondiente al mismo problema "Elemental" (en "C" y en Assembler"), podrá darse cuenta que se simplifica mucho la programación en "C" tanto en el mismo programa como en la configuración para el Compilador. Lo único que no podría "Configurar" es el espacio que ocuparía el programa. En Assembler nos queda bien claro el espacio que ocuparía nuestro programa; no es el caso de "C", ya que el compilador esta para armar el programa de una cierta forma propia del mismo compilador. El espacio ocupado en la memoria de nuestro PIC es muy dependiente del compilador que usemos y de su configuración a la hora de armar el programa y compilarlo.

martes, 23 de agosto de 2011

Primer Proyecto

Proyecto "Dado Electrónico"

Nuestro primer proyecto, propuesto en clase, ha sido el diseño y la planificación de un circuito, dentro de todo, sencillo: un Dado Electrónico. Tuvimos en cuenta nuestras limitaciones, tales como tiempo, conocimientos, y la simplificación propia del proyecto. Además nos dieron algunas limitantes de la forma y de la cantidad de led’s.

Una vez planificada la cantidad de elementos que poseerá nuestro Dado (Led’s y botones), nos ocuparemos del diseño esquemático del mismo. Para esto, utilizaremos el programa Protel 99 SE, que nos facilitará nuestro comienzo en el diseño del esquemático y del PCB o de la placa misma. Para poder empezar a diseñar el esquema básico de nuestro Dado, necesitamos de un Microcontrolador en cual basarnos. Usaremos el Pic12F683.

Diseño en el Protel
Archivo Esquemático

Comenzamos un nuevo proyecto en el programa Protel. Para esto, una vez iniciado el programa, vamos al menú “File” y le damos clic a “New Design”.
En la casilla “Database File Name” elegiremos el nombre que queremos colocarle a nuestro proyecto nuevo: “DadoElectronico.ddb”.
Y con el botón “Browse” ubicaremos nuestro proyecto donde más lo deseemos para ser guardado.

Una vez elegido el nombre y aseguro el sitio de guardado del proyecto, nos aparecerán 3 carpetas: “Design Team”, “Recycle Bin” y “Documents”.
Abriendo la carpeta “Documents”, veremos que se encuentra vacia. Para agregar un archivo, hacemos clic derecho en el fondo y luego en el menú “New…”. Como lo primero que queremos hacer va a ser el esquemático, debemos seleccionar “Schematic Document”, al cual también se le puede asignar un nombre.



Se nos abrirá una hoja de tamaño "B". Para poder empezar a diseñar el esquema, deberemos cargar una “Librería”, el cual poseerá todos los componentes básicos que nosotros lleguemos a usar. Cada librería posee sus componentes, según el propietario de la librería necesite. Nosotros cargaremos una librería con elementos básicos; posee muchos otros componentes, pero para este proyecto no serán usados ni nombrados.
Para cargar estas librerias, vamos al menú "Design" y luego en "Add/Remove Library...".
Como cada proyecto tiene su librería, si por algún motivo se necesita abrir el proyecto en otro lugar, recordar que se debe poseer la librería y se debe cargarla.
Una vez cargada la librería, podemos empezar con el diseño del esquemático. Todos los componentes que uno necesite, se ubicaran en esta librería, y es necesario saber la ubicación correcta para poder utilizar el componente deseado.
Colocamos los componentes básicos en una distribución cómoda dentro de la hoja, tales como los led’s, los botones y el Microcontrolador que nosotros hemos elegido (mencionado anteriormente, el PIC12F683). Y luego ubicaremos antes de cada Led, una resistencia para controlar el paso de la corriente, y evitar daños a los propios Led’s o al Pic; además de un par de Capacitores de descarga a masa.
Ubicado todo de una forma cómoda, es tiempo de unir todos los componentes con las pistas (Llamadas Wires o Tracks). Para poder acceder a estos Tracks, debemos presionar la tecla “P” y luego la tecla “W”, y ya podemos empezar a conectar todos nuestros componentes dentro de nuestro archivo esquemático.
Si llega a ser necesario girar los componentes por un tema de orden o comodidad dentro de la hoja, solo es necesario mantener apretado el componente que se desea girar y presionar la Barra Espaciadora.
IMPORTANTE: Comprobar que las conexiones con los Tracks y los componentes se haya realizado como uno desea y que la conexión sea correcta ¿Por qué? Porque más adelante, el programa se va a valer de estas conexiones que nosotros hemos hecho, y una mala conexión de estos quiere decir un mal desarrollo de nuestro trabajo, imposibilitando el diseño del siguiente archivo de nuestro proyecto: El PCB.
Así es como queda nuestro archivo esquemático:

Aclaración: El uso de las pines del Micro no fue al azar, sino con un previo conocimiento del PIC, por lo tanto es en lo único que se debería evitar variar de nuestro esquema creado. De esta forma evitamos problemas indeseados.
Como también podemos observar, tenemos grupos de led's de a 2 y uno de 1 led. Esto se debe a que en nuestro proyecto del Dado, usaremos pares de led's para señalizar el numero indicado. También le hemos dado un nombre específico a cada Led, para respetar el orden impuesto. Por ejemplo: para indicar que el dado esta señalizando el numero "1", se encenderá solo un led: el led A que se encontrara en el centro del armado de nuestro Dado. Para el numero "5", se encenderán los led A, el grupo de led's BE y el grupo de led's DG. Cuando empecemos con el archivo PCB, nos daremos cuenta enseguida de porque esta distribución de los Led's.

Una ayuda para observar el correcto conexionado de los Tracks a los componentes, es mediante una opción: ERC (Electrical Rules Check). Se accede a ella desde el menú “Tools” y luego en el botón “ERC…”



Esta opción, le indicara si hay algún error y le indicara donde se produjo tal error. Pero hay que tener en cuenta que puede que haya errores que el programa ignore, debido a que la conexión este bien, pero no es lo que nosotros deseemos tener conectado. Por eso es indispensable revisar toda la conexión por uno mismo para comprobar que lo que nosotros queremos se cumpla, y valernos del ERC para ver si las conexiones están hechas correctamente.
A continuación, le estableceremos un numero a cada componente, según su tipo (resistencias, capacitores, led’s, etc.). Para no tener que hacer esto uno por uno con cada componente, usaremos la opción “Annotate”. Esta opción le asigna a cada componente un número, sin repetir de forma prolija y rápida.
Accedemos a esta opción desde el menú “Tools” y luego en el botón “Annotate…”



Lo siguiente será crear una Netlist. Esta función sirve para indicarle al siguiente archivo que usaremos (el PCB), las conexiones que hemos hecho, los componentes que hemos usados y el tipo de componente uno por uno (Indicando su número, su valor y sus dimensiones reales)
Accedemos a ella desde el menú “Design” y luego en el botón “Create Netlist…”




Archivo PCB
Hemos completado la parte de nuestro proyecto, el diseño del esquemático. Este archivo nos ayudará a la creación del diseño de nuestra placa (El PCB).
Para crear un archivo PCB, debemos volver a la carpeta “Documents”, y de la misma forma en que habíamos creado nuestro archivo esquematico, creamos nuestro archivo PCB. Hacemos clic derecho en el fondo y luego en el menú “New…”. Ahora seleccionamos “PCB Document” y ya tenemos nuestro archivo creado.
Volvemos a cargar la libreria. Tanto para el archivo Esquematico comopara el Archivo PCB, hay que cargar la misma libreria.
Para tener en cuenta la organizacion aproximada que va a tener nuestra placa, debemos crear un recuadro donde colocar y donde acomodar los componentes. Este recuadro lo creamos como si simplemente crearamos una pista. Abajo observaremos distintos niveles de trazado: para nuestro recuadro utilizaremos "Keep Out Layer".
Acomodamos de una forma aproximada los componentes dentro para poder guiarnos.




Una vez acomodados los componentes de manera parcial, se empezara a realizar el Trackeado de la PCB. Esto no significa que los componentes previamente acomodados de manera parcial, quedaran en esa posición, al contrario pueden y en algunos casos deben moverse para  poder realizar el Trackeado, para ocupar el menor espacio de la placa posible, para que los Track realicen el menor recorrido, y que el diseño de la placa se vea prolija y "linda", en cierta forma.
Algunas RULES (Reglas) que son necesarias antes de comenzar el proceso de Trackeado son:
-Los diferentes anchos de los Track con los que se trabajaran.
-El espacio entre distintas Track y Visa.
-Una configuración del Poligon Plane (Después se verá de cual se trata)

Deberemos configurar una "NET" especial que denominaremos con el nombre POWER, para distinguir la Alimentación de las demás conexiones. Para ello iremos al menú "Desing", "Netlist Manager". Nos aparecerá una ventana con varios cuadros, en el primer cuadro llamado Netlist Classes veremos que figuran 3 botones en la base del mismo. Apretando en el botón “Add…” se nos abrirá otra ventana donde elegiremos el nombre de dicha NET (Como habíamos dicho será POWER) y las conexiones que queremos que esta incluya: Las de alimentación, GND y VCC (En este caso. Pueden poseer otro nombre o incluso tener otra conexión mas como en el caso de tener VEE o VSS). Para finalizar, elegidas las conexiones, daremos Click en el botón “OK” y ya tenemos nuestra NET especial creada.


Para la configuración de los anchos de las Pistas, se procederá al menú "Design", "Rules..." y dentro del cuadro mas chico, elegimos el ultimo de la lista: “Width Constraint”. Primero configuraremos el que ya está por definido. Le hacemos doble Click y nos abrirá una ventana donde podemos darle varias configuraciones para los anchos del Track. De forma sencilla, lo que haremos será simplemente cambiar los valores en los espacios de los cuadros de la derecha por el valor de 25 mils (25 milésimas de pulgada) y con esto daremos finalizado este primer ancho de los Track
En la misma ventana en donde configuramos el anterior ancho, presionaremos en el botón “Add…”. En dicha ventana nueva, iremos a la flechita del cuadro del lado izquierdo, y elegiremos “Net Class”. Abajo aparecerá otro cuadro con una flechita también. La seleccionamos y elegimos nuestra NET creada, “POWER”. Y Configuraremos el ancho en todos los cuadros del lado derecho en 40 mils.

Configurado el ancho, procederemos con el espacio entre Track y Vías de diferente conexionado. Para esto, en la misma ventana de Rules, vamos al primero de la lista: “Clearance Constraint”. Para este tipo de placa con Alimentación relativamente baja, no es necesaria tanta distancia entre los Track y las Vías, a diferencia de otros que puedan necesitar más distancia debida a cuestiones tanto eléctricas y magnéticas como mecánicas de las Pistas.
Sí lo que haremos será crear una nueva, desde el botón “Add…”. En el primer recuadro del lado izquierdo, veremos un cuadro con una flechita. Elegiremos la opción “Object Kind”, y nos aparecerán muchos cuadros donde podremos tildar el que deseemos. En este caso tildaremos el cuadro que dice Poligons. Por último configuraremos la distancia en el cuadro del lado derecho, llenándolo con el valor de 40 mils.


Con esto damos por finalizado la configuración de las Rules para las Pistas. Y si ya se tienen los componentes en el lugar deseado, con el menor espacio ocupado de placa, teniendo en cuenta también la estética de dicha placa, se procederá a realizar el Trackeado de esta.


Este es el diseño en PCB de la placa del Dado Electrónico completo, con indicadores de ancho (Con otro nivel distinto a el de los Track, "Keep Out Layer" para no mezclar) y los nombres del proyecto y de los diseñadores de esta placa especifica, junto con la fecha (Estas si en el mismo nivel que los Track, "Bottom Layer" ya que queremos que salga impresa junto al resto de la placa).
Lo ultimo, pero no menos importante para la estética y la compresión/lectura de la placa, es acomodar las "Etiquetas" que posee cada componente, ocultando las innecesarias y acomodando las importantes (Ajustando incluso el tamaño si es necesario, siendo este no menor a 40 mils ya que de lo contrario seria muy ilegible).

jueves, 9 de junio de 2011

Trabajo Practico N°4

Amplificadores Operacionales

Realizamos en una Protoboard el siguiente circuito:


Desconectamos el Jumper J1 para medir en el punto medio del Preset (Punto Va) los valores máximos y mínimos registrados en el divisor resistivo.

A continuación conectamos de nuevo el jumper J1, para poder realizar varias mediciones comparando la tensión de entrada con la tensión de salida. De esta forma logramos obtener la ganancia del circuito.


Se puede observar en el cuadro,  que las mediociones del centro se aproximan mucho a las 15 veces de ganancia, mientras que en los valores mas alejados del centro del cuadro decae esta ganancia de 15 veces.


El grafico de la curva de transferencia nos muestra la seccion de ganancia "Lineal" y los limites del circuito, en donde ya la ganancia decae significativamente.





martes, 17 de mayo de 2011

PIC16F84. Caracteristicas basicas.

El PIC16F84 en un micro de la compañia Microchip, muy bueno en el año que fue lanzado y en los años posteriores y muy usado, por ser un Micro barato, accesible y de facil uso, con multiples funciones y operaciones posibles de realizar.
Configuracion de pines.
Posee 18 pines:
Pin 1,2,3,17 y 18 = RA 0-4 (Port A - 5 bits)
Pin 3 = RA 4 / T 0 CKI (Timer 0, ClockInput); si es salida (open colector)
Pin 4 = MCLR
Pin 5 = Vss
Pin 6,7,8,9,10,11,12 y 13 = RB 0-7 (Port B - 8 bits)
Pin 6 = RB 0 / INT (Interrupcion interna)

Conexion del Pic.
1°: Alimentacion (Vdd:+5V y Vss)
2°: MCLR
3°: Clock

Propiedades oscilatorias y Clock del Pic.
Siempre se prefiere usar el Micro a la velocidad maxima de oscilacion del clock a la cual puede operar.
Porque?
Porque asi aprovechamos al maximo su velocidad de procesamiento. Pero debemos tener en cuenta de no superar su limite, debido a que puede empezar a funcionar mal o no funcionar.
Tambien hay que tener en cuenta, que de esta forma, su consumo sera mucho mayor. Sin mencionar que la temperatura tambien va a aumentar. Son cosas que quiza a baja frecuencia no importen tanto, pero con una frecuencia alta habria que tenerlos en cuenta para el correcto funcionamiento del Pic.

Sabiendo eso, podemos observar que hay 2 tipos de Pic16F84:
El Pic16F84A-4  --> la "A" es el modelo siguiente al Pic 16F84; y el "4" es la frecuencia de oscilacion del Clock, en este caso: 4 MHz Maximo
Y el Pic16F84A-20 --> Aca la frecuencia va a ser de 20 MHz Maximo

Algunas propiedades de los Ports.
Podemos mencionar 2 configuraciones para estos pines: SINK y SOURCE.
Dependiendo de la configuracion en la que se encuentra el uso de los pines, sera uno o el otro.
SINK: En esta configuracion, los +5V van hacia el pin, con una resistencia que para controlar la corriente entrante. Se dice que el pin esta tomando corriente directo de los +5V de alimentacion.
Segun que puerto sea, la corriente entrante sera mayor o menor. Tambien existe un limite de la corriente total que entre en todos los pines del mismo Port (A o B).
Port A.
Corriente entrante maxima por pin = 25 mA
Corriente entrante maxima del Port = 80 mA
Port B.
Corriente entrante maxima por pin = 25 mA
Corriente entrante maxima del Port = 150 mA

SOURCE: En esta configuracion, la corriente saliente (En este caso) va directo a Vss, con una resistencia para controlar la corriente de salida. Se dice que el pin esta tomando corriente del Pic (Teniendo en cuenta que esta conectada la alimentacion)
Al igual que la configuracion SINK, posee corrientes maximas por pin y por puerto.
Port A.
Corriente entrante maxima por pin = 20 mA
Corriente entrante maxima del Port = 50 mA
Port B.
Corriente entrante maxima por pin = 20 mA
Corriente entrante maxima del Port = 100 mA

Los limites de corrientes maximas por pin y por puerto que este Pic posee, se debe a la precaucion de un posible fundido del mismo, pudiendo quemar solo un pin o el micro entero.

Programacion del Micro.
Los pines que este Pic utiliza para la programacion del mismo son:
Pin 12 = RB 6 = Clock (Solo una direccion, entrante "<--" )
Pin 13 = RB 7 = Data (Dos direcciones, entrante y saliente "<-- -->")
Pin 4 = MCLR
Lo indispensable para hacer funcionar este Micro, es conectar lo siguiente: