mC zur Frequenzmessung

Gast #526607
Lesenswert?

Hallo!

µCs die direckt Frequenzen messen können sind mir nicht bekannt. Aber 
schau dir mal die Serie c8051f von Silabs an! Die haben Schnelle 
Hochauflösende ADCs und DACs im Bauch. Und es gibt fertige FFT rutinen 
für den Controller. Damit lässt sich vieles ohne großen Schaltungs- und 
Programieraufwand erschlagen.

mfg Owz
Gast #526694
Lesenswert?

Hi,
schau Dir mal die M16/Tiny Reihe an. Mit TimerB ist es definitiv 
machbar, wir messen mit dem TimerB am M16C26A Frequenzen bis 50kHz.
Evtl. kann man sogar die R8C-Reihe einsetzen. Bei Renesas sind 
Appl.-Notes (PWM-Messung etc.) erhältlich.
Gast #526714
Lesenswert?

@Sepp

>auf wieviele Stellen?

>von 1 - 200 Hz ganzahlig reicht vollkommen aus
>aber mal zwie, da ich 2 signale lesen muss

Sinnvollerweis mit zwei ICP (Input Capture) Eingängen. Erzeugt praktisch 
kaum CPU Last. Dann braucht es nur noch zwei OCP (Output Compare) 
Ausgänge und fertig sind zwei PWMs. Und das alles mit einem einzigen 
Timer.

MFG
Falk
Gast #526736
Lesenswert?

@Sepp

>>Sinnvollerweis mit zwei ICP (Input Capture) Eingängen.

>hast du direkt nen Controller im Kopf der die hat???

Hmmm, die "kleinen" AVRs nur einen ICP Eingang, für zwei braucht man 
einen AVR mit 2 16 Bit Timern (Mega64/128 etc.)

Wobei man es bei deinen relativ geringen Genauigkeitsanforderungen 
sicherlich auch mittels externem Interrupt machen kann. Wenn du 200 Hz 
(5ms) auf 1 Hz genau messen willst sind das immer noch 25us Messfehler 
die man sich erlauben kann. Das sollte mit 1 MHz Takt locker machbar 
sein. Dann tuts auch ein tiny2313.

MFG
Falk
Gast #526740
Lesenswert?

>PWM braucht nochmal einen Timer, das wären dann normalerweise 5 Stück.
Geht's nicht aiuch so (habe ich noch nicht probiert): Timer 0 für die 
Torzeit, Impulse über T1 dem Timer 1 zuführen, ICP (auch Timer 1) zur 
Messung der zweiten Frequenz benutzen. So brauchst du nur zwei Timer für 
zwei Frequenzen, bleibt Timer 2 für den (evtl. Software) PWM.
#526766
Lesenswert?

Bei schnarchlahmen 200Hz brauchst Du keinen ICP oder Timer als Zähler, 
das geht ganz bequem mit nem externen oder Pin-Change Interrupt.

200Hz sind riesige 40.000 Zyklen bei 8MHz, da dreht der ATTiny25 nur 
Däumchen.

Vielleicht ihn nebenbei noch Schach spielen lassen, damit er sich nicht 
so langweilt.


Peter
Gast #526847
Lesenswert?

@Peter Dannegger

>Bei schnarchlahmen 200Hz brauchst Du keinen ICP oder Timer als Zähler,
>das geht ganz bequem mit nem externen oder Pin-Change Interrupt.

>200Hz sind riesige 40.000 Zyklen bei 8MHz, da dreht der ATTiny25 nur
>Däumchen.

Du hast das Posting vom Sepp gelesen? Du hast meins gelesen?

Es geht um zwei Eingänge mit Frequenzzählung und auch bei der relativ 
geringen Genauigkeit kommt man schon in relativ kleine Zeitfenster (25 
us).

>Vielleicht ihn nebenbei noch Schach spielen lassen, damit er sich nicht
>so langweilt.

Natürlich hat der uC fast nix zu tun, aber wenn man mehrere Dinge 
parallel in Software machen will kann es einem bisweilen böse 
Verzögerungen reinhauen (wenn mehrere Interrupts aktiv sind).

MfG
Falk
Gast #526860
Lesenswert?

@Christoph Db1uq

>Den Pin-change-Interrupt könnte man mit einem Timer-Interrupt z.B. alle
>25us simulieren. In der Interruptroutine werden Änderungen seit dem

So kann man auch CPU-Leistung verheizen . . . ;-)

MFG
Falk
#526869
Lesenswert?

Falk wrote:

> Es geht um zwei Eingänge mit Frequenzzählung und auch bei der relativ
> geringen Genauigkeit kommt man schon in relativ kleine Zeitfenster (25
> us).

Wenn man nur eine Periode mißt, können es 25µs (= 200 Zyklen) 
Unterschied sein, sollte trotzdem reichen.

Da er aber bis zu 1Hz runter messen will, reicht ihm also eine Meßrate 
von 1 Messung pro Sekunde aus, d.h man kann bei 200Hz über mehrere 
Perioden messen und hat dann wieder wesentlich mehr Auflösung. Damit ist 
es dann von der CPU-Zeit gesehen völlig unkritisch (C-Programm selbst 
bei 1MHz Quarz möglich).

Beim ATtiny25 kann man für die beiden Eingänge den externen Interrupt 
und den  Comparatorinterrupt nehmen.


Peter
Gast #526964
Lesenswert?

@Falk

>Es geht um zwei Eingänge mit Frequenzzählung und auch bei der
>relativ geringen Genauigkeit kommt man schon in relativ kleine
>Zeitfenster (25us).

Mit 8MHz getakteten AVR ist es wohl auch ohne Probleme möglich 1000 
Frequenzen bis 200Hz zu messen (theoretisch natürlich nur, oder gibt es 
auch einen AVR mit 1000 Pins ;-) ).
Wie kommst du auf 25µs?
Gast #526994
Lesenswert?

Ich habe mal einen einfachen Drehzahlmesser gebaut:

http://www.ees-hartz.de/pwm/page8.html
http://www.ees-hartz.de/

______________________________________________
Obelix:
Mit 8MHz getakteten AVR ist es wohl auch ohne Probleme möglich 1000
Frequenzen bis 200Hz zu messen (theoretisch natürlich nur, oder gibt es
auch einen AVR mit 1000 Pins ;-) ).

Tausend Pins kann man ja noch locker Multiplexen,aber dann wird es wohl 
knapp,mit der Zeit,ich habs noch nicht ausprobiert.
Gast #527300
Lesenswert?

>Da er aber bis zu 1Hz runter messen will, reicht ihm also eine Meßrate
>von 1 Messung pro Sekunde aus, d.h man kann bei 200Hz über mehrere
>Perioden messen und hat dann wieder wesentlich mehr Auflösung.

1s wird wahrscheinlich knapp, da ich die Frequenzen zur erkennung von 
Schlupf benötige, und diesen innerhalb 0,1s ausregeln muss.

Würde es vieleicht einfacher gehen, wenn ich einfach zwei F-U-Wandler 
benutze um die Frequenzen dann über je einen analogpin einzulesen?

oder bin ich dann noch langsamer???
Gast #527315
Lesenswert?

Wenn es ein Sinus ist kann man das messen:

Bsp:
abtasten mit 100 fachem oversampling
und den sinus approximieren

wo ist das Problem?

Man braucht keinen kompletten sinus, um den sinus
zu bestimmen, ;-))
Gast #527326
Lesenswert?

@Obelix

>Mit 8MHz getakteten AVR ist es wohl auch ohne Probleme möglich 1000
>Frequenzen bis 200Hz zu messen (theoretisch natürlich nur, oder gibt es
>auch einen AVR mit 1000 Pins ;-) ).

Kaum. Auch nicht mit 1000 Pins.

>Wie kommst du auf 25µs?

Ganz einfach. Siehe mein Posting.
"Wenn du 200 Hz (5ms) auf 1 Hz genau messen willst sind das immer noch 
25us Messfehler die man sich erlauben kann."

@Sonic

>Ich hab's doch oben geschrieben, wozu sind die Eingänge T0 und T1 da?

Mit T0 und T1 kannst du die Freqenz messen (Messung der Takte pro 
Zeitfenster) aber nciht die Periodendauer.

>1s wird wahrscheinlich knapp, da ich die Frequenzen zur erkennung von
>Schlupf benötige, und diesen innerhalb 0,1s ausregeln muss.

Womit du min. 10 Hz am Eingang brauchst.

>Würde es vieleicht einfacher gehen, wenn ich einfach zwei F-U-Wandler
>benutze um die Frequenzen dann über je einen analogpin einzulesen?

NEIN! Das wäre vollkommener Unsinn, ein digitales Signal in anlaog zu 
wandeln und dann wieder zu digitalisieren.

>oder bin ich dann noch langsamer???

JA!

@Christian

>Wenn es ein Sinus ist kann man das messen:

>Bsp:
>abtasten mit 100 fachem oversampling
>und den sinus approximieren

>wo ist das Problem?

Ganz einfach. Dein Schuss aus der Hüfte geht direkt in den Fuss.

>Man braucht keinen kompletten sinus, um den sinus
>zu bestimmen, ;-))

Wirklich? Das klappt bestenfalls wenn Amplitude und Frequenz bekannt 
sind, anderenfalls siehe oben. Und in dem Fall raucht es keine Messung.

MFG
Falk
Gast #527381
Lesenswert?

Zu Falk:

Kurvenapproximation

3 Variable:
Ampli.
Frequenz
Phase

Wieviel Messwerte braucht es da?

Die 100 Sample war nur so, ;-))
Überabtastung ist aber wichtig: wegen Abtasttheorem.


Wenn mein Schuß in den Fuss geht, .... :-))  lol....


Mal doch mal 3 Punkte auf ein Blatt papier und versuch mal
per hand einen Sinus da anzupassen.

Es gibt pkts, da geht es nicht.
Bei Überabtastung ist es eher eine Frage der Genauigkeit-
die wurde nicht benannt, und die per Software analysiert
(Ermittelt) werden kann.

Guten Morgen
c.  :-))))
Gast #527456
Lesenswert?

@Falk:
>Mit T0 und T1 kannst du die Freqenz messen (Messung der Takte pro Zeitfenster) 
aber nciht die Periodendauer.

Brauchste auch nicht für eine Frequenzmessung. Die Periodendauer-Messung 
ist bei niedrigen Frequenzen sinnvoll, weil hohe Auflösung, dagegen ist 
die Torzeit-Messung bei höheren Frequenzen besser aufgelöst. Eine 
Umschaltung der beiden Messverfahren am Punkt, an dem beide Auflösungen 
gleich sind ist sinnvoll.
Gast #527468
Lesenswert?

Also wenn ich das richtig interpretiere will er eine Antischlupfregelung 
oder Ähnliches bauen. Da sollte der Frequenzbereich per Geber auf ein 
vernünftiges Fenster geplant werden.
ich habe sowas mal für ein RC-Car gebaut, vier Frequenzen per Hallsensor 
gemessen (an jedem Rad), ausgewertet und die Regelung realisiert.
Gast #527528
Lesenswert?

>Also wenn ich das richtig interpretiere will er eine Antischlupfregelung
>oder Ähnliches bauen.

Richtig!

Ich habe einen Drehgeber antriebsseitig und einen abtriebsseitig an ner 
kuppeleinheit wenn nun ne blockade am abtrieb auftritt wird diese freq 
langsamer also hab ich schlupf, nu muss ich mit dem pwm ein ventil zum 
regeln einer hyd schalteinheit ansteuern, die dann den schlupf ausregeln 
soll.
Gast #527584
Lesenswert?

Zu Sonic:

Kurvenapprox.

Ja, etwas hoch im Aufwand - aber ggf. sehr schnell.

zB 0.1 Hz kann man damit in wenigen sekunden ermitteln.

Wenn man Power hat (die uCs können ja einiges)
führt das zu einer schnelleren Freq.-bestimmung.

- Nulldurchgang ist einfacher, ;-))
   aber ich warte dann auch 2 Nullen lang
Vorteil:
  die "quarzgenaue Messung"

- FFT bei n Freq.
usw.

Vorteil bei dem obigen überabtasten (Kurvenapp)
ist auch die schnellere Erkennung der Freq.-änderung:
  der Sinus ist halt anders
Vorsicht:
  die Auflösung (ADU)
  und der Abtastzeitpunkt sind dann ggf. krit.!!

Ich habe nicht alle Beiträge gelesen - falls dieser nicht passt, sorry!
Ist primär als Antwort zu  SONIC gedacht.

c.

p.s.:
falls der ADU permanent mitläuft, geht das noch einfacher & schneller!
Aber bevor ich jetzt wieder ins Bein/Fuß schieße, .....

p.s.s.:
MC  = Mikrocontroller
uC  = Mikrocontroller
Beides wird verwendet - zumind. in Bücher, ...
Gast #527750
Lesenswert?

@Christian:
Haste schon Recht, das geht mit etwas mehr Aufwand recht gut, bei Sinus 
oder Dreiecksignal für Frequenzen <1Hz durchaus empfehlenswert.
Für die über 1Hz würde ich empfehlen nur die Eingangsimpulse zu zählen. 
Wenn zum Abtastzeitpunkt eine Differenz besteht habe ich Schlupf. Den 
Umweg über die Frequenz muss ich gar nicht gehen.
So würde ich das machen, bin von Haus aus faul! ;-)
Gast #527832
Lesenswert?

