FHT 8W ketelrelais
6 berichten
• Pagina 1 van 1
- willemsfaw
- Berichten: 15
- Geregistreerd: 25 Jan 2013, 17:37
FHT 8W ketelrelais
Halo, Ik heb een FHT 8 W ketelrelais als ketelsturing in mijn installatie zitten.
Deze is defect, en niet meer leverbaar, weet iemand misschien of ik hem kan vervangen door een arduino?
Wie kan mij verder helpen?
Deze is defect, en niet meer leverbaar, weet iemand misschien of ik hem kan vervangen door een arduino?
Wie kan mij verder helpen?
Advertisement
Re: FHT 8W ketelrelais
Daar zit nogal wat in hoor, een radioprotocol, en dergelijke, nou hopen dat er iemand is die dit kent.
paul deelen
shooter@home.nl
shooter@home.nl
- willemsfaw
- Berichten: 15
- Geregistreerd: 25 Jan 2013, 17:37
Re: FHT 8W ketelrelais
Daar ben ik intussen ook achter gekomen.
Al mijn probeersels willen tot nu toe nog niet werken.
in het verleden hielden mn Jeehub en Pieter Meulenhof zich hier mee bezig.
Kan van beide echter niets bruikbaars vinden.
nog wel bedankt voor je reactie.
Al mijn probeersels willen tot nu toe nog niet werken.
in het verleden hielden mn Jeehub en Pieter Meulenhof zich hier mee bezig.
Kan van beide echter niets bruikbaars vinden.
nog wel bedankt voor je reactie.
- willemsfaw
- Berichten: 15
- Geregistreerd: 25 Jan 2013, 17:37
Re: FHT 8W ketelrelais
Ik heb op internet iets gevonden wat me misschien verder kan helpen.
Allen is mijn programmeerkennis onvoldoende om het programma volledig te doorgronden.
met name het gedeelte in de Setub(), wat begint met " setb(ACSR,ACBG); " enz.
is mij niet duidelijk. Arduino geeft aan dat hij de variabele setb niet kent.
wie kan mij hiermee helpen?
Allen is mijn programmeerkennis onvoldoende om het programma volledig te doorgronden.
met name het gedeelte in de Setub(), wat begint met " setb(ACSR,ACBG); " enz.
is mij niet duidelijk. Arduino geeft aan dat hij de variabele setb niet kent.
wie kan mij hiermee helpen?
- Code: Alles selecteren
// 2009-04-08 <jcw@equi4.com> http://opensource.org/licenses/mit-license.php
#include <stdio.h>
#include "sfr_defs.h"
#define RXDATA 14 // receiver signal is connected to analog input 0 AI01
enum { UNKNOWN, T0, T1, OK, DONE };
struct { char bits; byte state; uint64_t data; } FS20;
void setup()
{
Serial.begin(57600);
Serial.println("\nMy serial port is ready ");
Serial.println("*** Decoding FS20 ***");
pinMode(RXDATA, INPUT); // 14 = (analog input 0)
digitalWrite(RXDATA, 1); // 1 = pull-up 20k
setb(ACSR,ACBG); // fixed reference voltage
setb(ACSR,ACI); //
setb(ACSR,ACIE); // activate interupt , also I bit in statusregister must be set
clrb(ADCSRA,ADEN); // enable de ADC
setb(ADCSRB,ACME); // Analog comparetor negative input = ADC0, ADEN=0, ACME=1, mux 2..0
ADMUX = 0; // ADC0 clear ADMUX for ADC0
// 250 KHz/ presc 64 = 250khz = 4 usec/count, max 1,024 msec (16 MHz clock) */
TCNT2 = 0; // timer counter unit 8 bit counter
TCCR2A = 0; // clear TIMER counter control register A
setb(TCCR2B,CS22); // CS22 1 CS21 0 CS20 0 => prescaler 64
setb(TIMSK2,TOIE2); // enable TIMER counter 2 overflow interrupt
reset_FS20();
}
void loop ()
{
byte buf[10];
byte n = ook868poll(buf);
if (n > 0) {
Serial.print("OOK868 ");
Serial.print(n, DEC);
Serial.print(" ");
if (buf[2]==7) Serial.print (" You pressed 8 ");
for (byte i = 0; i < n; ++i)
{
to_bin(buf[i]);
}
Serial.print(" ");
for (byte i = 0; i < n; ++i)
{
Serial.print(' ');
Serial.print(buf[i], DEC);
}
Serial.println();
}
}
static byte FS20_bit (char value)
{
FS20.data = (FS20.data << 1) | value;
if (FS20.bits < 0 && (byte) FS20.data != 0x01) return OK; // OK teruggeven indien .bits < 0 en data = 0 .bits niet verhogen
if (++FS20.bits == 45 && ((FS20.data >> 15) & 1) == 0 || // .bits verhogen nadat 12 x 0 en 1 is geweest sync is 0000 0000 0000 1
FS20.bits == 54 && ((FS20.data >> 24) & 1) == 1)return DONE;
return OK;
}
static void reset_FS20 ()
{
FS20.bits = -1;
FS20.data = 0xFF;
FS20.state = UNKNOWN;
}
// Poll and return a count > 0 when a valid packet has been received:
// 4 = S300 5 = FS20 6 = FS20 extended 7 = KS300 9 = EM10*
static byte ook868poll (byte* buf)
{
if (FS20.state == DONE)
{
byte len = FS20.bits / 9; // 45 of 54 -> 5 of 6
byte sum = 6;
for (byte i = 0; i < len; ++i)
{
byte b = FS20.data >> (1 + 9 * i); // remove parity bits (even)
buf[len-i-1] = b;
if (i > 0)
sum += b;
}
if (sum == buf[len-1])
{
reset_FS20();
return len;
}
reset_FS20();
}
return 0;
}
void to_bin(byte value)
{
int8_t count;
byte bitcol;
bitcol = 1;
char binstr[]="01234567";
for (count = 7; count >= 0 ;count--)
{
if ((value & bitcol) == bitcol) binstr[count]='1';
else binstr[count]='0';
bitcol=bitcol<<1;
}
Serial.print (binstr);
}
ISR(ANALOG_COMP_vect)
{
unsigned int count; // see http://fhz4linux.info/tiki-index.php?page=FS20%20Protocol
count = TCNT2; // FS20 pulse widths are 400 = 0uS and 600uS sec = 1 (split on 300, 500, and 700)
TCNT2 = 0; // count is the pulse length in units of 4 usecs so count = 0 = 100 1=150
if (FS20.state != DONE) // org = (count-25 / 50) 1 tot 2 => 0 2 tot 3 => 1
{
if (count > 300/4 && count < 500/4 ) // 4uS puls length 300 - 500 gemiddelde pulselengte is 400uS volgens specs FS
{
if (FS20.state == T0)
{
FS20.state=FS20_bit(0); //ok or done
}
else FS20.state = T0;
}
if (count > 500/4 && count < 700/4 ) // 4uS pulse length 500 - 700 gemiddelde pulselengte is 600uS volgens Specs FS
{
if (FS20.state == T1)
{
FS20.state=FS20_bit(1);
}
else FS20.state = T1;
}
}
else FS20.state=UNKNOWN;
}
ISR(TIMER2_OVF_vect)
{
if (FS20.state != DONE)
reset_FS20();
}
Re: FHT 8W ketelrelais
je moet een lib zoeken met de naam sfr_defs (gevonden)
paul deelen
shooter@home.nl
shooter@home.nl
- willemsfaw
- Berichten: 15
- Geregistreerd: 25 Jan 2013, 17:37
Re: FHT 8W ketelrelais
Allen bedankt. Soms kan een klein duwtje je op het rechte pad brengen.
Draait intussen als een zonnetje.
Draait intussen als een zonnetje.
6 berichten
• Pagina 1 van 1
Wie is er online?
Gebruikers in dit forum: Geen geregistreerde gebruikers en 8 gasten