Forum: Mikrocontroller und Digitale Elektronik Infrarot Übertragung mit ATMega.


von Felix N. (felix_n888)


Lesenswert?

Hallo Leute,
Ich habe mal ne Frage und zwar wollte ich gerne ein neues Projekt 
starten. Da das Gerät später an der Decke hängen soll. Wollte ich keine 
Kabel Fernbedienung bauen. Sondern auf eine kabellose Übertragung 
setzten. Als erstes kam mir Infrarot in denn sinn. Ist der ATMega328P 
überhaupt in der Lage Infrarot Signal empfangen/verarbeiten zu können? 
Wenn ja kann man ja jede X-Beliebige IR LED und Transistor nutzen?
Kann mir da einer weiter helfen?
Mfg Felix.

von Falk B. (falk)


Lesenswert?

@ Felix Neumann (felix_n888)

>setzten. Als erstes kam mir Infrarot in denn sinn. Ist der ATMega328P
>überhaupt in der Lage Infrarot Signal empfangen/verarbeiten zu können?

Ja, problemlos.

IRMP

>Wenn ja kann man ja jede X-Beliebige IR LED und Transistor nutzen?

Das sollte man nicht tun. Nimm einen fertigen IR Empfänger mit 
Verstärker, Filter und Deodulator.

TSOP4836 & Co sind deine Freunde.

Beitrag "Re: Infrarot LED Lichtschranke"

von Felix N. (felix_n888)


Lesenswert?

Falk B. schrieb:
>>setzten. Als erstes kam mir Infrarot in denn sinn. Ist der ATMega328P
>>überhaupt in der Lage Infrarot Signal empfangen/verarbeiten zu können?
>
> Ja, problemlos.
>
> IRMP
>
>>Wenn ja kann man ja jede X-Beliebige IR LED und Transistor nutzen?
>
> Das sollte man nicht tun. Nimm einen fertigen IR Empfänger mit
> Verstärker, Filter und Deodulator.
>
> TSOP4836 & Co sind deine Freunde.
>
> Beitrag "Re: Infrarot LED Lichtschranke"

Hallo Falk. Ich habe mir dein Betrag durch gelesen. Wenn ich das richtig 
Verstehe hast du eine IR LED an ein 16 Bit PWM Timer(OCR1B) 
angeschlossen. Und sendest 500 ms ein Plus richtig? Aber was ist das 
ICR1? Habe ich zuvor nie gehört.
Zum IRMP Beitrag die Source Code Dateien kann ich nicht runterladen. 
Dort kommt nur "Ein interner Fehler ist aufgetreten."

von Falk B. (falk)


Lesenswert?

@  Felix Neumann (felix_n888)

>Hallo Falk. Ich habe mir dein Betrag durch gelesen. Wenn ich das richtig 
>Verstehe hast du eine IR LED an ein 16 Bit PWM Timer(OCR1B)
>angeschlossen. Und sendest 500 ms ein Plus richtig?

Ja.

>Aber was ist das ICR1? Habe ich zuvor nie gehört.

Das sit ein 16 Bit Rgister für die Input Capture Funktion. In dieses 
Timer Mode wird sie aber zur Definition der Periodendauer benutzt.

>Zum IRMP Beitrag die Source Code Dateien kann ich nicht runterladen.
>Dort kommt nur "Ein interner Fehler ist aufgetreten."

Das Forum hatte am Wochenende einen Servercrash, da dauert es noch ein 
wenig, bis alle Funktionen wieder laufen. Probiers in 1-2 Tagen noch 
einmal.

von Jo T. (Gast)


Lesenswert?

Zum IR-Empfänger würde ich auch zu den TSOPxx36 raten. Kann 2 Stück im 
Brief für 2 € schicken. Für ATtiny13 und 45 habe ich funktionierende 
Assembler-Lösungen.
Als Sender nehme ich eine Universal-Fernbedienung, weil es die mal für 2 
€ im Discounter gab. An einem eigenen Sender versuche ich mich dagegen 
seit Jahren vergeblich.

von Frank M. (ukw) (Moderator) Benutzerseite


