RF Empfänger funktioniert nicht in Kombination mit IR-Sensor

Hallo,
ich habe ein Problem bei meinem Projekt und über ein paar Ratschläge würde ich mich sehr freuen.

Ich möchte an meinem Arduino einen RF-Empfänger und einen Infrarot-Sensor anschließen.
Beide Bauteile sind auf meinem Steckbrett jeweils mit 5V und GND verbunden.
Der IR-Sensor gibt je nach gemessenem Abstand eine Spannung ab, die ich am Analog-Input des Arduino auslese. Diese Spannung variiert zwischen 0V und 2,8V.
Der RF-Empfänger ist am Digital Pin 11 angeschlossen. Zum Auslesen des RF-Signals benutze ich die Bibliothek VirtualWire.
Im Anhang habe ich eine Skizze meiner Bauplatte hochgeladen.
Die genauen Daten sind:
Arduino Uno
IR-Sensor: Sharp GP2Y0A02YK0F
RF-Receiver: MX-05V (433MHZ)

Auf einem separaten Arduino habe ich den RF-Sender angebracht und kann steuern, ob dieser sendet oder nicht. Zum Testen sende ich nur Einsen.

Wenn ich am ersten Arduino ausschließlich den RF-Empfänger anschließe funktioniert dieser wunderbar. Ich empfange das Signal des Senders und kann es auch auswerten.
Wenn ich am ersten Arduino ausschließlich den IR-Sensor anschließe funktioniert auch dieser astrein. Ich kann über den Analog-Pin den Wert der Spannung auslesen.

Schließe ich jedoch den RF-Empfänger und den IR-Sensor gleichzeitig an, dann funktioniert nur noch der Sensor. Im seriellen Monitor kommen keine Daten des RF Empfängers mehr an. Sobald ich den 5V-Stecker des Sensors rausziehe funktioniert der Empfänger wieder und das RF-Signal kommt an.
Ich habe zuerst vermutet, dass der Empfänger plötzlich nicht mehr genug Strom bekommt und deshalb nicht funktioniert. Nach einer Messung hat sich jedoch herausgestellt, dass mit und ohne angeschlossenem Sensor ca. 3,5mA durch den Empfänger gehen. Durch den Sensor fließen 26,4mA.
Da der Sensor und der Empfänger parallel geschaltet sind, liegen natürlich auch an beiden die geforderten 5V an.
Dann habe ich die Ausgangsspannung am Empfänger gemessen (Die Leitung, die in Digital 11 geht).
Die Ausgangsspannung OHNE angeschlossenen Sensor beträgt wenn kein Signal gesendet wird ca. 2,5V (Digital High) und wenn ein Signal gesendet wird ca. 1,8V (Digital Low).
Wenn ich den Sensor jedoch anschließe beträgt die Ausgangsspannung des Empfängers immer ca. 2,7V, egal ob ich ein Signal sende oder nicht. Deshalb wird in diesem Fall das Signal am Arduino auch nicht erkannt.

Mittlerweile habe ich das Gefühl, dass ich irgendetwas grundlegendes in der Elektrik oder beim Arduino nicht verstehe.
Wie gesagt wäre ich über Hilfe sehr dankbar.

Bitte überprüfe die Pin-Belegung des RF-Empfängers. Du hast laut Schaltplan die 5V-Spannung an den zweiten Daten-Ausgang angelegt. Ich wundere mich, dass er so überhaupt was empfängt. Die 5V kommen ganz außen an den vierten Pin des Empfängers.

Hallo Theseus und Danke für deine Antwort.
Das scheint nur in dem Schaltplan falsch zu sein, tut mir leid.
Am Empfänger habe ich die vier Pins schon richtig angeschlossen.
Von links nach rechts GND, DATA, frei, VCC. Auf dem Empfänger selbst ist sind diese Bezeichnungen auch so aufgedruckt.
Das kann also leider nicht das Problem sein.

Zeige doch bitte deinen Sketch und Links auf die verwendeten Libs.

Die Bibliothek, die ich benutzt habe heißt VirtalWire.
https://www.pjrc.com/teensy/td_libs_VirtualWire.html
Ganz unten auf der Webseite sind die Funktionen beschrieben.

Hier ist mein Sketch:

#include <VirtualWire.h>
const int MAX_MESSAGE_LEN = 1;
const int SENSOR_PIN = 10;
const int RECEIVE_PIN = 11;

void setup() {
  delay(1000);
  Serial.begin(9600);

  // Initialise the IO and ISR
  vw_set_rx_pin(RECEIVE_PIN); //Pin zum Emfpangen initialisieren
  vw_setup(1000);  // Bits per sec (Empfänger)
  vw_rx_start();       // Start the receiver PLL running
}

