Dudas y consejos con hacer un PIC-osciloscopio

Hola! Soy bastante aficionado a la electrónica, pero sé bastante de programación y estoy estudiando ingenieria industrial superior. Os explico, mi idea principal por ahora es de hacerme con las herramientas básicas de medición y testeo pues me empiezan a hacer falta, ya no me basta con un "simple" multimetro digital..

Asi que busqué y recopilé información (y esquemas) de los aparatos y me encontré con proyectos de armado de osciloscopios un poco interesantes. Pero siempre tenian "inconvenientes" puesto que los diagramas eran muy complejos (y eso se traducia en el coste del aparato), o demasiado simples, o de especificaciones insuficientes... Asi que mis ánimos decayeron un poco puesto que el osciloscopio es bastante necesario para según qué cosas... Ya creía que hacer un "buen" osciloscopio sin ser demasiado caro era cosa imposible, me encontré con éste intento de osciloscopio. Los chicos se ve que lo consiguieron aunque no consiguieron todos los objetivos propuestos. Su idea era de un osciloscopio de 20Mhz hecho por partes (conversor ADC por un lado, pic por el otro, memoria, ...) y creo recordar que solo puedieron llegar a medir ondas de hasta 4Mhz u 8Mhz... Segun dicen uno de los problemas eran las propias interferencias que comportaba trabajar con éstas frecuencias.

Asi que me gustó la idea, si bien en un principio es bastante barato (y más si contamos que supuestamente podemos conseguir parte del material a través de SAMPLES gratuitos de webs) vi que como mínimo podria tener un osciloscopio algo decente de hasta 4Mhz. Puesto que 4Mhz ya eran bastante comparado con las tarjetas de sonido de los PCs (creo que no superan 100Khz).

Vi la fecha de publicación: Septiembre de 2006 y me propuse hacer un proyecto muy similar, siguiendo un poco el esquema, pero con componentes actuales, puesto que la electronica a avanzado un poquito más hasta el dia de hoy. Asi que he obtenido algunos resultados un tanto interesantes, para los cuales necesito de vuestra enorme sabiduría!! :D

Asi que propongo varias formas para armar un osciloscopio simple pero potente, aunque antes, las dudas, son bastante generales, pero ya que no dispongo de mucho tiempo (se acercan exámenes en la universidad :rolleyes:) voy a pediros un poco de piedad en las respuestas:
1.- No sé como encajar muy bien los conceptos de frecuencia de oscilacion interna del PIC, frecuencia de trabajo del PIC con los MIPS. Eso aplicado a un programa.
Si me traen un PIC con... pongamos una velocidad de reloj de 8Mhz y 12MIPS pudiendo llegar a una velocidad máxima de... 48Mhz, creo saber (corregidme por favor) que la velocidad en que se ejecutarán las instrucciones dentro del PIC será de Ttrabajo = Tosc/4 osea 2Mhz. Si a eso le añadimos que el PIC ejecuta 12 Millones de instrucciones por segundo, eso hace que pueda ejecutar 2M*12M = 24*10^12 instrucciones?

La ejecucion de esas instrucciones, que están en un programa, ¿son cada línia de programa o no tiene por qué?

2.- Creo recordar que si en vez de utilizar un oscilador interno (del propio PIC) utilizamos uno externo (ejemplo los 20Mhz máximos), la relacion de Ttrabajo y Tosc es diferente a la anterior, estoy en lo cierto? sabeis cúal es?

3.- Si un PIC contiene un ADC de.. pongamos 12bit@100 Ksps y además un módulo USB integrado, y quiséramos coger las muestras del ADC y enviarlas por usb al PC, a qué velocidad teórica necesitariamos enviarlas? porque... 1 muestra serian 12 bits, entonces:
100Ksps*(12bits/muestra) = 1,2Mbits/s ??? paso por alto alguna cosa? La pregunta va dirigida para saber y sopesar otras posibilidades: El puerto USB será capaz de enviar TODAS las muestras al PC? y el SPI? I2C? RS-232 ?? más adelante veréis por qué.

