Habe ein seriell ansteuerbaren µController mit 16-fach LED-Kontroller von Texas Instrument aus einem OPENSOURCE Projekt auf ein Hutschienenmodul geroutet.
Kann man natürlich auch in ein Gehäuse basteln.
16-fach ergibt 4 Module mit R B G und Weiss oder z.B. 5 LED RGB -Leisten.
Der Unterschied besteht aus einer Treiberstufe mit integrierten Stromquellenschaltung für LED’s mit wenig Strombedarf.
Diese kann man, bei Bedarf von höheren Strömem (direkt auf die LogicFets), weglassen oder auch mit dem TLC allein arbeiten.
Dann werden die LogicFets fast nicht mehr warm und man könnte Treiberströme von mehren Ampere fließen lassen.
Diese elektronischen Module sind adressierbar/kaskadierbar, wenn Intersesse besteht route ich den seriellen TTL-Anschluss raus, sodass man Den nur verbinden braucht.
Meine erste Version war mit der SMD-Variante, Diese ist mit DIL-Bausteinen.
XBEE Freaks können das Modul auch über Funk, Netzwerkfreaks über den Adapter von ELV, betreiben.
Meine geringen PHP-Kenntnisse haben das hier erzeugt:
- Variable vom Webfront abholen:
<?
// Wert von Webfront holen, die Variable hat dann dieses Aktionsscript.
// Achtung, ich ändere nur die eine Variable, man kann Die auch gleich zum Comport schicken, ist hier geremt.
SetValue($IPS_VARIABLE, $IPS_VALUE);
switch($IPS_VALUE) // select
{
case 10:
// COMPort_SendText(17266 /*[Serial Port]*/, //chr(0x12).chr(0x01).chr(0x00).chr($Wert1).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(//0x7D).chr(0x7D).chr(0x7D).chr(0x7D));
SetValueInteger("29405", $IPS_VALUE);
break;
case 20:
// COMPort_SendText(17266 /*[Serial Port]*/, //chr(0x12).chr(0x01).chr(0x00).chr($Wert1).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(//0x7D).chr(0x7D).chr(0x7D).chr(0x7D));
SetValueInteger("29405", $IPS_VALUE);
break;
case 30:
// COMPort_SendText(17266 /*[Serial Port]*/, //chr(0x12).chr(0x01).chr(0x00).chr($Wert1).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(//0x7D).chr(0x7D).chr(0x7D).chr(0x7D));
SetValueInteger("29405", $IPS_VALUE);
break;
case 40:
// COMPort_SendText(17266 /*[Serial Port]*/, //chr(0x12).chr(0x01).chr(0x00).chr($Wert1).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(//0x7D).chr(0x7D).chr(0x7D).chr(0x7D));
SetValueInteger("29405", $IPS_VALUE);
break;
case 50:
// COMPort_SendText(17266 /*[Serial Port]*/, //chr(0x12).chr(0x01).chr(0x00).chr($Wert1).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(//0x7D).chr(0x7D).chr(0x7D).chr(0x7D));
SetValueInteger("29405", $IPS_VALUE);
break;
case 60:
// COMPort_SendText(17266 /*[Serial Port]*/, //chr(0x12).chr(0x01).chr(0x00).chr($Wert1).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(//0x7D).chr(0x7D).chr(0x7D).chr(0x7D));
SetValueInteger("29405", $IPS_VALUE);
break;
case 70:
// COMPort_SendText(17266 /*[Serial Port]*/, //chr(0x12).chr(0x01).chr(0x00).chr($Wert1).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(//0x7D).chr(0x7D).chr(0x7D).chr(0x7D));
SetValueInteger("29405", $IPS_VALUE);
break;
case 80:
// COMPort_SendText(17266 /*[Serial Port]*/, //chr(0x12).chr(0x01).chr(0x00).chr($Wert1).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(//0x7D).chr(0x7D).chr(0x7D).chr(0x7D));
SetValueInteger("29405", $IPS_VALUE);
break;
case 90:
// COMPort_SendText(17266 /*[Serial Port]*/, //chr(0x12).chr(0x01).chr(0x00).chr($Wert1).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(//0x7D).chr(0x7D).chr(0x7D).chr(0x7D));
SetValueInteger("29405", $IPS_VALUE);
break;
case 100:
// COMPort_SendText(17266 /*[Serial Port]*/, //chr(0x12).chr(0x01).chr(0x00).chr($Wert1).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(//0x7D).chr(0x7D).chr(0x7D).chr(0x7D));
SetValueInteger("29405", $IPS_VALUE);
break;
}
?>
Beispiel zum Comport senden, getriggert per Variablenupdate:
<?
// Bei Ausführung werden alle 16 PWM-Kanäle mit den (Hex)-Werten beschrieben
// 1. chr-Zeichen = Anzahl der Bytes
// 2. chr-Zeichen = Modul-ID ( Jedes Modul könnte 3 Units haben, im EEprom an Adr 00 steht die Unit-ID-Nr.)
// 3. chr-Zeichen = Unit Nr. ( in Adr 01 steht die Unit-Nr. wobei 0 = 1. Unit, 1 = 2. Unit und 2 = 3. Unit ist)
// 4. bis 18. chr-Zeichen = Parameter 0 bis 255 aber Hex in chr() verpackt
// Test ohne Variablen:
//COMPort_SendText(17266, chr(0x12).chr(0x01).chr(0x00).chr(0xFE).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D));
// Test:
//COMPort_SendText(17266, chr(0x12).chr(0x01).chr(0x00).chr(0xFF).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D));
// der geübte PHP-Programmierer verpackt die Werte in Variablen....
// z.B. der erste Wert per Variable:
$Wert1=GetValueInteger("29405");
COMPort_SendText(17266 /*[Serial Port]*/, //chr(0x12).chr(0x01).chr(0x00).chr($Wert1).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(//0x7D).chr(0x7D).chr(0x7D).chr(0x7D));
//Ein Test hat ergeben, dass es besser ist das 2-mal zu senden
COMPort_SendText(17266 /*[Serial Port]*/, //chr(0x12).chr(0x01).chr(0x00).chr($Wert1).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(0x7D).chr(//0x7D).chr(0x7D).chr(0x7D).chr(0x7D));
?>
Targetfiles per PM
Gruß Helmut
Nachtrag: Da der µC-Code verfügbar ist, könnte man die Aulösung auch auf die 12 Bit (4095) erhöhen, geht aber auch so gut.
Da der TLC von fast 1 Mhz gespeist wird, flackert da nix!
Und hier eine Betrachtung über das Empfinden des menschlichem Auge und PWM von LED