Show Posts
Pages: [1] 2 3 ... 18
1  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: March 30, 2014, 01:23:14 pm
Quote
Das geht einfacher, und, ja, das schafft der Arduino:
- Du kriegst aus deiner Spannungsmessung die aktuelle Spannung.
- Du hast (woher auch immer) eine Leistungsanforderung
- Du kennst die Leistung, die bei einer bestimmten Spannung abgegeben wird. Das ist dein Referenzpunkt: z.B. bei U_ref =210V ist deine Leistung 2.5kw und das sind 100%
Dann geht der Rechenweg so:
Faktor_U =  U_ref / Aktuelle Spannung   // das ist der Korrekturfaktor, den du aus der abweichenden Spannung hast.
Faktor_P = 70%  // das ist deine Leistungsanforderung
Faktor_G = Faktor_U * Faktor_P  // das ist dein Gesamtfaktor, um den du mittels Phasenanschnitt deine Spannung reduzieren mußt.
Mit dem Wert geht du in ein Array  und holst dir mittels linearere Interpolation die Phasenanschnittszeiten.

Ne klasse Idee!
Ich habe mal versucht alle Punkte in Einbezug deiner Idee in einen sketch zu bringen, dabei habe ich verwendet was ich bis jetzt habe:

Quote
Du brauchst also in deiner Software:
a) eine Funkion um den Sollwert für die Leistung abzufragen.
b) eine Funktion um die Netzspannung aus dem AD-Eingang zu ermitteln.
c) eine Funktion, die dir aus Sollwert und Netzspannung die Phasenanschnittszeit errechnet
d) eine Funktion, die den Phasenanschnitt ausführt.

Code:
int U_NetzPin = A7;
unsigned long TS1, TS2;

int AC_LOAD = 3;    // Output to Opto Triac pin
int dimming = 128;  // Dimming level (0-128)  0 = ON, 128 = OFF

int U_ref = 220; // bei 220V 3000W Leistung

void setup() {   
  pinMode(AC_LOAD, OUTPUT);// Set AC Load pin as output
  attachInterrupt(0, zero_crosss_int, RISING);  // Choose the zero cross interrupt # from the table above 
  Serial.begin(57600);   
}

void loop() { 
  Sollwert(50); // 50% der Leistung also 1,5kW
 
} //end loop

//d) eine Funktion, die den Phasenanschnitt ausführt.
//the interrupt function must take no parameters and return nothing
void zero_crosss_int()  //function to be fired at the zero crossing to dim the light
{
  // Firing angle calculation : 1 full 50Hz wave =1/50=20ms
  // Every zerocrossing thus: (50Hz)-> 10ms (1/2 Cycle)
  // For 60Hz => 8.33ms (10.000/120)
  // 10ms=10000us
  // (10000us - 10us) / 128 = 78 (Approx) For 60Hz =>65

  int dimtime = (78.046875*dimming);    // For 60Hz =>65   
  delayMicroseconds(dimtime);    // Wait till firing the TRIAC

  digitalWrite(AC_LOAD, HIGH);   // Fire the TRIAC

  delayMicroseconds(10);         // triac On propogation delay (for 60Hz use 8.33)

  digitalWrite(AC_LOAD, LOW);    // No longer trigger the TRIAC (the next zero crossing will swith it off) TRIAC
}

//c) eine Funktion, die dir aus Sollwert und Netzspannung die Phasenanschnittszeit errechnet
int Sollwert(byte Prozent){ //Leistung in Prozent
 float U_Netz = U_NetzLesen();
 
  int Faktor_U =  U_ref / U_Netz;   // das ist der Korrekturfaktor, den du aus der abweichenden Spannung hast.
  int Faktor_G = Faktor_U * Prozent;  // das ist dein Gesamtfaktor, um den du mittels Phasenanschnitt deine Spannung

const int Tabpunkte = 50;
const float WerteTab[Tabpunkte][2]={     // 1.Spalte V in Prozent 1= 220V , 2.Spalte Zeit in Microsekunden
{ 1, 0},
{ 0.999973701481919, 200}, 
{ 0.999790090388604, 400},
{ 0.999294172020061, 600},
{ 0.998335353769449, 800},
{ 0.996769245301471, 1000},
{ 0.99445917748684, 1200},
{ 0.991277454250591, 1400},
{ 0.987106358471148, 1600},
{ 0.981838936915438, 1800},
{ 0.975379590584164, 2000},
{ 0.967644496439482, 2200},
{ 0.958561884891733, 2400},
{ 0.948072195123975, 2600},
{ 0.936128127709887, 2800},
{ 0.922694611303291, 3000},
{ 0.907748697626847, 3200},
{ 0.891279396673216, 3400},
{ 0.873287462010954, 3600},
{ 0.853785134379723, 3800},
{ 0.832795850361218, 4000},
{ 0.810353921805756, 4200},
{ 0.786504190855496, 4400},
{ 0.761301664807882, 4600},
{ 0.734811134683906, 4800},
{ 0.707106781186548, 5000},
{ 0.678271771743856, 5200},
{ 0.648397852526323, 5400},
{ 0.617584939718206, 5600},
{ 0.585940714931153, 5800},
{ 0.553580230518699, 6000},
{ 0.520625531752139, 6200},
{ 0.487205304460519, 6400},
{ 0.453454558986707, 6600},
{ 0.41951436442244, 6800},
{ 0.385531651452729, 7000},
{ 0.351659108385353, 7200},
{ 0.318055204064967, 7400},
{ 0.284884385028046, 7600},
{ 0.252317515266739, 7800},
{ 0.220532660329187, 8000},
{ 0.189716372400389, 8200},
{ 0.160065727330459, 8400},
{ 0.131791534987902, 8600},
{ 0.105123471747264, 8800},
{ 0.0803185633657378, 9000},
{ 0.0576760037973328, 9200},
{ 0.0375653798961305, 9400},
{ 0.0204884152815099, 9600},
{ 0.00725233373128343, 9800}};

int i = 0;   
  while (i < Tabpunkte && Faktor_G > WerteTab[i][0]){i++;}  // passenden Eintrag in der Tabelle suchen
  // richtigen Wert interpolileren
  dimming = (((WerteTab[i][1] - WerteTab[i-1][1]) * ( Faktor_G - WerteTab[i-1][0] ))/ (WerteTab[i][0] - WerteTab[i-1][0] )) + WerteTab[i-1][1];
}


//b) eine Funktion um die Netzspannung aus dem AD-Eingang zu ermitteln.
/*************************************************************************************************
**  Funktion U_NetzLesen() **
**************************************************************************************************
** Liest den AD-WErt an Pin "U_NetzPin" **
** und interpoliert aus der Tabelle den korrekten pysikalischen Wert. **
**  **
**  **
**      **
**  Input: nix **
**  Output: Netzspannung in Volt **
**  genutzte Globale Variablen: SensorPin **
**************************************************************************************************/
float U_NetzLesen() {
  /* Wertetabelle SpannungsWerte */ 
  const int Tabpunkte = 5;
  const float U_Ntab[Tabpunkte][2]={ { 730, 224.7},
  { 729, 224.4},
  { 728, 224},
  { 727, 223.6},
  { 725, 223.1}};                                   
                                   
  int U_NetzAD = analogRead(U_NetzPin);         
   
  //***************** Interpolation des Wertes aus der Tabelle *****************************************
  int i = 0;   
  while (i < Tabpunkte && U_NetzAD > U_Ntab[i][0]){i++;}  // passenden Eintrag in der Tabelle suchen
  // richtigen Wert interpolileren
  float Wert = (((U_Ntab[i][1] - U_Ntab[i-1][1]) * ( U_NetzAD - U_Ntab[i-1][0] ))/ (U_Ntab[i][0] - U_Ntab[i-1][0] )) + U_Ntab[i-1][1];

  return Wert;
} // End of U_NetzLesen

Das Array habe ich etwas größer gemacht damit der Wert präziser wird. Aber ich glaube das benötigt wiederum mehr Zeit richtig?

Quote
a) eine Funkion um den Sollwert für die Leistung abzufragen.
Das brauche ich eig. nicht. da ich den Sollwert entweder im Programm oder per Poti festlege.

Quote
b) eine Funktion um die Netzspannung aus dem AD-Eingang zu ermitteln.
Quote
Dazu mußt du nur die Stützstellen in deinem Array entsprechend anpassen. [...]
Da kann man noch digital filtern, dann wird das besser, aber ganz kriegst du es nicht weg.
Was meinst du mit Stützstelle und wie passe ich sie an? Und wie filter ich das Signal digital?

Quote
c) eine Funktion, die dir aus Sollwert und Netzspannung die Phasenanschnittszeit errechnet
Diesen Punkt habe ich versucht nach deiner Idee umzusetzen. Die Tabelle habe ich in Exel gefertigt.
Danke übrigens auch dafür, hab durch dich ein bisschen mit Exel umzugehen gelernt.

Quote
d) eine Funktion, die den Phasenanschnitt ausführt.
Dieser Punkt ist auch noch fraglich, da der aktuelle Code ja mit delays arbeitet. Heist das wenn da alle 10ms ein delay kommt wird der Arduino eingefroren?

Habe ich den sketch denn erstmal grob der Idee nach richtig umgesetzt?
2  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: March 27, 2014, 01:59:52 pm
Das mit der Genauigkeit stimmt mein Messgerät hat bei Wechselspannung auch 1% +-. Aber ich meinte Genauigkeit die am Messgerät orientiert ist. Wenn es 225,3 anzeigt sollte beim Arduino 225,5 stehen oder bei 227,8V 228V. Ist sowas nicht möglich? Je genauer ich diese Netzspannung messe umso genauer kann ich die Leistung einstellen.

