Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: Daten aus Specher anwenden Kategorie: Programmierung Basic (von MaPi - 16.12.2009 12:36)
 Als Antwort auf Re: Daten aus Specher anwenden von Flystec - 14.12.2009 16:41
MaPi nutzt:  CC1-Unit V1.1, CC1-M-Unit V1.1, CC1-Station V1.1, C-Control 2
Hallo Flystec,
Deine Idee ist soweit verstanden. Zu dem Thema komme ich weiter unten.
Doch erstmal zu dem einfacheren Teil:
1. Du meinst, Deine Ausgabe der im EPROM gespeicherten Bitfolge auf die LED funktioniert nicht.
Auf Basis der von Dir gezeigten Routine würde ich erwarten, dass der Inhalt der im EPROM gespeicherten Bitfolge an der LED sichtbar wird. Habe es mal mit dem Simulator durchgespielt - funktioniert.
Hier meine Frage: Wird denn beim Lesen des Bitstroms aus dem EPROM auch eine Bitfolge <>0 gelesen, so dass die LED blinken kann? Dazu müsste Dein Programm ja so eine Bitfolge von zB. 1011101010 (willkürlich gewählt) auf RS232 ausgeben. Wenn ja, dann erwarte ich, dass die LED im als Abbild des Bitstroms blinkt. Wenn es nur NUllen sind, dann blinkt natürlich nichts. Ich setze voraus, dass Deine LED-Schaltung funktioniert (das hast Du ja geschrieben).

2. Nun zum eigentlichen Problem Deines Projekts:
Mit Deinem Aufbau wirst Du keine gültigen IR-Signale reproduzieren, die von einem Gerät korrekt interpretiert werden. Wie Ogoianer schon richtig bemerkte: U.a. ist BASIC zu langsam dafür.

Generell mußt Du Dich erstmal schlau machen, was IR-Signale sind bzw. wie sie generiert bzw. empfangen werden. Folgende Fragen stelle ich mir:
a) Ist ein Fototransistor (auch von Fremdeinflüssen her gesehen) eine für IR-Empfang ausreichende Komponente, um IR-Signale fehlerfrei zu empfangen?
b) Du möchtest den Bitstrom einer Fernbedienung "blind" mitlesen, ohne die Anzahl der zu lesenden Bits bzw. die Dauer des Bitstroms zu kennen. Welches Timing und welcher Speicherbedarf sind dazu notwendig, um jedes Bit bzw. Flankenwechsel des Bitstroms eindeutig abzutasten und zu speichern?
c) Apropos Flankenwechsel: Es gibt unterschiedliche IR-Protokolle je nach Gerätehersteller - die unterscheiden sich in der Kodierung der übertragenen Information als auch in der Trägerfrequenz. D.h. es sind sowohl Unterschiede der Software bzw. auch der Hardware zu berücksichtigen.
d) Wie willst Du die IR-Signale erzeugen? heute hast Du ja nur ne normale LED zur Kontrolle.

Hier ein paar Gedanken zu o.g. Punkten:
zu a): IR-Empfang mit einem normalen Fototransistor kannst Du mal weiterverfolgen. Laut Deiner Infos kommt ja was an. Allerdings bin ich nicht ganz von dem Aufbau überzeugt, da wie gesagt Fremdlicht bzw- signale und Toleranzen Deines Aufbaus den Empfang startk beeinflussen. Ich würde vorschlagen, dass Du einen TSOP17xx (xx für die entsprechende Trägerfrequenz) für den IR-Empfang nutzt. Die Geräte haben auch solche o.ä. Komponenten drin. Die Trägerfrequenz sollte halbwegs mit der Deiner Fernbedienung passen. Dabei sollte es keinen grossen Unterschied machen, ob Du z.B. 36kHz statt 38kHz nutzt (Einbuße der Reichweite).

zu b): Sorry, aber da kommst Du mit BASIC wirklich nicht weiter. Da musst Du auf Assembler umsteigen, um sehr schnell und in definiertem Zeitraster die Signalpegel abzutasten. Nur das garantiert Dir, dass Du dieses empfangene Signal auch zeitlich wieder reproduzieren kannst.
Dieses Timing als auch die Dauer bzw- Länge des Bitstroms bestimmen den Speicherbedarf für die einzelnen Samples, die Du "blind" tastest. Hier mal ne beispielrechnung anhand des NEC-IR-Protokolls:

NEC IR-Protokoll:
- ne 0 wird durch 560us HIGH-Pegel und 560us LOW-Pegel dargestellt (=1.12ms) (am TSOP-Ausgang)
- ne 1 wird durch 560us HIGH-Pegel und 1680us LOW-Pegel dargestellt (=2.24ms)  (am TSOP-Ausgang)
- das NEC-IR-Protokoll überträgt 4*8Bits + Start- (13.5ms) und Stopbit (560us) als Paket
- die Dauer eines kompletten Pakets beträgt demnach zwischen ~50ms (alles 1) und ~86ms (alles 0)

--> um o.g Zeitraster von 560us fehlerfrei darzustellen, musst Du mindestens alle 320us (>3.125kHz)abtasten, also 320us/bit
--> um ein Paket mit o.g. Frequenz abzutasten benötigst Du demnach zwischen 50ms/320us/bit = 157bit (=20Byte) bis 86ms/320us/bit = 269bit (=34Byte). Das ist mit den 24Byte Userspeicher der CControl1.1 nicht zu machen - Du musst also Alternativen finden. Das EPROM scheidet meiner Meinung nach aus, da der Vorgang des Schreibens (und später auch des Lesens) zu lange dauert. Du kriegst einfach die Bitzustände nicht so schnell weg --> vielleicht ein Packalgorithmus anwenden oder ein externes RAM ansteuern? Vielliecht hilft es, die andersweitig genutzen Bytes im CControl1.1 RAM zu nutzen...
Du siehst, hier liegt der Flaschenhals des Projekts.

c) das könnte man sicher mit b) erschlagen.
d) Du musst natürlich ne IR-LED mit entsprechend dimensionierten Vorwiderstand nutzen, um Reichweite zu erhalten und trotzdem die LED zu schonen. Für die Ansteuerung der Geräte muss die Trägerfrequenz erzeugt (wie gesagt im Bereich von ca. 30kHz...40KHz je nach Gerät) und diese mit dem Bitstrom moduliert werden . Das Timing der Trägerfrequenz ist für die CC1 zeitlich kritisch und müsset auch in Assembler erzeugt werden, außer Du nutzt eine externe Quelle (NE555), der vom Bitrom der CC1 getastet wird.

Soviel erstmal dazu. mach Dich mal schlau hier auf der Seite. Da gibt es ein bisschen Info zum Thema IR-Sendung/Empfang (z.B. mit Sony-Protokoll bzw. NEC-Protokoll) unter Nutzung dre CC1.

O.g. Thema wird einfacher, wenn Du weißt, mit welchem Protokoll Du empfangen/senden willst. Dann ist der Aufwand relativ moderat - ist dann aber auch nicht universell einsetzbar...

Melde Dich nochmal. Wenn notwendig, können wir offline weiter diskutieren per email.

MfG, MaPi

 Antwort schreiben

Bisherige Antworten:

Re: Daten aus Speicher anwenden (von Flystec - 16.12.2009 17:10)
    Re: Daten aus Speicher anwenden (von MaPi - 16.12.2009 19:50)
        Re: Daten aus Speicher anwenden (von Flystec - 18.12.2009 14:59)
            Re: Daten aus Speicher anwenden (von MaPi - 18.12.2009 19:38)
                Re: Daten aus Speicher anwenden (von Flystec - 21.12.2009 17:13)
                    Re: Daten aus Speicher anwenden (von MaPi - 22.12.2009 20:46)
                       Re: Daten aus Speicher anwenden (von Flystec - 23.12.2009 12:15)
                          Re: Daten aus Speicher anwenden (von MaPi - 4.01.2010 11:00)
                             Re: Daten aus Speicher anwenden (von Flystec - 6.01.2010 13:13)
                                Re: Daten aus Speicher anwenden (von MaPi - 9.01.2010 0:24)
                                Re: Daten aus Speicher anwenden (von MaPi - 6.01.2010 20:34)