Forum: Mikrocontroller und Digitale Elektronik Arduino Drehzalmesser mit IR-Lichtschranke


von Andreas G. (horstsergio)


Lesenswert?

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

von Vorahner (Gast)


Lesenswert?

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.

von optiker (Gast)


Lesenswert?

An der Optik.

von Andreas G. (horstsergio)


Lesenswert?

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.

von Joachim B. (jar)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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.

von Vorahner (Gast)


Lesenswert?

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.

von Andreas G. (horstsergio)



Lesenswert?

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

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Andreas G. (horstsergio)


Lesenswert?

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

von Stefan H. (stefan_h143)


Lesenswert?

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

von m.n. (Gast)


Lesenswert?

Der "IR SENSOR UNIT" würde ich mal eine Hysterse spendieren und das 
Signal von OPV Pin1 direkt an µC D2 legen.

von spess53 (Gast)


Lesenswert?

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

von Andreas G. (horstsergio)


Lesenswert?

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!!!

von Stefan H. (stefan_h143)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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.

von m.n. (Gast)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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.

von Andreas G. (horstsergio)


Lesenswert?

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
von hinz (Gast)


Angehängte Dateien:

Lesenswert?

Das IR-Modul ist vedammt lahm.

Hier der richtige Schaltplan.

von Wolfgang (Gast)


Lesenswert?

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.

von Manfred (Gast)


Lesenswert?

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?

von hinz (Gast)


Lesenswert?

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.

von Jens G. (jensig)


Lesenswert?

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).

von Wolfgang (Gast)


Lesenswert?

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.

von m.n. (Gast)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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
von Wolfgang (Gast)


Lesenswert?

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.

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

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.

von Andreas G. (horstsergio)


Lesenswert?

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

von Andreas G. (horstsergio)


Lesenswert?

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
Noch kein Account? Hier anmelden.