Hallo zusammen, für mein Bötchen möchte ich mit einem Arduino nano einen Drehzahlmesser bauen. Ich habe Versuche mit 2 unterschiedlichen Sensoren gefahren. Mit einem Hall-Sensor funktionieren alle unterschiedlichen im Netz verfügbaren Code einwandfrei. Mit einem IR-Standardmodul (habe 3 ausprobiert) habe ich, egal welche Software ich auch verwende, Probleme, dass es Nonsens-Werte ausgegeben werden obwohl mit dem Hall-Sensor die gleiche SW funktioniert. Hardwareseitig habe ich die verschiedenen Aufbauten, welche im Netz als funktionierend gezeigt werden ebenfalls durchprobiert. Gibt es eine Erfahrung woran sowas generell liegen kann? Gruß Andreas
Andreas G. schrieb: > Gibt es eine Erfahrung woran sowas generell liegen kann? Ja, an der Un-Erfahrung und Un-Willigkeit des Users sich detailliert mit der Materie auseinanderzusetzen.
Unerfahrenheit kann sein - deswegen bin ich ja u.a. auch hier unterwegs um dieser Unerfahrenheit auszumerzen und ECHTE Hilfestellungen zu bekommen. Unwilligkeit kann nicht sein - habe, bevor ich hier eine Frage einstelle- reichlich Zeit darin investiert es selber hinzubekommen. Aber Danke lieber Vorahner für die konstruktive Unterstützung. @ Optiker: habe bzgl. "Optik" ebenfalls reichlich Versuche unternommen. Der IR-Sensor schaltet brav (LED schaltet) - scheint aber undefinierte Signale an den Interrupt zu geben, so dass so schräge Werte herauskommen.
Andreas G. schrieb: > Der IR-Sensor schaltet brav (LED schaltet) - scheint aber undefinierte > Signale an den Interrupt zu geben, so dass so schräge Werte > herauskommen. wer sendet IR mit was? Bei Fernbedienugen wird ja moduliert gesendet mit 30-40kHz um statisches Licht nicht zudetektieren. Der Empfänger ein TSOP hat Filter eingebaut und regiert nur in dem Bereich der Sendefrequenz. OK ein mittiger TSOP mit 36kHz empfängt schon von 30-40 kHz, aber keine 400 kHz. Reines statisches Licht ist halt schlechter auszuwerten als gepulstes Licht.
Andreas G. schrieb: > Mit einem Hall-Sensor funktionieren alle unterschiedlichen im Netz > verfügbaren Code einwandfrei. Mit einem IR-Standardmodul (habe 3 > ausprobiert) habe ich, egal welche Software ich auch verwende, Probleme, > dass es Nonsens-Werte ausgegeben werden obwohl mit dem Hall-Sensor die > gleiche SW funktioniert. Keiner kennt deinen Hall-Sensor, deine IR-Standardmodule, deine Software, deine Geberscheibe(?), deinen Drehzahlbereich, deinen Aufbau, deine Störquellen oder deine Verdrahtung > Gibt es eine Erfahrung woran sowas generell liegen kann? An allem möglichen.
Andreas G. schrieb: > Unerfahrenheit kann sein - deswegen bin ich ja u.a. auch hier unterwegs > um dieser Unerfahrenheit auszumerzen und ECHTE Hilfestellungen zu > bekommen. Hilfestellung kann man dann bekommen wenn man glasklar dokumentiert was man schon gemacht hat und woran man scheitert. Du dagegen erwartest dass die Community hier sich detailliert mit der Materie auseinanderzusetzt ohne dass du einen signifikanten Beitrag dazu leistest. Diesen Sachverhalt könnte man auch Faulheit nennen.
Hier ist u.a ein Code mit dem ich diesen Effekt hatte.
1 | #include<LiquidCrystal.h> |
2 | LiquidCrystal lcd(13,12,11,10,9,8); // Pins stimmen nicht |
3 | float value=0; |
4 | float rev=0; |
5 | int rpm; |
6 | int oldtime=0; |
7 | int time; |
8 | |
9 | void isr() //interrupt service routine, only in pin number 2 or pin number 3 |
10 | { |
11 | rev++; |
12 | } |
13 | |
14 | void setup() |
15 | { |
16 | lcd.begin(16,2); //initialize LCD |
17 | attachInterrupt(0,isr,RISING); //attaching the interrupt |
18 | } |
19 | |
20 | void loop() |
21 | { |
22 | delay(1000); |
23 | detachInterrupt(0); |
24 | time=millis()-oldtime; //finding total time for one rev |
25 | rpm=(rev/time)*60000; //calculating the rpm |
26 | oldtime=millis(); |
27 | rev=0; |
28 | lcd.clear(); |
29 | lcd.setCursor(0,0); |
30 | lcd.print(" RPM TESTER "); //printing on LCD |
31 | lcd.setCursor(0,1); //sets the position where to print |
32 | lcd.print( rpm); |
33 | lcd.print(" RPM"); |
34 | lcd.print(" "); //final result |
35 | attachInterrupt(0,isr,RISING); |
36 | |
37 | } |
Nen Foto der Geberscheibe kann ich gerade nicht schicken, da ich unterwegs bin. IR-Sensor: Ø Operating Voltage: 3.0V – 5.0V Ø Detection range: 2cm – 30cm (Adjustable using potentiometer) Ø Current Consumption: at 3.3V : ~23 mA, at 5.0V: ~43 mA Ø Active output level: Outputs Low logic level when obstacle is detected Ø On board Obstacle Detection LED indicator Hall-Sensor: SE054 Betriebsspannung min.: 5 V/DC Betriebsspannung max.: 5 V/DC Betriebsspannungsbereich: 5 V/DC
Naja, in diesem simplen IR Empfänger ist weder ein IR Filter noch irgendeine Form der automatischen Pegelanpassung. Der zählt also alle Impulse, die gerade so mal auf die Fotodiode fallen und den OpAmp triggern. Das ist beim Hallsensor anders, denn der reagiert nur auf Magnetfelder mit ausreichender Stärke. Der IR Empfänger muss also richtige Filter haben und besser noch mit moduliertem Licht arbeiten, damit er auch wirklich nur die Lichtpulse zählt, die für ihn sind. Insofern ist der Hinweis auf echte IR-Empfänger wie den TSOP genau richtig, denn der reagiert nur auf Impulse, die in der Nähe der Modulationsfrequenz liegen. Die Dinger gibt es mit 36kHz, 38kHz und 40kHz - sowie noch weitere, die aber schwerer zu kriegen sind.
weiterhin habe ich es mit den anderen ISR-Auslösekriterien Falling und Change versucht - immer mit dem gleichen Ergebnis, dass es mit dem Hall Sensor funktioniert und unter gleichen Schaltungsbedingungen etc. der IR Sensor zwar im Rhythmus schaltet aber deutlich höhere (unsinnige) Drehzahlen ausgibt
Andreas G. schrieb: > immer mit dem gleichen Ergebnis, dass es mit dem Hall > Sensor funktioniert und unter gleichen Schaltungsbedingungen etc. der IR > Sensor zwar im Rhythmus schaltet aber deutlich höhere (unsinnige) > Drehzahlen ausgibt Ja dann hast du doch dein Problem. Die Infrarot Dinger, die du da hast, sind nicht halt nicht wirklich dafür geeignet. Falls du ein Oszi hast, wäre das gut, dann kannst du die überflüssigen Pulse sehen... Da du ja anscheinend eine Glasscheibe hast, könntest du ja versuchen die Sende und Empfangs LEDs aus zu löten und die jeweils auf eine Seite der Glasscheibe zu platzieren.... wenn du da einfach mit dem Ding auf die Scheibe zielst, wird das nichts. Aber wenn du das unbedingt optisch machen willst, dann nimm gepulstes Licht... hat weniger störeinflüsse
Der "IR SENSOR UNIT" würde ich mal eine Hysterse spendieren und das Signal von OPV Pin1 direkt an µC D2 legen.
Hi >Da du ja anscheinend eine Glasscheibe hast, könntest du ja versuchen die >Sende und Empfangs LEDs aus zu löten und die jeweils auf eine Seite der >Glasscheibe zu platzieren... Oder gleich einen richtigen Gabelkoppler verwenden. MfG Spess
das Dingen soll die Umdrehungen an einer Schiffsmotorwelle (bis max 3000 U/min) messen. Da es ein alter Einzylinder ohne irgendwelche Ausgleichwellen ist, schüttelt es das halbe Boot. Daher war die Lösung es optisch zu erfassen sehr charmant. Werde mal schauen, ob ich schwingungsgedämpft eine Stelle an dem Motor finde um eine klassische Lichtschranke aufzubauen und parallel dazu mit einem TSOP Versuche starten. Was mich halt irritiert und bisher in den halben Wahnsinn gebracht hat, ist die Tatsache, dass es im Netz reichlich Beispiele mit gleicher Hardware gibt, bei denen es funktioniert. Danke für die Hinweise!!!
spess53 schrieb: > Oder gleich einen richtigen Gabelkoppler verwenden wäre zu einfach ;) Andreas G. schrieb: > Was mich halt irritiert und bisher in den halben Wahnsinn gebracht hat, > ist die Tatsache, dass es im Netz reichlich Beispiele mit gleicher > Hardware gibt, bei denen es funktioniert. Naja... nur weil etwas angeblich bei irgendwem mal funktioniert hat, heißt das ja noch lange nicht, dass es das auch wirklich tut. Vor allem bei optischem zeug in Verbindung mit billigen China-schrott.
Matthias S. schrieb: > Naja, in diesem simplen IR Empfänger ist weder ein IR Filter noch ... Was meinst du wohl, was dieses dunkle Gehäuse des Photoempfängers darstellt - genau - ein IR Filter. Als Beispiel magst du dir vielleicht einmal den Unterschied zwischen einer SFH203 und einer SFH203FA zu Gemühte führen, bevor du solchen Unsinn in die Welt setzt.
Andreas G. schrieb: > ist die Tatsache, dass es im Netz reichlich Beispiele mit gleicher > Hardware gibt, bei denen es funktioniert. Welche Farbe hat LED1 und welche Versorgungsspannung bekommt der µC vom Arduino? 5 V? Ich bezweifel, daß der Pegel an D2 ausreichend hoch ist, um zuverlässig erkannt zu werden.
Andreas G. schrieb: > das Dingen soll die Umdrehungen an einer Schiffsmotorwelle (bis max 3000 > U/min) messen. In so einer nicht immer ganz sauberen Umgebung ist ein Hallgeber, wie er auch in Autos verwendet wird, eigentlich die bessere Wahl. Hast du dir die Signale, die deine optische Abtastung liefert, mal mit einem Oszi oder LA angeguckt? Das wird wahrscheinlich vieles erklären. Dein Signal kann prellen, durch Störungen verseucht sein oder auf Grund einer falsch eingestellten Schaltschwelle unsicher schalten. Bei 3000 1/min sollten nicht mehr als 50 Impulse pro Sekunde auftreten. Ohne das Signal zu kennen, ist die Fehleranalyse reine Kaffeesatzleserei.
Ich werde wahrscheinlich erst wieder am Wochenende dazu kommen weiter zu testen. Ich habe ein ganz einfaches Oszi - mal sehen ob ich da was sehen kann. Im Motorraum herrschen nicht ganz so tolle Rahmenbedingungen - ich werde in der nächsten Woche mal zum Boot fahren und schauen ob ich irgendwo einen stabilen Halter für einen Hallsensor einbauen kann. @m.n. ich habe aktuell keine weiteren Daten bzgl. der Dioden. Der Arduino arbeitet mit 5 V - was ankommt habe ich leider noch nicht gemessen. Wenn ich den "Schaltzustand" des IR-Sensors mir über den Serial-Port anzeigen lasse schaltet der Sensor so wie er soll. Im niedrigen Frequenzbereich (z.B. 1Hz) sieht es über den seriellen Port ganz gut aus (zugegeben - das menschliche Auge ist wahrscheinlich träge) - über die Interruptroutine allerdings kommen Drehzahlen zwischen 2.000 und 7.000 U/min raus
:
Bearbeitet durch User
Das IR-Modul ist vedammt lahm. Hier der richtige Schaltplan.
hinz schrieb: > Das IR-Modul ist vedammt lahm. Dann muss man vielleicht mal den 100nF Kondensator weg nehmen oder zumindest durch einen kleineren ersetzen. Außerdem würde so einem Signalwandler eine deutliche Hysterese gut zu Gesicht stehen. Das dürfte das Schaltverhalten bei weichen Flanken und überlagerten Störungen deutlich verbessern.
hinz schrieb: > Das IR-Modul ist vedammt lahm. Definiere "verdammt lahm" als Frequenz. Andreas G. schrieb: > Schiffsmotorwelle (bis max 3000 U/min) messen. Geteilt durch 60 = 50 Hz, da schläft doch die Elektronik vor lauter Langeweile ein?
Manfred schrieb: > hinz schrieb: >> Das IR-Modul ist vedammt lahm. > > Definiere "verdammt lahm" als Frequenz. > > Andreas G. schrieb: >> Schiffsmotorwelle (bis max 3000 U/min) messen. > > Geteilt durch 60 = 50 Hz, da schläft doch die Elektronik vor lauter > Langeweile ein? Überredet. s/verdammt_lahm/übler_Murks,_und_auch_lahm.
Wie heist es so schön: Abblock-Cs vergessen (beim OPV). In Verbindung mit fehlender Hysterese wird die Schaltung mit Sicherheit hysterisch. Und die LED1 tut durch Begrenzung der Signalpegel noch für L/H-Unklarheiten sorgen. Also: - Abblock-C über die Versorgung des OPV hängen - Siganl direkt an Pin1 des OPV abgreifen - einen R (100k oder so) von Pin1 zu Pin2 schalten für Hysterese (das Poti darf dann aber nich am Anschlag sein, damit das was bringt).
Jens G. schrieb: > - einen R (100k oder so) von Pin1 zu Pin2 schalten für Hysterese (das Na, da bestimmt nicht. Beim LM393 ist Pin 2 ein invertierender Eingang. Der Widerstand für die Hysterese muss - je nach dem, welcher Komparator genutzem wird - zwischen Pin 1 und 3 bzw. zwischen Pin 5 und 7 sitzen, damit die für eine Hysterese erforderliche Mitkopplung zu Stande kommt.
Wolfgang schrieb: >> - einen R (100k oder so) von Pin1 zu Pin2 schalten für Hysterese (das > > Na, da bestimmt nicht. Beim LM393 ist Pin 2 ein invertierender Eingang. Gleiches gilt für die Schaltung mit LM358, bei der '+' und '-' falsch beschriftet sind. Soviel zu 'erprobter' Schaltung aus dem I-net. Andreas G. schrieb: > @m.n. ich habe aktuell keine weiteren Daten bzgl. der Dioden. Aber Du wirst doch sehen können, ob die LED rot, grün oder weiß leuchtet? Nur bei weißer LED scheint eine Funktion möglich zu sein.
Wolfgang schrieb: > Matthias S. schrieb: >> Naja, in diesem simplen IR Empfänger ist weder ein IR Filter noch ... > > Was meinst du wohl, was dieses dunkle Gehäuse des Photoempfängers > darstellt - genau - ein IR Filter. > > Als Beispiel magst du dir vielleicht einmal den Unterschied zwischen > einer SFH203 und einer SFH203FA zu Gemühte führen, bevor du solchen > Unsinn in die Welt setzt. Wenn du jemals mit solchen IR Empfängerdioden - oder -Transistoren gearbeitet hättest, wüsstest du, das die Filterung durch das Gehäuse nicht viel hilft. Die Diode ist immer noch so empfindlich für Licht oberhalb des IR Bereiches, das sie auch auf Rot- und sogar Gelbanteile einfallenden Lichtes reagiert. Das ist also kein Unsinn, sondern praktische Erfahrung. Übrigens misst man die Drehzahlen von Dieselmotoren besser klassisch an der W Klemme der Lichtmaschine, die genau dafür da ist.
:
Bearbeitet durch User
Matthias S. schrieb: > Die Diode ist immer noch so empfindlich für Licht > oberhalb des IR Bereiches, das sie auch auf Rot- und sogar Gelbanteile > einfallenden Lichtes reagiert. k.A. von welchem Detektor du konkret sprichst und was deine Lichtquelle für ein Spektrum besitzt. Wenn du die relativen spektralen Empfindlichkeit bei SFH203/-FA im Datenblatt vergleichst und OSRAM dort nicht totalen Unfug rein geschrieben hat, dürfte bis 700nm der Unterschied in der Empfindlichkeit bei über einem Faktor 100 liegen.
Wolfgang schrieb: > dürfte bis 700nm der Unterschied in der Empfindlichkeit > bei über einem Faktor 100 liegen. Ich finds ja toll, das du immer wieder einen Typ ins Feld führst, aber woher willst du eigentlich wissen, was hier verbaut ist?: Beitrag "Re: Arduino Drehzalmesser mit IR-Lichtschranke" Und ein Faktor 100 ist immer noch störend, wenn Fremdlicht aufs Element fällt. Man muss also, wie schon vor langer Zeit oben gesagt, am besten mit moduliertem Licht arbeiten, oder es wie die Autoindustrie mit Hallgeneratoren machen oder eben die Klemme W nutzen.
Matthias S. schrieb: > Ich finds ja toll, das du immer wieder einen Typ ins Feld führst, aber > woher willst du eigentlich wissen, was hier verbaut ist?: > Beitrag "Re: Arduino Drehzalmesser mit IR-Lichtschranke" Ohne den Schaltplan wird man den Typ wohl nicht erfahren. Wie gut das Filter in dem obigen Sensor ist, kann man messen (sofern man passend ausgestattet ist). Nicht anders kommen die Kurven in Datenblättern zustande. > Und ein Faktor 100 ist immer noch störend, wenn Fremdlicht aufs Element > fällt. Ob ein Faktor 100 hílft, hängt von den Lichtverhältnissen ab. Ausgesprochen wirkungsvoll ist gewöhnlich eine vernünftige Messgeometrie. > Man muss also, wie schon vor langer Zeit oben gesagt, am besten > mit moduliertem Licht arbeiten, ... Die schönste Modulation nützt nicht, wenn das Modulationssignal im Rauschen des Fremdlichtes untergeht oder gar die Eingangsstufe des Sensors schon übersteuert. Da helfen nur ein paar klärende Messungen. Alleine mit der Diagnose "geht nicht" und Trial & Error als Problemlösungsstrategie könnte das eine langwierige Sache werden.
Danke für die ganzen Hinweise! Ich werde wahrscheinlich nächste Woche am Boot sein und mit beiden Sensoren (habe mir noch einen stabileren Hallsensor bestellt) an der Welle Versuche machen. Da die Schiffswelle in einem einigermaßen abgedunkelten Raum ist, könnte es ja vielleicht klappen da es kaum bzw. wahrscheinlich garkein Fremdlicht gibt. Mal sehen. Nochmal vielen Dank für die bisherigen Hinweise - ich werde berichten ob es geklappt hat! Andreas
Hallo zusammen, es hat funktioniert! Habe letzte Wochen eine Hallsensor/Magnet-Kombination an der Welle des Motors angebracht und den o.a. Code verwendet. Funktioniert super! Nochmal vielen Dank für Eure Beiträge und Unterstützung bzw. die Hinweise! Schönes Wochenende! Andreas
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.