Autor Tema: Generador de imagenes de video con PIC  (Leído 123442 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado manutek

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 555
Re: Generador de imagenes de video con PIC
« Respuesta #210 en: 27 de Octubre de 2010, 23:35:20 »
aca otro link para dspic con fuente y esquemas
http://benryves.com/journal/3682170
No es la conciencia del hombre la que determina su ser, sino, por el contrario, es su ser social el que determina su conciencia

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Generador de imagenes de video con PIC
« Respuesta #211 en: 14 de Noviembre de 2010, 19:21:13 »
Hola amigos!

Existe un sitio ruso en el que su autor ha logrado una buena imagen VGA (solo texto, 30x30 caracteres de 8x16 pixeles en 16 colores) con solo un PIC18F de 28 pines y poco mas.

Lo he armado, y anda perfecto. De hecho, hasta hemos preparado un articulo para el próximo número de la revista uControl. Aqui posteamos una explicación sobre este proyecto, y se las transcribo por si les resulta de utilidad  :lol:


Generar señal VGA con un PIC 18Fxxxx

Casi todos hemos intentando alguna vez utilizar un microcontrolador para generar una señal de vídeo compatible con un monitor VGA, utilizados por la mayoría de los ordenadores. Se trata de una buena idea, que puede dotar a nuestros proyectos de una pantalla “de verdad”, barata, grande, brillante y en colores. Sin embargo, no se trata en absoluto de una tarea sencilla: los breves tiempos implicados en la generación de cada píxel hace que sea un objetivo muy difícil de lograr. A lo largo de este artículo intentaremos proporcionarte información útil para que puedas encarar con éxito ese desafío.



Cuando un producto de cualquier tipo se fabrica en enormes cantidades, su costo disminuye notablemente. Ese es, sin dudas, el caso de los monitores utilizados en los ordenadores personales. Los monitores VGA, sobre todo aquellos más viejos que utilizan como elemento de imagen un tubo de rayos catódicos, pueden conseguirse por muy poco dinero, e incluso, si buscamos un poco, gratis. Ante este panorama surge inevitablemente la idea de “usarlos para algo”, y como nuestra pasión es la electrónica, lo más natural del mundo es intentar convertirlos en parte de nuestros proyectos. Si lográsemos generar las señales adecuadas, podríamos utilizar estas pantallas como “display” en cualquiera de nuestros proyectos. Desafortunadamente, esto no es algo sencillo. Basta con buscar un poco por la red para darse cuenta de que solo hay un puñado de proyectos destinados a generar imágenes de vídeo compatibles con monitores VGA, y la mayoría de ellos simplemente generan barras de color, o imágenes en blanco y negro de muy baja resolución. Sin embargo, es posible crear imágenes y texto en colores, con pocos componentes, un microcontrolador y el programa adecuado.


Figura 1:“Podemos utilizar un monitor VGA como parte de nuestros proyectos.”

A lo largo de este articulo vamos a intentar proporcionar las bases necesarias para que puedas desarrollar un dispositivo pequeño y barato, capaz de recibir ordenes a través de un puerto SPI y desplegar texto -en colores- sobre un monitor VGA. Uno de los mejores trabajos que se pueden consultar sobre como generar estas señales -y el resto de los parámetros de la imagen- con un microcontrolador PIC18 es el de Victor Timofeev, en el que nos hemos basado para escribir esto y cuya lectura recomendamos fuertemente. El sitio de Victor está en ruso (algunas partes en inglés), pero es posible lograr una traducción bastante decente utilizando Google Translator.

La imagen VGA
Lo primero que necesitamos conocer -y al detalle- es la forma en que uno de estos monitores genera su imagen. No debemos olvidar que no intentamos utilizar una placa VGA como la que poseen los ordenadores para generar la imagen, sino que nuestro proyecto debe encargarse de proporcionar al monitor las señales adecuadas para que este muestre lo que queremos. Esto significa que conceptos como “segmento de memoria de vídeo” o “modo 13” -propios de los adaptadores VGA mencionados- no tienen ninguna utilidad para nosotros. Necesitamos enviar al monitor, en el momento exacto, la información necesaria para que este pueda “dibujar” cada píxel que conforma la imagen.

Un monitor VGA común puede ser controlado utilizando solo 5 lineas: dos de sincronismo (horizontal y vertical) y tres señales analógicas (rojo, verde y azul). Las señales de sincronismo, como su nombre lo indica, sirven para que el monitor “sepa” cuando se encuentra en el comienzo de un cuadro o de una linea. Las señales analógicas correspondientes a cada color permiten variar la intensidad del los mismos simplemente variando su voltaje. Al menos en teoría, combinando correctamente el valor de tensión aplicado a las tres lineas analógicas se puede obtener cualquier color que deseemos. En la práctica, la velocidad de nuestro microcontrolador y las características de nuestro conversor digital-analógico determinarán la cantidad de colores que podemos mostrar. La imagen se dibuja linea a linea, de arriba hacia abajo. Cada linea comienza a la izquierda y termina a la derecha de la pantalla. Cuando una linea se ha completado, debemos enviar un pulso de sincronismo horizontal para que la electrónica del monitor la haga avanzar a la posición siguiente. Cuando todas las lineas que conforman una imagen han sido dibujadas, enviamos un pulso de sincronismo vertical para indicarle al monitor que la imagen (el “cuadro”) está completo y que la próxima linea a dibujar debe estar, nuevamente, en la parte superior de la pantalla. Todo esto se repite decenas de veces por segundo.

La “resolución” de nuestra imagen se mide en píxeles. Decir que tenemos una resolución de “640x480” significa que la imagen se compone de 640 píxeles a lo ancho -o 640 píxeles en cada línea- y 480 lineas por cuadro. Nuestro programa debe ser capaz de enviar al monitor la tensión adecuada en cada una de las lineas analógicas para que cada uno de los píxeles que la componentes tenga el color deseado. Veamos un ejemplo concreto: si queremos mostrar 60 cuadros por segundo, en el modo “VGA Standar” de 525 lineas (de las cuales “vemos” solo 480), disponemos de solo

Tiempo por linea = 1 segundo / 60 cuadros / 525 lineas = 31,75 us.

31,75 milésimas de segundo para dibujar cada linea.  Por razones derivadas del diseño, el trazo de la linea solo es visible durante 25.17 ms. (ver figura 2). En ese lapso de tiempo tenemos que obtener los datos correspondientes a cada píxel y colocar el valor correspondiente a cada linea analógica (R, G, B), una vez para cada píxel. Si pensamos dibujar 640 píxeles, solo tenemos

Tiempo por píxel = 25,17 ms / 640 = 0.039328125us (39,33 ns)

poco más de 39 millonésimas de segundo por cada píxel. No es demasiado, pero si se cuenta con un microcontrolador lo suficientemente rápido, es posible hacerlo.



Figura 2: “Diagramas de tiempos.”

El primer problema que enfrentamos es la generación de los pulsos de sincronismo. Necesitamos un pulso -bajo- de una duración de 3,9 us cada 31,75us., que será nuestro pulso de sincronismo horizontal. Y durante la generación de las últimas dos lineas de la imagen -lineas 524 y 525- necesitamos un pulso -también negativo- que sirva como sincronismo vertical. Victor recomienda utilizar una interrupción para generar el pulso de sincronismo horizontal. Para generar los valores adecuados de tensión en las lineas analógicas correspondientes a los colores rojo, verde y azul, puede utilizarse un esquema como el propuesto en pic24.ru:


Figura 3: “4 pines del PIC bastan para generar el color de cada píxel.”

Tres pines con salidas tipo “open drain” pueden “encender” o “apagar” las lineas correspondientes al rojo, verde y azul. Son 8 combinaciones que proporcionan 8 colores diferentes. El cuarto pin en cuestión (Y) proporciona un rudimentario mecanismo de control de brillo. Cuando esa salida está en nivel bajo, el transistor se cierra y los voltajes presentes en los nodos etiquetados como  VGA-R, VGA-G y VGA-B se modifiquen a través del divisor formado por los resistores y diodos. Victor sugiere utilizar diodos 1N5819 -funcionan perfectamente, como puedes ver en las fotos- pero en las pruebas que hemos realizado pudimos comprobar que incluso un común y modesto 1N4148 sirve. Esto nos permite duplicar la cantidad de colores, ya que disponemos de 8 colores “vivos” y 8 colores “lavados”. En la practica -como se ve en la figura 4- son solo 15, ya que dos de ellos corresponden al negro.


Figura 4: “Tenemos 15 colores diferentes, sin necesidad de conversores DA externos.”


El pin “data”, en la parte superior  de la figura 3, se encarga de encender o apagar cada píxel. Resumiendo, para generar un píxel necesitamos ajustar el valor de los pines R, G, B e Y, y poner el pin “data” en el estado correcto. Si vamos a mostrar solo texto, no necesitamos cambiar el color de cada uno de los píxeles que componen la linea, sino que basta con hacer el cambio cada vez que el trazo del haz de electrones pasa de un carácter a otro. Esto significa que disponemos de un poco más de tiempo para controlar la señal “data”, que es la que en definitiva va a determinar nuestra resolución horizontal. Victor, en el trabajo mencionado, explica todo esto en detalle y proporciona un programa completo (código fuente incluido) que, junto al circuito de la figura 5, permite escribir 30 filas de 30 columnas de texto, con 16 colores posibles para cada carácter, sobre fondo negro, en un monitor VGA estándar.


Figura 5: “Circuito propuesto por Victor Timofeev.”

Los caracteres a mostrar se envían al dispositivo mediante el bus SPI. La velocidad máxima de transmisión de datos es de 250Kbps, y los comandos que acepta son:


Todo esto está implementado en una librería que puede descargarse junto al resto del código fuente, junto a una explicación más detallada de cada comando,  desde aquí.


Figura 6:“Este es el juego de caracteres incluidos. Por supuesto, puede modificarse.”

La figura 6 muestra los 256 caracteres disponibles. La definición de estos caracteres se encuentra en  el archivo font.asm y puede ser modificado para incluir caracteres no contemplados. Las fotografías que ilustran esta nota permiten apreciar la calidad y definición de la imagen obtenida con esta interfaz. Con poco trabajo puede construirse un dispositivo pequeño y flexible que permitirá a nuestros proyectos mostrar texto en cualquier monitor. ¿Te animas a construirla?

Estas son algunas fotografías del que hemos construido en uControl:

 

 
(Descarga las imágenes para verlas más grandes)


El conector VGA
Un conector  "HD-15” -a veces también llamado "RGBHV" o "HD-15"- como el que poseen la mayoría de los monitores VGA posee 15 pines dispuestos en tres hileras de 5 cada una. Es posible que aún haya en funcionamiento algún viejo monitor dotado de una versión anterior del conector actual, con solo 9 pines (llamado "DE-9"), pero el 99% de los monitores VGA que encuentres por ahí tendrán el conector azul de 15 pines que ves en la fotografía.


 “Conector VGA de 15 pines, conocido como “HD-15”


Las letras “HD” hacen referencia a “High Density” (“Alta densidad”), para diferenciarlos de los conectores que tienen el mismo factor de forma, pero sólo 2 filas de pines. Este conector permite transportar las cinco señales básicas que se necesitan para obtener una imagen vertical: los componentes analógicos rojo, verde y azul, y las señales de sincronismo vertical y horizontal.
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: Generador de imagenes de video con PIC
« Respuesta #212 en: 14 de Noviembre de 2010, 19:25:49 »
Va a ser un interesante artículo para la revista, sobre todo si consiguen el permiso del autor para publicarlo. Un saludo Ariel.  :mrgreen:

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Generador de imagenes de video con PIC
« Respuesta #213 en: 15 de Noviembre de 2010, 02:42:53 »
Es realmente impresionante ver lo que ha hecho con un 18F. Gracias por mostrarlo, Ariel.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Generador de imagenes de video con PIC
« Respuesta #214 en: 15 de Noviembre de 2010, 11:15:52 »
Va a ser un interesante artículo para la revista, sobre todo si consiguen el permiso del autor para publicarlo. Un saludo Ariel.  :mrgreen:

Gracias Santiago!
La autorizacion la tenemos, de hecho estamos en contacto con Victor por otros proyectos...tiene un monton de cosas muy interesantes, incluido un @Boulder Dash@ con PIC18 muy jugable (incluye ademas 5 canales de sonido a 15KHz....un maestro el tipo)

Es realmente impresionante ver lo que ha hecho con un 18F. Gracias por mostrarlo, Ariel.

Gracias Manolo!
Anda muy bien. Y lo mejor de todo es la interfaz SPI, se puede usar en cualquier proyecto como "placa de video" :)