Zum Phasenanschnittregler:
Mit der Formel suche ich immernoch nach ner Lösung auf dem Mathe Forum.

Könnte man mithilfe der Linearen Interpolation mehrere Arrays erstellen mit verschieden Netzspannungen im Bereich 220-240V(oder enger) in 0,5V Schritten (20V/0,5V=40) Das währen dann zB 40 Arrays und je nach gemessener Netzspannung wird dann das passende Array bestimmt und daraus wird dann der benötigte Phasenanschnittwert mittels Linearen Interpolation ermittelt.
Würde sowas gehen, würde der Arduino das schaffen?
3  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: March 24, 2014, 01:49:13 pm
Quote
1. Welche andere Methode den Stellwert zu berechnet?

Damit meinte ich: c) eine Funktion, die dir aus Sollwert und Netzspannung die Phasenanschnittszeit errechnet

Ich habe mich auf nem Mathe Forum gefragt und da meint einer:
Quote
Da in der Formel das t sowohl linear als auch im Argument des sin im Radikanden auftaucht, dürfte eine Auflösung nicht möglich sein, sondern nur eine numerische Approximation.
Ein anderer meint:
Quote
Üblicherweise macht man graphische Näherungslösungen, wenn die Mathekenntnisse noch nicht reif für ET sind.

Quote
Wenn du die Schaltung, so wie einige Posts früher diskutiert, aufgebaut hast, mag der Wert zwar ungenau sein, aber er sollte nicht springen.

Ja die Schaltung ist wie ausdiskutiert. Mit den Schotky Dioden und dem 1000µF Elko wie im Schaltplan.
Er springt ja nicht so extrem nur 1-2 digits hoch und runter.

Quote
Wie genau muß es denn sein?

Mindestens auf 0,5 V genau sollte es sein. Brauche ich dafür mehr Messwerte? Der Wert springt immer so in ca. 0,7V Schritten rum. ist aber annähernd richtig und manchmal sogar genau richtig, aber denn springt er halt um 0,7V wieder hoch oder runter.
4  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: March 22, 2014, 10:55:06 am
Quote
Das mit den 227 in Zeile 3 kann ja nur ein Tipfehler sein.

Ja das wars.

Wiedermal danke für den Tip.

Quote
Wenn du nun langsam weiter machst, einen HW-Teil nach dem anderen und einen SW-Teil nach dem anderen entwicklest, dann hat du am Ende ein funktionierendes System. Keine Sorge, das wird!

Danke das motiviert mich, aber wie soll ich denn jetzt weitermachen?

1. Welche andere Methode den Stellwert zu berechnet?
2. Wie mache ich den Spannungsmesser (programmtechnisch) präziser. Die Werte springen schon ein bisschen rum, machmal sind sie genau richtig, und dann wieder nicht.
5  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: March 19, 2014, 01:15:09 pm
Verzeih mir bitte meine etwas längere Pause. Hatte einiges um die Ohren.

Quote
Bis du mit deiner Mathelehrerin schon weiter gekommen, bei dem Versuch die Formel nach to aufzulösen?

Hab mal die besten Mathe u. Physiklehrer an meiner Schule gefragt. Die meinten das Problem ist das die Variable auch im Sinus steckt, das macht die Gleichung schwer umzustellen. Die meinten man bräute dafür glaub ich die  Additionstheoreme, das dauert aber bis man das versteht und ne Lösung findet.
Also kein Lösung von der Seite.

Quote
Du willst also:
a) eine Leistung einstellen.
b) diese eingestellte Leistung soll bei Netzspannungsschwankungen konstant bleiben.

Genau

Quote
Du brauchst also in deiner Hardware:
a) eine Sollwertvorgabe, mit der du die gewünschte leistungsstufe einstellst. (Poti, Display & Taster, ... )
b) eine Schaltung, die die Netzspannung mißt. ( hast du, könnte verbessert werden)
c) eine Schaltung die die Spannung stellen kann (hast du, machst du mit Phasenanschnitt)
d) eine Schaltung die dir den Nulldurchgang liefert.

Richtig, bei a) möchte ich auch im programmablauf die die Leistung festlegen können(zB. 1500 W für ne stunde)
d) habe ich auch

Quote
Du brauchst also in deiner Software:
a) eine Funkion um den Sollwert für die Leistung abzufragen.
b) eine Funktion um die Netzspannung aus dem AD-Eingang zu ermitteln.
c) eine Funktion, die dir aus Sollwert und Netzspannung die Phasenanschnittszeit errechnet
d) eine Funktion, die den Phasenanschnitt ausführt.

Und wieder richtig.

