Hallo
Ich muss für meinen Leistungsprüfstand eine schnelle (sowohl häufige als
auch latenzarme) Drehzahlmessung durchführen und an einen PC übertragen.
Hierzu hatte ich bereits einen Handdrehzahlmesser RS232 getestet und für
ungeeignet befunden da die Messung etwa 2sec dauert und dann noch eine
Latenz zum PC von etwa 1sec besteht.
Nun habe ich mir:
-Arduino Uno R3
-Impusgeber SM Modellbau
http://www.sm-modellbau.de/shop/product_info.php?products_id=33&cPath=11
Der impulsgeber hat Masse 3,3V Versorgungsspannung Masse und die
Impulsleitung (bei magnetkontakt 3,3V)
Nun zu meinem Problem ich bin absoluter Neuling im Bereich Arduino und
benötige Unterstützung um zu einer Lösung zu kommen.
Welcher Lösungsansatz scheint euch der beste
-Zeitmessung zwischen den Impulsen und Hochrechnung
-Impulszählung mit Zeitspanne
-ODER NOCH ETWAS VIEL BESSERES?
vielen Dank im Vorraus
Michael Schmidt
www.rcmk-tuning.de
Hallo,
da kein Budget genannte würde, schlage ich mal einen Inkrementalgeber
(zB mit 512 oder 1024 Impulsen pro Umdrehung vor). Den muss man dann nur
mit nem µC auswerten, den Winkel ableiten und die Werte an den PC
schicken.
MfG
wenn es um verbrennungsmotoren geht und du nur einen impuls pro
umdrehung hast würde ich deisen mit einem timer stoppen.
den gleitenden mittelwert der letzten 16 messungen dann über rs 232 an
den PC senden.
das sollte alles ohne werkliche verzögerung gehen
Schnelle Messung hast du wenn du die Zeit für eine oder gar nur für den
Bruchteil einer Umdrehung misst.
Impulse erhälst du induktiv oder über Lochscheibe und Lichtschranke, bzw
Reflexlichtschranke und Farbmarkierung auf Scheibe/Welle.
Was günstig ist hängt von der maximalen Drehzahl ab.
Wenn die sich im Bereich von max. 1000 U/sekunde bewegt, dann nimmt man
den Timer und lässt den die Zeit zwischen 2 Impulsen messen.
Man benötigt dann natürlich die Dauer von einer Umdrehung für die
Messung, also bei langsamer Drehzahl dauert die Messung länger.
Ggf muss man dann einen Timerüberlauf berücksichtigen oder mittels
Incrementalgeber nur einen Bruchteil einer Umdrehung berücksichtigen.
für einen Kanal:
Beitrag "einfache Drehzahlmessung mit ATmega88"
für 4 Kanäle:
Beitrag "4-Kanal Drehzahlmessung mit ATmega88"
oder etwas fertiges mit ATtiny4313, was per RS232 die Daten ausgibt:
http://www.mino-elektronik.de/fmeter/neue_versionen.htm#aa
Mit einem Impulsgeber, der einen Impuls/Umdrehung liefert, ist mit jeder
Umdrehung ein neuer Meßwert verfügbar. Für langsame Umdrehungen, kann
man einen Geber verwenden, der auch 10 oder 1000 Impulse/Umdrehung
liefert. Die gezeigten Schaltungen machen das alles noch mit.
Allerdings wirkt die serielle Datenausgabe bei hohen Frequenzen etwas
als Bremse.
Nehmen wir mal einen Ergebnisstring mit 8 Zeichen, der braucht bei
19200Bd rund 4ms, bis er vollständig übertragen ist. Ich denke, mit
dieser Latenzzeit kann man leben.
Auf dem Arduinoboard könnte das laufen, wenn Du anstatt des ATmega328
den pinkompatiblen ATmega88 verwendest.
Ok also die Hardware habe ich ja bereits bestellt :
-arduino uno mit atmega 328
- induktiver Drehzahlsensor 3,3v liefert pro Umdrehung einen 3,3v Impuls
Was bedeutet pinkompatibler atmega88 ?
Wird das mit dem arduino uno also nicht funktionieren?
Die Drehzahl soll gemessen werden von 6000U/min bis 22000U/min.
Habt ihr möglicherweise simple Codeschnipsel parat wie ich die Zeit
zwischen
zwei Impulsen seriell sende?
Oder auch in einer Zeitspanne von 250ms die Impulse zähle und das rohe
oder errechnete
Ergebnis sende.
Danke schonmal für eure Antworten
Michael Schmidt
http://www.rcmk-tuning.de
Welche Drehzahl willst du messen?
Das Hinterrad bzw. die beschleunigte Masse? Oder doch die Motor Drehzahl
wie man aus den 6000rpm - 22000rpm sehen kann?
Für welche Geschwindigkeit willst du das auslegen? 100km/h oder auch
über 300km/h?
Das ändert die Anforderungen zu den Sensoren!
Gruß
Stumpf schrieb:> Für welche Geschwindigkeit willst du das auslegen? 100km/h oder auch> über 300km/h?
Für 0 Km/h siehe ersten Post des TO -> Leistungsprüfstand.
Michael Schmidt schrieb:> Was bedeutet pinkompatibler atmega88 ?> Wird das mit dem arduino uno also nicht funktionieren?
Das bedeutet, dass der ATmega88 in die Fassung des ATmega328 paßt und
sich intern nur durch kleinere Speicher, etwas geänderten 'fuses' und
Vektortabelle unterscheidet.
Das betreffende Datenblatt gilt für ATmega48/88/168/328.
Einen Link mit ser. Ausgabe hatte ich ganz vergessen:
http://www.mino-elektronik.de/7-Segment-Variationen/LCD.htm#led2
Von der Schaltung brauchst Du nur den ATmega328. Dein 3,3V Sensorsignal
kommt an PD6(AIN1) und der Eingang PC1(ADC1) braucht einen Widerstand
10k-47k gegen 0V (GND), damit die Saklierung auf 'Drehzahl' gestellt
wird.
Der Rest der gezeigten Schaltung nebst Display kann total entfallen.
Im Programm muß die F_CPU auf 16MHz und die MESSZEIT sollte vorerst auf
30 eingestellt werden. Die MESSZEIT legt die höchste Meßrate in 'ms'
fest und könnte auch auf 10 gestellt werden, um 100 Messungen/s
durchzuführen. Allerdings wirkt dann die ser. Ausgabe als Bremse. Da
wären dann 38400 oder 57600Bd besser.
Die ser. Ausgabe kann über die USB-Schnittstelle erfolgen; wie das geht
ist mir bei dem Arduino aber nicht bekannt.
Ich fahre heute in die Große Stadt und werde mir mal einen UNO R3
besorgen; vielleicht mache ich dafür noch eine gesonderte Version. Mich
interessiert, wie gut der erzeugte Code aussieht und ich muß mal wieder
etwas spielen :-)
Stumpf schrieb:> Welche Drehzahl willst du messen?>> Das Hinterrad bzw. die beschleunigte Masse? Oder doch die Motor Drehzahl> wie man aus den 6000rpm - 22000rpm sehen kann?>> Für welche Geschwindigkeit willst du das auslegen? 100km/h oder auch> über 300km/h?>> Das ändert die Anforderungen zu den Sensoren!>> Gruß
Also dann mal komplett
Für die Leistungs und Drehmomentenmessung von RC Motoren baue ich einen
Prüfstand.
Zur Erstellung eines Leistungsdiagramms muss von dem Motor eine
Schwungmasse beschleunigt werden, währenddessen werden Drehzahl und das
anliegende Drehmoment aufgezeichnet und die Leistung errechnet.
Eine Waage zur Drehmomentaufzeichnung habe ich bereits sie Sendet per
RS232 Werte an den PC.
Ein Handdrehzahlmesser mit RS232 hat sich als VIEL VIEL zu langsam in
der Drehzahlermittlung und Übertragung erwiesen weshalb ich nun einen
bauen muss.
Also gemessen wird die Drehzahl direkt am Motor bis maximal 22000rpm
Michael Schmidt schrieb:> Eine Waage zur Drehmomentaufzeichnung habe ich bereits sie Sendet per> RS232 Werte an den PC.
Warum misst du noch das Drehmoment, wenn du eine Schwungmasse
beschleunigst?
Über die Beschleunigung kannst du das Drehmoment berechnen.
Wie willst du die Messwerte synchronisieren, wenn du Drehmoment und
Drehzahl beide an den PC schickst? Der PC ist nicht echtzeitfähig.
Normalerweise erfasst man bei so einem dynamischen Motorprüfstand die
Zeit für jede Umdrehung und schickt die an den PC.
Daraus errechnet sich dann die Drehzahl über die Zeit und die
Beschleunigung und bei bekanntem Trägheitsmoment der Schwungmasse das
Drehmoment.
Udo Schmitt schrieb:> Warum misst du noch das Drehmoment, wenn du eine Schwungmasse> beschleunigst?> Über die Beschleunigung kannst du das Drehmoment berechnen.
Naja erstens kann ich diese Berechnung nicht vornehmen und ich wüsste
auch nicht wer, und obendrein gibt's noch ne Getriebeuntersetzung zur
Schwungmasse 6:1.
Ich denke das eine echte Messung das genauere ist und da das Drehmoment
nur langsam und gleichmäßig sinkt und steigt kommt es auf einen kleinen
Versatz zwischen den beiden Messgrößen nicht an.
Michael Schmidt
http://www.rcmk-tuning.de
Okay gut,
ich habe sowas für einen Motorrad Prüfstand gebaut.
Als Abnehmer haben wir eine Impulsscheibe gefräßt mit 20 Zähnen pro
Umdrehungen mit einem Tastverhältnis von 50%. Diese werden dann mit
einem Impulsgeber abgetastet.
Allerdings liegt hier die maximale Frequenz bei ca. 300Hz. Denke das ist
für dich zu niegdrig.
Gibt aber auch schnellere mit 5khz sind aber auch teurer.
Gruß
m.n. schrieb:> Von der Schaltung brauchst Du nur den ATmega328. Dein 3,3V Sensorsignal> kommt an PD6(AIN1) und der Eingang PC1(ADC1) braucht einen Widerstand> 10k-47k gegen 0V (GND), damit die Saklierung auf 'Drehzahl' gestellt> wird.> Der Rest der gezeigten Schaltung nebst Display kann total entfallen.
Ok AIN1 3,3V und GND ist klar aber wo ist auf dem Board ADC1?
Habe hier mal ein Bild mit den vermutlich zu verwendenen Pins.
http://www.rcmk-tuning.de/files/arduino.jpg
Wo jedoch ist besagter PC1(ADC1)?
Michael Schmidt
http://www.rcmk-tuning.de
Das ist ein Job, bei dem sich auch der Leistungsschwächste Arduino fast
zu Tode langweilt.
Reich Dir überhaupt die Messzeit und damit verbunden auch die
Messgenauigkeit mit einem Tick pro Runde?
Bei so etwas misst man am Einfachsten die Zeit zwischen zwei Runden.
Das Programm hierfür kannst Du Dir wahrscheinlich aus den mitgelieferten
Beispielen zusammenkleben.
Am aufwändigsten wird wohl sein festzustellen, ob das Teil eine stabile
Drehzahl erreicht hat oder noch beschleunigt bzw. bereits abbremst.
Alternativ schickst Du auf Teufel-Komm-Raus Messwerte und überlässt es
dem Empfänger, die ihm genehmen herauszuklauben.
Michael Schmidt schrieb:> Ok AIN1 3,3V und GND ist klar aber wo ist auf dem Board ADC1?
Dein mit A1 bezeichneter Pulseingang ist ADC1; hier muß der Widerstand
angeklemmt werden.
Bei der oberen Reihe ist Pin7 der Pulseingang PD7/AIN1.
amateur schrieb:> Reich Dir überhaupt die Messzeit und damit verbunden auch die> Messgenauigkeit mit einem Tick pro Runde?
Bei 6000 U/min beträgt die minimale Messdauer 10ms und das Ergebnis kann
mit dem 16MHz Takt 5-stellig ausgewertet werden. Das sollte doch
reichen!
Die Sache ist relativ einfach. Habe mal vor ca. 18 Jahren die Hardware -
Software dazu für Jemand gemacht. Frag mich aber bitte nicht mehr nach
den Details, dazu ist es zu lange her.
Es ist einfacher und günstiger einen dynamischen Leistungsprüfstand mit
Schwungmasse zu bauen als einen statischen mit Bremse und
Drehmomentmessung.
Das Massenträgheitsmoment der Welle und der Schwungscheibe kann man
relativ einfach berechen. Die Drehzahl kann man entweder über eine
Taktscheibe aus Alu und einer Lichtschranke oder über ein ZAHNRAD
messen. Wie schon erwähnt wurde ist so was für einen Arduino keine
Herausforderung.
Man braucht dazu 2 Timer. Der 1. Timer leitet z.B. alle 10ms eine
Drehzahlmessung ein. Der 2. Timer misst die Drehzahl. Und jedes mal wird
dann der Wert über USB oder RS232 an de PC geschickt.Der PC rechnet
danach aufgrund der Winkelbschleunigung und Massenträgheitsmoment das
Drehmoment und über die Drehzahl dann die Leistung bei der anliegenden
Drehzahl aus.
Das ist keine Hexerei. Einfach Schritt für Schritt vorwärts gehen.
_Zuerst mal Drehzahl sprich Zeit zwischen 2 Impulsen mit einem Timer
messen.
_Dann mit dem 2. Timer diese Messung alle 10ms einleiten und Resultat an
den PC schicken. Auch für PC sind dies wenige Daten die hier verarbetet
werden müssen.
Bei der Schwungmasse besser im Durchmesser sparen dafür die Länge
grösser machen. Damit wird die Umfangsgeschwindigkeit nicht zu hoch.
Hier noch ähliche Projekte:
Nitro RC Car Engine X-DYNO with Velocity RC Magazine
http://www.youtube.com/watch?v=N7tqEIDgz3w
Saw Dyno.AVI
http://www.youtube.com/watch?v=K7lITK8a6vs
Small Engine Dyno In Action
http://www.youtube.com/watch?v=HSFJ2hUnMLw
RC inertia engine dyno
http://www.youtube.com/watch?v=uxsN70uAdqA
dyno
http://www.youtube.com/watch?v=Zat1Sd54HjM
@m.n.
Es ist doch immer wieder schön zu sehen, wie sich jemand aus einem
Bündel von Fragen und Problemen was Einfaches heraussucht und natürlich
dann auch beantworten kann.
Lachsschokolade schrieb:> Bei der Schwungmasse besser im Durchmesser sparen dafür die Länge> grösser machen. Damit wird die Umfangsgeschwindigkeit nicht zu hoch.
Dass man etwas acht geben sollte auf die Umfangsgeschwindigkeit ist
richtig. Aber man sollte auch beachten, dass der Radius der bewegten
Masse einen größeren Einfluss hat wie die Länge.
Die Länge geht einfach ein in das Trägheitsmoment. Der Radius bei einem
Zylinder mit hoch 4!
PS: Da Drehmomentmesswellen nicht ganz günstig sind, würde ich an deiner
Stelle mal probieren, ob es nicht reicht die Drehzahl aufzuzeichnen und
mit bekanntem Trägheitsmoment in Drehmoment und Leistung umzurechnen.
m.n. schrieb:> Dein mit A1 bezeichneter Pulseingang ist ADC1; hier muß der Widerstand> angeklemmt werden.> Bei der oberen Reihe ist Pin7 der Pulseingang PD7/AIN1.
Super danke :)
also folgenden Wiederstand drauf und los kanns gehen !?
http://www.conrad.de/ce/de/product/405370/12-W-Kohleschicht-Widerstand-10-k-axial-bedrahtet-Bauform-0411-05-W-5-/?ref=search&rt=search&rb=1
Nochmal zurück zur Praxis der Drehzahlmessung
Also ich könnte mir vorstellen da die Impulse pro Sec mit 100 - 420 doch
recht hoch sind und könnte mir vorstellen ein art "Plausibilität
Mitzuprüfen" der Messwert wird am Rechner MAXIMAL alle 250ms benötigt.
Schneller kann muss aber nicht die Schnittstelle hat ja sicher auch eine
Leistungsgrenze.
ist es denkbar 10 mal den abstand zwischen den Impulsen zu messen
auf Plausibilität zu prüfen also z.B. Impulse mit mehr als 15%
Abweichung zum Mittelwert fliegen raus und aus den restlichen wird der
Durchschnitt an den PC gesendet?
Michael Schmidt
http://www.rcmk-tuning.de
>Also ich könnte mir vorstellen da die Impulse pro Sec mit 100 - 420 doch>recht hoch sind und könnte mir vorstellen ein art "Plausibilität>Mitzuprüfen" der Messwert wird am Rechner MAXIMAL alle 250ms benötigt.>Schneller kann muss aber nicht die Schnittstelle hat ja sicher auch eine>Leistungsgrenze.
Wie gesagt, weder für die Schnittstelle noch für den Arduino ist so eine
Herausforderung. Der Arduino schläft dabei schon fast ein und dem USB
geht es ählich. Mein Projekt ging noch mit RS232 und auch dies ging
problemlos.
Wenn du alle 250ms messen willst, dann brauchst du aber eine grössere
Schwungmasse damit der Motor nicht so schnell hochbeschleunigt und du
eine entsprechende Auflösung kriegtst.
Du kannst ganz locker 20,50 oder 100/Sek. messen. Du musst auch nicht
die Anzahle Impulse zählen sondern kannst bei einer Taktscheibe z.B. mit
4Loch die Zeit dazwischen messen. So was kann man auf verschieden Arten
umsetzten.
Patrick W. schrieb:> PS: Da Drehmomentmesswellen nicht ganz günstig sind, würde ich an deiner> Stelle mal probieren, ob es nicht reicht die Drehzahl aufzuzeichnen und> mit bekanntem Trägheitsmoment in Drehmoment und Leistung umzurechnen.
Ja ich würde gerne diese Information zusätzlich auswerten falls ich
jemanden finde der mir bei der Berechnung hilft.
Das tatsächliche Drehmoment wird jedoch in jedem Fall ausgewertet da
eine Waage bereits vorhanden ist.
Es wird an einem festen Messpunkt 200mm entfernt von der
Kurbelwellenmitte und auch auf einer horizontalen Achse zur Kurbelwelle
gemessen und der ermittelte wert in Newtonmeter umgerechnet.
Falls du die Massenträgheit berechnen kannst würde ich gerne die
"Errechnete Leistung" zusätzlich in der Prüfstandssoftware verwenden.
Michael Schmidt
http://www.rcmk-tuning.de
Lachsschokolade schrieb:> Wenn du alle 250ms messen willst, dann brauchst du aber eine grössere> Schwungmasse damit der Motor nicht so schnell hochbeschleunigt und du> eine entsprechende Auflösung kriegtst.
Ja das ist noch eine Unbekannte die ich gern beseitigt wüsste.
Zum Motor:
-ca 8 PS
-ca 5Nm Drehmoment
- Messdrehzahl 6000-22000
zum Prüfstand
- Übersetzung Motor zu Schwungmasse 6:1
Schwungmasse mit 50,1 Kg und 41cm Durchmesser
ca80% der Messe des Schwungrades befinden sich auf den
äußeren 5cm des Radius.
hast du ne Schätzung oder Berechnung parat wie lange der Meßvorgang
dauern könnte?
ich denke ok wäre alles von 20-60sec.
Michael Schmidt
http://www.rcmk-tuning.de
>> PS: Da Drehmomentmesswellen nicht ganz günstig sind, würde ich an deiner>> Stelle mal probieren, ob es nicht reicht die Drehzahl aufzuzeichnen und>> mit bekanntem Trägheitsmoment in Drehmoment und Leistung umzurechnen.
In 99.9% aller statischen Leistungsprüfstande wird das Drehmoment über
eine Bremse gemessen. Dazu braucht es keine Drehmomentmesswellen.
>Das tatsächliche Drehmoment wird jedoch in jedem Fall ausgewertet da>eine Waage bereits vorhanden ist.
Dies ist aber ein statischer Prüfstand. Dies ist was ganz anderes. Dazu
braucht es eine Bremse, wie z.B. Wirbelstrom, Wasserwirbel oder rein
mechanisch. Dafür braucht man kein Schwungrad. Die Leistung die die
Bremst musst du übringes in Form von Wärme noch abführen. Bei einem
dynamischen Prüfstand wie ich ihn beschrieben habe braucht man nur ein
Schwungrad und damit wird über die Winkelbschleunigung das Drehmoment
errechent.
>Falls du die Massenträgheit berechnen kannst würde ich gerne die>Errechnete Leistung" zusätzlich in der Prüfstandssoftware verwenden.
Für was brauchst du dies wenn du das Drehmoment direkt messen willst?
Lachsschokolade schrieb:> Dies ist aber ein statischer Prüfstand.
So wie ich das sehe baut er durch die große Schwungmasse einen
quasistatischen Prüfstand auf.
Die Drehzahl läuft langsam auf die max. Drehzahl hoch und dann wird wohl
der Versuch enden.
Dadurch braucht er keine Bremse und keine Regelung dafür.
Lachsschokolade schrieb:> Dies ist aber ein statischer Prüfstand. Dies ist was ganz anderes. Dazu> braucht es eine Bremse, wie z.B. Wirbelstrom, Wasserwirbel oder rein> mechanisch. Dafür braucht man kein Schwungrad. Die Leistung die die> Bremst musst du übringes in Form von Wärme noch abführen. Bei einem> dynamischen Prüfstand wie ich ihn beschrieben habe braucht man nur ein> Schwungrad und damit wird über die Winkelbschleunigung das Drehmoment> errechent.
Warum sollte das nicht mit einer Schwungmasse funktionieren?
Bei Prüfständen mit Wirbelstrombremsen kannst du halt eine festen
Drehzahl belasten.
Nach meinem Verständnis versucht der Motor immer mit aller Kraft die
Schwungmasse zu beschleunigen und daher lässt sich die daraus
resultierende gleich große Gegenkraft mit einer Waage messen.
Wenn ich da einen Denkfehler habe bin ich für Aufklärung dankbar
Michael Schmidt
http://www.rcmk-tuning.de
Interessant wäre hier die Auswertung des Drehmoments. Da ein Einzylinder
Verbrenner alles andere als ein lineares Drehmoment erzeugt und die
Messung wohl zwischen Motor und Schwungmasse erfolgt, dürfte das wohl
die anspruchvollste Auswertung werden.
Das Drehmoment über die Rotationsbeschleunigung und das Trägheitsmoment
ermitteln hat den netten Vorteil, daß man direkt das mittlere Drehmoment
erhält.
>Interessant wäre hier die Auswertung des Drehmoments. Da ein Einzylinder>Verbrenner alles andere als ein lineares Drehmoment erzeugt und die>Messung wohl zwischen Motor und Schwungmasse erfolgt, dürfte das wohl>die anspruchvollste Auswertung werden.
Wie gesagt dazu braucht es nur ein genügend grossen Schwundgrad. Dies
bügelt die Drehomentspitzen ziemlich. Das gleiche Problem hast du auch
mit der statischen Messung auch. Im Gegenteil dort sind die Spitzen
sogar noch grösser. Bei einem statischen Prüstand habe ich ebenfalls
mitgewirkt. Die Schwankungen sind da viel viel grösser. Die muss man
dort mechanisch und mathematisch ausbügeln. Dazu kommt dass statische
Prüfständmessungen für den Motor besonders wenn die Messung zu langsam
erfolgt eher schädlich sind als dynamische Messungen.
Ich bin über 30 Jahre im Modellbau und habe mich viele Jahre sehr
intensiv mit Tuning von Modellmotoren mit Glühzündung und Funkenzündung
beschäftigt.
Und zum Thema Genaugigkeit wird meistens mit Kanonen auf Spatzen
geschossen. Die meisten Modellmotoren unterliegen grossen Schwankungen
alleine schon bei Wetter-und Temperaurwechsel oder Lageänderung.
Lachsschokolade schrieb:> Wie gesagt dazu braucht es nur ein genügend grossen Schwundgrad. Dies> bügelt die Drehomentspitzen ziemlich. Das gleiche Problem hast du auch> mit der statischen Messung auch. Im Gegenteil dort sind die Spitzen> sogar noch grösser.
Das ist es doch gerade, er misst so wie ich das verstanden habe zwischen
Motor und Schwungmasse!
Lachsschokolade schrieb:> Und zum Thema Genaugigkeit wird meistens mit Kanonen auf Spatzen> geschossen.
Völlig richtig, darum genügt auch die ungefähre Ermittlung des
Trägheitsmoments des Prufstands und die Zeit pro Umdrehung um damit die
Rotationsbeschleunigung zu ermittlen.
Also da mir eine Berechnung der Massenträgheit nicht möglich ist
(nichtmal ungefähr) ist die Auslegung auf genannte Schwungmasse auch
optional es kommt auch ein Generator in frage wo sich die erzeugte
Leistung sogar messen ließe (bekannter Wirkungsgrad des Gesamtsystems
vorrausgesetzt).
Aber bisher habe ich noch nicht die Drehzahl des Motors.
Habt ihr eine beispielhafte Arduino Programmierung oder eine
detaillierte Liste der zu verwendenden Codeschnipsel durch die ich mich
durcharbeiten kann oder wie müsste ich da nun rangehen?
Michael Schmidt
http://www.rcmk-tuning.de
>Generator in frage wo sich die erzeugte>Leistung sogar messen ließe (bekannter Wirkungsgrad des Gesamtsystems>vorrausgesetzt).
Vom Generator rate ich dir ab. Dies ist dann wirklich ungenau.
Generatoren für solche Leistungen mit einem Wirkungsgraddiagramm wirst
du wohl kaum kriegen. Dann kommmt noch hinzu, dass sich die Wicklung
erwärmt und nochmals alles verfälscht.
Lachsschokolade schrieb:> Dann kommmt noch hinzu, dass sich die Wicklung> erwärmt und nochmals alles verfälscht.
Ok danke das hatte ich tatsächlich nicht bedacht.
Aber Wichtig ist nun das ich zu einem Funktionierenden Arduino
Drehzahlmesser komme.
Bräuchte da jetzt dringend Unterstützung beim Programmieren des
Arduino!!
>Bräuchte da jetzt dringend Unterstützung beim Programmieren des>Arduino!!
Wie gesagt ein Schritt nach dem anderen. Dann wirds auch was. Wenn alles
schon in 1 Woche fertig sein muss, wird es wohl nix.
Michael Schmidt schrieb:> Also da mir eine Berechnung der Massenträgheit nicht möglich ist> (nichtmal ungefähr) ist die Auslegung auf genannte Schwungmasse auch> optional...
Ich hoffe es ist dir möglich einfache Recherchen im Internet anzustellen
und Berechnungen mit dem Taschenrechner auszuführen.
Hier ein paar Tipps und Stichwörter:
Massenträgheitsmoment. Das kannst du näherungsweise für dein Schwungrad
gerechnen. Eventuell musst du es aus mehreren Teilen zusammensetzten
(rechnerisch, also nicht auseinander sägen ;-)). Z.B. Welle als
Zylinder, Speichen als Hohlzylinder, Außenfläche auch als Hohlzylinder
http://de.wikipedia.org/wiki/Trägheitsmoment#Haupttr.C3.A4gheitsmomente_einfacher_geometrischer_K.C3.B6rper
Dann solltest du dir die Formeln der Rotation raus suchen. Das
funktioniert ähnlich wie die geradlinige Bewegung.
Stichworte: Winkelgeschwindigkeit, Winkelbeschleunigung, Drehmoment,
Leistung
Beachten musst du auch dein Getriebe.
Das solltest du mit etwas Recherche im Netz berechnen können. Ansonsten
brauchst du dir gar nicht die Mühe machen und programmieren zu wollen.
Wenn du Fragen zu einzelnen Formeln oder Berechnungen hast dann her
damit, aber sieh mir bitte nach, dass ich hier nicht ein Script von
Physik I schreibe. ;-)
Edit:
http://m.schuelerlexikon.de/phy_abi2011/Groessen_zur_Beschreibung_der_Rotation.htm
Ok habe mir mal die Funktion zur Pulszählung angeschaut:
> pulseIn()>> Beschreibung>> Liest einen Puls( HIGH oder LOW) auf einem Pin aus. Zum Beispiel, wenn > value
gleich HIGH ist, wartet pulseIn() bis der Pin auf HIGH geht,
> startet die Zeit, dann wird gewartet bis der Pin auf LOW ist und> die Zeit wird gestoppt. Zurückgegeben wird die Länge des Puls in> Mikrosekunden. Nach einer bestimmten Zeit wird 0 zurückgegeben,> wenn kein Pulse kommt.> Die Zeitzählung dieser Funktion wurde erfahrungsgemäß bestimmt und wird > bei
längeren Pulsen Fehler anzeigen. Funktioniert mit Pulsen zwischen 10 >
Mikrosekunden und 3 Minuten
Jedoch steht in der Funktionsbeschreibung 10ms bis 3min !?
bei 20000U/min sind es jedoch eher 3-4ms
-Meintet Ihr eine andere Funktion für die Zeitmessung oder geht das
Trotzdem?
Michael Schmidt
http://www.rcmk-tuning.de
Nachdem ich hier einen UNO R3 auf dem Tisch habe, stellt sich die
Drehzahlmessung als super simpel dar.
Der Quelltext von
http://www.mino-elektronik.de/progs/avr/FMETER_LED328/FMETER_LED328.c
wird in das Editorfenster geladen. Zunächst reicht es aus, F_CPU auf
16000000 einzustellen, das Programm zu übersetzen und einen 'Upload' zu
starten.
Das Meßsignal muß, wie oben schon geschrieben, an AIN1 gelegt werden.
Bei jeder Ausgabe blinkt die TXD-LED und ein Terminalprogramm, welches
auf den von Arduino gewählten COM-Port mit 19200Bd eingestellt wird (bei
mir ist es COM10), zeigt die ausgegebenen Meßwerte.
Abgesehen von der geänderten Taktfrequenz kann der Quellcode 1:1
verwendet werden, kein setup() oder loop() sind notwendig. Die
vorhandene main() wird anstandslos akzeptiert:
super simpel!
So ich bin schon mal ein Stück weiter.
Ich verwende nun den angehangenen Code um die Drehzahl zu ermitteln.
Das funktioniert ach recht gut jedoch würde ich gern 200ms lang
die ermittelten werte in einen Array laufen lassen und diesen dann
Berechnen(Durchschnittswert der in den 200ms aufgelaufenen Messungen)
und seriell das Ergebnis ausgeben.
Habt ihr einen guten Ansatz wie das zu realisieren ist?
Michael Schmidt
http://www.rcmk-tuning.de
Michael Schmidt schrieb:> Habt ihr einen guten Ansatz wie das zu realisieren ist?
Ich hatte Dir ja eine fixundfertige Lösung gegeben.
War sie Dir zu einfach oder zu schwer?
Nun ja es war etwas viel drum rum z.B. LCD daher konnte ich mit meinen
bescheidenen Arduino Programierkenntnissen den sketch nicht wirklich
"verstehen".
Habe diese sehr kurze variante gewählt uns angepasst da sie wirklich
nichts anderes macht als die ermittelte Drehzahl zu senden.
Jetzt fehlt mir zu meinem Glück nur noch oben genannte Funktion :)
Michael Schmidt
http://www.rcmk-tuning.de
Michael Schmidt schrieb:> Das funktioniert ach recht gut jedoch würde ich gern 200ms lang> die ermittelten werte in einen Array laufen lassen und diesen dann> Berechnen(Durchschnittswert der in den 200ms aufgelaufenen Messungen)> und seriell das Ergebnis ausgeben.>> Habt ihr einen guten Ansatz wie das zu realisieren ist?
Statt über 200ms dauernd Drehzahlwerte zu bestimmen und dann zu mitteln,
kannst du besser die Zeit für die Gesamtzahl der Umdrehungen innerhalb
der 200ms verwenden, um daraus gleich die mittlere Drehzahl zu
berechnen.
m.n. schrieb:> #define MESSZEIT 200> siehe oben :-)
Nicht Torzeit=200ms, sondern Anzahl und Dauer der vollständigen
Umdrehungen innerhalb des Zeitfensters. Sonst bekommt man Jitter rein,
u.a. durch Wechsellastmomente.
Ja das Problem ist das das deutlich ungenauer ist!
Denn bei 200ms Messzeit muss das Ergebnis für die Umrechnung in U/min
mit 300 multipliziert werden was wiederum bedeutet das die angezeigte
Drehzahl immer ein Vielfaches von 300 ist. Das ist unnötig ungenau da es
ja besser geht!
Na kein Experte da der mir sagen kann ob das mit nem Array passt ?
Michael Schmidt
http://www.rcmk-tuning.de
Michael Schmidt schrieb:> Das ist unnötig ungenau da es ja besser geht!
Eben, s.o.
Wenn du nicht den vorgeschlagenen reziproken Zähler verwenden möchtest,
könnte man einfach folgende Lösung umsetzen:
Nimm einen Timer, der alle 300ms Bescheid sagt und einen, der einen
schnellen Takt zur Verfügung stellt.
1) Beim ersten Nulldurchgang der Welle merkt man sich die "Zeitanzeige"
des schnellen Timers und beginnt Umdrehungen zu zählen.
2) Nach dem nächsten 300ms-Takt, wartet man auf den Nulldurchgang der
Welle, liest wieder den schnellen Timer ab, bildet die Zeitdifferenz und
berechnet anhand der Zahl der Umdrehungen die Drehzahl (passend skaliert
über Fixkommarechnung) - fertig ist der genaue Mittelwert.
3) Den Zeitpunkt des Nulldurchganges merkt man sich wieder, setzt den
Umdrehungszähler zurück und weiter geht's bei 2)
Keine 300er-Schritte, keine Rundereien, kein Array ...
Matthias schrieb:> Nicht Torzeit=200ms,
Wer redet denn von Torzeit?
> sondern Anzahl und Dauer der vollständigen> Umdrehungen innerhalb des Zeitfensters.
Das passiert doch schon alles.
Ich geb's auf!