Show Posts
Pages: [1] 2 3 ... 77
1  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: July 11, 2014, 01:45:56 am
Wenn die Verzögerung der Nulldurchgangserkennung wirklich über die Temperatur stabil ist, und deine Spannungserkennung exakt arbeitet, dann weiß ich auch nicht weiter.

Da beides präzise eingestellt war, kann doch eigentlich nur die Rechnung den größten Teil der Ungenauigkeit verursachen oder nicht?
Es mag ja sein, dass eine Formel nicht richtig ist und falsche Ergebnisse bringt. Aber dass eine mathematische Berechnung ihr Verhalten über die Zeit ändert, ist nicht möglich.

Aber das läßt sich ja einfach rausfinden: laß dir die Zwischengrößen über Serial.print() ausgeben und rechne von Hand nach.

Kannst du denn die unterschiedlichen Abweichungen reproduzieren?
Also., z.B.: beim Einschalten immer erst grosse Abweichung, dann, nach 20min Kleine?
oder kannst du mit gezielter Temperaturbeeinflussung (Kältespray, warmer Lötkolben) das Verhalten beeinflussen?
Damit kannst du den Schaltungsteil, der die Varianzen verursacht vielleicht eingrenzen.
2  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: July 10, 2014, 07:34:22 am
Hi,

dass ein Oszilloskope die Y-Achse spiegelt, kenne ich eigentlich nicht. Die Zeit läuft immer von links nach rechts steigend, diese Aussage aber ohne das deinige zu kennen. (Bei digitalen Oszilloskopen ist das theoretisch möglich.)

Dein variabler Zeitversatz kann vom Triac herkommen (welchen verwendest du?) aber die Zündzeit bewegt sich eher bei wenigen µs.  Das kannst du über dein Oszi messen: Zündsignal von Arduino auf einen Kanal, (und auch darauf triggern) und die geschaltene Netzspannung auf den anderen.

Ich vermute aber als eine Quelle der Abweichung viel eher deine Nulldurchgangserkennung. (hast du noch die, die den Optokoppler direkt aus dem Gleichrichter ansteuert?) Die ist recht ungenau.
Google doch mal nach "Schaltung Nulldurchgangserkennung", da gibt es viel bessere.

Oder du gehst einen ganz anderen Weg:
einen zweiten Arduino spendieren, der sehr schnell abtastend die Sekundärspannung mißt, das Ergebnis dann dem ersten Arduino als Regelgröße zur Verfügung stellt.
3  International / Deutsch / Re: Frequenz messen on: July 09, 2014, 01:17:54 am
Das ist eine charmante Lösung, mit der Libary FreqCount!

Gibt es irgendwo eine Dokumentation, bis zu welcher Frequenz die Messung funktioniert?
4  International / Deutsch / Re: TFT Display wird zu heiß und brennt ab on: July 08, 2014, 07:24:41 am
"Ein Bild sagt mehr als 1000 Worte."
5  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: July 08, 2014, 02:10:54 am
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 klingt für mich einfach Temperatureffekten. Das sind Abweichungen kleiner 2%, das wäre erklärbar.
Bist du sicher, dass die Betriebsbedinungen identisch sind? Also Spannungsversorgung, Lastströme am Arduino etc.

Der Wechsel des Gleichrichters kann das nicht verursachen. Silizium-Dioden verhalten sich da sehr ähnlich.
Eine exakte Beschreibung deines Aufbaus würde auch helfen. Also Schaltpläne, Layout, Hochauflösende Fotos etc.
Aber die willst du ja anscheinend nicht veröffentlichen.
6  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: July 06, 2014, 12:53:16 pm
Du hast ja in etwa eine Auflösung von 0,3V pro Digit (bezogen auf die 220V)
Du hast am AD-Wandler immer 1 Digit, meist 2 Digits Rauschen. Das ist Systembedingt und kriegst du nicht weg.
Dazu kommt, dass du ja relativ zu deiner VREF mißt, als der Versorgung des Arduino.
Und die VREF geht mit Faktor 62 in deine Messung ein.
Wenn also die VREF nur um 50mV schwankt, dann schlägt sich das in deinem Messergebnis schon mit 3V Fehler nieder.

Du zielst hier auf einen Genauigkeitsbereich von 1% und kleiner.
Um das zu erreichen, mußt du richtig Aufwand betreiben.
Z.B. einen Präzisions-AD Wandler mit mindestens 12bit. Eine hochgenaue Referenz für den AD.
Dann solltest du vor allem auf eine direkte Messung gehen. Also nicht über einen Trafo, sonder direkt die zu messende Spannung auf den AD geben (über entsprechende Spannungsteiler) aber dann hast du die 230V in der Schaltung. Gefährlich!

Generell fürchte ich, mit der Schaltung, die du jetzt hast, bist du am Ende der Möglichkeiten angekommen.
Da sind zu viele Fehlerquellen und Nichtlinearitäten drin.
7  International / Deutsch / Re: 12V Lüftersteuerung über 5V Arduino on: July 04, 2014, 12:46:48 am
Also verwendet werden soll ein Scythe Slip Stream SLIM Lüfter. Der hat 3 Pole (-, + und "Controll", wenn ich das richtig im Kopf habe).
Mit dem geht das.  Nur das Drehzahlsignal kannst du bei PMW-Ansteuerung nicht verwenden.
Zumindest geht das mit den genannten Logic-Level-Mosfets nicht.
Richtig. Ich wollte nur nicht zu viele Varianten reinbringen.
8  International / Deutsch / Re: 12V Lüftersteuerung über 5V Arduino on: July 03, 2014, 04:06:31 am
Also verwendet werden soll ein Scythe Slip Stream SLIM Lüfter. Der hat 3 Pole (-, + und "Controll", wenn ich das richtig im Kopf habe).
Mit dem geht das.  Nur das Drehzahlsignal kannst du bei PMW-Ansteuerung nicht verwenden.

Ich verstehe halt gerade nicht so richtig, warum es besser ist den MOSFET zu nehmen, statt einen passenden Bipolartransistor.

Falls BD139: mit Kondensator zwischen Basis und Ground oder ist das unnötig?
MOSFETs sind moderner, leistungsfähiger, unkomplizierter.
Du kannst einen MOSFET direkt vom Arduino ansteuern und damit 100A oder mehr schalten.
Du kannst mit einem IRLZ44 im TO220-Gehäuse ca. 8A schalten, ohne ihn kühlen zu müssen.
Mit dem BD139 kannst du ohne Kühlung nur 1A, und scheiterst da schon am Basisstrom, weil der Arduino nur 40mA liefern kann.

In deinem speziellen Fall reicht der BD139.   Aber ein Mosfet ist einfach vielseitiger. Und IRLZ44N gibts bei Ebay 5Stk für 6€.
9  International / Deutsch / Re: 12V Lüftersteuerung über 5V Arduino on: July 02, 2014, 09:45:10 am
Angenommen mein Lüfter läuft bei anvisierten 80mA, dann würde am Widerstand R_DS= 100 mOhm entsprechend U=80mA*100mOhm=8mV abfallen.
Dann hätte ich "nur noch" 11,992V am Lüfter.
Kein Weltuntergang, aber dennoch zu berücksichtigen, dass man bei diesem aufbau ohne Kompensation nicht 100% Lüfterleistung bekommt.
Keine 100%, aber immerhin 99,86%!   (du hast dich um eine Stelle vertan)

Ich weiß, es ist schwierig aus den vielen Daten, die im Datenblatt stehen, die rauszufinden, die relevant sind.
Aber glaube mir, die meisten Daten sind für deinen Anwendungsfall völlig unwichtig. Verlasse dich erstmal auf die Erfahrung der Experten hier im Forum.

Noch was wesentliches: wieviele Pins hat den dein PC-Lüfter? Die neuen drehzahlgeregelten lassen sich so nicht ansteuern....

Und: Conrad ist eine Apotheke.  Wo anders gibts die billiger: ab 2,49€
10  International / Deutsch / Re: Temperaturvariable einmal pro Tag löschen on: July 01, 2014, 06:06:54 am
Hallo Jurs,

es kommt mir nicht auf den richtigen Tageswechsel an ich hatte an morgens so grob gegen 9:00 Uhr gedacht da sitze ich vorm Rechner wo auch der Arduino läuft und dann sind in der Regel die tiefsten Werte durch. Die Sache mit dem Intervall ist so glaube ich die beste Lösung, aber was meinst du mit reseten, soll nach dem Intervall ein Software-Reset durchgeführt werden ? Wie ich das mit dem Intervall löse finde ich bestimmt etwas hier im Forum.

Gruß Günter

Das mit dem Intervall sieht in etwa so aus:
Code:
unsigned long last_Del_Time;
const unsigned long _24h = 24*3600*1000;

int min_Temp, max_Temp;
void setup(){}
void loop(){
  if (millis() - last_Del_Time > _24h){
    last_Del_Time = millis();
    min_Temp = +99;
    max_Temp = -99;
  } 
  // Rest vom code
}
 
11  International / Deutsch / Re: Temperaturvariable einmal pro Tag löschen on: July 01, 2014, 05:56:15 am
Du könntest ein Zeitfenster und die Temperaturkurve kombinieren:

Wenn du nur einfach alle 24h löscht, ohne Echtzeituhr, dann wird dir der Löschzeitpunkt auf die Dauer weglaufen, da der Arduino-Quarz nicht so genau geht.
Parallel hast du ja aber eine Temperaturkurve aus der du Tagesmaxima und Tagesminima auslesen kannst.
Du könntest also den Zeitpunkt von Tagesmimimum und Tagesmaximum speichern und prüfen, ob die zeitlich weglaufen und damit ggf deine interne Uhr korrigieren.

