Show Posts
Pages: 1 2 3 [4] 5 6 ... 78
46  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: June 08, 2014, 05:34:31 am
Es lag am Elko der war wohl schon etwas älter.
Schön, dass du den Fehler finden konntest!

Quote
Wie filter ich das signal per Software? So wie im Smoothing example?
Mit der Schaltung brauchst du eigentlich keinen SW-Filter mehr.

Falls doch, dann nehme ich lieber den gleitenden Durchschnitt. Das spart, gerade bei größeren Filterkonstanten, viel Speicher.
das Prinzip ist einfach: du definierst dir einen Filterfaktor: const int FF = 99;
du tastest alle x ms das analoge Signal ab: Neuwert = analogread(A0);
dann nimmst du 1/100stel von Neuwert und addiert 99/100stel vom letzten Sensorwert:
Sensorwert = (Neuwert + FF * Sensorwert)/(FF+1):

Die Grenzfrequenz des Filters liegt bei FF * Abtastrate. Wenn du also alle 10ms einen Wert mißt hast du mit FF=99 eine Grenzfrequenz von ca. einer Sekunde.
Ich würde als Abtastrate aber nicht 10ms nehmen, sondern z.B. 13ms. Auf alle Fälle eine Frequnz die kein Vielfaches der Neztfrequenz 50Hz ist.

Und nochwas: Sensowert MUSS von Typ float sein, ebenso wie die Rechnung in float ausgeführt werden muß.
47  International / Deutsch / Re: Eingänge mit 24V schalten on: June 06, 2014, 12:53:23 am
Ich sag' mal: wenn ein Blitz in deine Hausinstallation einschlägt, ist ein kaputter Arduino dein kleinstes Problem!

Wenn Störspannungen induziert werden, durch Blitzschlag in der Nähe (selten) durch nicht entstörte Klingeln oder Türöffner(wahrscheinlicher) oder andere Einflüsse, dann sollte die Schaltung, die ich oben skizziert habe, ausreichen. Optokoppler halte ich für übertrieben, Z-Diode brauchts denke ich auch nicht.  Es sein denn, die 24V sind extrem unsauber. (z.B. Industrieumgebung)
48  International / Deutsch / Re: Eingänge mit 24V schalten on: June 05, 2014, 07:42:57 am
ok, Hausinstallation ist meist nicht sooo sauber.
den Spannungteiler kannst du so niederohmig lassen, dann empfehle ich aber dringend noch eine ZDiode (oder ein Schottky-Dioden Pärchen wie oben beschrieben) gegen die Spitzen und einen Kondensator >1µ als Störschutz und Entprellung.

Besser wäre aber:
Zuerst ein niederohmiger Widerstand nach Masse als Abschluss.
Dann ein Spannungteiler z.B. 100k / 22k + kerko  (> 470nF)
Damit hast du eine hochohmige Ankopplung an den Arduino mit einem Tau von 8ms eine ausreichende Entprellung.
49  International / Deutsch / Re: Eingänge mit 24V schalten on: June 05, 2014, 03:08:56 am
bevor du aufwändige Schutzschaltungen aufbaust, kläre doch mal, in welcher Güte deine Signale kommen.

Sind es denn wirklich Signale die über lange (Freiland-)Leitungen kommen? Dann brauchts Aufwand.
Oder sind es Signale aus eine anderen elektronischen Steuerung, die daneben steht. Dann reicht ein Spannungteiler mit Entstörkondensator völlig aus.
50  International / Deutsch / Re: Hilfe Bei der Bauteilsuche on: June 04, 2014, 08:48:37 am
es sollte schon mit einem opv gelöst werden, da man die Verstärkung unb den offset mit Potis einstellen soll....
Dann kannst du aber deine Genauigkeit völlig vergessen. Potis sind die schlechtesten Widerstände überhaupt!

Und OP brauchst du wirklich nicht!

du erzeugst dir mit 2 Widerständen aus der Arduino 5V eine 2,5V Hilfsspannung. (die du als Referenz zurückmißt)
Auf diese stellt du den GND des Sensors, und auf diese teilst du auch das Sensorsignal runter.


Und jetzt machst du nur noch:
x = analogRead(A0) - analogRead(A1)
I = x * 200/4 * (4700+7500)/7500; // kann man auch zusammenfassen zu einer Zahl
und schon hast du deinen Strom.
 
Alles was du mit OPs machst wird ungenauer.
Alles was du mit Potis machst kannst du, was Genauigkeit angebelangt, sowieso vergessen!
51  International / Deutsch / Re: Frequenz messen on: June 03, 2014, 01:34:18 am
Ich denke der richtige Weg wäre, alle deine globalen Sensor Variablen als Array anzulegen, und der Funktion den Index zu übergeben.

Code:
const int AnzahlSensoren = 5;  // Wieviele Sensoren sind am System angeschlossen
const byte muxPins[AnzahlSensoren] = {1,4,3,0,5}; // Bitmuster für die Adressleitungen des Multiplexers

