¿Cómo utilizar un osciloscopio como un dispositivo de visualización, mediante el uso de un único canal de entrada de onda?
la dificultad sólo con este proyecto es que no puede enviar una onda hacia atrás en el tiempo, ni puede enviar 2 voltajes diferentes en un canal al mismo tiempo, y tampoco nos saltamos algunos píxeles, es decir, una onda no puede ser discontinua (lo que es el voltaje en el canal, el osciloscopio lo mostrará en la pantalla de todos modos) , así que había una necesidad de algún truco para usar este tipo de osciloscopio.
He utilizado un simple truco en el que la imagen se divide en diapositivas horizontales [filas] y las diapositivas se convierten en ondas, visualización de la diapositiva para una fracción de segundo en el osciloscopio, entonces Mostrar la otra diapositiva y así sucesivamente, si lo hacemos en un bucle, en un muy de alta velocidad, entonces la costumbre del ojo humano la reconozca como olas y se verán como una sola imagen.
así que la primera y más simple paso es dividir la imagen en diapositivas, o se pueden decir filas de ceros y unos...
para esto solo necesitamos un mapa de bits de la imagen, por ejemplo, la letra 'A' puede ser representado como sigue en el mapa de bits.
0] 0 0 0 1 0 0 0
1] 0 1 0 0 0 1 0
2] 1 0 0 0 0 0 1
3] 1 1 1 1 1 1 1
4] 1 0 0 0 0 0 1
5] 1 0 0 0 0 0 1
entonces, tenemos que convertir cada fila en una onda, como se muestra a continuación...
el propósito de convertir cada fila en una onda particular es que si mostramos las anteriores 6 ondas en un osciloscopio uno tras otro a una velocidad muy alta, entonces aparecería como...
Ahora tienes una buena idea sobre el concepto teórico del proyecto y siguiente paso es aplicar este concepto, para esto puede utilizarse muchos hardware, o simplemente puede hacerse por un DAC, pero el problema con un DAC es que la configuración de la DAC para cada onda es costoso, y para conseguir píxeles buena necesitamos guardar los ciclos de reloj y enviar la fecha tan rápida como sea posible , por lo que diseñado un circuito simple específicamente para este propósito, que es un circuito muy simple, usa un demultiplexor, un inversor Hex (porque el Demux da salida invertida) y unos potenciometros para ajustar la posición de cada diapositiva individualmente. El diagrama esquemático del circuito es como sigue-
Este circuito es muy fácil de usar, pero antes de saber cómo usarlo, debe saber cómo ver las ondas correspondientes a sus filas, cada fila genera una onda digital, la diferencia es que para cada fila, el nivel de voltaje de 'uno' es diferente, es decir, la onda digital de la primera fila tiene el más alto nivel de tensión, sólo tienes que seleccionar el nivel de tensión de los que con la ayuda de las líneas selectas del Demux , [hemos utilizado 6 niveles diferentes de voltaje para 6 diapositivas] y se puede ajustar el nivel de voltaje de cada fila con la ayuda de los potenciómetros [el nivel de voltaje de cero es el mismo para todas las filas].
Ahora lo único que tienes que hacer es para cada fila, seleccione el nivel de las líneas de selección, es decir, A, B, C los pernos en el IC de Demux y enviar los datos de la fila, desde el G1 pin.
Usted puede fácilmente diseñar el circuito para este esquema, diseñé el circuito que incluye el microcontrolador con los componentes anteriores, y el circuito es muy útil para utilizar, pero puede hacer el mismo trabajo por puerto paralelo de una computadora, que será una mejor opción como usted conseguirá reloj de alta velocidad con él. Recuerde, cuanto más alto es el pulso de reloj, mayor será la calidad del pixel de la imagen en la pantalla del osciloscopio.
Ahora viene la parte de codificación, este hardware es muy fácil de programar, el anidado bucles abajo hace la mayor parte, desde el algoritmo para este código es bastante sencillo, he decidido explicar en el código, como siguiendo...
i = > señala el número de fila
j = > número de veces que una fila debe ser exhibido
k = > puntos a determinada celda de una fila
bucle infinito, el valor de 'i' entra en un bucle de 0 a 6, infinitas veces
para (i = 0; i=(i+1)%6)
{
Esto ajusta los pines del puerto 'P1', para la selección de la fila [nivel de tensión]
P1OUT = i;
este bucle es para mostrar cada uno de la fila 10 veces, que por qué la fila siguiente se muestra como una fila independiente, o bien serán todas las filas concatenada [uno tras otro], en vez de comprometidos [uno a otro]
para (j = 0; j < 10; j ++)
{
este bucle muestra los píxeles de la fila, comprueba si el bit es 0 o 1 y envía los datos por consiguiente, observe que la cuadrícula del mapa de bits, que utilicé en mi proyecto es de 9 bits de largo, pero los funcionamientos de lazo 20 veces [20 píxeles aparecen], esto es para evitar sobre el chapaleteo entre las imágenes, como el mapa de bits aparecerá muchas veces en la pantalla , ya que nos muestra cada fila 10 veces [10 imágenes lado a lado]
para (k = 0; k < 20; k ++)
{
if(k<9) límite de la rejilla de //the
{
Si el píxel es 1, luego ajuste la broca
if(Arr[i][k]) P1OUT| = BIT3;
otro restablecerla
otra cosa P1OUT & = ~ BIT3;
}
clock_delay(); la demora/longitud de un píxel en la pantalla
P1OUT & = ~ BIT3; después de mostrar un pixel, lo apague de todos modos
}
}
}
para mejor comprensión, el siguiente diagrama muestra el trabajo realizado por cada bucle para mostrar el mapa de bits -
Aunque el mismo trabajo puede hacerse de muchas maneras, pero me decidí a mostrar esto a lograr una mejor comprensión de los píxeles. Para este proyecto usé microcontrolador MSP430, esto es debido a muchas razones, pero la mejor razón es que tiene un reloj interno y su frecuencia puede ajustarse por el usuario, en mi proyecto he usado la frecuencia MHz ~ 15. Más la frecuencia de reloj es, más rápido será datos enviados, más pixeles que sale en la pantalla.
Al lado de esto, otra técnica de enviar datos más rápido es mediante el modo de transferencia de datos síncrona del microcontrolador, que envía los bits en serie cada uno en un reloj de ciclo, esto le ahorrará mucho del tiempo que se desperdicia en comparar cada bit en el mapa de bits y tomar las acciones correspondientes.
Y al final, el paso más importante es ajustar el osciloscopio de acuerdo a nuestras necesidades y para sincronizar bien con nuestro circuito, para que tenga que ajustar la vertical posición, la posición horizontal, la altura [nivel] de tensión, el ancho [intervalo] de las olas en consecuencia para obtener una buena imagen.
Con mi proyecto, he podido ver 'HI' en la pantalla como se muestra en la figura a continuación-
Hay una línea inclinada después de cada pixel, esto ocurre porque en la práctica que el pulso de reloj a no es en 2 niveles, muestra un retraso, que puede eliminarse [casi] un circuito mejor y elegir mejores retardos en los bucles.
Este proyecto puede ser útil de muchas maneras, por ejemplo, el circuito que se utiliza, es muy barato y puede construirse en menos de 2 dólares, que es muy bueno para los estudiantes, económicamente.
Al lado de esto, puede ser una técnica muy útil para los proyectos que utilizan la transmisión de video inalámbrica, como la señal de vídeo puede enviar poco más de un canal y la codificación es muy simple, por lo que no hay necesidad de un conversor de vídeo independiente, puede enviar directamente la salida del circuito a un módulo sin hilos, por ejemplo, un módulo de RF y recibir la señal y mostrar los datos directamente en el osciloscopio, mientras que normalmente los estudiantes utilizan el módulo combinado de video inalámbrico, que es muy costoso.
y puesto que la señal que estamos enviando es una señal digital (pero con niveles diferentes de 1) los errores pueden ser detectados y extraídos de manera más eficaz, la señal en el extremo receptor.
Junto con todos los usos anteriores, este proyecto ayuda a entender cómo podemos mostrar imágenes en pantallas, y cómo podemos diseñar nuestro propio módulo de la pantalla...