Besser wäre es allerdings einfach eine Echtzeituhr zu verwenden. Die DS3231 ist hochgenau und gibts für wenige Euros zu kaufen
12  International / Deutsch / Re: Frequenz messen on: June 30, 2014, 03:18:04 am
Meine Meinung nach kommt das Pfeifen daher, dass du jegliche Zeitfunktion aus der Funktion Bewaessern() rausgeschmissen hast.
Die Funktion wird immer ausgeführt, und wenn du die Bewässerung eingeschalten hast, fehlt die Zeitfunktion, um sie wieder auszuschalten (ist auskommentiert).

Noch was: Manuelles_Giessen() hier schaltest du die Ventile wieder aus, falls sie vorher in Bewaessern() eingeschaltet wurden. (auch eine Möglichkeit fürs Pfeifen). Du mußt das anders lösen: Mit Tastendruck einschalten, Zeit merken, und nach tbd Sekunden wieder ausschalten.  Nicht IMMER ausschalten, wenn die Taste nicht gedrückt ist.


Was mir in deinem Code sonst noch auffiel:

Gültiger Sensorwert: Die Variable   Sensorwert[] enthält immer einen Wert, auch wenn er gerade nicht gültig ist.
Das könntest du lösen, in dem du z.B. in der Funktion Wertstabil() der Variablen einen Fehlerwert zuweisst , wenn der Sensorwert nicht gültig ist. z.B. so:
Code:
  if( delta <= Sensorgap){                               // Wenn Änderung kleiner Gap,
      Sensorwert[_SNr] = currVal[_SNr];                  // als Sensorwert speichern.
      Serial.print("    gueltiger Sensorwert = ");
      Serial.println(Sensorwert[_SNr]);
   } else Sensorwert[_SNr] = -99;                        // Wenn ungültig -99 zuweisen.
In der Funktion Bewaessern() wird dann nur bei gültigen Werte abgefragt:
Code:
    // Bewässern starten 
    if(Sensorwert[_SNr] != -99){                                                   // nur bei gueltigem Sensorwert
    if ((Sensorwert[_SNr] <= Pflanze_trocken) && (Sensorwert[_SNr] > SensUG)){

Zeitscheibe Funktion Bewässern(): aktuell ist ja die Zeitscheibenfunktion (if (millis()-letzteBewaesserung < Bewaesserungspause) return;) auskommentiert. Die Funktion Bewässern wird also ständig ausgeführt. Das könnte dein "piepsen" erzeugen.

Sensornummer hochzählen Funktion Bewässern: in der Funktion Bewässern() wird die Sensornummer nicht hochgezählt. Es fehlt am Ende die Zeile:
Code:
   if(++_SNr >= AnzahlSensoren) _SNr = 0;                // nächsten Sensor anwählen,
  Auch wenn du es aktuell nur für einen Sensor verwendest, solltest du den Code gleich entsprechend anlegen. Dazu gehört auch, dass du die Ventilpins in Arrays anlegst, damit du jeweils das dem Senor zugehörige Ventil ansteuern kannst:

_SNr wird auch nicht intitialisiert. Ich bin nicht sicher, ob das nötig ist, aber besser ist es:
static int _SNr = 0;

Störungs-LED Die wird in verschiedenen Funktionen gesetzt und rückgesetzt. Dabei werden Fehler gegenseitig überschrieben. z.B.: Bewassern() schaltet die Stoerungs_LED ein, weil ein Sensorwert zu klein ist. Wasserstandskontrolle() schaltet wieder aus, weil der Wasserstand ja passt.  Besser: definiere dir für jeden Fehler einen eigenen Speicher: Fehler_Tank_leer, Fehler_Sensor[], Fehler_Wasseralarm  etc.   die veroderst du in einer Funktion Alarm() und schaltest dort die LED und ggf einen Summer.

13  International / Deutsch / Re: Frequenz messen on: June 24, 2014, 05:19:27 am
Ich habe, damit du einen Eindruck bekommst, was der Filter bewirkt, die Schaltung nochmal durch die Simulation laufen lassen:



Hier siehst du, welche Eingangsfrequenz welche Ausgangsspannung verursacht, und das bei verschiedenen Potistellungen (R4).
Mit deiner Aussage, das Poti stünde etwa in der Mitte, wäre das etwa die 25k Linie. Du kannst also sinnvoll nur bis ca 50Khz messen.

14  International / Deutsch / Re: Frequenz messen on: June 24, 2014, 02:55:05 am
Wenn der Eingang des Filters auf Masse liegt, sollte der Ausgang 0V haben.

Edit: die Sprungantwort sieht bei mir etwa so aus:


f= 50kHz;  R4 = 3,3k
15  International / Deutsch / Re: Frequenz messen on: June 23, 2014, 01:21:17 am
Den Test mit der Sprungantwort habe ich versucht, jedoch keine Änderungen feststellen können. Hat ungefähr die gleichen Werte angezeigt, ob der Eingang auf Masse oder Sensor lag.
Dann ist da ein Fehler drin.
Wenn der Filter immer den gleichen Wert ausgibt, egal ob vorne eine Frequenz reingeht oder nicht, dann ist was falsch.

Was genau ist ein "1n0 M Keramikkondensator"?  Meinst du 1 nF (1 Nanofarad)?
Pages: [1] 2 3 ... 77