r44 - 20 Jun 2006 - 12:25:44 - PabloHoffmanYou are here: pablohoffman.com >  Oscusb Web  >  OscusbDocumentacion > DocCap08Fabricacion

Capítulo 8. Fabricación y puesta en marcha

Introducción

Este capítulo habla sobre temas relacionados con la implementación del hardware, desde las compras de componentes hasta la fabricación y puesta en funcionamiento de la placa.

Fabricación de la placa

Alternativas de fabricación

Llegada la etapa de la construcción de la placa en donde montar los componentes, nos planteamos tres posibilidades para llevar a cabo dicha tarea:

  • Protoboard
  • Circuito impreso (PCB)
  • Placa universal

Protoboard

El Protoboard, o tableta experimental, es una herramienta que nos permite interconectar elementos electrónicos, ya sean resistencias, condensadores, semiconductores, etc, sin la necesidad de soldar los componentes.

El protoboard esta lleno de orificios metalizados -con contactos de presión- en los cuales se insertan los componentes del circuito a ensamblar.

Se conocen en español como "placas de prototipos" y son esencialmente unas placas agujereadas con conexiones internas dispuestas en hileras, de modo que forman una matriz de taladros a los que podemos directamente "pinchar" componentes y formar el circuito deseado. Como el nombre indica, se trata de montar prototipos, de forma eventual, nunca permanente, por lo que probamos y volvemos a desmontar los componentes, quedando la protoboard lista para el próximo experimento.

Cada agujero de inserción está a una distancia normalizada de los demás, lo que quiere decir que un circuito integrado encajará perfectamente.

Tienen la ventaja de ser de rápida ejecución, sin necesidad de soldador ni herramientas, pero los circuitos que montemos deberán ser más bien sencillos, pues de otro modo se complica en exceso y las conexiones pueden dar lugar a fallos, porque la fiabilidad de las mismas decrece rápidamente según aumenta el número de éstas.

Protoboard
Fig 8.1 Protoboard

Esta opción si bien puede ser simple y rápida de llevar a cabo, consideramos que es poco prolija y puede traer complicaciones de falso contacto, interferencia, entre otros problemas.

Circuito impreso (PCB)

El circuito impreso esta constituido por una placa aislante, en una o en sus dos caras, de conductores planos metalizados cuyo objeto es asegurar las conexiones eléctricas entre el conjunto de los componentes electrónicos dispuestos en su superficie.

El término normalizado que designa a este componente es placa impresa, pero en uso común se emplea circuito impreso. Igualmente, en inglés el término Printed Circuit Board es de uso corriente, mientras que printed circuit se emplea prácticamente solo para referirse a la técnica de la fabricación de una placa impresa.

Existen distintos tipos de circuitos impresos, de simple capa (llamado de una sola cara), de doble capa, multicapa, flexible, rígido, flexorígido, de agujeros metalizados, etc.

El circuito impreso puede ser la mejor opción si ya se conoce y se tiene probado el circuito, donde no se permiten cambios fácilmente, pero todas las conexiones son seguras, y mas aptas para trabajar a alta velocidad.

Sin embargo esta opción la descartamos ya que si bien tiene muchas ventajas, no nos permite hacer modificaciones fácilmente, y creemos que para una etapa de prueba no es la mejor solución.

Además, esta solución implica un costo mayor. Más aún, en los principios del diseño del PCB (que luego hemos postergado), hemos observado una alta complejidad en la distribución de las pistas, necesitándose una placa doble faz, con puentes y jumpers, pero aún así, no estamos seguros de que quepa todo el circuito en una placa doble faz.

Circuito Impreso
Fig 8.2 Circuito Impreso

PCB
Fig 8.3 PCB

Tal como se puede observar en la imagen, un circuito impreso no es mas que una placa plástica (que puede ser de fenólico o pertinax), sobre la cual se dibujan "pistas" e "islas" de cobre las cuales formaran el trazado de dicho circuito, partiendo de un dibujo en papel, ya sea creado por una persona o por un ordenador.

Para empezar se debe decidir el material que se va a utilizar. Si se trata de un circuito donde hayan señales de radio o de muy alta frecuencia tendremos que usar una placa virgen de pertinax, que es un material poco alterable por la humedad. De lo contrario, para la mayoría de las aplicaciones, una placa de fenólico es suficiente.

Cada trazo o línea se denomina pista, la cual puede ser vista como un cable que une dos o mas puntos del circuito. Cada círculo o cuadrado con un orificio central donde el terminal de un componente será insertado y soldado se denomina isla.

Cuando se compra una placa de circuito impreso virgen ésta se encuentra recubierta completamente con una lámina de cobre, por lo que, para formar las pistas e islas del circuito habrá que eliminar las partes de cobre sobrantes.

Además de pistas e islas sobre un circuito impreso se pueden escribir leyendas o hacer dibujos. Esto es útil, por ejemplo, para señalar cual terminal es el positivo, hacia dónde se inserta un determinado componente o incluso como marca de referencia del fabricante.

Para que las partes de cobre sobrantes sean eliminadas de la superficie de la placa se utiliza un ácido, el Percloruro de Hierro o Percloruro Férrico. Este ácido produce una rápida oxidación sobre metal haciéndolo desaparecer pero no produce efecto alguno sobre plástico. Utilizando un marcador de tinta permanente o plantillas Logotyp podemos dibujar sobre la cara de cobre virgen el circuito tal como queremos que quede y luego de pasarlo por el ácido obtendremos una placa de circuito impreso con las pistas que se pretendían.

Placa universal

El circuito impreso universal para prototipos, también conocido como _UPCB (Universal Printed Circuit Board)_, es un circuito impreso de uso general diseñado a partir de la estructura básica del protoboard, esta placa facilita el montaje de aplicaciones electrónicas sin requerir la etapa de diseño y fabricación de un circuito impreso especifico.

El circuito impreso universal para prototipos esta fabricado con importantes recursos tecnológicos que garantizan aplicaciones de mejor desempeño y presentación, entre las principales características técnicas se encuentran:

  • Capa de blindaje en cobre para evitar interferencias.
  • Pads recubiertos de estaño-plomo, evita oxidación y garantiza una soldadura de máxima calidad.
  • Película de antisoder verde que recubre el cobre en las áreas donde no se debe soldar protege de la oxidación y de cortocircuitos.
  • Hueco de 3mm para tornillo permite un eficaz anclaje al chasis o caja contenedora.
  • Circuito impreso de fibra de vidrio provee máxima resistencia al impacto y a torsiones.

Placa Universal
Fig 8.4 Placa Universal en detalle

Placa Universal con componentes
Fig 8.5 Placa Universal