Quote
Das Ergebnis könnte z.B. so aussehen: (Achtung, die Werte sind geraten,  kein Bezug zur Realität!)
      U_Netz   AD
      237,8   772
      230,1   747
      226,5   736
      221,0   718
      215,7   700

Ich habe versucht sowas zu machen. Konnte nur nicht so extreme Netzschwankungen verursachen. Und ich konnte nur ungefähr den AD Mittelwert rausfischen. Bei mir sieht das so aus.

Code:
const float U_Ntab[Tabpunkte][2]={ { 730, 224.7},
  { 729, 224.4},
  { 728, 224},
  { 227, 223.6},
  { 725, 223.1}}; 

Den sketch mit der Linearen Interpolation habe ich darauf auch getestet(und Linearen Interpolation besser verstanden, nützliche sache).
Die Werte stimmten teilweise fast genau mit der Messung überein, teilweise aber auch nicht. Liegt vllt an den wenigen ungenauen Werten.

Code:
  Netzspannung: 224.39       Rechenzeit: 192 micros
  Netzspannung: 224.39       Rechenzeit: 196 micros
  Netzspannung: 224.08       Rechenzeit: 196 micros
  Netzspannung: 224.08       Rechenzeit: 192 micros
  Netzspannung: 224.39       Rechenzeit: 192 micros
  Netzspannung: 224.70       Rechenzeit: 200 micros
  Netzspannung: 224.70       Rechenzeit: 192 micros
  Netzspannung: 224.70       Rechenzeit: 192 micros
  Netzspannung: 224.70       Rechenzeit: 192 micros
  Netzspannung: 224.95       Rechenzeit: 236 micros

Mit long waren die Werte ohne Kommastelle aber nicht schneller.


6  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: March 07, 2014, 02:00:34 pm
Die Teile sind nun angekommen und ich hab sie verlöhtet und Messungen durchgeführt. Ich habe wie in dem Schaltplan nach dem 100nF einen 1000µF Elko gesetzt.

Das Signal hat sehr lange gebraucht um sich einzupendeln(ca. 3min) sollte ich da doch lieber einen 220µF Elko nehmen?
Gemessen habe ich bei 226,5V im Netz 3,47V Eingang des Arduino dies wird auch duchr das Signal bestätigt:
Code:
736
736
736
737
736
736
736
736
735
735
736
735
736
737
737
737
737
737
737
737
737
737
737
737
737
737
736
736
736
736
736
736
736
737
736
736
737
736
736
736
737
736
736
736
736
736
736
736
735
736
736
736
736
735
736
735
736
735
737
736
736
736
736
736
735
736
736
736
736
736
736
736
736
736
736
737
736
737
737
736
737
737
737
737
737
736
737
737
736
736
736
736
736
736
736
736
736
736
736
736
737
737
737
737
736
737
736
736
736
736
736
736
737
736
736
735
736
736
736
736
736
737
736
736
736
736
736
737
737
736
737
737
737
737
737
737
737
736
737
736
736
736
736
736
736
736
736
735
736
736
737
736
736
738
737
737
737
736
736
737
737
736
736
736
736
736
736
737
736
737
736
737
737
737
737
737
737
737
737
737
737
736
736
736
735
736
736
737
736
736
736
736
736
736
736
736
737
737
737
736
737
736
736
736
736
738
736
736
737
736
736
736
736
736
737
737
736
736
736
737
736
737
737
737
738
737
737
737
737
736
736
736
737
736
736
736
736
736
736
736
737
737
737
736
737
737
737
737
736
736
736
736
736

bei 4,8V am Arduino entspricht das etwa 3,47V am AnalogIn.

Nun wollte ich versuchen die Effektivspannung ausrechnen die ja mit der Formel: URMS = UAM*Pi/(2*Wurzel(2))
Das ergibt 3,86V.

Den hab ich mir nochmal folgendes angeschaut:
Quote
4,88 mV/digit am AD-Eingang
18,45mV/digit vorm Spannungsteiler
410,8mv/digit vorm Trafo

Die ersten kamen grob hin, 410,8mv/digit jedoch nicht, bei 736 Digits wären das ja 302V. Wie hast du das errechnet? Man muss dazusagen ich hab nen anderen Brückengleichrichter verwendet, vllt muss ich das neu errechnen.

Wie soll ich jetzt mit dem Spannungsmesser weiterverfahren/ Netzspannung errechnen(programmtechnisch).


