Moin
ich möchte gerne die Drehzahl meines Modellmotors (2,65ccm, bis zu
35.000 RPM, sollte aber wenn möglich bis 40k messen können) messen und
das Ergebnis mit dem RPI weiterverarbeiten (soll insgesamt ein Teil
einer etwas komplexeren Steuerung werden, wobei die Motordrehzahl selber
nicht zum steuern genutzt werden soll, sondern rein als Info für den
Fahrer mitgemessen werden soll.
Der einzige Punkt, an dem man wirklich die Motordrehzahl messen könnte
und der im eingebautem Zustand halbwegs zugänglich ist, ist die
Schwungscheibe, dies ist eine Metallscheibe mit geriffeltem Rand.
Meine Idee wäre, an den geriffelten Rand mit einem Edding einen
schwarzen Strich(auf die ansonsten silberne Scheibe) zu machen und die
Stelle mit einer Reflex Lichtschranke zu "überwachen" Ähnlich wie das
hier gemacht wurde:
http://www.rc-modellbau-schiffe.de/wbb2/thread_8312_Drehzahlmesser-selbst-gebaut.html
Grundsätzlich sollte das ja funktionieren oder könnte es da wegen der
geriffelten Oberfläche Probleme geben?
Nun ist aber mein weitaus größeres Problem wie bekomme ich das Signal
nun am geschicktesten (und mit so wenig Bauteilen wie möglich) in den
RPI ^^
Problem ist, auf dem Auto ist grad so Platz für den RPI, massig Platz
ist für Zusatzschaltung nicht.
Auf Dauer wird das Auto wohl oder Übel eine neue Grundplatte erhalten ^^
lg
Chris
Hallo Chris,
Zitat Radio Eriwan "prinzipiell JA"......
Eine emorme Steigerung der Zuverlössigkeit würdest Du erreichen, wenn Du
eine ganze Hälfte des Rades schwärzen würdest...
Oder jeweils 2mal ein Viertel oder noch enger....zur besseren
Auflösung.
Als Sender hab ich in ähnlichem Ptrojekt (Tacho für ne Walze) eine
Laserdiode mit Kollimator verwendet. Dieser strahlt bei Dir das Rad
kontinuierlich an.
Als Empfänger der Reflexion kannst dann eine Photodiode ( z.b. PD333)
http://www.everlight.com/datasheets/PD333-3C-H0-L2_datasheet.pdf
verwenden.
Die Signalaufbereitung krixt sicher selber hin.
Namasté Matthias
40000 rpm sind gerade mal 666 Impulse pro Sekunde, also Kinderkacke für
den RPi.
Aber du musst Störungen fernhalten, Riffel könnten daraus wieder 400000
Impulse machen.
Entweder dein schwarz ist so gut, dass die silbrigen Riffel nicht
stören, oder das Phototransistorsignal wird gefiltert so dass er nur auf
den breiten schwarzen Streifen anspricht, der muss mindestens 20 mal
breiter als die Riffel sein, damit due nicht im Leerlauf zu Streifen
werden. So ein Filter heisst Bandpass und man baut ihn mit einem OpAmp
auf.
hm ok die Riffel könnten in der Tat zu größeren Problemen führen als
gedacht, außerdem fürchte ich ein Problem bei zu hohem Lichteinfluss in
etwa draußen in der Sonne, deswegen ist mir gerade die Idee gekommen in
die Schwungscheibe einen Magneten einzulassen und an die Schwungscheibe
einen Hallsensor zu setzen.
Ich denke da an den H501, der schaltet auf High wenn ein südpol
vorbeikommt.
Das könnte man wunderbar mit einem Interruptpin lösen, wenn der RPI
einen hätte :(
in einer Endlosschleife immer wieder den Status des Pins abzufragen
fällt allein schon aus dem Grund flach, das der RPi später genug zu tun
hat.
Gibt es IC's, die solche impulse zählen?
also praktisch nen IC der an die Signalleitung kommt, nen Zähler um eins
erhöht sobald der Eingang high wird und der RPI kann dann jede Sekunde,
alle zwei Sekunden oder so den Zählerstand auslesen und resetten und aus
dem wert dann die Drehzahl berechnen?
Ich finde grad mit verschiedensten Suchbegriffen nichts was mir da
weiterhilft :(
lg
Chris
Hi, meinst du einen Zähler?
Oder halt jk-FF kaskadieren, also J und K = 1 und Q0 auf clock1, Q1 auf
clock2 etc. Müsste ja mit 666 Hz noch laufen. vll. noch rc Glied
abstimmen, dass nach jeder Flanke ein Ready Signal erzeugt.
Dann mit 10 oder 11 Bit parallel einlesen (oder in PISO mit latch und
dann mit dem SPI einlesen).
MfG
shee2e
Das könnte man auch mit einem kleinen uC lösen. Der hat Zähler und SPI
integriert.
Der PIC12F1840 z.B. hat SPI, 16bit Timer und Input Capture im DIL/SOIC-8
Ach, stimmt, der könnte wahrscheinlich auch gleich die Drehzahl
bestimmen.
Also µC der Wahl nehmen und ihn machen lassen.
Aber bitte beachten minimale Zeitliche Auflösung des Drehzahlsignals ist
bei der Abtastung halt proportional zu Impulsen/s.
Heist wenn der Motor (ja ich weiß unrealistisch) 1 U/s du nur einmal die
Drehzahl bestimmen kannst. (vorausgesetzt gleichförmige Bewegung)
MfG
shee2e
Die Frage ob man die Zeit zwischen 2 Impulsen bestimmt oder die Anzahl
der Impulse zählt kann man nicht eindeutig beantworten. Je nach Frequenz
hat das eine oder das andere Verfahren Vorteile bezüglich der
Genauigkeit. Ich verwende deswegen am liebsten eine Kombination aus
beiden Verfahren:
Es wird eine Messzeit definiert, hier mit T_Mess bezeichnet.
Die Messung wird gestartet, und die laufende Zeit ist t=0.
Die Messung läuft grundsätzlich so lange, bis t >= T_Mess ist.
1.Sobald der erste Impuls (1. steigende Flanke) kommt, wird die aktuelle
Zeit in den Zeitstempel t_1 geschrieben.
2.Beim nächsten Impuls (2. steigende Flanke), wird der aktuelle
Zeitstempel in t_flast geschrieben. Der Impulszähler n (zum Start der
Messung bei 0) wird um 1 inkrementiert.
3. Bei jedem nächsten Impuls wird Schritt 2 ausgeführt: n wird jedes mal
inkrementiert, und der Zeitstempel t_flast gespeichert.
Sobald die Messung beendet wird, also t > T_Mess, können die Auswertung
begonnen werden:
Wenn n = 0, dann Frequenz nicht messbar, also f < 1/T_mess
Wenn n > 0, dann gilt: Frequenz f = n/(t_flast-t_f1)
Wie man an der letzten Zeile sehen kann, geht für extrem hohe Frequenzen
t_f1 gegen 0 (da der erste Impuls sehr schnell reinkommt), und t_flast
geht gegen T_Mess: Das Verfahren konvergiert also gegen die klassische
Impulszählung.
Für sehr kleine n (das kleinste ist logischerweise 1), ist das Verfahren
eine ganz klassische Messung der Periodendauer.
Wie findet ihr das Verfahren? Machen das eigentlich viele so, also ist
das "Allgemeinwissen"?
Grüße,
Stefan
Ok ich hab jetzt eine Lösung gefunden die denke ich recht gut
funktioniert.
Und zwar nutze ich jetzt nen Hallsensor, der zwei mal pro umdrehung
(zwei magnete) schaltet nach der ersten hälfte auf high und bei der
zweiten hälfte auf low. Nun warte ich bis ich den ersten schaltpunkt
hatte, dann warte ich eine umdrehung ab und messe die Zeit.
ich hab das bisher nur mit einem akkuschrauber als testmotor gemacht, da
kam ich auf 856 1/min das ist denke ich ein recht realistischer Wert.
In wie weit die genauigkeit bleibt wenn der RPI noch mehr zu tun hat
oder die drehzahlen höher werden weiß ich nicht, das muss ich später
testen, notfalls muss da doch noch nen Atmega zwischen der das misst,
der kann dann auch gleich die Motortemperatur messen, hab dann wenigsten
kurze kabelwege zum sensor ^^
lg
Chris
Hier hätte ich etwas für Dich.
Ist ein Drehzahlsensor mit Tiny85 der als I2C Slave arbeitet. Das ganze
könntest Du bequem am RPI anschliessen und einfach die Drehzahl per I2C
abfragen.
Das ganze ist für Flugmodelle ausgelegt, um die Drehzahl eines 2-Blatt
Propeller zu messen.
Der Sensor funktioniert mit einem Fototransistor, möchtest du
stattdessen ein Hallsensor verwenden kannst du diesen einfach an PB4 des
Tiny85 anschliessen, und somit die ganze Auswertelektronik mit LM358
weglassen.
Danke, also meine Lösung hat wie befürchtet alles andere als gut
geklappt, sobald ich nebenher andere Anwendungen auf dem RPI gestartet
habe, wurden aus den ca 800 1/min azf einmal 12k oder mal 1-2 1/min.
Somit leider unbrauchbar ^^
so ein Attiny ist ja schön klein, das ist da an der stelle gut machbar.
kann ich den Attiny mit einem STK200 kmpatiblem Programmierer für den
Parallel Port programmieren?
lg
Chris
spielt keine rolle mit welchem Programmer du den Tiny flasht. Hier hast
du noch das fertige Hex-file.
Hier ein beispiel in Bascom wie du die Drehzahl per i2c auslesen kannst:
I2cstart 'Startkondition
I2cwbyte &H30 'sende Slave Adresse
I2cwbyte &HA2 'Subadresse Drehzahl
I2crepstart 'Startkondition wiederholen
I2cwbyte &H31 'sende Slave Adresse +1 für Lesen
I2crbyte H_adr , Ack 'lese Wert MSB
I2crbyte L_adr , Nack 'lese Wert LSB
I2cstop 'Stoppkondition
Waitms 10
H_adr und L_adr musst du noch zu einem word zusammen fügen und
anschliessende das ganze mit 10 multiplizieren, somit hast du den
Drehzahlwert.
ACHTUNG -> Pullup Wiederstände (4.3k) nicht vergessen !! Sind im
Schaltplan nicht eingezeichnet, da diese bei mir am Master hängen.
Christian schrieb:> sobald ich nebenher andere Anwendungen auf dem RPI gestartet> habe, wurden aus den ca 800 1/min azf einmal 12k oder mal 1-2 1/min
Na ja nun, falsch programmiert, die Auswertung hängt nicht ausreichend
am Interrupt eines Eingangs.
Ich hätte eine Frage zur obigen Schaltung von Michael:
Der LM358 arbeitet hier als Komparator, oder? Ich verstehe aber nicht,
wie der in dem Fall funktionieren soll. Man hat doch immer das gleiche
Potential an beiden Eingängen, oder? Und welche Rolle spielen hier die
beiden Kondensatoren C1 und C2?
lg Andi
Haha genau da hab ich die Schaltung auch zum ersten Mal gesehen ;-)
Derjenige hat sich die Schaltung aber auch nur wo ausgeborgt, und bei
dieser "Quelle" steht leider auch keine Erklärung dabei.
Aber wird die Helligkeit nicht über die Vorwiderstände der Segmente
eingestellt?
Könnte man auch einfach den internen Pull-up des ATtiny und den
Fototransistor als Pull-down nutzen, um die Pulse für den µC Eingang zu
bekommen?
Das Prinzip müsste so sein
* Der OpAmp ist so verschaltet, dass er eine 'unendlich hohe'
Verstärkung hat. Das heisst, sobald der + Eingang nur ein bischen
positiver ist, als der - Eingang, geht der Ausgang auf High
* Wenn die beiden 40k Widerstände und die beiden Kondensatoren nicht
wären, dann wären die beiden Eingänge tatsächlich immer auf gleichem
Potential.
* Aber: die beiden Widerstände bilden ja zusammen mit den Kondensatoren
RC-Glieder. D.h. eine Veränderung der Spannung am Spannungsteiler wird
unterschiedlich schnell auf die beiden Eingänge vom OpAmp weitergegeben.
Dadurch gibt es aber eine kurze Zeitspanne, in der die beiden Eingänge
eben nicht gleiches Potential haben. Der OpAmp 'schaltet' seinen Ausgang
entsprechend und man hat einen Puls der zur Auswertung geht.
> internen Pull-up des ATtiny und den Fototransistor als> Pull-down nutzen, um die Pulse für den µC Eingang zu bekommen?
Könnte man.
Aber.
Du hast ja verschärfte Bedingungen am Modellflugplatz. Auf der einen
Seite hast du keine gesicherte Lichtquelle hinter dem Propeller, die auf
den Phototransistor leuchtet. Je nachdem, wie du den Drehzahlmesser
hältst, misst du gegen das Gras, gegen einen Kollegen, gegen den Himmel,
etc. etc. Jedesmal wird der Phototransistor anders ausgesteuert und je
nachdem hast du dann am Spannungsteiler auch eine andere Grundspannung.
Das zweite ist, dass du nicht jede vom Phototranistsor festgestellte
Helligkeitsänderung als 'Lichstrahl durch den Propeller unterbrochen'
akzeptieren willst. Zieht vor der Sonne eine Wolke vorbei oder geht ein
Kollege vorbei, dann zählt das nicht als Unterbrechung. D.h. du willst
haben, dass die Heligkeitsänderung schon eine gewissen
Mindest'Geschwindigkeit' haben muss. Läuft der Motor nicht und der
Drehzahlmesser zeigt dir trotzdem 100U/min an, nur weil sich das Gras im
Hintergrund im Wind bewegt und somit die Spannung am Spannungsteiler
leicht schwankt, dann ist das nicht sehr zielführend.
Die Schaltung macht daher folgendes: Sie geht nicht auf die absolute
Helligkeit, sondern auf Veränderungen in der Helligkeit. Und - diese
Veränderungen müssen auch noch schnell genug sein. Nur dann generiert
sie am Ausgang des OpAmps auch tatsächlich einen Puls.
Ich hab nochmal drüber nachgedacht, und ganz klar ist es mir immer noch
nicht.
Angenommen die beiden Eingänge hätten wirklich das gleiche Potential:
was macht dann der opv? Der Ausgang kann ja nur V+ oder Gnd annehmen und
würde hin- und herspringen, d.h. man hätte kein definiertes
Ausgangssignal, oder?
A. Brewner schrieb:> Ich hab nochmal drüber nachgedacht, und ganz klar ist es mir immer noch> nicht.> Angenommen die beiden Eingänge hätten wirklich das gleiche Potential:> was macht dann der opv? Der Ausgang kann ja nur V+ oder Gnd annehmen und> würde hin- und herspringen
Genau das ist der Sinn der Sache
> d.h. man hätte kein definiertes> Ausgangssignal, oder?
Doch. Die Information steckt darin, wie oft der Ausgang des OpAmp pro
Sekunde hin und her springt. Jedes mal, wenn das Blatt der Luftschraube
vor dem Sensor vorbeirauscht, geht der Ausgang des OpAmp einmal High und
wieder Low.