Saludos!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado sdel

  • PIC10
  • *
  • Mensajes: 12
Re: Generador de imagenes de video con PIC
« Respuesta #215 en: 19 de Noviembre de 2010, 12:55:18 »
que interesente tema, me quiero poner con todo a montarlo, felicitaciones.

alguien sabe por que no puedo descargar el archivo comprimido del primer post?
aparece como que fue eliminado de rapidshare, gracias.
« Última modificación: 19 de Noviembre de 2010, 12:57:22 por sdel »

Desconectado sdel

  • PIC10
  • *
  • Mensajes: 12
Re: Generador de imagenes de video con PIC
« Respuesta #216 en: 23 de Noviembre de 2010, 19:10:03 »
No puedo descargar el archivo este

http://rapidshare.com/files/146616006/Emulador_de_GLCD_para_video.rar

esta en la primer pagina, lo pueden subir devuelta?

Desconectado flacoclau

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1692
    • El Micro Reactor
Re: Generador de imagenes de video con PIC
« Respuesta #217 en: 23 de Noviembre de 2010, 22:23:48 »
Hola amigo acá te dejo el nuevo link:

Código: [Seleccionar]
h**p://rapidshare.com/files/432754151/Emulador_de_GLCD_para_video.rar
debes corregir donde dice h**p para poder descargar, saludos!!
Las personas con buena ortografía me atraen textualmente.