void loop() {
  uint8_t buf[MAX_MESSAGE_LEN];
  uint8_t buflen = MAX_MESSAGE_LEN;

  if (vw_get_message(buf, &buflen)) {
    Serial.print("Daten empfangen: ");
    Serial.println(buf[0]);
  }
  Serial.print("IR-Sensor Wert: ");
  Serial.println(analogRead(SENSOR_PIN));
  delay(100);
}

Im Eingangspost schreibst du, den IR-Sensor hast du am analogen Pin.
Im Sketch ist dieser aber am Pin D10 angeschlossen. Den hast du aber im Setup nicht als Input definiert.
Wie ist er tatsächlich angeschlossen ?
Hast du den evtl. auch an D11 angeschlossen ?
Dann kann ich mir dein Problem vorstellen.

Hallo HotSystems! Vielen Dank für deine Antwort.
Das ist mir überhaupt nicht aufgefallen.
Der IR-Sensor ist an A0 angeschlossen. Wahrscheinlich wollte ich im Sketch auch A0 schreiben, daraus ist dann durch einen Tippfehler aber 10 geworden.
Ich habe das ganze jetzt im Sketch geändert und bekomme nun auch verschiedene Werte für den IR-Sensor angezeigt.
Der Problem mit dem Empfänger scheint jedoch immer noch zu bestehen.
Kann es vielleicht daran liegen, dass ich den Empfänger-Pin D11 nicht als Input definiert habe? Oder sorgt "vw_set_rx_pin(empfangPin);" dafür, dass D11 als Input definiert wird?

Ich habe gerade im Sketch im Setup "pinMode(RECEIVE_PIN, INPUT);" hinzugefügt und das ganze erneut getestet. Leider ohne Veränderung.

Der Datenpin des Empfängers braucht nicht extra definiert werden, aber der muss auf Pin D2 gelegt werden.
Ich vermute das ist das Problem.

Ich habe gerade mal nachgesehen, alle meine Projekte mit VirtualWire und dem Empfänger (allerdings einen besseren, richtigen Empfänger) arbeiten mit D2 als Datenpin.

Ich habe gerade den Empfänger Data Pin auf D2 gelegt und den Sketch dementsprechend angepasst. Trotzdem funktioniert es leider nicht.
Vielleicht ist mein Empfänger einfach nur Schrott. Würdest du mir deinen empfehlen, HotSystems? Trotzdem finde ich es komisch, dass der Empfänger funktioniert wenn der IR-Sensor nicht angeschlossen ist und sobald die Versorgung für den Sensor angeschlossen wird funktioniert der Empfänger plötzlich nicht mehr.

Das scheint dann doch noch ein anderer Fehler zu sein.

Nimm mal diese Einstellungen:

vw_setup(2000);                                    // Bits per sec
vw_set_rx_pin(2);                                   // Datenleitung
vw_rx_start();                                      // Start the receiver PLL running

Edit:
Also es müsste auch mit deinem Empfänger funktionieren, dies ist keine kritische Programmierung.

Aber dein Empfänger hat eine sehr schlechte Reichweite, daher verwende ich nur diese Empfänger:
433 MHz Empfänger

Du meinst, dass ich die Bits pro Sekunde auf 2000 setzen soll?
Ansonsten bestelle ich mir mal deinen Empfänger.
Trotzdem finde ich das ganze sehr seltsam. Vielleicht versuche ich es auch mal im englischen Forum. Es lässt mich irgendwie nicht locker dass es meinen Elektrotechnik-Vorstellungen widerspricht.
Vielen Dank auf jeden Fall an euch!

Sorry, habe meine Einstellung kopiert.
Nein 1000 bei dir lassen, nur die ersten beiden Anweisungen tauschen.

Und du glaubst im englischen Forum wird dir eher geholfen ?

Einen echten Fehler kann ich leider nicht erkennen, aber prinzipiell muss es mit dem IR-Sensor zusammen funktionieren.

Achso, kein Problem.
Leider hat das Tauschen auch zu keiner Lösung geführt.

Naja, versuchen kann man es ja mal.

Ich habe gerade einen Artikel darüber gelesen, dass es zu Problemen kommen kann, wenn man dem Mikrocontroller analogen und digitalen Input gleichzeitig gibt. Kann das vielleicht der Grund für den Fehler sein? Hat jemand Erfahrungen damit, gleichzeitig einen Analog- und Digital-Pin zu benutzen?

In der PDF wird geraten, den Analog-Schaltkreis vom Digital-Schaltkreis zu trennen.

Ich habe außerdem herausgefunden, dass GND am Arduino nicht gleich GND ist. Der GND neben D13 soll anscheinend ein Digital Ground sein. (PIN-Belegung)

Also habe ich den GND des Empfängers auf diesen Digital Ground Pin gelegt in der Hoffnung, damit die Schaltkreise zu separieren. Leider ohne Erfolg.
Vielleicht braucht der Empfänger dann eine ganz eigene Energieversorgung?

ArduinoOnFire:
Achso, kein Problem.
Leider hat das Tauschen auch zu keiner Lösung geführt.
Naja, versuchen kann man es ja mal.

