Show Posts
Pages: [1] 2 3 ... 20
1  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: July 14, 2014, 02:42:50 pm
Ich habe mal alles nachgerechnet und alles war richtig.

Desweiteren ist mir heute aufgefallen das die eingestellte Spannung trotz Verzögerungsberücksichtigung falsch ist.
Ich habe nämlich 5ms(+Verzögerung) eingestellt und in der Exeltabelle nachgeschaut wie viel Volt rauskommen müssten.
ca. 160V müssten rauskommen 165V habe ich gemessen.
Ich weiß nicht ob mein Oszi falsch geht oder warum das so ist. Zumindest hat sich die gemessene Verzögerung seit anfang nicht geändert.
Also habe ich mich versucht ranzutasten und die Verzögerung Schrittweise zu erhöhen. Es ist gelungen, jedoch nur in einem bestimmten Bereich. Die kleinere Spannung ab ca. 60V wich immer weiter ab.
Bereits hier ist mir aufgefallen das ich den Phasenanschnittregler nicht überall präzise machen kann.

Ich habe einfach mal versucht mit der ertasteten Verzögerung mir igs. das ganze anzuschauen. Und in dem Bereich in dem es zuvor präzise war, war es nun wieder unpräzise(-3V).
Also habe ich hier wieder Schrittweise mich an den präzisen Wert rangetastet und die Verzögerung runtergemacht.
Auch hier ist mir aufgefallen das ich es nur in einem bestimmten Bereich präzise machen kann.

Ist also vielleicht die Phasenanschnittformel ein bisschen gestaucht oder gestreckt?
Auf den Oszi war die Spitze der Sinuswelle gerade, wie eine Begrenzung, ich weiß nicht ob das einfluss nimmt. ich weiß aber auch nicht, ob ich meinem Oszi noch trauen kann.

Das mit der Temperaturbeeinflussung probiere ich noch aus.
2  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: July 10, 2014, 02:29:18 pm
Also heute hat mein Oszi das Signal wieder richtig rum gezeigt.
Ich habe nochmals die Verzögerung gemessen, und diese hat sich nicht geändert.
Die Verzögerung habe ich natürlich wieder miteinberechnet und der Spannungsmesser war auch präzise.
Igs. hatte ich eine Abweichung von +3V bei einer Netzspannung von 222V, bei 225V hatte ich komischer weise nur 1.5V.
Da beides präzise eingestellt war, kann doch eigentlich nur die Rechnung den größten Teil der Ungenauigkeit verursachen oder nicht?
Die erreichte Präzision von gestern habe ich nur erreicht weil ich die Verzögerung erhöht habe ohne mit dem Oszi nachzumessen. Das hat die +V auskompensiert.


Das ist der Schaltplan:http://arduinodiy.files.wordpress.com/2012/10/dimmer2.jpg
Ich verwende den BTA25-600B Triac: http://pdf.datasheetcatalog.com/datasheet/stmicroelectronics/7470.pdf
3  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: July 09, 2014, 02:31:46 pm
Ich habe heute nochmal rumprobiert:
Ich habe den Spannungsmesser meinem Messgerät angeglichen, um zu schauen ob das die präzision insgesamt erhöht:
Dies hat es, aber nur minimal. Ich habe absichtlich ne Abweichung von 0.7V in den Spannungsmesser reingemacht und igs wich das ganze auch nur ca 0.7V ab.
Das das so wenig bringt hätte ich echt nicht gedacht, da ja die gemessene Netzspannung Grundlage für die ganzen folgenden Rechnungen ist.

Denn habe ich die eingerechnete Verzögerung am Phasenanschnittregler erhöht, und das ganze lief fast haargenau präzise.

Ich bin mir nun nichts mehr sicher, was Schuld ist.
Kann der Triac seine Verzögerung ändern? Der wird nicht heiß und da ist ein fetter Kühler dran.
Was soll ich jetzt überhaupt tun. An welchen Stellen soll ich anfangen nach Fehlern zu suchenP

Desweiteren kam ich mit meinem Oszilloskop nicht klar. Weil die angeschnittene Sinuswelle an der y-Achse gespiegelt war. ich habe die Auto Funktion genutzt und zuvor hats richtig geklappt.
http://www.batronix.com/pdf/Rigol/UserGuide/DS1000DE_Anleitung_DE.pdf

