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).