Forum: Mikrocontroller und Digitale Elektronik TSOP4838 am Attiny24a


von chuckwalla (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich versuche mich gerade in die Materie IR-Empfänger und Sender rein zu 
fuchsen.

Im Anhang findet Ihr meine Schaltung und ein Bild meines Problems.
Bevor ich jetzt gleich Schimpfe bekomme, die Symbole sind nicht korrekt 
gezeichnet. Aber das wichtigste ist denk ich vorhanden.

Wenn ich den Pin des µC ablöte funktioniert der Empfänger ohne Probleme.

Mein Ziel ist erst mal bei Betätigung einer Fernbedienung eine LED 
einzuschalten.

Hier den Code dazu:
1
/*
2
 *
3
 * Created: 16.04.2017 20:41:08
4
 * Author : Jürgen
5
 */
6
7
#include <avr/io.h>
8
9
10
int main(void)
11
{
12
    /* Replace with your application code */
13
    DDRB |= (1 << DDB0); //LED
14
    DDRB &= ~(1 << DDB2); //Empfänger
15
16
17
    while (1)
18
    {
19
          if ( !(PINB & (1<<PINB2)) ) //Pin auf 0 ?
20
          {
21
               PORTB &= ~(1 << PB0); //an
22
          }
23
     }
24
}

Wenn ich richtig gelesen habe, brauch ich einen 4,7µF. Hab ich aber 
leider nicht. was ich noch hier hätte ist ein 2,2µF.
Muss ich dann den R anpassen? Wie? Oder liegt es gar nicht am Tiefpass?

Danke für die Hilfe.

von chuckwalla (Gast)


Lesenswert?

Die aps-Datei hat sich gerade reingeschmugelt und gehört nicht zum 
Thema.
Gruß,
Jürgen

von holger (Gast)


Lesenswert?

>               PORTB &= ~(1 << PB0); //an

Das ist AUS.

von chuckwalla (Gast)


Lesenswert?

Hast recht.
Habs geändert in:
1
PORTB |= (1 << PB0); //an

Geht denoch nicht.
Logisch, die Störung ist dadurch ja immer noch auf dem Eingang.

von hirsch (Gast)


Lesenswert?

chuckwalla schrieb:
> Im Anhang findet Ihr meine Schaltung und ein Bild meines Problems.

Wenn die Nummern im ATtiny24 die Pinnummern des Tiny darstellen sollen, 
ist das Ding total verkorkst beschaltet. Pin 8 ist pa5 und nicht GND 
usw.

von chuckwalla (Gast)


Angehängte Dateien:

Lesenswert?

Richtig, das sollen die Pins darstellen.
Die Zeichnung war falsch. GND ist an Pin 14 angeschloßen.

Danke für den Hinweis.

von hirsch (Gast)


Lesenswert?

chuckwalla schrieb:
> Wenn ich den Pin des µC ablöte funktioniert der Empfänger ohne Probleme.

Bemühe dich genau zu bezeichnen welchen Pin du meinst. Man kann nur 
vermuten, daß du PB2 meinst.

> Wenn ich richtig gelesen habe, brauch ich einen 4,7µF. Hab ich aber
> leider nicht. was ich noch hier hätte ist ein 2,2µF.
> Muss ich dann den R anpassen? Wie? Oder liegt es gar nicht am Tiefpass?

Die Werte sind unkritisch und sollen nur die Betriebsspannung des TSOP 
glätten. Daran liegt es nicht.

Vielleicht hast du Anschlußpins vertauscht. Oder beim Löten irgendwo 
einen Kurzschluß fabriziert. Vielleicht ist die USB Spannung nicht gut 
oder liefert zu wenig Strom.

...

von Matthias S. (Firma: matzetronics) (mschoeldgen)


Lesenswert?

Zu Gunsten des TE nehme ich mal an, das er die Spannung vom 'USB' schon 
gefiltert hat und auch die Abblockung des Tiny mit 100nF zwischen VCC 
und GND nicht vergessen hat. Es lohnt sich evtl. noch, den Pullup am IR 
Eingang zu aktivieren.
Und ja, es ist normal, das ein inaktiver IR Empfänger am Ausgang 
Störungen produziert, da die interne AGC den Vorverstärker aufreisst. 
Die Aufgabe, diese Störungen zu ignorieren und nur auf gültige Codes zu 
reagieren, obliegt dem auswertenden Dekoder. Aber zum Glück gibts ja 
IRMP :-)
https://www.mikrocontroller.net/articles/IRMP

von chuckwalla (Gast)


Lesenswert?

Matthias S. schrieb:
> 100nF zwischen VCC
> und GND

Wurde natürlich eingelötet ;-)