Kann mir da jemand ein Rat geben wie ich das behebe?
4  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: July 08, 2014, 02:29:47 pm
Quote
Bist du sicher, dass die Betriebsbedinungen identisch sind? Also Spannungsversorgung, Lastströme am Arduino etc.
ne, ich habe da ganze vorher nicht gemessen. kann das denn nach ner Woche einfach für ne bestimmte Zeit ändern?

Quote
Aber die willst du ja anscheinend nicht veröffentlichen.
Na sag doch was, wenns hilft.  smiley

Schaltplan ist wie bei reaple #120, nur das R2 halt größer ist.
5  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: July 07, 2014, 12:47:20 pm
Gut möglich das ich mit dieser Schaltung nicht die volle präzision rauskriege. Ich möchte das ganze ja nur möglichst genau meinem Multimeter angleichen.
Ich hatte zuvor das ganze ja auf einer Lochrasterplatine getestet gehabt. Und da hat es richtig präzise funktioniert. Und da funktionierte auch das Spannungsmesser sehr gut, nur max +-0.2V Abweichungen vom Multimeter.
Heute habe ich das ganze nochmal auf der neuen platine ausprobiert: Ich hatte +5V Abweichung vom Messgerät, nach 30min waren es +2V, nach 50min waren es nur noch +0.3-0,5V, einen Tag zuvor waren es +0.5V. (zwischendurch war das ganze aus)
Das sind extreme Schwankungen die vorher nicht da waren.
Ich habe bei der neuen Platine nur R2 erhöht und einen anderen Gleichrichter verwendet:
statt zuvor: file: http://www.digchip.com/datasheets/parts/datasheet/583/WL005F-pdf.php
nun den: http://pdf.datasheetcatalog.com/datasheets/150/233120_DS.pdf

Kann das an einer dieser Veränderungen liegen?
Da freut man sich mal das es geklappt hat, will alles sauber und fest machen und schon funktionierts nicht mehr. smiley-sad
6  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: July 05, 2014, 08:50:09 am
Code:
[codenoInterrupts(); //Interrupts abschalten, damit bei der Zuweisung zum Register nicht unterbrochen werden kann.
  OCR1A = OCR1A_Wert
  interrupts();]
Dies hat soweit ertmal geklappt, die Lampe flackert nicht mehr.

Ich habe jetzt einige Tage versucht, wie beim Spannungsmesser zuvor, das ganze präzise zu kriegen.

Beim Phasenanschnittregler habe ich die Verzögerung mit dem Oszilloskop ermittelt.(380µs). Was mich immernoch wundert wieso der Triac zu früh zündet.
Aber ich habe diese Verzögerung in der Exeltabelle miteinberechnet.

Den Spannungsmesser bekomme ich nicht so präzise hin wie zuvor.  Ich habe den zuvor verwendeten Trafo wieder eingesetzt und R3 etwas größer gemacht. Nun habe ich bei 224V im Netz 3,62V am Ausgang.
Ich habe bei verschiedenen Netzwerten die Zahl am analogen Ausgang notiert. Denn bei jedem paar Netzwert/Analog gerechnet und aus diesen Werten den durchschnitt gebildet. Anschließend multipliziere ich diesen Wert im Programm mit dem Analogwert um die Netzspannung zu ermitteln.
Teilweise funktioniert es präzise(in bezug auf mein Messgerät) teilweise weicht der Wert aber auch um 0,5V ab.
Mir ist aufgefallen das der analoge Wert bei gleicher Netztpannung manchmal 1digit weniger ist. Deswegen weicht es denke ich mal ab.
War vorher aber glaube ich nicht so. (Den Filter verwende ich)

Im gesamten Porgramm stelle ich nun die gewünschte Voltzahl ein. Wenn ich 100V einstelle habe ich aber eine Abweichung teilweise von +4V. Beim ganzen zuvor hatte ich eine Abweichung von vllt 0.5V.

Nun weiß ich nicht wie ich das ganze weiter präziser machen soll. Wie zuvor halt. Den Phasenanschnittregler kann man schonmal ausschließen der ist Präzise. Es kann nur an der Umrechnungen oder am Spannungsmesser liegen.
Was kann ich machen?

Hier nochmal der jetztige sketch:
Code:
#include <avr/io.h>
#include <avr/interrupt.h>