La placa universal tiene las ventajas de un protoboard, ya que es versátil y permite cambios fácilmente, y las de un circuito impreso, con la facilidad de la colocación de los componentes y pistas de cobre para soldar. Esta placa es muy permisiva en cuanto a las conexiones, ya que al tratarse de cables, éstos pueden hacer cruces entre sí que no se podrían realizar en un circuito impreso.

También nos permitió realizar cambios en cuanto a conexiones cuando encontrábamos un funcionamiento erróneo, o por ejemplo cuando habíamos elegido una salida del microcontrolador que no permitía el tipo uso que se precisaba.

Proceso de fabricación

Habiendo ya decidido que la opción sería construir sobre una placa universal, a continuación detallamos nuestro proceso de construcción.

  • Materiales
  • Disposición de componentes
  • Realización, prueba y experiencia

Materiales

Básicamente los materiales que se precisan en esta etapa son:

  • UPCB (placa universal)
  • Zócalos
  • Cables y buses

Hemos utilizado las placas universales que se consiguen hoy en plaza, ya que son de buena calidad y es lo estándar para estos casos. Nos han dado muy buen resultado, con excepcion de alguna pista que se corta o se suelta por la presión de los cables al torcerlos, o al desoldar y volver a soldar en el mismo pad (isla).

Los zócalos los creímos necesarios ya que permiten soldar y dejar previsto el lugar de los mismos, sin que el mismo componente se encuentre en el lugar. Más aún, esto nos permite no tener que soldar el componente en si, sino que éste se coloca a presión en el zócalo. Además, el hecho de utilizar zócalos tiene como ventaja fundamental la facilidad de colocación y extracción del componente, como también su reemplazo.

Zócalo
Fig 8.6 Zócalo

Existe un tipo de zócalo diferente y especial que es el ZIF (Zero Insertion Force). Estos zócalos no requieren de fuerza para la inserción del componente, sino que se coloca dentro del zócalo y luego se presionan las patas del mismo moviendo una palanca que tiene en uno de los extremos.

Esto permite de forma simple y sin riesgos colocar o extraer el componente del zócalo. En nuestro caso, lo vimos sumamente útil para el microcontrolador, el cual es uno de los componentes más delicados y con frecuencia se saca y se vuelve a colocar para su programación.

Zócalo ZIF
Fig 8.7 Zócalo ZIF

Para realizar las conexiones entre los componentes hemos utilizado cables obtenidos del UTP Categoría 5e. Este tipo de cable esta muy probado en la industria y es muy flexible en cuanto a su torsión y a su facilidad de soldado.

Cable UTP Cat5e
Fig 8.8 Cable UTP Cat5e

Los buses los hemos cableado con cables del tipo flat, los cuales son específicos para este tipo de conexiones.

Cable Flat
Fig 8.9 Cable Flat

Disposición de componentes

La distribución de los componentes en la placa tuvo que ser pensada basándose en dos características:

  • velocidad a la que trabajan los componentes
  • facilidad de conexión entre sí

Esto quiere decir que los componentes que trabajan a alta velocidad, como ser la memoria y el conversor, deberían estar lo mas cerca posible.

Así mismo, los buses son de más fácil conexión cuando los componentes tienen una distribución de patas similar y se encuentran juntos.

Dado que la cantidad de componentes no nos permitía colocarlos todos en una misma placa, hemos tenido que separarlo en dos placas. Esto implica tener que decidir qué bloques o componentes colocar juntos en una misma placa y cuales no.

Como mencionamos antes, una de las pautas para esta decisión es la velocidad de trabajo de cada bloque.

Basándonos en esto, decidimos que toda la parte de control del sistema estaría en una placa y la parte de alta velocidad en la otra.

La distribución entonces fue la siguiente:

  • Placa de captura y alta velocidad:
    • Buffers de entrada
    • Conversor AD
    • Memorias
    • Lógica adicional
  • Placa de control:
    • PIC
    • Contador
    • Buffer bidireccional
    • Lógica adicional

En cuanto a la primer placa, ésta se dedica exclusivamente a la captura y almacenamiento de los datos, con la sola excepcion de los contadores. En ella también se encuentra una mínima lógica adicional, como ser algunas compuertas, qué deben de estar en la misma placa ya que de lo contrario éstas señales deberían ir a la otra placa y luego volver, aumentando el recorrido y las posibilidades de interferencias.

Placa de adquisición: conversores - memorias - entrada - compuertas
Fig 8.10 Placa de adquisición: conversores - memorias - entrada - compuertas

En cuanto a la ubicación de los contadores, por un tema de espacio tuvieron que ser colocados en la segunda placa.

Dado que el diseño esta localizado en que el microcontrolador solamente realice tareas de control, ninguna de las señales que éste controla son de tan alta velocidad como las que se manejan en la etapa de captura.

Placa de control: pic - buffers - contadores - compuertas
Fig 8.11 Placa de control: pic - buffers - contadores - compuertas

Realización, prueba y experiencia

Esta fue una de las etapas más tediosas y lentas del proceso, ya que hubo que soldar muchos cables y cada uno de ellos tuvo que ser hecho a medida.

Hubo que prestar mucha atención en que las soldaduras sean buenas, que no hayan corto-circuitos, como así también, tener precaución con el soldador de no quemar el recubrimiento aislante de los cables, ya que así también se podrían producir falsas conexiones.

Una vez planeada la ubicación de los componentes dentro de la placa, se colocan primero los zócalos de los integrados, y luego a partir de ellos se comienza con el soldado de los cables para interconectar como corresponde a cada uno de los componentes. Aquí hay que tener especial cuidado en no confundir los pines de los circuitos integrados, ya que eso puede provocar un mal funcionamiento, un corto circuito, o incluso la ruptura de algún componente.

Luego hay que interconectar las dos placas, ya sea con buses (cable flat para buses de datos) o con cables individuales, los que suelen ser de control, a excepción de la señal de reloj y las alimentaciones.

Una vez finalizada la construcción de las placas, hay que hacer una prueba exhaustiva de las conexiones. Este punto es necesario e imprescindible, ya que como mencionamos, una mala conexión puede provocar un mal funcionamiento, un corto circuito, o incluso la ruptura de un circuito integrado, siendo este último caso el peor.

El precio de cada componente y especialmente la disponibilidad de los mismos nos obligaba a estar seguros de su correcta ubicación y conexión antes de colocarlos y ponerlos en funcionamiento.

