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!
macht dann
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
Patrick W. schrieb: > ..., dass der Radius der bewegten Masse > einen größeren Einfluss hat wie die Länge. http://www.wie-als.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.
Matthias schrieb: > kannst du besser die Zeit für die Gesamtzahl der Umdrehungen innerhalb > der 200ms verwenden, #define MESSZEIT 200 siehe oben :-)
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!
Als Nachtrag und damit nicht jeder das Rad neu erfinden muß, eine angepaßte und abgemagerte Version für den Arduino UNO. http://www.mino-elektronik.de/fmeter/fm_software.htm#bsp7
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.