#define GATE 9    //Triac Pin
#define PULSE 20   //trigger pulse width (counts) 10µs
#define DETECT 2  //zero cross detect

int U_NetzPin = A7; // Netzspannungsmesser

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

long previousMillis = 0;
long interval = 13;
int Neuwert;
  const int FF = 99;
  float U_NetzAD;

void setup() {   
  pinMode(DETECT, INPUT);     //zero cross detect
  digitalWrite(DETECT, HIGH); //enable pull-up resistor
  pinMode(GATE, OUTPUT);      //triac gate control
  pinMode(U_NetzPin, INPUT);
  // set up Timer1
  OCR1A = 0;      //initialize the comparator
  TIMSK1 |= (1 << OCIE1A); // Comperator A Interrupt aktivieren
  TIMSK1 |= (1 << TOIE1); //Overflow Interrupt aktivieren
  TCCR1A = 0x00;    //timer control registers set for
  TCCR1B = 0x00;    //normal operation, timer disabled


  // bei zerocross Interrupt
  attachInterrupt(0,zeroCrossingInterrupt, RISING);   
    //IRQ0 is pin 2. Call zeroCrossingInterrupt
    //on rising signal

  Serial.begin(57600);   
}

void loop() { 
  Sollwert(100.00); // 100V

} //end loop


//d) eine Funktion, die den Phasenanschnitt ausführt.
//the interrupt function must take no parameters and return nothing
void zeroCrossingInterrupt(){ //zero cross detect   
  TCCR1B=0x02; //start timer prescaler 8
  TCNT1 = 0;   //reset timer - count from zero
}

ISR(TIMER1_COMPA_vect){ //comparator match
  digitalWrite(GATE,HIGH);  //Triac an machen
  TCNT1 = 65536-PULSE;      //trigger pulse width
}

ISR(TIMER1_OVF_vect){ //timer1 overflow
  digitalWrite(GATE,LOW); //Triac ausmachen
  TCCR1B = 0x00;          //disable timer stopd unintended triggers
}


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

//Serial.print("U_Netz: ");Serial.print(U_Netz);
//Serial.print(" Faktor_U: ");Serial.print(Faktor_U);
//Serial.print(" Prozent: ");Serial.print(Prozent);
//Serial.print(" Faktor_G: ");Serial.print(Faktor_G);Serial.println();

const int Tabpunkte = 50;
const float WerteTab[Tabpunkte][2]={     // 1.Spalte V in Prozent 1= 220V , 2.Spalte Zeit in Microsekunden

{ 0.725233373128343,20360},
{ 2.04884152815099,19960},
{ 3.75653798961305,19560},
{ 5.76760037973328,19160},
{ 8.03185633657378,18760},
{ 10.5123471747264,18360},
{ 13.1791534987902,17960},
{ 16.0065727330459,17560},
{ 18.9716372400389,17160},
{ 22.0532660329187,16760},
{ 25.2317515266739,16360},
{ 28.4884385028046,15960},
{ 31.8055204064967,15560},
{ 35.1659108385353,15160},
{ 38.5531651452729,14760},
{ 41.951436442244, 14360},
{ 45.3454558986707,13960},
{ 48.7205304460519,13560},
{ 52.0625531752139,13160},
{ 55.3580230518699,12760},
{ 58.5940714931153,12360},
{ 61.7584939718206,11960},
{ 64.8397852526323,11560},
{ 67.8271771743856,11160},
{ 70.7106781186548,10760},
{ 73.4811134683906,10360},
{ 76.1301664807882,9960},
{ 78.6504190855496,9560},
{ 81.0353921805756,9160},
{ 83.2795850361218,8760},
{ 85.3785134379723,8360},
{ 87.3287462010954,7960},
{ 89.1279396673216,7560},
{ 90.7748697626847,7160},
{ 92.2694611303291,6760},
{ 93.6128127709887,6360},
{ 94.8072195123975,5960},
{ 95.8561884891733,5560},
{ 96.7644496439482,5160},
{ 97.5379590584164,4760},
{ 98.1838936915438,4360},
{ 98.7106358471148,3960},
{ 99.1277454250591,3560},
{ 99.445917748684,33160},
{ 99.6769245301471,2760},
{ 99.8335353769449,2360},
{ 99.9294172020061,1960},
{ 99.9790090388604,1560},
{ 99.9973701481919,1160},
{ 100.00, 760}};



int i = 0;   
  while (i < Tabpunkte && Faktor_G > WerteTab[i][0]){i++;}  // passenden Eintrag in der Tabelle suchen
  // richtigen Wert interpolileren
  int OCR1A_Wert = int (((WerteTab[i][1] - WerteTab[i-1][1]) * ( Faktor_G - WerteTab[i-1][0] ))/ (WerteTab[i][0] - WerteTab[i-1][0] )) + WerteTab[i-1][1];
noInterrupts(); //Interrupts abschalten, damit bei der Zuweisung zum Register nicht unterbrochen werden kann.
  OCR1A = OCR1A_Wert;
  interrupts();
}


//b) eine Funktion um die Netzspannung aus dem AD-Eingang zu ermitteln.
/*************************************************************************************************
** 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 */ 
 
 
  unsigned long currentMillis = millis();
  if(currentMillis - previousMillis > interval) { // alle 13ms Neuwert
    previousMillis = currentMillis;   
    Neuwert = analogRead(U_NetzPin);
  }                                 
   U_NetzAD = (Neuwert + FF * U_NetzAD)/(FF+1);       
  Serial.println(U_NetzAD*0.291902974);   
  //***************** Interpolation des Wertes aus der Tabelle *****************************************
 
  // richtigen Wert interpolileren
  float Wert = U_NetzAD*0.291902974;

  return Wert;
} // End of U_NetzLesen
7  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: June 21, 2014, 11:54:16 am
Die neue Leiterplatte ist fertig. Und ich probiere sie gerade aus.
Der Spannungsregler funktioniert.

Beim Netzmesser habe ich einen anderen Gleichrichter verwendet, der wohl einen größeren Wiederstand hat.
Nun Habe ich 227V im Netz 2,9V am arduino, zuvor hatte ich ca 3,6V.
Wird das dadurch nicht ungenauer da mehr Volt pro digit sind? sollte ich vllt einen der Widerstände kleiner machen? Und wenn ja welchen?

Quote
Was mir aufgefallen ist das die Lampe immer mal kurz aus und an geht. Woran könnte das liegen und wie könnte ich es beheben?
Das frage ich mich immer noch.
8  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: June 14, 2014, 02:30:51 pm
Quote
Da hat Serenifly recht: ein paar Bits Schwankung wirst du immer haben.

Ok. Der Mittelwert genügt mir ja auch vollkommen. Jetzt kann man den Wert viel besser lesen

Quote
Wenn sich etwas in der 4. Stelle nach dem komma ändert, dann wird das in der Praxis keine Auswirkungen haben.

Ok. Ich habe jetzt einfach ein paar mehr Messungen gemacht(mit dem Filter), die Konstanten errechnet und einfach den Durchschnitt davon genommen.(Mehr als 227V habe ich zu Hause nur sehr selten) Weitere Messungen werde ich noch am Betriebsort machen.

Nun habe ich nochmal den gesamten sketch getestet. Und es hat bisher richtig gut und sehr präzise funktioniert.(nur kleine Netzschwankungen)
Nun muss ich noch versuchen ob es bei Netzschwankungen den Wert konstant hält.
Und später die Einstellung von Volt in Watt umändern.(Das sollte aber mit ner simplen Formel getan sein.)

Was mir aufgefallen ist das die Lampe immer mal kurz aus und an geht. Woran könnte das liegen und wie könnte ich es beheben?

Bis jetzt bin aber schonmal echt froh das es so gut geklappt hat und ich möchte allen danken die mir geholfen haben und besonders guntherb.
9  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: June 10, 2014, 02:19:42 pm
Quote
Mit der Schaltung brauchst du eigentlich keinen SW-Filter mehr.

Naja, das signal schwank wie gesagt immernoch +- 1-2Digits und pro Digt sind das ja ca 0,3V am.

Den Filter habe ich mal ausprobiert und er klappt ganz gut:
Code:
int Pin = A7;

const int FF = 99;
int Neuwert;
float Sensorwert;


long previousMillis = 0;
long interval = 13;
void setup(){
Serial.begin(57600);
pinMode(Pin, INPUT);
}

void loop(){
  unsigned long currentMillis = millis();
  if(currentMillis - previousMillis > interval) { // alle 13ms Neuwert
    previousMillis = currentMillis;  
    Neuwert = analogRead(Pin);
  }
 
  Sensorwert = (Neuwert + FF * Sensorwert)/(FF+1);
  Serial.println(Sensorwert);
}

Aber warum muss ich alle 13 sek was messen? Ohne das hat es auch geklappt.

Desweiteren versuche ich gerade eine konstante zu finden mit der ich die lineare Interpolation vllt ablösen kann.
Diese zahl ist ca. 0,307V pro digit.
Im von 223V +-1V war diese zahl 0,3075. Damit wurde das Signal haargenau umgerechnet wie bei meinem Messgerät. Jedoch entfernte sich die Genauigkeit mit größerem Abstand von 223V.
Die  Konstante ändert sich nur minimal an der 4. stelle nach dem komma.
(Zumindest waren das die bisherigen erkenntnisse im bereich 222V-224V)

Hast du nen Rat wie ich die Formel(bis jetzt nur multiplikation mit konstante) überarbeiten müsste? Oder sollte ich bei der linearen Interpolation bleiben?
10  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: June 07, 2014, 06:13:51 am
Es lag am Elko der war wohl schon etwas älter.

Wie filter ich das signal per Software? So wie im Smoothing example?

Schaltung hänge ich unten dran.
Ich mach mir jetzt noch ne Leiterplatte mit dieser Schaltung und dem Spannungsregler mit 3 weiteren Kanälen die ich wie ein relais verwenden werde.

11  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: May 30, 2014, 07:11:34 am
Quote
Aber dann sieht man es ihnen auch an: verbrannt.
Verbrand ist R2 nicht ich kann nur keine 3,6k an ihm messen sondern 0,2 Ohm oder 1,2 Ohm.

Quote
parallel dazu hast du aber noch eine Schottky-Diode D2, die kann eher kaputt gehen.
Wie kann ich denn prüfen ob alle Teile noch intakt sind?

Mir ist übrigens aufgefallen das es keinen Unterschied macht ob ich die 5V vom Arduino angeschloßen habe oder nicht. Ist das normal?
12  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: May 29, 2014, 02:26:42 pm
Können Widerstände kaputt gehen? Ich messe bei R2 mit 3,6kΩ nur 0,2 Ohm.
Aber kann dadurch die Spannung am analogen Ausgang fallen? zuvor hatte ich immer ca 3,5V bei 225Vnun habe ich da 2V.
13  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: May 28, 2014, 02:23:15 pm
ich hab das jetzt einige Tage versucht und immer das Gleiche.

Quote
Was hast du denn seit gestern geändert?

Garnichts, das ist es ja. Ganz normal angeschlossen und fertig.

Eigentlich dürfte sich auch nichts gelöst haben den es ist ja zusammengelötet. Aber der Fehler muss ja irgendwo in der Hardware liegen.
Lösen sich Lötstellen leicht? Haben sich vielleicht ein Kondensator oder ein Widerstand gelöst oder können die auch kaputt gehen?
14  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: May 24, 2014, 02:17:57 pm
ich wollte jetzt die Tabelle mit den Netzspannungswerten erweitern oder versuchen einen Proportionalitätsfator zu finden.
Jedoch gelingt dies nicht mehr weil die AD-werte sich nun von 300 auf 700 sehr langsam steigern und nicht mal den normalen Wert erreichen.
Normalerweise habe ich die Schaltung(die du mir vorgeschlagen hast) ans Netz angeschloßen und innerhalb von ca. max. 3s kamen die richtigen Werte.
Seit gestern funktioniert dies irgendwie nicht mehr und versteh nicht warum so plötzlich. Hast du ne idee woran es liegen könnte?
15  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: May 21, 2014, 02:37:49 pm
Ist es irgendwie möglich die Zeit zwischen Nulldurchgang und Anschnitt automatisch anzeigen zu lassen? Damit das präziser ist?

Ich bin jetzt erstmal mit dem Curser die Linie langgefahren und diese Zeit zu ermitteln. Raus kam (wie ungefähr von dir vermutet) immer eine Differenz von 440µs oder 480µs. Genauer hab ich es nicht hingekriegt. Ich würde jetzt einfach erstmal den Durchschnitt 460µs nehmen.
Pages: [1] 2 3 ... 20