Drehzahlmessung

Gast #1529120
Guten Abend !

Da ich nun mein Gleichstrommotor per PWM ansteuern kann, möchte ich auch 
gerne die aktuelle Drehzahl des Ankers/Welle ermitteln.

Ich würde dann einen magneten an die Welle befestigen und mit einem 
Hallsensor ebenhalt messen. Nur muss ich doch die Zeit berechnen, 
zwischen zwei Punkten wo der Hallsensor durchschaltet oder nicht ?

Ist das überhaupt möglich so schnell das mit der Software zu lösen ? 
Benutzt wird ein Attiny2313.

Ich wäre für Anregungen und Tipps sehr dankbar !

MfG,
Anfänger
Gast #1529140
Hallo !

Danke für die Hilfe !

Ich habe mir das so vorgestellt:


Sobald der Hallsensor durchschaltet fängt der Timer am Attiny2313 sofort 
an zu "zählen" und beim nächsten Impuls vom Hallsensor hört er und fängt 
von vorne an usw...

Kann ich das ganze so pogrammieren, dass es quasi den anderen Code im 
Programm nicht blockiert ? Ich meine ebenhalt: Multi-Threading. Wäre ja 
schlecht wenn ich wegen dem Zählen etc.. immer im Code pause machen 
müsste.
#1529145
Genau dafür gibt es den Capturemode im Timer. Das läuft dann alles in 
Hardware ab. Du misst allerdings jetzt nicht direkt die Impulse/Minute 
sondern die Zeit zwischen 2 Impulsen. Eine kurze Rechnung und du hast 
deine Drehzahl.

Gruss Helmi
Gast #1529147
>Kann ich das ganze so pogrammieren, dass es quasi den anderen Code im
>Programm nicht blockiert ?

Ja. Guck mal, ob der ATTiny auch einen Inputcapture-Mode hat.
Dann läuft die Aktion völlig autonom und meldet sich nur beim Erreichen 
einer Flanke.
Der ATmega8 hat die InputCapture-Unit auf jeden Fall.
Gast #1529154
>Du misst allerdings jetzt nicht direkt die Impulse/Minute
sondern die Zeit zwischen 2 Impulsen.

Ja genau das meine ich. Dann habe ich ja die Umdrehung pro der 
gemessenen Zeit ebenhalt die der AVR "misst". Das kann man dann auf 
Minute (dreisatz :D) rechnen und fertig ist die Laube !

Dann beschäftige ich mich mal jetzt mit dem TIMER vom Attiny2313. Ein 
paar Atmega8 hab ich auch rumstehen...

Eine Frage zum Schluss:
Welche Programmiersprache ich jetzt nehme ist doch egal oder ? Ich 
programmiere eigentlich gerne in BASCOM kann auch aber in C, wenn es 
sein muss. Aber ich habe doch keine "Verzögerung etc.." wenn ich mit 
BASCOM arbeite oder ?

Es ist ja bekannt, dass die Assember Programme ja schneller ablaufen als 
die C Programme...
Gast #1529162
Wenn du es geschickt (per Hardware - also Timer) machst, spielt die 
Sprache keine Rolle. So viel langsamer als Assembler ist C auch nicht. 
Zu Basic sag ich jetzt mal nix...
Gast #1529167
Hi

>Welche Programmiersprache ich jetzt nehme ist doch egal oder ?

Von einem notorischen Assemblerprogrammierer: Nimm die Sprache, die du 
am besten kannst. Erst wenn es damit nicht geht, solltest du umsatteln.

MfG Spess

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.