Forum: Mikrocontroller und Digitale Elektronik Takterzeugung 0-1000hz


von Bernd (Gast)


Lesenswert?

Hallo Leute,

ich möchte einen Takt erzeugen. Dieser soll von 0-1000Hz einstellbar
sein. Das Taktverhältnis ist nicht besonders wichtig, sollte aber nach
möglichkeit nicht 25/75 unterschreiten.

Ich muß den Takt die ganze Zeit ändern können.

Ein externes Bauteil an einem AVR wäre mir am liebsten.

Gibt es ein Bauteil dem ich sagen kann in welchem Frequenzbereich es
Arbeiten soll und welche bestimmte Frequenz ich wünsche?

Die Sache ist die, das ich einen Takt bekomme 0-1400Hz und mit dem
Controller den Takt "Messe" und dann einen anderen Takt ausgeben
möchte.

Die Anwendung ist ein Drehzahlmesser. Da kommt der Takt von 0-1500Hz an
und ich will die Nadel nicht so weit ausschlagen lassen. Ich brauche
nämlich den Platz und deshalb stauche ich das Anzeigefeld etwas
zusammen. Und dann habe ich mir noch in den Kopf gesetzt das nicht
linear zu machen, sondern zwei Bereiche im Drehzahlband zu haben wo die
Nadel anderst läuft.

Da der Controller auch noch einige andere Sachen zu erledigen hat, Habe
ich keine Lust den Takt mit Zeitschleifen zu machen.
Außerdem kommt mir ja auch der Externe Interrupt in die Quere den ich
zum erfassen der Eingangsfrequenz benutze...

Hat jemand einen Tipp für mich?

Oder weis es einer einfach besser als ich und hat eine Idee für die
Lösung auf die ich noch nicht gekommen bin?

Gruß Bernd

von Tobi (Gast)


Lesenswert?

ich würd mal schauen ob es einen passenden vco (voltage controlled
oscillator) gibt. die sind sehr leicht über eine analoge spannung zu
steuern.
die frage wäre noch wie genau du die frequenz einstellen willst/musst

von crazy horse (Gast)


Lesenswert?

naja, durch den Rücken in die Brust :-), geht im Prinzip schon, ist aber
 aufwändig und fehlerträchtig. Aus einem digitalen Signal eine Spannung
machen, und die dann wieder in eine Frequenz wandeln...
Wenn du auf dem Hauptprozessor nix passendes mehr frei hast
(16bit-Timer mit compare und CTC-Funktion) solltest du am einfachsten
einen weiteren anschliessen. Der macht nicht weiter, als Daten über die
Uart oder SPI zu empfangen und sie in sein OCR-Register zu schreiben.
Nur ein paar Zeilen Programm, einen billigen Prozessor, das wars.

von Bernd (Gast)


Lesenswert?

Hi,

so wie es aussieht brauche ich zwei 16Bit Timer, da ich zwei Frequenzen
messen will.

Und der Controller soll sich auch noch darum Kümmern die Drehzahl und
die Geschwindigkeit auf ein Display auszugeben und ein paar Daten
erfassen wie Temperatur vom Öl und darauf dann Reagieren. z.B. bei zu
Öltemperatur unter 80 Grad ab einer bestimmten Drehzahl eine LED
anschalten, bei erreichen einer bestimmten Drehzahl auch eine LED
einschalten etc...

Wenn ich schonmal dabei bin, dann kann ich die ganze Sache ja mal ein
bissel aufblasen. :-)

Allerdings ist da das Problem das ich eben nicht auch noch die Frequenz
erzeugen kann. Die 16 Bit Timer sind ja "verbraucht".

Die Frequenz muß übrigens nicht so Supergenau sein.

Bei 750 U/min sind es ungefähr 50Hz und bei 8000 U/min ungefähr
1300Hz.

Ich komme um einen Prüfstand sowieso nicht herum, es muß mir ja jemand
bescheinigen das der Tacho und DZM richtig anzeigt, sonst macht der TÜV
Ärger. Und da kann ich ja dann ein paar Korrekturparameter einstellen,
das wird dann sicher genauer als vom Hersteller...

Gibt es vielleicht eine VCO den ich über I2C oder SPI ansteuern kann?

Denn bei dem was ich alles anschließen will, gehen mir langsam ab
sicher die Ports aus. Ich dachte an den Einsatz eines ATmega162.

Wenn der nicht reicht, dann bleibt mir wegen der zwei 16 Bit Timer nur
der ATmega64/128 und ich habe eigentlich keine Lust die
Prototypenschaltung mit einem SMD-Chip zu machen oder mir ein STK501 zu
kaufen.

Gruß Bernd

von Bernd (Gast)


Lesenswert?

Entschuldigt bitte das Holperige Posting, es ist jetzt 03:11 und ich
falle jetzt ins Bett. ;-)

von thkais (Gast)


Lesenswert?

Moin,
Man kann auch aus einem 8-Bit Timer einen 16-Bit Timer per Software
machen. Ich habe momentan das Datenblatt des 162 nicht vorliegen (hmpf
- ich warte immer noch auf DSL), aber da sollte neben den zwei 16-Bit
Timern noch ein 8-Bit vorhanden sein. Per Interrupt das High-Byte
zählen und fertig isser.
Man verschätzt sich immer wieder - aber so ein Controller hat meistens
noch massenhaft Zeit "übrig", auch wenn man noch so viel schon
reingepackt hat.

von Bernd (Gast)


Lesenswert?

Hi,

der 162 hat sogar zwei 8-Bit Timer. Auf die Idee den 8-Bit Timer per
Software zu erweitern bin ich noch nicht gekommen. Die Idee ist aber
gut!

Allerdings komme ich schon beim Denken durcheinander da ich alles per
Interrupt mache.

Da ich 2 Frequenzen "messen" will und (inzwischen) auch 2 Frequenzen
erzeugen, habe ich einfach die Befürchtung das es Probleme gibt wenn
ein Interrupt kommt während ich in einer Interruptroutine bin.

>Man verschätzt sich immer wieder - aber so ein Controller hat
meistens
> noch massenhaft Zeit "übrig", auch wenn man noch so viel schon
reingepackt hat.

Ich glaube ich muß mir mal durchrechnen wieviel Zeit ich zur
Abarbeitung der Interruptroutine brauche. Wenn ich so darüber nachdenke
könnte es gut sein das ich mit der Ungenauigkeit, die bei der
Takterzeugung durch Interruptunterbrechungen entstehen könnte, leben
kann.


Danke für die Anregung!

Gruß Bernd

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.