Forum: Mikrocontroller und Digitale Elektronik LED Ansteuerung für Lazertag Projekt


von Dirk (speedo2024)



Lesenswert?

Hallo Zusammen,

ich bin neu hier im Forum und benötige Hilfe bei einem Lazertag Projekt 
und zwar bei der IR LED Ansteuerung. Die LED bzw. der LED driver wird 
über einen Mikrocontroller (Uno, Nano,...) I/01 angesteuert. Der 
Mikrocontroller
übernimmt dabei die Verarbeitung des IR Signals. Gesendet wird ein 38kHz 
Impuls mit Daten, der vom Empfänger ausgewertet wird. Im Nahbereich 
funktioniert das alles tadellos, sobald es auf Entfernung geht 
funktioniert  die Datenübertragung nicht mehr korrekt und der Empfänger 
empfängt dann meistens ein "Bad IR Signal" oder es kommt nichts an. Im 
Moment steuer ich die LED über einen SS8050D mit 6,0Volt, siehe dazu 
angehängtes Platinenlayout.

Habe ich hier die falschen Komponenten verwendet oder liegt die Ursache 
doch woanders? Würde es etwas bringen mit einem Operationsverstärker 
LMV358MM) das Signal zu verstärken? Ich habe mal einen Schaltplan von 
einem Lazertag Hersteller angehangen, ist da so ein gravierender 
Unterschied zu meiner Platine ersichtlich?

Ich wäre Euch sehr dankbar wenn Ihr mir hier weiterhelfen könntet, weil 
ich habe keine Ahnung mehr woran es liegen könnte.

Danke und Gruß
Dirk

: Verschoben durch Moderator
von Chris V. (nagut)


Lesenswert?

Dirk schrieb:
> Ich habe mal einen Schaltplan von
> einem Lazertag Hersteller angehangen, ist da so ein gravierender
> Unterschied zu meiner Platine ersichtlich?

Na klar!

Der Schaltplan zeigt (vermutlich - unten scheint mindestens der 
Shunt-Widerstand abgeschnitten zu sein) eine Stromregelung, bei der sich 
jemand offenbar über die Flankensteilheit Gedanken gemacht hat. In den 
Kommentaren steht noch was zu zwei Leistungsstufen, bei denen unklar 
ist, wie die zustandekommen. Möglicherweise durch die Pulslänge des 
Ansteuerpulses in Verbindung mit der Flankensteilheit?

Bei Deiner Platine zeigst Du uns nicht mal den Schaltplan; wir müssten 
den also aus dem Screenshot raten. Einen der Layer kann man nicht mal 
richtig sehen. Vielleicht bloß eine Emitterschaltung? Mit 
Stromgegenkopplung? Hast Du über Flankensteilheit und Pulslängen 
nachgedacht?

Ist für uns jetzt sehr viel Herumraterei. Insgesamt jedenfalls erstmal 
nicht verwunderlich, dass es sich ganz anders verhält wie das 
kommerzielle Zeug.

von Rainer W. (rawi)


Lesenswert?

Dirk schrieb:
> .. Lazertag ...

Was für ein Ding? 🤔

von Gerald B. (gerald_b)


Lesenswert?

Rainer W. schrieb:
> Dirk schrieb:
>> .. Lazertag ...
>
> Was für ein Ding? 🤔

Hat vielleich was mit Lazarus zu tun? duck und weg

Ohne jetzt die Datenblätter der LED und des Transistors hier 
nachzuschlagen zu wollen, ich würde statt des npn hier einen Logic Level 
FET verwenden, da ich aus Erfahrung weiß, das auf Kante genähte 
Kleinleistungstransistoren teilweise im durchgesteuerten Zustand 
ziemliche Verluste haben.
Dazu dann eine gescheite IR-LED in SMD. Ein 5mm THT, wie hier im Layout, 
kann keine Wunder vollbringen. Ich würde da was im Format 3535 und 
Dauerstrom 1-3 A auswählen und auf eine Starplatine löten. 
Impulsleistung sollte dann mit mehreren Ampere möglich sein, die ein 
LL-FET auch liefern kann. Dazu dann eine vernünftige Pufferung der 
Betriebsspannung mit KerKo u. low ESR Elko.

von Dirk (speedo2024)


Angehängte Dateien:

Lesenswert?

Hallo Chris,

anbei die Schaltplanskizze und der komplette Schaltplan vom vorliegenden 
funktionierenden System von der Stange.

Der Puls wird vom Uno generiert.

Gruß
Dirk

von Dirk (speedo2024)



Lesenswert?

Hallo Gerald,

vielen Dank für die Antwort. Leider bin ich absoluter Neuling auf dem 
Gebiet und deshalb verstehe ich Deine Ausführungen nur teilweise bis 
garnicht. Das Datenblatt der LED habe ich mal angehängt. Als Alternative 
hätte ich noch die TSAL6102 anzubieten, die bessere Werte als die 
TSAL6100 aufweist. Der verwendete Transistor ist ein SS8050D.

Würde ein IRLB8721 Deiner Empfehlung entsprechen?

Auf jeden Fall vielen Dank für deine Hilfe.
Gruß
Dirk

von Dirk (speedo2024)


Lesenswert?


von Dirk (speedo2024)


Angehängte Dateien:

Lesenswert?

Gerald B. schrieb:

> Ohne jetzt die Datenblätter der LED und des Transistors hier
> nachzu.......

Wäre das die passende Schaltung?
Als Widerstand vor der LED würde ich einen 5 Ohm verwenden, VCC=7,4V.

Danke und Gruß
Dirk

: Bearbeitet durch User
von Wulf D. (holler)


Lesenswert?

Die kommerzielle Schaltung scheint die 38 Khz über den FET einzuspeisen.
Wie machst Du das? Modullierst du dein Schaltsignal an der Basis des 
BJT?

Außerdem verwendet die kommerzielle Schaltung nur 1,5 Ohm. Gut, abhängig 
von der Betriebsspannung könnte eine Stromgegenkopplung entstehen. Das 
Du die Ströme mal gemessen?

Du wirst unter 1A bleiben. Dafür könnte dein BJT genügen.

von Chris V. (nagut)


Lesenswert?

Dirk schrieb:
> anbei die Schaltplanskizze (...)
> Der Puls wird vom Uno generiert.

Du steuerst den SS8050 mit dem 10k davor nur sehr vorsichtig an. Schau 
mal ins Ausgangskennlinienfeld (Datenblatt Figure 1): Bei nur um die 
500µA Basisstrom liefert er nicht mal 100mA durch die Diode. Ich nehme 
an, mit Deinem Vorwiderstand von 5 Ohm bei 6 V Betriebsspannung 
erwartest Du etwas größer 500mA, richtig?

Wichtig ist aber auch, dass man die Impulsbelastung der IR-Diode nicht 
überschreitet. Die Diode kann man lt. Datenblatt mit 1A betreiben, aber 
dann müssen die Pulse kurz und selten sein. Hält sich Dein Programm im 
Uno daran? (das ist auch für die Variante mit dem FET relevant!)

Um solche Sachen ggf. nachzumessen ist ein Oszilloskop ganz gut, weil 
man Uce_sat des Transistors und Uf der Diode bei solchen extremeren 
Sachen schlecht vorhersagen kann. Kannst Du eins benutzen und 
nachmessen? Die kommerzielle Schaltung ist da unempfindlicher, weil sie 
den Strom aktiv regelt.

von Manfred P. (pruckelfred)


Lesenswert?

Wulf D. schrieb:
> Du wirst unter 1A bleiben. Dafür könnte dein BJT genügen.

Aber nicht mit 10k an der Basis.

Chris V. schrieb:
> Bei nur um die 500µA Basisstrom
> liefert er nicht mal 100mA durch die Diode.

Selbst 100mA sind eine mutige Annahme.
Aber das ist simpel zu testen: Die Spannung über den Vorwiderstand der 
LED messen.

Den Basiswiderstand auf 220 Ohm verringern, mehr darf der Arduino nicht 
treiben.

von Dirk (speedo2024)


Lesenswert?

Wulf D. schrieb:
> Die kommerzielle Schaltung scheint die 38 Khz über den FET einzuspeisen.
> Wie machst Du das? Modullierst du dein Schaltsignal an der Basis des
> BJT?
>
> Außerdem verwendet die kommerzielle Schaltung nur 1,5 Ohm. Gut, abhängig
> von der Betriebsspannung könnte eine Stromgegenkopplung entstehen. Das
> Du die Ströme mal gemessen?
>
> Du wirst unter 1A bleiben. Dafür könnte dein BJT genügen.

Ja ich moduliere das Schaltsignal mit 38kHz an der Basis des BJT.

Die Ströme habe ich noch nicht gemessen, weiß auch ehrlich gesagt nicht 
was und womit ich das am Besten messe?

von Dirk (speedo2024)


Lesenswert?

