Spannung Messen -> Daten per USB ausgeben

http://www.marohl.de/files/elero_sonneboy.pdf

Hier, das ist die alte Steuerung

läuft die alte Steuerung noch (mehr oder weniger)?

Wenn nicht, ist zumindest klar dass der weisse GND ist.

Die mehrfache Warnung vor dem Verpolen des Lichtsensors deutet allerdings darauf hin, dass es nicht nur ein LDR ist.

Nein.. die ist völlig hinüber.. Das war der Grund des Tauschs...

Ich habe das weiße an 3.3V geklemmt und die anderen beiden an A0 bzw A1 Edit: Zusatz: Mit weiß an GND ging garnichts.. Bei beiden die selben Werte (ca 0.4V) und nichts hat sich verändert...

Beim Sonnensensor bekomme ich ziemlich hohe Werte (ca 700). Je weniger licht, desto höher der Wert. Daraus hab ich jetzt einfach die Differenz mit 1023 gebildet. Jetzt ist das Ergebnis höher, je mehr Licht. Das scheint soweit zu klappen..

Beim Windwächter habe ich ein kleines Skript geschrieben, das Werte über 750 als Impuls zählt. Auch das scheint einigermaßen zu klappen. Ergebnis 0, wenn ich nichts mache, bei langsam drehen relativ geringe Zahlen (ca 5-15) und bei schnell drehen etwas höhere (ca 30-60). Komischerweise ist immer die letzte Zahl die höchste, obwohl es eigentlich die niedrigste sein sollte.. Sieht z.B. so aus:

25 19 14 11 8 30

Habt ihr eine Idee?

Häng die Teile doch mal an ein Oszi, dass man mal sieht, was wirklich rauskommt.

Notfalls kannst du ja den Arduino als Oszi missbrauchen

AnalogRead ohne GND Verbindung liefert nichts sinnvolles.

Den Windmesser (reedkontakt) würde ich über Pulsfrequenz messen. Der weisse ist sicher GND! den anderen Draht würde ich als INPUT_PULLUP mt Vcc versorgen und schauen, wie oft er auf 0 gezogen wird.

const byte windPin = 3;  // schwarzes Kabel zum Windmesser

void setup() {
    Serial.begin(9600);
    pinMode(windPin,INPUT_PULLUP);
}

bool lastState;
unsigned long lastHigh;
unsigned long lastLow;

void loop() {
unsigned long now = millis();
   if (lastState != digitalRead(windPin) ) {
      if (lastState == LOW) {
         // jetzt Wechsel LOW->HIGH
         Serial.print(now - lastLow);
         Serial.print(" / ");
         Serial.println(now - lastHigh);

         lastHigh = now;
      }
      else {
         // jetzt Wechsel HIGH->LOW
         lastLow = now;
      }
      lastState = ! lastState;  // Wechsel speichern 
   }
}

Da beim Sonnen-Signal was von Vorsicht Verpolung steht, wird es wohl ein Phototransistor / Photodiode sein. Also mit z.B. 10k an Vcc und zwischen Widerstand und Sensor messen.

Ich probiere das mal! :) Danke für deine hilfreichen Antworten!

Jetzt allerdings noch ein Problem.. Der Nano scheint immer nach ca 30-40 Stunden abzustürzen und startet nicht mehr.. Da bei leuchtet ein LED und das andere blinkt im Sekunden-Takt. Wenn ich ihn abziehe und wieder drauf Stecke das selbe. Ich muss das Program mit dem Raspberry neu aufspielen, damit es funkioniert.. Hierzu nutze ich avrdude

Ideen? :)

Danke vielmals!

Da bei leuchtet ein LED und das andere blinkt im Sekunden-Takt. Wenn ich ihn abziehe und wieder drauf Stecke das selbe. Ich muss das Program mit dem Raspberry neu aufspielen, damit es funkioniert… Hierzu nutze ich avrdude

Ideen?

Meine Ideen:

  1. “Glaub ich nicht”. :wink: Reset drücken würde vermutlich auch reichen.
  2. Was meinst du mit “ihn abziehe”? Vom Steckbrett? Behält “er” (der Nano ?) dabei seine Stromversorgung per USB?
  3. Welche LED macht was? ( Ein Original-Nano hat 4 LED)


http://www.arduino.cc/en/uploads/Main/ArduinoNanoFront_3_sm.jpg

Mit abziehen meine ich, ihn vom Strom zu nehmen. Also den USB Stecker raus.. Ich habe ca 10-20 sekunden gewartet und "ihn" wieder eingestöpselt - Das selbe Problem.

Wenn alles funktioniert Leuchtet die PWR LED und RX blinkt ganz schwach wenn Daten gesendet werden.

Wenn das beschriebene Problem auftritt leuchtet PWR LED und L blink hell im Sekunden Takt. Das dann so lange bis ich mit avrdude das Programm wieder aufspiele..

den USB Stecker raus

Tja, dann hat sich das mit dem Reset wohl erledigt. Zumindest, wenn es auch mit einem nackten nano oder max. deinen Sensoren und zwei Widerständen passiert.

Wenn das beschriebene Problem auftritt [nach 30 .. 40 Stunden], leuchtet PWR LED und L blink hell im Sekunden Takt.

Hast du auf der anderen Seite (raspbi) was, das automatisch (nennt man zurecht Dämon bei linux) per avrdude etwas lädt? (der klassische bootloader kommt mit blink-Sketch)

Ich verstehe das so, dass dein sketch nur sekündlich was sendet. Häng doch zum Test statt des raspbi einen PC an die USB-Schnittstelle. Oder nur eine Stromversorgung und schau, ob der Nano dann "ewig" läuft. Wenn ja, muss es am Unterschied zwischen dem raspberry und dem Steckernetzteil liegen;)

Für einen versteckten Speicherüberlauf sind 30 Stunden zu viel bei 2048 byte RAM, wenn sich alles im Sekundentakt abspielt (> 100.000 sek), ausserdem würde dann Neustart/Reset helfen.

modsfabio:
Jetzt allerdings noch ein Problem…
Der Nano scheint immer nach ca 30-40 Stunden abzustürzen und startet nicht mehr…
Da bei leuchtet ein LED und das andere blinkt im Sekunden-Takt.
Wenn ich ihn abziehe und wieder drauf Stecke das selbe. Ich muss das Program mit dem Raspberry neu aufspielen, damit es funkioniert… Hierzu nutze ich avrdudeDanke vielmals!

Wenn das wirklich so ist, dass nur trennen vom Strom hilft, dann hast du wahrscheinlich einen Fehler im Schaltplan oder große Störungen auf der Leitung, so dass der Arduino in einen nicht erlaubten Betriebszustand versetzt wird. Bei solchen massiven Störungen besteht immer die Gefahr, dass was beschädigt wird.

Theseus: Wenn das wirklich so ist, dass nur trennen vom Strom hilft, dann hast du wahrscheinlich einen Fehler im Schaltplan oder große Störungen auf der Leitung, so dass der Arduino in einen nicht erlaubten Betriebszustand versetzt wird. Bei solchen massiven Störungen besteht immer die Gefahr, dass was beschädigt wird.

Vom Strom weg hilft ja eben nicht.. ich muss per avrdude das Programm neu aufspielen..

Kaputt? Hast du mal andere Sketche probiert? Bleiben die dauerhaft gespeichert?