Page 1 of 1

bILDA

Posted: Fri 28 Nov, 2003 9:59 pm
by afrob
Ich habe in diesem Forum ja bereits ein bisschen geblubbert, dass ich eine Laser-Ausgabehardware mit USB-Schnittstelle plane. Mein Projekt macht Fortschritte:

Aus der Idee, einen BILligen DA-Wandler mit ILDA ISP Ausgang zu bauen wurde
Image

Ziel dabei war es, einen DA-Wandler für billigstes Geld zu bauen, den die typischen Schwächen der LPT- oder ISA-Wandler, wie hohe CPU-Last, ungenaues Timing oder Aussetzer bei der Ausgabe nicht plagen. In dieser Version bietet bILDA zwei 8 Bit Kanäle für XY und drei 8 Bit Kanäle für Farben (RGB o.Ä.), wobei die Farbkanäle optional nicht bestückt werden können.

Ich habe bewusst für diese erste Version ausschliesslich günstige, bedrahtete Standardbauteile, die z.B. bei Reichelt erhältlich sind, verwendet. Lediglich der USB-Mikrocontroller ist nur in einem SMD-Gehäuse erhältlich. Evtl. möchte das ja der eine oder andere Freak nachbauen, wenn es denn dann vollständig funktioniert.

Image
Noch ein Foto


Ich war mir nicht sicher ob die Schaltung überhaupt so funktionieren würde wie ich mir das vorstellte. Ob das Timing funktioniert und die Latenzzeiten/Puffergrössen auf beiden Seiten der USB-Leitung ausreichen lässt sich schwer vorhersagen.

Dummerweise habe ich Prompt den falschen IC bestellt, der AN2131SC ist zwar pinkompatibel, beherrscht aber keine fast transfers, die für eine schnelle Ausgabe zu den DA-Wandlern nötig sind und worauf die Schaltung auch optimiert ist. Der AN2135SC wäre richtig gewesen.

Image

Nun ja, ich habe nicht gleich den Kopf in den Sand gesteckt und mal ein bisschen probiert.
Schnell eine kleine Firmware gestrickt, ein Linux Kernelmodul und einen ILDA-Player zusammengepfriemelt und siehe da, der erste Test scannte mir mit 60kpps entgegen. Allerdings nur mit dem X und Y Kanal, werden alle Kanäle bedient würde die Geschwindigkeit unter 30kpps fallen. Da der oben gennante BUG die Ausgabegeschwindigkeit um das 5-10fache senkt, bin ich zuversichtlich, dass diese Hardware mit dem richtigen IC und guter Firmware meine angepeilten 50kpps kontinuierlich und ohne Aussetzer schaffen wird. Die CPU-Last lag bei diesem Test mit 60kpps auf meinem 2,4GHz Athlon bei weniger 2% (der ILDA-Player ist so miserabel programmiert :)).

Image

Noch ein Paar (unscharfe) Bilder vom Oszi:
Bild1
Bild2 (Die Gento-Erde [TM] ; Danke Gento!)

Noch ist das ganze in einer sehr frühen experimentellen Phase, hat viele Fehler und funktioniert nicht richtig. Wenn das ganze die gewünschte Funktionalität erreicht hat werde ich Schaltplan, Platinenlayout, Firmware, Kernelmodul und ILDA-Player als Open Source Projekt veröffentlichen.

PS: Der Prototyp kann morgen bei Laserfred beäugt werden. :) Allerdings nicht in Betrieb. :(

Posted: Fri 28 Nov, 2003 11:15 pm
by tracky
Sieht aber schon mal sehr viel versprechend aus. Respekt! Aber das "Problem" 8bit am parallelen ist leider in der Grafik sichtbar. So gesehen ist es wohl ein Manko, mit dem man leben muß und kann, wenn das Geld für ne große Karte ala Pango, oder Ryja nicht vorhanden ist.Aber dennoch hast Du auf jeden Fall meine Neugier geweckt. Vor allen der schnelle Datentransfer und die geringe CPU Last sprechen schon mal klare Worte. Mit welcher Software willst Du das ganze mal betreiben? Ein Ildaplayer ist ja sicherlich nur ein Anfang, ein Editor so in Richtung Anarchy mit Ausgabe sicherlich das "I" tüpelchen.

Posted: Sat 29 Nov, 2003 12:23 pm
by afrob
Tracky wrote:Sieht aber schon mal sehr viel versprechend aus. Respekt!
Thx!
Tracky wrote:Aber das "Problem" 8bit am parallelen ist leider in der Grafik sichtbar. So gesehen ist es wohl ein Manko, mit dem man leben muß und kann, wenn das Geld für ne große Karte ala Pango, oder Riya nicht vorhanden ist.
8 Bit für XY sind in der Tat ein bisschen wenig. Ich habe mir viele DA-Wandler angesehen und festgestellt, dass 12-Bit Wandler, die auch 12-Bit Genauigkeit bringen, den Preis der Schaltung verdoppelt hätten und auch längst nicht so einfach zu bekommen sind (den Maxim-Musterservice betrachte ich nicht als legitime Quelle ;)). Es sollte ja schliesslich ein billiger DA-Wandler aus Standardbauteilen werden.
Tracky wrote:Mit welcher Software willst Du das ganze mal betreiben? Ein Ildaplayer ist ja sicherlich nur ein Anfang, ein Editor so in Richtung Anarchy mit Ausgabe sicherlich das "I" tüpelchen.
Naja, eigentlich wollte ich mich darum drücken einen ganzen Editor zu schreiben. Ich dachte eher an eine Schnittstelle zu einem 3D-Programm oder Autotrace. Ein kleines KDE-Programm mit OpenGL-Vorschau zum abspielen fertiger Laserfiles ist erstmal das vorrangige Projekt.

Posted: Sun 30 Nov, 2003 11:37 am
by lightwave
Wow, schaut ja super aus!

Wie wärs, Popelscan als Dateinenquellle mit zu verwenden?

Posted: Sun 30 Nov, 2003 12:07 pm
by Ironman
Meinlieberherrgesangverein ,
Afrob , das sieht wirklich sehr gut aus , Respekt ,
mach bitte weiter ;-) .
Kann es sein das Du Linux benutzt ? Würde es dann auch
mit Windoof funktionieren ?
Grüße
Hartmut

Posted: Sun 30 Nov, 2003 11:23 pm
by pangolinlaser
Hi Afrob,

Interesting approach. I have a few questions.

Do you know how to program the equivalent of DLLs with Linux? This is just a question for my own curiousity...

Second, does this system have "simultaneous sampling" for all channels (i.e. X, Y, R, G and B all update their output at the same time)?

Third, what happens if the system gets busy with the disk drive (i.e. you go into Microsoft Word and load a file, etc.)?

That's about all for now...

Bill

Posted: Mon 01 Dec, 2003 8:27 pm
by afrob
@Bill:
Hi Bill!
pangolinlaser wrote:Do you know how to program the equivalent of DLLs with Linux? This is just a question for my own curiousity...
Yes. The equivalent to DLLs in Linux are the .so files which are processed by the dynamic loader/linker ld.so or ld-linux.so. libtool provides a nice interface for shared library programming.
But it is traditionally popular on unix/linux operating systems to offer services or communication to other programs not through shared libraries but through client/server architecture using unix domain sockets or tcp/ip sockets (which also work over network connections).
pangolinlaser wrote:Second, does this system have "simultaneous sampling" for all channels (i.e. X, Y, R, G and B all update their output at the same time)?
Yes, all DACs update their outputs simultaneously. And as the microcontroller takes care of all the timing there is almost no jitter.
pangolinlaser wrote:Third, what happens if the system gets busy with the disk drive (i.e. you go into Microsoft Word and load a file, etc.)?
I find this question hard to answer; this is not the last reason why I chose to build this cheap DAC unit first, without having to pay for multilayer PCBs or expensive precision DACs just to discover that it doesn't work as I expected. :) The results so far look promising.

It is possible to integrate a ring buffer into the linux kernel driver or WDM driver that will buffer up to seconds of output data (at the cost of latency). As the driver which feeds the USB cable from the PC side runs in kernel space (or on the windows side: the corresponding function in the WDM device driver runs at a IRQL higher then DISPATCH_LEVEL) it is not interruptible by ordinary user programs.