El Micro Reactor

Córdoba capital - Argentina.

Desconectado Drod

  • PIC16
  • ***
  • Mensajes: 136
Re: Generador de imagenes de video con PIC
« Respuesta #218 en: 26 de Noviembre de 2010, 12:50:15 »
Hola! Habeis visto al proyecto "UZEBOX"???

Es un videojuego opensource basado en ATMEGA. Creo que os podrá ayudar como referencia, las bibliotecas, el firmware, etc, son libres! A ver si alguien lo hace con los PICs!

http://belogic.com/uzebox/

Desconectado flacoclau

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1692
    • El Micro Reactor
Re: Generador de imagenes de video con PIC
« Respuesta #219 en: 26 de Noviembre de 2010, 13:52:00 »
Si está muy bueno!
Y me había olvidado muy bueno lo tuyo Ariel!!
Las personas con buena ortografía me atraen textualmente.

El Micro Reactor

Córdoba capital - Argentina.

Desconectado diegogprs

  • PIC10
  • *
  • Mensajes: 21
Re: Generador de imagenes de video con PIC
« Respuesta #220 en: 27 de Junio de 2011, 21:23:01 »
Buenas. Muy buen proyecto, estube probando el proyecto el de mikrobasic y note que solo me funciona en las tv antiguas, y los modernos sale "sin señal" . Saludos

