Nec Ir Fb

Bonze

Neues Mitglied
16. Jan. 2010
516
0
0
Altenkirchen (Pfalz)
Sprachen
  1. BascomAVR
hab mir füe mein projekt nun solch eine Fb zugelegt
http://www.dealextreme.com/p/24-key...troller-for-rgb-led-light-bulb-1-cr2025-47019

sie soll mit dem NEc protokoll laufen, jedoch sind alle beispiele welche man im inet findet mit nem 8Mhz quarz für den Mega8, hab aber nen Mega8 mit 16mhz, und ich wundere mich warum ich kein beispiel zum laufen bekomme.

an meinem Datapin am TSOp1136 liegen 2,3V an, bei betätigung der Fb sinds nurnoch 1,9V.daraus schließ ich das Hardwaremässig alles richtig verdrahtet ist,.

Ich bekomme jedoch kein richtiges ergebnis,. irgendwie muss es timing probs beim auslesen des signals geben.
 
Hallo Bonze!

Wenn es schon fertige Beispiele gibt, warum kannst du die dann nicht verwenden?
Hast du mal einen Link zu so einem Beispiel?

Mit einem Multimeter wirst du bei IR-Signalen nicht weit kommen.....
Das du einmal 2,3V und einmal 1,9V messen kannst sagt leider nichts zum Protokoll aus.
Es handelt sich dabei höchstens um den RMS-Wert aller High- und Lowflangen des Signals.

Hast du kein Scope zur Hand?

EDIT:

Habe schon einen LINK zu MCS gefunden !

Grüße,
Cassio
 
ja wolte eigentlich mit nem logic analzyer für den parallelport mal nachschauen, die funzen aber in wondows xp nicht, mal schauen ob ich sie via vmware zum laufe bekomme,.
 
Hi zusammen,

ich hab letztens glaube ich auf mikrocontroller.net was über diese FB gelesen.
Glaube ich. Da gabs auch nen Link auf eine Seite mit FB-Protokollen und
Beispielen ... verdammt wo war das ... :confused:
Oder war das in so einem LED-Forum ... :confused:

Gefunden ...
NEC-Protokoll
NEC-Decoder für PIC
Ist zwar für nen PIC aber wenn man es analysiert kann man evtl was mit
anfangen. Auf diese Seite bin ich von irgendeiner anderen gekommen. Die
habe ich mir aber leider nicht gemerkt :(

Gruß
Dino
 
du meinst doich bestimmt den hier oder :D?
http://www.ledstyles.de/fpost68411.html?highlight=fernbedienung#post68411

z.B. das programm,
sieht eigentlich ganz logisch aus, funzt aber nich
Code:
$regfile = "m8def.dat"
$crystal = 16000000                                         'externer Takt

Config Pind.2 = Input

'Irpin Alias Pind.2

Dim Signal As Byte                                          'IR-Signal
Dim Signal1 As Word
Dim Signalspeicher As Byte                                  'IR-Signal letzte Abfrage
Dim X As Byte

Enable Interrupts
Enable Int0
Config Int0 = Falling
On Int0 Irabfrage

Enable Timer0
Config Timer0 = Timer , Prescale = 8
On Timer0 Timer_irq
Const Timervorgabe = 56


'##HAUPTPROGRAMM#######################################################################################
'######################################################################################################

Do
'Print "Signal " ; Signal
'% Helligkeit + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% A1 %%%%%%%%%%%%%%%%%%%
If Signal = 0 Then

End If


'% Helligkeit - %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% A2 %%%%%%%%%%%%%%%%%%%
If Signal = 1 Then

End If


'% AUS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% A3 %%%%%%%%%%%%%%%%%%%
If Signal = 2 Then

End If


'% AN %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% A4 %%%%%%%%%%%%%%%%%%%
If Signal = 3 Then

End If


'% Schneller %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% B1 %%%%%%%%%%%%%%%%%%%
If Signal = 4 Then

End If


'% Langsamer %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% B2 %%%%%%%%%%%%%%%%%%%
If Signal = 5 Then

End If


'% Blau %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% B3 %%%%%%%%%%%%%%%%%%%
If Signal = 6 Then

End If


'% Weiss %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% B4 %%%%%%%%%%%%%%%%%%%
If Signal = 7 Then

End If


'% Orange %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% C1 %%%%%%%%%%%%%%%%%%%
If Signal = 8 Then

End If


'% Türkis %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% C2 %%%%%%%%%%%%%%%%%%%
If Signal = 9 Then

End If


'% Dunkelblau %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% C3 %%%%%%%%%%%%%%%%%%%
If Signal = 10 Then

End If


'% Flash %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% C4 %%%%%%%%%%%%%%%%%%%
If Signal = 11 Then

End If


'% Orange %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% D1 %%%%%%%%%%%%%%%%%%%
If Signal = 12 Then

End If


'% Hellblau %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% D2 %%%%%%%%%%%%%%%%%%%
If Signal = 13 Then

End If


'% Lila %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% D3 %%%%%%%%%%%%%%%%%%%
If Signal = 14 Then

End If


'% STROBE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% D4 %%%%%%%%%%%%%%%%%%%
If Signal = 15 Then

End If


'% Dreckgelb %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% E1 %%%%%%%%%%%%%%%%%%%

If Signal = 16 Then

End If


'% Hellblau2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% E2 %%%%%%%%%%%%%%%%%%%

If Signal = 17 Then

End If


'% Lila2 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% E3 %%%%%%%%%%%%%%%%%%%

If Signal = 18 Then

End If


'% FADE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% E4 %%%%%%%%%%%%%%%%%%%
If Signal = 19 Then

End If


'% Gelb %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% F1 %%%%%%%%%%%%%%%%%%%

If Signal = 20 Then

End If


'% Hellblau3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% F2 %%%%%%%%%%%%%%%%%%%

If Signal = 21 Then

End If


'% Lila3 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% F3 %%%%%%%%%%%%%%%%%%%

If Signal = 22 Then

End If


'% SMOOTH %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% F4 %%%%%%%%%%%%%%%%%%%
If Signal = 23 Then

End If


Loop

'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%



'######################################################################################################
'##IRabfrage###########################################################################################

Timer_irq:
  Timer0 = Timervorgabe
  Incr X

Return


Irabfrage:

If X > 30 Then
Signal1 = 0
Elseif X > 16 Then
Shift Signal1 , Right
Signal1.15 = 1
Elseif X < 16 Then
Shift Signal1 , Right
End If

X = High(signal1)
X = Not X

If X = Low(signal1) Then
Signal = Low(signal1)
End If

X = 0


'Gifr = Gifr Or &H40
Return
 
Hallo!

Puh.... hinter dem Link ist das aber eine Lösung von Hand.

Interessant finde ich diese Angaben:
Carrier frequency of 38kHz
Bit time of 1.12ms or 2.25ms

Dein TSOPxx36 wird bestimmt Signale ausgeben..... aber ein TSOPxx38 wäre dafür wohl besser geeignet. Gerade weil die Signale nur 1,12ms ("0") oder 2,25ms ("1") betragen.

Im Beispiel wird er Timer0 mit einem Prescaler von 256 verwendet.
Der Empfängerpin sitz am INT0 des AVR.
Es wird also ein Interrupt ausgelöst und der Timer mit 253 gestartet.

Ich denke, dass wird mit dem Timer0 bei 16MHz nicht mehr funktionieren..... oder habe ich das falsch überschlagen? :hmmmm:

Gruß,
Cassio
 
mh keine ahnung ,

hab den 1136 und den 1836 hier liegen, beide verhalten sich gleich bei betätigung der fb ,
Der Data pin ist am INT0 des Mega8 angeschlossen

Den code versteh ich schon, nur wie berechnet man das, könnteste das mal kurz erklären ?
er zählt von timer0 startwert bis 65535?
mei nem takt von 16MHz zählt er pro s ?
......?
 
Hallo Bonze!

Der Timer0 ist doch nur 8Bit breit.
Also kann er auch nur bis 256 zählen. ;)

Schade, dass man den Timer nicht mal per TCCR0 mit einem Prescaler von 512 laufen lassen kann....

OK, dann nehmen wir mal die Werte aus dem Beispiel von MCS:
Dort sind es 8MHz Takt, 256 Prescaler, und 3 Zähler zum Überlauf.

Da du nun einen 16MHz Takt hast und man keinen Prescaler von 512 verwenden kann, bleiben wir bei 256.

16MHz / 256 = 62500
62500 / 10416,66 = 6

Demnach würde ich es mal beim Timer0 mit Prescale 256 probieren und den Timer0 dann mit 250 laden.

Vielleicht klappt es ja. ;)

Gruß,
Cassio
 
er zählt von timer0 startwert bis 65535?
Der Timer0 ist ein 8-bit Timer, der zählt nur bis 255.
Mit 56 Startwert und prescaler 8 berechnet sich die Überlaufzeit zu
16.000.000 / 8 / 200 = 10000 pro sec, also 0.1ms

Code:
Irabfrage:
   If X > 30 Then                        ' >3.0ms ~ Start des Signals
      Signal1 = 0
   Elseif X > 16 Then                   ' >1,6ms ~ 1
      Shift Signal1 , Right
      Signal1.15 = 1
   Elseif X < 16 Then                   ' <1,6ms ~ 0
      Shift Signal1 , Right
   End If
   X = High(signal1)                    
   X = Not X
   If X = Low(signal1) Then
      Signal = Low(signal1)
   End If
   X = 0
Return

Es werden 32 Bit übertragen, am Ende steht in High(Signal1) der Befehl und in Low(Signal1) der negierte Befehl. Nach 16 Bit sollte in High Byste die Adresse stehen, im Low Byte die negierte Adresse.
Soweit sollte diese recht einfache Einleseroutine funktionieren.
Sie macht allerdings überhaupt keine Checks zu den Längen der Signal und der Pausenzeiten. Ebensowenig wird die Anzahl der übertragenen Bits mitgezählt, geschweige denn überprüft.
In deinem Programm wird überhaupt keine Aktion ausgeführt, wenn ein Signal empfangen wurde. Ist das Absicht?

HBA
 
Hi Bonze!

Ach so....
Hast du in der Strichzeichnung gesehen, dass dort ein 47k Widerstand als Pullup am Data-Pin des IR-Empfängers eingesetzt wurde?

Code:
       IR  36kHz         ATMEGA  8                                         *
'*         .-O-.           .--_/--.                                        *
'*         |___|   /-[10k]-|Res    |                                        *
'*          |||    |       |       |                                        *
'*       /--/||    ---   |       |                                        *
'*       |   |*--------+---|Pd2 Pc2|----[510]-----|>|----  LED             *
'*       |   ||        |   |       |                     |                  *
'*       |   [B]|-[47k]--*[/B]   |       |                     |                  *
'*       |   *--[100]--*---|Vcc GND|---------           |                  *
'*       *---+---------+---|GND    |         |           |                  *


Gruß,
Cassio
 
Das sieht ja nicht genau wie erwartet aus. Damit wird die Auswertung nach dem led-styles Programm sicher nicht funktionieren.
Sieht das Bild bei mehrmaligem Drücken der On-Taste immer gleich aus?
Zeige auch mal, wie die Ausgabe der anderen Tasten aussieht.

HBA
 
Hallo Bonze!

Wie ist denn deine Aufzeichnung zu verstehen?
Ich meine....
Warum startet das Signal bei GND, springt dann auf Vcc, dann folgen die Signale und am Schluss kommt wieder GND? :hmmmm:

Eigentlich ist doch der Ausgang des IR-Empfängers immer High, also Vcc.


Ich gehe jetzt einfach mal davon aus, dass die Signale wie sonst auch zu GND ziehen.
Wenn ich mich nicht verzählt habe, dann sind es 29 Signale (Bits). :hmmmm:
Die Pausen, die es bei einem NEC-Code geben soll, tauchen leider auch nicht auf.



Tja und nun?
Hast du noch mehr Tasten ausprobiert und ggf. auch mal die selbe Taste öfter nach einander gedrückt?


Grüße,
Cassio



Hier (noch mal) mal ein Scope-Bild vom Kaseikyo-Protokoll:
RECS80-Tuner-Testsignal.gif
(Also nix RECS80)
 
Hallo Cassio,
ich glaube nicht, dass dies ein RECS80 Protokoll ist. Ein RECS80-Satz besteht nur aus 13 Bit. Bei dir sind es 48 Bit.
Außerdem sind die Pausenzeiten/Pulszeiten 0,14ms/7,6ms für eine 1 und 0,14ms/5,06ms für eine logische 0. Es gibt kein Startbit mit abweichender Länge sondern immer 2 mal logisch 1 zu Anfang.
Dein Bild zeigt ein Japan (Kaseikyo) Protokoll. Es hat 48 Bit, Pause/Puls von 0,42ms/0,42ms für eine 0 und 1,27ms/0,42ms für eine 1. Das Startbit ist 3,38 zu 1,69ms lang.

HBA
 
Dein Bild zeigt ein Japan (Kaseikyo) Protokoll.

Hallo HBA!

Ich habe das Signal von einer Panasonic-FB aufgenommen, die lt. Angaben vom technischen Kundendienst das RECS80-Protokoll verwenden soll. :hmmmm:

Ich habe mich mit dem Signal noch nicht weiter befasst.... das kommt erst in ein paar Wochen dran. ;)

Letztlich ist es mir sogar persönlich wurscht, welcher IR-Code dahinter steht! ;)
Wenn überhaupt, dann muss ich genau das oben gezeigte Signal senden.... und dass muss ich vermutlich programmiertechnisch sowieso von Hand erledigen. :rolleyes:


Danke dir aber , für den Hinweis!

Grüße,
Cassio
 
W
Hallo Cassio,
was willst du denn damit machen? Und wieweit bist du denn schon damit?
Ich hatte mal angefangen, einen universellen Sender für IR Codes zu schreiben. Die Weiterentwicklung habe ich aber zunächst mal zurückgestellt - du weißt schon: WordClock.
Wenn du Interesse hast, kann ich davon etwas einstellen. Für NEC, RC5 und RECS80 habe ich das auch schon fertig, deinen Japan Code leider noch nicht. Ist aber keine große Arbeit.

HBA
 
Hallo HBA!


Boah.... so einen Sender hast du schon fertig? :eek:
Ich weiß noch nicht wann ich dazu komme...... und wann es fertig sein wird.
Es kommt eben darauf an, wen du hier zu Hause bei mir fragst. ;)

Wie schon gesagt.... wenn, dann benötige ich eigentlich nur das eine Signal.
Du kannst dir aber sicher sein, dass ich mich bestimmt bei dir melden werde und danach frage..... bevor ich hier verzweifle. ;)


Grüße,
Cassio
 

Anhänge

  • fb Kopie.png
    fb Kopie.png
    38,1 KB · Aufrufe: 16

Ü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)