Chris V. schrieb:
> Dirk schrieb:
>> anbei die Schaltplanskizze (...)
>> Der Puls wird vom Uno generiert.
>
> Du steuerst den SS8050 mit dem 10k davor nur sehr vorsichtig an. Schau
> mal ins Ausgangskennlinienfeld (Datenblatt Figure 1): Bei nur um die
> 500µA Basisstrom liefert er nicht mal 100mA durch die Diode. Ich nehme
> an, mit Deinem Vorwiderstand von 5 Ohm bei 6 V Betriebsspannung
> erwartest Du etwas größer 500mA, richtig?
>
> Wichtig ist aber auch, dass man die Impulsbelastung der IR-Diode nicht
> überschreitet. Die Diode kann man lt. Datenblatt mit 1A betreiben, aber
> dann müssen die Pulse kurz und selten sein. Hält sich Dein Programm im
> Uno daran? (das ist auch für die Variante mit dem FET relevant!)
>
> Um solche Sachen ggf. nachzumessen ist ein Oszilloskop ganz gut, weil
> man Uce_sat des Transistors und Uf der Diode bei solchen extremeren
> Sachen schlecht vorhersagen kann. Kannst Du eins benutzen und
> nachmessen? Die kommerzielle Schaltung ist da unempfindlicher, weil sie
> den Strom aktiv regelt.

Ja ich möchte gerne knapp unter 1A liegen mit der Belastung liegen, also 
definitiv größer als 500mA. Heißt also ich muss den 10k gegen einen 
kleineren tauschen oder? Soll ich den von Wulf empfohlenen 220 Ohm 
nutzen?
Leider war mir nicht klar, das der Strom an der Basis Einfluß auf die 
Durchflußleistung hat.

Ich habe leider kein Oszilloskop und wüßte auch ehrlich gesagt nicht wie 
ich das überhaupt benutzen sollte.

von Dirk (speedo2024)


Lesenswert?

Manfred P. schrieb:
> Wulf D. schrieb:
>> Du wirst unter 1A bleiben. Dafür könnte dein BJT genügen.
>
> Aber nicht mit 10k an der Basis.
>
> Chris V. schrieb:
>> Bei nur um die 500µA Basisstrom
>> liefert er nicht mal 100mA durch die Diode.
>
> Selbst 100mA sind eine mutige Annahme.
> Aber das ist simpel zu testen: Die Spannung über den Vorwiderstand der
> LED messen.
>
> Den Basiswiderstand auf 220 Ohm verringern, mehr darf der Arduino nicht
> treiben.

Deine Annahme mit mutigen 100mA heißt das es vermutlich noch weniger 
sind? Weil das würde erklären, warum die Reichweite so gering ist.

Ich muß schauen wie ich das messe, weil ja nur ein Impuls dort ankommt.

von Dirk (speedo2024)



Lesenswert?

Ich habe gerade folgende LED Steuerung zugespielt bekommen, das würde 
schon mal den Wert des Widerstandes an der Basis senken. Das wäre ja 
schonmal in die Richtung wie oben von euch empfohlen.

von Dirk (speedo2024)


Lesenswert?

Und noch eine Frage, habt ihr eine Empfehlung für ein Oszilloskop? Habe 
mal im Netz geschaut, die gibt es ja schon relativ günstig. Nur ich habe 
keine Ahnung ob die ausreichend sind.
Danke!

von Rolf M. (rmagnus)


Lesenswert?

Rainer W. schrieb:
> Dirk schrieb:
>> .. Lazertag ...
>
> Was für ein Ding? 🤔

Er meinte vermutlich Lasertag.

von Chris V. (nagut)


Lesenswert?

Dirk schrieb:
> Leider war mir nicht klar, das der Strom an der Basis Einfluß auf die
> Durchflußleistung hat.
> (...)
> Ich habe gerade folgende LED Steuerung zugespielt bekommen, das würde
> schon mal den Wert des Widerstandes an der Basis senken. Das wäre
> ja schonmal in die Richtung wie oben von euch empfohlen.

Dir fehlen noch die Grundlagen zu den Bauteilen, die Du verwenden 
willst.
Die "zugespielte LED-Steuerung" verwendet einen MOSFET als 
Schaltelement. Dieser wird durch die zwischen Gate und Source angelegte 
Spannung gesteuert. Dein zuerst favorisierter SS8050 ist ein bipolarer 
Transistor, der wird durch den Strom gesteuert, der von der Basis zum 
Emitter fließt.

Dass man in beiden Fällen zum (schnellen) schalten hoher Ströme einen 
eher kleinen Widerstand vor Gate bzw. Basis benutzt, hat jeweils einen 
ganz unterschiedlichen Grund.


> Deine Annahme mit mutigen 100mA heißt das es vermutlich noch
> weniger sind? Weil das würde erklären, warum die Reichweite
> so gering ist.

Exakt.


> Ich muß schauen wie ich das messe, weil ja nur ein Impuls
> dort ankommt.

Richtig. Deshalb wäre ein Oszilloskop dafür praktisch.


> Ich habe leider kein Oszilloskop und wüßte auch ehrlich gesagt nicht wie
> ich das überhaupt benutzen sollte.

Dann ist es vermutlich auch nicht sinnvoll, Dir dafür jetzt eins zu 
kaufen. Hast Du niemanden in Deiner (erweiterten) Bekanntschaft, der 
wissen könnte, wie man so ein Ding benutzt? Vielleicht gibt es einen 
"Makerspace" oder ein "Repair-Cafe" oder so in Deiner Gegend? Es würde 
sich vermutlich lohnen, Dein Problem da mal vorzustellen. Man kann bei 
der Gelegenheit auch schauen, wie lang eigentlich Deine Pulse aus dem 
Uno sind, und ob man damit die gewünschten knapp 1A durch die Diode 
jagen darf.

Alternativ: nimm die Schaltung mit dem MOSFET und rechne mit einer 
Dioden-Durchfluss-Spannung von rund 2V. Da sind weniger Unsicherheiten 
zu berücksichtigen.

von Rainer W. (rawi)


Lesenswert?

Dirk schrieb:
> Ich habe gerade folgende LED Steuerung zugespielt bekommen, das würde
> schon mal den Wert des Widerstandes an der Basis senken.

In der Schaltung ist gar keine Basis vorhanden.
https://de.wikipedia.org/wiki/Metall-Oxid-Halbleiter-Feldeffekttransistor

So ein MOSFET wird über die Spannung gesteuert, d.h. R1 bestimmt 
(zusammen mit dem Innenwiderstand deiner Ansteuerung) nur die 
Umschaltgeschwindigkeit, hat aber mit dem Strom im geschalteten Zustand 
nichts zu tun, weil dann durch den Widerstand R1 sowieso kein Strom 
fließen kann. Das Gate ist isoliert.

: Bearbeitet durch User
von Manfred P. (pruckelfred)


Lesenswert?

Dirk schrieb:
> Ja ich möchte gerne knapp unter 1A liegen mit der Belastung liegen, also
> definitiv größer als 500mA.

Das ist für die IR-LED knapp am Tod und Dein S8050 ist mit max. 700mA 
spezifiziert. Die LED kann 200mA bei 10kHz mit 50% Einschaltdauer. 
Kalkuliere Deinen Aufbau nicht über 300mA.

> Heißt also ich muss den 10k gegen einen kleineren tauschen oder?
> Soll ich den von Wulf empfohlenen 220 Ohm nutzen?

Die 220 Ohm habe ich benannt, an einem Uno mit 5 Volt ergeben die knapp 
20 mA Basisstrom. Nicht palawern, testen!

> Leider war mir nicht klar, das der Strom an der Basis Einfluß auf die
> Durchflußleistung hat.

Dann musst Du mal Grundlagen nachlesen, Dein NPN-Transistor ist ein 
STROMverstärker.

Chris V. schrieb:
> Die "zugespielte LED-Steuerung" verwendet einen MOSFET als
> Schaltelement. Dieser wird durch die zwischen Gate und Source angelegte
> Spannung gesteuert. Dein zuerst favorisierter SS8050 ist ein bipolarer
> Transistor, der wird durch den Strom gesteuert, der von der Basis zum
> Emitter fließt.

> Dass man in beiden Fällen zum (schnellen) schalten hoher Ströme einen
> eher kleinen Widerstand vor Gate bzw. Basis benutzt, hat jeweils einen
> ganz unterschiedlichen Grund.

Ja, also auch am FET 220 Ohm rein.

Diese "zugespielte LED-Steuerung" ist wackelig, mit 2,6V am Port geht 
der FET nicht sauber auf und mit 3V3 Versorgung wird's auch an der LED 
eng. Wenn er diese an 5 Volt betreibt, passt das. Weiter vorne hat er 
einen FET      IRLB8721 verlinkt, der würde auch passen.

> Alternativ: nimm die Schaltung mit dem MOSFET und rechne mit einer
> Dioden-Durchfluss-Spannung von rund 2V. Da sind weniger Unsicherheiten
> zu berücksichtigen.

2 V reicht nicht, die Datenblätter TSAL6xxx nennen typ 2,2 / max 3 Volt. 
Mit 8,2 Ohm (Normwert) an 5V-Versorgung passt das. Dicht vor dem 
Widerstand gehört noch ein Elko an die 5 Volt, dessen Minus nahe an 
Sourde des FET. Über den Daumen 100..470 µF.

von Dirk (speedo2024)


Lesenswert?

Manfred P. schrieb:
> Dirk schrieb:
>> Ja ich möchte gerne knapp unter 1A liegen mit der Belastung liegen, also
>> definitiv größer als 500mA.
>
> Das ist für die IR-LED knapp am Tod und Dein S8050 ist mit max. 700mA
> spezifiziert. Die LED kann 200mA bei 10kHz mit 50% Einschaltdauer.
> Kalkuliere Deinen Aufbau nicht über 300mA.
>

Die LED wird mit 38kHz betrieben und die Einschaltdauer beträgt 26 
Mikrosekunden.