Como es normal, en la etapa de prueba hemos encontrado errores y cortos. Esto era de esperarse, ya que con tantos cables y circuitos integrados, resulta poco probable cometer un error. Vale aclarar que esto no hubiese pasado si hubiésemos optado por la opción de utilizar una placa impresa (PCB), ya que la misma tiene todas las conexiones hechas en pistas de cobre, aunque no nos hubiese permitido realizar los cambios que hemos hecho sobre la marcha.

La conclusión que podemos sacar de haber trabajado de la forma en que lo hemos hecho es que la elección del tipo de placa fue la correcta, ya que es mucho más seguro y confiable que trabajar en un protoboard, y a la vez no es tan restrictiva como una placa impresa.

También como critica constructiva podemos decir que se podría haber comenzado con la construcción antes de lo que lo hemos hecho. Una vez que se tienen definidos los componentes que se van a usar, ya se está en condiciones de comenzar a colocar los zócalos en las placas. Luego a medida que se van definiendo las conexiones, se van soldando los cables. Nosotros hemos comenzado con la construcción una vez que teníamos definidas todas las conexiones. Aún así, y como hemos comentado previamente, tuvimos que realizar cambios de conexiones sobre la marcha, y aquí es donde demuestra la ventaja la placa universal sobre el PCB.

Equipo prototipo completo
Fig 8.12 Placa completa del prototipo

La foto anterior muestra ambas placas y sus interconexiones. Vale recalcar que la desprolijidad en el cableado entre las placas (claramente notoria) será solucionado con la construcción del circuito impreso.

Carcaza

La compra de la carcaza fue una de las tareas realizadas al final del proceso de fabricación, ya que ésta solo aporta una mejora estética (y no funcional) al prototipo

En consecuencia, tuvimos que decidir rápidamente entras las alternativas disponibles en plaza. Optamos por una carcaza de plástico por su flexibilidad a la hora de realizar perforaciones para colocar los controles.

oscusb-case.jpg
Fig 8.13 Carcaza del osciloscopio

oscusb-bnc.jpg
Fig 8.14 Conectores BNC del osciloscopio

Compra de componentes

La compra de los componentes no es una etapa en si, sino que es una tarea previa a la fabricación.

Una vez que se decide por el uso del cierto componente, el acto que le sigue es el de averiguar dónde se puede comprar y a qué precio.

Aquí es donde uno se encuentra con las siguientes dificultades:

  • Disponibilidad
  • Precio

En nuestro diseño usamos muchos componentes que no se encuentran en plaza en el mercado uruguayo. Si bien unos cuantos los hemos conseguido en Uruguay, al haber disponibilidad de los mismos en otros países y a mejor precio, nos hemos planteado la posibilidad de comprarlos en el exterior por una cuestión de costos.

Una vez que habíamos decidido la utilización del PIC como controlador principal, compramos uno para poder comenzar con las pruebas.

En cuanto a los componentes que no se conseguían en Uruguay, consideramos Argentina y Estados Unidos como posibles proveedores de los mismos, dado que contamos con facilidades en estos dos países para comprar lo que precisemos y luego traerlo.

Aprovechando la ocasión de que teníamos que comprar ciertos componentes en Estados Unidos por la falta de disponibilidad en Uruguay y Argentina, hemos decidido también comprar ciertos componentes que se conseguían en Uruguay, pero en el exterior tenían un costo menor, como por ejemplo el PIC.

En el caso del PIC, el primero que compramos lo compramos en Uruguay, pero luego hemos comprado otros 2 mas en Estados Unidos, aprovechando que ya teníamos que hacer una compra de otros componentes.

Esto nos da cierta ventaja en cuanto a la facilidad para conseguir componentes que de otra forma serían casi imposibles o muy costosos. Sin embargo esto trae aparejado un problema, que es la demora.

En cuanto a las compras en Argentina, nos resultaba más fácil que con las de Estados Unidos, ya que contábamos con una persona que viajaba constantemente, con una frecuencia de una vez cada dos semanas en promedio, lo que nos permitía traer componentes con poco tiempo de demora.

De todas maneras, hubieron compras que eran necesarias hacerlas en Estados Unidos, y aquí es cuando se vio demorado el proyecto. No siempre era posible contar con una persona que viaje cuando el proyecto lo precisaba, sino que había que coordinar el proyecto con estos viajes, y además, no siempre esta persona podía traer estos componentes, con lo cual tuvimos demoras de hasta casi dos meses en la espera de éstos.

Sin embargo, la forma en la que hemos procedido la creemos correcta. Siempre se tiene la posibilidad de recurrir a un Courier de entrega rápida y directa, pero es claro que esto insume un costo mayor, el cual tratamos de evitar. Como lección podemos decir que hubiese sido mejor poder prever los componentes con mas anticipación, y así realizar las compras y traslados con tiempo y evitar que el proyecto se demore.

Depuración por hardware

La posibilidad de depurar por hardware es una herramienta fundamental en la etapa de implementación.

Esta herramienta nos permite verificar y ejecutar paso a paso el programa cargado en el microcontrolador. Nos permite también monitorear diferentes variables, contenidos de memoria, o estados de las patas del PIC.

La conexión del ICD2 se realiza a través de un cable de 6 hilos. Para facilitar la conexión, utilizamos un cable con conectores RJ12 en sus extremos, y zócalos en las placas.

RJ12.JPG
Fig 8.15 Pinout del conector RJ12 del ICD2

Señal Zócalo ICD2 Zócalo placa
Vpp 6 1
Vdd 5 2
GND 4 3
PGD 3 4
PGC 2 5
NC 1 6
Tabla 8.1 Pines del conector RJ12 del ICD2

Descripción de los pines:

  • GND - Voltaje de referencia.
  • Vdd - Tensión de alimentación positiva. Esta alimentación es la que energiza al microcontrolador.
  • Vpp - Tensión de programación. Debe conectarse al puerto MCLR del PIC. Este voltaje debe ser superior a Vdd para que el microcontrolador ingrese al modo de programación.
  • PGC - Señal de reloj de la transmisión de datos serie.
  • PGD - Línea de datos. Esta conexión es bidireccional, y permite la comunicación de dos vías entre el PIC y la interfaz de programación

Para poder entrar en el modo debug es necesario realizarlo desde el programa, el MPLAB. Allí, seleccionando las opciones correspondientes, se programa al PIC con una versión "modificada" del programa original. Esta modificación, hecha automáticamente por el software, contiene las rutinas necesarias para poder realizar el depurado on-line, ya que de tratarse de la operación normal del PIC, éste ejecutaría el programa de forma normal, sin interrupciones ni posibilidad de monitoreo. Una vez finalizado el proceso de depurado, se debe volver a programar el microcontrolador con la versión normal del programa.