4.- Si por casualidad se le añadiera un LCD, se podria refrescar la pantalla "en tiempo real" o "sincronizado" (sin un retardo demasiado grande) con la adquisición de las muestras?

ESAS DUDAS son bastante cruciales. Ahora voy a deciros unas cuantas combinaciones para lo que podria ser mi futuro Osciloscopio !!! allá vamos!
1.- Siguiendo el esquema propuesto en la web: ADC + Memoria + PIC(con USB)->PC con componentes actuales: Buscando ADCs en Texas Instruments, he podido comprobar que se puede conseguir ADCs bastante buenos y con velocidades de adquisición muy altos, el ADC no es problema entonces. La memoria faltaria por determinar puesto que no domino muy bien el tema y no sé como se hace la comunicación con las memorias. Pero uno de los problemas es el PIC que transmite los datos al PC. En el supuesto caso que pudiésemos instalar y armar sin problemas de ruidos un ADC de cualquier velocidad, ésta vendria limitada por los actuales PIC que disponen de USB (máx 48Mhz) y siguiendo un criterio (que no recuerdo el nombre pero que viene a decir "la velocidad de muestreo debe ser como mínimo 2 veces la de adquisición") y teniendo en cuenta la relacion entre Ttrabajo y Tosc, la velocidad máxima teórica del ADC seria de:
48Mhz*(1/4)*(1/2) = 6 Mhz por tanto, viene limitada por la frec. de trabajo del PIC si se desea hacer "bien"..

2.-Modificando el esquema propuesto en la web: ADC + Memoria + PIC(sin USB)->PC
Como hemos visto, los PICs CON USB, no sobrepasan de 48Mhz (adelante, buscad!) y eso nos limita el ADC. Asi que otra posibilidad seria de hacer uso de otras vias de comunicación con el PC: RS-232, ... y utilizar PICs con velocidades más altas. Pero no sé que tasa de transferencia máxima soportan dichas vias de comunicación (tampoco sé si los calculos hechos por mi más arriba son correctos, de aqui preguntar primero ;) tan solo soy un aficionado!)

3.- Partiendo desde cero: PIC(+ADC bueno) + (USB, RS232, ...)->PC
Si, en el link que os he puesto más arriba incitandoos a buscar PICs, podeis ver que hay un PIC un poco especial (lo sé me he tragado todo el PDF...) el pic en cuestión és este: dsPIC33FJ16GS502 que tiene varias cosas a destacar:
· Frec Interna de 7,37Mhz, Frec Máx de 120Mhz y 40 MIPS
· 2x ADC de 10 bits @ 4 Msps
· Encapsulado SPDIP !!!
· 4 DAC de 10 bits @ 640 Ksps (que no vienen al caso, pero ya que os digo lo + importante... :D)
Con él podemos reducir el circuito de los chicos de la web a una "simple" funcion dentro del PIC y transmitirla al PC... ¿ cuál es el problema? que no tiene USB. Por lo que se abren de nuevo las posibilidades anteriores: Combinación con otro PIC que sí tenga, utilización de otras vias de comunicación (RS232, otro pic con Ethernet, ...), un driver de USB (existen? :confused: )

Asi que ya veis por dónde van los tiros: El dsPIC33FJ16GS502 nos ofrece un ADC nada despreciable de 4Msps, que vendrian a ser 4Mhz? lo que consiguieron dentro de un chip programable ! :D

Solo faltaria ponerle una pantalla y osciloscopio portable ! Pero de momento me conformo con poderlo transmitir al PC... y hacer un programa específico para ello.(Descargar al PIC del trabajo de procesamiento y tratamiento de la información.. si fuera el caso)

¿qué opinan? Les gusta la idea?
 
