Stromsensor, erfaßt mit AVR-NET-IO ADC-Eingängen

Hallo Hinti,

auf die Schaltung bin ich auch gespannt.

Mein AVR liegt hier auch noch sinnlos rum und wurde liebend gerne ein paar Ströme messen.

Also bei soviel Interesse, da bekom ich jetzt richtig Angst meine Ach so simple Schaltung zu veröffentlichen. Ich hoffe ich enttäusche niemanden. Ich mach einfach mal… aber bitte nicht lachen

Ein Paar Worte zur Schaltung. Die kommt ja immer zuerst. Gleich nach der Idee sozusagen.

STROMSENSOR:
Ich verwende den Stromsensor LTS.R15NP. Der Funktioniert prima, ist aber nicht ganz billig. Ich hatte Glück und einige recht günstig bekommen. Ansonsten ist der billigste Anbieter bei ca. 11,5 Euro. Ich verwende hier den 15A Typen. Diese Stromsensoren kann man für verschiedene Bereiche nutzen. Je nachdem muß man die Pins verbinden. Da ich den gesamten Bereich von 15A nutzen möchte (also bis 13A brauch ichs konkret), habe ich den Vorteil nur einer Windung. Diese kann man auch erreichen durch eine eigene Windung mittels 1.5mm² Draht durch das Loch in der Mitte. Der Arbeitsbereich des Pin-OUT liegt bei 0 - 0.625V (15A).

Dies erklärt also warum ich einen Draht durch die mitte jedes Sensors habe und die Pins selber unbenutzt sind. (Die könnte man in anderen Schaltungen zusätzlich auch für Differenzstrommessung verwenden etc.)… äh, hab ich mir sagen lassen.

Der Refernzpin liegt bei 2.5V, was ideal ist, um genau im mittel des Operationsverstärkers zu arbeiten. Nun gilt es die maximalspg. zu ermitteln. Ich vernachlässige die wenigen mA, des rail to rail OPV’s und rechne der einfachheit halber mit 5V maximaler Ausgangspg. Wirklich ein super OPV.

BERECHNUNGEN:
2.5VDC gleichgerichet und geglättet mit Elko == max 1,765 AC.
Diese Spg. will ich bei einem maximalen Ausschlag von, in meinem Fall 12.73 Ampere haben. Darüber gibts ne Sättigungskurve. Mein Stromkreis ist mit 13A abgesichert. Weshalb ich aufgrund des geringen Messbereichs von 2.5V die Schaltung dahingehend optimierte.

Es ergibt sich also:
15A = 0.625V~, 12,73A = 0,5304V~ Dies ist also meine Maximal-Spg., 1,765 / 0,5304 = 3.33 Verstärkung. Dies erreiche ich mit: 39K zu 130K. Also habe ich R1/R2 bestimmt.

Nun habe ich mir sagen lassen schadet es nicht, wenn man hochfrequente Störungen filtert, um die Messung nicht verfälschen. Und auch um den Offset des OPV nicht auch mitzuverstärken. Daraus ergibt sich ein RC Glied von:
0.68uF & 39K. = ca. 6Hz, sowie 6.8nF & 130K. = ca. 180Hz Was soviel bedeuted wie bei 50Hz Wechselspg habe ich die volle Verstärkung. Der Rest wird unterdrückt.

GLEICHRICHTUNG:
Jetzt habe ich also den Messbereich abgesteckt. Diesen muss ich jetzt noch gleichrichten. Da mir der Spannungabfall der Diode Bauchschmerzen bereitete, (Zur Erinnerung: schlappe 2.5V) entschied ich mich nach einer Weile Googlen für eine Präzisionsgleichrichtung mittels OPV (1 Gate hatte ich ja noch zur Verfügung: AD822=Doppel-OPV). Diese funktioniert nur bei geringen Frequenzen bis wenige kHz und zu Messzwecken, also nicht belastbar. Also ideal für meine 50Hz Messschaltung. Die habe ich nach Schema-F nachgebaut und hat auch sofort funktioniert. Mit dieser Schaltung kann man ab der Schwellspg. der Dioden, 1:1 gleichrichten. Tolle Sache. Also kein wegfall der Diodenspg. nur eine ideale Gleichspannung.

Klitzekleiner Nachteil: Im Bereich bis zur Schwellspannung ist der Messbereich verfälscht. Deshalb habe ich mir eine Menge an BAT46 gekauft. Die hat eine superkleine Forwardspg. von 0.19V.

Also ergibt sich für mich:
0.19VDC = 0.134VAC / 3.3334 = 0.0403 VAC OUT
0.625 = 15A, 0.0403 = 0.967A = 222VA verfälschter Bereich. mir wurscht! :wink: Denn was definitiv funktioniert ist eine variable Anzeige auch im untersten Bereich. Und darüber, also bis ca. 2730VA ist die Anzeige absolut präzise.

Nun gibts aber endlich die Schaltung, und eine Litanei an Bildern vom Zusammenbau, Einbau und Inbetriebnahme. Die Bilder sind von der Reihenfolge glaube ich ein wenig durcheinander :rolleyes: Das AVR Board ist wie ihr sehen könnt provisorisch da drinnen in der Dose. Ist aber im Keller und stört niemanden. Außerdem kommt da sowie so noch mehr provisorium zusammen (he he)
Danach poste ich dann noch extra die Scripte und den Aufbau in IPS, damit man das ganze auch Auslesen kann…
Subbemerkung: Den SMD-AD822 habe ich auf einer Adapterplatine einfach auf die Lochrasterplatine mittels Bauteile gelötet. Die meisten Bauteile und auch das Hutschienengehäuse habe ich bei Reichelt gekauft.
SubSubBemerkung: ich hoffe nicht zu viele rechtschreibfehler reingehauen zu haben :smiley:

2 pcb.jpg

Zum Script: DIE 8 AVR DIGITAL AUSGÄNGE
Hier ist der Sourcecode um die 8 Digitalen Ausgänge des AVR auch schalten zu können, per klick im Webfront. Die werden zwar noch nicht benötigt, aber so gehts in einem Aufwaschen. Im Bildchen unten seht ihr meine fertige IPS-Struktur.
DIE BOOLEAN Variablen des jeweiligen AVR-PORT 1 bis 8, sind bei mir vom Typ ~switch, und müssen natürlich mit folgendem Script verbunden werden (bei mir: Switch-Ports):


<?
if (strtolower($IPS_SENDER) =="webfront" )
{
   $AVR = 14718 /*[AVR1-Client Socket]*/ ;
   
	/* ------------------ */
	/* Digitalkanäle 1-8: */
	/* ------------------ */
	$avr1 = 32009 /*[Steuerung\LEISTUNG (AVR)\AVR-PORT 1]*/;
	$avr2 = 56378 /*[Steuerung\LEISTUNG (AVR)\AVR-PORT 2]*/;
	$avr3 = 12805 /*[Steuerung\LEISTUNG (AVR)\AVR-PORT 3]*/;
	$avr4 = 29159 /*[Steuerung\LEISTUNG (AVR)\AVR-PORT 4]*/;
	$avr5 = 41424 /*[Steuerung\LEISTUNG (AVR)\AVR-PORT 5]*/;
	$avr6 = 13674 /*[Steuerung\LEISTUNG (AVR)\AVR-PORT 6]*/;
	$avr7 = 19538 /*[Steuerung\LEISTUNG (AVR)\AVR-PORT 7]*/;
	$avr8 = 52917 /*[Steuerung\LEISTUNG (AVR)\AVR-PORT 8]*/;


	SetValue($IPS_VARIABLE, $IPS_VALUE); /* Wert zuweisen */
	
	$setzen = ($IPS_VALUE) ? "1" : "0";
	
	switch ($IPS_VARIABLE)
	{
	case $avr1: CSCK_SendText($AVR,"SETPORT 1.".$setzen."
"); break;
	case $avr2: CSCK_SendText($AVR,"SETPORT 2.".$setzen."
"); break;
	case $avr3: CSCK_SendText($AVR,"SETPORT 3.".$setzen."
"); break;
	case $avr4: CSCK_SendText($AVR,"SETPORT 4.".$setzen."
"); break;
	case $avr5: CSCK_SendText($AVR,"SETPORT 5.".$setzen."
"); break;
	case $avr6: CSCK_SendText($AVR,"SETPORT 6.".$setzen."
"); break;
	case $avr7: CSCK_SendText($AVR,"SETPORT 7.".$setzen."
"); break;
	case $avr8: CSCK_SendText($AVR,"SETPORT 8.".$setzen."
"); break;
	}
	IPS_sleep(50); /* millisekunde Sicherheitspause */
}

?>

avr2.gif

Nun zu den ADC Eingängen und zum Auslesen:

Vor der AVR-Registervariable, hängt ein Cutter mit Rechts-Cut R: CRLF.
Die Registervariable ist mit dem script „AVR-Registerscript“ verknüpft.
Diese speichert den ge-cutteten Wert in die Wertdummy String-Variable. Source:


<?
/* Script wird Auto-aufgerufen 		*/
/* wenn Registervariable  				*/
/* aufgrund einer Aufforderung		*/
/* einen Wert vom AVR Board erhält 	*/

/* $dummyvar speichert Wert... 		*/
$dummyvar = 17369 /*[Steuerung\LEISTUNG (AVR)\Scripte\Wertdummy]*/ ;
SetValue($dummyvar, $IPS_VALUE);
?>

Und hier der Source des scriptes (AVR Active Triggerscript), welcher alle 15s das AVR Board abfragt: TIPP: Ich musste eine großzügige IPS_sleeptime Pause von 50ms einbauen je Aufruf, weil es bei 1 oder 5 ms öfter zu Fehlern beim auslesen kam. Mit diesem Wert stimmt die Abfrage aber immer!


<?
if(! CSCK_GetOpen(14718 /*[AVR1-Client Socket]*/))
{  /* Schwerer Fehler: Socket ist nicht geöffnet 			 */
	/* sperater script der minütlich prüft ob Socket offen */
	/* gibt entsprechende warnungen aus (sms/email) 		 */
	return False;
}

define("ADC_EINHEIT", 5/1024); /* ADC Umrechnungsfaktor (1024bits -> 5V) */
define("OPV_GAIN", 130000 / 39000); /* Hardwareseitiger OPV-Verstärkungsfaktor */
define("SENSOR_AMP", 15); /* Stromsensor - Ampere bei 0.625 VAC */

function jhin_zeit_verstrichen($last,$sekunden)
{ 	//$last as float (LastUpdate)
	//$seconds; zeit die verstrichen sein soll
	$micro = microtime(True);
	if (($micro - $last) >= $sekunden)
	   return True;
	return False;
}

function jhin_is_adc($value)
{  /* schau ma mal ob es sich überhaupt */
	/* um ein adc bit handeln kann...	 */
//	echo $value."
";
//	echo is_numeric($value)."
";
	if (is_numeric($value)==NULL)
	   return False;
	if (is_numeric($value)==False)
	   return False;
   if ($value>=512 && $value<=1024)
      return True;
	return False;
}

function jhin_get_va($adc_bits)
{
	// 2.5 - 5V (Messbereich besteht aus 512 bits (512 - 1024)
	// 0 - 0.530314 V AC (ohne Verstärkung)
	// 0 - 12.73 Ampere (-> entspricht)
	// 0 - 1.76775  V AC (verstärkt ADC) 3.334
	// 0 - 2.5  	 V DC (ohne vdcref)
	// entspricht:
	// 2.5 = 0 VA & 5 = 2930 VA (12.73A)
	// Reine Strommessung == Blindleistung!
	$wert1 = $adc_bits * ADC_EINHEIT;
	$wert2 = $wert1 - 2.5; /* gemessene Wert ohne Referenzspg */
	if ($wert2 < 0) return -1; /* Um fehlerhaften Aufruf später zu erkennen */
	$wert1 = $wert2 * 1/sqrt(2); /* zurück zu AC */
	$wert2 = $wert1 / OPV_GAIN; /* Verstärkung wegnehmen */
	$wert1 = $wert2 / (0.625 / SENSOR_AMP); /* Ampere anhand Sensorpropertys ermitteln */
	$wert2 = $wert1 * 230; /* gemessene Scheinleistung errechnen! */
//echo $adc_bits." :: ".$wert2."
";
	if ($wert2 <= 10)
		return 0; /* zu viele Fehler durch Einstreuung bis zu diesem Messbereich */
	$wert1 = round($wert2,1);
	return $wert1;
}

$AVR = 14718 /*[AVR1-Client Socket]*/ ;

/* Platzhalter für erhaltenen Wert der Anfrage */
$dummyvar = 17369 /*[Steuerung\LEISTUNG (AVR)\Scripte\Wertdummy]*/ ;

/* ------------------ */
/* Digitalkanäle 1-8: */
/* ------------------ */
define("AVRIO1", 32009 /*[Steuerung\LEISTUNG (AVR)\PORT 1 - Rudi Renntier einschalten (Taster!)]*/ );
define("AVRIO2", 56378 /*[Steuerung\LEISTUNG (AVR)\AVR-PORT 2]*/ );
define("AVRIO3", 12805 /*[Steuerung\LEISTUNG (AVR)\AVR-PORT 3]*/ );
define("AVRIO4", 29159 /*[Steuerung\LEISTUNG (AVR)\AVR-PORT 4]*/ );
define("AVRIO5", 41424 /*[Steuerung\LEISTUNG (AVR)\AVR-PORT 5]*/ );
define("AVRIO6", 13674 /*[Steuerung\LEISTUNG (AVR)\AVR-PORT 6]*/ );
define("AVRIO7", 19538 /*[Steuerung\LEISTUNG (AVR)\AVR-PORT 7]*/ );
define("AVRIO8", 52917 /*[Steuerung\LEISTUNG (AVR)\AVR-PORT 8]*/ );

CSCK_SendText($AVR,"GETSTATUS
");
IPS_sleep(100); /* millisekunde Sicherheitspause */
$value = GetValueString($dummyvar);
$z=1;
if ($value[0]=="S")
{
	for ($i =8;$i >0;$i=$i -1, $z++)
	{
		$varid = constant("AVRIO".$z);
		SetValueBoolean($varid, ($value[$i]=="1") ? True : False);
	}
}
/* ------------------ */
/* Analog 1-4: 		 */
/* ------------------ */
$adc1 = 48250 /*[Steuerung\LEISTUNG (AVR)\Badstrom]*/ ;
$adc2 = 11227 /*[Steuerung\LEISTUNG (AVR)\Waschmaschine]*/ ;
$adc3 = 43967 /*[Steuerung\LEISTUNG (AVR)\Trockner]*/ ;
$adc4 = 16251 /*[Steuerung\LEISTUNG (AVR)\Pumpenschacht]*/ ;

$arr = IPS_GetVariable($adc1);
if (jhin_zeit_verstrichen((float)$arr['VariableUpdated'],6))
{	// ADC 1 will ich nur alle 10 sekunden abfragen:
	CSCK_SendText($AVR,"GETADC 1
");
	IPS_sleep(100); /* millisekunde Sicherheitspause */
	$v = GetValueString($dummyvar);
	if (jhin_is_adc($v))
		SetValueFloat($adc1, jhin_get_va($v));
}

$arr = IPS_GetVariable($adc2);
if (jhin_zeit_verstrichen((float)$arr['VariableUpdated'],10))
{	// ADC 2 will ich nur alle 15 sekunden abfragen:
	CSCK_SendText($AVR,"GETADC 2
");
	IPS_sleep(100); /* millisekunde Sicherheitspause */
	$v = GetValueString($dummyvar);
	if (jhin_is_adc($v))
		SetValueFloat($adc2, jhin_get_va($v));
}

$arr = IPS_GetVariable($adc3);
if (jhin_zeit_verstrichen((float)$arr['VariableUpdated'],10))
{	// ADC 3 will ich nur alle 15 sekunden abfragen:
	CSCK_SendText($AVR,"GETADC 3
");
	IPS_sleep(100); /* millisekunde Sicherheitspause */
	$v = GetValueString($dummyvar);
	if (jhin_is_adc($v))
		SetValueFloat($adc3, jhin_get_va($v));
}

// ADC 4 will ich alle 5 sekunden abfragen:
CSCK_SendText($AVR,"GETADC 4
");
IPS_sleep(100); /* millisekunde Sicherheitspause */
$v = GetValueString($dummyvar);
if (jhin_is_adc($v))
	SetValueFloat($adc4, jhin_get_va($v));



/* ------------------ */
/* Digital IN 1-4:    */
/* ------------------ */
$din1 = 24958 /*[Steuerung\LEISTUNG (AVR)\IN 1 - Stromversorgung Rudi Renntier]*/ ;
$din2 = 58432 /*[Steuerung\LEISTUNG (AVR)\IN 2 - Stromversorgung Pumpe OK]*/ ;
$din3 = 10412 /*[Steuerung\LEISTUNG (AVR)\AVR-D IN 3]*/ ;
$din4 = 16742 /*[Steuerung\LEISTUNG (AVR)\AVR-D IN 4]*/ ;

CSCK_SendText($AVR,"GETPORT 1
");
IPS_sleep(100); /* millisekunde Sicherheitspause */
SetValueBoolean($din1, (GetValueString($dummyvar)=="1") ? True : False);

CSCK_SendText($AVR,"GETPORT 2
");
IPS_sleep(100); /* millisekunde Sicherheitspause */
SetValueBoolean($din2, (GetValueString($dummyvar)=="1") ? True : False);

CSCK_SendText($AVR,"GETPORT 3
");
IPS_sleep(100); /* millisekunde Sicherheitspause */
SetValueBoolean($din3, (GetValueString($dummyvar)=="1") ? True : False);

CSCK_SendText($AVR,"GETPORT 4
");
IPS_sleep(100); /* millisekunde Sicherheitspause */
SetValueBoolean($din4, (GetValueString($dummyvar)=="1") ? True : False);

?>

…das wars :smiley:

Hast du doch fein gemacht!

Ist nett von dir, dass du es hier vorstellst. Dafür vielen Dank.

Ich bin immer erstarrt, wenn ich diese Scripte lese, wie macht ihr das nur???

Der Wandler hat den Vorteil: der Draht kann durchgesteckt werden.

Das erspart „Schmorstellen“.:rolleyes:

Nutzt du so ja nicht, wären bayrische Ingeneure noch aktiv, gibt´s Mecker vom Meister.

Hallo Hinti,

echt super gemacht, werde deinen Plan mal im LCN umsetzen.:D.

Bei den Bildern ist mir aber was aufgefallen, mach mal die „Lötaugen“ auf der Lochraster zwischen 230V in /out weg, und 1-2 Reihen zwischen 230V und 5V weg, macht das ganze, etwas sicherer.

gruss thomas - bei mir sehen die Platinen auch so aus, aber mit AtMega drauf.:smiley:

ps. das Script, muss ich aber anders umsetzen.

Ja um zum Thema Sicherheit noch ein Wort los zu werden. Beim beigefügten Bildchen habe ich den Bereich rot markiert, wo man keinerlei Steuerspannung oder Signale, also 5V seitig reinbringen darf.

Besonders wenn man nicht mit einem Draht durch das Loch fährt, sondern die Pins des Stromwandlers verwendet, ist der gelb markierte Bereich wie von @tomgr erwähnt, besonderes zu isolieren. Bzw. sollte man speziell im gelben Bereich dann wirklich die Lötaugen wegnehmen.

Insgesamt gilt folgende Regel lt. TÜV für mindestabstände zwischen 230V und der 5V Seite: Minimum 3mm sollten Kupferfrei sein. Diese 3mm habe ich in jedemfall in meinem Projekt, mit den Leerräumen zwischen den Lötaugen.

Natürlich erhöht es die Sicherheit um ein vielfaches, wenn man sich die Arbeit antut, und die Lötaugen trotzdem entfernt.

pcb-ls1b.JPG

Na, da gibt es noch ein paar rote Felder.

Wenn die zu messenden Phasen verschieden sind.

D.h. der eine Strompfad Phase L1, der Nächste L2, usw.

Üblicherweise teilt man die Sicherungspfade auf die 3 Phasen auf.

Dann hast du zwischen 2 Anschlußklemmen 380 V~ !

Randbemerkung: waren die 3mm Isolationsstrecke nicht auch mit Lack zu isolieren?

Aber ich will dein Projekt nicht schlecht reden, die Dinge lassen sich ja ändern.

Ne da wird nix schlecht geredet. Du hast schon recht. Man kann Sicherheit nicht groß genug schreiben.

Zu den 3mm, da hast du auch recht, die sind mit Lack versiegelt, hab ich glatt vergessen. Also gehen wir auf 3.5mm - ich denke die habe ich von ganz vorne bis ganz hinten auch. Werds interesse halber mal abmessen bei einer gleichen Platine.

Die 3mm/bzw mehr, beziehen sich auf den Zwischenraum der 230V und zur entkoppelten Steuerseite 5V.
Zwischen den Phasen, das stimmt auch, sind bei unterschiedliche Phasen 380V. Die Lötaugen dazwischen sollten entfernt werden. Schadet nicht, Zone => rot :cool:

Am besten sind Luftstrecken. Also wer ganz auf Nummer Sicher gehen will, der sollte vor dem Bestücken mit einem kleinen Bohrer ein paar Löcher machen und mit einer Schlüsselfeile Schlitze feilen. Dann sind die kritischen Zonen sehr gut getrennt.

Wer ganz sicher gehen will, fädelt seinen Anschlußdraht durch das Loch des Sensors bevor der an die Anschlußklemme des Automaten geschraubt wird.

Wer kein Platz, sprich Drahtlänge hat, verlängert die 4 Sensoranschlüsse zur Platine und hat so überhaupt keine Isolationsproblemme mehr.

Soll ich doch mal ein Platinchen machen? Lohnt eigentlich nicht…

Gerade mit der Sicherheit im Hinterkopf habe ich mir Stromwandler mit „Durchsteck“-Möglichkeit besorgt …

Dadurch keine 230V auf der Platine = keine Probleme :smiley:

Ansonsten ist meine Schaltung die ich demnächst hier vorstellen wollte, bis auf einen anderen OP-Typ und andere Bauteilewerte fast identisch. Deshalb könnte ich jetzt auch garnichts negatives über die Arbeit sagen - gute Arbeit !! :smiley:

Aber die viel interessantere Frage ist doch, wo hat Hinti die tollen Graphen her?? Gibt da schon ne neue Version die ich verpasst habe ??

Grüße

Andreas

@hinti
da kann ich nur sagen: respekt !
mal wieder ne innovative sache und sehr gut und nachvollziehbar erläutert

@helmut
zwei platinen würde ich dir abnehmen, wenn du welche machen würdest.

Hallo Andreas,
das ist der große Vorteil des Sensors.

Habe einen anderen Rail-OP genommen, aber ansonsten die Schaltung mal übernommen und in eine Platine für 4 Sensoren umgesetzt.

Habe den Sensor nicht, ist auch recht teuer zum spielen, sollte aber passen.

Edit: Graphiken -> Ist es nicht mit IPSymcon/DUG gemacht?

Ich habe die Digitalen Eingänge auch noch hinzugefügt. Deshalb habe ich den PHP-Sourcecode auch noch mal geändert.
Damit es keine Mehrfachstände gibt, habe ich das Bild und den Sourcecode in den bestehenden posts geändert.
Hier zu finden (im selben Thema natürlich)…

<hier das Bildchen angepaßt>
<und hier den sourcecode geändert>

Die Korrektur eines Denkfehlers hat mich dazu bewogen (danke wgreipl :rolleyes:), die Änderung wieder zurückzunehmen welche den Wert nur bei Änderung eingetragen hat. Das würde nämlich dazu führen das lücken in der Loggingdatabase entstehen.

Der Sourceode aktuell, siehe Folgepost…

Durch die mittlerweile längere aktive Testphase haben sich einige Phänomene ergeben,
die ich am Hauptscript nochmal korrigieren/anpassen mußte ([b]siehe wieder hier[/b]).

Es waren immer wieder fehlerhafte werte in der logging datenbank. lange dachte ich, die fehlerhaften werte sind noch vom anfang der testphase. denkste. dem war nicht so.

Die Kommunikation zwischen IPS/Hardware & AVR/Hardware, scheint doch etwas länger herzugehen. Schließlich habe ich jetzt nach längerer Zeit der Testphase festgestellt, daß eine Pause von 100ms nach einer AVR-Board Anfrage, ganz gut ist.

Darüber hinaus habe ich eine Sicherheitsfunktion eingebaut, die ermittelt ob es auch tatsächlich ein brauchbarer Analogwert ist, oder ob evtl. die Registervariable noch nicht das Ergebnis der Abfrage enthält.

Zusätzlich um die Datenbank zu schonen, habe ich eine Funktion eingebaut die es ermöglicht, den einen oder anderen Wert nicht alle 5-Sekunden, sondern erst nach einer mindest-verstreichzeit zu aktualisieren. Also das ganze ist natürlich von dem Triggerinterval abhängig. Bei mir wiegesagt alle 5 sekunden.

Der PHP-script im post mit dem haupt-source (ab Datum 11.Dez.09/21:00), ist jetzt sehr zuverlässig und seit einigen Wochen getestet/aktiv.
Ich bin mit meinem Projekt sehr zufrieden und hoffe alle benötigten Infos auch weitergegeben zu haben (ich denke doch) :smiley:

PS: Falls ich es noch nicht erwähnt haben sollte. Die Kondensatoren am Eingang zur Frequenzfilterung,
müssen Folienkondensatoren sein (C4 & C3) MKS/MKT

Also jetzt läuft das Projekt schon über einen längeren Zeitraum sehr gut :smiley:

Es kommt sehr selten vor, aber zweimal habe ich schon erlebt das die Verbindung zum AVR Board verloren ging. Schuld war, dass das AVR Board meine mir ihm zugewiesene IP Adresse verloren hatte, und wieder auf der ursprungs-IP war. Völlig Grundlos! Aber nun gut. Es passierte halt. Einmal genügte es den Strom wegzunehmen und wieder einzustecken, beim zweitenmal mußte ich mein AVR Board mittels RS232 und puttytel die eigentliche IP wieder einimpfen :rolleyes:

Dies hat natürlich zur Folge, das der script sinnlos wird, wenn man keine Verbindung zum Board hat. Und deshalb habe ich ganz oben im Script noch eine kleine Sicherheitsabfrage eingebaut, welche den script abrupt beendet falls keine Verbindung zum Board besteht.
>> Der Source ist wie immer hier aktualisiert <<

Die Abfrage ganz oben ist neu: if(! CSCK_GetOpen(14718 /[AVR1-Client Socket]/))
Diese prüft ob der Socket zum Board auch offen ist.

Hallo Hinti,

Die 15A des Sensors bei einer Windung sind der Nennstrom, der Messstrom kann bis zu 48A betragen. Warum hast Du also nicht den vollen Arbeitsbereich des Sensors mit 3 Windungen (Nennstrom 5A; Messbereich 15A) genutzt?, dann kannst Du Dir auch die Verstärkung sparen.

Hardy

Ich habe kein Problem mit der Verstärkung, und nutze die Vorzüge einer Windung mit einem isolierten 1.5mm² Draht.
Außerdem nutze ich mit 12.73 Ampere den Sensor ganz gut aus :wink: - kann hier keine Nachteile erkennen!