Hemos incluido estas conexiones en nuestro equipo, permitiendo el depurado _en linea_ del mismo. Nos da la posibilidad de una conexión simultánea del ICD2 y el ordenador con la placa.

La ventaja fundamental es que podemos observar el comportamiento del sistema cuando este se encuentra conectado al PC y ejecutando las operaciones solicitadas. Nos ha facilitado la detección de errores tanto de programación como de hardware.

Corriendo paso a paso las instrucciones, pudimos verificar si el puerto de control del PIC efectivamente estaba realizando las operaciones solicitadas, y si los componentes conectados a él también lo hacían.

Puesta en funcionamiento

La puesta en funcionamiento del equipo fue progresiva. Consideramos fundamental colocar los componentes de a uno por vez e ir probando las conexiones y su funcionamiento. Hay que prever que puedan existir errores en la placa aún teniendo en cuenta las etapas de fabricación y prueba. Esta forma de proceder tiene como objetivo la preservación de los componentes, la mayor facilidad en la detección de errores, y la aislación de problemas.

Una vez que se tienen todas las conexiones hechas, y el circuito encargado de generar la señal de reloj esta listo, procedimos primero a colocar el microcontrolador. Luego de ver que éste se encontraba funcionando y teníamos comunicación con él, comenzamos a colocar el resto de los componentes.

Primero fueron las compuertas discretas. Esto ha sido así, debido a que para poder colocar el resto de los componentes, se precisan listas las señales de control. Luego colocamos el buffer bidireccional. A través de él, podíamos medir y comprobar si efectivamente el bus de entrada/salida se encontraba funcionando correctamente, como así también las señales de control involucradas.

Para evitar interferencias y especialmente para hacer que los cables que conectaban las dos placas no actuasen de antenas, decidimos colocar los amplificadores de entrada, pero no alimentarlos. Es decir, las señales analógicas de entrada que también se encontraban conectadas al microcontrolador se encontraban flotantes y sobre un recorrido largo de cable. Al colocar los amplificadores pero no alimentarlos, realmente no se estaban utilizando estos circuitos, pero si servían para reducir la interferencia posible. Las conexiones de tierra estaban hechas entre las dos placas desde el principio, y así también para todos los componentes de cada placa.

El siguiente paso fue colocar los contadores. Estos contadores son controlados por el PIC, y su señal de reloj puede provenir tanto desde el cristal como desde una señal de control del PIC, la cual tiene como objetivo tener una señal de reloj mas lenta y configurable.

Una vez que comprobamos el buen funcionamiento del contador, probamos la función de presetear el contador, es decir, darle un valor de contador desde el cual éste debe comenzar a contar. Aquí se probó por completo el funcionamiento del bus bidireccional, ya que a través de éste se realiza la operación de carga del contador. Aquí nos hemos encontrado con un problema, que es que la carga del preset del contador se realiza sincrónicamente, es decir, cuando recibe un pulso de reloj. Para el contador de los bits menos significativos esto no sería un problema ya que la señal de reloj es controlada. Pero para el segundo contador, el de los bits más significativos, esto era un problema ya que en realidad la señal de reloj que éste recibe proviene del contador que lo precede (contadores en cascada). Este problema y su solución están explicados en la siguiente sección: Problemas.

A continuación procedimos a colocar las memorias. Este paso fue crucial, ya que las memorias eran los primeros componentes que se colocaban en la placa de adquisición. Hasta este momento se había trabajado con una sola placa, y este era el momento de probar la segunda placa. Aquí había que comprobar la alimentación, si existían corto circuitos, caídas de tensión, interferencias, etc. Por suerte tuvimos un resultado muy positivo. Salvo algún problema de falso contacto (más bien producido por los zócalos, ver: Problemas con los zócalos), hemos tenido un excelente resultado. Así hemos logrado conectarnos satisfactoriamente con la segunda placa, la de alta velocidad, la de captura y adquisición. Cabe aclarar que para realizar este paso fue necesario conectar la alimentación de la placa en cuestión, ya que si bien la conexión de tierra estaba hecha, no así la de tensión.

Al conectar la alimentación de la placa de adquisición automáticamente el amplificador de entrada comenzó a funcionar. Esto no es problema ninguno, y sólo optamos por no dejar flotando la entrada del amplificador y conectarla a tierra. Como siguiente paso, conectamos los conversores. Este momento marca un punto especial en el proyecto, y la prueba del hardware. Aquí es donde se va a apreciar si todos los componentes logran trabajar en armonía y logran comunicarse con facilidad. Al igual que en algún otro caso anterior, hemos tenido problemas con las conexiones, pero como adicional, hemos verificado también el correcto funcionamiento de la memoria, ya que ahora podíamos comprobar con mayor confianza los datos que se guardaban y que se leían. Aquí detectamos un error en las señales de control de la memoria, ya que no se estaba realizando correctamente el procedimiento para su lectura (Ver la siguiente sección).

Finalmente una vez solucionados los problemas detectados, a través de la interfaz de consola que nos provee el osciloscopio, obtuvimos muestras que coincidían con lo esperado. Es decir, que cuando la entrada se colocaba a tierra, se obtenían valores todos cercanos a cero (posibles ruidos, etc), y cuando utilizamos una señal cuadrada de un generador, obteníamos valores coherentes, o sea, una serie de valores altos, luego otra serie de valores bajos, y así sucesivamente.

Consideramos muy satisfactorio el proceso de fabricación de la placa, en el cual obtuvimos pocos errores y fallas, y consumió poco tiempo llevarlo al funcionamiento deseado.

Para estas pruebas utilizamos un reloj de 8 megaciclos, el cuál es el mínimo posible para que funcionen todos los componentes, pero la velocidad esta lejos del objetivo final. Es natural suponer que a menor velocidad las cosas funcionen mejor, y en caso de que existan problemas, sean mas fácil detectarlos, o mismo al comprobar el funcionamiento de los componentes. La intención es que una vez que se logre hacer funcionar el equipo correctamente a esta velocidad, se irá incrementando la velocidad del reloj y así cada vez acercarnos más a la velocidad de trabajo propuesta como objetivo (40 Mhz).

Problemas de funcionamiento

NAND no oscila

En una de las primeras etapas del circuito, la etapa osciladora va directamente conectada hacia el microcontrolador, pero a su vez va conectada en paralelo a una NAND (funcionando como NOT). En algún momento durante la construcción y prueba de la placa, esta compuerta tenía como salida la señal de reloj, obviamente invertida. Luego, más avanzado el proceso de colocación de componentes y prueba, observamos que ya su salida no oscilaba, sino que se mantenía constante con valor cero. Buscando los posibles orígenes de este problema, vimos que su entrada estaba funcionando perfectamente, y que todos los circuitos así también lo hacían. Sin embargo, habría que seguir investigando, ya que el problema no radicaba en un componente defectuoso, sino como producto de cambios que podríamos haber hecho en la placa en la etapa de prueba y detección de errores.

Observamos como la amplitud de la señal de reloj podía ser mayor o menor, pero aún no encontrábamos el parámetro que hacía que esto cambie. Al medir las tensiones de la amplitud de dicha señal y comparándolas con las especificaciones de la compuerta, vimos que efectivamente se trataba de un tema de amplitudes. Ésta señal no tenía la amplitud suficiente para que la compuerta detecte un cambio de estado en su entrada.

Más específicamente, las mediciones daban valores de 1.5v a 4v para la amplitud de la señal de reloj como entrada de la compuerta. Luego, en la hoja de datos de ésta, se tiene como especificación que _V.high (min) = 2.0v y un V.low (max) = 0.8v_. Dado que la tensión del oscilador nunca era menor que 1.5v, queda claro que la compuerta entonces nunca detectaría un cambio de estado en su entrada.

Realizando modificaciones en los bits de configuración del PIC logramos hacer que estas amplitudes cambien, o mejor dicho, sean más cercanas a cero. Sin embargo no llegamos a lograr que bajen de 1v. Por otra parte, si desconectábamos la NAND como carga del circuito oscilador, éste tenia amplitudes entre 0.6v y 3.8v. Esto implica que las amplitudes tienen relación directa con la carga y las impedancias que dicho circuito tiene.

Hasta hemos probado quitarle una resistencia de 1M ohm que el oscilador tenía, la cual en ciertos documentos hemos visto, pero en otros no estaba incluida. Al quitarle esta resistencia, y sin tener la carga adicional de la compuerta, la amplitud tenia una variación entre 0.3v y 3.4v. De todos modos, al volver a conectar la compuerta, estas amplitudes volvían al mismo estado detectado al principio, sin lograr que la compuerta funcione.

Finalmente, detectado que se trataba de un problema de impedancias y no de configuración, decidimos probar de obtener la señal y cargar al oscilador en la otra pata que este tiene. Es decir, el circuito oscilador tiene dos bornes de conexión, entre los cuales se encuentra el cristal y componentes adicionales. Estas dos patas van conectadas al PIC en sus puertos OSC1 y OSC2. Durante toda esta etapa estuvimos obteniendo la señal de reloj del puerto OSC1, pero llegado este punto, optamos por probar conectar en el puerto OSC2.

Aquí se resuelve el problema. Evidentemente el puerto OSC1 no esta preparado para tener cargas en paralelo y el puerto OSC2 sí.

Las amplitudes obtenidas ahora son entre -0.2v a 4.8v. Esto es más que suficiente para que la NAND opere correctamente.

Además, ya casi no se observan diferencias cuando se conecta la NAND, es decir, que efectivamente se trataba de un tema de cargas, y de las características de cada puerto.

El siguiente problema que detectamos es que la salida de la NAND, la cual sería una señal cuadrada (se trata de un componente digital, por mas que su entrada sea analógica), pero ésta se encontraba considerablemente distorsionada. Dicha señal, si bien tenia la misma frecuencia y ostentaba ser lo esperado, era muy curvada y no parecía ser tanto una señal digital cuadrada.

No sabemos si es un tema de velocidad, si es que la gran amplitud de la señal de entrada genera este comportamiento, o si es que se debe utilizar una compuerta del tipo schmidt-trigger.

A continuación se puede observar el comportamiento al cual hacemos referencia. Esta imagen es una foto tomada del osciloscopio con el cuál hemos trabajado.

abajo el oscilador, arriba la salida de la NOT (NAND)
Fig 8.16 abajo el oscilador, arriba la salida de la NOT (NAND)

Para entender un poco mejor la razón por la que al conectarse a una de las dos terminales de oscilación el circuito no funcionaba pero con el otro terminal sí, hemos hecho una búsqueda un poco mas exhaustiva en la documentación del PIC. Allí encontramos el siguiente diagrama:

osc_input.JPG
Fig 8.17 Bloque de entrada del oscilador

Esto podría ser la explicación al problema, ya que el puerto OSC1 esta configurado como la entrada de un buffer, y por lo tanto con alta impedancia, mientras que el terminal OSC2 es una salida, pudiendo provocar incompatibilidades al intentar conectarlo en paralelo con otros componentes.

Este comportamiento, y en especial la forma de onda no tan perfecta (cuadrada) no nos ha generado problemas desde este punto en adelante, sin embargo luego hemos visto con el osciloscopio que esta señal habría mejorado, y creemos que esto es debido al avance que ha habido en la conexión de los componentes. Es decir, hasta que no hemos logrado hacer funcionar correctamente esta compuerta nos hemos visto imposibilitados de avanzar con la conexión y prueba del resto de los componentes. Al haber solucionado este tema, es que hemos continuado conectando el resto del circuito. Es así que avanzada un poco más la implementación del circuito hemos observado que el comportamiento mencionado había mejorado aún más.

De todos modos consideramos importante estudiar las cargas que puede tener esta compuerta (NAND), para poder corroborar si es que se trataba de un tema de sobrecarga. Esta compuerta estaba cargada con los siguientes componentes:

  • 2 entradas de NAND (igual compuerta, una en control de memoria y otra en adquisición)
  • 2 entradas de reloj de los conversores A/D

Las salidas de las NAND tienen las siguientes características: Fan Out: I(OH) = -1mA ; I(OL) = 20mA

Las entradas de las NAND: Fan Out: I(IH) = 20uA ; I(IL) = -0.6uA Características eléctricas en continua: I(IH) = 5uA ; I(IL) = -0.6mA

Y finalmente, las entradas de los conversores A/D: I(IH) = 5uA ; I(IL) = 5uA

Este estudio demuestra que las salidas de la compuerta NAND son ampliamente capaces de poder manejar los 4 componentes que tienen en su salida.

Otros problemas de oscilación

El oscilador también ha presentado otro problema. Cuando el circuito se encontraba conectado a la placa ICD2 (programador y depurador), oscilaba perfectamente. Sin embargo, al conectar el equipo al puerto USB del PC, encontramos un funcionamiento errático, donde en ciertas ocasiones oscilaba y en otras no. Hemos buscado las razones de este comportamiento, pero realmente nos ha costado. Hemos pensado en que podía ser un tema de interferencias, consumo de corriente del puerto USB, malas conexiones, etc.

