38Khz mit Nano erzeugen

moin,

Ich habe die angefügte IR-Schaltung gebaut (jedoch mit einem TL1838).

Hier noch der Code dazu:

/*

    38 kHz pulse driver for IR transmitter

*/

#define PULSEOUT 10        // OCR1B, must be an OCRxy pin
#define PULSE 80
#define PERIOD 420
#define PULSE_ON TCCR1A = 0b00100010;
#define PULSE_OFF TCCR1A = 0b00000010;

void setup() {

    pinMode(PULSEOUT, OUTPUT);

    /*  
        manual timer 1 setup for OC1B 
        timer mode 14, fast PWM, ICP = TOP
        prescaler 1        
    */
    TCCR1A = 0b00000010;
    TCCR1B = 0b00011001;
    OCR1B  = PULSE;
    ICR1   = PERIOD;    

    PULSE_ON
}

void loop() {
    PULSE_ON
    _delay_ms(500);
    PULSE_OFF
    _delay_ms(500);
}

Habe jedoch die IR-Led direkt am Nano angeschlossen da ich gerade keinen Transistor zur Hand habe.
Das läuft auch soweit gut die LED am TL1838 blinkt schön vor sich hin. Ich möchte die Schaltung als Lichtschranke nehmen und habe dafür im loop den delay rausgenommen und nur "PULSE_ON" drin gelassen. Das klappt aber nicht so ganz. Die LED am Empfänger geht für ca. 1 Sekunde an und dann wieder aus. unterbreche ich die Lichtschranke geht sie wieder für ca. 1 Sekunde an dann wieder aus (Bleibt aus bis ich die LS wieder unterbreche). So ganz blick ich nicht durch den Code. Ist es nicht möglich damit ein dauerhaftes 38 Khz Signal zu erzeugen ?

Gruß Dani

mrmeeseeks:
Ich habe die angefügte IR-Schaltung gebaut ...

Da fehlt IMO noch ein Basiswiderstand. Wie kommst Du auf die 22 Ohm von R1?

Gruß

Gregor

gregorss:
Da fehlt IMO noch ein Basiswiderstand. Wie kommst Du auf die 22 Ohm von R1?

Die Schaltung ist nicht von mir Ich hab 100 Ohm ausgerechnet und auch genommen

Mfg

In der Schaltung braucht es keinen Basiswiderstand - der würde nur stören. Der Transistor funktioniert als Stromquelle. Solange Vin groß genug ist ( > 5V+Flußspannung der IR-LED ) ist der Strom unabhängig von Vin. Bei 5V Ausgangsspannung am Arduino und den angegebenen 22Ohm sind das ca. 195mA ( 4,3V/22Ohm ) . Bei höherem Vin muss der Transister aber die Verlustleistung abkönnen. Sollte aber ja nur ein gepulster Strom sein.

Ich habe mir jetzt Deinen Code nicht wirklich angeschaut, aber im Datenblatt des TSSP4038 steht

Uses modulated bursts of infrared light

Mit Dauerfeuer wird das vermutlich nix, lies mal was im DB noch zum Burst steht (da hab ich jetzt keine Lust drauf :smiling_imp: )

Hallo,

also Dauerfeuer sollte wirklich nicht gehen, so verstehe ich auch das Datenblatt. Man muss wohl immer eine Takt-Salve abfeuern, Pause, nächste Takt-Salve. Die Taktsalven müssen eine Trägerfrequenz von 38kHz haben. Diese kannste dir mit einem Timer bauen. Damit das richtig wird bitte das als Grundlage genau lesen.
https://forum.arduino.cc/index.php?topic=519208.msg3538992#msg3538992
Wenn verstanden kannste mit Hilfe des µC Manuals alle Timermodi programmieren.

Wenn ich weiter überlege, sollte der CTC Mode ausreichend sein, damit lässte den Pin vom Timer selbst toggeln, zählst in der Compare ISR die Anzahl der Pulse mit und steuerst damit in der ISR den Pin. Also nach x Pulsen das toggeln abschalten, nach weiteren x Pulsen Pause das toggeln wieder einschalten. Der Takt der Salven ist immer exakt und du steuerst die Salven. Soweit meine aktuelle Grundüberlegung dazu.