PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frequenz mit vb messen



gleiti84
30.08.2007, 22:15
Hi,
Ich suche eine schaltung mit der ich zwei frequenzen in vb messen kann.
gruss markus

husky2
30.08.2007, 22:49
Hallo,

Ein wenig genauer mußt Du schon sagen was Du haben willst.

Welche Frequenz?
Spannung
Genauigkeit

Habe mal probiert mit VB eine Frequenzmessung bis 50Hz oder so über den Parallelport auszuwerten, aber das ist bei mir nie was geworden.
Ich würde sagen da muß man schon die Hardware die eigentliche Messung durchführen lassen.

Aber vielleicht hilft Dir die Benutzung der Soundkarte weiter?
Da gibts einige Möglichkeiten.

mfg
hannes

elmar
31.08.2007, 14:47
Hi,

Windows hat keine Echtzeitfähigkeit. Die Geschwindigkeit, mit der das Programm läuft variiert stark, auch der Zeitpunkt der Portzugriffe schwankt stark da das Betriebssystem den geforderten Zugriff nur dann erledigt, wenn es gerade Lust hat.

Um kontrolle über das Timing zu erlangen braucht man entweder Linux, da kann man Programme laufen lassen, die volle Kontrolle über das System und dessen Hardware haben oder - und das ist die saubere Methode - man braucht eine Hardware, die die Auswertung macht und dem System die Ergebnisse präsentiert.

Bei geringen Spannungen und geringen Frequenzen (bis 22kHz) kann man wie schon gesagt wurde die Soundkarte benutzen. Da gibt es gratis Oszilloskopsoftware, die so eingies mit den Meßwerten anstellen kann wie z.B. Frequenz ausrechnen.

Möchte man immer nur einen Meßwert nehmen, so kann man sich ein gutes Multimeter mit PC-Anschluß kaufen. Einige Multimeter bieten auch eine Frequenzmessung (üblicherweise mindestens 50kHz) an. Aus VB heraus kann man das Multimeter abfragen. Die meisten werden durch senden eines "L" auf der RS232 dazu gebracht ihr Display als ASCII Text zurückzusenden. Das lässt sich in VB sehr leicht umsetzen. Beachten muß man allerdings, dass die Multimeter meist einen Optokoppler benutzen und der braucht Saft um zurückzusenden. Dazu muß man nur die CTS Leitung der RS232 auf HIGH setzen um die Optokoppler mit Strom zu versorgen (Teil des Handshakes beim setzen der Schnittstelleneigenschaften).

Gruß
Elmar

gleiti84
31.08.2007, 21:39
Ich will am auto das geschwindigkeitssignal und die motordrehzahl abgreifen. beides sind hallgeber mit 12 - 14v.
beim motordrehzahl sind es 4 perioden pro umdrehung. das heist es sind bei 7000 1-min ca. 470 perioden. beim geschwindigkeitssignal weiss ich es noch nicht, dürfeten aber vermutlich mehr sein.

es muss nicht ganz genau sein, aber vielleicht ein wenig :-) (tolle aussage oder)

elmar
31.08.2007, 21:51
Hi,

für die Motordrehzahl würde die Soundkarte ja reichen, aber das Tachosignal kann zu langsam sein, die Soundkarte kann nämlich keine Gleichspannungen messen.

Wie wäre es mit einem f/U Wandler und dann eine Zweikanalige A/D Wandlerkarte?

Das Meßmodul M232 von ELV hat einen integrierten Zähler, 5 A/D Wandler und 8 I/O Ports. Es wird mehr oder weniger im Klartext über RS232 angesprochen. Man könnte einen f/U Wandler direkt an einen analogport anschließen und den Impulszähler das Tachosignal auszählen lassen.
Die restlichen Eingänge kann man dann für weitere Spielereien verwenden.

Einziger Haken ist, dass man 12V versorgungsspannung braucht, aber GALVANSICH GETRENNT! Die Masse darf nicht die des PCs sein und damit auch nicht die des Fahrzeugs, denn das Modul teilt die auf -3V/+9V auf, macht also eine virtuelle Masse. Für einfache Versuche kann man einen 12V Akku benutzen, wenn das permanent eingebaut werden soll, kann man einen DC/DC Wandler benutzen.

Gruß
Elmar

gleiti84
01.09.2007, 22:29
hallo,
das gleich dachte ich mir in der art auch.
ich habe ein usb board von conrad
http://www.conrad.de/goto.php?artikel=191137

und wenn ich mit zwei frequenz - spannungs konverter die änder,
dann kann ich sie auch mit vb bearbeiten.