Matthias S. schrieb:
> Es lohnt sich evtl. noch, den Pullup am IR
> Eingang zu aktivieren.

Ist mit folgender Zeile nachgeholt:
1
DDRB |= (1 << DDB0); //LED
2
DDRB &= ~(1 << DDB2); //Empfänger
3
PORTB |= (1 << PB2); //Pull-Up

hirsch schrieb:
> Bemühe dich genau zu bezeichnen welchen Pin du meinst. Man kann nur
> vermuten, daß du PB2 meinst.

Ist soweit richtig. Der Ausgang des IR hängt am PB2.

hirsch schrieb:
> Vielleicht ist die USB Spannung nicht gut
> oder liefert zu wenig Strom.

Habs jetzt mit drei Spannungsquellen versucht. Eine davon war eine neue 
4,5V Batterie.

Noch ne Idee?

von Klaus R. (klaus2)


Lesenswert?

Passiert denn was wenn du PB2 manuell auf low ziehst? Auch ich rate zu 
irmp, denn bis zur codeauswertung wirds ein langer weg für dich...

Klaus.

von Wolfgang (Gast)


Lesenswert?

chuckwalla schrieb:
> Logisch, die Störung ist dadurch ja immer noch auf dem Eingang.

Was du als "Störung" bezeichnest, ist das Rauschen der Welt. Ohne ein 
IR-Signal von der Fernbedienung, erscheint das prinzipbedingt am Ausgang 
deines TSOP4838. Solange er nichts besseres (IR-Signal von der 
Fernbedienung) findet, reißt der mit seiner AGC die Verstärkung auf, so 
weit er kann.

Anders sähe das mit einem TSOP4038 aus, der keine AGC besitzt. Für eine 
Fernbedienung will man die i.A. aber gerne haben, damit der Empfänger 
gut mit unterschiedlich starken Signalen zurecht kommt.

von chuckwalla (Gast)


Lesenswert?

Klaus R. schrieb:
> Passiert denn was wenn du PB2 manuell auf low ziehst?

Die LED geht an.

Wolfgang schrieb:
> Solange er nichts besseres (IR-Signal von der
> Fernbedienung) findet, reißt der mit seiner AGC die Verstärkung auf, so
> weit er kann.

Macht er das dann nur, wenn was am Ausgang hängt oder wieso sind die 
"Störungen" weg wenn ich den Kontroller vom Ausgang des IR löse und mit 
dem Osci direkt am Ausgang messe?

von Klaus R. (klaus2)


Lesenswert?

Weil der pullup fehlt?

Klaus.

von Wolfgang (Gast)


Lesenswert?

Klaus R. schrieb:
> Weil der pullup fehlt?

Zumindest bei einem TSOP4838 von Vishay sollte das schwer fallen. Wenn 
das Datenblatt recht hat, ist dort ein Pullup von 33kΩ fest eingebaut.

von chuckwalla (Gast)


Lesenswert?

Hi,

hab etwas rumgespielt.
Der µC hat mich verarscht. Ich hab immer nur am Empfänger mit dem Osci 
gemessen. Ausgang vom Empfänger am Controller angelötet -> Wildes Zeug 
am Ausgang des Empfängers. Ausgang weg -> Störung weg am Ausgang des 
Empfängers.
Jetzt hab ich am Ausgang des µC gemessen ohne das was angelötet ist, 
siehe da, das wilde Zeug ist schon ohne was am Eingang zu messen.

wenn ich das folgende Programm laufen lass, blinkt die LED wenn ich Pin 
PB2 auf GND lege. Die Störungen sind aber am PB0 zu messen.
1
/*
2
 *
3
 * Created: 16.04.2017 20:41:08
4
 * Author : Jürgen
5
 */
6
7
#include <avr/io.h>
8
#include "util/delay.h"
9
10
11
int main(void)
12
{
13
    /* Replace with your application code */
14
    DDRB |= (1 << DDB0); //LED
15
    DDRB &= ~(1 << DDB2); //Empfänger
16
    PORTB |= (1 << PB2); //Pul-up
17
18
    while (1)
19
    {
20
        if ( !(PINB & (1<<PINB2)) ) //Pin auf 0
21
        {
22
            PORTB |= (1 << PB0); //auf 1 LED aus
23
            _delay_ms(500);
24
            _delay_ms(500);
25
            _delay_ms(500);
26
            _delay_ms(500);
27
            _delay_ms(500);
28
            PORTB &= ~(1 << PB0); //auf 0 LED an
29
            _delay_ms(500);
30
            _delay_ms(500);
31
32
        }
33
        else
34
        {PORTB |= (1 << PB0);} //auf 1 LED aus
35
    }
36
}

Wie geht das wenn ich den Pull-Up aktiviert habe?

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.