Finalmente la razón de este comportamiento no radicaba en un problema de hardware, sino de los bits de configuración del PIC. Específicamente provenía de la configuración del oscilador en estos bits. Aquí se debe especificar con qué oscilador se trabaja, el tipo, la velocidad, etc. Al configurar correctamente estos bits, no ocurrió nuevamente este comportamiento.

Retardo de contador lleno

Durante el proceso de prueba de funcionamiento de los contadores, observamos que estos no se detenían cuando llegaban a su máxima cuenta.

En el diseño se contempla que cuando ambos contadores llegan a su cuenta máxima, un pulso es generado en la pata FULL (contador lleno) del contador mayor, y este pulso es detectado por el microcontrolador generando una interrupción de alta prioridad. Esta interrupción, entre otras tareas, detiene el contador. Al tratarse de una interrupción, se podría decir que se obtiene uno de los tiempos de respuesta más bajos posibles. Sin embargo, esta respuesta no es inmediata, sino que consume un cierto tiempo de procesamiento.

Las mediciones dieron los siguientes resultados:

  • Corriendo el contador a 8Mhz y el PIC a 24Mhz, el retardo desde que el contador se llena hasta que es detenido es de 16 cuentas (16 ciclos de 8Mhz).
  • Corriendo el contador a 8Mhz y el PIC a 48Mhz, el retardo baja a la mitad, retardo de 8 ciclos de 8Mhz.

8Mhz -> 125 ns 24Mhz -> 41.6 ns 48Mhz -> 20.8 ns

16 ciclos a 8Mhz -> 2us 8 ciclos a 8Mhz -> 1us

2us a 48Mhz -> 48 ciclos 1us a 24Mhz -> 48 ciclos

Haciendo algunas cuentas, se llega a que el retardo que tiene el microcontrolador en atender la interrupción y detener el contador es de 48 ciclos.

De acuerdo a la velocidad a la que corra el contador, y a la que se ejecuten las instrucciones del PIC, este tiempo cambia, y se puede observar en las mediciones obtenidas.

Es evidente que sólo se pueden mejorar estos tiempos vía software (o firmware), pero en principio esto no implica un problema.

El único efecto que esto produce es que se sobreescriban las n muestras (16, 8, o bien, la cuenta que resulte de los 48 ciclos del PIC) obtenidas y guardadas en memoria. Teniendo una memoria de gran tamaño, y siendo tantas las muestras que se toman de la señal de entrada, creemos que la citada cantidad no es relevante y puede despreciarse. El único cuidado que hay que tener es el de no tenerlas en cuenta y considerarlas como muestras no validas, descartándolas y suponiendo el resultado los valores guardados a partir de la muestra número n.

Inserción de zócalos

Los circuitos integrados seleccionados para componer el sistema completo fueron en su mayoría de encapsulado DIP, lo que facilita enormemente su uso, especialmente en placas universales (ver: Fabricación). Sin embargo los conversores y las memorias no las pudimos obtener en este tipo de encapsulado.

Los conversores TLC5540 de Texas Instruments tienen un encapsulado SOIC-24. Para este componente debimos comprar un zócalo adaptador de SOIC-24 a DIP-24. Afortunadamente este tipo de encapsulado (frente al SOJ) es de mas fácil soldadura, y el zócalo adaptador calzó perfecto en los zócalos DIP estándar, con los cuales construimos la plaqueta.

Las memorias Cypress CY7C-109B tiene encapsulado SOJ-32 y debimos comprar zócalos adaptadores de SOJ-32 a DIP-32. Sin embargo en este caso nos encontramos con un gran problema. El zócalo adaptador (en su parte DIP) tenía una distancia entre sus lineas paralelas de 400-mil (1 mil = 1/1000" -> 400-mil = 0.4" = 10.16mm), mientras que la separación standard es de 300-mil (7.62mm). O sea, en la fabricación de la plaqueta, hemos dispuesto a todos los componentes es zócalos DIP standard, y luego a medida que llegaba el momento de colocarlos, el zócalo ya se encontraba soldado. Ahora, si tenemos ya soldado e instalado un zócalo de 300-mil y tenemos que colocar en él un componente con separación de 400-mil, está claro que no va a ser posible. Dado que consideramos más complicado y con posibilidad de error el cambiar el zócalo de la placa, ya que este ya se encontraba soldado (con todas las conexiones adyacentes también soldadas) optamos por construir (en primera instancia) un adaptador "casero" de DIP-32@400-mil a DIP-32@300-mil.

Esto al principio provocó fallas intermitentes en la conexión desde el integrado hacia las pistas de cobre, pero se solucionó ajustándolo mejor y haciendo mas presión sobre los componentes. Resulta evidente que estos zócalos deben de reemplazarse por sus correspondientes, pero la solución optada ha sido por cuestiones de tiempos y facilidad.

Preseteo de contadores

Los contadores que hemos seleccionado tienen la funcionalidad de presetearlos, es decir, cargarle un valor predefinido al contador y luego éste comenzará a contar a partir de dicho valor. El procedimiento de carga de dicho valor es sincrónico, es decir, que una vez que se pone el valor deseado en las patas correspondientes y la señal de carga esta seteada, se debe dar un pulso en la señal de reloj para que dicha carga tenga acción. A diferencia de los componentes asincrónicos, los cuales una vez que en el puerto de control se indica la carga del valor de preseteo, no requieren de un pulso de reloj para llevar la acción a cabo.

Esto no sería un problema para el contador de los bits menos significativos, ya que la señal de reloj de este componente esta controlada por el PIC. Sin embargo, el diseño de contadores en cascada, lo que permite aumentar la cantidad de bits del contador, hace que la señal de reloj del contador más significativo sea controlada por el contador de los bits menos significativos.

Este proceso hace que cada vez que el contador mas chico llega a la última cuenta (el último numero antes de volver a cero), dé un pulso en su pata de FULL (contador lleno), y esta es la que hace que el contador mayor aumente en 1 su cuenta.

Como vimos, el contador mayor esta controlado en cuanto a su sincronismo y señal de reloj por el contador menor, y esto complica el proceso de preseteo, ya que no tenemos forma directa de controlar la señal de reloj de dicho contador (recordar que son sincrónicos).

Entonces la solución que hemos encontrado para resolver este problema es haciendo que cada ciclo de preseteo de contadores cargue en el contador menor el mayor valor posible, luego cargarle al contador mayor el valor deseado (esto no ocurrirá hasta un nuevo pulso de reloj), y posteriormente enviar un pulso de reloj al contador mayor para que este avance en su cuenta. Dado que lo habíamos cargado con el máximo valor posible en su cuenta, un nuevo pulso de reloj hará que este vuelva a cero y de un pulso en su señal de contador lleno. Esta señal es la que controla el reloj del contador mayor, y por consiguiente aquí se producirá la carga efectiva de los datos en este contador, ya que como hemos dicho, este contador es sincrónico y realiza las operaciones en cada pulso de reloj.

Finalmente se carga al contador menor con el valor deseado y se termina con el proceso de preseteo.

Si bien esta solución no sería la ideal a primera vista, consideramos que una solución que se pueda hacer por software, en vez de realizar cambios en el hardware, es mejor y más fácil de llevar a cabo.

Control de lectura de memoria

La memoria tiene varias formas de ser operada y controlada, diferentes señales proveen combinaciones diferentes qué hacen que el componente accione como se espera. Por ejemplo, podríamos decir que puede ser controlada por la pata de lectura, la de escritura, o la de habilitación. De acuerdo con qué configuración se esté utilizando, entonces dichas señales deben de tener cierto valor para el funcionamiento correcto.

Habiendo tales diferencias, hemos cometido un error de diseño sobre cómo debería ser la señal de lectura.

Mientras probamos el funcionamiento de la placa observamos un funcionamiento en este componente que no coincidía con el esperado. Al depurar en tiempo real qué es lo que estaba ocurriendo, detectamos que el problema tenía origen exactamente en el comportamiento de la memoria frente a lo que las señales de control suponían. Aquí entonces revisando más a fondo las formas de control detectamos que la señal de lectura estaba invertida, y por lo tanto, la solución inmediata fue la de eliminar una de las compuertas NOT (hecha con NAND) del camino de control de dicha señal.

Una vez realizado este cambio, la memoria funcionó tal como se esperaba.

Cambio de elección de patas del PIC

Mientras se comprobaba el funcionamiento de todos y cada uno de los componentes, detectamos que alguna de las veces que un componente no actuaba como se esperaba el problema provenía del microcontrolador. El PIC no realizaba lo que se le solicitaba. Ciertas patas del PIC que debían cambiar de valor no lo hacían, incluso al depurar en tiempo real por hardware.

Algunos de estos comportamientos anómalos se debían a una mala definición o programación de los puertos de entrada/salida del microcontrolador. Sin embargo otros casos se debían a la mala elección por nuestra parte, donde por ejemplo ciertos puertos utilizados para interrupciones no podían ser utilizados como patas de control standard.

En estos casos, debimos recablear las señales buscando algún otro puerto disponible en el PIC. Esto implica tener que desoldar un cable, extraerlo, y volver a colocar otro de las medidas necesarias y entre el viejo componente y el nuevo puerto del PIC. Esta operación hay que realizarla con sumo cuidado ya que los procesos de desoldar y volver a soldar pueden provocar cortes de pistas, corto circuitos, y otros problemas.

Una vez que realizamos los cambios correspondientes, y se ha reprogramado el microcontrolador con la nueva configuración, el funcionamiento fue óptimo.

Aquí es donde vuelven a aparecer las ventajas de utilizar una placa universal en vez de un circuito impreso. La acción de hacer un cambio de último momento en la selección de puertos implica que la conexión entre un componente y otro cambie de recorrido, tenga un destino diferente, que el camino sea otro. Esto en una placa impresa podría ser imposible de llevar a cabo, a menos que se utilicen cables para reemplazar la pista de cobre. Nuevamente consideramos como buena la elección de utilizar una placa universal.

Conexión simultánea al ICD2 y al puerto USB

La mayor ventaja del ICD2 es poder depurar lo que está pasando en la placa directamente sobre el hardware, lo cual, en contraste con una simulación, es un excelente recurso para encontrar problemas en el funcionamiento.

Al programar la placa, ésta queda por defecto en modo reset (el MPLAB la deja configurada así). Por lo tanto una vez programada la placa se debe sacar del modo reset yendo a Programmer -> Release from reset. Esto hace que la placa corra simultáneamente conectada al puerto USB y al ICD2.

Para poder depurar el funcionamiento es necesario seleccionar el modo Debugger en lugar de Programmer, y luego ejecutar el programa yendo a Debugger -> Run (también pulsando la tecla F9).

Problemas de programación del ICD2

En repetidas oportunidades encontramos dificultades al programar el PIC, esto era en la etapa de verificación de la programación.

Es decir, el proceso de programación consta de la verificación del dispositivo y la conexión, luego se programa por completo el dispositivo, y finalmente se hace una verificación del contenido.

Cuando existe una diferencia entre lo programado y lo verificado, puede ser o bien que haya sido mal programado, o que el proceso de verificación no se haya completado correctamente. Dado que después de una programación no satisfactoria el dispositivo no funcionaba, es claro que la falla estaba en la etapa de programación.

Varias veces hemos tratado de encontrar la raíz del problema, pero sin poder llegar a ninguna conclusión.

De hecho, se podría decir que habíamos encontrado una forma de hacer que vuelva a su funcionamiento normal, y era reiniciando el PC y reconectando todos los equipos. Esto nos hizo suponer que se trataba de un problema en el PC, o mejor dicho, de algún inconveniente con el puerto USB.

Sin embargo, mas adelante descubrimos que el problema radicaba en el regulador de tensión del ICD2. Luego de un largo periodo de operación este componente recalentaba y producía el mal funcionamiento. Creemos que una de las posibles razones de que el regulador aumente su temperatura es la calidad de la fuente de alimentación que utilizamos. Luego de detectado el problema lo resolvimos añadiéndole un disipador al regulador de tensión, y también colocamos un ventilador disipador próximo a él para asegurarnos que funcione correctamente.

Calibración

Una vez que el osciloscopio estuvo funcionando, fue necesario realizar la calibración del equipo.

La computadora ya podía obtener los valores de las mediciones, por lo que restaba hacer los cálculos correspondientes para asignarles un valor correcto a dichas tensiones y a los tiempos equivalentes entre las muestras obtenidas, teniendo en cuenta los parámetros de captura del osciloscopio para cada modo de captura distinto.

La etapa de entrada tiene un potenciómetro multivuelta de alta precisión para cada canal que permite ajustar el nivel de tensión media de los mismos antes de entrar al conversor analógico digital. Con este potenciómetro nos aseguramos que ambos canales tengan el nivel correcto de tensión media, encontrándose exactamente en el medio de la excursión del conversor.

Luego realizamos varias mediciones con señales de laboratorio conocidas, generadas con un generador de funciones. Las señales utilizadas fueron de diferentes formas de onda, y de diferentes tensiones y frecuencias (utilizando todo el rango posible). Estas señales fueron medidas con nuestro osciloscopio y con un osciloscopio profesional.