> Dann musst Du mal Grundlagen nachlesen, Dein NPN-Transistor ist ein
> STROMverstärker.
>

Das hat mein Matheprofessor vor 30 Jahren in der mündlichen Prüfung auch 
zu mir gesagt. :-)

> Chris V. schrieb:
>> Alternativ: nimm die Schaltung mit dem MOSFET und rechne mit einer
>> Dioden-Durchfluss-Spannung von rund 2V. Da sind weniger Unsicherheiten
>> zu berücksichtigen.
>
> 2 V reicht nicht, die Datenblätter TSAL6xxx nennen typ 2,2 / max 3 Volt.
> Mit 8,2 Ohm (Normwert) an 5V-Versorgung passt das. Dicht vor dem
> Widerstand gehört noch ein Elko an die 5 Volt, dessen Minus nahe an
> Sourde des FET. Über den Daumen 100..470 µF.

Ich werde das testen.

Vielen Dank für die Hilfe.

von Dirk (speedo2024)


Angehängte Dateien:

Lesenswert?

Ich werde zusätzlich noch folgende Schaltung testen, weil die soll 
sicherer/schonender für die IRLED sein. Und den folgenden Code habe ich 
geschrieben.
1
// LTTO set up
2
#define EI_ARDUINO_INTERRUPTED_PIN // This tells the ISR routine which was the last Pin that changed
3
#include <EnableInterrupt.h> // This is required for the LTTO libary to work. https://github.com/GreyGnome/EnableInterrupt
4
#include <LTTO.h> // This is the LTTO library
5
LTTO ltto;
6
const byte PWM_Pin = 5;
7
const byte DATA_Pin = 6;
8
// Variables for transmission
9
byte teamID = 1;
10
byte playerID = 4;
11
byte shotStrength = 1;
12
void setup() {
13
pinMode(PWM_Pin, OUTPUT);
14
pinMode(DATA_Pin, OUTPUT);
15
}
16
void loop() {
17
SendData(teamID, playerID, shotStrength);
18
delay(5000); // Example: Wait for 5 seconds between transmissions
19
}
20
void SendData(byte teamID, byte playerID, byte shotStrength) {
21
// Encode the data as bit sequences
22
byte dataToSend = (teamID << 5) | (playerID << 1) | (shotStrength >> 1);
23
// Send the data over the DATA_Pin
24
for (int i = 0; i < 8; i++) {
25
if (dataToSend & (1 << (7 - i))) {
26
digitalWrite(DATA_Pin, HIGH);
27
} else {
28
digitalWrite(DATA_Pin, LOW);
29
}
30
// Send a pulse signal on IR_LED_Pin during data transmission
31
tone(PWM_Pin, 38000);
32
delayMicroseconds(13); // Hold the data pin for a certain period
33
noTone(PWM_Pin);
34
delayMicroseconds(13); // Hold the data pin for a certain period
35
}
36
}

Mal sehen ob ich damit dann weiter komme.

von Dirk (speedo2024)


Angehängte Dateien:

Lesenswert?

Hier die Schaltung zum code.
Vdrv = 7,2V
I/01=PWM_Pin
I/02=DATA_Pin

: Bearbeitet durch User
von Marcel V. (mavin)


Angehängte Dateien:

Lesenswert?

Rolf M. schrieb:
> Rainer W. schrieb:
>> Dirk schrieb:
>>> .. Lazertag ...
>>
>> Was für ein Ding? 🤔
>
> Er meinte vermutlich Lasertag.

Ja, in Bochum werden sogar ganzjährig Lazertage angeboten. Da dürfen 
sich Kinder ab 10 mit zertifizierten Laserstrahl-Schusswaffen 
gegenseitig abknallen. Das Geschoss ist ein unsichtbarer 
Dauerfeuerinfrarotstrahler und als Zielvorrichtung dient ein vollkommen 
ungefährlicher sichtbarer Klasse II Laser aus einem Laserpointer. 
Deswegen müssen die Augen auch nicht extra geschützt werden.

Im Video baut sich jemand seine eigene Laserstrahl-Maschinenpistole für 
eine Lazertagchallenge.

von Dirk (speedo2024)


Lesenswert?

Marcel V. schrieb:
......

Das was ich baue hat keinen Laser, es handelt sich um eine IRLed. Ist 
ein ähnliches Prinzip wie Deine Fernsehfernbedienung Zuhause. Es ist 
etwas irreführend das als Laz(s)ertag zu bezeichnen, weil eigentlich in 
keiner dieser Spielzeugwaffen ein Laser verbaut ist.

: Bearbeitet durch User
von Rahul D. (rahul)


Lesenswert?

Marcel V. schrieb:
> Da dürfen
> sich Kinder ab 10 mit zertifizierten Laserstrahl-Schusswaffen
> gegenseitig abknallen.

"Tolle" Freizeitbeschäftigung.

von Chris V. (nagut)


Lesenswert?

Dirk schrieb:
> Manfred P. schrieb:
>> Dann musst Du mal Grundlagen nachlesen
> Das hat mein Matheprofessor vor 30 Jahren in der mündlichen Prüfung auch
> zu mir gesagt. :-)

Aber zu Herzen genommen hast Du es Dir in der Zwischenzeit nicht so 
unbedingt, oder? ;)


> Die LED wird mit 38kHz betrieben und die Einschaltdauer beträgt 26
> Mikrosekunden.

Bei 38kHz dauert eine Periode 26µs. Du meintest vermutlich die Hälfte 
davon. Aber auch das ist noch vieeeel zu lang! Wenn Du 1A durch die 
Diode jagen willst, dürfen das nur ganz ganz schmale Impulse sein. Lies' 
Dir doch einfach mal konzentriert das Datenblatt durch, da steht das 
alles drin.

von Dirk (speedo2024)


Lesenswert?

Chris V. schrieb:

>> Die LED wird mit 38kHz betrieben und die Einschaltdauer beträgt 26
>> Mikrosekunden.
>
> Bei 38kHz dauert eine Periode 26µs. Du meintest vermutlich die Hälfte
> davon. Aber auch das ist noch vieeeel zu lang! Wenn Du 1A durch die
> Diode jagen willst, dürfen das nur ganz ganz schmale Impulse sein. Lies'
> Dir doch einfach mal konzentriert das Datenblatt durch, da steht das
> alles drin.

Das Geheimnis liegt in der LTTO Bibliohek, das die LED so ausgereizt 
werden kann.

Hier ein Auszug daraus.
3ms On, 6ms Off, 3ms (preamble) followed by 7 bits spaced apart by 2ms. 
One is represented by 2ms, zero is 1ms * In regular lazertag mode, the 
player and team bits are zero, but the last two bits signify how 
powerful the blast is.* for this example, we show a shot that does one 
damage and one that does 4 (max).

von Dirk (speedo2024)


Lesenswert?

Hier der code vereinfacht
1
const byte IR_LED_Pin = 13;
2
3
//LTTO Tag information
4
byte TH =1;
5
byte TL =1;
6
byte PH =1;
7
byte PM =1;
8
byte PL =1;
9
byte X2 =1;
10
byte X1 =1;
11
12
13
void setup() {
14
 pinMode(IR_LED_Pin, OUTPUT);
15
}
16
17
void loop() {
18
  SendTag();
19
  delay(5000);
20
}
21
22
void SendTag() {
23
  PulseIR(3);
24
  delay(6);
25
  PulseIR(3);
26
  delay(2);
27
  PulseIR(TH);
28
  delay(2);
29
  PulseIR(TL);
30
  delay(2);
31
  PulseIR(PH);
32
  delay(2);
33
  PulseIR(PM);
34
  delay(2);
35
  PulseIR(PL);
36
  delay(2);
37
  PulseIR(X2);
38
  delay(2);
39
  PulseIR(X1);
40
  delay(2);
41
}
42
void PulseIR (byte milliseconds) {
43
  tone (IR_LED_Pin, 38000);
44
  delay (milliseconds);
45
  noTone(IR_LED_Pin);

von Chris V. (nagut)


Lesenswert?

Dirk schrieb:
> Das Geheimnis liegt in der LTTO Bibliohek, das die LED so ausgereizt
> werden kann.

Wenn das so ist, warum benutzt Du die dann nicht sondern schreibst Deine 
eigenen seltsamen PulseIR() Funktionen?

Ich habe mal interessehalber einen Blick in die LTTO-Library geworfen. 
(falls noch jemand interessiertes mitliest: 
https://github.com/rmick/LTTO_Library )

Dort benutzt man einen einzigen Pin zur Steuerung der IR-LED und ein 
#define mit dem vielsagenden Namen "TIMER555", mit dem man zur 
Compile-Zeit festlegen kann, was aus diesem Pin ausgegeben wird. (siehe 
hier: https://github.com/rmick/LTTO_Library/blob/master/SendIR.cpp#L109 
)

1.) mit TIMER555 nicht definiert:
Die 38kHz Trägerfrequenz wird von der Library selbst erzeugt, allerdings 
nur zufällig halbwegs genau, und auch nur im 50/50-Tastverhältnis. Damit 
kann man eine LED ganz einfach direkt über den Pin betreiben, aber nur 
mit relativ geringen Strömen. Deine gewünschten 1A wären mit dieser 
Ansteuerung absolut tödlich für die LED.

2.) mit TIMER555 definiert:
Die Library kümmert sich gar nicht um die Trägerfrequenz und gibt nur 
ein "Enable-Signal" aus. Aufmodulieren eines 38kHz-Signals muss extern 
erfolgen (vermutlich dachte sich der Autor, dass man dafür z.B. auch 
einen NE555 nehmen könnte). Deine bisher gezeigten und besprochenen 
Schaltungen haben sowas nicht, und sind daher dafür gar nicht geeignet.