int muxChannel(byte _ch){
  PORTA &= 0xF0;
  PORTA |= muxPins[_ch];
}
Das mit dem Array für die Bitmuster kannst du weglassen, wenn bei dir Sensor0 an Adresse 0x00 hängt,  Sensor1 an Adresse 0x01 hängt, Sensor2 an Adresse 0x02 etc.
dann kannst du direkt mit der Sensornummer verodern.

Auch die anderen Funktionen müssen dann noch auf das Arraymodell umgestellt werden:

Code:
const int AnzahlSensoren = 5;  // Wieviele Sensoren sind am System angeschlossen
const byte muxPins[AnzahlSensoren] = {1,4,3,7,5}; // Bitmuster für die Adressleitungen des Multiplexers
const int MuxAD = A0;  // an welchem AD hängt der Ausgang des Mux.
const int SensUG = 300;   // Untere Grenze für die Gültigkeit eines Sensorwertes
const int SensOG = 800;   // Obere Grenze für die Gültigkeit eines Sensorwertes

/*************************************************************************
**   Definition der globalen Variablen                                  **
*************************************************************************/
int currVal[AnzahlSensoren];


int muxChannel(byte _ch){
  PORTA &= 0xF0;
  PORTA |= muxPins[_ch];
}

void readsensor(){
  static unsigned long lastread = 0;
  static float FiltWert[AnzahlSensoren];
  static int _SNr;    // Nummer des aktuell auszuwertenden Sensors
  const float FilterFaktor = 20;    
  
  if (millis()-lastread < 100) return;   // alle 100ms einen Wert holen.
  lastread = millis();                   // Zeit des letzten Wertes merken
  int AktWert = analogRead(MuxAD);
  if (AktWert < SensUG && AktWert > SensOG){    // prüfen ob AD-Wert gültig.
    currVal[_SNr] = -99;                              // fals nicht, Fehlercode -99 zurückgeben
    return;
  }
  FiltWert[_SNr] = ((FiltWert[_SNr] * FilterFaktor) + AktWert) / (FilterFaktor + 1);  
  currVal[_SNr] = int(FiltWert[_SNr]);
  if(++_SNr >= AnzahlSensoren) _SNr = 0;   // Nächsten Sensor anwählen,
  muxChannel(_SNr);                        // und die Muxleitungen neu setzen
} // End of readsensor

Die Funktion readsensor() läuft nun automatisch durch.
Der Unterschied: die Werte von currVal und FiltWert liegen nun in einem Array, mit je einem Speicherplatz für jeden Sensor.
Und nach jedem Auslesen wird der Mux neu gesetzt. Dadurch hat die Schaltung 100ms Zeit, sich auf den neuen Wert einzupegeln. Ob das reicht, weiß ich nicht, das müsstest du mal ausmessen, wie lange die Schaltung braucht um nach anlegen eines neuen Signals einen stabilen Pegel zu haben. Nach meiner Simulation sollte das reichen, aber ich kenne deine genaue Schaltung nicht.


Die Funktion Wertstabil() müsstest du dann entsprechend auf Arrays umbauen.
52  International / Deutsch / Re: smd bestücker für zuhause? on: June 02, 2014, 06:54:00 am
So macht das eine professionelle Fertigung aber nicht.

Da wird zuerst die paste gedruckt, dann werden alle SMD-Bauteile platziert, dann wird das ganze durch den Ofen geschoben zum Löten.
53  International / Deutsch / Re: Bestimmte Zeilen kopieren ? Wie ?! on: June 01, 2014, 04:58:48 am
Du läßt einfach den Text weg.

Wenn du  ohne ihn nicht klarkommst, dann gib nur im setup() einmal eine Kopfzeile aus:
Code:
Serial1.println("Temperatur: \tPressure:  \tHeight:  \t(*C) \t(*F)");

im loop gibst du dann deine Werte mit Tab als Trennung aus:
Code:
Serial1.print(bmp.readTemperature());   Serial1.print("\t"); 
 Serial1.print(bmp.readPressure());      Serial1.print("\t"); 
 Serial1.print(bmp.readAltitude());      Serial1.print("\t"); 
 Serial1.print(temperatureC);            Serial1.print("\t"); 
 Serial1.print("\t");                    Serial1.print("\t"); 
 Serial1.println(temperatureF);          Serial1.println(); 

Dann kannst du den Inhalt des SerMon komplett ins Excel kopieren (Einstellung: Englisch (wegen des Dezimalpunktes) und Trennzeichen Tabulator)

54  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: May 30, 2014, 07:23:08 am
Wie kann ich denn prüfen ob alle Teile noch intakt sind?
Letzlich sicher nur, wenn du die Teile einzeln auslötest und getrennt vermisst.