Desconectado NANO1985

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1698
    • Desarrollos Tecnologicos - Tucuman - Argentina
Re: Generador de imagenes de video con PIC
« Respuesta #221 en: 28 de Junio de 2011, 00:50:49 »
impresionante éste hilo! felicitaciones ariel!  ;-)
"La inquebrantable voluntad de vencer"
"hay dos cosas infinitas... El universo y la Estupidez humana" Albert Einstein
 "El sabio actua sin anhelos, permanece sosegado,... así no es afectado por el resultado de sus acciones sean éstas el triunfo o el fracaso"
- UNIVERSIDAD TECNOLOGICA NACIONAL - FACULTAD REGIONAL TUCUMAN -

Desconectado diegogprs

  • PIC10
  • *
  • Mensajes: 21
Re: Generador de imagenes de video con PIC
« Respuesta #222 en: 04 de Julio de 2011, 02:18:25 »
Buenas . buscando encontre esto http://electronics-home-projects.tripod.com/. lastima que esta en asembler

Desconectado bala de plata

  • PIC10
  • *
  • Mensajes: 1
Re: Generador de imagenes de video con PIC
« Respuesta #223 en: 27 de Mayo de 2014, 01:39:24 »
Hola, He leido todo desde el inicio y esta muy interesante su trabajo y muy buenos los resultados obtenidos, felicito a todos los que participaron en este proyecto.
Yo estoy intentando crear una señal de video con el pic 18f4550, programandolo en lenguaje C con el complilador ccs, por que no se me da bien el assembler con la familia 18f. No pude descargar los archios de los enlases:
http://rapidshare.com/files/146616006/Emulador_de_GLCD_para_video.rar.html
ni tampoco
http://rapidshare.com/files/432754151/Emulador_de_GLCD_para_video.rar.
Podrían volver a subirlos? gracias.

Desconectado jorgenuviola

  • PIC16
  • ***
  • Mensajes: 148
    • rat argentina!!
Re: Generador de imagenes de video con PIC
« Respuesta #224 en: 11 de Junio de 2014, 00:03:15 »
hechad un viztazo a este proyecto. Es interesantisimo!
Es con ATMEGA pero creo que servirá para algo!

http://belogic.com/uzebox/index.asp

Mirad el schematic:

http://belogic.com/uzebox/files/Uzebox-rev-C1.pdf

Está dificil encontrar el AD725 por aqui! Alguien sabe de algun componente para substituirlo?!?!!?

Muchas gracias!

los chinos lo hacen, compre 2 el año pasado y me llegaron la semana pasada, logico ya no puedo comprar mas, en argentina en las casas de electronica no tienen idea de que es el ad725.

el tema es que quiero usarlo sin usar un cristal de pal que no lo consigo.


 

anything