Forum: Mikrocontroller und Digitale Elektronik Brauche Uhr/Zähler/Generator mit Frameanzeige und 100stel Sekunden, RS232 Anschluß


von Andreas M. (kautschuknagel)


Lesenswert?

Guten Tag zusammen,

ich brauche einen Generator mit den folgenden Eigenschaften:

- Anzeige von Stunden:Minuten:Sekunden:fps
- variable Framerate von 1 bis 400 fps
- Start via RS232
- Startzeit frei wählbar

Im Prinzip ist so etwas als Timecodegenerator erhältlich, aber nicht mit 
variablen Frameraten bis 400 fps.

Ich benötige entweder ein fertiges Gerät oder eine Schaltung.
Ob das mit LCD oder Segmentanzeigen oder LED gemacht wird, ist egal. 
Letztlich wird nur eine Hochgeschwindigkeitskamera darauf gerichtet.

Kann mich da jemand erleuchten?

Danke vorab!

von Jonas G. (jstjst)


Lesenswert?

Ich würde das jetzt mit LEDs und einem mikroc Mikrocontroller aufbauen. 
LED multiplexen braucht man wohl gar nicht probieren wenn es um eine 
highspeed Kamera geht.

Gruß Jonas

von m.n. (Gast)


Lesenswert?

Andreas M. schrieb:
> - Anzeige von Stunden:Minuten:Sekunden:fps

Wo bleiben die 100stel Sekunden aus der Überschrift?

Für die schnelle Anzeige eignet sich eine statisch angesteuerte 
LED-7-Segmentanzeige wie hier: 
http://mino-elektronik.de/7-Segment-Variationen/LCD.htm#led1

von Andreas M. (kautschuknagel)


Lesenswert?

Korrekterweise handelt es sich nicht um hunderstel Sekunden, sondern um 
Anzahl der Bilder pro Sekunde. Auch hier sind drei Stellen nach der 
Sekundeneinheit benötigt, doch die Länge der Darstellung einer solchen 
Zeiteinheit hängt von der Framerate ab. Das ist dann allerdings eine 
Sache der Software, die die Anzeige ansteuert.

Ich kann bestenfalls eine Platine bestücken, leider reichen meine 
Fertigkeiten nicht für mehr und die Software dazu kann ich auch nicht 
erstellen. Insofern ist der genannte Link sicher hilfreich für jemand 
mit mehr Erfahrung, aber ich kann das nicht auf meine Bedürfnisse 
anpassen.

Highspeed Kameras: Das Maximum, das ich jemals benötigen würde, liegt 
bei 400 Bilder/s. Zu Beginn reichen mir erstmal 100 Bilder/s, also auch 
drei Stellen nach der Sekunde.

von Sebastian S. (amateur)


Lesenswert?

Vorsicht bissiger Hund!
Viele Anzeigen werden im Multiplexbetrieb betrieben. Das kann man mit 
einer Hochgeschwindigkeitskamera sehen. Ob man dabei noch die 
tatsächliche Zeit zu erkennen kann ist aber fraglich.

von Max D. (max_d)


Lesenswert?

Naja, 7-Segs kann man ja einfachst statisch ansteuern. Ein 74HC595 o.Ä. 
pro Digit ist schnell gemacht und wird einfach per Spi aufgefüllt und 
dann gelatcht...

von Sebastian S. (amateur)


Lesenswert?

@Max
Das ist mir klar, aber da das bei einer "normalen" Uhr ein unnötiger 
Aufwand ist, ist die Chance groß, das bei einer "gekauften" Uhr der 
Aufwand unterblieben ist.

von Max D. (max_d)


Lesenswert?

Naja, der TO hat ja nach "oder Schaltung" gefragt.
Und das war halt ein schaltungsvorschlag...

von Max D. (max_d)


Lesenswert?

Was mir noch einfällt bei "Start via RS232". Bei niedrigeren Baudraten 
ist ein UART-Zeichen länger als 1/400 s. Damit dürfte deine Startzeit 
nichtmehr hinhauen.

von W.A. (Gast)


Lesenswert?

Max D. schrieb:
> Was mir noch einfällt bei "Start via RS232". Bei niedrigeren Baudraten
> ist ein UART-Zeichen länger als 1/400 s. Damit dürfte deine Startzeit
> nichtmehr hinhauen.

Und was spräche aus deiner Sicht dagegen, höhere Baudraten zu verwenden, 
abgesehen davon, dass du mit deinem Einwand etwas daneben liegst?
Welches der drei Worte in "Start via RS232" bei der Beschreibung hast du 
nicht richtig verstanden?

Schlimmstenfalls verschiebt sich der Startzeitpunkt um ein paar 
Bit-Zeiten.

von Max D. (max_d)


Lesenswert?

Der "Start via RS232" ist halt etwas generisch und ich wollte den TO auf 
dieses potentielle Problem hinweisen bevor er mit der fertigen Kiste 
dasteht die dann falsch geht...
Ein Forumspost kostet ja nichts.

von Draco (Gast)


Lesenswert?

Also die Anzeige soll so sein:

01:12:34.241

Mit nem normalen LCD oder einer normalen 7seg im Multiplex wirst du da 
nicht glücklich. Da du bei deiner Aufnahme jeden Wechsel des LCD oder 
der 7seg Anzeige siehst. Du musst die statisch ansteuern. Das ist halt 
unüblich.

Du musst da 8 Byte (8 Bit x8 Stellen) in den Latch schieben, bei 
400Herz, das dürfte nen AVR8 locker machen. Nur die Frameberechnung wird 
nen bissle tricky ohne mit großartiger Division hinzukommen. Laufen die 
fps mit? Also von 0-n ? Oder stehen die statisch?

von Hp M. (nachtmix)


Lesenswert?

Andreas M. schrieb:
> variable Framerate von 1 bis 400 fps

Wo kommt das Steuersignal dafür her?

von Max D. (max_d)


Lesenswert?

Also so wie ich das verstanden habe, zählen die letzten drei Ziffern die 
Frames im Verlauf der Sekunde hoch und beim Überlauf zählt die Sekunde.
Was problematisch sein könnte ist die synchronisation der updates auf 
die shutter-öffnung der Kamera. Wenn man grade die grenze erwischt, dann 
hat man evtl. beide Zahlen überlagert dargestellt.

von Falk B. (falk)


Lesenswert?

@Andreas Mann (kautschuknagel)

>ich brauche einen Generator mit den folgenden Eigenschaften:

>- Anzeige von Stunden:Minuten:Sekunden:fps
>- variable Framerate von 1 bis 400 fps

Wozu braucht man bei High Speed Aufnahmen Stunden und Minuten? So eine 
Aufnahme dauert doch typisch nur ein paar Sekunden.

>- Start via RS232
>- Startzeit frei wählbar

Also per RS232 voreinstellbar. Soll es echtes RS232 sein oder geht auch 
ein virtueller COM-Port über USB? Das wäre zeitgemäßer. Aber 
wahrscheinlich hat euer alter Steuer-PC nur einen echten COM-Port.

>Ich benötige entweder ein fertiges Gerät oder eine Schaltung.
>Ob das mit LCD oder Segmentanzeigen oder LED gemacht wird, ist egal.

Nicht ganz, LCDs brauchen Licht von außen und sind im Normalfall sehr 
langsam. LEDs leuchten selber und können locker Dutzende von kHz sauber 
anzeigen.

von m.n. (Gast)


Lesenswert?

Weiter oben hatte ich schon eine statische Ansteuerung einer 
7-Segmentanzeige vorgeschlagen. Auch für µC mit serieller Schnittstelle 
habe ich fertige Sachen in der Schublade: 
http://mino-elektronik.de/7-Segment-Variationen/LCD.htm#led2