vaya pedazo de pregunta!!!! pero bueno voy a intentar resolverte algunas dudas.
un pic, y casi cualquier microconrolador tarda en ejecutar una instrucción 4/Fosc (s), es decir, con un reloj de 4MHz ejecuta cada instruccion en 1us, pero cada instruccion de codigo ensamblador. lo de las MIPS no lo he llegado a entender nunca porque un pic con un reloj de 8MHz puede ejecutar en un segundo 2 millones de instrucciones. . osea. . 2MIPS, asi que eso se queda en el aire. y supongo que dara lo mismo si utilizas oscilador interno o externo ya que el oscilador interno es un bloque es como si lo pusieras fuera pero esta dentro y puedes seleccionar un postescalar.
En cuanto a las memorias, todas funcionan con comunicacion serie sincrona, i2c en su mayoria, aunque tambien las hay por SPI. no tendras problema porque casi todos los pics incorporan estos protocolos.
el lcd si que se podria poner pero ello implica mas codigo. . mas instrucciones. . menor velocidad de lectura
en cuanto al adc, la formula esta 48Mhz*(1/4)*(1/2) = 6 Mhz no es correcta, ya que el pic no tarda solo un ciclo de reloj en leer el puerto, como mínimo tiene que guardarlo en el acumulador, y del acumulador a la variable, con lo que son 2 instrucciones y esa frecuencia se reduce a la mitad, ahora debes tener en cuenta que tu código no va atener solo esas dos instrucciones, pues debes enviarlas, visualizarlas, tratarlas. . . así que esa velocidad de reducira a unos cientos de kHz. . . . de todas forma en el articulo ese hay algo extraño, dice que la velocidad de muestreo de 8MSPS viene limitada por la frecuecia de oscilación de 8MHz. . . quieren decir que con un oscilador de mas frecuencia conseguirían medir frecuencias mayores?? realmente si han conseguido lo que dicen es un muy buen trabajo. . en fin
ahora vamos a hablar de cosas serias, el dsPIC33FJ16GS502, este aparato ya no es técnicamente un micrcontrolador, sino un dsp, funciona a 16 bits, una frecuencia de oscilación bastante mas grande y permite ejecutar acciones en paralelo. en internet hay bastantes proyectos de osciloscópio que funcionan con dsps. en cuanto al tema de que no tiene usb no es un problema muy grande, ya que existen integrados como el MCP2200 que convierten el protocolo rs232 en usb. lo de la pantalla se ira viendo. . jaja espero haberte despejado algunas dudas.
Un saludo
 
gracias! me has ayudado bastante! ahora podré ser más realista frente a los cálculos y al diseño del circuito. Voy a ver el MCP2200 que me dices.

En qué se diferencia un microcontrolador con un dsp? Si dices que puede ejecutar acciones en paralelo, puede servirme muchísimo a la hora de tratar la información. Aunque, si debo comunicarme a través de RS232 para convertirlo en usb... a qué velocidad máxima puede transferir el RS232?

Saludos!
 
La frecuencia del sistema suele ser un submultiplo de la frecuencia de reloj, pero eso no siempre es así, hay microcontroladores de 1 ciclo y los hay con multiplicador interno que con 8MHz hace 40MIPS.
Por otro lado, el conversor suele ser lento, del orden de 1/(nº de bits) * frecuencia, si además el osciloscopio es de varios canales.... pues divides por el número de canales, aunque maxim tiene un conversor de 8 entradas con 8 conversores, en lugar de un conversor y un multiplexor de 8 entradas.
Osea que hay que buscar un conversor externo, preferentemente flash converter, que no son nada baratos. Los flash hace una conversión instantánea.
Eso o usar el adc interno y hacer un osciloscopio "hasta donde se llegue".

El RS232 suele llegar a unos 128kbps que son unos 12 ó 13 KB por segundo. Los 256Kbps no le suelen sentar bien al rs232 ni a sus drivers, léase max232 ó 233 aunque es probable que funcione. Eso daría unos 24KB por sgundo, que no está mal si consideramos que el osciloscopio toma las muestras y solo manda un "pantallazo" al PC. Si tomas 1024 muestras a 16 bits, dos canales salen 4KB osea que lo trasnmite al PC en 0,20" que tampoco es insufrible.

Los conversores rápidos de maxim:
http://para.maxim-ic.com/en/search.mvp?fam=fast_adc&tree=adconverters

Además está el tema del encapsulado que probablemente no sea "hobbista~compatible"
 
Última edición:
Siendo que es un proyecto en el que tu te has embarcado, tu sabras si te es rentable el gasto de tiempo y dinero que vas a hacer, porque hoy en dia con el acceso que tenemos a comprar cosas en China directamente, un osciloscopio funcional y bastante decente digital de 20Mhz y 500MSa/s sale por unos 200€, esto te lo digo porque yo empecé igual, con ganas de hacerme un osciloscopio y al final por cuestiones de tiempo, decidí comprar uno digital en China, y de momento estoy muy contento con el.

Bueno, solo queria decirte eso, un saludo
 
No tengo 200€ para gastarme... ése es el motivo por el cual estoy buscando algo BBB (bueno, bonito, barato)
Es un proyecto un poco a largo plazo, puesto que todavía debo aprender a manejar el usb del PIC, etc. Por eso este proyecto tambien me sirve para eso, para aprender. Aunque gracias por la recomendación !
 
Bueno, yo hice mi experiencia y te la cuento:

1)- Consegui un ADC tecnologia flash de 80msps como sample en Analog Devices (TI tambien tiene uno de 40msps muy interesante) No recuerdo los nros ahora. Creo que era AD80100 o algo asi.
2)- Saque de una lectora de CD para PC, una memoria SRAM de 32Kbytes
3)- Compre 2 contadores CD4040, los conecte a la memoria (uno entero y algunos bits del otro)
4)- De unos motherboard viejisimos, saque un par de transceivers 74F245. Uno lo conecte desde la memoria al ADC, y el otro, desde la memoria al puerto paralelo de la PC. Creo que hay de estos en lectoras tambien, no recuerdo.
5)- Con un pic 16F628 y unas compuertas nand, controle todos estos componentes para hacer lo siguiente:

a)- Con una señal de reloj a 40MHZ (oscilador a cristal integrado, tambien obtenido de una placa de PC 386) que comanda todo el sistema, excepto el micro, sampleo las muestras del ADC y almaceno en memoria. La misma se llena en un cortisimo tiempo (ms). O sea, obtengo 40msps (sampleo una señal de 4mhz en 10 puntos si quisiera) Teoricamente podria llegar a 80msps pero el circuito no se la aguanta :)
b)- Cuando el PIC recibe el estado alto que desbordo el contador, por medio de las nand detiene la captura, resetea los contadores, cambia los transceivers y empieza a mandar datos a la PC por medio del puerto paralelo (1Mbyte/s como mucho, con suerte).

Por supuesto, antes del ADC tengo una etapa con operacional TL074, fuente partida, llaves, etc. que acondicionan la señal.

Con esto, y un programa hecho por mi en visual basic 6, usando librerias de DirectX, pude hacer un osciloscopio funcional de unos 4mhz maximo (en realidad mas pero se deforma la señal por falta de puntos de sample... se corrige con mas velocidad).

Para que te des una idea, esto me da una pantalla por segundo aproximadamente, y la verdad que me sorprendio el resultado, excepto por una falla que tuve en el sistema de trigger y que hace que se descoordine todo.