Lesenswert?

Jo T. schrieb:
> An einem eigenen Sender versuche ich mich dagegen
> seit Jahren vergeblich.

Dafür gibt es IRSND, das passende Gegenstück zu IRMP. In beiden 
Artikeln sind auch Einfachstschaltungen für Sender und Empfänger am µC 
zu finden.

Felix N. schrieb:
> Zum IRMP Beitrag die Source Code Dateien kann ich nicht runterladen.
> Dort kommt nur "Ein interner Fehler ist aufgetreten."

Das SVN läuft hier nach dem Festplatten-Crash zwar noch nicht, aber 
unter Download im IRMP-Artikel findest Du ein fertiges Irmp.zip bzw. 
Irsnd.zip im IRSND-Artikel. Diese beiden beinhalten den kompletten 
Source inkl. Beispiele.

https://www.mikrocontroller.net/articles/IRMP#Download
https://www.mikrocontroller.net/articles/IRSND#Download

: Bearbeitet durch Moderator
von Felix N. (felix_n888)


Lesenswert?

Falk B. schrieb:
> @  Felix Neumann (felix_n888)
>
>>Hallo Falk. Ich habe mir dein Betrag durch gelesen. Wenn ich das richtig
>>Verstehe hast du eine IR LED an ein 16 Bit PWM Timer(OCR1B)
>>angeschlossen. Und sendest 500 ms ein Plus richtig?
>
> Ja.
>
>>Aber was ist das ICR1? Habe ich zuvor nie gehört.
>
> Das sit ein 16 Bit Rgister für die Input Capture Funktion. In dieses
> Timer Mode wird sie aber zur Definition der Periodendauer benutzt.
>
>>Zum IRMP Beitrag die Source Code Dateien kann ich nicht runterladen.
>>Dort kommt nur "Ein interner Fehler ist aufgetreten."
>
> Das Forum hatte am Wochenende einen Servercrash, da dauert es noch ein
> wenig, bis alle Funktionen wieder laufen. Probiers in 1-2 Tagen noch
> einmal.

Hallo nochmal,
A okay, deswegen konnte ich am Wochenende keine Atrikel Seiten aufrufen. 
Ich habe mir nun 1 IR-Transitor und 3 IR LEDs besorgt. Die du auch in 
deiner Schaltung benutzt hast(Vom Link).
Wenn ich das richtig verstehe nutzt du denn 16 Bit Timer aktiviert dort 
das Input Capture Interrupt Flag. Und sendest ein kurzen Puls wartes 
kurz und stoppt das wieder.

Beim Empfangen wird bei dir im Schaltplan ja nur eine LED eingeschaltet 
richtig? Also dieses leuchtet dann für 500 ms.

Wenn ich dort aber richtig "Befehle" senden möchte muss ich dann zb. für 
denn ON/OFF Befehl einfach nur eine andere Zeit nehmen wie 20ms und wenn 
ein andere CMD dann 25 ms?

Oder verstehe ich da was falsch?

Mfg Felix.

von Falk B. (falk)


Lesenswert?

@ Felix Neumann (felix_n888)

>Wenn ich das richtig verstehe nutzt du denn 16 Bit Timer aktiviert

Ja.

> dort das Input Capture Interrupt Flag.

Nein. Ich benutzte nur das ICR Register, um die Periodendauer von Timer 
1 festzulegen.

> Und sendest ein kurzen Puls wartes kurz und stoppt das wieder.

Nein, ich sende eine Pulsfolge, auch Burst genannt.

>Beim Empfangen wird bei dir im Schaltplan ja nur eine LED eingeschaltet
>richtig? Also dieses leuchtet dann für 500 ms.

Ja.

>Wenn ich dort aber richtig "Befehle" senden möchte muss ich dann zb. für
>denn ON/OFF Befehl einfach nur eine andere Zeit nehmen wie 20ms und wenn
>ein andere CMD dann 25 ms?

Ja. Aber denk dran, die Funktionen _delay_ms() und _delay_us() brauchen 
KONSTANTE Argumente, keine Variablen!

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.