Ich würde Dir empfehlen, einfach irgend einen fertigen kompletten 
Bauvorschlag für etwas mit mehr Reichweite stumpf nachzubauen. Es 
scheint ja so, als gäbe es in der Community ein paar Leute, die sich mit 
sowas befassen.

von Manfred P. (pruckelfred)


Lesenswert?

Dirk schrieb:
> Die LED wird mit 38kHz betrieben und die Einschaltdauer beträgt 26
> Mikrosekunden.

Ganz sicher nicht, Problem nicht verstanden.

>> Dann musst Du mal Grundlagen nachlesen, Dein NPN-Transistor ist ein
>> STROMverstärker.
> Das hat mein Matheprofessor vor 30 Jahren in der mündlichen Prüfung auch
> zu mir gesagt. :-)

Das sollten wir besser unserem Gummibaum empfehlen, der ist nicht ganz 
so lernresistent.

Dirk schrieb:
> Ich werde zusätzlich noch folgende Schaltung testen,

Kannst Du noch schwachsinnigere Schaltungen finden anstatt die zuvor 
gegebenen Hinweise zu verarbeiten?

Chris V. schrieb:
>> Das hat mein Matheprofessor vor 30 Jahren in der mündlichen Prüfung auch
>> zu mir gesagt. :-)
> Aber zu Herzen genommen hast Du es Dir in der Zwischenzeit nicht so
> unbedingt, oder? ;)

Wir sollten aufhören, diesen Thread zu füttern, hoffnungsloser Fall.

>> Die LED wird mit 38kHz betrieben und die Einschaltdauer beträgt 26
>> Mikrosekunden.
> Bei 38kHz dauert eine Periode 26µs. Du meintest vermutlich die Hälfte
> davon. Aber auch das ist noch vieeeel zu lang! Wenn Du 1A durch die
> Diode jagen willst, dürfen das nur ganz ganz schmale Impulse sein. Lies'
> Dir doch einfach mal konzentriert das Datenblatt durch, da steht das
> alles drin.

Kann und will er nicht begreifen. Die Lampe kann 200 mA bei 50%, wobei 
ich nicht weiß, ob sie das im Dauerstrich aushält bzw. wie lange.

Chris V. schrieb:
> Deine gewünschten 1A wären mit dieser
> Ansteuerung absolut tödlich für die LED.

Kein Problem, die bisher gezeigte Dilettanten-Hardware bringt nicht 
genug Strom.

> Ich würde Dir empfehlen, einfach irgend einen fertigen kompletten
> Bauvorschlag für etwas mit mehr Reichweite stumpf nachzubauen.

Besser jemanden finden, der es ihm fertig aufbaut.

von Dirk (speedo2024)


Angehängte Dateien:

Lesenswert?

Chris V. schrieb:
> Dirk schrieb:
>> Das Geheimnis liegt in der LTTO Bibliohek, das die LED so ausgereizt
>> werden kann.
>
> Wenn das so ist, warum benutzt Du die dann nicht sondern schreibst Deine
> eigenen seltsamen PulseIR() Funktionen?
>

Er sollte nur zeigen das die LED gepulst wird und ich benutze den LTTO 
Code.


> Ich würde Dir empfehlen, einfach irgend einen fertigen kompletten
> Bauvorschlag für etwas mit mehr Reichweite stumpf nachzubauen. Es
> scheint ja so, als gäbe es in der Community ein paar Leute, die sich mit
> sowas befassen.

Genau das ist leider das Problem, die ganzen gezeigten Bauvorschläge 
sind aus der Community und funktionieren ja leider nicht.

Ich gehe jetzt zurück auf Anfang und baue genau einen Plan stumpf nach, 
der angeblich funktionieren soll. Ich habe diesen nicht genommen, da er 
mir zu aufwendig erschien. Habe den Schaltplan mal angehangen, 
vielleicht würdet ihr ja mal darüber schauen und sagen ob das wirklich 
funktioniert.

Ich danke auf jeden Fall für Deine sehr ausführlichen Erklärungen.

von Dirk (speedo2024)


Lesenswert?

Manfred P. schrieb:
> Dirk schrieb:
>> Die LED wird mit 38kHz betrieben und die Einschaltdauer beträgt 26
>> Mikrosekunden.
>
> Ganz sicher nicht, Problem nicht verstanden.

Ich bin ein Laie auf dem Gebiet und deshalb habe ich hier um Hilfe 
gebeten.

>>> Dann musst Du mal Grundlagen nachlesen, Dein NPN-Transistor ist ein
>>> STROMverstärker.
>> Das hat mein Matheprofessor vor 30 Jahren in der mündlichen Prüfung auch
>> zu mir gesagt. :-)
>
> Das sollten wir besser unserem Gummibaum empfehlen, der ist nicht ganz
> so lernresistent.

Sehr hilfreiche Antwort.

> Dirk schrieb:
>> Ich werde zusätzlich noch folgende Schaltung testen,
>
> Kannst Du noch schwachsinnigere Schaltungen finden anstatt die zuvor
> gegebenen Hinweise zu verarbeiten?

Wenn man die Antworten nicht versteht, dann sucht man nach dem nächsten 
Strohhalm der einem geboten wird.

> Chris V. schrieb:
>>> Das hat mein Matheprofessor vor 30 Jahren in der mündlichen Prüfung auch
>>> zu mir gesagt. :-)
>> Aber zu Herzen genommen hast Du es Dir in der Zwischenzeit nicht so
>> unbedingt, oder? ;)
>
> Wir sollten aufhören, diesen Thread zu füttern, hoffnungsloser Fall.

Das fände ich sehr schade, weil die Antworten zeigen mir das die 
Schaltungen irgendwie alle murks sind.

> Chris V. schrieb:
>> Deine gewünschten 1A wären mit dieser
>> Ansteuerung absolut tödlich für die LED.
>
> Kein Problem, die bisher gezeigte Dilettanten-Hardware bringt nicht
> genug Strom.

Auch das habe ich mittlerweile selbst gemerkt und du glaubst es kaum, 
deshalb habe ich mich hier angemeldet um eine vernünftige 
funktionierende Schaltung zu erfahren.

>> Ich würde Dir empfehlen, einfach irgend einen fertigen kompletten
>> Bauvorschlag für etwas mit mehr Reichweite stumpf nachzubauen.
>
> Besser jemanden finden, der es ihm fertig aufbaut.

Ich dachte eigentlich dazu wären Foren da, um auch mal Laien unter die 
Arme zu greifen. Es tut mir leid das ich hier nicht die Erwartungen des 
ein oder anderen erfülle, aber es wäre trotzdem schön hier am Ende mit 
einer funktionierenden Schaltung dazustehen.
Deshalb nochmal vielen Dank an die, die bisher geholfen haben und 
hoffentlich auch noch weiterhin werden.

von Dirk (speedo2024)


Lesenswert?

> Ich gehe jetzt zurück auf Anfang und baue genau einen Plan stumpf nach,
> der angeblich funktionieren soll. Ich habe diesen nicht genommen, da er
> mir zu aufwendig erschien. Habe den Schaltplan mal angehangen,
> vielleicht würdet ihr ja mal darüber schauen und sagen ob das wirklich
> funktioniert.
>
An PWM werden die 38kHz erzeugt und Mod1 moduliert die Daten.
Die Batteriespannung beträgt 7,2Volt.

Der Code ist ein modifizierter LTTO code.
1
////---------------------------------------------------------------------------------------------------------
2
// LTTO set up
3
#define EI_ARDUINO_INTERRUPTED_PIN // This tells the ISR routine which was the last Pin that changed
4
#include <EnableInterrupt.h> // This is required for the LTTO libary to work. https://github.com/GreyGnome/EnableInterrupt
5
#include <LTTO.h> // This is the LTTO library
6
LTTO ltto;
7
const byte IR_LED_Pin = 5;
8
const byte DATA_Pin = 6;
9
// Variables for transmission
10
byte teamID = 1;
11
byte playerID = 4;
12
byte shotStrength = 1;
13
void setup() {
14
pinMode(IR_LED_Pin, OUTPUT);
15
pinMode(DATA_Pin, OUTPUT);
16
}
17
void loop() {
18
SendData(teamID, playerID, shotStrength);
19
delay(5000); // Example: Wait for 5 seconds between transmissions
20
}
21
void SendData(byte teamID, byte playerID, byte shotStrength) {
22
// Encode the data as bit sequences
23
byte dataToSend = (teamID << 5) | (playerID << 1) | (shotStrength >> 1);
24
// Send the data over the DATA_Pin
25
for (int i = 0; i < 8; i++) {
26
if (dataToSend & (1 << (7 - i))) {
27
digitalWrite(DATA_Pin, HIGH);
28
} else {
29
digitalWrite(DATA_Pin, LOW);
30
}
31
// Send a pulse signal on IR_LED_Pin during data transmission
32
tone(IR_LED_Pin, 38000);
33
delayMicroseconds(13); // Hold the data pin for a certain period
34
noTone(IR_LED_Pin);
35
delayMicroseconds(13); // Hold the data pin for a certain period
36
}
37
}

