ESP8266 mit Berührungssensor

OP #7650019
Lesenswert?

Hallo,

ich habe einen STBTECH 12V LED Touch Dimmer Schalter von Amazon, den ich über einen ESP8266 auswerten möchte.

Als Versorgungsspannung des Sensors (Anschlüsse rot(+) und schwarz(-)) benutze ich die 3,3V des ESP. Diese werden bei Berührung an dem Ausgang (Anschlüsse blau(+) und grün(-)) dann langsam - so über 1 bis 2 sec lang - bereit gestellt bzw. nach erneuter Berührung auf ca. 0.5V reduziert.

Ich wollte nun den Vorgang auswerten, indem ich den Ausgang blau auf den Pin D1 des ESP und den Ausgang grün auf Masse gelegt habe. Leider wird in diesem Fall keine Spannung mehr am Ausgang ausgegeben. Mit dem Spannungsmesser kann ich nur bei direktem Anschluss an das Messgerät zwischen blau und grün Spannung messen (also ohne Masseverbindung von grün).

Gibt es hier für mich eine Lösung? Ich hoffe, ich konnte mich verständlich ausdrücken.

Viele Grüße

Angehängte Dateien:
OP #7650038
Lesenswert?

@sebastian_r569 Wow, das ging ja fix. Danke für die Info. Das übersteigt dann wohl meine doch recht beschränkten Fähigkeiten. Schade. Könnte ich mit einem ESP8266 einen "anderen" Berührungssensor auswerten? Falls ja, wonach müsste ich suchen?

P.S. Muss hier ne halbe Stunde warten, bevor ich antworten darf. Skurille Regel :-(

@heijz Bin (s.o.) eher der Laie.

@alecxs Nix. Der ESP soll per WLAN einfach nur ein Item in Openhab setzen.

#7650093
Lesenswert?

Ein N-Kanal Mosfet benötigt natürlich irgendeine Last. Häng mal einen 1- 10k dran damit Du ein sauberes PWM Eingangssignal erhältst.

Hier mal ein Beispiel Code wie du das PWM Signal messen könntest:

1
#define pulse_ip GPIO_NUM_5
2
int ontime,offtime,duty;
3
float freq,period;
4
    
5
void setup()
6
{
7
  pinMode(pulse_ip,INPUT);
8
  Serial.begin();
9
}
10

11
void loop()
12
{
13
   ontime = pulseIn(pulse_ip,HIGH);
14
   offtime = pulseIn(pulse_ip,LOW);
15
   period = ontime+offtime;
16
   freq = 1000000.0/period;
17
   duty = (ontime/period)*100;
18

19
   Serial.println(duty);
20
   delay(1000);
21
}

Quelle: https://projecthub.arduino.cc/ambhatt/frequency-and-duty-cycle-measurement-using-arduino-20fbfb

#7650226
Lesenswert?

Du hast noch nicht geantwortet wo die Stromversorgung her kommt. Wenn Vin+ (rot) = Vout+ (blau) = 3.3 V dann ist ein Lastwiderstand an Vout+ (blau) / Minus- (grün) dasselbe, wie ein Pull-up Widerstand an Vin+ (rot) / Pin D1. Vout+ (blau) kannst Du auch weg lassen. Wenn es mehr als 3.3 V sind müsste man sich über einen Spannungsteiler Gedanken machen. Zeichne doch bitte einen Schaltplan.

OP #7650294
Lesenswert?

Grrr. Muss wieder warten.

@alecxs Da tut sich was. Handauflegen (so 1 sec) ändert den Wert auf ca. 0-60 bzw. größer 2100000000. Ein kurzes Antippen reicht leider nicht, ist aber okay so. Das hat mein Problem gelöst.

Vielen vielen Dank!

@rawi Meiner ist dieser https://www.amazon.de/dp/B0BX66ZR34?ref=ppx_yo2ov_dt_b_product_details&th=1 Weiß nicht, ob die gleich sind. Und aufmachen wollte ich meinen nicht.

Gast #7650318
Lesenswert?

Erwin K. schrieb:

Wäre die Situation bei einem ESP32 besser?

Der nimmt noch mehr Strom auf. Entscheidend ist der verbaute Spannungsregler, seine Kühlung, der Innenwiderstand des USB Kabels und der Zustand der Steckverbinder.

Für beide ESP Chips empfiehlt der Hersteller eine Stromversorgung, die mindestens 500mA liefern kann - sonstige Bauteile drumherum kommen noch dazu.

Wie viel Strom nimmt denn dein Sensor auf?

OP #7650347
Lesenswert?

@roehrmond Vielleicht war ich zu ungenau oben. Der ESP wird über ein USB-Steckernetzteil mit 1A versorgt. Die Aufnahme sollte also nicht das Problem sein. Ich dachte, du meintest, der 3,3V Anschluss hätte nicht genug Power für meinen Sensor. Wenn ich mein einfaches Vielfach-Messgerät anschließe, funktioniert die Schaltung nicht mehr.

@alecxs Danke für die Ergänzung, aber mit ihr funktioniert es nicht mehr so gut wie vorher. Die Daten variieren jetzt zwischen 0 und 90, liegen aber oft auch in der Mitte, so dass keine "0" oder "1" gefunden werden kann. Die "Ausreißer" größer 2 000 000 000 kommen trotzdem vor.

@Forenbetreiber Ich bin sehr glücklich, dass mir hier so schnell und kompetent geholfen wird, aber wenn ich auf einen Beitrag oft erst mit 30 Min. Verzögerung reagieren kann, ist das sehr frustrierend. So etwas habe ich noch in keinem anderen Forum erlebt.

#7650374
Lesenswert?

Erwin K. schrieb:

Die Daten variieren jetzt zwischen 0 und 90, liegen aber oft auch in der Mitte, so dass keine "0" oder "1" gefunden werden kann.

Es wird der Tastgrad (duty cycle) des PWM ausgegeben in Prozent, also 0 - 100% ist schon richtig. Du musst Dir dafür schon selbst die Grenze ziehen was für Dich an oder aus ist (z.B. 20 % Prozent) und das in eine neue Variable schreiben:

1
out = (duty < 20) ? 0 : 1;

Wenn es immer noch unsauber ist, verwende einen Pull-up Widerstand.

Erwin K. schrieb:

Die "Ausreißer" größer 2 000 000 000 kommen trotzdem vor.

Dann liegt es wohl am fehlenden Timeout wenn kein PWM mehr gemessen wird. Füge mal ein Timeout hinzu, dann kannst Du die vorherigen Änderungen verwerfen.

1
ontime = pulseIn(pulse_ip, HIGH, 50000);
Angehängte Dateien:
#7650382
Lesenswert?

Ach Quatsch, das ist ganz einfach. Schließe einfach eine LED an und entscheide, ab welcher Dimmstufe die für Deinen Geschmack "aus" ist. Im Zweifel nimm halt alles größer 0 % als "ein" an.

P.S. Es kann sein dass der LED Treiber zu hochfrequent ist, maximal 50 kHz lassen sich sauber mit pulseIn() messen. Dazu müsste man aber mal ins Datenblatt des ICs schauen. Und dazu brauchen wir ein Foto von dem Aufdruck.

#7650387
Lesenswert?

Alexander schrieb:

P.S. Es kann sein dass der LED Treiber zu hochfrequent ist, maximal 50 kHz lassen sich sauber mit pulseIn() messen.

man könnte wohl auch einen Elko nebst Widerstand nehmen - dann einfach mit dem ADC auswerten?

Aber es wohl auch ein selbst erschaffenes Problem - eigentlich soll ja kein bauseitig vorhandener und nicht änderbarer Touchsensor ausgewertet werden - es geht rein um die Erfassung eines Touchimpulses

Gast #7650482
Lesenswert?

Erwin K. schrieb:

Der ESP wird über ein USB-Steckernetzteil mit 1A versorgt.

OK. Dennoch kann das an schlechten Kabeln oder Steckverbindern scheitern.

Die Aufnahme sollte also nicht das Problem sein.

Was für eine Aufnahme?

Ich dachte, du meintest, der 3,3V Anschluss hätte nicht genug Power für meinen Sensor

Kann sein. Kommt drauf an, wie vie Strom der Sensor aufnimmt. 10mA werden wohl gehen, 100mA sind sicher zu viel.

OP #7650905
Lesenswert?

Hmm. Das überfordert mich wahrscheinlich ... Wenn die Grenzfrequenz in deinem Link meiner obigen von 4000 bis 5000 Hz entspricht, könnte ich das Beispiel ja ungefähr so nehmen. Habe hier einen 10nF (auch 47nF) und einen 100k.

Dann schließe ich "grün" vom Sensor an R1 an und U_Gleich an den Analogeingang?

Beitrag #7651047 wurde von einem Moderator gelöscht.

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