Beim Phasenregler spielt doch erstmal delaymicros oder nicht erstmal keine Rolle, hauptsache es funktioniert erstmal. Später sollen die delays natürlich weg. Ich frage mich jetzt noch immer:
1. Die Formel muss ich nach t0 umstellen, damit ich mit der gewünschten Effektivwertzahl t0 berechnen kann,richtig?
Wenn ich du keine Zeit hast, versuche ich sie mal mit meiner Mathe Lehrerin umzustellen. Muss bloß wissen wonach ich umstellen soll.
2. Wie soll ich diese lineare Interpolation verwenden, wenn die Formel auch von der Netzspannung abhängig ist und diese schwankt.
Quote
Soll ich für von 220 - 240 V in 1 oder 0,5V Schritten für jede Netzspannung so ein Array machen? Kann der Arduino damit schneller arbeiten als mit so einer komplexen Formel?

Wieso ist eig. so eine komplexe Formel für den Arduino nicht empfehlenswert? Kann der in der Zeit wo er diese Formel ausrechnet nichts anderes machen, ist es deswegen? Wie lange braucht er denn für sowas. Jede 1. oder 2 sek würde mir ja ein Wert reichen.

(wie hast du übrigens die Diagramme hier ins Forum reingesteckt bekommen?)
7  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: March 05, 2014, 01:58:02 pm
Das mit dem delay ist mir schon klar das, der rechner da zu ist. Aber ich wusste halt keine andere lösung und habe es so übernommen wie es war. (habs mit micros() versucht, hat bei mir aber nicht geklappt, vllt hab ichs falsch gemacht.)

Quote
Die Frage ist: willst du deine Heizleistung nur auf dem Niveau 3KW halten, also nur die Netzschwankungen aussteuern?
Oder willst du über einen weiten Bereich (0-3kw) die Heizleistung steuern?

Ich will eine Beliebige Watt-zahl bis 3000W eingeben, sodass diese auch gehalten wird.( Also beides)

Quote
Im ersten Fall würdest du ja nur sehr kleine Phasenverschiebungen fahren, die könntest du mit delay in der ISR umsetzen.

Welche Schrittgröße würdest du denn vorschlagen?

Quote
Hast du dir das Thema linare Interpolation schon mal angesehen? Das ist meines Erachtens geeigneter.

Diese Formel ist ja auch von der Netzspannung abhängig. Soll ich für von 220 - 240 V in 1 oder 0,5V Schritten für jede Netzspannung so ein Array machen? Kann der Arduino damit schneller arbeiten als mit so einer komplexen Formel?

Quote
Ein delay in einer ISR geht nicht.

Und wie fuktioniert das denn bei mir? Ich hab doch auch delay in der Prozedur drin die von attachinterrupt() aufgerufen wird.
8  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: March 03, 2014, 10:31:24 am
Quote
Das habe ich in Reply 53 schon beschrieben:
Quote from: guntherb on February 23, 2014, 11:16:29 am
du kannst natürlich C2 drinlassen und auf ca. 1000µ vergrössern, dass misst du eine Gleichspannung die dem arithmetischen Mittelwert entspricht. Die kann man wiederum mit URMS = UAM*Pi/(2*Wurzel(2)) in die Effektivspannung umrechnen.

Ok also ist diese Variante besser, da sie den Arduino nicht so auslastet, ja?

Quote
Da könntest du das vielleicht sogar in der ISR mit delay machen.
Wenn du aber die Phasenanschnittdauern länger machst (>8ms-9ms), dann kommt er ja aus der ISR garnicht mehr raus.

Was ist ISR? delay sollte möglichst nicht vorkommen. Und den 2. Satz verstehe ich nicht.

Da die Genanuheit des Phasenreglers ja geklärt ist stelle ich mir wieder die frage:
Quote
Hab diese Formel schon gesehen, aber mich von den Komplexität der Formel abschrecken lassen. Jetzt verstehe ich sie aber besser.

Nun musste ich etwas grübeln: Diese Formel ist also von t0 abhängig. Ich stelle im programm diese Zahl ein. Von Ihr hängt der Effektivwert ab. Ich will das ganze aber von der gewünschten Spannung abhängig machen. Also muss ich doch die Formel nach t0 umstellen oder? Ist meine Überlegung soweit richtig?

Hab das mal versucht in einen Rechner online einzugeben. Der hat mir folgende Formel ausgespuckt:
t=10*Un-(10*Uef)+(5*pi)*sin_rad((((pi*pi)*t)/900))

Das dumme ist das jetzt auf der anderem Seite trotzdem t geblieben ist. Gibt es ne möglichkeit es komplett auf eine Seite rüberzuholen?

Un würde ich ja wenns klappt mit dem Spannungsmesser messen. Und Uef würde ich manuell den gewünschten Wert eingeben.

Oder wäre solch eine Formel für den Arduino(Mega2560) zuschwer? (zu lange Rechenzeit)

Ist dafür diese linearer Interpolation? Der nachteil daran ist natürlich das die Netzspannung nicht konstant 230V beträgt.( Deswegen ja auch der Spannungsmesser)
9  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: March 01, 2014, 06:10:05 am
Quote
Wie schon mehrmals erwähnt:
ja, du kannst den Spitzenwert messen und daraus den Effektivwert berechnen. (dazu mußt du immer jeweils 20ms möglichst schnell den AD-Wert lesen. Da darf der Arduino aber nicht viel sonst nebenbei machen)

