Forum: Mikrocontroller und Digitale Elektronik AT90USB646 und Drehzahlmessung bis 30.000 ?


von Dennis P. (devman)


Lesenswert?

Hallo Leute,

ich habe folgendes Problem, mein AT90USB646 hat zwar einen 16Mhz 
Systemtakt anliegen aber der Takt wird durch das Fusebit CHKDIV8 auf 
2Mhz reduziert.

Wenn ich das richtig im Datenblatt verstanden habe, ist das für die USB 
Kommunikation notwendig.

Also darf ich den Systemtakt für die Timer nicht auf 16Mhz erhöhen, weil 
ich dann nicht mehr über USB kommunizieren kann richtig?

Die Drehzahlmessung sollte einen Bereich zwischen 50 und 30000 U/min. 
abdecken mit einer Auflösung von 1 rpm.

Was gibt es hier für Möglichkeiten mit diesen Controller?

Ich denke die Variante der Periodendauermessung ist sowieso die einzige 
genaue Variante oder? Denn mit der Pulszählvariante habe ich unten herum 
eine zu hohe Auflösung.

Für hilfreiche Antworten und Tipps wäre ich wirklich sehr dankbar.

Gruß Dennis

von Kilpikonna (Gast)


Lesenswert?

Bei 30000 U/min hast du 500 U/sec, das sollte doch auch bei 2MHz noch 
machbar sein, das auszuwerten. Da hast du dann 4000 Takte zeit zu 
rechnen zwischen den einzelnen Umdrehungen.

von Dennis P. (devman)


Lesenswert?

Kilpikonna schrieb:
> Bei 30000 U/min hast du 500 U/sec, das sollte doch auch bei 2MHz noch
> machbar sein, das auszuwerten. Da hast du dann 4000 Takte zeit zu
> rechnen zwischen den einzelnen Umdrehungen.

Naja also bei 30.000 Umdrehungen sind es 2000µs

und als bsp. bei 29999 Umdrehungen sind es 2000,07µs

Der Controller kann aber nur alle 0,5µs messen...

also gehen ca. 5 Umdrehungen in den Bereich flöten.... und das ist für 
z.B. eine Zündanlage blöd...

von Floh (Gast)


Lesenswert?

Dennis P. schrieb:
> Wenn ich das richtig im Datenblatt verstanden habe, ist das für die USB
> Kommunikation notwendig.

Falsch verstanden :-)
Für USB lässt sich der Taktteiler aus dem Systemtakt heraus extra 
einstellen (PLLCSR), du benötigst aber eine 2er-Potenz in MHz.

von Johannes G. (gutenberg)


Lesenswert?

Dennis P. schrieb:
> Also darf ich den Systemtakt für die Timer nicht auf 16Mhz erhöhen, weil
> ich dann nicht mehr über USB kommunizieren kann richtig?

Wär ja absurd einen USB-fähigen µc zu bauen der bis 16 MHz taktbar ist, 
aber nur mit 2 MHz laufen darf wenn man USB nutzt...

von Dennis P. (devman)


Lesenswert?

Hmmmm zum Glück habe ich das dann diesmal falsch verstanden ;-)

d.h. für mich im Klartext ich kann den CHKDIV8 herausnehmen und auf 
16Mhz laufen lassen?

Dazu muss ich dann PLLCSR anpassen?

von Udo S. (urschmitt)


Lesenswert?

Dennis P. schrieb:
> Ich denke die Variante der Periodendauermessung ist sowieso die einzige
> genaue Variante oder? Denn mit der Pulszählvariante habe ich unten herum
> eine zu hohe Auflösung.
???
Mit der Pulszählvariante hast du bei vielen Pulsen und/oder entsprechend 
langer Torzeitdauer eine hohe Auflösung und auch Genauigkeit (bei 
entsprechend genauer Torzeit).
Bei niedriger Pulszahl (niedrige Frequenz bräuchte man für entsprechende 
Genauigkeit eine hohe Torzeit was oft nicht praktikabel oder erwünscht 
ist.
Also misst man dort die Pulszeit.

Was wann eine höhere Auflösung liefert darfst du dir selbst berechnen, 
Ausgangswerte sind Pulsfreqenz, max Torzeit, bzw max. Refreshdauer der 
Anzeige und Timerfrequenz.

von m.n. (Gast)


Lesenswert?

Dennis P. schrieb:
> Die Drehzahlmessung sollte einen Bereich zwischen 50 und 30000 U/min.
> abdecken mit einer Auflösung von 1 rpm.

Kein Problem: Beitrag "einfache Drehzahlmessung mit ATmega88"

von Floh (Gast)


Lesenswert?

Dennis P. schrieb:
> d.h. für mich im Klartext ich kann den CHKDIV8 herausnehmen und auf
> 16Mhz laufen lassen?
>
> Dazu muss ich dann PLLCSR anpassen?

ja.

von Udo S. (urschmitt)


Lesenswert?

Udo Schmitt schrieb:
> Also misst man dort die Pulszeit.
Sorry wollte "die Periodendauer" schreiben.

von Dennis P. (devman)


Lesenswert?

Okay erstmal vielen Dank an alle,

ich fasse kurz zusammen als erstes nehme ich das FuseBit CHKDIV8 
heraus,...

passe dann dieses Register PLLCSR an...
(hoffentlich liegt das nicht in Atmels Bootloader)

dann habe ich immerhin 16Mhz zur Verfügung und kann dann mit den Link 
von m.n. meine Drehzahlmessung realisieren...

Nur eine Frage hätte ich noch...

wie reduziert man am Besten die Ausgabegeschwindigkeit auf dem 
LCD-Display?

Weil wie erwartet funktionierte der Code hier 
Beitrag "Input Capture Pin (ICP) auslesen ( Frequenz messen)" nicht gut, weil die 
Frequenz in der Hauptschleife zu oft auf das Display ausgegeben 
wurde....

Da kommen dann nur Spezialeffekte heraus auf dem Display.

Was meint ihr 3-4 mal in der Sekunde müsste ja reichen oder?

von m.n. (Gast)


Lesenswert?

Dennis P. schrieb:
> und kann dann mit den Link
> von m.n. meine Drehzahlmessung realisieren...

Da werden max. drei Messungen/s aufs Display gegeben - kann man 
schneller und auch langsamer machen "#define MESSZEIT 100" anpassen.

von Dennis P. (devman)


Lesenswert?

m.n. schrieb:
> Dennis P. schrieb:
>> und kann dann mit den Link
>> von m.n. meine Drehzahlmessung realisieren...
>
> Da werden max. drei Messungen/s aufs Display gegeben - kann man
> schneller und auch langsamer machen "#define MESSZEIT 100" anpassen.

Suuuper, habe gerade schon ein Blick auf dein Code geworfen, das sieht 
erstmalig viel versprechend aus :-)

Vielen Dank

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.