Beiträge von tklosa im Thema „BitBangCCD Eigenbauprojekt vorgestellt“

    Das Wochenende war recht produktiv, was die Firmware für die Kamera anging. Für das erste Bild hatte ich noch alles der Reihe nach programmiert und auch die Belichtungszeit war eine einfache delay-loop. Um flüssig mit dem AstroArt Treiber zusammen zu arbeiten geht das so nicht mehr. Keine Aufgabe darf den Controller mehr als 50..100ms am Stück blockieren. Der Controller muß ständig an den einzelnen Schauplätzen vorbei kommen und sehen ob irgendwo was zu tun ist. Dadurch läuft die Kommunikation und die Bedienung des Sensors und des Shutters quasi parallel.
    Um dabei einen klaren Zeitbezug zu behalten mußte auch ein entsprechender Timer und eine Uhr entstehen. Ein 32kHz Uhrenquarz ist auf der Platine mit drauf. Die Uhr läuft nun mit JulianDate und muß vom PC anfangs mit der richtigen Zeit versorgt werden.
    Da ich den Shutter nicht sehr schnell steuern kann lasse ich den Timer 8 mal pro Sekunde einen interrupt auslösen. Damit lassen sich dann Belichtungszeiten von n*1/8 sec. erzeugen. Mal sehen ob das reicht. Für kürzere Belichtungen müßte ich an der Hardware was ändern.
    Mit dem Timer als Basis kann nun als nächstes eine StateMachine für die Belichtungssteuerung entstehen. Die Funktionen zum auslesen des Sensors muß ich noch dahingehend ändern, daß immer mal wieder Pausen für die Kommunikation eingelegt werden. Das bedeutet das Bild in ~20 Blöcken zu lesen. Ich hoffe das ist nachher im Bild nicht zu sehen. Bisher wurde das Auslesen auch immer mal vom USB Interrupt unterbrochen ohne das ich im Bild sofort etwas gesehen hatte.
    Danach noch die Funktionen zur Übertragung des Bildes und dann wird's spannend [:D]

    Hallo Thomas,


    dir auch ein gesundes 2015 mit klaren Beobachtungsnächten. Danke für den Zuspruch. Meine Motivation generiert sich überwiegend aus dem was ich innerhalb des Projekts so lernen konnte.


    Zu der Frage des Timings ist es eigendlich eher so, daß es für einen bestimmten Typ eine maximale Geschwindigkeit gibt, mit der man den Sensor takten kann um die Ladungen auch sauber von Zelle zu Zelle zu transportieren. Diese maximale Taktrate gibt der Hersteller auch im Datenblatt an. Bis zu diesem Tempolimit garantiert der Hersteller die Eigenschaften im Datenblatt. Wenn man schneller sein will spielen dann Exemplarstreuungen, Temperatur und Spannung sicher eine nicht zu vernachlässigende Rolle.
    Ich bin mit dem ARM controller deutlich langsamer. Da der AD-Wandler im Controller maximal 1M-Sample kann brauche ich insgesamt 2..3 Sekunden um das volle Bild vom Chip zu lesen. Zum Focus einstellen will ich dann Teilbereiche lesen. Das geht dann deutlich schneller da nur die Pixel durch den AD-Wandler müssen die man auch sehen will. AstroArt unterstützt auch solche Subframes.


    Über die Feiertage konnte ich das Problem mit dem Öffnen des COM ports von der DLL aus lösen. Nun bin ich da im Lösungsmode und es entsteht wieder Programmcode. AstroArt verbindet sich nun mit der Kamera und schickt schon mal ein Kommando zum Starten einer Belichtung raus. Nächster Schritt ist nun die Kamera darauf entsprechend reagieren zu lassen.


    Wer sich mit der Programmierung nicht beschäftigen mag kann jetzt aufhören mit Lesen.
    Ich hatte Kontakt mit Fabio vom ArtroArt Team. Mir ging es darum ob man in der treiber DLL lieber die 'managed class' Bibliothek aus .net verwenden sollte oder das alte win API. Er meinte, daß man bei AA bisher in den DLL's keinen managed code verwendet hat. Es sollte aber gehen da die dllmain nicht benötigt wird. Let me know if it works, war seine Antwort. Das Interface zwischen managed und unmanaged code sieht sehr kryptisch aus und mir ist auch nicht wirklich klar, wie ich in einer DLL den ersten Wurzelzeiger für managed code erzeugen und verwalten muß. Daher habe ich mich dann doch für das alte winAPI entschieden. Ich hoffe das funktioniert noch eine Weile.


    Je nach dem wie viel Zeit ich habe könnte in 2..3 Wochen vielleicht das erste Bild in AstroArt zu sehen sein.


    Viele Grüße, Thomas.

    Da es im Netz unter dem Stichwort myCCDcam schon eine Software für USB-Kameras gibt habe ich das Projekt in BitBangCCD umbenannt.


    Bei Mikrokontrollern ist der Begriff des Bit Banging für eine Art der Steuerung gebräuchlich, bei der die nötigen Signale von der Software aus über IO-Befehle bedient werden. Genau das passiert hier beim Auslesen des CCD Sensors.

    Hallo zusammen,


    ein kurzes Update vor Weihnachten. Diverse Arbeiten an meiner gebraucht erworbenen Montage haben mich auch etwas abgehalten. Dennoch ist schon mal eine Protokollbeschreibung für die USB-Schnittstelle entstanden, in der Camerafirmware sind der Kommandosatz implementiert und die ersten Kommandos sollten auch Daten zurückliefern. Leider kann ich erst beginnen das zu testen wenn auch der AstroArt-Treiber soweit ist. Dort ärgere ich mich momentan noch mit der Instanziierung der SerialPort Klasse von der Treiber DLL aus herum.


    Für die Software habe ich bei BitBucket ein geschlossenes Repository angelegt. Leider kann ich das nicht so ohne weiteres unter eine OpenSource Lizenz stellen und öffenen da die Firmware große Teile der ASF-Bibliothek von ATMEL nutzt welche nicht OpenSource ist. Man kann aber bis zu 5 Leute dahin einladen.


    Ich hoffe der Treiber beginnt über die Feiertage zu leben.
    Allen Sternfreunden wünsche ich über die Feiertage viel Zeit für die Bauprojekte und gutes Wetter zum Beobachten.
    In diesem Sinne ein frohes Fest und guten Rutsch in ein gesundes 2015.

    Wird etwas dauern bis ich hier wieder was berichten kann. Bin dabei die Schnittstelle zwischen PC und Kamera komplett neu zu programmieren. Das Kommandointerface, welches ich für die erste Inbetriebnahme gebaut hatte eignet sich nicht so gut für die Zusammenarbeit mit Programmen wie AstroArt. Auf der PC-Seite muß auch der Treiber entstehen. Das wird auch etwas dauern da ich seit Ende der 90er keine Software mehr für Windows geschrieben habe. Dort hat sich doch einiges getan.


    ;)

    Da sich die Megaplus 1.4i aufgrund des anderen Sensorboards nicht einfach so anschließen läßt habe ich noch eine 1.4 ersteigert ($0.99 + 25EUR Versand aus USA). Diese hat auch wieder einen Shutter und ist mit einem T-Mount (M42 m. 0.75mm Steigung) versehen. Darauf sitzt ein Optikanschluß den ich nicht kenne:



    Offenbar hat Kodak viele Versionen gebaut. Im Vergleich zur C-Mount Variante wurden innen lange Spacer verbaut, die die längere Distanz zum Sensor realisieren.
    Für den späteren Astroeinsatz mit Filterrad und evtl OA Guider wird man den Sensor eher so dicht wie möglich an der Front montieren wollen.
    Auf jeden Fall macht alles einen sehr modularen Eindruck, was für die Bastelei sehr günstig ist.
    Das Sensorboard ist auf 3 Federn gelagert, was eine sehr leichte Justage der Lage des Sensors ermöglicht.

    Am Wochenende habe ich mal angeschaut was man an Software auf der PC-Seite nehmen könnte und was die käuflichen Kameras so bieten und verwenden.


    Mein Favourit ist im Moment AstroArt, und das aus folgenden Gründen:
    <li> Man braucht nur eine Treiber-DLL mit recht übersichtlichem Befehlsumfang </li>
    <li> Ein Beispiel für die DLL ist in Form eines SDK schon vorhanden </li>
    <li> Die Funktionen sind nicht so weit weg von dem was ich bisher schon in der Kamera laufen habe </li>
    <li> Es gibt eine zeitlich nicht begrenzte Demoversion mit der man in Ruhe entwickeln kann und der Preis der Software danach geht auch </li>


    Vielleicht kann jemand aus dem Forum der mit Astroart arbeitet oder nicht mehr damit arbeitet kommentieren ob die Entscheidung sinnvoll ist?


    Zweite Frage ist die ob man ASCOM implementiert und damit vielleicht universeller ist oder ob es reicht einen direkten DLL-Treiber für Astroart zu schreiben?


    Wer verwendet denn alles ASCOM? Auf mich wirkte das immer etwas sperrig. Ist aber rein subjektiv...

    Zur Performance des ARM controlers ist vielleicht noch interessant, daß man mit der Software bei 96MHz CPU-Takt immerhin 11MHz Pixeltakt erreichen kann. Allerdings nur in Schiebeoperation, ohne Messen der Helligkeit der Pixel. Das ist recht wichtig wenn man den Sensor vor der Belichtung löschen will. Laut Datenblatt ist der Sensor für typisch 10MHz, maximal 15MHz spezifiziert.


    Der ADC im Controller kann maximal 1M sample pro sec. Wie dicht man da herankommt habe ich aber noch nicht untersucht.

    Mit den in der Kamera vorhandenen Metallteilen habe ich nun die neue Elektronik erstmal provisorisch auf der hinteren Aluplatte montiert:



    Damit passt alles wieder in das Gehäuse und ich hoffe alles mit einem Okularadapter, der bei meiner ersten Kamera dabei war aufs Teleskop montiert zu bekommen. Unsicherheit ist momentan die Lage des Fokuspunkts. Aber ich hoffe zum HTT die ersten Bilder schießen zu können.


    Der Betrieb mit geöffnetem Gehäuse ist auch schwierig da der Sensor selbst in relativ dunklen Räumen schnell viel Fremdlicht aufsammelt.


    In der Software bin ich dabei eine Funktion zu schreiben die mir einen beliebigen 100x100 Pixel Bereich relativ schnell darstellt. Damit sollte sich dann das Fokussieren und die Justage des Sensors erledigen lassen.

    Heute sind die 3 Stk. 1.4i Kameras aus Polen eingetroffen. Inkl. Versand war der Preis bei reichlich 60 Euro pro Stk. da ich gleich alle drei genommen habe.
    Habe erst eine ausgepackt und analysiert. Bekannt war, daß die äußere Ansteuerung anders ist. Mir geht es aber nur um die Sensorbaugruppe, also hilft nur ein Probekauf, ob sich sie 1.4i auch eignet.
    Gute Nachricht, die eine, die ich bisher analysiert habe hatte einen mechanischen Shutter und er hat auch die gleiche Spulen, wird sich also genauso steuern lassen.
    Ernüchterung zunächst, der Sensor sitzt auf einem weiterentwickelten Treiberboard:



    Außerdem ist der Anschluß von 2 100mil auf einen 50mil Stecker geändert worden. Der 50Ohm Anschluß für das Bildsignal ist geblieben. Hier mal 2 Bilder der Sensorplatine ohne Sensor:




    Nach dem ersten Überblick enth. die neue Treiberplatine die gleichen Funktionsgruppen wie die alte. Alles mit etwas neueren Bauelementen und nur noch in SMD-Technik. Es gibt gute Chancen, das man die Platine auch einfach mit einem anderen Kabel anschließen kann. Genaues weiß ich erst wenn ich den Schaltplan zusammen habe. Das wird ein paar Tage dauern.


    Ebenfalls andes ist die Lage des Sensors, nun nicht mehr in der Mitte der Frontplatte. Dadurch kann man bei diesem Modell den Kühler eventuell besser anbringen. Für das Objektiv ist diesmal ein Baionettverschluß vorhanden. Ich kann den Anschluß momentan noch nicht zuordnen:



    Gut sichtbar auch wieder der IR-Filter.

    Als nächstes habe ich mal versucht den Schaltplan des Sensortreibers hochzuladen.



    Zentral der Sensor, auf 10Uhr davon die Vertikaltreiber (V1/V2) zum senkrechten schieben der ganzen Zeilen.


    Senkrecht darunter mit den Transistoren die Horizontaltreiber (H1/H2) zum heraustakten der einzelnen Pixel aus der Lesezeile.


    Auf 8Uhr das Gatter zum Erzeugen des Resetsignals (R). Damit wird die Ausgabezelle gelöscht bevor man das nächste Pixel hineinschiebt.


    Rechts der Emitterfolger und ein Leitungstreiber für ein Koaxkabel mit 50Ohm. Über die Verstärkung dieses Treibers kann man das Ausgangssignal gut an den AD-Wandler anpassen.


    Kodak hat die Platine offenbar mit weniger als +/-15V betrieben. Daher habe ich einige Widerstände angepasst um bei allen Spannungen in den Bereich des Datenblattes zu kommen. Diese Widerstände sind orange eingefärbt.


    Zur besseren Lesbarkeit habe ich die Datei noch mal hier abgelegt:
    https://app.box.com/s/dwollt1gb1jafxbkr4dy

    Die andere Seite mit dem Speicher. An dieser Platte habe ich alles in Betrieb genommen. Daher auch noch diverse Messanschlüsse am RAM um das timing des Memorycontrollers zu überprüfen und richtig einzustellen.



    Unten rechts fehlen hier auch noch die Transistoren zur Steuerung des mechanischen Shutters.


    Was neben dem originalen Sensorboard noch nötig war ist eigendlich recht überschaubar.

    Das Controllerboard:



    Unten rechts die Stiftleiste für die Sensoransteuerung. Davor ist noch ein 74ABT um 5V TTL für das Sensorboard zu liefern.


    X3 ist für eine wetterfeste USB-Buchse


    Oben neben dem SMA die Signalkonditionierung für die differentielle ADC-Ansteuerung. Man sieht die 2 Leitungen direkt zum Controller gehen.


    Es sind noch viele IO's frei. Im Prinzip könnte man auch noch ein Display anbauen.

    Meine Stromversorgung (der Schaltwandler für +/-15V ist nicht bestückt):



    Der 9...18V Eingang ist galvanisch getrennt um Erdschleifen im Setup zu minimieren. Ein Schutz gegen Überspannung und Verpolung ist mit Varistor, Thermofuse und Z-Dioden realisiert.

    Hier mal ein Foto der Originalelektronik aus der Kamera, die nun übrig ist:



    Ich hatte ursprünglich gehofft, daß der AD-Wandler sich in der Kamera befindet. Da fand sich aber nur eine Sample&Hold Stufe, Steuerung zum Auslesen und Stromversorgung. Realisiert war das mit einem 8bit Controller und einem FPGA.

    Ach ja, vielleicht kann ja aus der Programmierergemeinde jemand ein effizientes Programmiersystem empfehlen. Momentan nehme ich LabWindows CVI. Damit bringe ich schnell was zustande, ist aber aufgrund des Preises für ein Internet Projekt nicht wirklich geeignet. Meine alte Version von 2003 hakelt mit den neuen Windows-Versionen auch manchmal etwas. Aber immerhin zeugt es von Qualität, daß es immer noch läuft. Ich hatte schon mal mit dem Vertrieb geredet, aber Hobbyastronomie ist noch keine hinreichende Forschung die den Rabatt rechtfertigt.


    Was wird gebraucht:
    - Windows oder multiplatform Applikation mit Menüsystem
    - Zugriff auf virtuelle COM ports oder DLL basierte Treiber für das Kamerainterface
    - schnelles Zeichnen von Punktgrafiken


    Habe auch noch nicht nachgesehen, was andere so machen oder ob man vielleicht ein anderes System nehmen kann, für das man dann "nur" eine Extension oder einen Kameratreiber schreiben muß.

    Hallo Ullrich,


    ja, den polnischen Anbieter hatte ich neulich angeschrieben, da lag der Preis noch bei ~110,- Euro. Auf der Kamera war vorn ein schwarzer Metallring montiert und die Fotos gaben dann nicht wirklich viel her. Vermute ein Ringlicht oder so. Er meinte, das gehört nicht dazu und er weiß auch nicht was es ist. Heute komplett andere Fotos und den Kamerakopf zum Neupreis des Komplettsystems von vor 20 Jahren. Das is schon lustig.
    Ich habe bisher 2 Kameraköpfe ersteigert, beide unter 100 Euro aus USA und Kanada. Immer ohne Controlunit, einer hat leider keinen mechanischen Shutter. Offenbar war der optional.


    Bin eher neu hier und nicht sicher ob das Thema zu exotisch ist. Falls nein könnte ich weiter Informationen zu den Leiterplatten und Schaltplänen einstellen.


    Die Schaltung die Kodak damals zum Treiben des CCD entwickelt hatte ist so schnell und kräftig, daß man damit sicher auch andere oder größere Sensoren treiben kann. Die Spannungen lassen sich recht gut einstellen. Manchmal muß man auch einzelne Widerstände ändern.


    Gruß, Thomas.

    <b>First Light!</b>


    Nach Aha-Effekten mit der Software und diversen Justagearbeiten ergab sich letzte Nacht das erste Bild, auf dem etwas erkennbar ist. Mein Werkstattbesen hatte die Ehre für dieses Foto Modell zu stehen.



    Nach weiteren Arbeiten in der Software und der Konfiguration des AD-Wandlers habe ich ihn dann abgelöst.



    Nun muß ich den Meßbereich des AD-Wandlers noch auf den Empfindlichkeitsbereich des Sensors abstimmen. Dann weiter mit den Funktionen zur Belichtungssteuerung und Schwarzaufnahme.

    Hier mal noch ein paar genauere technische Daten:


    Sensor: Kodak KAF1401 SW mit 1320x1035 pixel; 6.8um


    ADC: im Miktokontroller integriert, 12bit, ~1M sample


    Analogeingang: 50Ohm, ADC wird differentiell getrieben


    Mikrokontroler: ATMEL SAM4E (Cortex M4) mit 96MHz
    512kByte Flash (Programmcode momentan 5% gefüllt)
    128kByte SRAM intern (momentan 12% genutzt)
    8MByte SRAM extern (3 full frame Bilder bei 16bit Auflösung)
    SD-Karten Interface (bisher von meiner Software nicht unterstützt)
    Interne Uhr mit 32kHz Quarz


    Stromversorgung: Separates Board, Eingang 9...18V, Überspannungsschutz, Verpolschutz

    Hier mal noch der Blick von vorn auf den C-Mount mit offenem Shutter.
    Das Filter fehlt hier bereits.



    Der komplette schwarze Ring kann herausgeschraubt werden. Momentan kann ich nicht sagen was für ein Gewinde sich dann dahinter verbirgt. Hoffendlich was mit metrischer Steigung.


    Das Gehäuse ist relativ groß und schwer. Ist aber ein Stranggußprofil welches sich leicht kürzen lassen sollte.

    Daher habe ich die Sensoreinheit erstmal wieder ins Gehäuse gebaut um an der Software für das Auslesen des CCD Sensors zu arbeiten:


    Auf dem C-Mount sitzt erstmal ein billiges Überwachungskameraobjektiv. Leider ist mir beim Auseinandernehmen natürlich die Justage des Sensors gegenüber dem C-Mount verloren gegangen. Aber das kommt später. Jetzt muß erstmal ein Bild her, das irgendeine Abhängigkeit von der Belichtung zeigt. Auf dem Oszi sieht man, daß die Spannungen ankommen aber die Zahlen hinter dem AD-Wandler sind noch Unsinn.

    Hier mal alles zur Inbetriebnahme zusammengesteckt. In diesem Zustand konnte ich am Sensor alle Signale und Spannungen nachmessen bevor ich den Sensor wieder eingesetzt habe.



    Hier dann wieder zusammen gebaut mit Sensor:


    Allerdings streut so relativ viel Licht von der Seite ein und der Sensor geht recht schnell wieder in die Sättigung.

    Hier mal ein Bild der Frontplatte mit der darauf montierten Sensorplatine:


    Vorn in der Frontplatte sitzt ein eingeschraubter Einsatz mit einem C-Mount. Darin befindet sich noch ein IR-Filter, welches aber leicht eusgebaut werden kann (Sprengring).


    Zwischen Sensor und Filter befindet sich noch ein mechanischer Shutter. Kodak hat offenbar auch Kameras ohne Shutter ausgeleifert. Der 2. Kamerakopf den ich gekauft habe hatte keinen Shutter.


    Der Sensor wurde von Kodak auf ein 2mm Alublech zur Kühlung montiert. Da könnte man später einen eigenen Kühler anflanschen.


    J1 - Ansteuerung von V, H und R mit 5V TTL Pegel
    J3 - Stromversorgung +/-5V und +/-15V
    J2 - analoges Bildsignal