Oder, du kannst den Wert analog Filtern, in dem du paralell zum 100n einen Elko mit mindestens 220µ schaltest.
Dann kannst du zeitunkritisch messen und kriegst zu jedem Zeitpunkt (nach ca. 5sek Einschwingzeit) den arithmetischen Mittelwert. Auch aus dem kannst du dir die Effektivspannung berechnen. Ist zwar langsamer, aber das ist deine Heizung auch.

Wie es mir so scheint ist wohl die zweite variante besser(oder was meinst du?), da der Arduino nebenbei ja noch andere Sachen machen soll. Wie berechne ich denn aus dem  arithmetischen Mittelwert den Effektivwert? Und was für ein Signal kommt dabei raus.

Quote
Wenn deine aktuelle Phasenanschnittsteuerung an sich funktioniert, du kannst also einen Wert einstellen, und der bleibt konstant, UND wenn du ein True-RMS Mulimeter hast, dessen Werten du traust, dann würde ich das eher empirisch angehen:
Wert einstellen, Spannung messen: Vor Phasensteller, Nach Phasensteller
Wert einstellen, Spannung messen: Vor Phasensteller, Nach Phasensteller...

Das habe ich gemacht, dabei bin habe ich in 0,5ms Schritten gemmessen. Später hat die Spannung +-2V ziehmlich geschwankt und ich hab nur das Maximum auf beiden Seiten gemessen. Mit Exel hatte ich auch etwas zu kämpfen.  t ist die Zeit bis zum zünden des Triac nach dem O-Durchgang, Un ist die Netzspannung und Up die Spannung nach dem Phasenregler.
Ich hänge mal die Tabelle unten an. Nun stelle ich die Zeit aber nicht in 0,5ms Schritten sondern in 78µs Schritten und das andere zu messen war schon etwas Zeitaufwendig. Lässt sich aus der Tabelle eine unpräzise Funktion machen?

Den sketch stelle ich hier auch mal rein mit dem Ich den Phasenregler steuere:
Und die Seite mit der Anleitung zum Phasenregler: http://www.instructables.com/id/Arduino-controlled-light-dimmer-The-circuit/?lang=de

Code:
int AC_LOAD = 3;    // Output to Opto Triac pin
int dimming = 128;  // Dimming level (0-128)  0 = ON, 128 = OFF

unsigned long previousMicros = 0; // speichert wie viele µS seit derletzten Änderung vergangen sind

void setup()
{
  pinMode(AC_LOAD, OUTPUT);// Set AC Load pin as output
  attachInterrupt(0, zero_crosss_int, RISING);  // Choose the zero cross interrupt # from the table above
}

//the interrupt function must take no parameters and return nothing
void zero_crosss_int()  //function to be fired at the zero crossing to dim the light
{
  // Firing angle calculation : 1 full 50Hz wave =1/50=20ms
  // Every zerocrossing thus: (50Hz)-> 10ms (1/2 Cycle)
  // For 60Hz => 8.33ms (10.000/120)
  // 10ms=10000us
  // (10000us - 10us) / 128 = 78 (Approx) For 60Hz =>65

  int dimtime = (78.046875*dimming);    // For 60Hz =>65    
  delayMicroseconds(dimtime);    // Wait till firing the TRIAC
//if (micros() - previousMicros >  dimtime) {
//  previousMicros = micros();
  digitalWrite(AC_LOAD, HIGH);   // Fire the TRIAC
//}
  delayMicroseconds(10);         // triac On propogation delay (for 60Hz use 8.33)
//if (micros() - previousMicros >  10) {
//  previousMicros = micros();
  digitalWrite(AC_LOAD, LOW);    // No longer trigger the TRIAC (the next zero crossing will swith it off) TRIAC
}

void loop()  {
  
    dimming=90; //6 Untergrenze ; 126 Obergrenze //128 Stellstufen
    
  
}

unter 0,5ms ging nichts mehr da hat die Glühbirne(mit der ich teste) geflackert, genauso bei 9800µs.
10  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: February 26, 2014, 02:33:52 pm
Ok. Müssen es eigentlich Schottky-Dioden sein oder können es auch andere sein? Die müsste ich sonst noch bestellen. Denn würde ich die mit 30V und 0,2A nehmen.

Bis die ankommen möchte ich mir schon mal Gedanken machen über den sketch:
Kann ich zB 20ms das Signal ausmessen und aus dem höhsten Wert den Effektivwert errechnen, denn müsste ich nur noch diese Zahl in V umrechen. Ist das der Theorie nach richtig oder muss das anders gemacht werden?

