Paralleles PWM Signal erzeugen und auf IR-Diode geben

Hallo,

ich versuche mit meinen Arduino Nano ein PWM Signal zu erzeugen und dieses auf eine IR-Diode zu geben.
Das PWM Signal ist dabei ein Konstantes Signal (Es ändert sich also nicht der duty cicle).
Das Problem an der ganzen Sache ist, das ich dieses Signal gleichzeitig wieder einlesen muss und Prüfen muss ob dieses PWM-Signal vorhanden ist.
Das Bedeutet das ich gleichzeitig Senden und Empfangen muss. Ist dies überhaupt möglich?
oder kann ich nur PWM Senden und danach PWM Einlesen?

Hallo,

wie erzeugst du denn das Signal?
Geht laut meiner Meinung nach nur mit Timer, läuft unabhängig vom Programm.
Damit entfällt auch die Überprüfung laut meiner Meinung.
Wenn Timer eingeschalten, Takt vorhanden, wenn Timer gestoppt, kein Takt vorhanden.
Ansonsten Pin vom Takt mit einem anderen Pin verbinden der Eingang ist. Der Sinn ist mir jedoch nich ganz klar.

Das hört sich nach "Lichtschranke" an - könnte diese Annahme stimmen? :slight_smile:

8051:
ich versuche ...

Auch mich interessiert, was genau Du vorhast.

Ich würde jedenfalls das PWM-Signal „auf die harte Tour“ erzeugen, also nicht per analogWrite() auf einen PWM-fähigen Pin, sondern so, wie ich es hier mache. Da loop() bei nicht allzu dämlicher Programmierung sehr oft durchläuft, kannst Du durchaus ein PWM-Signal im kHz-Bereich erzeugen und dabei auch testen, ob es anderswo wieder ankommt.

Wenn Du vorhast, einen IR-Taster zu bauen, kannst Du evtl. etwas mit einem TSSP4P38 anfangen. Ich habe den schon erfolgreich eingesetzt.

Gruß

Gregor

8051:

Das Bedeutet das ich gleichzeitig Senden und Empfangen muss. Ist dies überhaupt möglich?
oder kann ich nur PWM Senden und danach PWM Einlesen?

Gleichzeitig geht nicht, der Arduino kann die einzelnen Funktionen nur sehr schnell hintereinander ausführen.
Was immer du damit erreichen möchtest, das musst du mit 2 Controllern erledigen, wenn es gleichzeitig sein soll.

Hallo,

dafür benötigt man keinen 2. µC. Takt vom Timer erzeugen lassen und in aller Ruhe anderes Signal einlesen. Meinetwegen auch von einem Timer wenn es sein muss. Die laufen unabhängig voneinander. Erst die eigentliche CPU kann nur alles nacheinander abarbeiten. Die sitzt davon jedoch ein ganzes Stück weg und würde nur noch ein wenig Kontrollarbeit leisten vom Programm her.

Was der TO eigentlich machen möchte könnte er durchaus verraten.

Doc_Arduino:
Hallo,

dafür benötigt man keinen 2. µC. Takt vom Timer erzeugen lassen und in aller Ruhe anderes Signal einlesen.....

Da wollte ich der Hardwarebranche mal was zukommen lassen.....hast natürlich Recht, geht auch einfacher.

Hallo,

hmm, ich versuche es mal zu beschreiben :smiley:

Es gibt Zwei Teile (Teil A und Teil B)
Teil A kann an eine Seite von Teil B, mittels Magnet angehängt werden.
Dabei kann Teil A nur mit einer Seite aber mit den Winkeln 0°, 120° und 240° angelegt werden. (Ein gleichseitiges Dreieck, das in ein gleichseitiges Dreieck passt.
Ich muss jetzt berührungsfrei feststellen, ob und unter welchen Winkel A und B zusammenhängen.
Dafür gibt es drei Löcher x, y und z in Teil B.
x und y sind mittels Lichtwelle Verbunden.
x und z sind mittels Lichtwelle Verbunden.
(Also was in x reinstrahlt kommt in y wieder raus und umgekehrt)
Teil A, besitzt pass genau zwei Empfänger und einen Sender.

Damit lässt sich nun Prüfen ob Verbunden ist und unter welchen Winkel, da es für jeden Winkel nur eine kombination gibt.
Soweit die Theory...

Ok falls es zu kompliziert ist, können wir uns auch drauf einigen das es eine Lichtschranke ist :smiley:

Ich hatte auch schon dran gedacht das PWM, Signal einfach mittels Multivibrator zu erzeugen...
Also ohne Arduino, würde ich natürlich einen Timer nutzen für die Erzeugung, deswegen die Frage wie ich das mittels Arduino mache...

Ich danke euch schon mal ich schau mir mal eure Vorschläge an :slight_smile:

Also mit tone kannst du ein 50% PWM Signal ganz einfach an einem beliebigen Pin erzeugen. Frequenzen zwischen 30 Hz und ca. 65 kHz sind möglich. Das verwende ich für Lichtschranken und funktioniert klaglos.

Die Frage ist wie du das empfangen willst - dazu brauchst du Empfänger. Wahrscheinlich welche, die "Continous Mode" beherrschen. Zum Beispiel: TSSP58038

Code-Beispiel: 38 kHz für eine IR-LED erzeugen und einen Empfänger auswerten (Lichtschranke)

const byte TSOP_PIN = 8;  // Empfänger
const byte IR_LED_PIN = 11;   // Sender

void setup() {
  Serial.begin(9600);
  pinMode(TSOP_PIN, INPUT);
  tone(IR_LED_PIN, 38000);
}

void loop() {
  if (digitalRead(TSOP_PIN) == LOW) {
    Serial.println("Lichtschranke unterbrochen");
  }
}

du prüfst jetzt aber nicht in deinen Code ob ein PWM Signal anliegt, sondern nur ob überhaupt etwas empfangen wird, oder?

Die TSSP58038 ist ja auch "nur" ein Empfänger und nimmt keine Auswertung vor.
Warum also ein PWM Signal erzeugen, könntest doch auch die Diode einfach auf High setzen, oder übersehe ich etwas?

8051:
Die TSSP58038 ist ja auch "nur" ein Empfänger und nimmt keine Auswertung vor.
Warum also ein PWM Signal erzeugen, könntest doch auch die Diode einfach auf High setzen, oder übersehe ich etwas?

Normale Photodioden reagieren auf jedes Licht. Auch Sonneneinstrahlung oder Lampen. Die Modulation auf 38kHz o.ä. sorgt dafür dass solches Licht den Empfang nicht stört. Die Empfänger haben einen Bandpass, der dann nur auf diese Frequenz reagiert.

Mir schent daß kein Problem mit dem Umgebungslicht besteht und darum kein getaktetes Signal benötigt wird um das Umgebungslicht auszulöschen. Eine Einfache Diode die dauerbd eingeschaltet ist tuts auch.

Noch einfacher sind Reedkontakte oder Magnetsensoren die den Magnet lesen. Wenn das Ding gut konstruiert ist dann braucht es nicht mal einen zusätzlichen Magneten sondern genügt der Hauptmagnet.

Der TSSP58038 ist ein Empfänger mit geregelten Verstärker und 38kHz-Filter. Dieser elimiert Dauerlicht und 50 und 100 Hz Licht von Leuchtstofflampen.

Grüße Uwe

8051:
hmm, ich versuche es mal zu beschreiben ...

Ich werde aus Deiner Beschreibung nicht schlau. Uwe scheint da keine Probleme zu haben.

Einem Teil Deiner Beschreibung entnehme ich (zumindest glaube ich das), dass es um zwei gleichseitige Dreiecke geht, die gleich groß sind. Einem anderen Teil entnehme ich, dass A und B nicht gleich groß sind.

Kannst Du eine Skizze machen oder sonstwie konkreter werden?

Gruß

Gregor

8051:
du prüfst jetzt aber nicht in deinen Code ob ein PWM Signal anliegt, sondern nur ob überhaupt etwas empfangen wird, oder?

Die TSSP58038 ist ja auch "nur" ein Empfänger und nimmt keine Auswertung vor.
Warum also ein PWM Signal erzeugen, könntest doch auch die Diode einfach auf High setzen, oder übersehe ich etwas?

Stimmt, im Code wird nicht geprüft ob ein PWM-Signal anliegt, das macht schon der Empfänger. Er prüft ob ein getaktetes Signal (in diesem Fall 38 kHz) empfangen wird oder nicht. Der Emfpänger nimmt also eine Auswertung vor und setzt bei Vorhandensein/Nichtvorhandensein eines entsprechenden Signals (du kannst es "PWM-Signal" nennen) einen Pin auf HIGH bzw. LOW.

Details wurden von anderen bereits erwähnt.