von Michael M. (michael89)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

will mal ne ganz andere Technik im Raum werden. Die Vorbeschaltung hab 
ich hier aus den Forum, sollte dann ja wohl machen was se soll.
Das andere ist ein Stromtreiber für die LED.
Sieht erst nach "viel" aus, aber wenn man sich erstmal mit den 
Beschäftigt hat, ist es auch kein "Hexenwerk" mehr.
Sind auf jeden Fall effizienter und da du eh ne Platine herstellen 
willst, kannst es auch "ordentlich" machen ;)


Gruß
Michael

von Dirk (speedo2024)


Lesenswert?

Hallo Michael,

ich danke Dir vielmals für Deine Erklärung bzw. für dein Schaltbild. Da 
ich ja absoluter Anfänger bin, hast Du noch weitere Informationen für 
mich? Z.B. welche Spannung liegt bei VCC an, sind R1 und R6 für die 
ankommmenden A an der LED zuständig?

Gruß
Dirk

von Dirk (speedo2024)


Lesenswert?

Michael M. schrieb:
> Hallo Zusammen,
>
> will mal ne ganz andere Technik im Raum werden. Die Vorbeschaltung hab
> ich hier aus den Forum, sollte dann ja wohl machen was se soll.
> Das andere ist ein Stromtreiber für die LED.
> Sieht erst nach "viel" aus, aber wenn man sich erstmal mit den
> Beschäftigt hat, ist es auch kein "Hexenwerk" mehr.
> Sind auf jeden Fall effizienter und da du eh ne Platine herstellen
> willst, kannst es auch "ordentlich" machen ;)
>
>
> Gruß
> Michael

Und noch weitere Fragen, sorry. Sind die Kondensatoren alle Aluminum 
Electrolytic Capacitors oder sind das Tantalum Capacitors?

Was heißt bei C3 "do not place", soll ich den weglassen oder was ist 
damit gemeint?

: Bearbeitet durch User
von Michael M. (michael89)



Lesenswert?

Hallo Dirk,

Hier das Datenblatt.
https://www.lcsc.com/datasheet/lcsc_datasheet_1811151536_Diodes-Incorporated-PAM2863ECR_C80312.pdf

Dirk schrieb:
> welche Spannung liegt bei VCC an ?

Geht drum wie viel LED du in Reihe Schaltest. Vcc geht von 4.5V bis 40V 
bei max. 2A
Bei einer LED ist alles okay zwischen 5-12V (Pi x Daumen ;) )

Dirk schrieb:
> sind R1 und R6 für die ankommmenden A an der LED zuständig?

Nein die beiden bilden RS (Resistor shunt) wollte auf 2A und laut Formel 
brauch ich da 0.05Ohm und bei 2A dachte wär besser auf zwei Widerstande 
auf zu teilen.

Dirk schrieb:
> Und noch weitere Fragen, sorry. Sind die Kondensatoren alle Aluminum
> Electrolytic Capacitors oder sind das Tantalum Capacitors?

Nein ganz normale Keramik.

Dirk schrieb:
> Was heißt bei C3 "do not place", soll ich den weglassen oder was ist
> damit gemeint?

Damit hatte ich nur rumexperimentiert. Hab mit verschiedenen RC-Pässe 
versucht den DIM Eingang zu bespielen ob das unterschiede macht.
Hab mal die ganze Platine mit gepostet. Da sieht man den RC neben den 
Terminal für das PWM Signal.

Wo ich das U14 (Klemmterminal) hab. ist dann deine LED direkt auf der 
Platine. Meine LED ist über ein Kabel in ein Produkt eingebaut. Daher 
das Terminal.

Hoffe das beantwortet erstmal ein Teil deiner Fragen ;)

p.s habe damit eine Power LED Rot , Grün , Blau , Weiß mit jeweils 2A 
betrieben. Das wirst du nicht brauchen. Dir reicht ein Treiber, must 
halt RS, Spule etc. für deine zwecke anpassen.

Wollte dir damit eigl. nur ne Schaltungsalternative zum Mosfet Treiber 
zeigen.

In hochwertigen Produkten ist meistens ein Stromtreiber für LED's 
verbaut. Bei nicht so Hochwertige sehe ich oft Mosfet-Treiber

p.s.s guck dir mal den an.
https://www.led-stuebchen.de/download/PT4115E.pdf

Gruß
Michael

: Bearbeitet durch User
von Dirk (speedo2024)


Lesenswert?

Michael M. schrieb:
> Wo ich das U14 (Klemmterminal) hab. ist dann deine LED direkt auf der
> Platine. Meine LED ist über ein Kabel in ein Produkt eingebaut. Daher
> das Terminal.
>
Nein, meine ist auch über ein Kabel verbaut.

> Hoffe das beantwortet erstmal ein Teil deiner Fragen ;)
>
Ja vielen Dank, aber leider bei mir als Unwissender wirft es auch wieder 
neue Fragen auf!

> p.s habe damit eine Power LED Rot , Grün , Blau , Weiß mit jeweils 2A
> betrieben. Das wirst du nicht brauchen. Dir reicht ein Treiber, must
> halt RS, Spule etc. für deine zwecke anpassen.
>
Hier wäre mein ersten großes Problem, wie berechne ich RS, Spule etc... 
?

> p.s.s guck dir mal den an.
> https://www.led-stuebchen.de/download/PT4115E.pdf
>
Vielen Dank, habe ich mir gerade angeschaut und habe wieder ein riesen 
Fragezeichen vr Augen. Ich glaube das ist alles zu kompliziert für mich.

Trotzdem vielen Dank und Gruß

Dirk

von Michael M. (michael89)


Lesenswert?

Hallo Dirk,

Dirk schrieb:
> Vielen Dank, habe ich mir gerade angeschaut und habe wieder ein riesen
> Fragezeichen vr Augen. Ich glaube das ist alles zu kompliziert für mich.

Kein Problem, gerne.
Mosfet-Treiber sollte es auch tun ;).

und falls dein ganzer Lazertag Kram erstmal läuft. Kannst du ja die 
zweite/dritte Version versuchen mit ein Stromtreiber zu realisieren.

Sonst dir noch viel Erfolg mit dein Projekt.

p.s


Gruß
Michael

Dirk schrieb:
> Hier wäre mein ersten großes Problem, wie berechne ich RS, Spule etc...
> ?
Die Formeln/Tabellen oder Angaben dazu finden sich meistens im 
Datenblatt des IC's.

von Manfred P. (pruckelfred)


Lesenswert?

Michael M. schrieb:
> Das andere ist ein Stromtreiber für die LED.

Es lässt sich zu jedem 'Problem' eine total unsinnige Schaltung finden. 
Man (Du) muß verdammt ahnungsfrei sein, eine Stromquelle mit 38 kHz 
modulieren zu wollen.

Weitere Details zu diesem Schwachsinn erspare ich mir.

von Michael M. (michael89)


Lesenswert?

Manfred P. schrieb:
> Weitere Details zu diesem Schwachsinn erspare ich mir.

ah jetzt wo du's sagst...upsi.. Der Dim-pin integriert quasi das PWM 
Signal zu einem DC Wert (0-5V) der die Helligkeit vor gibt und schaltet 
die LED ja nicht AN und AUS. Somit kommt am ende kein moduliertes Signal 
raus, nur ein gedimmtes Licht.

Manfred P. schrieb:
> Es lässt sich zu jedem 'Problem' eine total unsinnige Schaltung finden.

Die Dimm Freq geht bis 50Khz. Würde das evtl gehen wenn man die 
Bufferkondensatoren ziemlich klein wählt, den DIM Pin Floaten (immer 
max.) lässt und die Betriebsspannug für das IC mit dem PWM+Daten 
Betreibt. theoretisch ?

Gruß
Michael

: Bearbeitet durch User
von Dirk (speedo2024)


Lesenswert?

Manfred P. schrieb:
> Michael M. schrieb:
>> Das andere ist ein Stromtreiber für die LED.
>
> Es lässt sich zu jedem 'Problem' eine total unsinnige Schaltung finden.
> Man (Du) muß verdammt ahnungsfrei sein, eine Stromquelle mit 38 kHz
> modulieren zu wollen.
>
> Weitere Details zu diesem Schwachsinn erspare ich mir.

Auch wenn ich keine Ahnung habe, habe ich mir schon so etwas gedacht. 
Weil beim Betrachten des Datenblattes des PT4115 kam mir das schon 
komisch vor.

@Michael Trotzdem vielen Dank für deine Idee und Hilfe.

von Dirk (speedo2024)


Angehängte Dateien:

Lesenswert?

Ich habe jetzt die Hardware für diese Schaltung bestellt und werde diese 
dann aufbauen.

von Chris V. (nagut)


Lesenswert?

Dein Plan ist sehr unübersichtlich gezeichnet, aber könnte klappen, wenn 
der LM2904 schnell genug ist (Ich habe zu wenig Erfahrung, um das AdHoc 
einzuschätzen). Wo stammt die Schaltung her? Hast Du glaubhafte Belege 
dafür, dass damit schon funktionierende Sender mit hoher Reichweite 
gebaut wurden?

Ich würde noch einen 47k Pulldown an TP3 spendieren. Wenn Q1 und Q2 
sperren, floatet sonst der Eingang des Oprerationsverstärkers. Außerdem 
bitte daran denken, den Q2 invertiert anzusteuern.

