ich habe vor eine Fernbedienung mit nur sechs Tasten für meinen Opa zu machen, da er sich bei der orginalen Fernbedienung mit den ganzen Tasten immer verdrückt.
Soweit funktioniert die Elektronik auf einem Arduino auch. (Programm im Anhang)
Nun möchte ich dieses Projekt direkt auf einen Mikrocontroller "umbauen". Davon erhoffe ich mir Platzersparnis und weniger Stromverbrauch. Außerdem möchte ich da auch gleich noch etwas neues lernen. (Wie man an den Fragen bestimmt merkt 😉)
Welchen Mikrocontroller verwende ich da am besten? Ich brauche ja 6 Inputs für die Tasten und einen Output für eine IR Led.
Kann ich das Programm (Anhang) dann einfach so verwenden? So ist er ja quasi die ganze Zeit aktiv und verbraucht Strom. Was ich so gelesen habe ist der Sleepmodus dafür auch nicht so gut geeignet, da der dann nicht gleich auf die Tastendrücke reagiert.
Und wie versorge das ganze dann am besten mit Strom? Diese kleinen LED Fernbedienungen haben ja auch nur so 3V Knopfzellen, reicht das?
Ein ATmega328 lässt sich problemlos mit 3V versorgen. Beachte dass 2 Batterien aber nur in frischem Zustand diese Spannung liefern deswegen nimm lieber eine mehr. Im Sleep Modus kann man pin-change Interrupts benutzen um den Mikrocontroller durch Tastendruck aufzuwecken.
Dein Programm ist ja nicht gerade viel.
Trotzdem wäre es interessant wieviel der Arduino-Bloat braucht. Also erst Mal noch schauen wieviel Programm/Data momentan gebraucht wird.
Prinzipiell wird vermutlich fast jeder Controller gehen der genug Speicher und Pins hat.
Ein Controller mit möglichst weiterem Eingangsspannungsbereich wäre gut um ihn direkt mit den Batterien betreiben zu können.
Welchen Mikrocontroller verwende ich da am besten?
Ich würde dafür auch einen der „neuen“ ATtiny 0-/1-/2-series nehmen, sogar ein ATtiny402 mit 5 I/O-Pins (UPDI mal ausgenommen) würde den Job schon machen; die sechs Tasten kann man über ein geeignetes Widerstandsnetz an einen Pin anschließen und über den AD-Wandler auswerten.
Und wie versorge das ganze dann am besten mit Strom? Diese kleinen LED
Fernbedienungen haben ja auch nur so 3V Knopfzellen, reicht das?
Am besten (langlebigsten und günstigsten) wären drei AA- oder AAA-Zellen in Reihe. 3-V-Lithiumzellen würde ich persönlich nicht nehmen, da weniger Kapazität und relativ teuer.
Nun möchte ich dieses Projekt direkt auf einen Mikrocontroller
"umbauen". Davon erhoffe ich mir Platzersparnis und weniger
Stromverbrauch. Außerdem möchte ich da auch gleich noch etwas neues
lernen. (Wie man an den Fragen bestimmt merkt 😉)
Dein Vorhaben in allen Ehren, aber besorge deinem Opa doch erst einmal eine verfügbare Lösung. Du kannst ja parallel an deinem Projekt weiterarbeiten, und schauen wie weit du kommst.
Ich habe für meine Mutter die verlinkte Fernbedienung bestellt. Hat 6 Tasten, die sich einfach erfühlen lassen (auch bei Dunkelheit), und jede Taste kann eine beliebige Funktion von der Originalfernbedienung lernen.
Kann ich das Programm (Anhang) dann einfach so verwenden? So ist er ja
quasi die ganze Zeit aktiv und verbraucht Strom. Was ich so gelesen habe
ist der Sleepmodus dafür auch nicht so gut geeignet, da der dann nicht
gleich auf die Tastendrücke reagiert.
Bei der Wahl der Batterien ist auch wichtig wie weit die FB reichen soll. Für eine gute Reichweite werden die LED mit höherem Strom betrieben, gerne bis 100 mA. Das schaffen die CR2032 nicht. Die sind oft in den flachen China FB drin, mit denen muss man schon sehr genau zielen. Bei den ‚guten alten‘ reicht die Reflektion von Wänden. Von daher würde ich auch die AA einsetzen.
Und auch Sleep verwenden, das wacht schon schnell genug auf. Bei Zimmertemperatur wird der RC Oszi reichen, sonst einen Resonater nehmen, die sind afaik schneller am Start.
Diese kleinen LED Fernbedienungen haben ja auch nur so 3V Knopfzellen,
reicht das?
Knopfzellen haben 1.5V nur frisch aus dem Laden, während der Benutzung fällt die Spannung auf 0.9V.
Mit 1.8V lauft der ATmega328 nicht mehr mit Quartz. 3 Knopfzellen wären besser.
Welchen Mikrocontroller verwende ich da am besten? Ich brauche ja 6
Inputs für die Tasten und einen Output für eine IR Led.
Nein. 6 Tasten kann man problemlos(*) mit 5 Pins abfragen. Dazu noch ein Pin für den IR-Out.
(*) theoretisch sogar mit noch weniger, aber da es gerade für eine FB äußerst sinnvoll ist, auf Tastendruck aufwachen zu können, ist eine stinknormale Tastenmatrix hier die beste Lösung. Denn die kann man so konfigurieren, das jede Taste auch in der Lage ist, die FB aufwachen zu lassen.
Damit kommen so ziemlich alle µC in Frage, die acht Beine haben. Ich würde das mit einem Tiny13 machen, du brauchst vermutlich mindestens einen Tiny45 oder sogar einen Tiny85.
Kann ich das Programm (Anhang) dann einfach so verwenden?
Nein, das muß natürlich recht erheblich umgestrickt werden, wenn eine sinnvolle FB rauskommen soll.
Knopfzellen haben 1.5V nur frisch aus dem Laden, während der Benutzung
fällt die Spannung auf 0.9V.
Mit 1.8V lauft der ATmega328 nicht mehr mit Quartz. 3 Knopfzellen wären
besser.
Er redet von einer CR2032 oder 2450.
Auf den externen Quartz kannst du verzichten.
Ist aber eh alles irrelevant, weil der Strom nicht genug ist für eine IR LED.
ohne dumme Beleidigungen kannst du wohl nicht antworten? Sprichst du im
Real Life auch so mit deinen Mitmenschen?
Nur wenn mich andere Menschen zuerst beleidigen. Dann, ja spreche ich auch im richtigen Leben so. Fass dir also auch mal an die eigene Nase ob man Leute gleich als blind anpöbeln muss.
Bloat ist für mich alles, was mehr braucht als man benötigt. Der TO benötigt augenscheinlich kein RC6, Panasonic, Samsung usw. Also ist es erst Mal deutlich mehr als er benötigt, oder?
Also ist es
erst Mal deutlich mehr als er benötigt, oder?
Nein, bei wenig Programmiererfahrung ist es mehr sich erst in diese Protokolle und dann noch in die Umsetzung einzulesen. Auch Zeit fürs Hobby ist Geld. Meinetwegen darf die Lib noch viel mehr können, der Linker hat ja offensichtlich das nicht benötigte rausgeworfen. Und wenn noch andere Geräte bedient werden sollen ist der Code dafür schon da. Für mich ist eine Lib gut wenn sie universell ist, nicht wenn ich für jedes IR/RF Protokoll gleich wieder eine andere brauche.
Ich habe vor einigen Monaten mal genau das selbe versucht und bin gescheitert.
Die IRremote.h braucht 16Mhz und damit fallen auch die stabilen 5V an.
Das konnte ich bei mir mit einen step up Converter / 7805 / Elko aber klären.
Was ich nicht klären konnte war das die IR Diode keine sauberen Signale sendete, Egal mit welchen Transistor oder vorwiderstand.
Es kahm mir auch auf dem Oszilloskop so vor als ob der Atmega 8 und 328P ( hab beide versucht) zu instabile schaltflanken haben.
Was dazu führte das man sehr oft eine taste drucken musste bis es überhaupt mal erkannt wurde.
Von den alle 2 Tage Akku aufladen mal abgesehen, verwarf ich den Aufbau an diesen punkt wieder.
Wünsche dir aber gutes gelingen und hoffe das du es besser kannst.
Ein paar Bilder von deinen fertigen "Gebastel wären schön"
Welchen Mikrocontroller verwende ich da am besten? I
ATmega328 ?
Du musst ihn nur von einem Arduino Uno Board mit DIP28 Sockel
runterziehen und kannst ihn in deiner eigenen Schaltung benutzen.
Also einen originalen Uno kaufen und dann im eigenen Aufbau noch zumindest den Quarz an den AT328 bauen. 16MHz, die er unterhalb 5 Volt nicht garantieren mag.
Da nehme ich doch einen ProMini-Clone mit 8 MHz und löte Spannungsregler und LED runter. Zum Programmieren per USB brauche ich noch einen CH340-Adapter für 1,50 Dollar, das ist für mich die billigere Lösung.
Es ware aber klug, das Programm bis zum nächsten Tastendruck per
PinChange Interrupt in sleep zu schicken.
Das ist unvermeidbar, wenn die Schaltung nicht täglich am Ladegerät stecken soll. Ist überschaubar, dafür finden sich fertige Beispiele samt .lib.
Bloat ist für mich alles, was mehr braucht als man benötigt.
Der TO benötigt augenscheinlich kein RC6, Panasonic, Samsung usw.
Der Sinn von C++ Bibliotheken besteht darin, nützliche wiederverwendbare Funktionen zu bündeln. Eine Bibliothek ist per Definition eine Sammlung. Bei ihrer Benutzung wird nur das verwendet, was das jeweilige Programm braucht. Also kein Bloat. Sieht man auch an der Größe des resultierenden Binaries.
Benutzt du MS Office (oder ein ähnliches Produkt)?
Benutzt du den Adobe Reader?
Nein. 6 Tasten kann man problemlos(*) mit 5 Pins abfragen. Dazu noch ein
Pin für den IR-Out.
Und irgendwie noch den Programmieradapter dran fummeln.
Ich kann die sportliche Herausforderung dahinter nachvollziehen, aber das ist nicht für einen Anfänger. Diese unnötige Komplexität muss man sich nicht antun.
Ich würde das mit einem Tiny13 machen,
In den passt sein Programm jetzt schon nicht rein.
Die IRremote.h braucht 16Mhz und damit fallen auch die stabilen 5V an.
Auszug aus https://github.com/Arduino-IRremote/Arduino-IRremote:
"For sending, the default software generated PWM has problems on AVR running with 8 MHz. The PWM frequency is around 30 instead of 38 kHz and RC6 is not reliable."
Ein bisschen mehr als 8 MHz sind bei 3,6 - 4,5 Volt kein Problem. Es müssen ja nicht gleich 16 MHz sein. Wobei das (obwohl außerhalb der Spec) mit hoher Wahrscheinlichkeit auch noch gehen würde.
Die IRremote.h braucht 16Mhz und damit fallen auch die stabilen 5V an.
Auszug aus https://github.com/Arduino-IRremote/Arduino-IRremote:
"For sending, the default software generated PWM has problems on AVR
running with 8 MHz. The PWM frequency is around 30 instead of 38 kHz and
RC6 is not reliable."
Ein bisschen mehr als 8 MHz sind bei 3,6 - 4,5 Volt kein Problem. Es
müssen ja nicht gleich 16 MHz sein. Wobei das (obwohl außerhalb der
Spec) mit hoher Wahrscheinlichkeit auch noch gehen würde.
Sorry, dann ist die Bibliothek Schrott. Wieso Software PWM? Was ist das denn für ein Scheiß?
"For sending, the default software generated PWM has problems on AVR
running with 8 MHz. The PWM frequency is around 30 instead of 38 kHz and
RC6 is not reliable."
Sorry, dann ist die Bibliothek Schrott. Wieso Software PWM? Was ist das
denn für ein Scheiß?
Ja, das habe ich mich auch gefragt. Einfach den Output-Pin per Timer toggeln reicht, PWM braucht man nicht, und die 38 kHz kann man auch bei 8 MHz mit 0,2 % Fehler erzeugen.