www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik LinearCCD mit atmega8


Autor: Stephan K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

Ich versuche gerade ein Linear-CCD (Toshiba TCD2955D) auszulesen und die 
Empfangenen Daten dann als Bitmap an den PC zu senden. Das Programm ist 
in Assembler geschrieben und die Daten werden mit dem Hyperterminal von 
Windows empfangen.
    Das CCD würde ich gerne benutzen um eine Linie eines reflektierten 
Laserstrahls aufzunehmen ( , und ganz nebenbei würde ich gerne versuchen 
eine Rundum-Kamera damit zu basteln....).

Die Datenübertragung im BMP-Format steht schon ,und auch der 
Auslesetakt, mit dem Messen der einzelnen Farben ( nur das Messen an 
sich! ich empfange noch kein Farbsignal).

Jetzt hab ich ein paar Fragen:

1. Wann genau muss ich das Signal auslesen ?

      Ich betreibe das CCD im 1600DPI Modus und mir ist nicht klar ob
      ich jetzt nach dem CP Takt messe oder nachdem PHI_1
      wieder LOW ist ?

2. in welchem Bereich schwankt das Ausgabesignal?

      Wenn ich ohne irgendeinen Takt mit dem Multimeter einen
      Ausgabeport messe ich etwa 9,7V ?

3. Wie funktioniert denn der Verstärker der an den Ausgabeport gehängt
    werden soll (Datenblatt Seite 12)?

       ,Ich weiß dass der Basisstrom durch den Transistor verstärkt
        wird, aber wie setzt sich das Verstärkte Signal nun zusammen?


mfg Stephan

Autor: Stephan K. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch das Datenblatt des CCD

Autor: Stephan K. (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Und hier noch der Quellcode

Autor: Theo Sieber (tefi)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stephan

Die Idee mit der Rundum-Kamera hatte ich auch schon vor längerer Zeit, 
bin aber aus zetilichen Gründen nicht dazu gekommen. Wie weit bist du 
schon damit - dies würde mich auch interessieren.

gruss, Tefi

Autor: Serge (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Stephan,

geht es weiter mit dem Projekt? Hast du Probleme lösen können?
Ich überege gerade, was ähnliches mit dem Sensor Toshiba TCD1504CD und 
einem Arduino zu machen, stehe aber vor einigen Schwierigkeiten (das 
Datenblatt fehlt, asm Programmierung habe ich zuletz ca vor 10 Jahren 
ggemacht)

vG,
Serge

Autor: Wally Walters (wally234)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ist der thread hier tot oder kann man hier noch Näheres zu diesem 
Projekt erfahren.
Vielleicht liest ja Stefan hier nochmal rein.
bis die Jahre :)

kann vielleicht sonstjemand diesen Toshiba TCD2955D ansteuern ?
Arduino oder Teensy o.ä.

Autor: Wally Walters (wally234)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe zu wenig Ahnung von ASM um das zu reparieren, bräuchte hier 
Hilfe.

./scanner2.asm(654) : Error   : adiw can only use registers R24, R26, R28 or R30
done

Used memory blocks:
   Code      :  Start = 0x0000, End = 0x0190, Length = 0x0191

Assembly aborted with 1 errors and 3 warnings. 

"scanner2.asm" ist die einzige (s.o.) Projektdatei hier.

: Bearbeitet durch User
Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Ich habe zu wenig Ahnung von ASM um das zu reparieren, bräuchte hier
>Hilfe.

Meinst du diese

    adiw    zl:zh,1                 ; Zeiger erhöhen

Zeile?

Sollte

adiw ZH:ZL,1

heißen.

MfG Spess

Autor: Wally Walters (wally234)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Assembly complete with no errors (3 warnings).

vielen Dank !

... beneidenswert

Autor: Matthias Melcher (Firma: privat) (quadraturencoder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lustig, dass das heute wieder Thema ist. Ich habe vor zwei Wochen einen 
TCD2716ADG bestellt (7000 pixel in R, G und B auf 35mm), den ich mit dem 
Arduino Due (ARM CPU) auslesen will. Die A/D-Wandler können angeblich 
1MHz, und USB client Funktionalität ist auch da.

Wenn INteresse besteht, dann schreibe ich mal, wie's so geht.

Autor: Wally Walters (wally234)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Matthias

grossartig :)

klar besteht interesse !

Autor: Wally Walters (wally234)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Matthias
vielleicht könntest Du schon vorab sagen, wo Du den Sensor (zu welchem 
Preis) bestellt hast und was generell die Anwendung sein soll.

Autor: Matthias Melcher (Firma: privat) (quadraturencoder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe vor einiger Zeit über 40 Rollen 35mm und 16mm Filme meiner 
Familie und unseres Betriebes gefunden, die ich gerne digitalisieren 
möchte. Das kann man machen lassen, kostet aber sehr viel Geld. 
Inzwischen haben sich aber auch mindestens noch mal so viele Rollen von 
Freunden un Bekannten gefunden, weswegen ich einen Filmabtaster gebaut 
habe.

http://www.matthiasm.com/filmscanner.html

Aber die Abtastung mit einem USB Mikroskop ist qualitativ 
unbefriedigend. Ich habe daher nach linearen CCDs geschaut, denn die 
haben eine geniale Auflüsung - nicht nur physikalisch, sondern auch was 
die Lichtmenge angeht.

Den Chip habe ich nach einer Tabelle bei Toshiba ausgesucht:

http://toshiba.semicon-storage.com/de/product/sens...

Wichtig war, dass ich dort genug Sensoren in den drei Grundfarben habe, 
und die Abtastfläche mindestens 35mm breit ist. Der TCD2716ADG ist 35mm 
breit und für relativ kleines Geld zu haben. Bingo.

Bestellt habe ich bei Aliexpress für 20 Euro. Man muss sich halt nur 
etwas gedulden.

Lesen will ich das Ganze mit einem Arduino Due, denn der hat die 
erforderlichen sechs A/D Wandler in mindestens 10 bit und 1MHz 
Abtastrate. Ob das reicht wird sich zeigen. Schlimmstenfalls muss noch 
ein schneller A/D Wandler chip mit dran.

Beschaltung des CCD ist detailliert in den verschiedenen Datenblättern 
beschrieben. Mechanik funktioniert (obwohl ich ab hochauflösenden 
Filmtransport noch sicherlich viel optimieren muss.

Einzige Frage: muss der Chip irgendein Linsensystem haben, oder 
funktioniert das ohne Linse, weil der Film ja direkt über den Chip 
läuft. Aber das wird sich erst beantworten lassen, wenn der CCD vor Ort 
ist und funktioniert.

Autor: Wally Walters (wally234)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das ist doch mal ein handfestes reales Projekt, sehr interessant !

"Aliexpress" hat mich schon oft gereizt, da es dort nicht nur
interessante Preise sondern auch oft, hierzulande sehr schwierig 
erhältliche Teile gibt. Ich hatte immer Bedenken wegen eventueller
Zollpapierschlachten und ähnlichen Schwierigkeiten.
Hast Du schon Erfahrungen gemacht oder ist dies Deine erste Bestellung 
bei Aliexpress ?

Eine Alternative zum Arduino DUE könnte vielleicht ein Teensy 3.1 sein.
Die ADCs haben größsere Auflösung und die Taktfrequenz ist vergleichbar 
hoch.
Ob auch Samplerate der ADCs höher ist weiss ich jetzt nicht.
https://www.pjrc.com/teensy/
Meinen habe ich bei Watterott gekauft, ist dort wohl vergriffen, sollte 
aber wieder lieferbar werden. Watterott ist aber auch nicht der einzige 
Anbieter.
http://www.watterott.com/index.php?page=search&pag...

Zur Optik kannn ich nicht viel sagen, würde aber zwischen Lampe und Film 
eine Sammellinse positionieren (ähnlich wie bei Belichtugsgeräten zum 
Vergrössern).

: Bearbeitet durch User
Autor: Hp M. (nachtmix)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wally W. schrieb:
> Zur Optik kannn ich nicht viel sagen, würde aber zwischen Lampe und Film
> eine Sammellinse positionieren (ähnlich wie bei Belichtugsgeräten zum
> Vergrössern).

Eine solche Kollimatorlinse wird wegen der hohe Lichtempfindlichkeit des 
CCDs nicht nötig sein, aber ein gleichmäßig beleuchteter heller diffuser 
Hintergrund in einigem Abstand (damit die Fehler nicht scharf abgebildet 
werden) zum Film.


Ich würde sogar zwei anständige Objektive aus KB-Kameras ausschlachten 
und diese auf unendlich fokussiert mit den Frontlinsen fast 
aufeinander setzen. Wenn beide die  gleiche Brennweite haben, erhält man 
eine 1:1 Abbildung, sonst eben eine entsprechende Maßstabsänderung.

Vor dem Ausbau das Objektiv auf unendlich stellen und die Entfernung 
zwischen der Filmebene und dem hinteren Linsenscheitel genau messen *), 
denn dort sollte sich später der Film bzw. das CCD befinden.
Das Ablesen der Brennweite vom Objektiv reicht bei diesen dicken 
Linsensystemen nicht.

Das direkte Auflegen des Films auf den Sensor funktioniert nicht, denn 
das eigentliche CCD befindet in einiger Entfernung hinter dem Frontglas.
Die Dicke dieses Fensters, der Brechungsindex und die Entfernung vom 
Fenster bis zur CCD-Oberfläche steht gewöhnlich im Datenblatt, und es 
ist kein Fehler diese Größen bei der Konstruktion zu berücksichtigen.



*)Bei Wechselobjektiven kann man auch das Auflagemaß erfragen.
Das ist die Entfernung zwischen der Filmebene und dem Flansch, mit dem 
das Objektiv auf dem Kameragehäuse aufliegt.
https://de.wikipedia.org/wiki/Auflagema%C3%9F

: Bearbeitet durch User
Autor: Matthias Melcher (Firma: privat) (quadraturencoder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Wally Walters: AliExpress hat bei mir bis jetzt immer problemlos 
funktioniert. Ich habe schon die schrägsten Sachen bestellt (sagt mein 
Zollamt) und immer alles so bekommen, wie es versprochen war. Es dauert 
halt bis zu einem Monat, bis das Zeug kommt. Aber wenn man damit leben 
kann.

Von meiner Lieferliste:
 - Bestückungsautomat (super freundlich, alles funktioniert)
 - Elektroauto Ladegeräte (auch da tolle Kommunikation, Lader wurden auf 
meine Batterien abgestimmt, die richtigen deutschen Kabel lagen bei, 
weit jenseits meiner erwartungen)
 - Laptopbatterien
 - Federstifte (500 für 9 Euro, statt einen für 3,80 Euro in D)
 - Galvanometer Kit
usw.

Banggood liefert schneller, auch Arduino-artige Sachen. Dort war aber 
schon mal das Eine oder Andere beworbene dann doch nicht verfügbar.

Sorry, Conrad und Co, aber wenn Ihr für ein USB Kabel allen Ernstes 12 
Euro wollt, das bei AliExpress 80 Cent inklusive Versand kostet, dann 
müsst Ihr Euch nicht wundern.

Autor: Matthias Melcher (Firma: privat) (quadraturencoder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@nachtmix: Ohgottogottogott. Gerade die aufwändigen Linsensysteme wollte 
ich ja vermeiden! Naja, warten wir erst einmal auf den Chip. Danke.

Autor: Matthias Melcher (Firma: privat) (quadraturencoder)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Gaaanz langsam kommt Bewegung in die Sache. Eben ist der Chip aus China 
gekommen:

Autor: Wally Walters (wally234)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bitte berichte über Deine Fortschritte :)

Autor: Joachim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias M. schrieb:
> - Galvanometer Kit

Darf ich mal fragen, wofür Du das gebraucht hast? ;-)

Ich bin mir nicht sicher, ob die Wahl einer CCD-Zeile gut war.
Wenn Du diese große Auflösung von 4000 DPI in einer Achse willst, willst 
Du diese auch in der anderen (Transport)Achse.
Heisst dann also einige Tausend Abtastungen pro Bild.
Die Auslesefrequenz ist nicht unbegrenzt. Wenn die CCD 10MHz könnte und 
Du 7000 Pixel hast dann schaffst Du 1500 Bilder / Sekunde.
Je nachdem wie groß das Bild auf dem Film ist (schätze mal 0,7") werden 
bei 4000 DPI 2800 Bilder "geschossen". Dauert dann in dem Fall fast 2 
Sekunden. Für 1 Bild!!!
Okay, man hat ja Zeit ;-)
Ein halbstündiger Film wird dann so ca. 16 Stunden Abtastzeit benötigen.

Aaaaber: Willst Du diesen A/D-Wandler vom Kontroller nehmen, dann 
reduziert sich Deine Abtastfrequenz eh um den Faktor 30 (1 MHz 
A/D-Samplingrate, aber geteilt durch die 3 Kanäle RGB beim multiplexten 
A/D Wandler!)
Macht dann nur 50 anstatt 1500 Schuss pro Sekunde.
Dann brauchst Du statt 16 Stunden 480 Stunden bzw. 20 Wochen für den 
Film, hast dann allerdings auch mehr Zeit für die parallele Aufarbeitung 
per PC ;-)

