Suche Puls Generator

#3360828
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
#3360836
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.
#3360896
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
#3360942
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.
Gast #3360982
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.
#3361754
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
Gast #3361776
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
Gast #3361905
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.
Gast #3363416
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.
#3363437
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.
#3363444
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.
Gast #3371906
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren