Hallo zusammen, Ich möchte gerne für ein Projekt eine IR-Fernbedienung bauen und habe mir dazu folgende Gedanken gemacht. Es wäre nett, wenn Ihr mal drüber schauen könntet ob das so realisierbar ist oder ob ein andere Weg viel besser wäre. Die Fernbedienung soll mit einem Attiny13V realisiert werden, der bis zu einer Spannung von 1,8 Volt arbeitet. Versorgt werden soll die Fernbedienung über 3 Mignon Zellen. Da in der Fernbedienung 6 Taster benötigt werden, habe ich mir Gedanken gemacht, wie ich dies mit einem so kleinen Controller realisieren könnte. Beim Power Up des Controllers möchte ich deshalb den Ausgang PB3 einschalten und über den Spannungsteiler R2/R3 die Spannung an PB4 zurück lesen. Meiner Meinung nach brauche ich diesen Wert später um bei sinkender Bateriespannung die sechs Tasten (ebenfalls über Spannungsteiler gelöst) sauber zu erkennen. Als Refernz möchte ich die internen 1,1V des Controllers verwenden. Wird eine bestimmte Zeit nichts gedrückt soll die Fernbedienung in den PowerDown Modus schalten. Wird eine Taste gedrückt soll diese über den Interrupt PCINT1 geweckt werden. Anschließend wird der Spannungswert an Eingang PB2 über ADC eingelesen. Damit auch sinkende Batteriespannung nicht zum Problem führt wird zur Auswertung der Tasten die zuvor gemessene Batteriespannung (Spannungsteiler R2/R3) herangezogen. Anschließend wird die Infrarotdiode mit einem RC5 Signal beschickt. Diese wird über einen N-Channel Mosfet (SI2302) geschaltet. Die Parallelschaltung aus R6 und R7 dient dabei zur Strombegrenzung. Habe ich mich in meiner Planung irgendwo verrant oder gravierende Fehler eingebaut? Gruß, Markus
Klingt soweit plausibel. RC5 ist jedoch..."angesatubt". Hast du dir den irmp artikel schon durchgelesen? klaus.
nimm einen Mega88PA und pap die 6 Tasten normal dran und fertig. In SMD ist der auch winzig. Die Spannung geht auch bis 1,8V runter. 2 Mignon sollten reichen
Mit Vcc als ADC Referenz könntest du einige Klimmzüge vermeiden. Mit sinkendem Vcc bleiben die Spannungsteilerverhältnisse gleich und der ADC mißt mit der gleichen niedrigeren Vcc Referenz nichts anderes als bei maximaler Vcc.
Klaus2 schrieb: >Klingt soweit plausibel. RC5 ist jedoch..."angesatubt". Hast du dir den >irmp artikel schon durchgelesen? Ja da habe ich auch schon drüber geschaut. Wäre dann noch eine neue Variable in die ich mich reinarbeiten müßte, aber ich werde es mir überlegen. Düsendieb schrieb: >nimm einen Mega88PA und pap die 6 Tasten normal dran und fertig. >In SMD ist der auch winzig. Die Spannung geht auch bis 1,8V runter. >2 Mignon sollten reichen Ja sicherlich wäre das einfacher, aber irgendwie auch ein wenig Kanonen auf Spatzen. Zum anderen wollte ich mich eh ein wenig mit ADC beschäftigen und da kommt der kleine Attiny gerade recht. Zum anderen habe ich von dem Mega88 gerade keine zu Hause rum liegen. Klingel schrieb: > Mit Vcc als ADC Referenz könntest du einige Klimmzüge vermeiden. Mit > sinkendem Vcc bleiben die Spannungsteilerverhältnisse gleich und der ADC > mißt mit der gleichen niedrigeren Vcc Referenz nichts anderes als bei > maximaler Vcc. Stimmt, du hast vollkommen recht. Manchmal sieht man den Wald vor lauter Bäumen nicht. Direkt Vcc als Referenz zu nehmen macht viel mehr Sinn. Danke für den klasse Hinweis.
Hallo! Man nimmt auch nicht so viele Spannungsteiler parallel, sondern einen einzigen mit mehreren "Anzapfungen". So hast Du nur einmal Qeuerstrom und nicht 6-mal. Die Anzahl der Widerstände könnte verringert werden, wenn ein Taster direkt nach GND und ein anderer am "oberen" Anschluss des Spannungsteilers angeklemmt wird. Ob für das Aufwecken und die Abfrage der gedrückten Taste zwei Eingänge nötig sind, würde ich auch noch hinterfragen.
Route 66 hat recht, habe mir des SB nicht angesehen :) Ich finde es mit einem tiny13 vor Allem auch "sportlicher", Atmega88 kann ja jeder. Klaus
Route 66 schrieb: > wenn ein Taster > direkt nach GND und ein anderer am "oberen" Anschluss des > Spannungsteilers angeklemmt wird. Damit hast du aber keinen Platz mehr für einen Wert ohne Tastendruck. Einfacher ist es so: Jeder taster ist in Serie mit einem Widerstand und der ADC-Port wird von einem definierten R nach Gnd gezogen. Damit stellt sich im "Leerlauf" Gnd-Potential ein und je nach tastendruck eine höhere Spannung. Wenn man keinen Taster direkt an Vcc hängt hat man die Option mehrere Tasten auf einmal zu bemerken (Auswerten wird zwar nicht gehen, da is etwas wenig adc-res da, aber man sollte es bemerken können). Abfragen der tasten macht man am besten indem man den Watchdog als Interruptquelle laufen lässt (braucht immernoch nur ~5µA) und dann jedesmal die Tasten abfragt. Alternativ legt man den Teiler-Resi auf einen Port den man dann hochohmig-schaltet (und mit einem 10x größeren Resi gegen grnd zeiht). Damit erscheint am ADC-Port eine 1 wenn ein Knopf gedrückt wird. Dann wacht man auf (Pin-Change int), shcaltet den teiler an und misst den wert.
:
Bearbeitet durch User
Max D. schrieb: > Damit hast du aber keinen Platz mehr für einen Wert ohne Tastendruck. Stimmt! Das kann man aber auswerten, weil der Spannungsteiler über PB3 ein- und ausgeschaltet werden kann.
:
Bearbeitet durch User
Klaus2 schrieb: > RC5 ist jedoch..."angesatubt". Haben da neuere Codes irgendwelche Vorteile, z.B. höhere Reichweite durch kürzere Impulse?
Harald Wilhelms schrieb: > Haben da neuere Codes irgendwelche Vorteile, z.B. höhere Reichweite > durch kürzere Impulse? Sie haben da jede Menge Vorteile. Die Reichweite ist aber nebensächlich. RC5 hat nur 5 Adress-Bits + 6 Kommando-Bits. Damit sind gerade mal 32 verschiedene Geräte mit jeweils 64 Kommandos ansprechbar. Mit der Zeit wurde es immer wahrscheinlicher, dass zwei ähnliche (aber nicht unbedingt baugleiche) Geräte in ein und demselben Wohnraum sich mal in die Quere kommen würden. RC5 wurde zwar irgendwann durch RC5X erweitert (2. Start-Bit wird verwendet als 7tes invertiertes Kommando-Bit), aber dadurch bleibt die Anzahl der Geräte weiterhin beschränkt. Da bei RC5 auch noch die möglichen Kommandos fest auf bestimmte Funktionen "normiert" wurden (jedes Gerät macht bei dem Code 0x12 definiert dasselbe, wenn es dies dann kann), blieb für Neuerungen (sprich neue Funktionalitäten) kein Spielraum. Deshalb wurde RC5 später auch durch RC6 abgelöst. Das benutzt aber kaum ein Hersteller, weil das Protokoll zwar flexibler wurde, aber dieses (meiner Meinung nach) nur mit erhöhter Komplexität erreicht wurde. Man denke da nur an die Mode-Bits, die mit einer abweichenden Taktrate innerhalb des Frames geschickt werden... RC6 unterstützt theoretisch 8 verschiedene Modes (zu verstehen als "Unterprotolle"), genutzt werden in der Praxis aber gerade nur mal zwei, nämlich RC6 und RC6a. Moderne Protokolle haben nicht nur mehr Bits für Geräteadressen und Kommandos, sondern bieten auch die Möglichkeit, durch Redundanz (invertierende Wiederholungen und CRC-Werte), Fehler zu erkennen. Man denke da nur ans NEC-Protokoll, welches heutzutage in 7 von 10 FBs benutzt wird. Hier gibt es 256 verschiedene Geräeteadressen mit je 256 verschieden Kommando-Codes, also 65536 Mötlichkeiten. Das NEC-Extended-Protokoll verwendet sogar 65536 verschiedene Geräteadressen mit je 256 verschiedenen Kommando-Codes (= 16.777.216 Möglichkeiten) - bei gleicher Protokollstruktur. Dabei werden die Bits zwecks Fehlererkennung auch nochmal invertiert gesandt, damit diese auf Plausibilität überprüft werden können. Zur Info: Es gibt da noch ganz andere Protokolle, die noch weitaus größere Möglichkeiten haben. Besonders abartig ist das sog. Kaseikyo-Protokoll (auch "Japan-Protokoll" genannt), welches in einen 48-Bit-Frame mit insgesamt 16+16+4 = 36 Bit Nutz-Informationen packt (= wahnwitzige 68.719.476.736 Möglichkeiten) und in weiteren 12 Bits CRCs "parkt", die der Fehlererkennung dienen. Es war erklärtes Ziel der Japaner, über ein Konsortium der größten Unterhaltungsgeräte-Hersteller das Kaseikyo-Protokoll als das Standard-Protokoll durchzusetzen. Tatsächlich findet man es aber selten auf den FBs daheim. Irgendwie will doch jeder sein eigenes Süppchen kochen, z.B. Sony, Denon, Samsung usw. Wenn Du mehr darüber erfahren willst, findest Du einiges im IRMP-Artikel, insbesondere unter: http://www.mikrocontroller.net/articles/IRMP#Die_IR-Protokolle_im_Detail
:
Bearbeitet durch Moderator
...dem ist nichts hinzuzufügen :) - Danke Frank (und deiner irmp!). Klaus.
Markus Sierpinski schrieb: > Da in der Fernbedienung 6 Taster benötigt werden, habe ich mir Gedanken > gemacht, wie ich dies mit einem so kleinen Controller realisieren > könnte. Wenn die Verwendung des ADC nicht gerade Pflicht ist, dann wäre das mit ein paar Transistoren eigentlich einfacher möglich (siehe Skizze; die Autoabschaltung stammt von hier: http://clauff.pytalhost.com/?p=78 und wird lediglich um ein paar Taster erweitert). - durch einen Tastendruck kommt es zum Power-On - der Controller setzt die hold-Leitung... - liest s0-s2 aus um die gedrückte Taste zu bestimmen... - sendet das IR-Signal... - lässt hold wieder fallen... - und wartet im Tiefschlaf auf Power-Off (Taste losgelassen) Wäre weniger Frickelei und etwas batterieschonender. :)
Harald Wilhelms schrieb: > Klaus2 schrieb: > >> RC5 ist jedoch..."angesatubt". > > Haben da neuere Codes irgendwelche Vorteile, z.B. höhere Reichweite > durch kürzere Impulse? Soviel ich mich erinnere hat das REC80 (Philips) Vorteile bei der Reichweite, da das Puls-Pausen-Verhältnis sehr extrem ist und damit man die LED mit sehr kurzen und starken Impulsen betreiben kann. Zumindest habe ich das früher mal so verstanden als ich mich kurz mit dem Protokoll beschäftigte. In der Praxis habe ich eine Fernbedienung, die das verwendet und das ist die stärkste und zuverlässigste von allen FBs, obwohl sie nur 1 IR-LED drin hat. Die kann ich irgendwohin in den Raum richten und sie schaltet erfolgreich.
Conny G. schrieb: > Soviel ich mich erinnere hat das REC80 (Philips) Vorteile bei der > Reichweite, da das Puls-Pausen-Verhältnis sehr extrem ist und damit man > die LED mit sehr kurzen und starken Impulsen betreiben kann. Ja, das stimmt mit den sehr kurzen Impulsen (nur 158µs Licht bei Pausen, die um Größenordnungen länger sind). Aber das ist auch schon alles. RECS80 ist genauso veraltet wie RC5, wenn nicht sogar älter. Siehe auch: http://www.mikrocontroller.net/articles/IRMP#RECS80 Mit 3 Adress-Bits (nur 8 verschiedene Geräte möglich) und 6 Kommando-Bits (64 Möglichkeiten) kannst Du heute keinen mehr hinter dem Ofen hervorlocken.
:
Bearbeitet durch Moderator
Frank M. schrieb: > Aber das ist auch schon alles. RECS80 ist genauso veraltet wie RC5, wenn > nicht sogar älter. Hab ich gar nicht gewusst. Ist das REC80EXT noch aktuell (genug)? Oder was würde man heute nehmen, wenn man auf diesen Vorteil aus ist?
Wer sich nicht die Bude mit Geräten zugepflastert hat, fährt mit RC5 gut, zumal es in Bascom die Befehle GETRC5 und SENDRC5 gibt, die das Schreiben eines Programmes ziemlich einfach machen.
Conny G. schrieb: > Hab ich gar nicht gewusst. Ist das REC80EXT noch aktuell (genug)? Die letzte FB, die RECS80 verwendet, habe ich vor 6 Jahren in der Hand gehabt. Mehr kann ich Dir dazu nicht sagen. > Oder was würde man heute nehmen, wenn man auf diesen Vorteil aus ist? Vielleicht noch Bang & Olufsen (B&O): http://www.mikrocontroller.net/articles/IRMP#B.26O Aber mit einer Modulationsfrequenz von 455 kHz sind die auch weitab von Gut und Böse. Sonst verwenden die anderen Protokolle meist ein eher ausgeglicheneres Puls-/Pausen-Verhältnis. Auf das Stromsparen guckt da keiner wirklich über das Protokoll. Tricksen kann man da aber noch bei der Modulation: Den meisten IR-Empfängern ist es vollkommen Latte, welches Puls-/Pausen-Verhältnis der IR-Puls tatsächlich hat. IRSND benutzt (aus Bequemlichkeitsgründen des Programmierers) eine Tastung von 50%. Die könnte man aber auch problemlos auf 10% ändern und dann einen 5mal so hohen Strom durch die IR-LED jagen... wenn diese das verkraftet (Datenblatt studieren!). Dann kann man darüber auch die Reichweite erhöhen bzw. Strom sparen. Das verwendete Protokoll spielt dann überhaupt keine Rolle fürs Stromsparen, sondern allein das Tastverhältnis der Modulation.
:
Bearbeitet durch Moderator
Frank M. schrieb: > Tricksen kann man da aber noch bei der Modulation: Den meisten > IR-Empfängern ist es vollkommen Latte, welches Puls-/Pausen-Verhältnis > der IR-Puls tatsächlich hat. IRSND benutzt (aus Bequemlichkeitsgründen Genau das habe ich mich auch schon gefragt, ob ich das bei anderen Protokollen vielleicht einfach so machen kann. Würde erwarten, dass es bei einigen Geräten klappt, bei anderen nicht. Aber wäre mal einen Versuch wert, denn die Reichweite dieser REC80-FB ist schon echt cool. Mal einfach laut gedacht... Das mit dem 10:90 Fastverhältnis könnte ich ja auch nach IRSND erzwingen... ich müsste nur mit z.B. einem NE555 und einem Schmitt zum Abschalten die steigende Flanke nehmen, nach der einen "Timer" loslaufen lassen und damit nur einen Teil der Zeit HIGH zu senden als es IRSND eigentlich tun würde. Oder geht das noch besser / einfacher?
Max D. schrieb: > Einfacher ist es so: > Jeder taster ist in Serie mit einem Widerstand und der ADC-Port wird von > einem definierten R nach Gnd gezogen. Damit stellt sich im "Leerlauf" > Gnd-Potential ein und je nach tastendruck eine höhere Spannung. Das ist eine super Idee, ich habe gleich mal meinen Plan neu gezeichnet und die Bauteilmenge dadurch extrem reduziert. Da eine Mehrfacherkennung nicht nötig ist, habe ich auch einen Taster direkt an VCC gelegt. Wie du bei Einsatz des Watchdogs auf nur ~5µA Stromverbrauch kommst ist mir noch ein wenig schleierhaft. Habe das Datenblatt schon mehrmals quer gelesen konnte aber nicht die richtige Stelle finden. Was ich gefunden habe sind die Wakeup Bedingungen, demnach können nur die INT0, Pin-Change oder Watchdog Routine den Controller aus dem PowerDown Modus wecken. Ist deine Idee, über einen Timer den Watchdog zyklisch zu wecken und damit dann einen eventuellen Tastendruck zu detektieren? Wenn ja, müßte meiner Meinung nach der Controller mehr Strom brauchen da er doch komplett durchstartet oder bin ich da auf dem Holzweg? Habe gerade mal ins Datenblatt geschaut, ab welchem Level ein IO Pin High SIgnal erkennt. Bei einer VCC Spannung von 1.8 Volt wäre das sicher ab 0.7 Volt der Fall. Wäre es demnach nicht energie sparender wenn ich einfach den PIN Change Interrupt von PB2 abfrage um den Controller dann aufzuwecken. Im Anschluss könnte man dann direkt die ADC Messung durchführen.
:
Bearbeitet durch User
Markus Sierpinski schrieb: > Wie du bei Einsatz des Watchdogs auf nur ~5µA Stromverbrauch kommst ist > mir noch ein wenig schleierhaft. Habe das Datenblatt schon mehrmals quer > gelesen konnte aber nicht die richtige Stelle finden. Seite 130 Figure 19-14: Bei 3V und 25°C will er 4µA. Die Lösung ist aber nur nötig wenn du nur einen Pin für die taster hast. Du hast ja mehrere Pins da kannst du den Verbrauch noch weiter senken. Der Trick ist folgender: Du hast einen Messwiderstand (wäre bei dir R3) und einen "Erkennungswiderstand" der etwa zehnmal so groß ist. Den schaltet man dann von dem Steuerport (bei dir PB3) fest nach GND. Dein R13 sollte dann wegfallen. Das Verfahren ist dann so: Der AVR mach den Messport (PB2) und denn Steuerport (PB3) beide hochohmig, schaltet auf einen der beiden den PCINT Scharf und legt sich schlafen. Jetzt liegen (wegen dem Erkennungsresi) Gnd an den Pins an. Wenn jetzt der user eine Taste (egal welche) drückt, dann stellen sich mindestens 9/10 Vcc am Pin ein (100k gegen Gnd und maximal 12k gegen Plus -> Spannungsteiler). Die sind genug, dass der AVR sicher ein "High" erkennt und durch den PCINT aufwacht. Wenn er jetzt wach wird, dann legt er den Steuerport (PB3) auf low. Jetzt hast du deinen "normalen" Spannungsteiler und kannst via PB2 den Tasterwert einlesen. Irgendwann lässt der User den Taster wieder los, dann kann man wieder schlafen gehen.
Conny G. schrieb: > Das mit dem 10:90 Fastverhältnis könnte ich ja auch nach IRSND > erzwingen... ich müsste nur mit z.B. einem NE555 und einem Schmitt zum > Abschalten die steigende Flanke nehmen, nach der einen "Timer" loslaufen > lassen und damit nur einen Teil der Zeit HIGH zu senden als es IRSND > eigentlich tun würde. > Oder geht das noch besser / einfacher? Das müsste eigentlich in Software gehen - analog zum Dimmen einer LED. Da wird auch nichts anderes gemacht als dass das Tastverhältnis von 0 bis 100% eingestellt wird. Ich schaue mir mal an, wie man es im IRSND anpassen/einstellen könnte.
Markus Sierpinski schrieb: > Die Fernbedienung soll mit einem Attiny13V realisiert werden,... Wenn der Controller neu beschafft wird, dann besser den ATtiny13A nehmen. Der ATtiny13V ist veraltet und meist auch teuer. Wenn der ATtiny13V sowieso schon da ist, ist es egal.
Markus Sierpinski schrieb: > Anschließend wird die Infrarotdiode mit einem RC5 Signal beschickt. > Diese wird über einen N-Channel Mosfet (SI2302) geschaltet. Die > Parallelschaltung aus R6 und R7 dient dabei zur Strombegrenzung. Mit deinen zwei Widerständen wirst du aber nicht glücklich. Rechne das noch mal nach. Solche Dioden werden im Impulsbetrieb mit mehr als 1A betrieben. 2,5 Ohm sind da eher realistisch.
Erstmal danke für den vielen Input von Euch. Ich bin die letzten Tage leider beruflich nicht dazu gekommen mein Vorhaben weiter in die Tat umzusetzen. Dies möchte ich in laufe dieser Woche nachholen. Den finalen Plan den ich verwenden möchte, als auch das Layout der Platine, hänge ich mal diesem Post der Vollständigkeitshalber an. Über den maximalen Strom für die IR LED habe ich mir auch schon gedanken gemacht. Verwendet werden soll erstmal eine EL-IR204/H16/L10 von Everlight. Im Datenblatt dieser Diode ist der maximale Strom mit 1A angegeben. Soweit ich das verstanden habe aber auch nur wenn die Pulsweite <= 100us und der Dutycycle <= 1% ist. Nach studieren des RC5 Codes, den ich erstmals verwenden möchte habe ich dort ja einen standardmäßigen Dutycycle von 50% oder irre ich mich da? Die Pulsweite liegt bei einer Modulation mit 36 kHz dann bei etwa 27,77 us. Wie wird so etwas von den Firmen designt? Habe ich vielleicht die Flasche Sendediode ausgewählt? Ich werde den Aufbau auf jeden Fall erstmal so starten um erste Erfahrungen zu sammeln bin aber gespannt über weiteren möglichen Input von Euch. So eine IR LED als auch die Widerstände sind ja im Zweifelsfall schnell gewechselt. Gruß, Markus
Reichweite: Man kann IR-LEDs auch in Reihe schalten. 2 Stück mit kleinem Vorwiderstand - wenig Verlust am kleineren Vorwiderstand, mehr Lichtleistung.
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.