Bei dieser Schaltung steuert ein ATmega328 eine 6-stellige Anzeige mit 
13-14 mm Höhe an; die Anzeige ist kaskadierbar, sodaß weitere 3- oder 
6-stellige Anzeigen (Hardware vorhanden) nachgeschaltet werden können. 
Wenn Du mit einem '.' anstatt eines ':' in der Anzeige leben kannst, 
könnte die Hardware direkt verwendet werden. Alternativ müßten zwischen 
den betreffenden Ziffern zwei LEDs den ':' nachbilden.

Die Schaltung kann mit einem trimmbaren Quarz oder TCXO betrieben 
werden, sodaß auch längere Zeitintervalle sehr genau einstellbar sind.
Falls Du an der Schaltung/Programm Interesse haben solltest, kannst Du 
Dich ja melden. Allerdings habe ich erst ab September wieder Zeit.

Draco schrieb:
> Nur die Frameberechnung wird
> nen bissle tricky ohne mit großartiger Division hinzukommen.

Das ist kein Problem, wenn man mit den Timern nett umgeht ;-)
http://mino-elektronik.de/Generator/takte_impulse.htm

von Andreas M. (kautschuknagel)


Lesenswert?

Danke für die rege Teilnahme!

Der Wunsch ist, einen Zähler zu haben, der z.B. 25, 30, 50, 60, 100,
120, 160 oder 400 fps darstellt. Bei 25 fps wird die jeweilige Zahl des
Bildes für 40 ms angezeigt, bei 100 fps sind es 10 ms Anzeigedauer, bei
400 fps dann nur mehr 2,5 ms. Ich weiß nicht, welche Technik dazu
eingesetzt werden kann. Der Wechsel von z.B. 01:00:00:023 auf 
01:00:00:024 muß schneller 2,5 ms erfolgen, da die schnellste Kamera 
sonst beide Werte aufnehmen würde.

Mit irgendeinem Wert muß der Zähler ja beginnen. Er soll beliebig
einstellbar sein, etwa 01:00:00:000 oder 12:30:00:000. Ob der mit BCD
Schaltern eingestellt wird oder per Software von einem Raspberry/PC
übermittelt wird, ist egal.

Der Startbefehl muß nicht zwangsweise über RS232 kommen; es kann auch
ein einfacher Taster sein. Wichtig dabei ist lediglich, daß der Start
auch gleichzeitig eine andere Aktion an einem Raspberry/PC auslöst. Das 
kann
z.B. ein Licht oder ein Ton sein oder ein Skript.

Es ist richtig, bei Highspeedaufnahmen gehen die Zeiten nicht in die 
Stunden. Das Gerät soll aber auch verwendet werden bei Aufnahmen mit 
25/30 fps und die können durchaus auch mal ein paar Stunden laufen.

Ja, die Anzeige kann natürlich auch . statt : anzeigen. Es geht nur bei 
der Auswertung darum, die Werte lesen zu können. Nötigenfalls auch ohne 
Trennung. Da könnte man Stunden und Sekunden in rot anzeigen lassen und 
die anderen Zahlen in einer anderen Farbe.

: Bearbeitet durch User
von Lars R. (lrs)


Lesenswert?

Ein paar Zähler in einen FPGA eines einfachen FPGA Boards.
Über 63 pins die gewünschten 7segment-Anzeigen direkt ansteuern.

Das Aufwändigste wird das Anschließen der LEDs.

Alternativ die Zähler, BCD-Logik sowie SET/RESET diskret aufbauen und 
das LSB sowie SET/RESET mit dem uC steuern (vermutlich entsprechend 
Vorschlag oben)


Wie dringend ist es?

von Falk B. (falk)


Lesenswert?

@Andreas Mann (kautschuknagel)

>Der Wunsch ist, einen Zähler zu haben, der z.B. 25, 30, 50, 60, 100,
>120, 160 oder 400 fps darstellt.

Man kann das auch problemlos frei konfigurierbar machen, von 1-1000 fps.

> Bei 25 fps wird die jeweilige Zahl des
>Bildes für 40 ms angezeigt, bei 100 fps sind es 10 ms Anzeigedauer, bei
>400 fps dann nur mehr 2,5 ms. Ich weiß nicht, welche Technik dazu
>eingesetzt werden kann.

08/15 Digitalkram.

> Der Wechsel von z.B. 01:00:00:023 auf
>01:00:00:024 muß schneller 2,5 ms erfolgen, da die schnellste Kamera
>sonst beide Werte aufnehmen würde.

Trivial. Die Umschaltung schaffen die LEDs in wenigen Mikrosekunden. 
Trotzdem hast du das Problem, das bei unsynchronisiertert Umschaltung 
deine Kamera die Hälfte der Belichtungszeit eine Zahl sieht und die 
andere Hälfte die nächste Zahl. Optimal wäre es, wenn die Kamera selber 
die Einblendung ins Bild machen würde.

>Mit irgendeinem Wert muß der Zähler ja beginnen. Er soll beliebig
>einstellbar sein, etwa 01:00:00:000 oder 12:30:00:000. Ob der mit BCD
>Schaltern eingestellt wird oder per Software von einem Raspberry/PC
>übermittelt wird, ist egal.

Dann ist UART/RS232 schon das günstigste, mit DIP-Schaltern wird es 
reudig.

>auch gleichzeitig eine andere Aktion an einem Raspberry/PC auslöst. Das
>kann
>z.B. ein Licht oder ein Ton sein oder ein Skript.

Das ist dann ein Problem des PCs, nicht der Anzeige.

von Wolfgang (Gast)


Lesenswert?

Andreas M. schrieb:
> Ich weiß nicht, welche Technik dazu
> eingesetzt werden kann. Der Wechsel von z.B. 01:00:00:023 auf
> 01:00:00:024 muß schneller 2,5 ms erfolgen, da die schnellste Kamera
> sonst beide Werte aufnehmen würde.

Der Wechsel muss nicht nur schneller als die Framerate sein, sondern er 
muss auch noch synchronisiert sein. Was nützt es, wenn die Anzeige 
zufällig immer mitten im Bild wechselt.

von c-hater (Gast)


Lesenswert?

Andreas M. schrieb:

> Korrekterweise handelt es sich nicht um hunderstel Sekunden, sondern um
> Anzahl der Bilder pro Sekunde.

Nein. Es handelt sich um einen Framezähler. Nur dessen Zählumfang 
entspricht der Framerate in Bilder pro Sekunde, dieser Zählumfang wird 
aber gerade niemals angezeigt, denn der angezeigt Wertebereich geht ja 
jeweils von 0 bis fps-1. Soviel zur Richtigstellung des physikalischen 
Sachverhaltes.


Übrigens ist die Aufgabe garnicht so einfach, wie es im ersten Moment 
scheinen mag, jedenfalls dann nicht, wenn wirklich jede ganzzahlige 
Framerate zwischen 1 und 400 möglich sein soll und das auch wirklich 
exakt (ohne zeitlichen Jitter) angezeigt werden soll, jede Zahl also 
exakt gleich lange im Display erscheinen soll.

Zwischen 1 und 400 gibt es nämlich 78 Primzahlen und deren Produkt ist 
ziemlich gross. Und um o.g. Forderungen umzusetzen, müsste der Takt 
mindestens so hoch sein wie eben dieses Produkt.

Wie du leicht ausrechnen kannst, wird sich das eher nicht realisieren 
lassen. Du wirst also mit einem gewissen zeitlichen Jitter leben und vor 
Beginn der Umsetzung definieren müssen, wie hoch der sein darf...

von Lars R. (lrs)


Lesenswert?

Wolfgang schrieb:
> Andreas M. schrieb:
>> Ich weiß nicht, welche Technik dazu
>> eingesetzt werden kann. Der Wechsel von z.B. 01:00:00:023 auf
>> 01:00:00:024 muß schneller 2,5 ms erfolgen, da die schnellste Kamera
>> sonst beide Werte aufnehmen würde.
>
> Der Wechsel muss nicht nur schneller als die Framerate sein, sondern er
> muss auch noch synchronisiert sein. Was nützt es, wenn die Anzeige
> zufällig immer mitten im Bild wechselt.

So oft kann das ja nicht der Fall sein. Und wenn doch, so bräuchte es 
mehr Nachkommastellen

von Wolfgang (Gast)


Lesenswert?

c-hater schrieb:
> Zwischen 1 und 400 gibt es nämlich 78 Primzahlen und deren Produkt ist
> ziemlich gross.

Das dürfte für die Anwendung ziemlich belanglos sein.

Schon wenn man eine minimale Totzeit zwischen zwei Anzeigewerten 
einbaut, d.h. das Display kurz dunkel läßt, tritt der Jitter nicht 
störend in Erscheinung.

von Falk B. (falk)


Lesenswert?

@ c-hater (Gast)

>Übrigens ist die Aufgabe garnicht so einfach, wie es im ersten Moment
>scheinen mag,

Doch, mit dem allbekannten DDS Prinzip.

>jedenfalls dann nicht, wenn wirklich jede ganzzahlige
>Framerate zwischen 1 und 400 möglich sein soll und das auch wirklich
>exakt (ohne zeitlichen Jitter) angezeigt werden soll,

Das ist keine Forderung.

>Wie du leicht ausrechnen kannst, wird sich das eher nicht realisieren
>lassen. Du wirst also mit einem gewissen zeitlichen Jitter leben und vor
>Beginn der Umsetzung definieren müssen, wie hoch der sein darf...

Bei 16 MHz Zählertakt sind das unglaubliche 62,5ns, die wohl ganz sicher 
zu verschmerzen sind, auch bei 1000 Bilder/Sekunde. Selbst wenn es 1us 
wäre, ist das gerade mal 1/1000 der Bilddauer.

von Wolfgang (Gast)


Lesenswert?

Lars R. schrieb:
> So oft kann das ja nicht der Fall sein.

Das passiert genau einmal bei jedem Kamerabild, wenn der Zähler genau 
für die Dauer eines Bildes den Wert des Bildzählers innerhalb einer 
Sekunde anzeigt.

Andreas M. schrieb:
> - Anzeige von Stunden:Minuten:Sekunden:fps

... immer voraus gesetzt, dass hier mit "fps" nicht die Bildrate, 
sondern die Bildnummer gemeint ist. Anders würde eine Anzeigedauer von 
z.B. 2,5ms bei 400fps aber unverständlich.

Andreas M. schrieb:
> Bei 25 fps wird die jeweilige Zahl des Bildes für 40 ms angezeigt, bei
> 100 fps sind es 10 ms Anzeigedauer, bei 400 fps dann nur mehr 2,5 ms.

von Max D. (max_d)


Lesenswert?

Hat die Kamera denn einen Ausgang der den Beginn eines frames markiert?
Ansonsten dürfte das ziemlich spaßig sein bei 400fps die Synchronisation 
hinzukriegen...

von Lars R. (lrs)


Lesenswert?

Wolfgang schrieb:
> Lars R. schrieb:
>> So oft kann das ja nicht der Fall sein.
>
> Das passiert genau einmal bei jedem Kamerabild, wenn der Zähler genau
> für die Dauer eines Bildes den Wert des Bildzählers innerhalb einer
> Sekunde anzeigt.

Der Zählimpuls kommt beispielsweise mit einer Genauigkeit von 4+x MHz. 
Auf einem Bild kann eine Stelle flippen. Diese hat aber in der 
Bildaufnahme zuvor nicht geflippt.


Edit: Falls das mit dem uC nicht einfach geht, so benötigt es 
stattdessen eine andere Lösung oder einen diskreten Aufbau. Dafür jedoch 
eine Synchronisation zwischen Highspeed-Camera und einem kleinen uC zu 
implementieren, ggf. auch noch für verschiedene Anwendungsfälle und 
Kameras, ist IMHO übertrieben.

: Bearbeitet durch User
von m.n. (Gast)


Lesenswert?

Lars R. schrieb:
> Dafür jedoch
> eine Synchronisation zwischen Highspeed-Camera und einem kleinen uC zu
> implementieren, ggf. auch noch für verschiedene Anwendungsfälle und
> Kameras, ist IMHO übertrieben.

Wenn Sync-Impulse der Kamera verwendet werden, werden diese einfach 
gezählt. Ein Ereigniszähler ist doch eher banal, auch wenn man ihn hier 
am besten als BCD-Zähler arrangiert.
Wo soll hier ein Problem sein?

von Lars R. (lrs)


Lesenswert?

m.n. schrieb:
> Lars R. schrieb:
>> Dafür jedoch
>> eine Synchronisation zwischen Highspeed-Camera und einem kleinen uC zu
>> implementieren, ggf. auch noch für verschiedene Anwendungsfälle und
>> Kameras, ist IMHO übertrieben.
>
> Wenn Sync-Impulse der Kamera verwendet werden, werden diese einfach
> gezählt. Ein Ereigniszähler ist doch eher banal, auch wenn man ihn hier
> am besten als BCD-Zähler arrangiert.
> Wo soll hier ein Problem sein?

Die Aufgabenstellung und was Du mit dem Triggersignal machen möchtest. 
Vielleicht habe jedoch ich etwas nicht richtig verstanden oder 
übersehen.


Vom Trigger bekommst Du automatisch die Framerate. Diese kann von 
Aufnahme zu Aufnahme verschieden sein und sie kann während der Aufnahme 
je nach Kamera und Bedingungen driften.

Die Zeitdifferenz Trigger->Belichtung_Start ist Kamera-individuell. Der 
Zeitpunkt Belichtung_Ende ist von der Belichtungszeit abhängig. Die 
Steuerung von Belichtung_Ende kann je nach Kameraaufbau von einem 
weiteren "Trigger"-Signal frame-individuell gesteuert sein.
Dieses Signal Belichtung_Ende bräuchtest Du eigentlich (sofern es 
verfügbar ist), weil Du nach der Belichtung die LEDs ändern möchtest. 
Alternativ extrapolierst Du zur Laufzeit aus der Historie der 
Trigger-Signale den Zeitpunkt des nächsten Triggersignals und beginnst 
ausreichend vorher mit dem LED-Wechsel.

Auch dies ist mit einem FPGA relativ einfach realisierbar und man 
bekommt mehr Stellen scharf. Beim uC kommt noch der iterative 
Programmablauf dazu. 400fps sind aufgerundet 1 kHz. Typischerweise ist 
die Belichtungszeit bei hohen fps bereits am Anschlag und Du suchst die 
Stelle kurz vor dem nächsten Trigger, wo gerade nicht belichtet wird.

Die Frage ist jedoch, ob diese Funktionalität entsprechend 
Aufgabenstellung benötigt wird, oder ob es nicht auch so reicht. Für 
viele Anwendungen ist es auch ohne Synchronisation ausreichend.
Weiterhin kann man jede BCD-Stelle (zusätzlich) mit einer Reihe von 9 
LEDs kodieren und diese LEDs der Reihe nach anschalten (0...9)

Es ist die "echte", gerade aktuelle Zeit, die die Uhr immer dann 
anzeigen soll, wenn belichtet wird. Warum bräuchte man sonst die Uhr?
Beispielsweise nutzt man die Uhr, weil man eben gerade nicht genau 
berechnen möchte oder wissen kann (den Aufwand dafür nicht betreiben 
möchte), zu welchem Zeitpunkt genau die Kamera die eben gerade als Daten 
vorliegenden Pixel belichtet hat. Vielleicht möchte man sogar genau 
diese Abweichungen (Belichtungszeit->Daten liegen vor) vermessen.

