Forum: Compiler & IDEs PICAXE Sony SIRCS


von Tetra U. (user2412)


Lesenswert?

Hallo!
Ich bin gerade dabei den Sony SIRCS code mithilfe eines PICAXE(18M2) 
"nachzubilden". Das Problem dabei: die IR led leuchtet zwar, 
funktioniert aber am Test-TV gerät nicht! Mein Code:


'Remote: Sony
'Device: TV --> Device Code = [BIN]00001
'Command: Power --> Command Code = [HEX]15 ; [DEZ]21 ; [BIN]0010101
'Protokoll:SIRCS Sony
'Datenword:
  'Lead-in:2400µs high, 600µs low
  '7 Bit Command: LSB is left and MSB is right.
  '5 Bit Device:LSB is left and MSB is right
'Modulation Frq:40kHz
  'Space-Pulse Verhältnis:50%

w0 = 4500 'The whole Data word = 45ms
main:

  w0 = 4500

  'Startsquence
  gosub startseq

  'Command 7 Bit, LSB first
  gosub one
  gosub zero
  gosub one
  gosub zero
  gosub one
  gosub zero
  gosub zero

  'Device 5 Bit, LSB fist
  gosub one
  gosub zero
  gosub zero
  gosub zero
  gosub zero

  pwmout B.3,0,0
  pauseus w0     'All that remains form the 45ms
  goto main


zero:

  pwmout B.6,24,50    'PWM 40kHz and 50% Pulse-Space
  pauseus 60      '600µs Pause (x10)
  pwmout B.6,0,0
  pauseus 60
  w0=w0-120
  return

one:
  pwmout B.6,24,50
  pauseus 120
  pwmout B.6,0,0
  pauseus 60
  w0=w0-180
  return


startseq:
  pwmout B.6,24,50
  pauseus 240
  pwmout B.6,0,0
  pauseus 60
  w0=w0-300
  return

Bitte um Hilfe. Möglicherweise verbrauche gewisse Befehle zu viel Zeit, 
wie etwa gosub oder pwmout selbst. Gibt es villeich andere 
Lösungsansätze?

von Klaus W. (mfgkw)


Lesenswert?

Das ist kein gültiges C.

von Helfer (Gast)


Lesenswert?

> Das Problem dabei: die IR led leuchtet zwar,

Eine IR-LED solltest du mit bloßem Auge nicht leuchten sehen. Benutzt du 
Hilfsmittel zur Betrachtung der IR-LED (z.B. Camcorder mit NightShot) 
oder hast du eine falsche LED (für sichtbares Licht) eingebaut?

>  'Lead-in:2400µs high, 600µs low
>  '7 Bit Command: LSB is left and MSB is right.
>  '5 Bit Device:LSB is left and MSB is right
>  'Modulation Frq:40kHz
>  'Space-Pulse Verhältnis:50%

Hast du Möglichkeiten das gewünschte Timing zu überprüfen?

>  pwmout B.6,24,50
>  pauseus 120
>  pwmout B.6,0,0
>  pauseus 60

Eine andere Methode ist es die PWM durchlaufen zu lassen und die 
Erzeugung der 1 oder 0 durch dazuUNDen eines Steuerpins zu machen. Du 
würdest den ganzen Code für die PWM Einstellerei in den Unterprogrammen 
sparen!

Das Modulieren der PWM mit den Steuerbits durch das UND kann man per 
Hardware machen (externer 74xx). Du brauchst dann einen weiteren Pin 
am PICAXE.

Oder indem man die Sende-IR-LED (bzw. die Treiberschaltung für eine 
leistungsfähige IR-LED) zwischen den PWM-Ausgabepin (wenn der PICAXE 
Hardware-PWM hat...) und einen Steuerpin hängt.

PWM-Pin o-----+
              |
              #
              # Vorwiderstand
              #
              |
              ^ IR-LED
              -
              |
Steuerpin o---+

von Stefan E. (sternst)


Lesenswert?

Klaus Wachtler schrieb:
> Das ist kein gültiges C.

Muss es ja auch nicht sein. Der GCC kann noch andere Sprachen neben C. 
;-)

Obige aber wohl eher nicht, insofern ist natürlich das, was du damit 
eigentlich ausdrücken wolltest (total Offtopic), schon richtig.

von Klaus W. (mfgkw)


Lesenswert?

Wenigstens einer der mich versteht :-)

von Helfer (Gast)


Lesenswert?

Die Mods sind hier ganz pfiffig, die werden das schon ins passende 
Unterforum "Mikrocontroller und Elektronik" verschieben...

von Tetra U. (user2412)


Lesenswert?

Die IR led leuchtet ganz bestimmt. Ich überprüfe es mit einer Kamera und 
sogar mit einem IR empfänger am Serial Port zur Analyse(WinLIRC). Tut 
mir Leid, dass es kein C Sourcecode ist, weil ich den PICAXE in Basic 
programmiere.
Habe leider keine Möglichkeit, das Timing zu überprüfen und glaube ,dass 
genau dies das Problem ist. Die Idee mit dem UND Gatter (hoffe verstehe 
das richtig) und dem Steuerping find ich gut! Würde mich freuen, wenn 
mir jemand eine genaue Bauteil/Produkt-bezeichnung sagen könnte, da ich 
auf diesem Gebiet keine Ahnung habe.
Danke für die Hilfe.

von Helfer (Gast)


Lesenswert?

> sogar mit einem IR empfänger am Serial Port zur Analyse(WinLIRC).

Kannst damit kein primitives Timing aufzeichnen? In der Doku ist im 
Abschnitt Checking The Receiver dafür IRGraph angegeben. Ein anderes 
nützliches Tool könnte RawCodes sein. Wenn du es schaffst eine 
Kurvenform aufzuzeichnen, kannst du im PICAXE Code mit an den 1/0 Zeiten 
und den Bitfolgen drehen und beobachten, wie lange der Empfänger das 
fehlerfrei aufzeichnet.

Passen die 40 kHz Trägerfrequenz zu deinem IR-Receiverbaustein? Bist du 
nah genug mit der Sende-LED am Empfängerbaustein?

Zu möglichen Bausteinen schau im Artikel 74xx nach. Straightforward 
wäre ein UND also ein 74HCT08. Du kannst aber auch aus drei Gattern aus 
einem NAND IC wie dem 74HCT00 ein UND basteln. Wie steht u.a. in der 
Wikipedia.

von Tetra U. (user2412)


Lesenswert?

Danke für die Hilfe!
Habe das ganze mit dem UND Gatter und einem Steuerport gelöst.
Hab jedoch den PICAXE nur mehr als PWM Generator im Einsatz, da er zu 
langsam ist, um im µs Bereich zu arbeitet. Stattdessen verwende ich 
einen Arduino ATMEGA328 und es funktioniert!!!!
Nur noch eine Frage: hat jemand einen Ahnung wo ich eine Liste mit den 
NEC Infrarot Adresses und Command Codes herbekomme??

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
Noch kein Account? Hier anmelden.