Quote
Mir ist übrigens aufgefallen das es keinen Unterschied macht ob ich die 5V vom Arduino angeschloßen habe oder nicht. Ist das normal?
ja, das ist normal. Die Diode, die nach 5V geht, soll ja nur vor zu hohen Spannungen schützen, in dem sie diese nach 5V ableitet. Wenn die 5V nicht angeschlossen sind fehlt nur dieser Schutz. Die Funktion selbst ist nicht berührt.
55  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: May 30, 2014, 02:23:19 am
Widerstände können kaputt gehen. Aber dann sieht man es ihnen auch an: verbrannt. Und sie sind dann eher hochohmig.

parallel dazu hast du aber noch eine Schottky-Diode D2, die kann eher kaputt gehen. Die Frage wäre allerdings: wodurch?
Wie genau sieht denn deine Schaltung aus?

Gunther
56  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: May 29, 2014, 03:05:37 am
Wenn dann ist es wohl eher eine kalten Lötstelle. Dass sich ein Bauteil durch Stromfluß so stark erwärmt, dass es sich auslötet ist eher ungewöhnlich.

Wogegen sich eine kalte Lötstelle gerade bei Ungeübten sehr schnell einschleicht. die kann sowohl durch zu kurzes, als auch durch zu langes löten entstehen:

Der Fehler liegt beim Löten

Im zweifelsfall wirst du in der Schaltung mit dem Oszilloskop dein Signal verfolgen müssen, und zu sehen, an welcher Stelle es gestört wird.
57  International / Deutsch / Re: 60 * 1000 = 4294961760 ? on: May 26, 2014, 11:05:53 am
Ich vergess das auch immer wieder (muss am Alter liegen ...  smiley-wink).

Aber
Code:
unsigned long wert;
wert = 60000;

ist doch korrekt, oder?
Ich kann das jetzt gerade nicht ausprobieren, daher muss ich euch bemühen, sorry.

Ja, das geht. (gerade probiert)
58  International / Deutsch / Re: Wieso hat Arduino 5V und alle Sensoren und andere Module nur 3,3v? on: May 26, 2014, 10:23:26 am
Das hat einfach historische Gründe.

Und, ja, die ATmegas sind vom Konzept her "alte" Prozessoren.

Früher war einfach 5V "die" Spannung für digitale Elektronik. Daher waren auf lange Zeit die Microprozessoren eben auch auf 5V ausgelegt. Inzwischen sind die Technologien schon soweit fortgeschritten, die Strukturen schon so klein und Frequenzen so hoch, dass 5V Corespannung ein echtes Hindernis sind: Zu viel Verlustleistung, zu hohe Spannung für die kleinen Strukturen.

Deshalb ging man irgendwann den Schritt zu kleineren Spannungen, zuerst 3,3V

moderne Microcontroller, wie der TriCore von Infineon oder die AVR32 Serie von Atmel haben inzwischen eine Corespannung von nur 1,5 bzw 1,8V. Um trotzdem kompatible I/Os zu haben wird die Peripherie mit 3,3V gespeist, teilweise sogar 5V und die Pegelwandler sind auf dem Chip integriert. Nach aussen wirkt er wie eine 3,3V Microcontroller, intern läuft er mit 1,8V.

So hat sich 3,3V als der "neue" Standard für digitale Schaltungen gebildet.
59  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: May 26, 2014, 02:19:27 am
Seit gestern funktioniert dies irgendwie nicht mehr und versteh nicht warum so plötzlich.
Was hast du denn seit gestern geändert?


Das könnte z.B. eine schlechte Verbindung sein.
60  International / Deutsch / Re: Festlegen eines Analogen wertes, wenn er für mehrere Sekunden stabil bleibt. on: May 23, 2014, 04:02:37 am
Du mußt dir zuerst darüber klar werden wie der Ablauf beim Einschalten und hinstellen des Boards ablaufen soll. erstmal ganz ohne Software.
Z.B.:
- Board hochnehmen, Elektronik montieren.
-  Elektronik einschalten.
- Board hinstellen.
- Sensor kalibriert sich.
-  Piep oder LED-Blitzen zum Zeichen dass Kalibrierung abgeschlossen.

oder, kürzer:
- Board abstellen.
-  Elektronik einschalten.
- Sensor kalibriert sich.
-  Piep oder LED-Blitzen zum Zeichen dass Kalibrierung abgeschlossen.

Erst wenn du das für dich geklärt hast, dann kannst du anfangen das in SW umzusetzen.

Zum Abgleich selber:
Wenn du den Punkt, an dem deine Abgleich beginnen soll festgelegt hast, dann fängst du an, in festgelegten Abständen zu messen. (z.B. 1 sek). Dann prüfst du immer die letzten 5(?) Messwerte darauf, ob sie gleich sind. (innerhalb eines Fensters liegen)
Wenn sie gleich sind, dann ist der Wert gültig, wird gespeichert und das "Fertig" Signal ausgegeben.
Pages: 1 2 3 [4] 5 6 ... 78