Drehzahlmesser ansteuern

Gast #5196047
Lesenswert?

Moin,

ich habe mir einen solchen Drehzahlmesser gekauft, um die Drehzahl einer 
Tischbohrmaschine mittels CNY70 Reflexsensor zu messen.

Der Drehzahlmesser hat 3 Eingänge: 12V, GND, Signal-In. Wie steuere den 
jetzt an?

Wenn ich testweise z.B. so ein Signal mit einem esp8266 erzeuge und den 
GPIO an den Signal-In des Drehzahlmessers lege, kommt nur Mist heraus.

---------
LED_PIN = 0
US_TO_MS = 1000

gpio.mode(LED_PIN, gpio.OUTPUT)

while true do
  gpio.write(LED_PIN, gpio.HIGH)
  tmr.delay(1 * US_TO_MS)
  gpio.write(LED_PIN, gpio.LOW)
  tmr.delay(50 * US_TO_MS)
end
-----

Muss an dem Signal-In eine bestimmte Spannung anliegen? Leider gibt es 
zu dem Teil keinerlei Dokumentation.
(Firma: matzetronics) #5196084
Lesenswert?

Yannik schrieb:
> @mschoeldgen: Reagieren tut er schon auf das Signal, nur mit ständig
> wechselnenden Werten zwischen 500 und 900 RPM (bei dem o.g. Signal).

Schön, kann aber trotzdem eben zu wenig Pegel sein. Je nach vorhandenem 
Bastelmaterial bzw. Messgeräten kannst du dir mal entweder einen kleinen 
12V Oszillator basteln (NE555 oder so) oder eben den Funktionsgenerator 
anschliessen.
Oder du machst mal eine Transistorstufe zwischen den ESP und den DZM.
1
+12
2
+--------------------+---------------->
3
                     |
4
                     -
5
                    | | 3,3k-10k
6
                    | |
7
                     -
8
                     +----------------> DZM
9
ESP Signal       B |/ C
10
0---|===|----------|
11
     470-1k        |\
12
GND                  |E
13
---------------------+---------------->
Jeder NPN Kleintransistor, BC547/548, 2SC945, 2SC1815 usw. geht hier.
Gast #5196093
Lesenswert?

Danke, Matthias. Ich bin gerade einen Stück weitergekommen: Ich habe 
einfach mal GND vom ESP8266 und Drehzahlmesser verbunden. Jetzt habe ich 
zumindest eine konsistente Anzeige von 833rpm. Kann das verbinden der 
Masse zu irgendwelchen Problem führen?

Zwischen den 833rpm und dem o.g. Code kann ich allerdings bisher 
wirklich gar keine Relation erkennen. Jemand eine Idee?
Ich hätte jetzt bei 50ms Wartezeit zwischen den Impulsen 60*20=1200 rpm 
erwartet.
(Firma: matzetronics) #5196136
Lesenswert?

Yannik schrieb:
> Ich hätte jetzt bei 50ms Wartezeit zwischen den Impulsen 60*20=1200 rpm
> erwartet.

Die Periodendauer ist aber schon 51ms + Dauer der GPIO Routinen, die wir 
nicht wissen, also unter 19 Hz. Das sind dann weniger als 1140 Pulse pro 
Minute und damit sind wir gar nicht mehr so weit von der Anzeige 
entfernt. Der ESP ist durch seine umfangreiche Software im Hintergrund 
auch nicht exklusiv mit der Schleife beschäftigt, sondern macht noch 
anderen Krams nebenbei. Die Frequenz lässt sich z.B. mit der Soundkarte 
des Rechners messen.

Viel Spass beim Kalibrieren, der Anzeigetext sagt ja, wies geht :-P
Gast #5196377
Lesenswert?

Also, wenn ich mir das Signal des ESP mit dem Oszi anschaue, sehe ich, 
dass mit

while true do
  gpio.write(LED_PIN, gpio.HIGH)
  gpio.write(LED_PIN, gpio.LOW)
  tmr.delay(50 * US_TO_MS)
end

die Frequenz doch sehr nah an den 20Hz ist. Ggf. 1180 rpm statt 1200, 
aber definitiv keine 833. (Tatsächlich waren die 833 schon mit dem o.g. 
Code gemessen). 472us dauert der HIGH.

> Viel Spass beim Kalibrieren, der Anzeigetext sagt ja, wies geht :-P
Meinst du damit diese grandiose Beschreibung?

-----
Tachometer Rate Setting Instructions:
1. Rate range: 1-99(default 01: display value is same with actual value; 
if the rate is 10, display value*10=actual value);
2. When power on, the meter display "0";
3. Press "SET" button, display "1"; press again, display "01"...
4. When display "1", is measuring RPM; press "ADD", from "1" to "2", 
when display "2", is measuring frequency; display "01" is for rate 
setting, short press "ADD" for +1, long press for +10;
5. After setting the values, it will be stored if no operation in 10s, 
return the selected function interface;
6. With 1 decimal point, that is when rotate speed is <1000RPM, the 
rotate speed corrects to 1st digit after the decimal point; no decimal 
point when >1000RPM.
Tips:
User can set the appropriate rate so as to measure frequency, less than 
100KHz (999.9*99=98990.1Hz)
----

Ich verstehe zwar, wie ich zwischen RPM und frequency umschalte und 
diese "Rate" einstelle. Aber wofür steht diese "rate"? Ich verstehe nur 
Bahnhof.
Gast #5196399
Lesenswert?

> Ich verstehe zwar, wie ich zwischen RPM und frequency umschalte und
> diese "Rate" einstelle. Aber wofür steht diese "rate"? Ich verstehe nur
> Bahnhof.

Ev. ein schlecht übersetztes ratio also Puls-Pause-Verhältnis?
Der Bereich wird ja mit 1..99 angegeben, was Prozente sein könnten... 
Was wiedum nicht zum angegeben Umrechnungsfaktor x10 passt... grübel
Gast #5196433
Lesenswert?

Also, ich habe jetzt noch einmal ein bisschen experimentiert:

Mit

while true do
  gpio.write(LED_PIN, gpio.HIGH)
  gpio.write(LED_PIN, gpio.LOW)
  tmr.delay(50 * US_TO_MS)
end

werden die folgenden Werte angezeigt:
10ms (6000 rpm) =>wechselt zwischen 6000 und 6060 rpm
25ms (2400 rpm) =>wechselt zwischen 2521 und 2531 rpm
50ms (1200 rpm) =>1282 rpm
100ms (600 rpm) =>646 rpm
500ms (120 rpm) =>130 rpm
1000ms (60 rpm) =>65 rpm

Die 833rpm kann ich nicht reproduzieren.

Mit

tmr.alarm(0, 5, 1, function ()
    gpio.write(LED_PIN, value and gpio.HIGH or gpio.LOW)
    value = not value
end)


ist die Frequenz/Periode laut Oszi schon recht exakt.

Der Drehzahlmesser zeigt folgendes:

5ms (6000 rpm) => 6521 rpm
25ms (1200 rpm) => wechselt zwischen 1301 und 1304rpm
50ms (600 rpm) => 651rpm
500ms (60 rpm) => 65rpm

Man sieht die Linearität der Messwerte.

Allerdings weiterhin Abweichungen von knapp 10%.

Ich werde mal mit dieser Rate experimentieren.

Gibt es einen technischen Grund, wodurch diese Abweichungen entstehen? 
Was muss da kompensiert werden?
Gast #5196436
Lesenswert?

Okay, die "rate" ist ein Teiler.

Heißt bei 6000 rpm (angezeigt 6521) wird bei rate 2 3260rpm angezeigt, 
bei rate 3 2173rpm uw.

Hilft also leider nicht weiter, mit der 10%-igen Abweichung.

Jemand eine Idee, wie man diese loswerden könnte?
Gast #5196439
Lesenswert?

Yannik schrieb:
> Gibt es einen technischen Grund, wodurch diese Abweichungen entstehen?

Hast du denn schon deinen Pegel angepasst, d.h. dem
Tacho auch wirklich 12V Pulse geliefert?

Kann auch sein dass der Tacho darauf ausgelegt ist, Pulse
mit höheren Spannungen als 12V zu verarbeiten, so wie
sie an der Primärseite einer Zündspule auftreten (nicht
die Kilovolts der Sekundärseite)
#5196447
Lesenswert?

Yannik schrieb:
> Okay, die "rate" ist ein Teiler.
>
> Heißt bei 6000 rpm (angezeigt 6521) wird bei rate 2 3260rpm angezeigt,
> bei rate 3 2173rpm uw.
>

Das ist wohl (weil das Ding wohl für Verbrennungsmotoren gedacht ist) 
die Anpassung an 2-/4-Takter bzw. 1 - 12 Zylinder.

Zu deinem Problem:

keine Ahnung, ob dir das weiterhilft, aber ausgehend von obigem 
Gedankengang: Zündimpulse von Verbrennungsmotoren haben üblicherweise 
keinen Duty Cycle von 50%, sondern eher etwa 15%. Vielleicht bringt das 
ja das Ding durcheinander.
Gast #5196449
Lesenswert?

Der Pegel ist weiterhin 5Vpp.

Ich hab ja oben ein Bild von der Platine gepostet, hier habt ihr es noch 
einmal in höherer Auflösung: https://i.imgur.com/zzkY7iY.jpg

Die 12V Eingangsspannung werden mittels 78L05 (U2) zu 5V reduziert. 
Damit wird auch der MC betrieben. Der Signal-In geht m.e. auf einen J3Y 
Transistor, welcher einen MC-Eingang schaltet.

Der Transistor sollte doch grundsätzlich bei 5V genau wie bei 12V 
durchschalten?
Gast #5196469
Lesenswert?

Ich hab jetzt gerad' noch den Eingangspin des Mikrocontrollers 
durchgemessen: Dort liegt eine vernünftige Squarewave mit korrekter 
Frequenz an.

Also, am Pegel kann es doch eigentlich nicht liegen, oder? Was kann 
sonst der Grund sein?
(Firma: matzetronics) #5196716
Lesenswert?

Ich seh da auf der 'High Precision' Platine kein einziges 
frequenzbestimmendes Bauteil wie einen Quarz oder zumindest einen 
Resonator. Kann also sein, das der MC mit seinem internen RC Oszillator 
läuft und ein wenig daneben liegt...
Gib ihm mal 12V Pegel, um Probleme damit auszuschliessen.
Gast #5196852
Lesenswert?

Matthias S. schrieb:
> Oder du machst mal eine Transistorstufe zwischen den ESP und den DZM.+12
> +--------------------+---------------->
>                      |
>                      -
>                     | | 3,3k-10k
>                     | |
>                      -
>                      +----------------> DZM
> ESP Signal       B |/ C
> 0---|===|----------|
>      470-1k        |\
> GND                  |E
> ---------------------+---------------->
> Jeder NPN Kleintransistor, BC547/548, 2SC945, 2SC1815 usw. geht hier.

Du führst 12V (über einen 3,3k-10k Widerstand) direkt zum DZM. Welchen 
Sinn soll in diesem Fall der Transistor haben? Oder hast du Collector 
und Emitter in deiner Zeichnung vertauscht?
Gast #5196870
Lesenswert?

Matthias S. schrieb:
> Kann also sein, das der MC mit seinem internen RC Oszillator
> läuft und ein wenig daneben liegt...

Erwärme mal das IC oder gib Kältespray drauf - ggf. auch auf C1 und C2. 
Ändert sich der angezeigte Wert und wenn ja, wie stark?

> Gib ihm mal 12V Pegel, um Probleme damit auszuschliessen.

Ich glaube, der Pegel ist nicht das Problem, wenn intern ein 
ordentliches Rechtecksignal vorhanden ist:

Yannik schrieb:
> Dort liegt eine vernünftige Squarewave mit korrekter
> Frequenz an.
(Firma: matzetronics) #5196877
Lesenswert?

Yannik schrieb:
> Du führst 12V (über einen 3,3k-10k Widerstand) direkt zum DZM. Welchen
> Sinn soll in diesem Fall der Transistor haben? Oder hast du Collector
> und Emitter in deiner Zeichnung vertauscht?

Wie bitte? Wenn du noch nie einen Pegelwandler/Inverter in 
Emitterschaltung gesehen hast, guckst du Grundlagen. An der Bais wird 
dein ESP Signal eingewspeist, wie ja auch aus der Beschriftung 
ersichtlich ist.
Gast #5196885
Lesenswert?

m.n. schrieb:
> hinz schrieb:
>> Die internen
>> Oszillatoren bei den STC Controllern sind aber ziemlich genau.
>
> Das heißt, die 10% Abweichung ist super stabil? ;-)

Du darfst ruhig davon ausgehen, dass die 10% Abweichung nicht durch den 
Oszillator verursacht sind.
Gast #5197124
Lesenswert?

Moin,
12V Pegel haben erwartungsgemäß keinen Unterschied gemacht.

Was nun? Versuchen zu reklamieren? Wahrscheinlich erfolglos bei den 
Chinahändlern...

Gibt es noch einen anderen Grund, woran das liegen könnte? Ideen, wie 
ich es fixen kann?
(Firma: matzetronics) #5197206
Lesenswert?

Yannik schrieb:
> Gibt es noch einen anderen Grund, woran das liegen könnte?

Mir fällt keiner ein. Wenn du dir mit deinem Messfrequenzen sicher bist, 
wirds wohl der 'High-Precision-Digital-Frequency-Tachometer' sein, der 
Mist anzeigt.
Ein STM8 Spezi hier wird dir sicher sagen können, ob man den Oszillator 
von aussen trimmen kann, und ich bin so neugierig, das ich glatt an den 
Verbinder fürs UART mal einen Pegelwandler anschliessen würde, um zu 
sehen, wofür die Herren den da vorgesehen haben.

Wenn du nur was funktionierendes suchst, ist es evtl. besser, entweder 
selbst was zu konstruieren, einen Counter mit deutlich sichtbarem Quarz 
zu beschaffen, oder sich im Inland umzusehen.
Gast #5197217
Lesenswert?

Matthias S. schrieb:
> Ein STM8 Spezi hier wird dir sicher sagen können,

Ich habe zwar noch nie einen STM8 in der Hand gehabt, gehe aber davon 
aus, daß auf einem STM8 auch STM8 steht.
Hier steht STC auf dem IC.

Yannik schrieb:
> Ideen, wie
> ich es fixen kann?

Garnicht oder durch permanentes Kopfrechnen ;-)
Drehzahlmessung ist ja nun keine Raketentechnik und wenn Du ein paar 
Euor mehr in die Hand nimmst, kann man sehr genaue Schaltungen 
auf-/nachbauen.
Ich gebe Dir ein paar Beispiele an die Hand: 
http://mino-elektronik.de/7-Segment-Variationen/LCD.htm
Gast #5198567
Lesenswert?

Matthias S. schrieb:
> Oh, du hast einen Tippfehler gefunden - meinen herzlichen Glückwunsch.

Bekomme ich jetzt die große Martinstüte mit Stutenkerl? ;-)

Diese STC15 sind 8051-Derivate. Wenn man den Quellcode des Programmes 
hätte, könnte man sich die Frequenz leicht anpassen. Ohne Quellcode 
müßte man alles neu schreiben.
Vielleicht gibt es eine versteckte Funktion, um den Zähler abzugleichen.

Alternative könnte man auch einen Frequenz/Frequenz-Umsetzer 
vorschalten, der den proportionalen Fehler beseitigt.
Gast #5198677
Lesenswert?

m.n. schrieb:
> Drehzahlmessung ist ja nun keine Raketentechnik und wenn Du ein paar
> Euor mehr in die Hand nimmst, kann man sehr genaue Schaltungen
> auf-/nachbauen.

Oder einen alten Fahrradcomputer als Drehzahlmesser benutzen. Einfach 
bei Radumfang 1667mm eingeben. Die angezeigte Geschwindigkeit km/h mit 
10 multiplizieren (leichtes Kopfrechnen) dann erhält man die Drehzahl in 
1/min.
Gast #5198725
Lesenswert?

Captain Future schrieb:
> Oder einen alten Fahrradcomputer als Drehzahlmesser benutzen. Einfach
> bei Radumfang 1667mm eingeben.

Hattest Du das mal probiert?
Ich wäre mir nicht sicher, ob der Radumfang (1,666 m, ca. 21") so klein 
einstellbar ist und ob die Eingangsimpulse (100 Hz @ 6000 UPM) noch 
erfaßt werden können.
Zudem würde es mich nicht wundern, wenn eine Tischbohrmaschine 
Drehzahlen >= 10000 UPM schafft.
Gast #5198735
Lesenswert?

m.n. schrieb:
> Hattest Du das mal probiert?

Ja. Das Ergebnis läuft an der Säulenbohrmaschine meines Vaters. Die 
Drehzahl hört dann allerdings bei ca. 3000 1/min auf (300 km/h). Für die 
meisten Anwendungsfälle reicht das aus.

Die Fahrradtachos lassen sich auch für 12 Zoll Kinderfahrräder 
programmieren.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren