Go Down

Topic: Spannung Messen -> Daten per USB ausgeben (Read 2591 times) previous topic - next topic

Whandall

VIL Input Low-voltage
 Min -0.5
 Max 0.3 * VCC V

VIH Input High-voltage
 Min 0.7 * VCC
 Max VCC + 0.5 V
Ah, this is obviously some strange usage of the word 'safe' that I wasn't previously aware of. (D.Adams)

Theseus

Ich weiß nicht wie genau die Sensoren angeschlossen sind.

Ich habe 3 Drähte hier. Ich dachte eigentlich, dass einer der Minus ist und die anderen beiden Plus des jeweiligen Sensors.
Das muss im Datenblatt der Sensoren stehen, was was ist. Niemals Sensoren kaufen, wo es kein Datenblatt oder Anschlussplan gibt. Gib uns doch mal einen Link auf die Sensoren. Vielleicht können wir dir helfen.

modsfabio

Die Sensoren sind von der alten Steuerung.. Kein Datenblatt vorhanden..

Wenn ich messe, habe ich bei beiden ca 0.4V, egal wie viel Sonne oder Wind.. Also muss es ja anders funktionieren..

michael_x

Windgeschindigkeit per Puls macht Sinn ( Wie beim Fahrrad-Tacho )
Sonnenschein kann ein aktives Element sein (irgendwo müssen die seltsamen 0.4 V ja her kommen) oder ein Photowiderstand.
Quote
Also muss es ja anders funktionieren.
Ist denn klar, welcher der 3 Pins GND ist ?
"Wind" ist höchstwahrscheinlich ein "openCollector" d.h. 5V via pullup-Widerstand, an dem du dann 5V / 0V
Pulse einfach erkennen kannst. Kannst du auch einfach an einen  pinMode(windPin, INPUT_PULLUP); anschliessen.
Nichts gegen deine gemessenen 0.4V, aber "Sonne" ist vermutlich auch eher was passives.


hajos118

Foto der Sensoren?
Bitte mit ausreichender Schärfe und Größe, damit Beschriftung lesbar ist.
Orthographie und Interpunktion folgen keiner gültigen Norm. Wer Fehler findet darf sie behalten!

modsfabio

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

Hier, das ist die alte Steuerung


michael_x

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.

modsfabio

#22
Apr 21, 2016, 08:30 pm Last Edit: Apr 21, 2016, 08:36 pm by modsfabio
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?

ElEspanol

#23
Apr 21, 2016, 10:50 pm Last Edit: Apr 21, 2016, 10:51 pm by ElEspanol
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

michael_x

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.
Code: [Select]

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.

modsfabio

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!

michael_x

Quote
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". ;) 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

modsfabio

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..

michael_x

Quote
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.

Quote
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.

Theseus

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.

Go Up