Impulsgenerator mit stat. Impulsen für Arduino

onki

User
Hallo,

ich möchte mir für Testzwecke einen Impulsgenerator bauen.
Der soll aber nicht "normale" Impulse ausgeben sondern einen "statistischen" Impuls mit fester Pulsdauer aber zufälliger Pausenzeit bei festgelegter Impulsrate (ein paar kHz).

Hat jemand einen Ansatz wie man so etwas mit dem Arduino bewerkstelligen kann.
Die Idee wäre ein paar Eingänge als Wahlschalter für die Pulsrate zu nehmen und den Puls dann an einem Ausgang ausgeben.

Gruß
Onki
 

rkopka

User
Der soll aber nicht "normale" Impulse ausgeben sondern einen "statistischen" Impuls mit fester Pulsdauer aber zufälliger Pausenzeit bei festgelegter Impulsrate (ein paar kHz).
Das kann eigentlich nicht gehen. Die Pulsrate ergibt sich aus der Pulsdauer plus der Pausenzeit. Wenn du zwei der Werte festlegst, kannst du den dritten nicht mehr variieren.

Die Idee wäre ein paar Eingänge als Wahlschalter für die Pulsrate zu nehmen und den Puls dann an einem Ausgang ausgeben.
Etwas aufwendiger (SW), aber flexibler. Das LCDKeypad(?) Shield nehmen und es über Tasten und Display einstellen.

RK
 

onki

User
Hallo,

wieso soll das nicht gehen die Natur (Radioaktivität) macht es uns doch vor.
Wenn ich vorgebe 1000 Impulse pro Sekunde auszugeben hab ich schonmal einen groben Zeitrahmen. Nehmen wir eine Pulslänge von normiert 1µs an.
Dann dürfte die längste, mögliche Pausendauer etwa 1ms betragen, will ich alle Pulse erzeugen.

Also das musste irgendwie mit einer Schleife und Random-Funktion gemacht werden.

Es geht darum Detektorsignale zu simulieren. Statistische Signale bedeutet natürlich auch das es möglich sein kann eine Sekunde 900 und die nächste dann 1100 auszugeben.

Oder ist ein 8MHz Arduino damit überfordert 1µs lange Pulse zu erzeugen und dazwischen noch was zu machen? Mir ist deren Performance noch etwas schleierhaft.
Ein Teensy 3.2 wäre auch noch arbeitslos, der hat vermutlich mehr Bumms.
Gruß
Onki
 
Hallo,

dann meinst Du aber "Feste Impulsdauer und variable Frequenz" oder?
Dann ist die Pausenzeit auch unterschiedlich.

Weil bei fester Impulsdauer und fester Frequenz ist die Pausenzeit auch fest...

Darf der Impuls wirklich nur 1µs lang sein?
 

onki

User
Hallo,

Frequenz bezieht sich i.d.R. auf symmetrische Signale. Hier geht es um statistische Signale die keiner festen Regel folgen sondern nur als Impulse/s gezählt werden (extern).
Vom Programm wird das für mein Empfinden eine Art Schleife sein mit einem festzulegenden Zähler.
Zuerst wird geschaut welcher Eingang Log1 hat und der dafür hinterlegte Wert wird als "Impulsrate" verwendet (z.B. 10,100,1k,10k,100k - wird extern über Wahlschalter festgelegt somit kann nur einer Log1 sein).
Ist der Wert anders als vorher wird der Zähler genullt.
Ein Puls mit 1µs Dauer wird ausgegeben und dann läuft eine Random-Zeitspanne (in gewissen Grenzen basierend auf der gewählten Impulsrate) ab. Danach wird die Schleife wiederholt bis der Zähler den Endwert erreicht hat.
Kommt das so in etwa hin?
Nun kommt der schwierige Teil für mich, das in eine Arduino-Syntax zu pressen.

Ist in etwa so wie eine Verkehrszählung. 10 Autos / Minute bedeutet auch nicht das genau alle 6s ein Auto kommt.

Gruß und ein schönes WE

Onki
 
Nein. Das nennt man schon Frequenz. Auch eine PWM mit 10% Dutycyle (Verhältnuss ein/aus) hat eine Frequenz.
Unter symetrische Signale versteht man etwas anderes. ( https://de.wikipedia.org/wiki/Symmetrische_Signalübertragung )

Deine "10,100,1k,10k,100k " ist die Frequenz? Oder die absolute Anzahl der Signale und danach ist Ende?


Um es mal GROB in ein Programmablauf zu werfen.


Code:
loop {

// Erzeugung 1us Signal
digitalWriteFast(Ausgang, 1);     // Ausgang auf 1. Dieser Befehl braucht 2 Takte
NOP;    /Ein Takt Pause
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
NOP;
digitalWriteFast(Ausgang, 0);     // Ausgang auf 0. Dieser Befehl braucht 2 Takte

// Jetzt kommt die "Wartezeit"

Eingänge Abfragen welche Frequenz
Pause Berechnen
evtl. mit "random" eine Zufallszahl (min / max) generieren für die Pause

delaymicroseconds(Wartezeit);    //Abwarten. Danach gehts oben wieder los....
}



Diese Library ist für das Setzen des Ausganges benutzt...
https://github.com/NicksonYap/digitalWriteFast

Und JA: Das ist nicht funktionsfähig und stellt nur eine Möglichkeit dar wie man es machen kann....
 
Ansicht hell / dunkel umschalten
Oben Unten