Und bitte mach Dich nochmal schlau zum Puls-Pausenverhältnis des 
Sendesignals! Siehe z.B. die ersten zwei Sätze unter "Timing und 
Bitcodierung" von hier:
https://www.opendcc.de/info/rc5/rc5.html
Je höher Du den Strom durch die IR-Diode treiben willst, desto kleiner 
muss das Puls-Pausenverhältnis sein, damit die Diode das überlebt. Du 
brauchst noch ein deutlich kleineres Verhältnis als die dort erwähnten 
1:3. Alles, was Du bisher hier gezeigt hast, legte den Schluss nahe, 
dass Du 1:1 benutzt.

Abschließend ist Dein bisher hier gezeigter Arduino-Code durchgängig 
Murks. Du schriebst allerdings auch, der sollte sowieso nur 
verdeutlichen, dass Du die LED pulsen willst, und Du eigentlich was 
anderes benutzt.

: Bearbeitet durch User
von Dirk (speedo2024)


Angehängte Dateien:

Lesenswert?

Chris V. schrieb:
> Dein Plan ist sehr unübersichtlich gezeichnet, aber könnte klappen, wenn
> der LM2904 schnell genug ist (Ich habe zu wenig Erfahrung, um das AdHoc
> einzuschätzen). Wo stammt die Schaltung her? Hast Du glaubhafte Belege
> dafür, dass damit schon funktionierende Sender mit hoher Reichweite
> gebaut wurden?
>
Sorry dafür, aber das ist mein zweiter oder dritter Schaltplan. Der 
Schaltplan kommt aus einem Lazer Tag Forum und scheint mit der Einzige 
zu sein der bisher funktioniert. Die anderen gezeigten, stammen zwar 
auch daher aber immer mir dem Zusatz "so sieht das in etwa aus". Das ist 
auch der Grund warum ich mich dann hier angemeldet habe, um 
qualifizierte Hilfe zu erfahren.

> Ich würde noch einen 47k Pulldown an TP3 spendieren. Wenn Q1 und Q2
> sperren, floatet sonst der Eingang des Oprerationsverstärkers. Außerdem
> bitte daran denken, den Q2 invertiert anzusteuern.
>
Werde ich beachten, danke!

> Und bitte mach Dich nochmal schlau zum Puls-Pausenverhältnis des
> Sendesignals! Siehe z.B. die ersten zwei Sätze unter "Timing und
> Bitcodierung" von hier:
> https://www.opendcc.de/info/rc5/rc5.html
> Je höher Du den Strom durch die IR-Diode treiben willst, desto kleiner
> muss das Puls-Pausenverhältnis sein, damit die Diode das überlebt. Du
> brauchst noch ein deutlich kleineres Verhältnis als die dort erwähnten
> 1:3. Alles, was Du bisher hier gezeigt hast, legte den Schluss nahe,
> dass Du 1:1 benutzt.
>
Die angehägte Bilddatei zeigt ein Datenpaket.

> Abschließend ist Dein bisher hier gezeigter Arduino-Code durchgängig
> Murks. Du schriebst allerdings auch, der sollte sowieso nur
> verdeutlichen, dass Du die LED pulsen willst, und Du eigentlich was
> anderes benutzt.
Kannst Du das mit dem durchgehend Murks bitte näher erläutern? Oder wäre 
der nachfolgende code weniger Murks?
1
////---------------------------------------------------------------------------------------------------------
2
//    LTTO set up
3
4
#define EI_ARDUINO_INTERRUPTED_PIN                      //  This tells the ISR routine which was the last Pin that changed
5
#include <EnableInterrupt.h>                            //  This is required for the LTTO libary to work.  https://github.com/GreyGnome/EnableInterrupt
6
#include <LTTO.h>                                       //  This is the LTTO library
7
8
LTTO ltto;                                              //  This creates an instance of the LTTO object, called ltto
9
10
////---------------------------------------------------------------------------------------------------------
11
//    Define variables
12
13
const int buttonPin = 2;                                // the number of the pushbutton pin
14
bool buttonState = 0;                                   // variable for reading the pushbutton status
15
byte teamID = 2;                                        // Create a variable called teamID, set to 1,2,3 for hosted games
16
byte playerID = 4;                                      // Create a variable called playerID, set the player # to a value between 1 and 8
17
byte shotStrength = 4;                                  // Create a variable called shotStrenght, set the value to 1,2,3,4 (1 = no-Mega)
18
19
void setup() {
20
  Serial.begin(115200);
21
  pinMode(13, OUTPUT); // Pin 13 for modulation
22
  pinMode(11, OUTPUT); // Pin 11 for 38kHz transmission
23
}
24
25
void loop() {
26
  // Here goes the code for pressing the button
27
  // ...
28
29
  // If the button is pressed, send the LTTO signal
30
  if (buttonState == HIGH) {
31
    // Ensure 38kHz transmission
32
    digitalWrite(11, HIGH);
33
    delayMicroseconds(13); // Adjust this time according to your LED and LTTO signal
34
35
    // Modulate LTTO signal
36
    ltto.sendTag(teamID, playerID, shotStrength);
37
38
    // End transmission
39
    digitalWrite(11, LOW);
40
    delay(200); // Short delay for debouncing
41
  }
42
}

Aber vielen Dank für Deine Hilfe!!!

: Bearbeitet durch User
von Rahul D. (rahul)


Lesenswert?

Dirk schrieb:
> Ich habe jetzt die Hardware für diese Schaltung bestellt und werde diese
> dann aufbauen.

Digitalsignale mit einem OPV "mischen"?
Ganz mein Humor.

Für sowas gibt es Logikgatter (oder man realisiert es in Software; 
Gatter ist aber einfacher).

Dann muss man nur noch das Signal (per Transistor) verstärken.
Jede Infrarot-Fernbedienung arbeitet nach dem Prinzip.
Manchmal sind da schon auf die Aufgabe optimierte Chips drin.

PS: Wo steckt in "light amplification by stimulated emission of 
radiation" ein "z"? Oder ist das wieder so eine tolle 
Marketingwortkration?

von Dirk (speedo2024)


Lesenswert?

Rahul D. schrieb:
> Dirk schrieb:
>> Ich habe jetzt die Hardware für diese Schaltung bestellt und werde diese
>> dann aufbauen.
>
> Digitalsignale mit einem OPV "mischen"?
> Ganz mein Humor.
>
> Für sowas gibt es Logikgatter (oder man realisiert es in Software;
> Gatter ist aber einfacher).
>
> Dann muss man nur noch das Signal (per Transistor) verstärken.
> Jede Infrarot-Fernbedienung arbeitet nach dem Prinzip.
> Manchmal sind da schon auf die Aufgabe optimierte Chips drin.
>

Wenn das so einfach ist, wo ist das Schaltbild?

> PS: Wo steckt in "light amplification by stimulated emission of
> radiation" ein "z"? Oder ist das wieder so eine tolle
> Marketingwortkration?

Wer?

von Rahul D. (rahul)


Lesenswert?

Dirk schrieb:
> Wenn das so einfach ist, wo ist das Schaltbild?

Findet man sogar hier im Forum.
Bin ich deine Mutter?
Es heißt doch immer, dass die Jugend die besser Medienkompetenz besitzt.

von Dirk (speedo2024)


Lesenswert?

Rahul D. schrieb:
> Dirk schrieb:
>> Wenn das so einfach ist, wo ist das Schaltbild?
>
> Findet man sogar hier im Forum.
> Bin ich deine Mutter?
> Es heißt doch immer, dass die Jugend die besser Medienkompetenz besitzt.

Wenn Du meine Mutter wärst, müsstest Du biologisch gesehen mindestens 
71/72 sein! ;-) Das glaube ich eher weniger, weil in diesem Alter hat 
man vor seinen Mitmenschen mehr Respekt.

von Rahul D. (rahul)


Lesenswert?

Dirk schrieb:
> Das glaube ich eher weniger, weil in diesem Alter hat
> man vor seinen Mitmenschen mehr Respekt.

Das glaubst auch nur du.
Du klingst wie ein Pubertier ("Mensch" Mitte 10er Jahresdekade).
Wenn man nicht mal rausfinden kann, wie eine Infrarot-Fernbedienung 
funktioniert, hat man sich mit dem Projekt vermutlich etwas übernommen.

Hier im Forum ging es schon relativ oft um Datenübertragung per 
Infrarot.
Dazu sollten sich genug Schaltungsbeispiele finden lassen.

von Dirk (speedo2024)


Lesenswert?

Rahul D. schrieb:
> Dirk schrieb:
>> Das glaube ich eher weniger, weil in diesem Alter hat
>> man vor seinen Mitmenschen mehr Respekt.
>
> Das glaubst auch nur du.
> Du klingst wie ein Pubertier ("Mensch" Mitte 10er Jahresdekade).
> Wenn man nicht mal rausfinden kann, wie eine Infrarot-Fernbedienung
> funktioniert, hat man sich mit dem Projekt vermutlich etwas übernommen.
>

Wenn ich mich nicht übernommen hätte, hätte ich mich hier vermutlich 
niemals angemeldet! Eigentlich sollte ein Forum helfen und für mich wäre 
da auch der Wissensstand des Fragenden egal. Aber es ist leider wie in 
jedem Forum, es gibt solche und solche.

> Hier im Forum ging es schon relativ oft um Datenübertragung per
> Infrarot.
> Dazu sollten sich genug Schaltungsbeispiele finden lassen.