Also neben der Tatsache, dass eine Flächenkamera schneller wäre, weil 
sie eben 10 oder 20 oder nochmehr KOMPLETTBILDER pro Sekunde schießt, 
wirst Du auch ein extremes Transportproblem bekommen.
Wenn der Film nicht mit einer absolut exakt genauen 
Transportgeschwindigkeit läuft, die synchron zum CCD ist, dann bekommst 
Du ganz schlimmes Banding, also unterschiedliche Zeilenabstände.
Da ist Mikrometerarbeit angesagt!
Du musst im schlimmsten Fall die Transportgeschwindigkeit per 
hochauflösendem Drehgeber messen, so dass Du diese 4000 Impulse pro Inch 
Filmvorschub erhälst und den CCD darauf "abfeuern" kannst.


Gruß

Joachim

Autor: Joachim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, meinte 20 Tage, nicht Wochen.

Autor: Matthias Melcher (Firma: privat) (quadraturencoder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, Joachim, das ist alles richtig. Mein Filmabtaster arbeitet aktuell 
tatsächlich mit einem USB-Mikroskop und liest den Film Bild für Bild. 
Das funktioniert einigermassen, aber es fehlt an Auflösung und vor allem 
in der Farbtiefe (8 Bit sind bei Film viel zu wenig). Die Abtastung 
eines Bildes dauert auch so bereits zwei Sekunden, da ich den Film 
transportiere, ausrichte, dann auf die Gain Control des Mikroskopes 
warten muss, und dann esrt das Bild bei völligem Stillstand schiessen 
kann.

Man kann natürlich eine professioneller Kamera nehmen. Aber das wäre dan 
ein Fall für das Kameraforum.

Filmabtaster sind recht langsam, können dafür aber auch die perfekte 
Qualität liefern. Ein Zeilensensor hat halt eine wirklich geniale 
horizontale Auflösung, und auch eine Bildtiefe von 12 bit oder mehr. Da 
ich nur eine Zeile verwende, muss der Film - der ja auf Rollen kommt - 
nicht gerade gebogen werden, sonder kann mit einem Rad über den Sensor 
geführt werden. Das Rad kommt aus der Drehbank und der Vortrieb über 
einen Zahnriemen vom untersetzten Stepper. So kann man auch die ältesten 
und brüchigsten Filme über den Abtaster schieben und braucht keinerlei 
Spannung aufzubauen oder ruckartige Bewegungen auszuführen, wie das z.B. 
im Projektor der Fall wäre.

Und nebenbei ist das alles noch ein schönes 
Microcontroller-Experiment... .

Autor: Joachim (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Okay, wenn es jetzt auch schon so langsam geht, dann ist das zumindest 
nicht das Problem.
Warum 8Bit nicht genügen begreife ich aber nicht. Ich vermute mal 3x8Bit 
RGB.
Das ist eine normale 24Bit Farbtiefe und sollte für die Wiedergabe von 
Filmen genügen.
Ich habe mir mit Laserscannern einen Fotobelichter gebaut. Der arbeitet 
auch mit 3x8Bit und die Qualität der Fotos ist bestechend.
Vielleicht hat Dein USB-Mikroskop aber auch an anderer Stelle Probleme 
oder löst nicht wirklich mit 8Bit pro Farbe auf.

Das größte Problem mit der Zeile sehe ich aber wie gesagt im Vorschub.
Die Pixelreihen haben ca. 3-4 Mikrometer Breite und diesen Abstand musst 
Du von Zeile zu Zeile exakt einhalten.
Da bin ich auf Deine Lösung wirklich gespannt :-)

Ich arbeite am gleichen Problem "umgekehrt": Um ein Foto mittels eines 
Polygonscanners zu belichten brauche ich einen Papiervorschub, der mir 
auch mikrometergenau das Papier transportiert. Keine leichte Aufgabe.

Gruß

Joachim

Autor: Matthias Melcher (Firma: privat) (quadraturencoder)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Belichten mit 8 bit funktioniert gut, wenn Du den minimalen und 
maximalen Lichtwert kennst, den Dein Fotopapier gerne mag.

Beim Film ist das anders: ich kenne weder den dunkelsten Schwarzwert, 
noch die höchste Transparenz des Filmstreifens. Das Basismaterial hat 
dann oft noch einen Gelb-Stich, so dass man die anderen Farben 
verstärken muss. Und zu guter Letzt hat Film keine lineare 
Transparenzkurve, so dass man auch schon mal eine ganz ordentlich 
Belichtungskorrektur durchführen muss (z.B. HDR).

https://de.wikipedia.org/wiki/High_Dynamic_Range_Image

Da werden aus 8 bit dann ganz schnell effektive 6 bit oder weniger, was 
dann zu massiven Farbbändern führt.

Ich habe viele Jahre Software für den Filmbereich geschrieben. Dort 
haben wir mit mit 32 bit pro Farbkomponente gearbeitet (also 128 bit pro 
pixel in RGBA). So sind dann alle Filterfunktionen auch in der Summe 
verlustfrei.

https://www.thefoundry.co.uk/products/nuke/

Achja, und der mechanische Antrieb ist tatsächlich ein grosses Problem. 
Wahrscheinlich werde ich mit Schwungmasse und fester Abtastrate 
arbeiten.

: Bearbeitet durch User
Autor: Lurchi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auch sehr gut CCD Sensoren schaffen kaum mehr als 14 Bit Auflösung. 
Diese Sensoren eher noch einiges weniger. Ohne guten Abgleich der 
Beleuchtung könnten 8 Bit aber schon etwas knapp werden. Nicht umsonst 
arbeiten die Foto Kameras auch mit etwa 10-12 Bit je Farbe.

Um eine Optik kommt man nicht herum. Da muss dann auch der Abstand schon 
recht gut (ca. 10 µm) stimmen, sonst wird es unscharf. Vermutlich wird 
die Auflösung auch mehr von der Optik bestimmt - die volle Auflösung 
wird man eher nicht erreichen mit einer erschwinglichen Optik, auch wenn 
man Farbfehler in Grenzen (gerade den von der Farbe abhängigen 
Fokusabstand eher nicht) rechnerisch korrigieren kann.

Wenn man den linien CCD schnell auslesen will, braucht man auch 
entsprechend mehr Licht. Da hat ein 3 D CCD Chip dann doch Vorteile, 
einfach weil die Fläche größer ist.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.