Es handelt sich um eine T+A F2000AC für ein P2000AC Vorverstärker.
Aber siehe da.. Unobtanium, einziger anbieter verlangt 200€ dafür!
Nach kurzer recherche stellte sich heraus dass in dieser ein SDA2208 IC verbaut ist, ziemlicher Altbacken von Siemens aber noch Kaufbar, wenn auch nicht günstig.
https://pdf1.alldatasheet.com/datasheet ... 208-3.html
Nachteil dabei.. es sind keine gängigen RC5 codes, mit Universalfernbedienung wird das also nichts. Über den IR Blaster an meinem Handy konnte ich auch mit keiner Konfiguration das Gerät ansprechen.
Also nagut, ich habe das Datenblatt und der Empfänger.
Dann mach ich mir eben ein Devboard und finde die tasten selbst raus.
Aber günstig wird das nicht, macht ja kein sinn wenn das projekt am ende so viel kostet wie die Fernbedienung selbst.
Also habe ich mir stattdessen ein Emulator in Arduino geschrieben, der die Pulse nachahmt und ich bequem per Serieller eingabe die Instruktion eintippen kann und sehe, was am Gerät passiert.
Der Code dazu ist folgender:
Code: Alles auswählen
#define LEDPIN 13
#define CLOCK 530
void sendbit(boolean _state){
boolean _t=true;
if(!_state){
digitalWrite(LEDPIN,0);
delayMicroseconds(240000/CLOCK);
}
for(int _i=0;_i<32;_i++){
digitalWrite(LEDPIN,_t);
delayMicroseconds(7000/CLOCK);
_t=!_t;
}
if(_state){
digitalWrite(LEDPIN,0);
delayMicroseconds(240000/CLOCK);
}
}
void sendcmd(int _b, boolean _last, byte _typ){
if(_typ==2){//stop command
delay(55000/CLOCK);//time interval before end cmd
//_b=0b000000000
}
sendbit(1);// send pause
delayMicroseconds(1050000/CLOCK);
sendbit(1);// start bit
Serial.print("TX:");
for(int _i=15;_i>=7;_i--){
Serial.print(bitRead(_b,_i));
sendbit(bitRead(_b,_i));
}
Serial.println();
digitalWrite(LEDPIN,0);
if(!_last && _typ==1){ // info cmd
delay(40000/CLOCK);//time interval between info commands
}
if(_typ==0){//start cmd
delay(10000/CLOCK);//time interval after start cmd
}
}
void setup() {
pinMode(LEDPIN,OUTPUT);
Serial.begin(115200);
Serial.println("c<number> to set command, enter number from 0-63 to send data");
}
byte instr = 50;// 0-63
byte cmd = 1; // 0-7
boolean iscmd = false;
byte i=0;
boolean validinfo=false;
String str;
void loop() {
if(Serial.available()>0){
byte data=Serial.read();
if(data != 0xa){
if(data!='c'&&!iscmd&data>=48&&data<=57){
validinfo=true;
if(i<2){
str +=(char)data;
i=i+1;
}
}
if(iscmd){
str=(char)data;
cmd=(byte)str.toInt();
str="";
//Serial.println(cmd);
if(cmd>7){
//Serial.println("cmd over 7, limit to 0-7");
cmd=7;
}
validinfo=false;
iscmd=false;
}
if(data=='c'){
iscmd=true;
Serial.print("Set CMD to ");
Serial.println(cmd);
}
}
if(data == 0xa && validinfo){
if(i>0&&i<=2){
instr=str.toInt();
if(instr>63){
Serial.println("instr over 63, limiting..");
instr=63;
}
str = "";
unsigned int b2 = 0;
unsigned int b = 0;
for(byte _i = 0;_i<16;_i++){
if(bitRead(instr,_i)){bitSet(b,15-_i);}
}
for(byte _i = 0;_i<15;_i++){
if(bitRead(cmd,_i)){bitSet(b2,15-_i);}
}
b2 = b2>>6;
b = b | b2;
Serial.print("Sending instr "); Serial.print(instr); Serial.print(" cmd: "); Serial.println(cmd);
Serial.print("BIN:"); Serial.println(b>>7,BIN);
sendcmd(0b1111111111000000,0,0);
sendcmd(b,1,1);
sendcmd(0b1111111111000000,1,2);
i=0;
}else{
Serial.println("enter value from 0 to 63");
i = 0;
}
}
}
/* int b = instr<<3;
b = b | (cmd);
//bytes, last, type
sendcmd(b,1,0);//start
sendcmd(b,1,1);//info repeat if kept pressed
sendcmd(b,1,2);//stop
*/
}
zu erkennen, das Pre-signal, ein interval von 5x dem signal, der start bit sowie die 9 datenbits.
da ich auch nicht weiß, welcher Resonator verwendet wurde, habe ich eine variable bzw. define gemacht wo man die khz angeben kann. 500 scheint perfekt zu passen. 450 geht schon nicht mehr.
jeder bit wird mit 16 zyklen moduliert
lediglich den letzten datensatz habe ich weggelassen da er manchmal doppelte den empfang registrierte aber mit 2 sätzen klappts auch. das datenblatt vom sda2208 schreibt start, info und stop datensatz, aber nicht was in start und stop stehen soll. hab einfach den eigentlichen datensatz da reingepackt, funktionierte also was solls.
Als IR Sender habe ich eine kaputte fernbedienung geschlachtet, da ich keine IR Leds zur hand hatte.
Nachdem ich geprüft habe, dass die Daten auch von einem IR Empfänger wie diesem
empfangen wurden, ging es an das trial and error... was die ganze nachte dauerte.
Eintippen, beobachten, aufschreiben.
ich konnte aber leider nur die Befehle erkennen, die für mein Gerät bestimmt waren. Die Befehle für den Tuner und CD player konnte ich jetzt nicht herausfinden.
Also los. Instruktion 40, tone-control bass left.
und zack, funtzt
dabei war es egal ob ich über command 1 2 oder 3 sende. nur 4 bis 7 ging nicht.
Code: Alles auswählen
COMMAND 1 2 or 3
instr rs232-response
matrix
command
0 1A VOL-
1 1B VOL+
2 1C TREB.R
3 1D TREB.L
4 1E BASS.R
5 1F BASS.L
6 1G BAL. R
7 1H BAL. L
8 2A
9 2B
10 2C
11 2D
12 2E TONE
13 2F LOUDNESS
14 2G SPK.A
15 2H SPK.B
16 3A 4
17 3B
18 3C
19 3D
20 3E
22 3F
21 3G
23 3H 1
24 4A 2
25 4B PROG
26 4C 3
27 4D
28 4E PRE TOG
29 4F OFF
30 4G STORE
31 4H USER
32 5A STBY
33 5B
34 5C 8
35 5D 7
36 5E 5
37 5F
38 5G
39 5H 9
40 6A
41 6B
43 6C DAT
42 6D TAPE
44 6E
45 6F
46 6G MM
47 6H AUX
48 7A 0
49 7B CD
50 7C
51 7D
52 7E REC SRC
54 7F
53 7G
55 7H 6
56 8A
57 8B MC
58 8C TUNER
59 8D
60 8E IN SRC
61 8F
62 8G
63 8H
Das war das ergebniss:
Nur die aufteilung der tasten finde ich etwas komisch, ich hätte die nach der gitter matrix im Datenblatt angeordnet und die Firmware auf dem gerät entsprechend danach angepasst...
einige tasten fehlen, besonders die pfeiltasten sind ärgerlich weil diese für die Menu navigation benötigt werden.
Nagut, mein Gerät hat noch eine alte firmware ohne die Menüfunktion unter PROG 00, daher benötige ich diese nicht. und CD Spieler sowie Tuner sind altbacken und können mir fern bleiben.
Ich lege aber die fehlenden tasten als lötbuchsen auf die platine falls ich die restlichen tasten doch noch rausfinde.
Die Nächsten schritte sind eine Platine zu machen mit den Knöpfen die ich benötig und ein sda2208 IC bestellen.
Das kommt dann alles in ein 3d gedrucktes gehäuse.
bilder kommen dann noch^^
EDIT: tabellen/bilder/code aktualisiert^^ da warn fehler drinn