Edit:
Und noch genauer:
Die Uhr soll den Zeitpunkt zeigen, der gekommen ist, wenn belichtet 
wird. Und nicht den Zeitpunkt, zu dem die LEDs zuletzt geändert wurden.

Mit ExtraAufwand die letzten Nachkommastellen scharf abbilden, nur damit 
sie zusammenhanglosen Schrott anzeigen, bringt keinen Mehrwert.

: Bearbeitet durch User
von m.n. (Gast)


Lesenswert?

Lars R. schrieb:
> Vom Trigger bekommst Du automatisch die Framerate.

Nur indirekt über eine Frequenzmessung; direkt bekommt man den 
Frame-Takt.
Die Probleme, die Du konstruierst, habe ich jetzt nicht mehr gelesen.

von Lars R. (lrs)


Lesenswert?

m.n. schrieb:
> Lars R. schrieb:
>> Vom Trigger bekommst Du automatisch die Framerate.
>
> Nur indirekt über eine Frequenzmessung; direkt bekommt man den
> Frame-Takt.
> Die Probleme, die Du konstruierst, habe ich jetzt nicht mehr gelesen.

Wenn Du das bereits indirekt nennst, so ist es gut, dass Du nicht 
weitergelesen hast. Sorry, dass ich Dir auf Deine Frage geantwortet 
hatte...

: Bearbeitet durch User
von m.n. (Gast)


Lesenswert?

Lars R. schrieb:
> Wenn Du das bereits indirekt nennst, so ist es gut, dass Du nicht
> weitergelesen hast.

Die Framerate ist der nominelle Wert, wie c-hater schon um 13:00 Uhr 
richtig bemerkt hatte. Diese muß per Vorgabe oder durch genaue Messung 
bekannt sein, sonst ist die ganze Zählfunktion sinnlos.

Wenn Du hier mit FPGA einsteigen willst, ist das in keiner Weise 
nachvollziehbar. Ein µC schafft es locker, Frequenz, Phase und Anzeige 
in korrekten Zusammenhang zu bringen.
Was allerdings fehlt, ist eine hinreichend genaue Beschreibung der 
Funktion durch den TO. Da sehe ich ein Problem, was allerdings nicht 
technischer Natur ist.

von Lars R. (lrs)


Lesenswert?

Mir ist ein Fehler auf meiner Seite aufgefallen. Beim Format hatte ich 
"Frameanzahl" mehrfach überlesen und ich war von hh:mm:ss:ttt 
ausgegangen mit ttt=Millisekunden.

Einige der von mir angedeuteten Aspekte sind IMHO dennoch relevant.
Wird der Zählstand auf das Trigger-Signal hin verändert, so ist die 
letzte Stelle immer unscharf, weil die LEDs immer innerhalb der 
Belichtungszeit verändert werden.
Bei 500 Frames/s und einer Belichtungszeit von 1.9x ms ist die Zeit, in 
der nicht belichtet wird, entsprechend kurz. Für dieses, auch von Falk 
beschriebene Problem habe ich eine Lösung vorgeschlagen. Wenn man auf 
die letzte Stelle verzichten kann, dann passt es.

Weiter oben hatte ich bereits geschrieben: Einfacher FPGA/CPLD oder uC 
mit diskretem Aufbau (Dein Aufbau).

Wenn der TO jedoch den genauen zeitlichen Bezug nicht benötigt, dann ist 
mir unklar, wofür er überhaupt die Uhr benötigt. Weiter oben wurde 
Abzählen vorgeschlagen.

: Bearbeitet durch User
von m.n. (Gast)


Lesenswert?

Lars R. schrieb:
> Wird der Zählstand auf das Trigger-Signal hin verändert, so ist die
> letzte Stelle immer unscharf, weil die LEDs immer innerhalb der
> Belichtungszeit verändert werden.

Das muß überhaupt nicht sein!

Sobald dieses Trigger-Signal erscheint, werden die Inhalte der 
Schieberegister (4094 z.B.) in deren Ausgaberegister übernommen 
(strobe-Signal) und die Anzeige binnen µs aktualisiert. Anschließend 
wird der nächste Anzeigenwert berechnet und schon mal in die 
Schieberegister geschrieben. Danach wird wieder gewartet, bis das 
Trigger-Signal den nächsten Anzeigenwert anfordert. Der µC hat also sehr 
viel Zeit.

Falls genaueres Timing < 1 µs notwendig sein sollte, kann das 
Trigger-Signal per Input-Capture erfaßt und eine Verzögerung über 
Output-Compare erzeugt werden.
Aber selbst per Software kann der Belichtungszeitpunkt schon hineichend 
genau eingehalten werden.

von Lars R. (lrs)


Lesenswert?

Typischerweise beginnt die Belichtung immer nach dem Trigger. Die LEDs 
sollten demnach ganz kurz vor dem nächsten Trigger geändert werden
...oder eben doch zu einem anderen Zeitpunkt. Es hängt von der Kamera 
und den Trigger-Einstellungen ab.

Bei hohen fps gibt es keinen "Belichtungszeitpunkt", sondern einen 
"Belichtungszeitraum" und einen "Nichtbelichtungszeitpunkt". Bei manchen 
Modellen mit rolling shutter vielleicht nicht einmal diesen.

> Trigger-Signal per Input-Capture erfaßt und eine Verzögerung über Output-Compare 
erzeugt werden.

Klingt gut.

von Andreas M. (kautschuknagel)


Lesenswert?

Oha, da habe ich eine ganze Lawine losgetreten...

Der aktuelle Bedarf ist noch relativ einfach und mir scheint, die 
Highspeedkameras stellen die besondere Herausforderung dar. Zum 
Hintergrund:

Ich muß wissen, wie weit Bild und Ton bei Aufnahmen von mehreren 
unterschiedlichen Kameras, die nicht getaktet werden können, 
auseinanderliegen. Es kann vorkommen, daß Bild und Ton langsam 
auseinanderlaufen und das deutlicher wird, je länger die Aufnahme läuft.

Dazu lasse ich bisher ein Video auf einem Monitor laufen. Es zeigt 
fortlaufenden Timecode und gibt alle 30 Sekunden einen Ton mit der Dauer 
von 5 Bildern aus. Gleichzeitig wird ein Kreis ebenfalls 5 Bilder lang 
angezeigt.

Die Kameras nehmen diesen Film auf und bei der Prüfung der Aufnahme kann 
ich leicht feststellen, welche keine Asynchronität von Bild und Ton 
aufweist. Für die Entwicklung einer Aufnahmesoftware soll die 
fehlerfreie Funktion geprüft werden können. Bild und Ton kommen dabei 
nicht von der Kamera sondern von unterschiedlichen Quellen. Auch kann 
man dann leicht feststellen, welche Rechner zum Aufnehmen geeignet sind 
und welche nicht.

Das ist noch relativ simpel, wenn es um die üblichen Frameraten von 
25,30,50 und 60 geht. Dazu muß ich aber schon vier Filme erstellen und 
jeder läuft 12 Stunden.

Problematisch wird es, wenn höhere Frameraten ins Spiel kommen. Das 
stellt dann die Grafikkarte nicht mehr dar, mal ganz vom Schnittprogramm 
abgesehen, das ja auch mit der Framerate umgehen muß.

Bei Kameras für 100 fps und mehr ist der Ton meist irrlevant. Da ist 
dann wichtiger, wie weit die Kameras zueinander synchron sind. Bei den 
Standardframeraten ist das eher unwichtig, da diese einen anderem Zweck 
dienen.

Insofern kam mir der Gedanke ein für alle Zwecke gleichermaßen 
taugliches Gerät zu haben. Mein Gedanke war, daß z.B. ein Raspberry die 
Startzeit an die Anzeige sendet und diese dann startet. Gleichzeitig 
würde er eine LED ansteuern und den Ton senden (beide z.B. 5 Frames 
lang). Grundsätzlich könnte aber die ganze Funktionalität in einem 
einzigen Gerät stecken. Die Lautstärke des Tons wäre eigentlich das 
einzige, das man ändern können sollte und natürlich die Framerate. Ich 
bin sicher, daß längst nicht jede Framerate benötigt wird. Es macht 
keinen Sinn mit z.B. 133 oder 41 Frames anzuzeigen, wenn die Kameras 
diese nicht unterstützen. Da würden auch 5er Schritte genügen. Ich kann 
nur nicht absehen, welche Kameras in Zukunft unterstützt werden sollen 
und wenn es nur eine Sache der Programmierung wäre und es keinen 
nennenswerten Aufwand bedeutet, wäre natürlich die frei wählbare 
Framerate von 1-400 die sicherste Lösung.

Im Grunde ist das ganze eine Filmklappe mit erweiterter Funktion.

von Falk B. (falk)


Lesenswert?

@ Lars R. (lrs)

>Typischerweise beginnt die Belichtung immer nach dem Trigger.

Wahrscheinlich.

> Die LEDs
>sollten demnach ganz kurz vor dem nächsten Trigger geändert werden

Naja, diese Frage ist schon recht akademisch. Denn was macht ein 
Übersprechen von vielleicht 1-2us bei einer Belichtungszeit von fast 
1000us aus?

>> Trigger-Signal per Input-Capture erfaßt und eine Verzögerung über
>Output-Compare erzeugt werden.

>Klingt gut.

Oder man hängt das Triggersignal gleich direkt an den Übernahmepuls der 
Schieberegister, dann sind es nur ein paar Dutzend Nanosekunden 
Verzögerung.

von Falk B. (falk)


Lesenswert?

@Andreas Mann (kautschuknagel)

>Ich muß wissen, wie weit Bild und Ton bei Aufnahmen von mehreren
>unterschiedlichen Kameras, die nicht getaktet werden können,
>auseinanderliegen. Es kann vorkommen, daß Bild und Ton langsam
>auseinanderlaufen und das deutlicher wird, je länger die Aufnahme läuft.

Wer macht denn sowas? Bild und Ton getrennt und plesiochron aufzeichnen?

>Das ist noch relativ simpel, wenn es um die üblichen Frameraten von
>25,30,50 und 60 geht. Dazu muß ich aber schon vier Filme erstellen und
>jeder läuft 12 Stunden.

???

>nennenswerten Aufwand bedeutet, wäre natürlich die frei wählbare
>Framerate von 1-400 die sicherste Lösung.

Das ist einfach.

von Lars R. (lrs)


Lesenswert?

@ Andreas M.:

Für den Highspeed-Fall:

Wenn Du von jeder Kamera ein Trigger-Signal hast, so kann man die 
Triggersignale miteinander vergleichen.

Wenn das Trigger-Signal jedoch nicht von den Kameras kommt, woher kommt 
es? Von einer Uhr?

von Andreas M. (kautschuknagel)


Lesenswert?

Es gibt schlicht und ergreifend keinen externen Takt. Die Kameras werden 
manuell gestartet und fertig. Natürlich sind die nicht synchron 
zueinander. Was für den Anwendungsfall nicht sonderlich relevant ist.

Wichtig aber ist, daß das Bild zum Ton passen muß. Eine Abweichung von 
+/- 40 ms ist akzeptabel, solange diese konstant bleibt.

Bei den Highspeedkameras wäre eigentlich nur wichtig zu sehen, ob die 
bei der Kamera eingestellte Framerate von 400 korrekt vom Programm 
aufgezeichnet wird. Wenn ich davon ausgehen kann, daß das Gerät korrekte 
400 Bilder pro Sekunde darstellt, muß in der Aufzeichnung jeder Wert 
sauber lesbar sein. Ist das nicht der Fall, kann entweder die Kamera 
nicht die versprochene Framerate einhalten oder - was wahrscheinlicher 
ist - das Aufnahmeprogramm muß nachgebessert werden.
Ob dann Kamera 1 bis Kamera n alle das gleiche Bild bei z.B. TC 
01:00:00:234 anzeigen, ist unerheblich. Sie müssen nicht synchron 
zueiander laufen.

von Falk B. (falk)


Lesenswert?

Deine Anwendung ist mysteriös! Und wenn eine Kamera nicht exakt die 
eingestellt Framerate aufzeichnet, sollte man sie wegwerfen.

>Wenn ich davon ausgehen kann, daß das Gerät korrekte
>400 Bilder pro Sekunde darstellt, muß in der Aufzeichnung jeder Wert
>sauber lesbar sein.

Das haben dir mehrere Leute versucht zu erklären. Ohne Synchronisation 
wirst du viele verschwommene Geisterbilder bei deiner Uhr sehen! Auch 
wenn die korrekt funktioniert! Man könnte das höchstens mildern, indem 
man die Anzeigezeit kürzer als die Periodendauer eines Bilds/Belichtung 
macht. Alsi bei 100 Bildern/s die Anzeige nur 3ms anstatt 10ms leuchten 
läßt, dafür aber heller. Dann ist die Chance auf Doppelbelichtung 
geringer.

von Andreas M. (kautschuknagel)


Lesenswert?

Sprechen wir bei den verschwommenen Bildern von den Highspeedkameras? 
Ich vergleiche das mit einer elektronischen Filmklappe. Da laufen die 
Kameras frei und zeigen den Timecode der Klappe Bild für Bild an. So 
hatte ich das gedacht, nur eben mit höherer Framerate.

von Max D. (max_d)


Lesenswert?

Andreas M. schrieb:
> Da laufen die
> Kameras frei und zeigen den Timecode der Klappe Bild für Bild an.

Ja, weil die Klappe nur Sekunden zählt und damit ein Übergang nur alle 
24 Bilder stattfindet.

von Andreas M. (kautschuknagel)


Lesenswert?

>
> Ja, weil die Klappe nur Sekunden zählt und damit ein Übergang nur alle
> 24 Bilder stattfindet.

Da muß ich Dich korrigieren. Elektronische Klappen zeigen in aller Regel 
den Timecode achtstellig mit Frames an.

von Jonas G. (jstjst)


Lesenswert?

Hast du meine PN bekommen?

von Andreas M. (kautschuknagel)


Lesenswert?

Jonas G. schrieb:
> Hast du meine PN bekommen?

Ja, und ich habe dann über das Forum eine Mail an Dich geschrieben.

von Jonas G. (jstjst)


Lesenswert?

Bei mir kam mal nichts an.

von eProfi (Gast)


Lesenswert?

Genau so etwas wollte ich schon lange bauen.
Wenn jemand eine weitere Platine für mich mit-baut, kaufe ich sie 
sofort.
Rel. große Displays (25mm?) wären gut.
Das mit dem Frame-Syncro sehe ich nicht so tragisch. Meist kann man die 
zwei verwaschenen Ziffern doch erkennen, da sie nicht gleich hell sind.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Apropos abstruse Framerates: Wenn schon eierlegende Wollmilchsau, dann 
aber auch alle Framerates auch noch um 1000/1001 vermindert - altes 
NTSC-Relikt, das sich bis in die Neuzeit weiterschleppt und nicht 
totzukriegen ist ;-)

Gruss
WK

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

gibt es noch Bedarf an der Anzeige? Ich hab mal einen Schaltung 
erstellt, wenn gleich bisher nur auf dem elektronischen Papier. Wenn der 
OP bzw. der eProfi noch Interesse haben, würde ich mal ein paar Platinen 
in China bestellen (wir wollen ja zum globalen Wirtschaftswachstum und 
auch der globalen Umweltverschmutzung beitragen ;-)