Ok, dann bin ich ratlos.

Ich habe gerade einen Artikel darüber gelesen, dass es zu Problemen kommen kann, wenn man dem Mikrocontroller analogen und digitalen Input gleichzeitig gibt. Kann das vielleicht der Grund für den Fehler sein? Hat jemand Erfahrungen damit, gleichzeitig einen Analog- und Digital-Pin zu benutzen?
In der PDF wird geraten, den Analog-Schaltkreis vom Digital-Schaltkreis zu trennen.

Mag sein, dass es unter bestimmten Umständen zu Problemen führen kann.
In einigen meiner Projekte verwende ich die analogen und digitalen Pins parallel (gleichzeitig) und das ohne Probleme. Daran liegt es sicher nicht.

Ich habe außerdem herausgefunden, dass GND am Arduino nicht gleich GND ist. Der GND neben D13 soll anscheinend ein Digital Ground sein. (PIN-Belegung)
Also habe ich den GND des Empfängers auf diesen Digital Ground Pin gelegt in der Hoffnung, damit die Schaltkreise zu separieren. Leider ohne Erfolg.
Vielleicht braucht der Empfänger dann eine ganz eigene Energieversorgung?

Habe ich auch schon gelesen aber bisher noch keinen Unterschied festgestellt. Evtl. ist es bei empfindlichen, analogen Messungen wichtig, diese Maßnahme zu ergreifen.

Da die GND-Pins der Platine zusammengeführt sind, sollte das im normalen fall, keine Rolle spielen.
Und der Empfänger braucht keine extra Spannungsversorgung.

Was du machen kannst, einfach mal einen Kondensator 0,1 µ oder größer, kann auch ein Elko 1 µ sein, direkt am Empfänger an die 5 Volt anschließen.

Edit:
Wenn analog und digital "gleichzeitig" Probleme macht, dürfte I2C nicht funktionieren, da werden die analogen Pins A4 und A5 verwendet.

Ich glaube immer noch, in deinem Aufbau ist ein Fehler, auch wenn das fast nicht möglich ist.

Zeig doch mal ein Foto deines Aufbaus.

In einigen meiner Projekte verwende ich die analogen und digitalen Pins parallel (gleichzeitig) und das ohne Probleme. Daran liegt es sicher nicht.

Okay, du hast wahrscheinlich Recht, vor allem da der IR-Sensor am Analog-Pin funktioniert.

Was du machen kannst, einfach mal einen Kondensator 0,1 µ oder größer, kann auch ein Elko 1 µ sein, direkt am Empfänger an die 5 Volt anschließen.

Ich habe gerade Kondensatoren mit 0,1 µF, 10 µF und 100 µF versucht (ich habe leider nichts dazwischen hier). Es hat keinen Unterschied gemacht.

Im Anhang habe ich Fotos von meinem Aufbau, wäre echt nett wenn du da mal drüber schauen würdest.

Ok, sieht soweit gut aus. Ich kann jedenfalls keinen Fehler entdecken.

Was du noch machen könntest:

Schließe mal an den Empfänger eine Antenne an. Ca. 17,4 cm lang.
Und bringe den IR-Sensor mal etwas weiter vom Empfänger weg.

Hast du evtl. ein zweites Steckbrett ?

Oder nimm den Empfänger ganz links und den Sensor ganz rechts auf das Steckbrett.
Damit können wir evtl. Störungen fern halten.

Ich kann auch keinen Fehler erkennen. Was passiert, wenn du den IR-Sensor nicht vom Strom trennst, sondern nur das Kabel zu A0 trennst. A0 kannst du auf GND oder +5V legen.

Theseus:
Ich kann auch keinen Fehler erkennen. Was passiert, wenn du den IR-Sensor nicht vom Strom trennst, sondern nur das Kabel zu A0 trennst. A0 kannst du auf GND oder +5V legen.

Puuuhh, ich dachte schon, ich (und der TO) bin allein hier. :wink:

Danke für das Kontrollieren meiner Schaltung ihr beiden!

Schließe mal an den Empfänger eine Antenne an. Ca. 17,4 cm lang.
Und bringe den IR-Sensor mal etwas weiter vom Empfänger weg.

Ich habe eine Antenne angeschlossen (Ein Kupferkabel sollte doch funktionieren, oder?) und mit einem zweiten Steckbrett ca. 50cm zwischen den Empfänger und den IR-Sensor gebracht. Leider scheint auch das nicht die Lösung des Problems zu sein.

Was passiert, wenn du den IR-Sensor nicht vom Strom trennst, sondern nur das Kabel zu A0 trennst. A0 kannst du auf GND oder +5V legen.

Das habe ich gerade ausprobiert. Wenn ich das Kabel zu A0 trenne oder es dann in GND oder +5V stecke ändert sich leider nichts. Die Daten kommen auch dann nicht an.