Ich habe eine Anwendung, in der ich aus einem Analogsignal (0-10V) eine Rechteckspannung machen muss (0-10kHz). Desweiteren soll eine Möglichkeit geschaffen werden, den Tastgrad des Rechteckimpulses zu variieren, wenn möglich mit einem weiteren Analogsignal (0-10V). Gibt es dafür eine Standardlösung, oder sollte ich einen Microcontroller in betracht ziehen?
Vielen Dank Klaus Finken
Didn't find your answer? Ask the community — no account required.
D
Dieter Wiedmann
Klaus Finken schrieb:
Wenn das wirklich bei so niedrigen Frequenzen (ab 0kHz) funktionieren soll kommst du um einen uC nicht herum.
Gruß Dieter
D
Dan Oprisan
Schau dir mal das Datenblatt/Application Notes vom LM555. Wenn du nicht eine sehr hohe Genauigkeit Brauchst liesse sich was machen.
formatting link
T
Tilmann Reh
Klaus Finken schrieb:
Zunächst sollten ein paar Randbedingungen auf den Tisch:
- geforderte Genauigkeit/en
- geforderte Auflösung/en
- zulässiger Jitter
- tatsächlich benötigte Minimalfrequenz
- gefordertes Tastverhältnis (von..bis)
K
Klaus Finken
8 oder 10 bit, wenns denn ein Microcontroller wird
ca. 3%
ca. 50Hz
20% - 90%
Das sollen aber nur Richtwerte sein, genaue Forderungen habe ich nicht. Es geht primär darum, die Realisierungsmöglichkeiten mit den entsprechenden Preislagen und dem nötigen Zeitaufwand auszuloten.
Vielen Dank Klaus Finken
K
Klaus Finken
Habe noch was vergessen, gesteuert wird das ganze von einem Rechner auf dem Labview läuft, wenn es also ein Microcontroller wird, dann kann ich mir das ausgeben von 0-10V über die DA Karte auch sparen und ihn direkt über RS232 o.ä. ansprechen.
Gruß Klaus Finken
M
Marcel Müller
Soundkarte des PC mit einfachem Analogverstärker (1 OP) für das Mapping auf 10V? Mal im ernst, für diese Anwendung ist man damit satt im grünen Bereich. Selbst die Onboard-Soundkarten haben wenigstens 8 signifikante Bits.
Naja und die Ansteuerung hätte ich jetzt ganz simpel in C gemacht.
Sowas in der Art (nur als start):
double f = 10; // Hz double on = 0,6; // Tastverhältnis
const int samplerate = 48000;
int main() { for (;;) // endlosschleife { // 0V für ... samples for (int n = (int)((1-on)/f * samplerate); n; n--) fwrite("\0\0", 2, 1, stdout); // max. Volt für ... samples for (int n = (int)(on/f * samplerate); n; n--) fwrite("\377\177", 2, 1, stdout); } }
Verwendung:
meinprogramm > /dev/snd/pcm... (Sinngemäß)
Unter anderen OS gibt es Programme, die die Umleitung zur Soundkarte erledigen.
LabView ist bei solche vermeintlich einfachen Aufgaben leider oft eher im Weg als nützlich. Falls die neueren Versionen aber Bibliotheken für das ansprechen der Soundkarte enthalten, kann man obige Logic natürlich auch in LabView implementieren.
Falls nicht würde ich versuchen obiges Programm im Hintergrund immer rennen zu lassen, und es über eine Named Pipe fernsteuern. Das geht auch unter WinXX. Aus LabView heraus gestaltet sich der Zugriff auf die Pipe dann als Datei schreiben. Der Dateiname muß nur mit "\Pipe\" anfangen.
Marcel
M
Marcel Müller
Ich nehme alles zurück, und behaupte das Gegenteil. Ich hatte irgendwie 1kHz gelesen. Bei 10kHz ist die Frequenz und Tastverhältnisabstimmung mit der Soundkarte zu grob.
Marcel
R
Rolf Bombach
Wenn man eine hohe Genauigkeit möchte, nimmt man lieber den LM331. 0.01% Linearität, 1 Hz - 100 kHz. Suche auch nach "VCO" oder "VFC".
T
Tilmann Reh
Klaus Finken schrieb:
Das bedeutet also eine Zeitauflösung von 390 µs (8 Bit) oder 100 µs (10 Bit), entsprechend Basistakten von 2.5 bzw. 10 MHz - wenn die Frequenz digital erzeugt werden soll.
Bei 10 kHz bedeutet das einen Zeitfehler von max. 3 µs - sollte unkritisch sein.
Bei digitaler Erzeugung der Frequenz durch herunterteilen muß der Teiler also durch 10 MHz / 50 Hz = 200000 teilen können. Es ist ein
18 Bit breiter Teiler erforderlich (bzw. 16 Bit bei 8 Bit Auflösung).
Wenn die Eingangssignale nicht unbedingt analog sein müssen (schriebst Du später), würde ich vermutlich ein CPLD nehmen und zwei programmierbare
18-Bit Timer (jeweils für die Zeiten mit Ausgang high bzw. low) implementieren. Diese Timer könnten über eine synchron-serielle Schnittstelle (z.B. SPI) geladen werden. Dazu ist ggf. ein separater (aber wirklich sehr kleiner) µC sinnvoll, wenn Du nur eine "normale" asynchrone Schnittstelle zur Verfügung hast.
Wenn 8 Bit Auflösung ausreichen, geht es sicher auch mit einem schnellen µC (z.B. 89LPC9xx oder AVR). Die Präzision (vor allem der Jitter) wird aber bei der CPLD-Lösung besser sein. Dafür ist der Controller preiswerter (vor allem, wenn man ihn für die Kommunikation sowieso braucht)...
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.