Forum: Analoge Elektronik und Schaltungstechnik Suche Puls Generator


von greg T. (ikarus79)


Lesenswert?

Hallo in die Runde,

ich suche einen einfachen Trigger Generator.
Er muss nur ein Standard-Rechecksignal erzeugen (5V TTL). Die Pulslänge 
sollte sich über ein USB- oder Ehternet-Interface einstellen lassen und 
dieser zudem auch darüber ein und ausschalten lassen.
Auch wenn die Frequenz mit der er betrieben wird nur 25Hz beträgt, 
dürfte er dennoch keinen Jitter >50ns haben. Ein BNC 50 Ohm Output wäre 
hervorragend.

Ich benutze z.Z. den Gardasoft CC320, doch der ist leider zu ungenau.

Bin für jeden Hinweis dankbar.

Beste Grüße
Greg

von Falk B. (falk)


Lesenswert?

@ greg Tschirner (ikarus79)

>Er muss nur ein Standard-Rechecksignal erzeugen (5V TTL). Die Pulslänge
>sollte sich über ein USB- oder Ehternet-Interface einstellen lassen und
>dieser zudem auch darüber ein und ausschalten lassen.
>Auch wenn die Frequenz mit der er betrieben wird nur 25Hz beträgt,
>dürfte er dennoch keinen Jitter >50ns haben. Ein BNC 50 Ohm Output wäre
>hervorragend.

Ein kleiner Mikrocontroller mit Quarz schafft das spielend, Einsellung 
per virtuellem RS232 über USB ala FT232.

von greg T. (ikarus79)


Lesenswert?

Falk Brunner schrieb:
> @ greg Tschirner (ikarus79)
>
>>Er muss nur ein Standard-Rechecksignal erzeugen (5V TTL). Die Pulslänge
>>sollte sich über ein USB- oder Ehternet-Interface einstellen lassen und
>>dieser zudem auch darüber ein und ausschalten lassen.
>>Auch wenn die Frequenz mit der er betrieben wird nur 25Hz beträgt,
>>dürfte er dennoch keinen Jitter >50ns haben. Ein BNC 50 Ohm Output wäre
>>hervorragend.
>
> Ein kleiner Mikrocontroller mit Quarz schafft das spielend, Einsellung
> per virtuellem RS232 über USB ala FT232.

Hallo Falk,

ich bin mir dessen durch aus bewusst, dass dies nicht weiter kompliziert 
ist. Doch leider fehlen mir die Möglichkeiten mir selbst einen 
Triggergenerator zu basteln. Darüber hinaus fehlt mir auch die Zeit. 
Deshalb brauche ich etwas out-of-the-box. Habe Conrad & Co schon 
durchforstet.

Bitte um weitere Hinweise und danke im Voraus-
greg

von m.n. (Gast)


Lesenswert?

greg Tschirner schrieb:
> ich suche einen einfachen Trigger Generator.

Welcher Frequenz- und welcher PW-Bereich?

von greg T. (ikarus79)


Lesenswert?

Hallo,

so wie ich oben bereits schrieb.
Frequenzbereich: genau 25Hz
PW-Bereich: 1-10ms. Brauche nur eine steigende Flanke.

Danke

von Falk B. (falk)


Lesenswert?

@greg Tschirner (ikarus79)

>ich bin mir dessen durch aus bewusst, dass dies nicht weiter kompliziert
>ist. Doch leider fehlen mir die Möglichkeiten mir selbst einen
>Triggergenerator zu basteln. Darüber hinaus fehlt mir auch die Zeit.
>Deshalb brauche ich etwas out-of-the-box. Habe Conrad & Co schon
>durchforstet.

Dazu braucht es zumindest mehr Details.

Pulsbreite von bis, Frequenz von bis.

Ich fürchte, da wird man soo einfach nix finden. Oder man nimmt einen 
normalen Funktionsgenerator, wobei der dann einiges mehr kostet, wenn er 
per USB oder Ethernet steuerbar sein soll erst recht.

Schreib einen Betrag mit ALLEN notwenigen Information im Forum MARKT, 
vielleicht findet sich jemand, der das für dich für eine kleine 
Entschädigung macht. Dabei kann man eines der Millionen uC Boards 
nehmen, die schon USB drauf haben. Dann muss man nur noch ein klein 
wenig programmieren.

von m.n. (Gast)


Lesenswert?

greg Tschirner schrieb:
> PW-Bereich: 1-10ms. Brauche nur eine steigende Flanke.

Und welche Auflösung bei der PW?
Was soll den jitterfrei sein, die PW oder die 25Hz oder beides?
Die exakten 25Hz macht ein µC per Timer Output Compare mit Jitter <50ns 
von Hause aus.

