Hallo Zusammen, ich hänge gerade an der Konzeption einer kleinen IR-Fernbedienung für meine Audio-Geräte. Ich benötige 4 Eingänge für die Tasten und einen Ausgang für die Ansteuerung einer IR-Sende Diode. Es würde also ein ATtiny45 ausreichen. Allerdings hänge ich gerade bei der Auswahl der IR-Sende Diode fest. Die im Artikel IRSND verwendete Diode SFH409-2 gibt es nicht mehr. Welche Diode kann ich alternativ in Verbindung mit TSOP31238 verwenden. Des Weiteren stellt sich mir die Frage, ob eine Sendediode ausreicht. Die Diode wird später hinter einer 3mm starken Acrylglas Abdeckung satiniert mit einer Lichtdurchlässigkeit von 70% liegen. Die Reichweite soll trotzdem noch bei ca. 3-4m liegen. Als Spannungsversorgung würde ich gerne eine Knopfzelle (CR2032)verwenden. Zur Not auch zwei parallel geschaltet um mehr Leistung zu haben. Nachgeschaltet einen StepUp Regel um konstante 3.3V zu bekommen. Da die Leistungsaufnahme stark von der verwendeten IR-Sendediode abhängen wird, benötige ich auch noch etwas Hilfe bei der Auswahl des richtigen StepUp Wandlers. Der Tiny soll solange die FB nicht benutzt wird, in den Schlafmodus gehen aber das ist noch ein anderes Thema. Gruß Frank
Frank L. schrieb: > Welche > Diode kann ich alternativ in Verbindung mit TSOP31238 verwenden. Jede die auf ca. 950nm emittiert. > Des Weiteren stellt sich mir die Frage, ob eine Sendediode ausreicht. Ausprobieren! Das hängt ja sehr vom Öffnungswinkel und sogar vom Raum ab. > Nachgeschaltet einen StepUp Regel um konstante 3.3V > zu bekommen. Das braucht keiner.
Mit einer LD271 und einem TSOP als Empfänger sollten ohne Reflektor immer mindestens 6-10m Reichweite drin sein, wenn du die Trägerfrequenz eingermassen einhältst. Die CR2032 kann 2 LD271 in Serie betreiben, einen Stepup brauchst du nicht. Allerdings solltest du einen Treibertransistor spendieren und per Vorwiderstand so um die 50-80mA Impulsstrom durch die LED schicken. In meiner Tiny FB nehme ich nur eine LED, reicht auch quer durchs Zimmer: Beitrag "Re: Quick&dirty - schnelle Problemlösungen selbst gebaut" Ruhestrom ist etwa 300nA, selbst eine CR2032 kann das einige Zeit. Vergiss den Reservoir Elko nicht, der liefert die Stromreserve für die IR Pulse anstatt der Batterie. Viele Kunststoffe lassen IR so gut wie nicht durch - musst du also erstmal testen.
:
Bearbeitet durch User
Hallo Matthias, hallo Hinz, danke für die Auskunft, ich habe mich für die SFH 4544 von Osram entschieden. @Matthias, was meinst Du mit Reservoir Elko einen Goldcap oder einen normalen kleinen Kondensator parallel zur Batterie? Gruß Frank
batman schrieb: > Irgendwas, das 200-500mA liefern kann, solange gesendet wird. Upps, warum so viel? Die SFH4544 veträgt max. 100mA und der Rest der Schaltung zieht so gut wie nix. Frank L. schrieb: > was meinst Du mit Reservoir Elko Einen Elko mit 47µF-220µF. Die Knopfzelle kann den Strom für die LED nur mühsam alleine liefern, der Elko puffert die Pulse ab und sorgt auch dafür, das der MC beim Senden nicht abschmiert wg. Spannungseinbrüchen.
:
Bearbeitet durch User
Der Elko sollte ja einen niedrigen Leckstrom haben. Muss man da noch etwas besonders gutes wie Tantal Elkos nehmen oder sind Alu Elkos mittlerweile auch alle so gut das man irgendwas nehmen kann? Und dann eher 16 V (oder noch mehr) als 10 V Typen?
Kannst ja mal den Leckstrom eines Elkos bei 3V messen. Das ist aber normalerweise unerheblich, wenn man da einigermassen anständige Elkos benutzt. Der grössere Spass ist der Ruhestrom des Controllers, wo es noch einige Fallstricke geben kann.
hinz schrieb: > Jede die auf ca. 950nm emittiert. Wenn sie 50nm daneben liegt, kostest das auch nur weniger als 10% der Reichweite
Frank L. schrieb: > Des Weiteren stellt sich mir die Frage, ob eine Sendediode ausreicht. > Die Diode wird später hinter einer 3mm starken Acrylglas Abdeckung > satiniert mit einer Lichtdurchlässigkeit von 70% liegen. Die Reichweite > soll trotzdem noch bei ca. 3-4m liegen. Hängt von empfangenden Gerät und Protokoll ab. Ich habe ein Sony Home Theater Gerät, das ist sehr mässig empfindlich und sogar mit der Original-FB muss ich direkt zielen, damit es überhaupt funktioniert. Wogegen ein Philips Protokoll (weiss nicht mehr welches) mit kurzen Bursts mit der richtigen Fernbedienung problemlos quer durch den Raum geht, selbst wenn ich in die gegensätzliche Richtung halte. Aber grundsätzlich halte ich satiniertes Acryl für keine gute Idee, das streut in alle Richtungen und neben den 30%, die es Dir direkt ausfiltert (wenn das für IR ebenso gilt und nicht noch mehr ist) nimmt es die Power aus dem gerichteten Strahl und es bleibt noch ein Bruchteil übrig. Ich würde sagen, das nimmt Dir mehr als weitere 50%.
Matthias S. schrieb: >> Irgendwas, das 200-500mA liefern kann, solange gesendet wird. > > Upps, warum so viel? Die SFH4544 veträgt max. 100mA und der Rest der > Schaltung zieht so gut wie nix. Oh nein, diese IR-Transmitter sind für den Pulsbetrieb spezifiziert vertragen dabei typischerweise bis zu 1A (s. Diagramm "Zul. Pulsbelastbarkeit"). D.h. im Batteriebetrieb gibt man schlicht alles drauf, was da ist und braucht dann nicht mehr als eine IR. Bei Elkos unter 470µF reicht oft schon der ESR als Begrenzung. Es geht auch mit 100mA Pulsstrom aber man verschenkt Zuverlässigkeit und Reichweite.
Matthias S. schrieb: > Kannst ja mal den Leckstrom eines Elkos bei 3V messen. ok, du hast Recht. Ich habe gerade mal an einem (hoffentlich guten) Panasonic low ESR 560 µF/35 V Elko gemessen. Bei 3 V gehts nach ca. 2 min. < 0,1 µA, weniger kann mein Messgerät nicht anzeigen. Und auch bei 10 V geht es nach ein paar Minuten auf 0,1 µA runter, jetzt bei 30 V bin ich gerade bei 2,0 µA, Tendenz immer noch fallend. Im Datenblatt die Werte sind höher, aber das gilt wohl für den ganzen Temperatur Bereich.
Johannes S. schrieb: > < 0,1 µA, weniger kann mein Messgerät nicht anzeigen. Da täuscht Du Dich. Schalte mal einen 1MOhm Widerstand parallel und schon hast Du im 200mV-Bereich einen Vollausschlag von 200nA! Gerade zur Messung von Leckströmen ist eine solche Hilfskonstruk- tion ideal.
Conny G. schrieb: > Aber grundsätzlich halte ich satiniertes Acryl für keine gute Idee, das > streut in alle Richtungen und neben den 30%, die es Dir direkt > ausfiltert (wenn das für IR ebenso gilt und nicht noch mehr ist) Da die IR-Wellenlänge größer als die des sichtbaren Lichtes ist, wird die Streuung bei IR wohl eher geringer sein.
Harald W. schrieb: > Da täuscht Du Dich. Die alten Analogtechniker :) Danke. Hab es mal probiert und bin jetzt bei 59 nA bei 3V.
> low ESR
Das koennte die IR-Diode nun wiederum uebelnehmen.
Oder ein Ohm davorschalten.
Oder einfach einen "normalen" Elko nehmen.
Die Diode wird ja nicht direkt an den Elko angeschlossen sondern über einen Schalttransistor. Und der Elko ist nur ein Puffer um die Batterie zu stützen.
Moin, Um es klar zu stellen: Die CR2032 macht bei >100mA nicht mehr viel sondern reisst nur noch die Hufe. Das muß komplett der Elko übernehmen. Eine saubere Lösung wäre eine komplette Trennung der Batterie von der Elektronik, die mit den Tasten überbrückt wird. Da gibt es dann praktisch gar keine Ruhe- oder Leckströme mehr. Gruß, Norbert
> sondern über einen Schalttransistor Ein IRLML6402, das waer mein Favorit zum Schalten der IR-Diode, hat ein Rds(on) von 0.065 Ohm. Und ein FET sollte es schon sein, um die LiO-Zelle bestmoeglich zu nutzen. Mit einer CR2032 und geschaetzten 1.6 V Flussspannung der IR-Diode fliesst dann erheblich mehr als das gewuenschte eine Ampere als Puls. Wer rechnen kann ist klar im Vorteil.
Moin, Ein fluffiger Elko (also nicht Low-ESR) und eine CR2032 könnten als Vorwiderstand reichen. Ich würde aber Low-ESR nehmen und sowas wie 6R8 als Vorwiderstand. Gruß, Norbert
(º°)·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.·´¯`·.¸¸.· schrieb im Beitrag #5072821: > Mit einer CR2032 und geschaetzten 1.6 V Flussspannung > der IR-Diode fliesst dann erheblich mehr als das gewuenschte > eine Ampere als Puls. > > Wer rechnen kann ist klar im Vorteil. Noch besser, wer auch lesen kann. Bei 1A liegt die Flußspannung der o.g. IR bei 3,5V.
Also ich betreibe die LD271 in der o.a. Q&D Fernbedienung mit 4V (1 LiIon Zelle) minus Uce Sat eines BC337 und 27 Ohm Vorwiderstand. Das sind knapp unter 100mA und damit reicht die FB etwa 10m weit. Es ist also sicher nicht nötig, die LED mit mehr Strom zu belasten und sie im Surge zu betreiben. Stecke ich einen Reflektor auf die LED, reicht sie etwa doppelt so weit, aber man muss gut zielen. Norbert S. schrieb: > Eine saubere Lösung wäre eine komplette Trennung der Batterie von der > Elektronik, die mit den Tasten überbrückt wird. > Da gibt es dann praktisch gar keine Ruhe- oder Leckströme mehr. Oder man programmiert anständig. Meine FB hat, wie schon öfter erwähnt, etwa 300nA Ruhestrom. Allerdings musste ich wg. der fetten LiIon Zelle nur einen kleinen Stützelko spendieren mit 22µF.
Hallo Zusammen, Danke für das ganze Feedback. Da ich zur Zeit keinen ATMEGA328 rumliegen habe, habe ich die Schaltung mal nur auf dem Reißbrett designed. Das ganze soll später im Sleepmode SLEEP_MODE_PWR_DOWN laufen. Aufwachen soll das ganze, wenn eine Taste gedrückt wurde. Deshalb will ich den INT0 auf fallende Flanke einstellen. Alle Taster sind durch eine Diode entkoppelt am INT0 angeschlossen. Wo ich mir noch nicht ganz klar bin, ob die Dioden D1 bis D4 reichen oder ob ich zur Entkopplung noch mehr machen muss. Des Weiteren stelle ich mir die Frage, ob der Tastendruck für das Aufwachen dann direkt auch als Kommando für IRSDN erkannt wurde, oder ob ich nochmals eine Taste drücken muss. Als Energiequelle nutze ich zwei Lithiumbatterien mit 1.33V und 170mA in Reihe. Muss ich bei der Schaltung noch etwas beachten, oder kann ich sie vom Prinzip her so lassen. Im Anhang mal die Schaltung der erste Entwurf des Boards und das Profil in dem ich die FB einbauen möchte. Den Deckel und die Abdeckungen vorne und hinter erstelle ich auf meiner CNC Fräse. Deckel und rückseitige Abdeckung sind aus schwarzem Acryl 3mm die Frontabdeckung wird ebenfalls aus Acryl mit einer Lichtdurchlässigkeit von 70%. Gruß Frank
> Flußspannung der o.g. IR bei 3,5V
Eine IR-LED mit einer Flußspannung von 3.5 V ist karp0tt.
Frank L. schrieb: > Muss ich bei der Schaltung noch etwas beachten, oder kann ich sie vom > Prinzip her so lassen. Du kannst dir den Aufwand mit den Dioden sparen. Du kannst Pinchange Interrupts konfigurieren, die den MC aus dem Powerdown wecken. Für die paar Tasten tuts übrigens auch locker ein Tiny2313 oder Tiny44. Ich kann dir gerne mal den Sourcecode meiner FB mit 16 Tasten und Tiny2313 posten. Wichtig zum Stromsparen ist die Konfiguration aller Pins auf Ausgang bzw. Eingang mit Pullup. Ein Pin, der irgendwo floatet, zieht erheblichen Strom. Frank L. schrieb: > aus Acryl mit einer > Lichtdurchlässigkeit von 70%. Check mal, ob das auch für IR gilt. Viele Kunststoffe sind da nämlich ganz anders als im sichtbaren Bereich.
Hallo Matthias, danke für die Info. D.h. ich verwende die PCINTs 10-13 für das Aufwecken. Ich hatte es in der Doku anders verstanden. Den ATMEGA328 verwende ich in der Regel in den meisten Schaltungen. Das ich auch einen kleineren verwenden kann, weiß ich. Ursprünglich wollte ich einen ATTiny45 nehmen, bin aber aus einem mir nicht mehr ganz klaren Grund davon abgekommen. Nachdem ich mir den ATTiny45 nochmals zur Brust genommen habe, werde ich diesen verwenden, da er vollkommen ausreichend ist. Da ich den sogar da habe, werde ich mir die Schaltung nachher mal auf einem Steckbrett aufbauen :-) Gruß Frank P.S. danke für das Angebot mir Deine Sourcen zur Verfügung zu stellen. Die einzige Frage in diesem Zusammenhang wäre, wie Du mit Repeatframes, also wie Du sie erkennst, in IRSND umgehst und wie und wann Du die CPU in den Schlaf schickst.
Frank L. schrieb: > wie Du mit Repeatframes, > also wie Du sie erkennst, in IRSND umgehst Da ich sende und nicht empfange, gehe ich gar nicht mit Repeatframes um - ich sende den gleichen Code, solange die Taste gedrückt bleibt, mit einer Pause von etwa 100ms. Das klappt bisher mit allen Geräten, die ich ausprobiert habe. Dazu setze ich nach dem ersten Senden ein Flag und warte lange (700ms). Alle darauf folgenden Aussendungen haben dann die 100ms Pause.
1 | /* send the IR Code with fixed protocol and the command code */
|
2 | void Flash_IR(uint8_t command){ |
3 | irmp_data.protocol = IRMP_RC5_PROTOCOL; // use RC5 protocol |
4 | irmp_data.address = GIGASET_ADDRESS; // set address to device to control |
5 | irmp_data.command = 0x0000 + command; // set command |
6 | irmp_data.flags = 0; // don't repeat frame |
7 | irsnd_send_data (&irmp_data, TRUE); // send frame, wait for completion |
8 | /* autorepeat active ? If yes, wait 600ms */
|
9 | if (!RemoteFlags.IsRepeat) { |
10 | RemoteFlags.IsRepeat = TRUE; |
11 | _delay_ms(600); |
12 | }
|
13 | _delay_ms(100); |
14 | RemoteFlags.KeyPressed = FALSE; |
15 | }
|
Da der Code nun wirklich nicht gross ist, hänge ich ihn einfach mal an. Wenn da ab und zu noch 'Medion' drin steht, sind das Überbleibsel von der vorherigen Anwendung der FB. Nun ist es ein Gigaset Satelliten Empfänger.
:
Bearbeitet durch User
Hallo Zusammen, ich habe ein Problem beim ATTiny45 mit Timer0 und Timer1. Timer1 initialisiere ich für IRSDN. Timer0 initialisiere ich für das Debounce nach Peter. Schalte ich alternativ nur einen von den beiden Timern an, funktioniert jeder für sich korrekt. Schalte ich beide Timer ein, klappt nur noch Timer0. Der Ausschnitt im Anhang, initialisiert beide Timer und sendet in einer Endlosschleife per IRSDN einfach mal was raus. PB0 ist dauerhaft High. Nehme ich die Zeile timer0_init() raus, sehe ich am Scope, dass die IR Diode irgendetwas sendet. Das Init von Debounce ist bewusst aus kommentiert. Wo steckt mein Fehler? Gruß Frank
Frank L. schrieb: > Timer1 initialisiere ich für IRSDN. > Timer0 initialisiere ich für das Debounce nach Peter. IRSND benutzt noch einen weiteren Timer für die IR-Modulation (PWM) - abhängig vom gewählten Ausgabepin. Zeig bitte mal Deine irsnd-conf.h. Da der Attiny nur 2 Timer hat, machst Du mit dem timer0_init-Aufruf die IR-Modulation kaputt. Mein Tipp: Bau den Debounce in der ISR ein, wo auch irsnd_ISR() aufgerufen wird. Peters Code braucht nicht exakt 10msec-Ticks. Dann ist der Timer0 wieder frei. Siehe auch: http://www.mikrocontroller.net/articles/DIY_Lernf%C3%A4hige_Fernbedienung_mit_IRMP
:
Bearbeitet durch Moderator
Hallo Zusammen, vielen Dank nochmals für die Hilfe. Vorgestern sind die Prototypenplatinen angekommen und bis auf einem kleinen Fehler im Layout sieht es sehr gut aus. Mehr Schwierigkeiten hat es mir gemacht, nachdem alles bestückt war zu erkennen, warum die FB nicht funktionierte :-( Nach ein wenig nachdenken, lag es am Brown-Out Detector. diesen hatte ich auf 2.7 Volt eingestellt. Die Spannung bricht aber wesentlich mehr ein, wenn ich sende. Nachdem ich den Detector auf den kleinsten Level gesetzt habe (1.7V) funktioniert es. Ich werde jetzt noch ein wenig mit dem Vorwiderstand zur Sendediode experimentieren - zur Zeit 37 Ohm - um den Strom durch die Sendediode etwas zu reduzieren bei akzeptabler Reichweite. Derzeit beträgt die Reichweite gut 6m ohne Bündelung und etwa 45° ausgerichtet zum Empfänger. Gruß Frank
Frank L. schrieb: > Die Spannung bricht aber wesentlich mehr > ein, wenn ich sende. Dann addiere doch noch einen Elko. Wir hatten ja oben schon über die Bedeutung eines Reservoir Elkos diskutiert. 47µF/6V bekommst du noch untergebracht :-P Ich persönlich finde die Leiterbahnen sehr dünn für ein mobiles Gerät, aber das ist Geschmackssache.
:
Bearbeitet durch User
> 47µF/6V
Bei "richtigen" FB habe ich schon 1000 uF gesehen.
Und 1 Ohm vor der Diode.
Hallo Zusammen, nachdem ich jetzt die Fernbedienung unbenutzt habe liegen lassen, muss ich feststellen, dass die Batterien leer sind. Jetzt stellt sich mir die Frage, ob ich am Sleepmodus noch etwas ändern kann. Ich würde mich freuen, wenn nochmals jemand darüber schauen könnte und mit Verbesserungsvorschlägen um die Ecke kommen würde. Der Sourcecode und Schaltplan sind angehangen. Gruß Frank
Kann es sein, dass der ATTiny gar nicht in den Sleep Mode geht? (Leerlauf-Stromaufnahme gemessen?) Und wenn doch, durch was wird er geweckt? Kann ich im Programm gerade nicht finden.
Hallo, der Tiny wird durch einen Interrupt aufgeweckt.
1 | ISR(PCINT0_vect) |
2 | {
|
3 | ;
|
4 | }
|
5 | |
6 | void key_init(void) |
7 | {
|
8 | PCMSK |= (1<<PCINT1) | (1<<PCINT2) | (1<<PCINT3) | (1<<PCINT4); |
9 | GIFR = (1 << PCIF); // clr pendings |
10 | GIMSK |= (1<<PCIE); |
11 | }
|
Gruß Frank
Vergessen hinzuzufügen, dass Teil hat jetzt ziemlich genau ein Jahr mit dreimal benutzen im Schrank gelegen. Gruß Frank
Lies dir bitte noch mal die Library Reference zu avr/sleep.h durch. Entweder machst du
1 | #include <avr/sleep.h> |
2 | |
3 | ...
|
4 | set_sleep_mode(<mode>); |
5 | sleep_mode(); |
oder die lange Variante:
1 | ...
|
2 | sleep_enable(); |
3 | sei(); |
4 | sleep_cpu(); |
5 | sleep_disable(); |
Bei letzterer wird das sleep_disable() ausdrücklich empfohlen. Ich allerdings benutze die obere Nummer und die funktioniert wie gewünscht. Es ist aber wichtig, das * nicht benutzte Pins am besten als Ausgang programmiert werden. * kein benutzter Ausgang in Ruhe Strom liefern muss. * kein Eingang floatet und auch kein Pullup Strom liefern muss.
Noch eine Ergänzung. Die verwendeten Batterien sind zwei Stück Silberoxid-Knopfzelle, 303, 175 mAh in Serie geschaltet. Gruß Frank
Frank L. schrieb: > PCMSK |= (1<<PCINT1) | (1<<PCINT2) | (1<<PCINT3) | (1<<PCINT4); Sorry, hab ich beim hin- und herblättern immer übersprungen. Frank L. schrieb: > ziemlich genau ein Jahr Das wären ca. 20µA. Soviel würde etwa der Brown Out Detector brauchen. Ist er per Fusebits deaktiviert?
Nein, der ist aktiviert für 1,7V. Ich habe mal eben gemessen, es sind in etwa 23uA genauer geht es mit meinem Agilent nicht. Von daher Ruhezustand scheint zu funktionieren. Gruß Frank
Frank L. schrieb: > Nein, der ist aktiviert für 1,7V. Moin, Was'n das für ein Satz? Also ist er aktiviert! Deaktiviere den. Dann halten die Batterien ewig. Gruß, Norbert
Hallo Norbert, Ja ja das Deutsch :-) Ich deaktiviere den Morgen mal und werde neu messen. Danke Gruß Frank
:
Bearbeitet durch User
Moin, Oh, Mario hatte ja gefragt, ob er DEaktiviert ist. Mein Fehler! Nunja, wenn der jetzt an ist und Du ihn ausschaltest, sollte er nur noch ca. 0,2µA verbrauchen. Gruß, Norbert
:
Bearbeitet durch User
Frank L. schrieb: > Ich deaktiviere den Morgen mal und werde neu messen. Es ist ein Unterschied, ob man den Morgen deaktiviert oder morgen deaktiviert.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.