nur kenn ich mich mit den ic's nicht aus und brauchte da etwas hilfe.
ich bin kfz'ler und kein elektroniker :-)
Wie muss ich den ic anschliessen und welchen benötige ich.

gruss markus

elmar
01.09.2007, 22:46
Hi,

fertige Chips gibt es leider nicht. Im prinzip ist das nichts anderes als ein nichtretriggerbares Monoflop. Das ist wie ein Treppenhausautomat. Sobald ein Puls kommt, wird der zu einem Puls mit FESTER und definierter Länge umgewandelt. Die Frequenz bestimmt die Pulspause, der Puls selber ist ja fest. Das Verhältnis Puls zu Pause bestimmt die Leistung, die dabei übertragen wird, und Leistung kann man in eine Spannung verwandeln (Tiefpass, also den Mittelwert per Kondensator bilden). Das funktioniert genau so wie eine PWM, also eine PulsWeitenModulation, nur dass sich hier die Pause ändert. Je höher die frequenz, desto geringer die Pause und desto höher dann die Mittlere Energie. PWM wird z.B. dazu benutzt die Leistung von motoren zu steuern, ohne verluste durch Vorwiderstände zu haben.

Gruß
Elmar

gleiti84
02.09.2007, 09:31
bei conrad hab ich solche ic's gesehen, aber ich weiss nicht wie ich diese anschliesen muss.
gruss markus

Winne
02.09.2007, 12:10
Hallöle,

Den Umweg über analog sollte man sich hier meines Erachtens sparen, da dies die Sache nur verkompliziert (der notwendigen Justierung wegen).


Methode 1
ist nen einfacher Zählerschaltkreis
und eine Zeitbasis(Monoflop z.B. NE555).
Ran an den Parallelport damit: Ein Ausgangspin (Strobe) startet Zeitbasis(NE555) und Zähler. Nach Ablauf der Torzeit wird der Zähler gestoppt und dem Paralleport über eine Statusleitung(sinnvollerweise /busy) mitgeteilt, das sie Messung beendet ist und das Ergebniss zur Abholung bereitsteht.

gibt bei 8 bit 256 Stufen
Bei höherer Auflösung käme ein multiplexer hinzu, welcher nacheinander High- und lowbyte liefert, dies könte mit dem (Printerselectbit) ausgewählt werden

Methode 2
Man nehme einen einfachen µC(51er,AT91XXUSB, ATtiny, Pic, je nach persönlicher Vorliebe ) und schreibe ihm ein Programm, welches die unter Methode eins genannten Aufgaben erfüllt. Wenn nötig UART(RS232)-USB Wandler drann und ab mit den Daten in den PC.

elmar
02.09.2007, 17:14
Hi,

eigentlich reicht es, 9 JK-MS Flipflops zu kaskadieren und an den Parport zu hängen. 2 davon gibt es in einem Chip. Wenn man J und K and +5V hängt, so toggelt der Ausgang bei jedem Eingangsimpuls am Clockeingang. Kaskadiert erhält man einen Binärzähler.
Natürlich kann man auch "fertige" Binärzähler der 74xx Reihe benutzen.

Am Parport kann man jetzt über die Eingangsleitungen (5x In, 4x I/O = max 9 Bits) den Zählerstand abfragen. Natürlich lässt sich der Zähler nicht ohne weiteres reseten, dazu müsste man die Reseteingänge der Zähler mit einem der Ausgangspins verbinden, aber das ist nicht notwendig, da der PC ja den vorhergehenden Zählerstand einfach abziehen kann. Wenn der Zähler überläuft, kann der PC das daran erkennen, dass der neue Stand kleiner ist als der vorhergehende. Mit 9-Bits kann man bis 512 zählen.

Natürlich handelt man sich durch die Trägheit der Systemabfrage einen sog. "Jitter" ein, aber das spielt keine Rolle, da man ja mehrmals abfragen kann und den Mittelwert bilden kann. Das Zeitmaß (Systemzeit) ist ja genau, der Fehler rechnet sich im durchschnitt einfach weg.

Damit man zwei Kanäle abfragen kann, braucht man nur einen Multiplexer. Also mit einem Ausgang des Parportes kann man zwischen den beiden Sensoren umschalten. 3 oder mehr Messungen machen, umschalten, wieder mindestens 3 Messungen und wieder umschalten und so weiter. Packt man die Zählerschaltung und den Multiplexer zusammen mit einem parportadapter in ein Gehäuse und zapft diesen für 5V an, so hat das ganze einen USB-Anschluß und man braucht dafür auch keine Treiber.

Die Kunst auf der Softwareseitre besteht also nur darin, den Jitter wegzurechnen und das Multiplexing zu bedienen.

Gruß
Elmar