von cppler (Gast)


Lesenswert?

Wenn's schnell gehen soll und Preis keine Rolle spielt suche nach USB 
Funktionsgeneratoren und suche den für Dich passenden aus.
Mit z.B. einem Tiny85, Quarz und Libusb o.ä. bekommt man das auch ohne 
größere Probleme hin, bräuchtest noch Programmer und IDE.
Von der Zeit her dürfte es gleich bleiben ob Du nun ein paar Tage 
wartest bis der Funktionsgenerator da ist oder Du Dir die Bauteile 
orderst und programmierst.

von m.n. (Gast)


Lesenswert?

cppler schrieb:
> Mit z.B. einem Tiny85 ... bekommt man das auch ohne
> größere Probleme hin,

Leg mal die Karten auf den Tisch!
Das will ich sehen.

von Reinhard Kern (Gast)


Lesenswert?

m.n. schrieb:
> Leg mal die Karten auf den Tisch!
> Das will ich sehen.

Besonders die 50 ns Jitter bei einstellbarer Impulslänge. Der läuft wohl 
mit 200 MHz?

Oder doch die übliche Angeberei.

Gruss Reinhard

von greg T. (ikarus79)


Lesenswert?

Hi,

um die Frage von vorhin zu beantworten. Die Pulsweite kann jitten was 
sie will, da ich nur die steigende Flanke brauche. Der Frequenzjitter 
sollte <= 50ns sein. Erst nach 100.000 Pulsen darf ich einen zu viel 
oder zu wenig haben. Bei einer Frequenz von 25Hz kann man sich die 
maximal zulässige Abweichung ausrechnen. Ich habe noch nen leichten 
Buffer draufgeschlagen.

Beste Grüße
Greg

von Reinhard Kern (Gast)


Lesenswert?

greg Tschirner schrieb:
> Die Pulslänge
> sollte sich über ein USB- oder Ehternet-Interface einstellen lassen

greg Tschirner schrieb:
> Die Pulsweite kann jitten was
> sie will, da ich nur die steigende Flanke brauche.

Man soll die Pulslänge also einstellen, sogar ferngesteuert, aber das 
Ergebnis ist egal, weil du nur die steigende Flanke brauchst - höchst 
merkwürdige Aufgabe.

Gruss Reinhard

von m.n. (Gast)


Lesenswert?

Gerade fertig geworden und noch warm: 
http://www.mino-elektronik.de/fmeter/fm_software.htm#bsp8

Nicht die fertige Lösung für Dich, aber ein Ansatz.
25Hz ohne Jitter quarzstabil zu erzeugen ist kein Problem; die Frage 
nach der einstellbaren Pulsweite aber nach wie vor offen.

Ich hatte mir auch die "Datenblätter" zu Deinem jetzigen Genarator 
angesehen; aussagefähige Daten finde ich dort nicht. Scheinbar scheint 
der Anwenderkreis diese nicht zu benötigen.

von greg T. (ikarus79)


Lesenswert?

Wow,

danke, klingt nach wirklich einem sehr brauchbaren Ansatz.
Vielen Dank schon mal dafür.

Beste Grüße
Greg

von m.n. (Gast)


Lesenswert?

greg Tschirner schrieb:
> klingt nach wirklich einem sehr brauchbaren Ansatz.

Für Dich aber nicht ausreichend, da die Ausgangsimpulse letztlich noch 
per Software gesetzt und gelöscht werden. Da dies in der einzigen 
Interruptroutine abläuft, ist der Jitter zwar sehr klein aber beträgt 
immer noch 1-3 Prozessortakte. Dies hängt davon ab, in welchem Zustand 
des µC der Interrupt auftrifft (Ausführungszeit der aktuellen 
Instruktion).
Beim gezeigten Programm war wichtig, kurze (1µs) Impulse zu erzeugen, 
was die Hardware eines AVR so nicht bietet.

Um längere Impulse (1ms-39ms im ms-Raster) bei 25Hz (40ms) jitterfrei zu 
erzeugen, kann man Timer1 als 1000Hz Timer laufen lassen und synchron 
dazu einen OC1x-Ausgang setzen bzw. löschen.

