Für dieses Forum muß Javascript im Browser aktiviert werden!
Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C2 Quellcode formatieren: <code>Quellcode</code> ASM Quellcode formatieren: <asm>Quellcode</asm> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! > Hallo Uwe, > > > ich möchte die S0 Frequenz meines Stromzählers messen. Diese kann unter 0,1 Hz sein. > > Ist dies mit dem Frequenzmesseingang möglich oder können nur höhere Frequenzen gemessen werden? > > Wie ist der Messbereich? > > Die Auflösung bei Frequenzmessung beträgt 1Hz. > Zur Auswertung von Zählern ist die Frequenzmessung der falsche Ansatz. > Je nach Zähler bewegst Du Dich im Bereich von 100 bis 2000 Imp. pro kWh. > > Die Auswertung erfolgt am besten mit den Counter-Ports (P1H.0 bis .3). > am einfachsten läßt Du pro Zähler einen eigenen Thread laufen. > In diesem wartest Du einfach ab bis über <code>ports.getcount()</code> ein Impuls gezählt wurde. > Dann sicherst Du den Zählerstand des Timers. > Beim nächsten Impuls nimmst Du die Zeitdifferenz beider Impulse (in ms) und ermittelst daraus > die Leistung. Angenehmer Nebeneffekt ist, daß du auch die Energiemenge erfassen kannst, > indem einfach die Anzahl der Impulse gezählt wird. > Als kleines Bsp.: (Zähler mit einem Impuls pro 0,5Wh = 2000 Imp./kWh) > <code> > int P; > long W; > ... > ... > thread Zaehler > { > long Imp_old,Imp,Imp_prev,timer,timer2; > P=0; > Imp=0;//alternativ mit gespeichertem Zählerstand initialisieren > Imp_old=Imp; > loop > { > timer=system.timer(); > do > { > yield; > Imp= Imp + (ports.getcount(1)!=0 and 1); > if system.timer()-timer >= 90000 P=0; //kein Impuls nach 90sek.: 0W > if (system.timer()-timer) > timer2 shl 1 > { // Interpolieren der Leistung, wenn doppelte Zeit zwischen den beiden letzten Impulsen vergangen ist. > timer2=timer2+(system.timer()-timer); > P=Imp_prev * (3600000/timer2)/2; > } > } while Imp==Imp_old; > W=Imp*5; // Arbeit in 0,1Wh > timer2=system.timer()-timer; > Imp_prev=var.ImpL2-Imp_old; > P=(Imp_prev)* (3600000/timer2)/2; > Imp_old=Imp; > } > } > </code> > > > MfG André H.