Ansonsten habe ich grad bei mir noch ne ähnliche fertigverlötete Schaltung gefunden die so ähnlich ist.
Die is ohne Gleichrichter und da sind 2 undefinierte Dioden drin.Und da kommt folgendes signal raus:
Code:
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
133
344
540
754
953
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
854
645
450
230
38
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
194
400
600
817
1010
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1011
798
596
397
187
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
41
251
450
658
871
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
1023
955
740
545
334
128
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

Da sieht man das die Negativen Wellen wegfallen, aber die positiven Wellen sind dafür nicht so schön. Außerdem ist die Spannung zu hoch.

Wie soll ich denn jetzt mit dem Phasenanschnittregler weiterverfahren?

11  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: February 25, 2014, 03:21:17 pm
Quote
Û = 10,69/227,4*240*1,414 = 15,95V

Wo kommt 1,414 her? Nur um das zu verstehen.

Quote
R2 = R1/(UINmax/UADmax -1)   = 10k /(17,5V / 4,5V - 1) = 3462 Ohm.

Wenn man solch hohe Wiederstände wählt muss man denn auch den Kondensator anpassen damit das Signal unverändert rauskommt?

Sorry ich kenne mich mit Wiederstandsgesetzen nicht aus, aber würde hier der maximale Spitzenwert 4,5V betragen?

Quote
4,89 mV/digit am AD-Eingang
18,46mV/digit vorm Spannungsteiler
392.7mv/digit vorm Trafo

Verzeih mir all diese dummen Fragen. Ich google auch immer vorher, bin mir aber nicht sicher ob ich es verstanden habe.
Ist ein Digit beim AD-Eingang 1 (von 0-1023) und beim Trafo 1V. Ist das sowas wie ne unbestimmte Maßeinheit?

Quote
dann schau dir mal die Signale an, die damit messen kannst.

Soll ich das ganze also erstmal ohne Kondensator messen?

Quote
Sorry, den Teil verstehe ich nicht. Welche Tabelle? 103V bei 7Sekunden???

Is meine Schuld, war zu ungenau ausgedrückt.
Mit Tabelle meine ich die Exeltabelle die du mir gegeben hast, da wo die UEff Formel für Phasenanschnitt ist.
7s/4,5s : Ich stelle mit dem jetzigen sketch die Dauer vom Nulldurchgang bis zur zündung des Triac ein. Testweise, um die Genauigkeit zu prüfen, habe ich da 7s und 4,5s genommen. Die Netzspannung UN habe ich in der Exetabelle meiner Messung angepasst. Und anschließend die gemessenen Effektivwerte mit denen aus der Tabelle verglichen.
12  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: February 24, 2014, 03:35:17 pm
Quote
Da du aber sowieso über den Trafo (wofür ist der eigenlich?)

Na um die Netzspannung ertmal klein zu machen.

Quote
Wenn du mit deinem True-RMS Multimeter die Effektivspannung mißt, kannst du dir mit Û = URMS*Wurzel(2) deinen Spitzenwert ausrechnen.

Ich hab mal Messungen gemacht. Ich will eine Obergrenze von 240V setzen.(kann ich aber ja nicht messen jetzt)
Nun weiß ich nicht um welchen Faktor beim Gleichrichter die Spannung vergrößert wird wenn ich aufrechen.
Hier die Messwerte: Netz: 227,4V Trafo: 13,39V Gleichrichter: 10,69V
Kann ich einfach (10,69/227,4)*240 rechen?

Quote
Mir scheint du fixierst du auf eine technische Lösung, probierst sie, kriegst das nicht zum laufen, dann schmeißt du die Flinte ins Korn und probierst was völlig anderes aus. Du bringst keine der Lösung technisch zu Ende, wechselst zu schnell auf andere Ideen in Hoffnung, dass es da einfacher wird. Klar, viele Wege führen nach Rom, aber einfach ist keiner!

Da hast du wohl recht. Ich muss echt mal an etwas bis zum Schluss dranbleiben. Deswegen will ich das jetzt zu Ende bringen.
Manchmal bin ich aber echt demotiviert und den sehe ich in etwas anderem Hoffnung. Aber ich bleib jetzt hier dran.

Min dem ACS712 könnte man weitermachen, stimmt, aber denn würd ich ja den Spannungmesser wieder weghauen.
Außerdem ist der Spannungsmesser insofern besser, da ich ja die Netzspannung brauche für die Wikipediaformel.

Quote
Um diese Frage beantworten zu können, müßte man wissen: wie genau schaut dein Regel- bzw Steuerkreis aus?

Dafür hab ich messungen gemacht und die werte in der Tabelle verglichen(Un habe ich angepasst)
4,5s kamen 184V raus, laut tabelle müssten es aber 174V sein. bei 7s waren es 103V müssten aber 87V sein.
Beides kommt dem Wert der 0,5s zürückliegt nahe. Aber der Triac kann doch nicht 0,5s zu früh zünden.