Finalmente, al obtener las mediciones, realizamos los cálculos correspondientes para que nuestro equipo muestre los valores de tensión correspondientes. Al mismo tiempo realizamos las mediciones de tiempos, corroborando el tiempo entre muestras de acuerdo a las diferentes velocidades y diferentes tipos de muestreo. De esta forma se realizó la calibración del prototipo.

Especificaciones finales

A continuación se presenta una tabla con el resumen de las especificaciones finales del osciloscopio, según el prototipo armado.

Especificación Valor
Resolución vertical 8 bits
Conexión a la PC USB 1.1 (USB 2.0 compatible)
Velocidad máxima de muestreo 8 MSPS
Entradas 2 canales con entradas BNC
Rangos de tensión ±40 V
Precisión de tensión 3%
Tamaño del buffer 64K
Impedancia de entrada 1 MΩ
Alimentación eléctrica 9V DC
Consumo de potencia 5-7W
Dimensiones 240mm x 180mm x 75mm
Software Windows 98/2000/XP
Linux
Mac (no probado)
Aislación Mo dispone de aislación eléctrica
Señal de calibración No dispone de señal de calibración

Tabla 8.1 Especificaciones finales del osciloscopio

Cada una de las especificaciones es limitada o definida por un componente particular, a saber:

  • Resolución vertical - limitada por todo el sistema, ya que todos los componentes son de 8 bits
  • Conexión con la PC - Limitada por el PIC puesto que solo trabaja a USB1.1
  • Velocidad máxima de muestreo - Limitado por la frecuencia del oscilador (en este caso, un cristal de 8 Mhz). Sino sería limitado por la frecuencia máxima de trabajo del ADC (40 Mhz).
  • Precisión de tensión - definido por el error en el ADC (± 1 LSB) más un error (estimado) en la etapa de entrada
  • Tamaño del buffer - limitado por las memorias
  • Impedancia de entrada - definido por la impedancia de entrada de los amplificadores operacionales de entrada
  • Alimentación eléctrica - definido por el regulador 7805
  • Consumo de potencia - definido a partir del consumo de todos los componentes activos. Ver Capítulo 4. Hardware

  • Dimensiones - definido por el tamaño de la carcaza
  • Software - definido por las características del lenguaje python

Compatibilidad con puntas de atenuación

Es muy corriente que las puntas de medición para osciloscopios tengan la posibilidad de atenuar grandes señales de entrada. Esta característica se incluye para poder medir señales de gran amplitud. De este modo, la misma punta de medición atenúa 10 veces a la señal, para que ésta cumpla con los rangos de entrada del osciloscopio y pueda ser medida. Esta es una práctica muy común y la mayoría de los osciloscopios y puntas de medición ya vienen con esta esta capacidad.

En nuestro caso, entendemos que agregar esta funcionalidad resulta trivial, puesto que solo bastaría con modificar el software agregándole un selector X1/X10 (y realizando las cuentas correspondientes) de la misma forma que hoy posee un selector para habilitar o deshabilitar la etapa de entrada (ver

).

Estudiando hojas de datos de diferentes puntas de medición, observamos que en general éstas requieren una impedancia vista de entrada hacia el osciloscopio de 1 MΩ lo cual se cumple en nuestro prototipo.

Referencias

toggleopenShow attachmentstogglecloseHide attachments
Topic attachments
I Attachment Action Size Date Who Comment
gifgif circuit1.gif manage 15.1 K 26 Feb 2006 - 23:55 MartinSzmulewicz Circuito Impreso
gifgif C_impre.gif manage 46.1 K 26 Feb 2006 - 23:55 MartinSzmulewicz PCB
jpgjpg placa.jpg manage 68.3 K 26 Feb 2006 - 23:58 MartinSzmulewicz Placa Impresa
jpgjpg Upcb.jpg manage 34.5 K 27 Feb 2006 - 00:26 MartinSzmulewicz Placa Universal
jpgjpg Upcb_2.jpg manage 36.3 K 27 Feb 2006 - 00:27 MartinSzmulewicz Placa Universal con componentes
gifgif utp.gif manage 9.1 K 27 Feb 2006 - 02:34 MartinSzmulewicz Cable UTP Cat5e
jpgJPG zocalo.JPG manage 5.5 K 27 Feb 2006 - 23:08 MartinSzmulewicz Zócalo
jpgjpg ZIF.jpg manage 104.6 K 27 Feb 2006 - 23:08 MartinSzmulewicz Zócalo ZIF
jpgjpg osciladorNAND.jpg manage 279.8 K 05 Mar 2006 - 15:29 MartinSzmulewicz abajo el oscilador, arriba la salida de la NOT (NAND)
jpgjpg oscusb5.jpg manage 474.0 K 08 Mar 2006 - 18:59 MartinSzmulewicz Placa de control: pic - buffers - contadores - compuertas
jpgJPG oscusb8.JPG manage 439.1 K 08 Mar 2006 - 18:59 MartinSzmulewicz Placa de adquisición: conversores - memorias - entrada - compuertas
jpgJPG osc_input.JPG manage 5.5 K 29 May 2006 - 05:00 MartinSzmulewicz puerto de entrada del oscilador
jpgJPG flatcable.JPG manage 11.5 K 02 Jun 2006 - 12:38 PabloHoffman Cable Flat
jpgjpg oscusb-case.jpg manage 40.0 K 02 Jun 2006 - 13:17 PabloHoffman Carcaza del osciloscopio
jpgjpg oscusb-bnc.jpg manage 52.3 K 02 Jun 2006 - 13:18 PabloHoffman Conectores BNC del osciloscopio
jpgJPG oscusb9.JPG manage 220.2 K 02 Jun 2006 - 13:27 PabloHoffman Placa completa
jpgJPG RJ12.JPG manage 5.2 K 03 Jun 2006 - 21:12 PabloHoffman conector RJ12
jpgJPG protoboard.JPG manage 9.6 K 14 Jun 2006 - 03:27 MartinSzmulewicz Protoboard
Edit | Attach | Printable | Raw View | Backlinks: Web, All Webs | History: r44 < r43 < r42 < r41 < r40 | More topic actions
Oscusb.DocCap08Fabricacion moved from Oscusb.DocCap08 on 14 Jun 2006 - 05:13 by PabloHoffman - put it back

Osciloscopio USB


Esta Web
Cronograma
  • DONE planificación
  • DONE análisis
  • DONE presentación oral
  • DONE diseño
  • DONE implementación
  • DONE documentación
  • DONE imprevistos
  • DONE defensa
  • MOVED TO... correcciones
 
Powered by pablohoffman.com
This site is powered by the TWiki collaboration platformCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding pablohoffman.com? Send feedback