IR-Sensormodul, empfindlichkeit
Hallo miteinander,
an meinem "Projekt" Stromzähler auslesen bin ich immer noch dran :-(.
inzwischen habe ich einen Code mit dem ich glaube weiter machen zu können und bekomme zumindest ein Ergebnis das in die richtige Richtung geht.
Jedoch ist mir aufgefallen je nachdem wie ich meinen IR Sensor vor meinen Stromzähler halte mal nur 00 Werte bekomme oder irgend einen Schrott oder Daten die ausschauen als wenn sie brauchbar wären.
Je nachdem in welchen Winkel, Abstand etc. ich vor dem Sendekopf des Stromzählers bin.
Daher wollte ich mal fragen wie empfindlich so ein teil denn ist.
Oder bilde ich mir das nur ein?
Wie kann ich es ermitteln wie ich meinen Sensor dran bauen muss damit ich immer gute Daten bekomme? denn ich kann das schlecht in den Leeren (Luft" Raum einfach rein stellen da muss ich schon eine Halterung für machen.
Hardware:
Bord: ==> ESP32 DEVKIT V1
Stromzähler: ==> ISKRA-MT681
IR-Modul: ==> TCRT5000
Aktueller Code:
/* Projekt
Stromzähler auslesen
Hadware
Bord: ==> ESP32 DEVKIT V1
Stromzähler: ==> ISKRA-MT681
IR-Modul: ==> TCRT5000
Anschluss
ESP32 (GND) <=> TCRT5000 (GND)
ESP32 (3V3) <=> TCRT5000 (VCC)
ESP32(PIN 15) <=> TCRT5000 (D0)
ohne anschluß => TCRT5000 (A0)
*/
// Serielle Schnittstelle TCRT5000 zum ESP32
#define RXD2 15 // TCRT5000 (D0)
#define TXD2 13 // ohne belegung
#define Baudrate 9600 // vorgabe vom Stromzähler
#define Protocol SERIAL_8N1 // vorgabe vom Stromzähler
// Serielle Schnittstelle ESP32 zum PC
#define Baudrate_USB 115200 //
void setup() {
// Schnitstelle Starten
// TCRT5000 <=> ESP32 Format: Serial2.begin(baud-rate, protocol, RX pin, TX pin);
Serial1.begin(Baudrate, Protocol, RXD2, TXD2);
// ESP32 <=> PC
Serial.begin(Baudrate_USB);
Startsequenz();
}
void loop() {
static unsigned long lastchar; // zum Pause erkennen
if (Serial1.available()) { // Abfragen ob daten im Pufer sich befinden
int inByte = Serial1.read(); // Empfang der Daten
if (inByte < 0x10) Serial.write('0'); // empfangene Daten nur einstellig führende Null einfügen
Serial.print(inByte,HEX); // empfange Daten ausgeben
Serial.write (' '); // leerzeichen in die Ausgabe einfügen
lastchar = millis(); // Pausen zähler zurück setzen
}
const int PAUSE = 350; // evtl. an tatsächliche Pause anpassen, so dass nur eine Neue Zeile passiert
if (millis() - lastchar > PAUSE) { // Prüfen ob Pausenzeit erreicht wurde
Serial.println(); // Leerzeile ausgeben
lastchar += PAUSE; // verstehe ich nicht, ...
}
}
void Startsequenz() {
// Startsequenz
Serial.println("");
Serial.println("Stromzähler auslesen");
Serial.println("");
Serial.println(" Stromzähler: ISKRA-MT681");
Serial.println(" IR-Modul: TCRT5000");
Serial.println("Anschluss");
Serial.println(" ESP32 (GND) <=> TCRT5000 (GND)");
Serial.println(" ESP32 (3V3) <=> TCRT5000 (VCC)");
Serial.println(" ESP32(PIN " + String(RXD2) + ") <=> TCRT5000 (D0)");
Serial.println(" ESP32 <=> TCRT5000 (Baudrate) = " + String(Baudrate));
Serial.println("");
Serial.println("Bereit .... !! Du auch? ;-)");
Serial.println("");
}
Gruß Mücke