Sowohl nach Logikgatter und auch danach habe ich schon gesucht, aber 
leider nichts passendes gefunden.

von Rahul D. (rahul)


Lesenswert?

Dirk schrieb:
> Sowohl nach Logikgatter und auch danach habe ich schon gesucht, aber
> leider nichts passendes gefunden.

Mit "+übertragung ir infra*" als Suchbegriff werden 358 Threads 
gefunden.
Da sollte was dabei sein (ich gucke die jetzt nicht alle durch; das 
darfst du gerne machen).

von Dirk (speedo2024)


Lesenswert?

Rahul D. schrieb:
> Dirk schrieb:
>> Sowohl nach Logikgatter und auch danach habe ich schon gesucht, aber
>> leider nichts passendes gefunden.
>
> Mit "+übertragung ir infra*" als Suchbegriff werden 358 Threads
> gefunden.
> Da sollte was dabei sein (ich gucke die jetzt nicht alle durch; das
> darfst du gerne machen).

Danke für den Hinweis mit diesem Suchbegriff. Bin jetz auch erstmal 
fündig geworden und versuche es mit einer Konstantstromquelle für LEDs 
die ich mit dem Arduino ansteuern kann. Das ist für mich als Laie die 
sinnvollste Art die LED anzusteuern. Warum das Rad neu erfinden.

https://www.led-genial.de/Konstantstromquelle-fuer-LEDs-8-32V-IN-0-30V-OUT-700-1000mA

von Chris V. (nagut)


Lesenswert?

Dirk schrieb:
>> Und bitte mach Dich nochmal schlau zum Puls-Pausenverhältnis des
>> Sendesignals! Siehe z.B. die ersten zwei Sätze unter "Timing und
>> Bitcodierung" von hier:
>> https://www.opendcc.de/info/rc5/rc5.html
>> Je höher Du den Strom durch die IR-Diode treiben willst, desto kleiner
>> muss das Puls-Pausenverhältnis sein, damit die Diode das überlebt. Du
>> brauchst noch ein deutlich kleineres Verhältnis als die dort erwähnten
>> 1:3. Alles, was Du bisher hier gezeigt hast, legte den Schluss nahe,
>> dass Du 1:1 benutzt.
>>
> Die angehägte Bilddatei zeigt ein Datenpaket.

Die Bilddatei zeigt genau das NICHT, um was ich Dich bat. Sie zeigt 
dagegen, wie man das 38kHz-Signal modulieren muss, um (vermutlich) 
kompatibel mit anderer Lasertag-Hardware zu sein. Das scheint Dir 
halbwegs klar zu sein.

Mir geht es darum, wie es aussieht, wenn man ganz nah in so einen 
"38KHz-Burst" hineinzoomt, um dann einzelne Pulse der LED zu sehen. Ich 
weiß aber langsam nicht mehr, wie ich es noch anders hinschreiben soll. 
Ich dachte, der Link zur RC5-Signalbeschreibung zeigt es inkl. Bildern 
anschaulich. Hast Du Dir das mal angeschaut? Und Dir überlegt, was 
dieses seltsame "1:3" in dem Text da bedeuten soll?

von Dirk (speedo2024)


Angehängte Dateien:

Lesenswert?

Chris V. schrieb:
> Dirk schrieb:
>>> Und bitte mach Dich nochmal schlau zum Puls-Pausenverhältnis des
>>> Sendesignals! Siehe z.B. die ersten zwei Sätze unter "Timing und
>>> Bitcodierung" von hier:
>>> https://www.opendcc.de/info/rc5/rc5.html
>>> Je höher Du den Strom durch die IR-Diode treiben willst, desto kleiner
>>> muss das Puls-Pausenverhältnis sein, damit die Diode das überlebt. Du
>>> brauchst noch ein deutlich kleineres Verhältnis als die dort erwähnten
>>> 1:3. Alles, was Du bisher hier gezeigt hast, legte den Schluss nahe,
>>> dass Du 1:1 benutzt.
>>>
>> Die angehägte Bilddatei zeigt ein Datenpaket.
>
> Die Bilddatei zeigt genau das NICHT, um was ich Dich bat. Sie zeigt
> dagegen, wie man das 38kHz-Signal modulieren muss, um (vermutlich)
> kompatibel mit anderer Lasertag-Hardware zu sein. Das scheint Dir
> halbwegs klar zu sein.
>
> Mir geht es darum, wie es aussieht, wenn man ganz nah in so einen
> "38KHz-Burst" hineinzoomt, um dann einzelne Pulse der LED zu sehen. Ich
> weiß aber langsam nicht mehr, wie ich es noch anders hinschreiben soll.
> Ich dachte, der Link zur RC5-Signalbeschreibung zeigt es inkl. Bildern
> anschaulich. Hast Du Dir das mal angeschaut? Und Dir überlegt, was
> dieses seltsame "1:3" in dem Text da bedeuten soll?

Hilft folgendes weiter? Weil ich habe leider nichts anderes 
hineinzoomendes gefunden. Ich suche aber weiter, ob ich was finde.

Carrier Frequency - The LTTO's IR carrier frequency is 38KHz, whereas 
the MilesTag carrier is 40KHz.  The MilesTag system can generate a 38KHz 
carrier when it is in LTTO mode.  Though I did not have to change out 
the 40KHz TSOP receivers on the MilesTag systems since the 38KHz signals 
are close enough that everything works perfectly as it is.  (It will 
work the other way around too; you can use the 38KHz TSOPs in MilesTag 
mode.)

Signal Format - The shot signal transmitted by the LTTO system consists 
of a "preamble" followed by a series of "data bits".  So far, all of the 
"shot" signals I have tested use the same preamble; 3mS Carrier On / 6mS 
Carrier Off / 3mS carrier On (3/6/3).  Each of the shot signals also 
contain 7 data bits which are used a little differently depending on the 
type of game.

MegaTags - The MegaTag bits are basically the LTTO's version of Hit 
Points.  Some LTTO devices can transmit tags with values between 1 and 4 
tags, where the "normal" shot is 1 tag.  For MilesTag systems that are 
set to 100 Health Points, the LTTO tags should be probably be scaled so 
that each tag is worth 10 Hit Points.

: Bearbeitet durch User
von Chris V. (nagut)


Lesenswert?

Dirk schrieb:
> Hilft folgendes weiter?

...also MIR muss gar nichts helfen. ;)

Ich versuche Dir irgendwie nahezubringen, was das mit dem 
Puls-Pausenverhältnis sein soll und wie wichtig das für Dein Vorhaben 
ist. Du machst den Eindruck, als wäre Dir das erstens gar nicht klar, 
und magst Dir auch zweitens irgendwie kein Wissen dazu anlesen.

Unter dem oben angegebenen Link zum RC5-Code ist zu lesen:
> Die IR-Fernbedienung steuert die die IR-Sendediode mit einen
> 144kHz-Generator an. Die Sendepulse sind einen Takt (=6,9444 µs),
> die Pausen dazwischen 3 Takte (= 20,8332 µs). Gesamt ergibt das
> ein 36kHz Signal mit einem Puls-Pausenverhältnis von 1:3.

Ist das für Dich irgendwie verständlich? Du musst für Dein Vorhaben nun 
auf 38kHz kommen mit einem noch wesentlich kleineren 
Puls-Pausenverhältnis. Wie klein genau hängt davon ab, welche Sendediode 
Du benutzt und wie hoch Du den Strom durch diese Diode machen willst. Um 
Dir da etwas herauszusuchen, bei dem die Diode gerade so eben noch nicht 
kaputt geht, musst Du in ihr Datenblatt schauen.

: Bearbeitet durch User
von Dirk (speedo2024)


Lesenswert?

Chris V. schrieb:
> Dirk schrieb:
>> Hilft folgendes weiter?
>
> ...also MIR muss gar nichts helfen. ;)
>
> Ich versuche Dir irgendwie nahezubringen, was das mit dem
> Puls-Pausenverhältnis sein soll und wie wichtig das für Dein Vorhaben
> ist. Du machst den Eindruck, als wäre Dir das erstens gar nicht klar,
> und magst Dir auch zweitens irgendwie kein Wissen dazu anlesen.
>
Doch das ist mir klar. Die LED verträgt nur die 1A wenn diese gepulst 
wird, ansonsten verabschiedet sich diese.

> Unter dem oben angegebenen Link zum RC5-Code ist zu lesen:
>> Die IR-Fernbedienung steuert die die IR-Sendediode mit einen
>> 144kHz-Generator an. Die Sendepulse sind einen Takt (=6,9444 µs),
>> die Pausen dazwischen 3 Takte (= 20,8332 µs). Gesamt ergibt das
>> ein 36kHz Signal mit einem Puls-Pausenverhältnis von 1:3.
>
> Ist das für Dich irgendwie verständlich? Du musst für Dein Vorhaben nun
> auf 38kHz kommen mit einem noch wesentlich kleineren
> Puls-Pausenverhältnis. Wie klein genau hängt davon ab, welche Sendediode
> Du benutzt und wie hoch Du den Strom durch diese Diode machen willst. Um
> Dir da etwas herauszusuchen, bei dem die Diode gerade so eben noch nicht
> kaputt geht, musst Du in ihr Datenblatt schauen.
>