Quote
Nimm doch mal ein Blatt Papier und male Kästen auf: Was wird gemessen, was wird verstellte, auf welche Größen wird geregelt.

Hab ich gemacht. Ist ein guter Tipp, Danke.
13  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: February 22, 2014, 02:20:02 pm
Quote
Was für ein Signal kommt bei dieser Schaltung raus?
 
Damit meinte ich eigentlich, ob dort wieder eine gepulste Gleichspannung rauskommt. Aber wegem dem Kondensator sollte ein geglättetes Signal rauskommen, richtig?

Quote
Du nimmst die maximale Eingangsspannung (also den Spitzenwert!)

Wie soll ich denn den Spitzenwert ermitteln, ich habe kein Oszilloskop?

Quote
a) bei gegebenem R1:   R2 = R1/(UINmax/UADmax -1)
b) bei gegebenem R2:  R1 = R2 * (UINmax/UADmax -1)

Ich habe doch nichts von beiden gegeben. Kann ich einen Wert davon selbst frei festlegen?

Kannst du mir versichern, dass es mit dieser Schaltung klappen wird? (Ich hab schon recht viel Geld ausgegeben und nichts klappt.)

Quote
Auch die Formel für die Berechnung der Effektivwerte bei Phasenanschnittsteuerung findet sich in Wikipedia

Hab diese Formel schon gesehen, aber mich von den Komplexität der Formel abschrecken lassen. Jetzt verstehe ich sie aber besser.

Nun musste ich etwas grübeln: Diese Formel ist also von t0 abhängig. Ich stelle im programm diese Zahl ein. Von Ihr hängt der Effektivwert ab. Ich will das ganze aber von der gewünschten Spannung abhängig machen. Also muss ich doch die Formel nach t0 umstellen oder? Ist meine Überlegung soweit richtig?

Hab das mal versucht in einen Rechner online einzugeben. Der hat mir folgende Formel ausgespuckt:
t=10*Un-(10*Uef)+(5*pi)*sin_rad((((pi*pi)*t)/900))

Das dumme ist das jetzt auf der anderem Seite trotzdem t geblieben ist. Gibt es ne möglichkeit es komplett auf eine Seite rüberzuholen?

Un würde ich ja wenns klappt mit dem Spannungsmesser messen. Und Uef würde ich manuell den gewünschten Wert eingeben.

Oder wäre solch eine Formel für den Arduino(Mega2560) zuschwer? (zu lange Rechenzeit)

Ist dafür diese linearer Interpolation? Der nachteil daran ist natürlich das die Netzspannung nicht konstant 230V beträgt.( Deswegen ja auch der Spannungsmesser)

Gruß

strohhirn
14  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: February 20, 2014, 01:54:49 pm
Danke für den hinweis

Quote
C2 und C3 kannst du weglassen

Du meintest C1 und C2 oder?

Quote
die Z-Diode. Die verfälscht dir dein Signal

In deinem Schaltplan ist doch auch eine. Verfälscht die nicht das Signal?
Desweiteren sind da 2 Schottky-Diode. Was machen diese?

Was für ein Signal kommt bei dieser Schaltung raus?

Verzeih mir diese peinliche Frage: Könntest du mir bitte Sagen anhand welcher Daten ich mit welcher Formel die Wiederstände berechne?



Könnte vllt noch jemand parallel noch was zum Phasenanschnittregler sagen?

Wie ergibt sich der Effektivwert? Ich dachte: Hälfte der Welle angeschnitten = Hälfte Effektivwert.
Der Phasenanschnittregler funktioniert ja an sich, nur muss ich die Einstellung mit irgendeiner Formel auf 100% skalieren, sodass 50% auch 50% Spannung ergibt.
15  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: February 19, 2014, 03:28:32 pm
Danke für den Tipp mit der Baudzahl, jetzt weiß ich wofür das gut ist.

Da kommen auf jeden fall mehr werte und das sieht jetzt mehr nach ner welle aus.
Code:
0
38
196
404
587
736
857
931
969
990
1004
1005
1008
1007
1007
995
980
954
906
805
621
410
178
0
17
171
378
565
718
845
925
967
991
1006
1009
1011
1011
1011
1002
984
954
904
794
604
386
156
0

Bei Vorschlag 2 kommt ungefähr das gleiche raus.

Aber mit diesen Werten lässt sich schon mal arbeiten.
Wenn ich nun den Spitzenwert durch SQR(2) teile, bekomme ich dann den Effektivwert?
Soll ich 1s lang die Spitzenwerte aufsummieren um dann aus dem Mittelwert den Effektivwert zu bekommen?
Und wie sollte ich den Trimmpoti einstellen?

Gruß

strohhirn
Pages: [1] 2 3 ... 18