Styrning av underhållsvärme!
Styrning av underhållsvärme!
Hej jag har nu en fungerade test version av en ir styrning för Sanyo luftvärmepump. Sanyo har normalt ingen funktion för att kunna köra underhålls värme och sedan gå över till normal drift. Har läst av protokollet och gjort en egen styrning som jag kan slå på av via GSM.
Svårt att ta bilder just nu när jag inte är på platsen installationen är gjort. Här är i alla fall en lite bild hur ir är kopplad.

Köpte mig ett velleman PCSU1000 OSCILLOSCOPE. Vist inte mycket om OSCILLOSCOPE innan så jag viste inte vad jag skulle kolla efter och så. Begränsingen på detta verkar vara att det inte är så mycket minne. Men det är API med för att göra egen program så jag gjorde ett som läste av ir kontrollen och bara gav mig ettor och nollor. Koden från fjärren är 152bitar lång så det hade varit nästan ommöjligt att läsa av utan det egena programet. Här är ett exempel hur ett kommando kan se ut.
00000010000000000010100000000001011101101000000000010101000101111100000000000110000011000000000000000000100000000000000000000000000000000000000011001010
Sist 8bitarna är checksumma det var den svåraste biten men fick lite hjälp av ett geni

Köpte mig ett velleman PCSU1000 OSCILLOSCOPE. Vist inte mycket om OSCILLOSCOPE innan så jag viste inte vad jag skulle kolla efter och så. Begränsingen på detta verkar vara att det inte är så mycket minne. Men det är API med för att göra egen program så jag gjorde ett som läste av ir kontrollen och bara gav mig ettor och nollor. Koden från fjärren är 152bitar lång så det hade varit nästan ommöjligt att läsa av utan det egena programet. Här är ett exempel hur ett kommando kan se ut.
00000010000000000010100000000001011101101000000000010101000101111100000000000110000011000000000000000000100000000000000000000000000000000000000011001010
Sist 8bitarna är checksumma det var den svåraste biten men fick lite hjälp av ett geni

Re: Styrning av underhålls värme!
Ursäkta att jag drar upp en riktigt gammal tråd, MEN jag håller också på med en ir-styrning av värmepump. Min Sanyo CRV-123EHN verkar ha samma/liknande ir protokoll. Det är iaf på ca 152bitar och därför tänkte jag ta en liten genväg och fråga om hur du räknade ut checksumman?
Minns du inte så kanske du har en liten kodsnutt kvar där man ser hur du räknat? Assembler eller C osv spelar ingen roll.
Tack på förhand
Minns du inte så kanske du har en liten kodsnutt kvar där man ser hur du räknat? Assembler eller C osv spelar ingen roll.
Tack på förhand

Re: Styrning av underhållsvärme!
Hej hittade lite som du kanske kan ha nytta av.
command[0] = 0b01000000; //Bit1-8 Always the same
command[1] = 0b00000000; //Bit9-16 Always the same
command[2] = 0b00010100; //Bit17-24 Always the same
command[3] = 0b10000000; //Bit25-32 Always the same
command[4] = 0b01101110; //Bit33-40 Always the same
command[5] = 0b00000000; //Bit41-48 Mode bit42-48 default = auto 0b00000010 make beep 0b00000000 makes no beep
command[6] = 0b10101000; //Bit49-56 Temperature setpoint bit50-56(bit49=0.5C?) default = 24C
command[7] = 0b11101000; //Bit57-64 Temperature bit58-62(bit57=0.5C?) Send 24C Change this will send temp from ds18s20
command[8] = 0b00000011; //Bit65-72 Bit70 = On/Off default = Off
command[9] = 0b01100000; //Bit73-80 Always the same
command[10] = 0b00110000; //Bit81-88 Always the same
command[11] = 0b00000000; //Bit89-96 Bit89-94 = minute bit95-96 first part of hour default = 0:00
command[12] = 0b00000000; //Bit97-104 Bit97-99 second part of hour default = 0:00
command[13] = 0b00000001; //Bit105-112 Flap 0b00000001 = Auto
command[14] = 0b00000000; //Bit113-120 Bit 113 is night setback 1 = setback on
command[15] = 0b00000000; //Bit121-128 Always the same
command[16] = 0b00000000; //Bit129-136 Always the same
command[17] = 0b00000000; //Bit137-144 Always the same
command[18] = CalcCheckSum(); //Calculate checksum from bit1-144
char CalcCheckSum(void)
{
unsigned char i, j, Sum;
Sum = 248; //Init checksum there is a offset of 8
for ( i = 0; i < 18; i++ ) {
for ( j = 0; j < 8 ; j++ ) {
if ( test_bit(command, j) ) {
if ( j == 0 || j == 4 ) {
Sum += 1;
}else if ( j == 1 || j == 5 ) {
Sum += 2;
}else if ( j == 2 || j == 6 ) {
Sum += 4;
}else {
Sum += 8;
}
}
}
}
return Sum;
}
command[0] = 0b01000000; //Bit1-8 Always the same
command[1] = 0b00000000; //Bit9-16 Always the same
command[2] = 0b00010100; //Bit17-24 Always the same
command[3] = 0b10000000; //Bit25-32 Always the same
command[4] = 0b01101110; //Bit33-40 Always the same
command[5] = 0b00000000; //Bit41-48 Mode bit42-48 default = auto 0b00000010 make beep 0b00000000 makes no beep
command[6] = 0b10101000; //Bit49-56 Temperature setpoint bit50-56(bit49=0.5C?) default = 24C
command[7] = 0b11101000; //Bit57-64 Temperature bit58-62(bit57=0.5C?) Send 24C Change this will send temp from ds18s20
command[8] = 0b00000011; //Bit65-72 Bit70 = On/Off default = Off
command[9] = 0b01100000; //Bit73-80 Always the same
command[10] = 0b00110000; //Bit81-88 Always the same
command[11] = 0b00000000; //Bit89-96 Bit89-94 = minute bit95-96 first part of hour default = 0:00
command[12] = 0b00000000; //Bit97-104 Bit97-99 second part of hour default = 0:00
command[13] = 0b00000001; //Bit105-112 Flap 0b00000001 = Auto
command[14] = 0b00000000; //Bit113-120 Bit 113 is night setback 1 = setback on
command[15] = 0b00000000; //Bit121-128 Always the same
command[16] = 0b00000000; //Bit129-136 Always the same
command[17] = 0b00000000; //Bit137-144 Always the same
command[18] = CalcCheckSum(); //Calculate checksum from bit1-144
char CalcCheckSum(void)
{
unsigned char i, j, Sum;
Sum = 248; //Init checksum there is a offset of 8
for ( i = 0; i < 18; i++ ) {
for ( j = 0; j < 8 ; j++ ) {
if ( test_bit(command, j) ) {
if ( j == 0 || j == 4 ) {
Sum += 1;
}else if ( j == 1 || j == 5 ) {
Sum += 2;
}else if ( j == 2 || j == 6 ) {
Sum += 4;
}else {
Sum += 8;
}
}
}
}
return Sum;
}