Um Impulse (>=50µs) jitterfrei mit hoher Auflösung zu erzeugen, kann man 
den Timer1 wie im gezeigten Programm betreiben und damit eine sehr 
genaue und stabile Frequenz erzeugen.
Zusätzlich wird nach Ablauf einer Periode (trigger_pw=1;) ein Ausgang 
OC1A (z.B.) zum synchronen Setzen beim nächsten COM1A-Ereignis 
vorbereitet. Der Ausgang OC1A wird beim nächsten gültigen Vergleich 
synchron zum Timer-Takt und unabhängig von der Interrupt-Latenz gesetzt.
In der Interruptroutine wird OCR1A += pulsweite beschrieben und TCCR1A 
so gesetzt, dass der nächste Timer-Interrupt OC1A wieder löscht. Damit 
die Frequenz stabil bleibt muß nachlade_temp -= pulsweite angepaßt 
werden.
Ich hoffe, es ist hinreichend verständlich beschrieben.

Somit kann man jitterfreie, hochaufgelöste Frequenzen/Pulsweiten 
erzeugen, wobei der µC auch noch genug Luft hat, weitere Interrupts zu 
bedienen. Die Einstellungen könnte man per USB-seriell-Wandler - wie 
oben schon geschrieben - an den µC senden, der mit einem 
Befehlsinterpreter entsprechende Aktionen ausführt.
Eine einfache Hardware dafür wäre ein Arduino Uno-Board, welches den 
USB-Wandler und die 5V-Spannungsversorgung schon enthält. Es müßte erst 
einmal nichts gelötet werden.

von Falk B. (falk)


Lesenswert?

@ m.n. (Gast)

>Beim gezeigten Programm war wichtig, kurze (1µs) Impulse zu erzeugen,
>was die Hardware eines AVR so nicht bietet.

Aber sicher, Output Compare mit Timer1. Und mit ein wenig Grips kann man 
das auch bei Pulsperioden machen, die größer als der 16 Bit Zählbereich 
ist.
Damit ist der Jitter nur noch vom Quarztakt abhängig, und der liegt 
unter 1ns.

von Johannes E. (cpt_nemo)


Lesenswert?

greg Tschirner schrieb:
> Der Frequenzjitter
> sollte <= 50ns sein. Erst nach 100.000 Pulsen darf ich einen zu viel
> oder zu wenig haben.

Ist nur der Jitter für dich wichtig oder auch die absolute Genauigkeit 
der Frequenz.

Wenn du sagst, man darf nach 100.000 Pulsen einen zu viel haben, dann 
wäre das eine Genauigkeit von 10 ppm.
Da braucht man schon einen relativ genauen Quarz-Oszillator, ein 
billiger Standard-Quarz am Mikrocontroller schafft das eher nicht.

von m.n. (Gast)


Lesenswert?

Falk Brunner schrieb:
> Und mit ein wenig Grips kann man
> das auch bei Pulsperioden machen, die größer als der 16 Bit Zählbereich
> ist.

Mit ein wenig Grips hätte man sehen können, dass das in meinem Programm 
schon passiert.

von m.n. (Gast)


Lesenswert?

Weiter oben hatte ich ein Programm gezeigt, welches ich nun noch auf 
jitterfreie Impulserzeugung getrimmt und mit einem Befehlsinterpreter 
versehen habe. Die Software ist aus verschiedenen Anwendungen 
zusammengeklickt und daher scheinbar zu üppig ausgefallen. Die Codegröße 
liegt dennoch bei nur ca. 2500 Byte.

Erzeugt werden Impulse von 5µs - 10s mit einer Wiederholfrequenz von 
0,01Hz - 50kHz. Die maximale Pulsweite ist immer 5µs kleiner als die 
Periodendauer. Bei Fehleingaben wird die PW entsprechend reduziert.
Bei 20MHz Taktfrequenz wären 50ns Auflösung möglich, dennoch ist die 
Auflösung auf vereinfachte 1µs reduziert.

Um keinen Aufwand mit der Hardware zu haben, habe ich ein vorhandenes 
Board mit ATtiny4313 genommen. Hier das Ergebnis: 
http://www.mino-elektronik.de/fmeter/fm_software.htm#bsp9
Die 20MHz kommen aus einem sehr stabilen TCXO, dessen Frequenz schon 
ohne Abgleich auf 1ppm genau ist. Die o.g. 10ppm sind somit keine große 
Hürde. Allein ein USB-Adapter und eine BNC-Buchse müßten noch ergänzt 
werden, um eingangs gestellte Forderungen zu erfüllen. Oder man nimmt 
ein Arduino-Board als Hardware-Basis.

von m.n. (Gast)


Lesenswert?

Das Programm habe ich dahingehend verfeinert, dass die Impulsauflösung 
auf 50ns eingestellt werden kann. Ferner werden die zuletzt 
programmierten Zeiten im EEPROM festgehalten und beim Einschalten wieder 
verwendet.
Der Tiny4313 läßt sich damit als Festfrequenz-/PWM-Generator verwenden.

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.