Hallo Forum, habe folgendes Problem. Möchte gerne die frequenz eines kleinen DC-Motors ermitteln. Je nach umdrehung andert sich der Sinus in Amplitude und Frequenz. Habe mir überlegt erst das ganze einfach mit dem NI-9401 zu realisieren. Dazu muss ich den Sinus erst in ein TTL-Signal wandeln damit das mit dem COunter klappt. Ich habe dafür einen LM339 verwendet welcher als Komparator arbeitet. Ich habe festgestellt dass leider diese Art von Signal wohl nicht unbedingt mit dem NI-9401 richtig funktioniert. Die Frequenz die ich so ermittelt habe war nicht korrekt. Ich vermute es liegt daran dass das gewonnene "TTL-Signal" mit hilfe des Komparators eher immer noch ein Analogsignal ist. Liege ich da richtig????
Meine Idee war es nun die Frequenzmessung mit dem NI-9215 zu realisieren welches eine Analog-Input Modul ist.
Die Darstellung funktioniert schonmal, allerdings wie mache ich nun die Frequenzmessung praktisch von Hand?????
Wie wäre es mit einer Fourier-Transformation? Da siehst Du dann den höchsten Peak und das ist Deine Grundfrequenz.
Gruß Markus
Hab' Dir schnell mal ein Bsp. gemacht (bzw. eins von NI erweitert), das Dir die maximale Freqenz von Deinem Signal anzeigt. Die maximale Signalfrequenz erhältst Du aus dem Frequenzspektrum Deines Signals (nach Fouriertransformation).
[
attachment=20679]
Gruß Markus
Das hast du schnell mal Programmiert????
Also das ist ja sehr schön aber ich muss die Frequenz eigentlich nur als Zahl darstellen. Und wenn nun der Sinus von einem DC-Motor kommt der nicht Ideal ist sieht das wieder anders aus. Oder irre ich mich???
Ich hab' das Bsp. (wie schon geschrieben) erweitert, um Dir die Frequenz anzuzeigen.
Der Sinus muss schon arg daneben sein, dass das Bsp. (in dem ja auch ein Rauschen simuliert wird) nicht funtioniert.
Hier ist es vereinfacht.
[
attachment=20680]
Gruß Markus
' schrieb:Das hast du schnell mal Programmiert????
Also das ist ja sehr schön aber ich muss die Frequenz eigentlich nur als Zahl darstellen. Und wenn nun der Sinus von einem DC-Motor kommt der nicht Ideal ist sieht das wieder anders aus. Oder irre ich mich???
Vielen Dank, habe allerdings ein verknüpfungsproblem. Habe mal im Blockdiagramm die Variable eingefügt. Kannst du mir vielleicht zeigen wie ich das nun anstelle des Sinus anbinde? Also so wie ich mir es vorstelle klappt es nicht...
Weiß ja nicht, was Du aus Deiner Shared Variable herausbekommst, aber aus einer Double-Zahl kannst Du folgendermaßen eine Waveform erzeugen.
[
attachment=20685]
Gruß Markus
Die Shared Variable ist der Analog Input vom NI-9215.
Wenn Du weißt, wie schnell Du abtastest, dann kannst Du Deine Waveform erzeugen. Besser ist, Du erzeugst Dir die Waveform direkt beim Einlesen. Wie und wo Du das aber genau machst, das musst Du wissen. Ich weiß nicht, wo Deine SV gefüllt wird.
Gruß Markus
Hi, mir ist ein kleines Problem aufgefallen bei der Lösung mit FFT. Damit das ganze richtig funktioniert muss man ja beim Fenstern immer eine ganze Periode bzw. ein vielfaches einer Periode Fenstern. Das kann ich allerdings beim Sinus des Motors nie Wissen ob eine ganze Periode im Fenster ist oder nicht. Dass führt dann zu Aliasing und zu einer falschen Frequenz die ich dann durch die FFT ermittelt bekomme.
Liege ich da richtig?