Hi Bluefish,
Finally what version of code do you suggest to use. I am also interested in Furnace control. I am using simplified version of code and it is not working for me @ 100% output. I get the same wattage at both 70% output and 100% output. Can anybody suggest whats wrong with this code
#include <TimerOne.h>
byte oput=0;
byte cntr=0;
unsigned long int DimStep=1000000/102/256;
long int starttime;
volatile unsigned long int DimStepCounter;
volatile unsigned long int FireTriac = 0;
volatile boolean zero_cross = 0;
byte TriacPin = 14;
byte PowerMap[256] = {
255,245,241,237,235,232,230,228,226,224,223,221,220,218,217,215,214,213,211,210,209,208,207,205,204,203,202,201,200,199,198,197,
196,195,194,193,192,192,191,190,189,188,187,186,185,185,184,183,182,181,181,180,179,178,177,177,176,175,174,174,173,172,171,171,
170,169,168,168,167,166,165,165,164,163,163,162,161,161,160,159,158,158,157,156,156,155,154,154,153,152,152,151,150,150,149,148,
148,147,146,146,145,144,144,143,143,142,141,141,140,139,139,138,137,137,136,135,135,134,134,133,132,132,131,130,130,129,128,128,
127,127,126,125,125,124,123,123,122,121,121,120,120,119,118,118,117,116,116,115,114,114,113,112,112,111,111,110,109,109,108,107,
107,106,105,105,104,103,103,102,101,101,100,99,99,98,97,97,96,95,94,94,93,92,92,91,90,90,89,88,87,87,86,85,84,84,83,82,81,81,80,
79,78,78,77,76,75,74,74,73,72,71,70,70,69,68,67,66,65,64,63,63,62,61,60,59,58,57,56,55,54,53,52,51,50,48,47,46,45,44,42,41,40,38,
37,35,34,32,31,29,27,25,23,20,18,14,10,0
};
void setup()
{
Serial.begin(9600);
Timer1.initialize(DimStep);
attachInterrupt(0, zero_cross_detect, FALLING);
pinMode(TriacPin, OUTPUT);
Timer1.attachInterrupt(fire_triacs, DimStep);
Serial.println("Hello");
oput=100*2.56;
FireTriac = PowerMap[oput];
}
void zero_cross_detect()
{
DimStepCounter = 0;
}
void fire_triacs()
{
if ( FireTriac == DimStepCounter )
{
digitalWrite(TriacPin, HIGH);
delayMicroseconds(2);
digitalWrite(TriacPin, LOW);
}
DimStepCounter++;
}
void loop()
{
}