You can quite easily verify whether USB streaming works fast enough: Just connect two usb soundcards to your pc and play back two cd quality audio streams. If you don't hear dropouts it is fast enough, as the data rate is nearly equal to that of laser output and the same transfer mechanisms are used. And since there are even video interfaces available off the shelf that stream uncompressed tv images in full resolution over USB, I really believe that it is possible to make it work.

I already have the schematic for a USB 2.0 (480Mbps) version with 12Bit XY and 4-8 color channels ready; if this simple circuit proves to work as I expect, i.e. rock-solid scanning output without any dropouts, I'm going to build some of these. But I won´t give this one away for free ;).

@ironman:
Thx! Ja, ich benutze eigentlich ausschliessliche Linux. Normalerweise schreibe ich Windows-Gerätetreiber nur gegen Schmerzensgeld ;). Na mal sehen...

@lightwave:
Thx! Mal sehen was Guido dazu sagt...

@Guido:
Was sagst du denn dazu? Würdest du Popelscan um USB-Unterstützung erweitern wenn ich einen Windows-Treiber schreibe?

BILDA

Posted: Mon 01 Dec, 2003 10:31 pm
by amd
Hallo Afrob,
echter Wahnsinn.
Zum Thema Software könnten wir doch vieleicht eine gemeinschafts opensource Entwicklung machen. Als Sprache bietet sich wohl Delphi an, also falls Interesse besteht sollten sich doch einfach mal alle interessierten Delphi Hacker hier melden?

Ciao Andi

ps. Meld mich als Delphi Hacker *g*

Posted: Tue 02 Dec, 2003 7:07 am
by guido
hi,

kuck ich mir gern mal an, aber bitte nicht mehr in popelscan. Für die Mots ist das ausgereizt und durch seine ewigen erweiterungen auch schon etwas "ver-programmiert"
Kommt aber gegen Weihnachten ein Geschenk von mir. Ein ILDA Player de nun schon 50K macht mit 8 Bit Farbausgabe über den selben LPT

Posted: Tue 02 Dec, 2003 9:18 am
by alexs
Wirklich eine sehr schoene Sache! Ich hatte ja gegen 3 in der Frueh aufm Freaktreffen einen Blick drauf geworfen, aber war nicht mehr ganz wach ;-)
Wie Du schon richtig sagst: 12 Bit DAs sind nicht billig.
Hast Du auch das Blankingbit beschaltet? (doofe Frage, eigentlich)
Wenn Du schon dabei bist, dann wuerde ich einen DMX Port sehr gut finden - liegt ja bei mir auf der Hand. Falls Du dazu Infos brauchst dann koenne wir gerne mal quatschen.
Soweit aber erst mal SEHR GUT, WEITERMACHEN ! ;-)

Gruesse, Alex.

Posted: Tue 02 Dec, 2003 3:03 pm
by gento
hmm ...
4 x 12 bit DA kosten keine 10 Eur in einem Gehäuse ... teuer neeee :roll:

Gento

Posted: Tue 02 Dec, 2003 4:14 pm
by tracky
Ja, als PCI Variante bestimmt, aber nicht als USB! Oder täusch ich mich da!?

Posted: Tue 02 Dec, 2003 4:43 pm
by afrob
@amd:
Opensource lebt vom mitmachen, also Thx! Ich als Linux-Programmierer werde wohl weiterhin bei C/C++ bleiben, da sich einige Sachen (Kerneltreiber, OpenGL, etc.) nur damit bewerkstelligen lassen. Der C-Compiler liegt jedem Linux-System kostenlos bei, während Delphi nicht frei verfügbar ist. Die Schnittstellen werden sich aber wahrscheinlich auch mit Delphi ansprechen lassen. Kenne mich mit Delphi nicht so aus :roll:.

@Guido:
Da bin ich mal auf Weihnachten gespannt :).

@alexandersamuel:
Thx! Meinst du mit "Blankingbit" jetzt das Intensity-Signal oder den Shutter-Ausgang?
Den Intensity-Ausgang habe ich einfach parallel zum Rot-Ausgang angeschlossen, damit einfarbige Systeme auch Ihren Dienst tun.
Das Shutter-Signal, das auch die gelbe LED anzeigt, wird vom Mikrocontroller gesteuert. Stockt die Ausgabe für mehr als 3 USB Frames (=3ms) wird der Shutter automatisch geschlossen.
An DMX wollte ich mich auch demnächst mal machen :).

