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
evntuell ist dieses projekt für dich hilfreich: http://www.zabex.de/frames/kugelmuehle.html (siehe abschnitt drehzahlreglelung) der erbauer verwendet dabei allerdings keinen hall-sensor, sondern misst die spannung die der motor zwischen den impulsen induziert.
Fast alles mechanische ist langsam für einen MC :-) Rechne mal selbst: 10.000/min sind gerade mal 166Hz...
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.
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
>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.
>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...
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...
Ich versuche es mit C und werde mich bei Problemen ggf. melden. Vielen Dank erstmal für die Hinweise und Hilfe !
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
geht auch in Bascom, keine Sorge. Wie schon gesagt, nimm das, womit Du Dich auskennst und klar kommst.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.