Ich würde dann eine bestücken und alles entwickeln und testen. Den 
Prototypen würde ich dann hier verkaufen, Material + Versandkosten + ein 
kleines, symbolisches Entgeld. Ich würde bei Elecrow bestellen, dort 
gibt es 5 Stück zu Superpreis von 30 Euro, bzw. 6 Euro pro Stück. Die 
könnten dann auch von mir gekauft werden.

Die Anzeige hat 9 7-Segmentanzeigen mit 20mm Höhe, alles direkt per 
LED-Treiber angesteuert (kein Multiplexing). Ein optionaler SYNC-Eingang 
kann zum Zählen der Frames verwendet werden, falls es mit dem 
unsynchronisierten Zählen nicht so recht klappen sollte. Die Platine ist 
50mmx180mm klein, Speisung per 3,3V aus einem Steckernetzteil. 
Kommunikation per USB/virtueller COM-Port.

Interesse?

von eProfi (Gast)


Lesenswert?

Gute Idee, Falk!  Bin mit 2 Platinen dabei.
Ein Gehäuse wäre ebenfalls gefragt.

von Andreas M. (kautschuknagel)


Lesenswert?

Besten Dank für das Aufgreifen. Ja, da bin ich natürlich auch dabei.

von Thomas E. (picalic)


Lesenswert?

Wenn ich so die Abbildung der 7-Segment Displays ansehe: wäre es nicht 
schöner, die Minuten/Sekunden/Frames optisch etwas voneinander zu 
trennen?

von Falk B. (falk)


Lesenswert?

Die Trennung erfolgt mittels Dezimalpunkt auf den Anzeigen.

von Andreas M. (kautschuknagel)


Lesenswert?

Wäre für meine Zwecke absolut ausreichend.

von Falk B. (falk)


Lesenswert?

OK, die Bestellungen für die Bauteile und die Platinen sind raus, 
letztere könnte bis zu 25 Tage für die Lieferung dauern. In der 
Zwischenzeit werd ich mal die Software vorbereiten.

von Andreas M. (kautschuknagel)


Lesenswert?

Wunderbar, vielen Dank für Deine Mühe!

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

So, die Boards sind fertig und nun unterwegs nach Deutschland, das kann 
aber 1-4 Wochen dauern 8-0

von m.n. (Gast)


Lesenswert?

Anstatt die Luft weiter umzurühren, solltest Du lieber die zu Grunde 
liegende Schaltung zeigen. Dann kann man sehen, was geht und was nicht.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

m.n. schrieb:
> Anstatt die Luft weiter umzurühren, solltest Du lieber die zu
> Grunde
> liegende Schaltung zeigen. Dann kann man sehen, was geht und was nicht.

Ja, so macht ehrenamtliches Entwickeln doch gleich viel mehr Spass.

SCNR,
WK

von m.n. (Gast)


Lesenswert?

Ich verstehe nicht, was Du uns/mir sagen willst.

von Falk B. (falk)


Lesenswert?

@m.n. (Gast)

>Anstatt die Luft weiter umzurühren, solltest Du lieber die zu Grunde
>liegende Schaltung zeigen. Dann kann man sehen, was geht und was nicht.

"Vertrauen Sie mir, ich weiß was ich tue" (tm)

;-)

von m.n. (Gast)


Lesenswert?

Falk B. schrieb:
> "Vertrauen Sie mir, ich weiß was ich tue" (tm)

Du bist ja ein Spaßvogel!

Hier im Forum geht es darum, Informationen auszutauschen. Zu Deiner 
Katze im Sack gibt es keinerlei dergleichen. Welche Displaytreiber? 
Welcher Prozessor? Alles Fehlanzeige.

Du bist jemand, der wiederholt mit dem Hinweis auf Netiquette auffällt. 
Auf der anderen Seite spielst Du hier mit verdeckten Karten - nur nichts 
verraten.
So ist das eben mit Leuten, die sich wichtig machen wollen.

von Falk B. (falk)


Lesenswert?

@ m.n. (Gast)

>> "Vertrauen Sie mir, ich weiß was ich tue" (tm)

>Du bist ja ein Spaßvogel!

In der Tat!

>Hier im Forum geht es darum, Informationen auszutauschen.

Stimmt.

>Zu Deiner
>Katze im Sack gibt es keinerlei dergleichen. Welche Displaytreiber?
>Welcher Prozessor? Alles Fehlanzeige.

Könnte ich nennen, ist auch kein wirkliches Geheimnis oder Rocket 
Science.
Ist ein uralter ATmega8 mit 7,3728 MHz Quarz, 5x TLC59284 + Gemüse. 
Laaaaangweilig.

>Du bist jemand, der wiederholt mit dem Hinweis auf Netiquette auffällt.
>Auf der anderen Seite spielst Du hier mit verdeckten Karten - nur nichts
>verraten.
>So ist das eben mit Leuten, die sich wichtig machen wollen

Keine Sekunde. Ich liefere ein fertiges Produkt, dann darf sich auch 
jeder den Schaltplan anschauen und es nach Herzenslust kommentieren. 
Aber vorher will der Künster nicht gestört werden ;-)

In Wahrheit brennst du doch nur darauf, ein Haar in der Suppe zu finden 
und mich mal richtig runter zu machen, nicht wahr?

von m.n. (Gast)


Lesenswert?

Falk B. schrieb:

> Ist ein uralter ATmega8 mit 7,3728 MHz Quarz, 5x TLC59284 + Gemüse.
> Laaaaangweilig.

Du sagst es.
So ein großer Affe, für so eine kleine Frage :-(

von Andreas M. (kautschuknagel)


Lesenswert?

Ich lasse mich einfach überraschen und vertraue darauf, daß Falk 
verstanden hat, was mir wichtig ist. Es brennt nicht unter den Nägeln, 
ob das nun 4 oder 8 Wochen dauert, ist mir gleich.

Danke schonmal für die Mühe!

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

So, die Brieftaube war diesmal außerordentlich schnell und die Boards 
sind schon da! Sie sehen sehr gut aus, nur der Bestückungsdruck ist um 
einen Tick verschoben, aber das macht keine Probleme, die SMD-Pads sind 
frei.

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

So, das Board ist fast komplett, es fehlt nur noch der MUX für den SYNC 
Eingang (falschen Typen bestellt). Ansonsten funktioniert alles wie 
erwartet. Das Ding zieht ~1,4A@3,3V, also knapp 5W, das macht ordentlich 
Wärme und Licht ;-) Aber bei 1000 fps wird man es brauchen. Die 
Framerate ist von 1-1000 frei einstellbar, siehe Anhang.

Leider gibt es einen großen Abzug in der B-Note 8-( Die scheiß 
Footprints der LED-Treiber sind zu breit!!! Die Jungs von TI nennen das 
Gehäuse zwar SSOP24, aber DIESE haben erstens 0,635mm (25mil) Pitch 
anstatt 0,65 wie die allermeisten metrischen SSOPs und zweitens sind sie 
schmaler!!! Den Pitch hab ich vorher gesehen und korrigiert, die Breite 
nicht! ARRRRGG!!!!
Damit berühren die Beinchen die Pads nur minimal, so ca. 0,2mm auf jeder 
Seite. Aber mit etwas Geschick kann man sie dennoch anlöten und es hält.

@Andreas Mann (kautschuknagel)

So, nun zum "Geschäftlichen". Ich hab hier den kompletten Prototypen, 
der ist für dich. Kostet 50 Euro incl. Versand für Material + Platine. 
Dazu ein symbolisches Entgeld, daß dir diese Platine wert ist, wenn sie 
ein guter Freund für dich gebaut hätte.

Dann hab ich noch einmal komplett alle Bauteile für einen 2. Prototypen, 
der steht zum gleichen Preis zum Verkauf, ist aber nicht bestückt.

Die restlich 3 Platinen gebe ich jeweils mit 5x TLC59284 für 15 Euro 
incl. Versand ab, das sind die reinen Materialkosten . . . Die TLC 
deshalb, weil man die nicht überall kaufen kann, den Rest gibt es bei 
Reichelt & Co.

Und last but not least ist noch eine 6. Platine übrig, gab's als 
Überproduktion kostenlos vom freundlichen Chinamann dazu, Kostenpunkt 8 
Euro incl. Versand. |-) Diese allerdings ohne die TLCs.

