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
@ 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.
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
greg Tschirner schrieb: > ich suche einen einfachen Trigger Generator. Welcher Frequenz- und welcher PW-Bereich?
Hallo, so wie ich oben bereits schrieb. Frequenzbereich: genau 25Hz PW-Bereich: 1-10ms. Brauche nur eine steigende Flanke. Danke
@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.
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.
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.
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.
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
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
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
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.
Wow, danke, klingt nach wirklich einem sehr brauchbaren Ansatz. Vielen Dank schon mal dafür. Beste Grüße Greg
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.
@ 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.
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.
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.