@Gento:
Du willst mir doch bestimmt gleich mal verraten wo es 4x12 Bit für <10 Euro zu kaufen gibt? :) Bei den DAC7624/5 liegt zwar der Listenpreis bei 1KU knapp unter 10 Euro, die sind aber als Einzelstück nicht unter 25 Euro zu bekommen, außerdem sind die Teile im DIP-Gehäuse abgekündigt. Das 12 Bit parallele Interface passt hier auch nicht.

Posted: Tue 02 Dec, 2003 5:25 pm
by gento
für 10 Stck DAC7624PB zahlte ich 265 DM :cry:

Neumüller Oberhaching wars

Gento

Posted: Wed 03 Dec, 2003 9:47 am
by alexs
Moinsen,
ich meinte den Intensity Ausgang ( das Wort "Bit" war nicht so schlau...;-)
Intensity + auf ILDA Pin 3 und Intensity - auf ILDA Pin 16. Hast Du die Ausgaenge symmetrisch ausgelegt?
Das mit dem Shutter finde ich gut!

Gruesse, Alex.

Posted: Wed 03 Dec, 2003 3:29 pm
by gento
Hi Afrog ,
afrob wrote: @Gento:
Das 12 Bit parallele Interface passt hier auch nicht.
Ich bin mir sicher das geht ohne Prob's , sind doch genügend Adr's da :wink:
nur ob dann konstant, sowie genügend 00110 rüberhuschen :( da sind eher Grenzen.

Gento

Posted: Wed 03 Dec, 2003 7:53 pm
by afrob
@alexandersamuel:
Der Intensity Ausgang ist, wie bereits geschrieben, mit dem Ausgang für Rot verbunden. Ich interpretiere die Spezifikation so, dass ein Projektor entweder
Intensity oder RGB[+User1+...+User4] benutzt. Dieser Trick sollte also weder einfarbige noch mehrfarbige Systeme stören.
Alle Ausgänge sind symmetrisch und die Pegel entsprechen der ILDA-Empfehlung, beim Farb- und Intensitykanal also +2.5V bzw. -2.5V für 100%, 0V für 0%.

@Gento:
Dazu müsste ich vor den DAC noch zwei Latches montieren und bräuchte zusätzliche Steuersignale. Keine schöne Lösung, zumal es 12 Bit DACs mit 8 Bit breitem Eingang fertig zu kaufen gibt. Der AN2135 ist ein komisches hochgezüchtetes Ding: das Teil kann mit einem einzigen Befehl ein byte aus dem USB-Puffer holen, einen Pointer inkrementieren und das Byte mit WR-Signal auf dem Datenbus ausgeben. Alles andere dauert 8051-typisch ewig, daher würde so eine Lösung einiges an Performance kosten.

Posted: Wed 03 Dec, 2003 9:01 pm
by gento
afrob wrote: @Gento:
Dazu müsste ich vor den DAC noch zwei Latches montieren und bräuchte zusätzliche Steuersignale. Keine schöne Lösung, zumal es 12 Bit DACs mit 8 Bit breitem Eingang fertig zu kaufen gibt. Der AN2135 ist ein komisches hochgezüchtetes Ding: das Teil kann mit einem einzigen Befehl ein byte aus dem USB-Puffer holen, einen Pointer inkrementieren und das Byte mit WR-Signal auf dem Datenbus ausgeben. Alles andere dauert 8051-typisch ewig, daher würde so eine Lösung einiges an Performance kosten.
wie ich meine karte baute ... erstaunlich fand ich das die DA's 4x8 Bit für Colors erheblich teuer sind wie 4x12 Bit DA's
drum verbaute ich für RGB 12 bit Wandler statt 8 dessen

je ic ersparniss gibt es eine stange latches

:roll:

Gento

BILDA unter Windoof

Posted: Thu 04 Dec, 2003 11:22 am
by guido
Hi,

hab ja von Linux gaaakeine Ahnung. Aber ein Bekannter meinte das Ausgabemässig unter Linus sachen gehen ( "File = USB" ) die unter Windows einfach nicht möglich sind.
Die USB Sachen die ich bis jetzt unter Windoof habe setzen auf den HID oder Firmentreibern auf und waren wegen der USB-Paketbilderei beim Übertragen zu lahm.

Ich nehme mal an das du vom Cypress aus die Daten expliziet "abholen" lässt und der auch das Timing = die Anzahl der punkte pro Sekunde managt. Also in Richtung Ringbuffer. Wenn dem so ist, wird das unter Windows wohl nicht so einfach klappen denke ich..oder komme schlicht und ergreifen nicht drauf.

Da ich meine Ausgabe ja PC-Seitig irgendwie künstlich ausbremsen muss (per For /Next Schleife da Timer im 20ys Bereich einfach nicht funktionieren) um geschwindigkeitsmässig runterzukommen hab ich ja blöderweise die 100% Systemlast.

Posted: Thu 04 Dec, 2003 9:59 pm
by hhansen6
hmmm.. hört sich gut an !
gäbe es ne möglichkeit die sache nicht in ner art von Client Server wie bei LDS aufzubauen ??? Um am Client den leerlaufprozess zu entlasten ???

Posted: Thu 04 Dec, 2003 11:01 pm
by john
hhansen6 wrote:gäbe es ne möglichkeit die sache nicht in ner art von Client Server wie bei LDS aufzubauen ??? Um am Client den leerlaufprozess zu entlasten ???
Was ist das für ein Unsinn? Lies dir doch bitte afrobs ersten Beitrag durch. Gentos Erde mit 60kpps bei 2% Prozessorauslastung bei einem 2,4GHz Rechner. Was willst du da "entlasten"? Etwa den Leerlaufprozess, wie du vorschlägst?

[ ] du weißt, wozu ein Leerlaufprozess gebraucht wird, du Betriebssystemgenie ;-)

John

Re: BILDA unter Windoof

Posted: Sat 06 Dec, 2003 12:22 am
by afrob
@Guido:
Linux ist kein Allheilmittel, auch wenn Leute wie ich das manchmal gerne so darstellen wollen. :D ;) Linux ist IMHO netter zu programmieren; einige Eigenschaften von Linux/Unix möchte man nicht mehr missen wenn man sie erstmal kennen gelernt hat, z.B. auch das "alles ist Datei"-Konzept.

Bei bILDA übernimmt die Firmware des AN2131 das Timing. Der AN2131 hat auch einen Pufferspeicher, der gross genug ist die Zeit zwischen den USB-Frames zu überbrücken.

Ich habe lange überlegt, ob sich so ein konstantes Timing nicht auch mit dem Parallelport erreichen läßt, aber jeder Ansatz, der mir eingefallen ist, war in etwa genau so komplex wie diese Schaltung mit USB-Schnittstelle.
Es ist auch unter Windows möglich genaueres Timing zu erzielen, ohne Hardwaretimer allerdings nur mit höherer CPU-Last und in einem Gerätetreiber. Kombiniert mit der hohen Zugriffszeit des Parallelports (outb dauert 1uS) gehen dann selbst schnelle Systeme in die Knie...

@hhansen6:
Die CPU-Last durch bILDA ist schon jetzt ziemlich gering. Eine Client/Server Architektur wäre dennoch nicht schlecht, könnte man doch die Projektoren über Ethernet fernsteuern. Welcher Netzwerkprogrammierer meldet sich freiwillig? ;)

Posted: Mon 05 Jan, 2004 12:13 am
by afrob
So, ich habe jetzt mal die erste Version der Hardware-Pläne hochgeladen

http://www.linux-laser.org/bilda/bilda-hw.php4?lang=de

Die Software braucht noch ein Weilchen.

Posted: Wed 07 Jan, 2004 8:55 pm
by afrob
Nun gibt es auch eine Mailingsliste für Leute, die sich an der Entwicklung einer Open Source Lasershow Software (nicht notwendigerweise auf bILDA beschränkt) beteiligen wollen:

Anmelden: bilda-devel-subscribe@linux-laser.org
Posten: bilda-devel@linux-laser.org
Abmelden: bilda-devel-unsubscribe@linux-laser.org