Ich habe mir ein gebrauchtes Oszilloskop gekauft, auf diese Weise möchte 
ich die Pulsbreite des PWM-Signals auf dem Oszilloskop überprüfen und 
sicherstellen, dass sie den gewünschten Wert von 100 μs entspricht.

Die TSAL6100 hat eine Forward Voltage von 2.2 V bis maximal 3.0V mit I F 
= 1 A, bei t p = 100 μs.

von Chris V. (nagut)


Lesenswert?

Dirk schrieb:
> Chris V. schrieb:
>> Ich versuche Dir irgendwie nahezubringen, was das mit dem
>> Puls-Pausenverhältnis sein soll und wie wichtig das für Dein Vorhaben
>> ist. Du machst den Eindruck, als wäre Dir das erstens gar nicht klar,
>> und magst Dir auch zweitens irgendwie kein Wissen dazu anlesen.
>>
> Doch das ist mir klar. Die LED verträgt nur die 1A wenn diese gepulst
> wird, ansonsten verabschiedet sich diese.

Das klingt erfreulich! Und richtig: von "gepulst" schreibst Du auch 
schon von Beginn an. Dann möchte ich meinen Satz umformulieren: Ich 
glaube, Dir ist noch nicht ganz klar, wie dieses Pulsen im Detail 
aussehen muss.



> Ich habe mir ein gebrauchtes Oszilloskop gekauft, auf diese Weise möchte
> ich die Pulsbreite des PWM-Signals auf dem Oszilloskop überprüfen

Uii! Ich bin ehrlich beeindruckt! Und auch ein wenig erleichtert, weil 
es damit sehr viel einfacher wird, die Schaltung mit dem LM2904 
Schrittweise in Betrieb zu nehmen.


> und sicherstellen, dass sie den gewünschten Wert von 100 μs
> entspricht.
>
> Die TSAL6100 hat eine Forward Voltage von 2.2 V bis maximal 3.0V mit I F
> = 1 A, bei t p = 100 μs.

Sehr schön. Die 100µs tauchen in dem Zusammenhang mehrfach im Datenblatt 
auf. Leider hast Du bei all dem aber anscheinend aus den Augen verloren, 
dass Du ja eigentlich eine Frequenz von 38kHz erzeugen möchtest. Magst 
Du nochmal überdenken, ob der gewünschte Wert der Pulslänge dann 
wirklich 100µs sein sollte?

von Rahul D. (rahul)


Lesenswert?

Dirk schrieb:
> Danke für den Hinweis mit diesem Suchbegriff. Bin jetz auch erstmal
> fündig geworden und versuche es mit einer Konstantstromquelle für LEDs
> die ich mit dem Arduino ansteuern kann. Das ist für mich als Laie die
> sinnvollste Art die LED anzusteuern. Warum das Rad neu erfinden.

ja, für eine dauerhaft leuchtende LED.
Für "blinkende" LEDs sind solche Schaltungen viel zu langsam, da es sich 
dabei um einen Regelkreis handelt.

Du brauchst eine Strombegrenzung, die darauf ausgelegt ist, dass bei 
einem Maximalstrom und einer maximalen Einschaltdauer die LED nicht die 
Biege macht.

100µs lang erträgt deine LED 1A ("Pusldauer"). Dann braucht sie eine 
Pause zum Abkühlen.
Wenn man jetzt eine Frequenz von 38kHz in die Periodendauer umrechnet, 
kann man durch eine simple Subtraktion diese Pausendauer ausrechnen.
Die sollte dann zu den LED-Eigenschaften passen.

Eine Periode setzt sich aus Pulsdauer und Pausendauer zusammen.
Das Verhältnis aus beiden ergbit den Tastgrad (wieder ein 
Fach-/Suchbegriff... ).

Deine Frequenz muss also einen asymetrischen Tastgrad haben...

von Dirk (speedo2024)


Lesenswert?

Rahul D. schrieb:
> Dirk schrieb:
>> Danke für den Hinweis mit diesem Suchbegriff. Bin jetz auch erstmal
>> fündig geworden und versuche es mit einer Konstantstromquelle für LEDs
>> die ich mit dem Arduino ansteuern kann. Das ist für mich als Laie die
>> sinnvollste Art die LED anzusteuern. Warum das Rad neu erfinden.
>
> ja, für eine dauerhaft leuchtende LED.
> Für "blinkende" LEDs sind solche Schaltungen viel zu langsam, da es sich
> dabei um einen Regelkreis handelt.
>

Schade! Das wäre ja auch zu einfach gewesen.

> Du brauchst eine Strombegrenzung, die darauf ausgelegt ist, dass bei
> einem Maximalstrom und einer maximalen Einschaltdauer die LED nicht die
> Biege macht.
>
> 100µs lang erträgt deine LED 1A ("Pusldauer"). Dann braucht sie eine
> Pause zum Abkühlen.
> Wenn man jetzt eine Frequenz von 38kHz in die Periodendauer umrechnet,
> kann man durch eine simple Subtraktion diese Pausendauer ausrechnen.
> Die sollte dann zu den LED-Eigenschaften passen.
>
> Eine Periode setzt sich aus Pulsdauer und Pausendauer zusammen.
> Das Verhältnis aus beiden ergbit den Tastgrad (wieder ein
> Fach-/Suchbegriff... ).
>
> Deine Frequenz muss also einen asymetrischen Tastgrad haben...

Das ist genau das, was Chris V. versucht mir zu erklären. Heißt 
eigentlich für mich, ich muß den Code unbedingt so programmieren das die 
LED genügend Pausendauer hat. Die obigen Code's funktonieren zwar, aber 
mit anderen Hardware Voraussetzungen. Ich baue jetzt erstmal die obige 
Schaltung auf und versuche mich dann mit dem Oszilloskop an das 
entsprechende Endergebnis ran zu tasten. Das habe ich mir wahrlich viel 
einfacher vorgestellt! Wird leider auch in dem Las(zer)-Tag-Forum so 
suggeriert. Das war auch der Grund warum ich mich dann hier angemeldet 
habe.

von Marcel V. (mavin)


Lesenswert?

Bei einer Trägerfrequenz von 38kHz beträgt die Periodendauer sowieso nur 
26us. Selbst bei einem Tastgrad von 1 zu 1 beträgt die Pulsdauer somit 
nur 13us.

Hinzu kommt noch das amplitudenmodulierte digitale Modulationssignal, 
welches aller Wahrscheinlichkeit nach nicht nur aus einer 
Anananderreihung von einer endlosen Reihe aus Einsen besteht. Da werden 
mit Sicherheit auch Nullen übertragen! Und die Sendepausen kommen auch 
noch dazu.

Da bleibt also noch genug Abkühlungszeit für die IR-LED übrig.

von Dirk (speedo2024)


Lesenswert?

Marcel V. schrieb:
> Bei einer Trägerfrequenz von 38kHz beträgt die Periodendauer sowieso nur
> 26us. Selbst bei einem Tastgrad von 1 zu 1 beträgt die Pulsdauer somit
> nur 13us.
>
> Hinzu kommt noch das amplitudenmodulierte digitale Modulationssignal,
> welches aller Wahrscheinlichkeit nach nicht nur aus einer
> Anananderreihung von einer endlosen Reihe aus Einsen besteht. Da werden
> mit Sicherheit auch Nullen übertragen! Und die Sendepausen kommen auch
> noch dazu.
>
> Da bleibt also noch genug Abkühlungszeit für die IR-LED übrig.

Heißt also für mich als Laien, die Pausen sind vollkommen ausreichend?
Also ist der Code in Ordnung und nur die Hardware muss entsprechend 
angepasst werden, damit die LED am Maximum betrieben wird?
Dann sind die Empfehlungen aus dem Las(z)er Forum doch nicht so 
verkehrt.
Danke!

von Chris V. (nagut)


Lesenswert?

Dirk schrieb:
> Heißt
> eigentlich für mich, ich muß den Code unbedingt so programmieren das die
> LED genügend Pausendauer hat.

Klingt gut! :)
Die Länge eines einzelnen Pulses und die Länge der Pause zwischen den 
Pulsen könntest Du auch schon ausrechnen. Dafür lohnt es sich, Fig. 3 
aus dem Datenblatt der TSAL6100 genauer anzuschauen.


> Ich baue jetzt erstmal die obige
> Schaltung auf und versuche mich dann mit dem Oszilloskop an das
> entsprechende Endergebnis ran zu tasten.

Guter Plan. Wenn Du für diese Versuche die IR-LED erstmal durch einen 
dicken Widerstand mit ca. 2 Ohm ersetzt, kannst Du auch erstmal 
gefahrlos invertierte Signale, zu lange Impulszeiten etc. anlegen. Erst 
wenn das Oszilloskop das zeigt, was Du haben willst, den dicken 
Widerstand wieder gegen die LED tauschen.


Dirk schrieb:
>Marcel V. schrieb:
>> (...)
>> Da bleibt also noch genug Abkühlungszeit für die IR-LED übrig.
>
> Heißt also für mich als Laien, die Pausen sind vollkommen
> ausreichend? Also ist der Code in Ordnung und nur die
> Hardware muss entsprechend angepasst werden, damit die
> LED am Maximum betrieben wird?

Nein. Marcel hat offenbar auch nicht sorgfältig genug ins Datenblatt 
geschaut, oder hier im Thread nicht alles relevante dazu gelesen. 
Zumindest, wenn Du ihn jetzt so verstanden hast wie er es auch gemeint 
hat.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.