Tengo planes y los componentes ahi para hacer la version USB, que sera muchisimo mas rapida en transferencia hacia la PC, con un proceso de captura mejorado. Pero falta tiempo para hacerla :(

RS232, olvidalo, demasiado lento. Puerto paralelo es apenas aceptable.
Por el tema componentes SMD, no te asustes... son muy faciles de soldar con un poco de maña. El ADC y unos inversores en mi caso son SMD y de los mas chiquitos! Los solde a lo bruto y despues limpie con malla dessoldante, quedan optimos.

Con todo esto, lo que pretendo es darte animos, comentarte mi experiencia y si te puedo ayudar en alguna idea o duda que tengas, pregunta que si la se la contesto.

Ah! un truco para optimizar velocidad: Que la PC le diga al micro "basta" en la transferencia cuando ya lleno su pantalla. Acelera muchisimo las cosas.

Ejemplo: Mi pantalla creo que era de 800 pixeles de ancho, entonces, segun la escala hdiv del osciloscopio eran la cantidad de samples a solicitar al PIC. El PIC permitia llenar los 32k de la SRAM, pero a la PC le transferia los necesarios para llenar una pantalla nomas. (800 en maxima resolucion, 1600 en una escala del doble, etc.)
 
Última edición:
Sigue el esquema de searg, pero para ahorrar mas conecta la memoria al puerto paralelo, haces un doble acceso con unos 74xx245...
Yo tengo 512kB de sram de unos 40MHz de la caché de dos 486, de todos modos comprar 1MB de sram no subirá mucho.

Usa la tarjeta de sonido como osciloscopio, pones un par de operacionales para aislar un poco, o un par de amplificadores ópticamente aislados para aislar un mucho...
 
A eso me refiero, a fabricar un osciloscopio "decente". Con electronica sencilla no creo que podamos llegar muy lejos, pero más que unos 10Khz... seguro que si (hice un curso de programación robótica y "Pololu" utiliza un programador AVR con un PIC18F14K50... viene con un programa llamado "SLOscope" que permite funcionar como si fuera un osciloscopio de 10Khz... es el ADC del PIC en otras palabras) Éste no me sirve para visualizar ciertas frecuencias.. Estuve montando un generador de ondas, y las ondas de poca frecuencia las mostraba, pero las altas, no. Asi que no pude terminar de armarlo porque no sabia si funcionaba correctamente (el generador de ondas me refiero) Asi que hasta que no tenga un osciloscopio un poco decente, no podré terminar de hacer algunos proyectos que tengo.

Además, tengo guardado por casa TODO de electronica reciclada. tengo CDs, disqueteras, placas base, módulos de RAM, Fuentes de PC, tarjetas de audio antiguas, ... hasta un televisor. Seguro que encontraré componentes. Tu utilizaste una SRAM de una lectora de CD de 32Kb, serviria algunos chips de RAM del PC?? la mayoria que tengo es antigua, te hablo de SDRAM.... aqui mismo tengo dos módulos que me encontré tirados por la calle de SDRAM. Cada chip es de... "2 Banks x 1M X 8 Bit Synchronous DRAM" osea 16Mbs...?

a)- Con una señal de reloj a 40MHZ (oscilador a cristal integrado, tambien obtenido de una placa de PC 386) que comanda todo el sistema, excepto el micro, sampleo las muestras del ADC y almaceno en memoria. La misma se llena en un cortisimo tiempo (ms). O sea, obtengo 40msps (sampleo una señal de 4mhz en 10 puntos si quisiera) Teoricamente podria llegar a 80msps pero el circuito no se la aguanta :)
Osea, quieres decir que por cada periodo de 4Mhz, obtienes 10 puntos (samples) ?

Con esto, y un programa hecho por mi en visual basic 6, usando librerias de DirectX, pude hacer un osciloscopio funcional de unos 4mhz maximo (en realidad mas pero se deforma la señal por falta de puntos de sample... se corrige con mas velocidad).

Para que te des una idea, esto me da una pantalla por segundo aproximadamente, y la verdad que me sorprendio el resultado, excepto por una falla que tuve en el sistema de trigger y que hace que se descoordine todo.
Por tanto, el problema es de la comunicación PIC->PC no hay forma de transmitir datos más rapidamente? El adaptador RS232 a USB es lento (utiliza una etapa de RS232), no existe algun canal (tipo SPI o I2C) que convierta a USB ? de modo que no se vea limitada la conexion?