ACHTUNG!!! Hier noch einmal der Hinweis an potentielle Käufer! Die 
Footprints für die LED-Treiber sind zu breit, aber mit etwas Geschick 
kann man sie anlöten! Außerdem ist auf dem Bestückungsaufdruck R4 und 
C13 vertauscht.

Die Projektdaten lade ich nächste Woche hoch, wenn der Feinschliff 
fertig ist.

von Andreas M. (kautschuknagel)


Lesenswert?

Besten Dank Falk!

Ich habe schon mal mails an Beutzer hier verschickt, das hat nicht 
geklappt. Schick mir bitte Deine Kontaktdaten an pebi52@web.de und wir 
machen das weitere direkt. Die Adresse kann man gerne zumüllen, ich 
lösche den Account ohnehin.

von eProfi (Gast)


Lesenswert?

Auch von mir ein DICKES Dankeschön!
Bin so frei und nehme das Komplettset, die drei Boards und die 
Extra-Platine. Bitte schicke mir eine PM (/user/show/eprofi) mit den 
Bank- oder PP-Daten.
Was ich mir noch gewünscht hätte: ein RTC-Chip, damit man das Teil als 
Uhr verwenden kann. Ist aber einfach mit Fädeldraht nachrüstbar.
Auch DCF-Empfang sollte machbar sein.

Wie schaut es mit einem Gehäuse aus? Gibt es etwas passendes oder muss 
ein 3D-Druck angekurbelt werden?

von eProfi (Gast)


Lesenswert?

Weitere Einträge auf dem Wunschzettel:
Display-On-Off-Kommandos und falls möglich -Eingang
Display-Auto-Off, wenn kein Sync-Signal am Eingang (nach einstellbarer 
Zeit)
Ein weiterer Mode mit einem weiteren Eingangssignal (falls HW-nicht 
möglich, dann das Sync-Signal dazu verwenden):
Es soll die Sekunden:Frames auf 00.000 stellen und die Hh.Mm hochzählen 
(0000-9999, also Ereigniszählung). Das ist hilfreich beim Filmen von 
sich wiederholenden Ereignissen.

Für den Betrieb als Normal-Uhr: Dimmen der LED-Helligkeit mittels 
highSpeedPWM.
Schade, dass es nicht 10 stellig ist, IC7 ist unterbeschäftigt.
Dann hätte man Datum (ohne Jahr) und Uhrzeit darstellen können.
Datumformat einstellbar, ob MmDd (USA, JP) oder DdMm (EU).

Wie ist die Darstellung bei Frame-Zahlen unter 10 / unter 100?
right-justified oder left-justified?   Am besten einstellbar machen.


Autor:  Lars R. (lrs)  Datum: 13.08.2016 15:37
> Weiterhin kann man jede BCD-Stelle (zusätzlich) mit einer Reihe
> von 9 LEDs kodieren und diese LEDs der Reihe nach anschalten (0...9)
Noch ein Vorschlag gegen das Verwaschen der letzten Stelle: statt dort 
eine Ziffer anzuzeigen, nur ein Segment bzw. zwei nicht benachbarte,
also z.B.
Zi Segment
0  a   a
1  b   b
2  c   c
3  d   d
4  e   e
5  g   f
6  c   g
7  d  a+d
8  e  b+f
9  f  c+e

von Falk B. (falk)


Lesenswert?

@eProfi (Gast)

>Weitere Einträge auf dem Wunschzettel:

...

Ähm, ich glaube das ufert jetzt ein wenig aus. Der OP war der 
Ausgangspunkt was Soft- und Hardware angeht. Die eierlegende 
Wollmilchsau sollte es nicht werden. Wenn du die Boards aufbohren 
willst, kannst du das gern tun. Die Doku incl. Software dazu folgt 
nächste Woche.

>Noch ein Vorschlag gegen das Verwaschen der letzten Stelle: statt dort
>eine Ziffer anzuzeigen, nur ein Segment bzw. zwei nicht benachbarte,
>also z.B.

Das löst das Problem auch nicht, dann sind halt 2 Einzelsegmente 
verwaschen. Das ist aber ggf. besser erkennbar, weil sich 
aufeinanderfolgende Zahlen deutlicher unterscheiden als bei 
Zifferndarstellung, wie z.B. 2 und 3.

von Andreas M. (kautschuknagel)


Lesenswert?

Ich bin begeistert und bedanke mich ausdrücklich bei Falk für die 
wirklich ordentliche Arbeit. Eine kurze Installationsschwierigkeit 
bezüglich des Treibers für W7/64 ließ sich schnell beheben. Ich habe den 
passenden Treiber installiert und dann war ein Neustart notwendig. Jetzt 
läuft es einwandfrei.

Treiber: http://www.ftdichip.com/Drivers/VCP.htm

Lediglich den Start via externem Signal habe ich noch nicht probiert. 
Ich vermute, das Signal muß über den schwarzen Anschluß mit den 6 Pins 
kommen. Welche Spannung und an welche Pins?

von Falk B. (falk)


Lesenswert?

@ Andreas Mann (kautschuknagel)

>passenden Treiber installiert und dann war ein Neustart notwendig. Jetzt
>läuft es einwandfrei.

Schön zu hören.

>Lediglich den Start via externem Signal habe ich noch nicht probiert.
>Ich vermute, das Signal muß über den schwarzen Anschluß mit den 6 Pins
>kommen. Welche Spannung und an welche Pins?

NEIN! Dafür gibt es J1! Dort kann man ein 3,3V CMOS Signal einspeisen, 
TTL mit 5V geht auch (weil das nur bis ca. 3,7V hoch geht).

von Andreas M. (kautschuknagel)


Lesenswert?

Einen J1 sehe ich nicht. Ich vermute, es ist der JP1 gemeint?
Wenn ich von vorne auf das Board sehe, also die Segmentanzeigen sichtbar 
sind, dann scheint mir der linke Pin für Minus zu sein und der rechte 
für Plus, der zum IC 10 führt. Ist das richtig?

von Falk B. (falk)


Lesenswert?

@Andreas Mann (kautschuknagel)

>Einen J1 sehe ich nicht. Ich vermute, es ist der JP1 gemeint?

Ja

>Wenn ich von vorne auf das Board sehe, also die Segmentanzeigen sichtbar
>sind, dann scheint mir der linke Pin für Minus zu sein

Ja, das ist Masse/GND

>und der rechte für Plus, der zum IC 10 führt. Ist das richtig?

Ja

von Falk B. (falk)


Angehängte Dateien:

Lesenswert?

OK, hier die Projektdaten.

von eProfi (Gast)


Lesenswert?

--- gestern getippt ---
Falks Packerl kam am Samstag an. Vielen Dank, 1A Qualität und sehr 
sauber gelötet.
Aber: ich habe das Display ins temporäre digitale Nirvana geschickt:
Ich hatte die oben gepostete Anleitung nur kurz überflogen.

Beim Ausprobieren hatte ich nur ein 3V-4A-Netzteil (das vom BC700 Accu 
Charger) und einen Rechner, kein iNet und kein PDF.
Angestöpselt, Selbsttest (alle Segmente werden lauflicht-artig 
durchlaufen), FDTI-Treiber lädt erfolgreich.
verschiedene Baudraten durchprobiert, 4. Treffer war 38400.
Dank der Fehlermeldungen schnell die gültigen Befehle herausgefunden.
(ein Help-Text mit ? wäre hilfreich gewesen).
Starten und Stoppen, alles klappt gut.

Aber dann: über das X-Kommando (Quarzabgleich) gestolpert.
ohne Parameter stellt es auf ca. -16560 ppm. Die Uhr lief viel zu 
langsam.
Dann einen Wert herausgefunden, der -0.0 ppm anzeigt, aber nicht stimmen 
kann.  Dann versehentlich X,6000 eingegeben, das war's. Das Ding 
reagiert nicht mehr auf Eingaben, es gibt nur noch die Einschaltmeldung 
aus und zeigt 00.00.00.000 an.
Vermutlich läuft jetzt ein Interrupt viel zu schnell, so dass die 
serielle nicht mehr zum Zug kommmt.
Dazwischen hatte ich nämlich schon Werte gefunden, mit denen die Uhr 
viel zu schnell lief und dabei "verwaschen" die Stellen (übersprechen), 
d.h. man konnte die benachbarten Stellen mitglimmen sehen, ähnlich wie 
bei einer gemultiplexten Anzeige.
Leider habe ich kein Programmierzeug da und kann das EPROM nicht 
löschen.

Weitere Eintragungen der zu späten Wunsch-Liste:
Step-Down-Regler, damit man das Display auch mit 5, 12 oder 24V speisen 
kann.
Freie Prozessor-Pins auf Stecker führen, damit Erweiterungen möglich 
sind.


--- heute getippt ---
Also, ich muss sagen, unser Falk hat das Ganze sehr professionell 
aufgezogen. Hut ab!
Eine Kleinigkeit: Vorsicht beim X-Befehl (Quarzfrequenz genau 
einstellen).
Wenn man versehentlich X,6000 eingibt, ist keine serielle Kommunikation 
mehr möglich. Überhaupt nicht mehr, auch nach Wiedereinschalten, da die 
Daten im EEPROM gespeichert werden.
Mir ist noch nicht klar, was da passiert. Ich vermute zu schnelle 
Interrupts, die das System voll auslasten.
In der Software ist eine Abfrage drin, die eigentlich nur +/- 1000 ppm 
zulässt, aber ...
Nach Löschen der ersten EEPROM-Bytes (es stand 00 00 e0 2e (12000) 
drin)geht nun wieder alles.

Falk, welches ist die älteste Software, mit der man das Projekt 
compilieren kann?

von Falk B. (falk)


Lesenswert?

@eProfi (Gast)

>Dank der Fehlermeldungen schnell die gültigen Befehle herausgefunden.
>(ein Help-Text mit ? wäre hilfreich gewesen).

Stimmt.

>Aber dann: über das X-Kommando (Quarzabgleich) gestolpert.
>ohne Parameter stellt es auf ca. -16560 ppm. Die Uhr lief viel zu
>langsam.

Das sollte eigentlich nicht möglich sein, denn die Eingabe wird geprüft.

Siehe cmd_terminal.c, cmd_cal_fcpu()

>In der Software ist eine Abfrage drin, die eigentlich nur +/- 1000 ppm
>zulässt, aber ...

Eben!

>Falk, welches ist die älteste Software, mit der man das Projekt
>compilieren kann?

Ich hab es mit AVR-Studio 4.18 und avr gcc 2010??? erstellt, sollte aber 
auch noch mit deutlich älternen Versionen laufen, hat ja keine 
besonderen Tricks drin.

von MWS (Gast)


Lesenswert?

Falk B. schrieb:
> Das sollte eigentlich nicht möglich sein, denn die Eingabe wird geprüft.

Nicht die Länge der Eingabe, len existiert zwar, wird aber nicht 
geprüft. Ein Kommando ohne Parameter übernimmt einfach irgendwelche 
vorhergehende Werte aus dem Puffer.

von Falk B. (falk)


Lesenswert?

@MWS (Gast)

>Nicht die Länge der Eingabe, len existiert zwar, wird aber nicht
>geprüft. Ein Kommando ohne Parameter übernimmt einfach irgendwelche
>vorhergehende Werte aus dem Puffer.

Ja, aber wenn der umgewandelte Wert zu weit vom Sollwert abweicht, wird 
der Befehl verweigert. Damit kann eigentlich kein total abweichender 
Wert aktiv werden.

von MWS (Gast)


Lesenswert?

Falk B. schrieb:
> Ja, aber wenn der umgewandelte Wert zu weit vom Sollwert abweicht, wird
> der Befehl verweigert. Damit kann eigentlich kein total abweichender
> Wert aktiv werden.

Nö, probier' mal:
1
uint32_t f_cpu, delta;
2
  f_cpu = 2*atol("-1");          // f_cpu = 4294967294
3
  delta = abs(f_cpu - T_CPU);    // delta = 4610
4
    if ( delta < T_CPU/1000 ) {  // true
5
        gconfig.f_cpu = f_cpu;   // oops
6
  }
Du hättest labs() nehmen müssen, abs() geht nur für Integer.

von MWS (Gast)


Lesenswert?

Zum Testcode hätte auch noch ein:
1
define T_CPU 8000000
gehört.
Bzw., ich hätt's für mein Post wieder zurück benennen sollen.

von eProfi (Gast)


Lesenswert?

Danke fürs Finden, MWS!
Ich hätte es erst mit einem Simulator / Debugger herausgebracht.

Weitere Wunschliste:
Die Uhr könnte gleich beim PowerOn loslaufen. Für einfache Tests reicht 
das, man braucht keinen Rechner zum Starten.

Oder man verwendet vier der freien Pins, um zu starten  lappen  
stoppen, resetten, dann hätte man eine schöne Stoppuhr.

Ein paar Dipschalter, um die Betriebsart zu wählen.

Up/Down/Dir/Reset-Counter-Eingänge, z.B. zum Debuggen von 
Schrittmotoren.

Ein "Grafikmodus", bei dem man jedes Segment einzeln ansteuern kann, 
wäre für Animationen auch nett.

Und überhaupt hätte man auch die 16-Segment-Displays PSA 08-11 verwenden 
können, um Texte darzustellen ;-)
http://cdn-reichelt.de/documents/datenblatt/A500/PSA08-11_PSC08-11%23KIN.pdf
Aber die haben ja 17 LEDs (Dezimalpunkt), dann reichen die 
Treiberausgänge nicht.
Die PSA 08-12 haben nur 16 LEDs (kein DP), dafür aber eine komplett 
andere Pinbelegung.

Apropos DP: die gelieferten Displays schauen anders aus als im 
Datenblatt, sie sind schmaler und haben kein Loch für den linken DP1.
http://cdn-reichelt.de/documents/datenblatt/A500/SA08-11SRWA%28V7%29.pdf

von MWS (Gast)


Lesenswert?

eProfi schrieb:
> Ich hätte es erst mit einem Simulator / Debugger herausgebracht.

Man kann's an meinen Bemerkungen im Quelltext sehen, dass ich das auch 
nicht anders gemacht haben konnte.

> Weitere Wunschliste:

An wen richtest Du eigentlich Deine Wünsche?
Falk hat erklärt, dass er das Aufmotzen über die ursprünglich angefragte 
Lösung hinaus nicht als Lebensbeschäftigung ansieht und der TE scheint 
zufrieden zu sein.

Es sieht für mich so aus, also ob diese Wunschliste von Dir umgesetzt 
werden müsste. Da die Projektdaten vorhanden sind, steht dem nichts im 
Wege, frisch an's Werk ;-)

von Falk B. (falk)


Lesenswert?

@Andreas Mann (kautschuknagel)

Was macht das Display? Schon erfolgreich benutzt?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.