Hallo zusammen, für mich (noch) ein schwieriges Thema, für viele von Euch vermutlich Selbverständlichkeit - deswegen würde ich mich freuen, wenn ich ein paar Tips bekomme: Wie schliesse ich die folgenden Teile am besten an den Controller an? Ich möchte eine Leinwandsteuerung realisieren, die entweder per Taster oder per Fernbedienung bedient werden kann. Dabei soll das Ganze möglichst effizient und stromsparend realisiert werden - wenn ich mit µCs arbeite, dann gescheit! Wie nutze ich am Besten die Interrupts? Ich habe einen Atmega8, der ja zwei Interrupts hat, die bei einem Tastendruck oder Fernbedienungssignal den Controller aus dem Schlaf wecken sollen... aber wie schliesse ich diese am besten an? Es sollen zwei Schalter (für Leinwand auf/ab) vorhanden sein, ein TSOP1736 und ein Reed-Kontakt für die Erkennung ob die Leinwand eingefahren ist. Jetzt könnte ich alle Komponenten per Wired-Or an einen Interrupt-Eingang anschliessen und dann in der ISR pollen, wer den Interrupt ausgelöst hat. - Soll dann das Polling in der ISR geschehen oder soll durch den Interrupt der µC nur "aufgeweckt" werden und dann in der Hauptschleife gepollt werden? - Wie verbindet man die Komponenten mit Wired Or? Mit Logikbausteinen am Besten? Oder mit Dioden, damit keine gegenseitige Beeinflussung stattfinden kann? Ich könnte auch einen Interrupt-Eingang für Taster etc. verwenden und einen für den TSOP und mit diesem Eingang gleich das Signal empfangen - oder geht das nicht? Würde das Sinn machen? Fragen über Fragen, ich hoffe ich habe Euch nicht damit erschlagen! Vielen Dank schonmal für Eure Bemühungen!
Also ich kann es zwar nur aus Bascom sagen, aber DA ist es kein Thema, eine Fernbedienung anzischließen. Da nimmste nen IR-Empfänger, son Modul für 1 Euro. Das schließte an den Ext.Int. vom AVR an. Und dann kannste mit jeder Fernbedienung, die RC5-Code macht, den uC fernsteuern. Im Programm kannste dann ganz relaxed sagen, daß er Werte vom Empfänger holen soll. Sind dann 2 Zahlen, Fernbedienugsnummer, und Tastennummern. Meine ganze Wohnung kann ich mit einer Frenbedienung steuern. Baue grade ne selbstanlernbare IR-Relais-Box, die dann Steckdosen ein/aus-schaltet. Zugegeben, die Hirnleistung hat der Programmierer des RC5-Bausteins in Bascom geleistet, aber der Nutzen davon ist super genial. Bei weiteren Fragen, nur zu.
Heisst das der IR-Empfänger hängt nur an INT0 z.B.? Oder dient der Interrupt nur dazu, den uC aufzuwecken, wenn Daten kommen, diese kommen dann auf nem anderen Port rein? Ich möchte halt mehrere Events einbinden, also Tastendrücke, Fernbedienungssignale etc. die den uC aufwecken - habe aber nur zwei Interrupts...
Bei Atmel gibt es eine Application Note (AVR240 oder so ähnlich), die die Verwendung einer 16poligen Tasten-Matrix an einem 90S1200 (oder so) beschreibt. Da wird auch ein Interrupt-Pin für das Wecken des µC benutzt. Wenn du nichts weiter mit dem µC machen willst, sprich den zweiten Interrupt-Pin übrig hast, würde ich den nehmen und auch gleichzeitig das IR-Signal darüber analysieren. Die beiden Kontakte zur Richtungswahl kannst du zwecks Wecken über Dioden an den anderen Pin legen. Dann musst du nur noch herausfinden, welcher der beiden betätigt wurde, also noch ein Eingangspin (vielleicht auch noch ne Diode oder so, muß aber wohl nicht). Den Reed-Kontakt würde ich an einen weiteren Pin legen, da der ja nur während der Bewegung interessant ist. Ausserdem ist von dem ein Interrupt eher unwahrscheinlich (Erreichen der Endposition durch Polling feststellen). Hat die Leinwand einen Ende-Schalter für "Ausgefahren"? Da man Leinwände in der Regel in kompletter Grösse braucht, wäre es ja sinnvoll, wenn das obere und das untere Ende vom Controller erkannt würde. Gruß Rahul
Der RC5 Befehl beherbergt ja ne Menge Intelligenz, die Dinge tut, von denen "man" nix mitbekommt. Ich bin mir auch nicht sicher, ob das PRG an der Programmstelle wartet, bis RC5 kommt, oder da nur rüberpollt. Also es ist zumindest immer pind.2 der Int0 der verwendet wird. Muss anscheinend int0 sein. Das Signal ist ja seriell, kann sein, daß da ein Int für jede 1 gebraucht wird. Was ich mit Sicherheit sagen kann ist, daß man keine Timer freilassen muss. Ich benutze den Mega8 und davon alle drei PWM Kanäle, also Timer0 und 1. Und kann per Fernbedienung alle drei Kanäle hoch und runter fahren, ist ne RGB steuerung für einen PlexiglasTisch der mit 300 LEDs bestückt ist. (Das so am Rande)
Achja, ich Esel. Versabbel mich hier, und vergesse die Antwort auf die Frage: JA, es wird NUR der Int0 als EIngang verwendet. Siehe Beispiel in Hilfe Bascom zum Thema getrc5 Da ist auch das benötigte Empfängerbauteil beschrieben etc. Muss 36kHz Trägerfrequenz haben....
Ah okay, danke für die Tips! Also als Empfänger dient der TSSOP1736, der mir ja freundlicherweise das Signal demoduliert. Wie ist das eigentlich, wenn eine Fernbedienung nicht RC5 kann? Sendet die dann auch auf ner anderen Frequenz oder unterscheidet sich nur der Codeaufbau von RC5? Oder vielleicht beides? Noch eine Frage zum Sender: Für den nehme ich ja einen PWM-Kanal her, der mir die 36kHz erzeugt und durch Ein-/Ausschalten des Ausgangs moduliere ich quasi das Signal auf, richtig? Ist es da egal welchen PWM-Kanal man nimmt, oder ist da einer besser geeingnet als ein anderer? Und dann müsste ich quasi noch mit nem Transistor (BC337 oder so?) die IR-LED ansteuern...? @Rahul: Geplant habe ich eigentlich nur einen Reed-Kontakt, wenn die Leinwand eingefahren ist. Und mit einem Schrittmotor lasse ich die LW einfach ne vorgegebene Anzahl Schritte runterfahren. Und dann natürlich wieder hoch. Der Sensor ist eigentlich nur da, bei Stromausfall, Überspringen von Schritten, o.ä. die Position 0 zu erkennen (die Leinwand fährt rein, bis ein Signal kommt) und dann abzuschalten. Danke übrigens für den Tip mit der Application Note, die werd ich mir mal genauer ansehen!
hm, wie man sendet weiß ich nicht ausm Kopf..... Is das so, man braucht nen PWM Kanal ?????????? EIn RC5 Code hat ja mit PWM nicht viel zu tun..... Ich hab hier ne Universal FB, das ist ausreichend, und einfacher. Der RC5 Code ist ein ganz be"sonderes" Protokoll. Ergo: Nicht nur die Trägerfreqenz ist anders. Entweder RC5 oder nix. Allerdings habe ich irgendwas gelesen, daß das neue Bascom wohl auch nen Sony Code oder so macht, mussich mal inne Befehlsliste schauen.
Also nein, ich habs falsch rübergebracht - den Port braucht man als Frequenzgenerator für die 36 kHz, hat mit Output Compare, oder dergleichen... und den schaltest du an und aus, was dann die Bits des Codes repräsentiert. Im Übrigen nutze ich kein Bascom, deswegen muss ich wohl oder über alles in Assembler machen, aber das sollte ja kein Problem sein, gewusst wie. Wenn das verschiedene Frequenzen / Codes sind - wie machen das die lernbaren Fernbedienungen? Mehrere Sender/Empfänger?
Die lernbaren, also Die, wo man eine alte vorlegen kann, und die sich das merkt, die machen das sicher so, daß sie erstmal alles empfangen. ALso auch keinen vorgeschalteten 36kHzFiltre haben. die haben einfach ne Fotodiode drin. Also wird quasi die gesamte Sequenz "aufgenommen". Dann kann die selbst entscheiden denke ich, welche Trägerfrequenz das ist, und merkt wohl auch, ab wann sich die Sequenz wiederholt. Rein theoretisch kann sie natürlich schön doof einfach alles was sie empfängt aufzeichnen und wiedergeben, ohne den eigentlich übertragenen Wert zu speichern. Aber das würde sicher Mem kosten.
Mit LIRC kann ich ja auch FB-Codes lernen - kann ich die irgendwie aufnehmen und dann die Sequenzen als Bitmuster auf meinen µC spielen? Ich bräuchte nur ein paar Kommandos, die ich aufnehmen müsste, Speicher sollte nicht das Problem sein, mit den paar Zeilen Code ist mein Atmega8 eh unterfordert... Es soll nur funktionieren, dass ich FB-Codes empfange (z.B. Leinwand auf/ab) und an einen optionalen, hoffentlich bald vorhandenen, Beamer Codes schicke (z.B. Beamer an/aus). Ich habe quasi eine FB die meinen µC steuert und der arbeitet dann Makros ab, also z.B. auf Knopfdruck Leinwand ab, Beamer an, Licht aus...
Das ja kein Thema. Viele Beamer habn doch ne RS232 zum steuern...... Und solange deine FB RC5 macht, musste nix aufzeichnen. Nimmste ne Universal-FB programmierst irgendein Gerät ein, daß RC5 macht (zb Panasonic oder ähnlich, schau Liste) und dann schließte nen LCD an uC an, und lässt dir ersma mit nem billigen PRG anzeigen, welchen 2 Werte deine FB bei welchem Tastendruck erzeugt. Die Werte verwendest Du dann in deiner programmierten Steuerung, und über RS232 Kommandos kannste den BEamer steuern. Siehe auf meiner Homepage, ich hab nen kleinen Kaste ngebaut, der zeigt mir an, welche Werte meine FB macht. Und ich hab ne Lernbare Box gebaut, die 20 Steckdosen schaltet, einfach den empfangenen Wert einmalig im EEROM speichern, und dann zum Vergleich immer hernehmen lassen, so bleiben die Werte auch erhalten, bei Stromausfall etc. Und ich kann nach belieben neu anlernen, muss allerdings ne RC5 sein. Schauste www.DO2SHA.de
Hab das gleiche bei mir vor. wie bau ich denn ne fernbedienung selber? keine gekaufte. die soll ja nur taste für hoch und eine für runter haben?
Willst du dir komplett eine eigene Fernbedienung bauen? Funktionieren tuts natürlich, aber ich schätze es ist günstiger, ne billige fertige zu kaufen oder ne alte dafür zu verwenden. Oder du nimmst eine von der Steroanlage oder so, die noch zwei Tasten frei hat - dann hast du nicht noch ein Teil rumliegen... Meine Idee war, nur meine Steuerung per Fernbedienung anzusprechen, und der Controller fährt dann quasi ein Makro ab - Leinwand runter und dann eben die Fernbedienungscodes für den Beamer senden zum Einschalten, einstellen oder so. Sonst müsste ich den Beamer einschalten und die Leinwand extra ansteuern, und das wollte ich zusammenfassen...
"Dabei soll das Ganze möglichst effizient und stromsparend realisiert werden - wenn ich mit µCs arbeite, dann gescheit!" Das ist Mumpitz. Ich gehe mal davon aus, daß die Leinwand für einen Beamer ist mit mehreren 100W Leistung. Was soll es dann für einen Sinn haben, mit ein paar mW zu geizen ? Da sind ja die Wirbelstromverluste im Netztrafo schon viel höher und ein LM7805 möchte ja auch um die 10mA haben. Die Stromsparmodi des MC haben nur bei Batteriebetrieb einen Sinn. Gescheit ist nur dann jemand, wenn er eine Sache dort anwendet, wo sie auch effektiv was bringt. Vergiß also die Stromsparmodi und frage Tasten bzw. RC5 im Timerinterrupt ab, wo man sie zweckmäßiger Weise gleich mit entprellen bzw. dekodieren kann. Peter
>Ich gehe mal davon aus, daß die Leinwand für einen Beamer ist mit >mehreren 100W Leistung. Was soll es dann für einen Sinn haben, mit ein >paar mW zu geizen ? Ganz einfach: Erfahrung - auch wenn ich da nicht unbedingt auf jedes µA schauen muss, so kann ich trotzdem was lernen und das in z.B. nem Batterieprojekt einsetzen. Ausserdem - das Teil wird vermutlich irgendwann per Akku gespeist, da die Netzteile eben immer Verluste haben und ich per Solarpanel die Energie "umsonst" bekomme - und selbst wenn man genügend hat, muss man damit ja nicht verschwenderisch umgehen...
"Ausserdem - das Teil wird vermutlich irgendwann per Akku gespeist, da die Netzteile eben immer Verluste haben ..." Bloß haben Akkus eine hohe Selbstentladung und einen viel schlechteren Wirkungsgrad als Trafos. Die Standardladung ist ja 1,4...1,6-fach (14..16h mit I/10) und bei Schnellladung siehts noch düsterer aus. Wenn Du aber unbedingt den Power-Down-Modus ausprobieren willst, nimm einen AVR mit PCI (Pin-Change-Interrupt), d.h. sobald sich an irgendeinem Pin was ändert, wacht er auf und Du kannst über den Timerinterrupt das Ereignis auswerten. D.h. Du schreibst und testest das Programm erstmal ganz normal und fügst, nachdem alles richtig läuft, nur den Power-Down-Mode und den PCI zum Aufwachen mit hinzu. Peter
Und wie niste ich sowas auf ner anderen fernbedienung ein? und hat mal einer ne zusammenfassung? sowas wien schaltplan für das ganze projekt hier? steig nich durch :(
Also ne Projektzusammenfassung: Es soll eine Leinwand, die ursprünglich per Handkurbel auf- und abgerollt werden konnte, auf einen Motorantrieb umgestellt und von einem Mikrocontroller aus angesteuert werden. Dabei soll das Auf- und Abfahren neben Tastern auch per Fernbedienung beeinflusst werden. Und da man eh schon nen Mikrocontroller benutzt, kann der dann gleich auch den Beamer fernsteuern. Soll heissen: Ich drücke eine Taste auf der Fernbedienung, die Leinwand fährt runter, der Beamer geht an, und nach ner Zeit (wenn der Beamer warmgelaufen ist) geht das Licht im Zimmer aus und der Beamer übernimmt. Beim Ausschalten läuft das Ganze andersrum. Jetzt zu den Fernbedienungen: Ich hab für meine Anlage eine Fernbedienung die zig Geräte steuern kann. Ein Teil der Tasten ist wie bei vielen Fernbedienungen keiner Funktion am Gerät zugewiesen, so dass ich die für meine Steuerung verwenden kann. Der Beamer soll aber auch gesteuert werden, aber ich möchte nicht extra noch eine Fernbedienung für den Beamer verwenden müssen, also übernimmt der Mikrocontroller das. Der bekommt einmal die Befehle der Beamer-FB gelernt und in Zukunft schickt er die dann raus, wenn die Leinwand bedient wird. Hoffe das war verständlicher ;)
Unglaublich, was alles möglich ist. ist sollte das am besten studieren! wie heißt das ganze? wo sollte ich mich bei der uni eintragen? :)
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.