Hab' obiges erneut "überflogen"

da er 1-200 Hz hat, meßbar in 1,2,3,... 200 Hz (ganzzahlig)

das in 0,1 sek. haben will & (eine Zeile; rechtecksignal ist)
geht das ganze nicht.

ZB:
bei 1 Hz ist ein Rechtecksig. länger als 0,1 Sek
1 oder 0
=> nicht machbar
Erst ab höheren Frequenzen, kann er sein Ziel:
nach 0,1 Sek die Freq. zu haben,
erreichen, ;-).

Ich bin von einem Sinus ausgegangen, dann würde es gehen.

Gruss & ciao,
c.

p.s.: schön wäre es gewesen, wenn die Randbed. komplett im
1. Beitrag ständen, ;-(
Gast #528047
Lesenswert?

Randbed

hyd beauschlagte Reibkup. antriebsseite und abtriebsseite der einheit 
werden über sechs zähne signale erzeugt. bei einem f-unterschied von 
mehr als sagen wir 30% soll schlkupf erkannt werden bei erkennen soll 
der öldruck in der Kuppeleinheit geregelt werden PID -> PWM -> 
Propventil. strategie, lüften schließen ...
Gast #528072
Lesenswert?

Das ist ein Teil der Randbed. ;-)

Lastwechsel, etc. wären auch gut - aber damit kann ich so
nichts anfangen: weil nicht vom Fach!



Anregung/Motto:
  wenn eine Seite festgehalten wird (max. Last zu groß?)
  dann kann ich die 30% Abweichung der Umdrehung durch
  einen Zeitversatz des erwarteten Signalwechsels des Ausgangs
  rel. zum Eingang ermitteln:
dazu brauche ich:
  Freq. (besser die aktuelle Umdrehung/sek)
dann per uC:
  30 % bedeutet n Sek bis zum Signalwechsel

Einfacher:
  wenn am eingang ein Wechsel nach 100 msec stattfindet,
  muss am Ausgang ein wechsel nach max 130 msec stattfinden - sonst 
regeln
Aber achtung:
  wenn eine Große Masse am Ausgang, kann eingang langsamer sein
als ausgang - was dann ?


Ich hatte gerade in einem andern Beitrag
auf SCILAB/SCICOS hingewiesen, damit könnte man ggf.
so etwas simulieren = Aufwand.

Die Frage ist,
Wie sicher & schnell kann man die 30 % erkennen?
(deine Frage, ;-)

=>  1. Freq. bestimmung/ besser Zeiten der Pegeländerung) +
2. Damit dann die 30 % unterschied

(es liegen nur rechtecksig. vor ?
oder werden die Zähne so gemessen, dass da das Signal
   "recheckähnlich" ist?
das würde für die Auswertung ggf. mehr möglichkeiten liefern?

Die Freq. wird eigentlich nicht benötigt -nur die
Zeiten der Nulldurchgänge, ;-)
(dies kann bei schnellen Änderungen des Antriebs relevant sein)


GRuss,c.
Gast #528075
Lesenswert?

pid + pwm + ventil

Das ventil ist ggf. auch ein "I" + totzeit.

Die PWM braucht etwas Zeit (vermutl nicht rel., da schnell)
Der Antrieb dann auch
Das Ventil: es strömt etwas rein und fängt an zu wirken.

Anregung:
Beim modellieren/auslegen des Reglers kann das relevant sein
weil kleines Ventil braucht viel Zeit, bis die Wirkung "wirkt", ,-)


gruss, c.
Gast #528261
Lesenswert?

Die Lastwechsel spielen vorerst keine Rolle.

Die Kuppl. befindet sich im Antriebsstrang für eine Kreselegge.

Bei diesem Projekt geht zur Zeit nur Um die Realisierung der 
Schlufperkennung und die beseitigung durch ab und einschalten der 
kupplung über einen hydZylinder
Gast #2345856
Lesenswert?

@Sepp
Hallo Sepp.
Vielleicht bist du ja noch in deinem Beitrag aktiv.
Ich versuche auch mit meinem Team angehender Techniker etwas ähnliches 
zu realisieren.
Es geht um Elektrofahrzeug, bei dem ich ganz einfach in den Sollwertpoti 
eingreifen kann.
Das größere Problem ist also die auswertung der Raddrehzahlen:
Die Abfrage soll auch über hallsensoren erfolgen.
Hast du damals eine funktionstüchtige Lösung entwickelt?

Oder kann mir vieleicht jemand anderes einen fortgeschritten 
Lösungsansatz bieten?

Gruß

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren