Standby killer mit Atmega Schalten

maikgen

Mitglied
24. März 2010
46
0
6
Sprachen
Hallo

Ich habe seit einiger Zeit eine Standby Killer von Conrad welchen ich am meinem Reciver habe um dem Komplett abzuschalten. Nun da mein Frauchen immer eine Serie aufnehmen will muss dieser immer um eine Bestimmte zeit an sein und nun wollte ich das mit einer IR Diode machen welche am einem Atmega 1280 hängt.

Es ist eigentlich auch egal welchen Code ich mit der Diode schicke da ich den Standbykiller progrmmieren kann und auch eine Logotech Harmony habe und dieser auch den Code lernen kann.
Meine Frage als erstes ist das möglich und wo finde ich da mal was wo ich mich mal bissel einlesen kann wie ich das ins Bascom bekomme.

Danke schon mal für eure Hilfe
 
Hallo Maikgen!

Also ehrlich gesagt.....
Ich habe mir deinen Text nun zwei mal durchgelesen und weiß immer noch nicht, was du nun machen möchtest. :hmmmm:

OK, du hast eine IR-Diode am Mega128 und möchtest in BASCOM programmieren.
Aber was? :rolleyes:

Vielleicht hilft dir ja dieser Thread schon erst mal weiter.

Dort habe ich eine kleine IR-Fernbedienung mit einem Tiny24v und CR2032-Knopfzelle realisiert.

Meintest du soetwas?

Gruß,
Cassio
 
Ich möchte meine Sat-Receiver über die IR Diode zu einer bestimmten Zeit (Mo - Fr 15:00) einschalten.

Also wie so eine Art Fernbedienung.

mein Frauchen schaut gern Sturm der Liebe :)
 
Hallo Maikgen!

Also die Sendung kenn ich nicht....... muss ich aber wohl auch nicht, oder? :hmmmm: ;)

Dann möchtest du also doch eine Fernbedienung bauen.
Nun ja, der Mega1280 ist dafür zwar um einiges zu groß, aber wenn du keinen anderen haben solltest....

Das Problem ist nur, dass du mit BASCOM nur den RC5- bzw. RC5e-Code senden kannst. "Empfangen" kann es auch andere, nur eben nicht senden. :eek:

Als Erstes solltest du nun mal herausfinden, auf welchen FB-Code dein Sat-Receiver "hört".
Sollte es ein RC5-Signal sein, hast du keine Probleme. Wenn es aber ein Sony, RC6 oder was auch immer Signal ist, wird das mit BASCOM-Bordmitteln leider nichts.

Kannst dir ja trotzdem schon mal in BASCOM die Befehle "Rc5send" und Rc5sendext" anschauen. ;)


Ach so....
Hast du denn aktuell eine Möglichkeit den IR-Code deiner SAT-FB anzeigen zu lassen?

Gruß,
Cassio
 
Ja die sendung muss man auch nicht kennen.

Der Code ist nicht das Problem benutze eine Programmierbare FB und der Standby Killer reagiert auch auf alle IR Befehle welche man ihm beibringt. Der Atmega soll das nur neben bei mit machen der macht noch einiges mehr wie mein Fischglas steueren und noch einige andere Sachen im Raum.
Wollte mich da erstmal bissel einlesen wie ich die befehle dann rein bekomme.

Gut wenn es nur mit RC5 Code geht da weis ich schon mal etwas mehr.
 
Hallo Maikgen!

Ach so.....
Nun wird da für mich auch ein Schuh draus. ;)

Na, wenn der zu sendende IR-Code egal ist, dann bleibt es eben beim RC5(e) Signal.

Das Signal ist in BASCOM auf drei Variablen aufgeteilt:
Das Togglebit, der Adresscode und das Kommando.

Du musst also drei Variablen in dein Programm einfügen....
Zum Beispiel:
Code:
Dim Togbit As Byte , Adrcode As Byte , Ir_cmd As Byte

Bitte nicht wundern, warum das Togglebit ein Byte sein muss.
Dies liegt daran, dass es (in dezimaler Schreibweise) entweder den Wert "0" oder den Wert "32" hat!

Den Gerätecode (oder auch Familiencode) würde ich auf 19 oder 30 setzen.
Diese beiden Adressen werden von handelsüblichen Geräten nicht verwendet und dienen meist nur als "Test-Code".
Die Adresse 05 wird z.B. von Videorecordern benutzt, die Adresse 00 von TV-Geräten.
Habe hier gerade mal eine Übersicht zu RC5-Codes gefunden:
rc5code.gif

Die Kommando sind für alle Geräte dann meistens auch wieder identisch.
Kommando "12" schaltet ein Gerät in den Standby... oder holt es wieder zurück.

Wenn du also Adresse 00 und Kommando 12 sendest, dann schaltet sich der Fernseher ein (oder aus).
Sendest du Adresse 05 und Kommando 12, gilt das Signal dem Videogerät.

Das Togglebit sorgt nur zur Erkennung, ob eine Taste weiterhin gehalten wird, oder neu gedrückt wurde.
Dies musst du vielleicht berücksichtigen, falls dein Signal zu lange gesendet wird und dadurch das SAT-Gerät zwar ein- aber auch gleich wieder ausgeschaltet werden könnte.


Was die Hardware betrifft, da nimmst du einfach eine leistungsstarke IR-Diode (z.B. SFH484 oder SFH485).
Diese musst du aber über einen Transistor ansteuern, da sie ggf. einen größeren Strom braucht als der ATMega am Pin liefern kann.
Außerdem musst du den Timer1 für das PWM-Signal frei haben, da BASCOM diesen zum Erzeugen des IR-Signals verwendet.
Hier das Zitat aus der BASCOM-Hilfe:
The resistor must be connected to the OC1A pin.
Ach so.... in der BASCOM-Hilfe ist sogar ein Anschlussbild mit Transistor vorhanden.

Nun solltest du aber wohl alle Infos haben um loslegen zu können. ;)
Wenn sonst noch Fragen, oder Zweifel auftauchen sollten......
Wir sind ja auch noch da. ;)

Wünsche viel Spaß und gutes Gelingen!

Gruß,
Cassio
 
na das hilft mir erstmal weiter. Werd mal schaun was ich da morgen so erreiche wobei ich auch noch die Diode brauche muss ich erstnoch bestellen.
 
Hallo!

Kein Thema!
Hast ja nun erst mal genug Stoff zum abarbeiten und ausprobieren. ;)

Mit der IR-Diode mach dir keinen Stress..... Kannst auch eine Vergleichstype nehmen, wenn die Wellenlänge passt.

Für die ersten Tests würde ich sowieso eine normale LED benutzen.
Wenn die dann flackert weißt du wenigstens, dass die Ansteuerung und Programmmierung in Ordnung sein muss.

Ach so....
Wenn du die IR-Diode sowieso bestellen musst, dann bestell dir doch gleich noch passende IR-Empfänger mit.
Der TSOP1736 ist bestens dafür geeignet, weil er auf das 36kHz Signal abgestimmt ist und eine gewisse Intelligenz besitzt.
So kannst du anschließend auch noch eine IR-Signalkontrolle für Fernbedienungen bauen. ;)

Gruß,
Cassio
 
Hallo
habe mich jetzt nach etwas zeit mal mit der IR Geschicht beschäftigt.

Mit eine normalen LED diese Flakert auch schön.

Code:
$regfile = "m1280def.dat"
$crystal = 16000000
$hwstack = 32
$swstack = 8
$framesize = 24

Dim Togbit As Byte , Command As Byte , Address As Byte      

Command = 12                                               
Togbit = 0                                                
Address = 8                                              

Do
  Waitms 10
  Rc5send Togbit , Address , Command
Loop

End

Wenn ich aber die Teile des Programmes in mein richtiges Programm einfüge dann bleibt das stehen bzw macht irgendwelche undefinierten sachen.

Könnte es am Timer1 liegen das ist das einzige wie ich mir der erklären kann, das die IR sache ja auf dem OC1A hängt.

So sieht der Aufruf in meinen richtigen Programm aus.

Code:
If Uhrzeit = 1500 And Wochentag >= 0 And Wochentag <= 4 Then Rc5send Togbit , Address , Command

Wenn es 15Uhr ist und Mo -Fr dann soll er den IR Code senden.
 
Hallo Maikgen!

Stimmt schon, zm Erzeugen des IR-Signals wird der Timer1 benötigt und auch NUR dieser verwendet (siehe BASCOM-Hilfe).

Ich weiß jetzt nicht, ob du in deinem Programm den Timer1 noch für andere Dinge benötigst.
Wenn das der Fall sein sollte, wird das natürlich nichts. ;)


Zu deinem Code:
Code:
If Uhrzeit = 1500 And Wochentag >= 0 And Wochentag <= 4 Then Rc5send Togbit , Address , Command

Hast du den wirklich so im Programm stehen?

Wie wäre es denn wenn du an einer anderen Stelle prüfst, ob sich der Wochentag zwischen 0 und 4 bewegt..... also kleiner ist als 5! ;)
Dafür setzt du dir dann einen "Merker" (Flag) und baust dies dann mit ein.
Ist eben etwas eleganter.

Du kannst außerdem verschiedene IF-Anweisungen auch verschachteln.
Zum Beispiel:
Code:
If Uhrzeit = 1500 Then
   If Wochentag < 5 Then
      Rc5send Togbit , Address , Command
   Else
   End if
Else
End if

Vielleicht solltest du aber auch einfach mal deinen "$swstack" von 8 auf 32 setzen.
Könnte mit 8 doch vielleicht schon ein wenig knapp werden.


Noch ein Tipp, wenn dass Senden des IR-Signals dann funktioniert.....
Denk bitte dran, dass du mit dieser Variante dann 1 Minute lang das IR-Signal sendest! :eek:
Von 15:00 Uhr bis 15:01 Uhr ! ;)
Auch hierfür kann dir dann wieder ein Flag helfen!


Gruß,
Cassio
 
Ja gut das könnte man so machen wenn wochentag kleiner 5 das stimmt natürlich.

Das mit der Zeit ist erstmal so das er eine Minute lang sendet, ich habe noch eine Variable wo ich das mit sekunden habe also 150000 (hhmmss) das würde ich dann sowie so machen, wollte es nur so erstmal um zu schaun ob überhaupt was passiert.

Mit dem Timer 1 das wird dann wohl mein größeres Problem werden weil ich für den ganzen anden Rest des Programmes Timer 1 benutze gut dann müsste ich schaun das ich einen anderen 16 Bit Timer nehmen kann welchen ich noch nicht durch eine PWM in beschlag habe.
Ist schon scheiße wenn man so drüber ist und einen fallen dann noch so Sachen ein was man noch alles machen könnte.
Zumal es aber auch immer wieder eine herausforderung ist die sachen dann auch hin zu bekommen. Aber dafür gibt es ja zum Glück auch euch hier
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)