Tu osciloscopio es a ráfagas? almacenas y transmites.. yo pensaba en algo más de tomar muestra y enviar. Por eso me hace falta ir más rápido que el ADC... pero veo que es bastante dificil.

Uno de mis problemas es que aun no me he metido en el tema de memorias... no sé como se conectan, como se "usan" para leer, escribir, etc...

saludos y gracias por los ánimos! :apreton:
 
En principio solo te valdrá la Sram o quiás SDRAM, DRAM tendrías que hacer el circuito de refresco que lo lía todo bastante.
No conozco adaptadores SPI-USB aunque es probable que existan
Lo normal de un osciloscopio digital es hacerlo "a ráfagas", si no lo haces sería un analógico "digitalizado", al final le das las condiciones de disparo y frecuencia de muestreo, guardas todos los samples y visualizas, en tiempo real no sería muy útil, creo yo.
 
Te adjunto una captura de pantalla de lo que estaba diseñando para el PIC18F2550 (con usb)

Esto solo es el modulo de control de memoria, arriba esta el buffer 74F245 que simula ser el ADC que voy a utilizar TLC5540 (tiene d0-d7 y CE) de 40mhz

En la version que hice por puerto paralelo utilice un ADS831E de 80mhz haciendolo andar a 40mhz

En respuesta a tu pregunta, si, para una señal de 4mhz toma 10 samples (40 msps o 40mhz)

Como te comento Scooter, no te sirve la memoria DRAM porque requiere un controlador especializado, se complica mucho.

Tambien, como dice Scooter, puedes usar un modulo de memoria cache de los 486 ya armado pero considero que tanta memoria no es necesaria, a menos que te interese saber eventos anteriores al trigger. (ademas, es mas lento llenarla)

Mi osciloscopio es a rafagas, y se puede samplear en tiempo real haciendo un cambio en el software, obviamente la velocidad estara atada a que tan rapido puedas transferir a la PC y dibujar en pantalla. El usb es bastante rapido para esto. Te comento que los osciloscopios digitales comerciales funcionan asi, almacenan y envian.

Para usar la memoria, fijate en este esquematico que te envie. Es MUY facil. En el veras un generador de reloj de proteus. Este seria el oscilador a cristal de 40mhz.

Para grabar en la memoria basicamente, habilitas la señal CE, deshabilitas OE, pones la direccion, metes datos en d0-d7 y das un pulso a WE.
Para leerla, habilitas CE, habilitas OE, pones la direccion y lees.

Como recomendacion, mucho cuidado en el diseño de la PCB, filtros de interferencia, etc. ya que son 40mhz!!! El mio actualmente tiene unos problemillas con eso (algunos picos en la señal que son problemas de layout creo) supongo lo corregire cuando arme la version usb.
 

Adjuntos

  • oscusb.zip
    182.1 KB · Visitas: 319
Última edición:
Si quieres sampliar 40MHZ (minimo 80Msamples), con decente resolucion, tendras que usar un verdadero DSP, y no habra mas. La interface visual se puede arreglar manejando frames, a fin de cuentas solo puedes ver 30 fotogramas por segundo. Y por ultimo... con docientos euros no podras hacer mucho.

En resumen, con dispositivos simples pic, avr, y otros microcontroladores, no te serviran. Siento no poder alentarte a algo que incluso yo mismo trate de investigar.
 
Personalmente creo que se necesitan al menos 8 puntos de sample para ver una señal decentemente. Esto nos da que en un adc de 40msps podriamos ver una señal de hasta 4mhz. A mi se me hace suficiente para una aplicacion diy.

Pregunta relacionada pero no tanto: un dsPIC se puede programar con el clon del pickit2? saben si en CCS C estan soportados? Me gusto para un osciloscopio sencillo no muy ambicioso.
 
Seaarg
Me intereso eso de la memoria pero no entendi.....

intentare explicar lo que entendí lo mas sencillo posible en puntos..

