Show Posts
Pages: 1 ... 17 18 [19] 20 21 ... 78
271  International / Deutsch / Re: Modellbahn Licht mit Arduino schalten on: March 02, 2014, 03:06:25 am
Da gibt es fertige Relais-module, mit 2,4,8,16 Schaltkreisen drauf.

z.B. sowas: 8 Kanal 5V Relais Modul Arduino

Wennst du aber gerade am neue konzipieren der Anlage bist, dann schau dir mal die anderen Modellbahnfred  hier im Forum an. Da geht noch viel mehr als nur Blockweise Ein- und Ausschalten! Suche einfach mal "Modellbahn" im Forum.

Da findest du komplette Haussimulationen, inkl Fernseher, Schattenbahnhofsteuererung, flackernde Leuchstoffröhren an Bahnhöfen....
272  International / Deutsch / Re: Servo dreht sich nicht on: March 01, 2014, 02:05:27 pm
laut datenblatt von conrad sollte der servo sehr wohl mit 4.8V funktionieren.
Das stimmt. Aber es ist der Strom, der Probleme macht. Der Servo zieht im Anlaufen sehr hohe Ströme, mehr als der USB-port schafft.
Dann bricht die Spannung zusammen, der Arduino kriegt einen Reset, und das gibt dann
dieses geräusch als ob der USB vom arduino immer raus und wieder reingesteckt wird.
273  International / Deutsch / Re: Servo dreht sich nicht on: March 01, 2014, 01:32:57 pm
Du braucht eine extra Versorung für deinen Servo.
Die USB-Schnittstelle (und auch der Arduino-5V Regler) kann nicht genügend Strom liefern.

Nimm ein externes Netzteil (z.B. USB) oder 3 Batterien als Versorgung für den Servo.
274  International / Deutsch / Re: 3kW Heizung, Leistung regulieren und messen on: March 01, 2014, 09:12:00 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.
Das habe ich in Reply 53 schon beschrieben:
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.

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?
So wie ich das sehe, entspricht das ziehlich genau der Formel aus Wikipedia.


Nur scheint mir das ganze etwas verschoben zu sein. Ich denke, dass deine Nullpunkterkennung vielleicht etwas unsauber auslöst?
wenn ich die Linie der Formel um 0,45ms nach vorne verschiebe, dann deckt sich die Linie ziemlich genau mit deinen Messugen.


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
Ich denke die 0,45ms differenz kommen aus der Schaltung des Nulldurchgangsriggers.
Das ist kein Problem, die Abweichung ist konstant und wenn man sie kennt, kann man sie berücksichtigen.


Der Code kann den Phasenanschnitt in 128 Schritten verstellen ich denke, für deine Zwecke ist das nicht ausreichen, du brauchst eine feinere Regelung. Da du ja, um deine konstanten Heizleistung zu haben, eine konstante Effektivspannung einstellst, wirst du wahrscheinlich Phasenanschnitt nur in sehr kleinen Zeiten fahren. Da könntst 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.
275  International / Deutsch / Re: Rechnung mit float on: March 01, 2014, 03:18:59 am
Code:
float((patternHeartbeat[ctPattern] * ledFactor[led]) / (((NUM_LEDS / 2) + 1) * 9));

Du dividierst hier 2 integerzahlen und wandelst das Ergebnis in float um. Wenn du eine float division willst, mußt du auch float zahlen dividieren:
Code:
leds[led].r = (float)r * (float(patternHeartbeat[ctPattern] * ledFactor[led]) / float(((NUM_LEDS / 2) + 1) * 9));
276  International / Deutsch / Re: PWM Siginal mit Optokoppler auf 40-100W Halogenspot übertragen on: February 28, 2014, 12:13:21 pm
Es ist doch immer wieder ein Glücksgefühl, wenn ein Projekt funktioniert!

Ja, die ,,Platine" ist die Rückseite eines Zeichenblocks smiley-grin
Die ist bestimmt schwer entflammbar!  smiley

277  International / Deutsch / Re: Frage wegen Datenlogger on: February 28, 2014, 08:41:38 am
Vielleicht hilft dir ja auch das bei deinem Problem:

Conrad Temperaturlogger Baustein

Ich habe das Gefühl, dir geht es weniger um den Arduino als um die Lösung deines Warmwasserproblems
278  International / Deutsch / Re: Frage wegen Datenlogger on: February 28, 2014, 04:51:43 am
Du mußt den Wert auch in den Datastring schreiben.

z.B.:
Code:
    String dataString = "Temp= ";
    float AktTemp = 23.5;
    dataFile.print(dataString);
    dataFile.println(AktTemp);
    dataFile.close();

Hast du die Beispiele aus der SD-lib schon ausprobiert?
279  International / Deutsch / Re: Attiny85 mehrere Taster an Analog Pin, Werte ermitteln on: February 28, 2014, 03:57:56 am
Quote
T4 = AD > 785;
Du hast den wichtigsten Fall vergessen, Günther:
T4 = (AD > 785 && AD < 1010);
keinTaster = AD > 1010;

smiley-wink

Du hast recht! smiley-red
Grüße
Gunther
280  International / Deutsch / Re: Frage zu Interrupt kann man die laenge eines Impuls Festsetellen on: February 28, 2014, 03:40:21 am
ich weiß nicht, warum dein Sketch nicht funktioniert.

ich habe den Sketch neu aufgebaut, genau nach den Regeln wie du es auch gemacht hast, und er läuft.

Vermutlich hast du bei copy&paste mit anschliessendem Umbenennen irgendwo was vergessen.

Code:
volatile unsigned long TS1, TS2;
volatile boolean ISR, Flanke;

volatile unsigned long TS1_b, TS2_b;
volatile boolean ISR_b, Flanke_b;


void setup(){
  Serial.begin(115200);
  pinMode(2,INPUT);
  attachInterrupt(0, ISRpulslang, RISING); // Interrupt an Pin2
  attachInterrupt(1, ISRpulslang_b, RISING); // Interrupt an Pin2
}

void loop(){
   long Pulse = Pulslang();
   if (Pulse >0){
   Serial.print(Pulse);Serial.print("\t");Serial.print(" ms      ");
   }
   long Pulse_b = Pulslang_b();
   if (Pulse_b >0){
   Serial.print(Pulse_b);Serial.print("\t");Serial.println(" ms_b");
   }
   delay(100);
}
 
 
void ISRpulslang(){
  if (ISR){
    if (Flanke){
      TS1 = micros();
      attachInterrupt(0, ISRpulslang, FALLING); // Interrupt an Pin2
      Flanke = !Flanke;
    } else {
      TS2 = micros();
      attachInterrupt(0, ISRpulslang, RISING); // Interrupt an Pin2
      Flanke = !Flanke;
      ISR = false;
    }
  }
}

void ISRpulslang_b(){
  if (ISR_b){
    if (Flanke_b){
      TS1_b = micros();
      attachInterrupt(1, ISRpulslang_b, FALLING); // Interrupt an Pin2
      Flanke_b = !Flanke_b;
    } else {
      TS2_b = micros();
      attachInterrupt(1, ISRpulslang_b, RISING); // Interrupt an Pin2
      Flanke_b = !Flanke_b;
      ISR_b = false;
    }
  }
}

unsigned long Pulslang(){
  if (!ISR){
    noInterrupts();
    unsigned long pulse = TS2-TS1;
    interrupts();
    ISR = true;
    return (pulse);
  }
  return(0);
} // end Pulslang 



unsigned long Pulslang_b(){
  if (!ISR_b){
    noInterrupts();
    unsigned long pulse_b = TS2_b-TS1_b;
    interrupts();
    ISR_b = true;
    return (pulse_b);
  }
  return(0);
} // end Pulslang_b
 
281  International / Deutsch / Re: Attiny85 mehrere Taster an Analog Pin, Werte ermitteln on: February 28, 2014, 03:07:57 am
Der berechnete Wertebereich 4 - 11 passte am Arduino und am Attiny nicht ganz, am Arduino bekam ich Werte um die 30 angezeigt. Am Attiny funktionierte es wenn ich von 0 - 15 ausgewertet habe.
Vielleicht ist der erste Widerstand etwas zu klein.
4-11 ist auch ein exrem enger Wertebereich.
Du muß ja nicht exakt die Grenzen aus dem Excel abfragen, du kannst die Grenze ja auch irgendwo in die Mitte legen.
Mit
                 min   max
R1    220    4      11
R2   7,5k  136   285
R3   39k  494   717
R4 200k  851  947
könnest du die Grenzen so legen:
T1 = AD < 75;
T2 = AD > 75 && AD < 390;
T3 = AD > 390 && AD < 785;
T4 = AD > 785;

Mir fällt gerade auf, das meine Schaltung anders ist als deine in der Excel Tabelle !
Meine ist so wie michael_x geschrieben hat, also alle Widerstände in Reihe.
So habe ich ja am letzten Taster alle Widerstände zusammen, bei dir nur den, der auch wirklich geschaltet wird.

Aber warum stimmen die Werte trotzdem ?
Die Werte stimmen nicht überein, aber dadurch dass die Toleranzen ja schon durch den Pullup so riesig sind, verschieben sich die Werte mit deiner Schaltung nur minimal. Aber das kannst du ja einfach prüfen, in dem du statt der Einzelwiderstände die jeweilige Summe der Widerstände in die Excel-Felder einträgst. Es ändert sich nicht viel.
Und wenn du die Grenzen so nimmst wie ich sie oben angegeben habe, ist das eh egal.
282  International / Deutsch / Re: Hat das Forum eine neue Schriftart? on: February 28, 2014, 02:04:40 am
Bei mir funktioniert alles normal.
Mit Firefox, IE und Google Chrome. Win7.

Ich hatte auch mal kurz das Thema mit den Grossbuchstaben, das war aber schnell weg.
283  International / Deutsch / Re: Frage zu Interrupt kann man die laenge eines Impuls Festsetellen on: February 27, 2014, 11:41:18 am
Sorry, ich komme erst morgen wieder an einen Arduino.
Und so "trocken" fällt mir nix auf.
Vielleicht hat ja einer der Cracks eine Idee?
284  International / Deutsch / Re: Attiny85 mehrere Taster an Analog Pin, Werte ermitteln on: February 27, 2014, 10:47:04 am
@guntherb: mit R1=0 hat Captain-DJ noch mehr Luft für seinen unbestimmten Pullup-Widerstand.
Der Normal-Fall "Kein Taster" muss ja auch sauber erkannt werden. (Ein 200k Widerstand bei 5V ist auch schon recht hoch )  
Alte Gewohnheit.
So kann man auch Kurzschluss nach Masse und nach VCC erkennen und ausschliessen.
Ist aber in dem Fall wohl nicht nötig.
285  International / Deutsch / Re: Attiny85 mehrere Taster an Analog Pin, Werte ermitteln on: February 27, 2014, 10:33:00 am
@guntherb
Wie macht man denn so was ?
Ohmsche Gesetz kann ich, aber es kommt ja nicht nur auf die einzelnen Widerstände an, bei mir hab ich alles mit 100KOhm gemacht und erhalte ja auch vernünftige Werte von 500 - 900 für die 4 Taster.
Das muss ja irgend wie anhand des Gesamtwiderstandes aufgeteilt werden ?

Dann frag doch einfach nach der Berechnung eines Spannungsteilers....  smiley
Meine Schaltung ist so:
vom AD-Pin gehen die Widerstände R1-R4 auf jeweils ihren Taster nach GND.
Wenn der interne Pullup eingeschalten ist, dann kann man die Spannung, die am AD-Eingang anliegt so Berechnen:
UAD = R1/(R1+RPullup)*5V

bzw. wenn ich gleich den AD-Wert ausrechnen will:
AD-Wert = R1/(R1+RPullup)*1023

ich habe dir das Exelsheet, in dem die Abstände angezeigt werden mal  zum Spielen drangehängt.
Die farbigen Balken zeigen dir an, in welchen Bereich sich die AD-Werte bewegen können über die Streuung des Pullup.
Du mußt also auf Bereiche abfragen, z.B. "boolean Taste2pressed = (AD > 133 && AD <279);"
ACHTUNG 1: Die Toleranzen von R1-R4 sind NICHT berücksichtigt, sollten aber kaum ins Gewicht fallen.
ACHTUNG 2: Gleichzeitiges Drücken von Tasten führt zu falschen Ergebnissen.

Pages: 1 ... 17 18 [19] 20 21 ... 78