1.-el ADC toma lectura y lo lee el 74245 para mandarlo a la memoria...
2.-el micro lee la lectura de la memoria ...
3.-el micro hace un barrido con el 744040 de la memoria en cada registro para tomar las lecturas...

pero lo que no entiendo es que de cualquier manera se tiene que esperar a hacer el barrido no es lo mismo que si fuera en tiempo real???...
o realmente cual es la ventaja de la memoria?...
es decir primero hace la toma de las 32000 muestras despues se tarda en enviar las mismas 32000 al micro para visualizarlas y luego toma de nuevo y envia de nuevo que pasa con ese lapso de tiempo???
 
Última edición:
Personalmente creo que se necesitan al menos 8 puntos de sample para ver una señal decentemente. Esto nos da que en un adc de 40msps podriamos ver una señal de hasta 4mhz. A mi se me hace suficiente para una aplicacion diy.

Pregunta relacionada pero no tanto: un dsPIC se puede programar con el clon del pickit2? saben si en CCS C estan soportados? Me gusto para un osciloscopio sencillo no muy ambicioso.

El DSPic, en sus versiones "motor controller" solo soportan hasta 500Ksps. Muy lejos de lo que requieren. Sin contar que solo es a 10 bits.
 
Normalmente, con 12 bits se "ve" bastante bien. La teoría dice que 2 samples por ciclo con interpolación senoidal.... claro que si la señal no es senoidal pues no se parecerá a la realidad, así que por lo menos 4 ó 6 muestras por semiciclo.
Con un microcontrolador "normal", difícilmente pasarás de los 100k muestras, que tampoco está mal para muchas aplicaciones, teniendo en cuenta que el "ociloscopio" te puede costar 20€.

Revisa las prestaciones de los osciloscopios chinos, hay maravillas por 200€
 
Seaarg
Me intereso eso de la memoria pero no entendi.....

intentare explicar lo que entendí lo mas sencillo posible en puntos..

1.-el ADC toma lectura y lo lee el 74245 para mandarlo a la memoria...
2.-el micro lee la lectura de la memoria ...
3.-el micro hace un barrido con el 744040 de la memoria en cada registro para tomar las lecturas...

pero lo que no entiendo es que de cualquier manera se tiene que esperar a hacer el barrido no es lo mismo que si fuera en tiempo real???...
o realmente cual es la ventaja de la memoria?...
es decir primero hace la toma de las 32000 muestras despues se tarda en enviar las mismas 32000 al micro para visualizarlas y luego toma de nuevo y envia de nuevo que pasa con ese lapso de tiempo???

Espera, en el jpg que subi es la version con pic usb. No lleva 74245 (el que hay simula ser el integrado ADC nada mas)

En esta version es asi:
1)- Se pone la memoria en modo escritura
2)- Se barren las direcciones con los contadores a 40mhz. El clock de los mismos esta sincronizado con el clock del ADC, por lo tanto, el ADC esta escribiendo en la memoria. El pic esta en modo entrada asi que no participa
3)- Se pone la memoria en modo lectura y se deshabilita el ADC (se pone en tri-state)
4)- Se barren los contadores pero a "velocidad pic" leyendo la memoria con el micro y enviando por USB

La version puerto paralelo tiene 2 74245 uno hacia el puerto y otro al ADC. En el medio esta la memoria y el micro nunca la lee sino que la maneja.

En esta version es asi:
1)- Se pone la memoria en modo escritura
2)- Se deshabilita el 74245 que va al puerto, y se habilita el del ADC
3)- Se barren los contadores a 40mhz con clock sincronizado al ADC
4)- Se deshabilita el 74245 del ADC y se habilita el del puerto
5)- Se lee la memoria (el pic hace de clock y señales de control al puerto nada mas)

O sea, se toman las 32k muestras extremadamente rapido, en 0,0008 segundos. (40mhz / 32k) Luego se transfieren a la PC a la velocidad que la conexion nos permita y se visualizan. Mientras tanto, no pasa nada en el osciloscopio.
 
Ahh ok.. ya entendi...

oye estuve pensado la verdad suena interesante el método, pero me surgió una duda crees que si pusieran dos memorias seria mas rápido??? es decir hacerlo que mientras uno recoje información el otro entrega y se intercalan, o sera innecesario por la velocidad de captura del puerto...
 
El cuello de botella está en la comunicación...
Lo que si que debería de tener es una condición de disparo; a esas velocidades disparar "a ojo" no tiene mucha utilidad. Por ejemplo un comparador que de un pulso al llegar a cierta tensión. De paso debería de saberse si es por subida o bajada.

seaarg, ¿El conversor es de solo 8 bits?
 
Última edición:
lubeck: No, porque suponte que vos tenes una memoria llena, tendrias que transferirlo a la otra que es la que se vaciara en la PC, mientras tanto ya llenaste la primera de nuevo y recien la segunda estaria empezando a transmitir. No ganas absolutamente nada, si es que te entendi bien. Ademas y esto es medio en chiste... ¿sabes lo que es rutear las lineas de direccion, mas las de datos en el PCB? un dolor de cabeza para una sola memoria jaja.

Scooter: Totalmente, aunque USB en modo de transferencia como las camaras de video (bulk creo que era) es muy rapido. Si pensas, cada imagen de una camarita son facil los 32k de nuestra memoria del osc... y transfieren varias por segundo. (no muchas pero suficientes). O sea, si ya para mi esta siendo "usable" el osciloscopio por puerto paralelo, por usb va a ser perfecto!

El disparo por supuesto que no es a ojo. Las compuertas nand que controlan todo junto con el micro, se disparan mediante un trigger. En mi version puerto paralelo tengo un trigger con un operacional, funciona por flanco de subida o de bajada y la unica pena es que dispara una interrupcion al PIC para comenzar la captura... son 200ns x cantidad de instrucciones hasta que se empieza.

Tambien implemente un trigger por software. O sea, capturo-transmito-capturo-transmito todo el tiempo y el soft de la PC se encarga de detectar el flanco a partir desde el cual graficar.

El conversor es de 8 bits tecnologia pipeline CMOS (ADS831) y el que voy a usar en el usb cuando lo termine es el TLC5540 semiflash CMOS. Aunque no parezca son suficientes! Ambos los pedi como samples por si se animan.

Lamentablemente no tengo esquematico (no soy de hacerlo, y es una falla mia). Pero les adjunto el archivo de PCB Wizard de la placa. Quiza no se entienda porque los componentes SMD no tienen plantilla sino son simples tracks. Lo comparto para que el que quiera lo vea un poco pero no les recomendaria intentar hacerlo con este PCB.

Les adjunto tambien el esquematico de un osciloscopio por puerto paralelo, del cual practicamente copie la entrada (solo que yo la hice con llaves digitales 4066). No recuerdo la pagina web de donde lo saque asi que me da pena no poder darle credito a su autor. Esta hecho con un conversor mas comun y lento, de 1.5us x sample.

Les aviso que un amigo lo hizo y es muy limitado en velocidad, pero me parece que es por soft el problema y no por hard. Y como no tiene una memoria intermedia la velocidad de sample sera limitada principalmente por la velocidad del LPT y no tanto del ADC.

La etapa de entrada del mio es un operacional de 100mhz de ancho de banda. Mas arriba puse que era un TL074, me equivoque (escribia en el trabajo y el osc lo hice hace como 1 año) El TL074 da unos 3mhz. Despues aprendi que hay que limitar el ancho de banda del operacional con filtro pasabajos a razon de al menos (Velocidad conversor / 8), o sea 4mhz en mi caso deberia haber sido el operacional. (o ponerle filtro)
 

Adjuntos

  • CPUSOP.zip
    25.4 KB · Visitas: 133
  • schema.zip
    76.8 KB · Visitas: 196
Última edición:
Atrás
Arriba