Hi, Ich benutzte eine Platine, welche in einem Kammmuster ineinandergreifende Leiterbahen, die sich gerade nicht berühren, benutzt, um mit meinem Arduino zu erkennen ob es regnet. Wenn ich die Platine zu einem analogen Eingang stecke bekomme ich je nach Wassermenge auf der Platine Spannungswerte zwischen 1-4 V , was ja auch so gewollt ist. Ich plane aber alle meine analogen Pins anderswo zu verwenden und möchte die Platine deshalb an einen digitalen Pin anschließen ( Müsste dann ab 0,6*VCC , also 3V, auf HIGH schalten). Wenn ich das jedoch mache lese ich am digitalen Eingang überhaupt kein Signal. Kann mir hierbei jemand behilfliche sein?
1 | bool RaindropDigital; |
2 | float RaindropAnalog; |
3 | float RaindropSpannung; |
4 | |
5 | void setup() { |
6 | pinMode(13,INPUT); |
7 | Serial.begin(9600); |
8 | }
|
9 | |
10 | void loop() { |
11 | delay(1000); |
12 | RaindropDigital = digitalRead(13); |
13 | RaindropAnalog = analogRead(7); |
14 | RaindropSpannung = RaindropAnalog * (5.0/1023.0); |
15 | |
16 | Serial.println(RaindropSpannung); |
17 | Serial.println(RaindropDigital); |
18 | |
19 | }
|
Wenn ich mit Pin A7 Messe funktionierts, wie gesagt Spannungswerte zwischen 1-4V , wenn ich auf Pin D13 umschließe, bekomme ich dort kein HIGH Signal
Christian U. schrieb: > Wenn ich das jedoch mache > lese ich am digitalen Eingang überhaupt kein Signal. Also weder High noch Low? Der Code wäre wahrscheinlich hilfreich. EDIT: OK, hat sich überschnitten. Hast du die Spannung mit Multimeter/Oszi parallel mal mit geprüft? Vielleicht bist du immer unterhalb der High-Schwelle (0.6*Vcc).
:
Bearbeitet durch User
So habe mit dem Multimeter nachgemessen. Wenn ich mein Raindrop Modul mit Pin D13 habe ich weniger als die hälfte der Spannung zwischen den beiden Leiterbahnen der Platine als wenn ich mit A7 verbinde. Haben die digitalen Widerstände einen anderen Eingangswiderstand? Da ich im Code nur PinMode(13,INPUT) geschrieben habe dürfte der interne Pull up Widerstand nicht aktiv sein richtig? Irgendwelche Ideen wo das Problem liegen könnte?
Christian U. schrieb: > Haben die digitalen Widerstände einen anderen Eingangswiderstand? Das hängt wohl von dem Prozessor ab, der da auf deinem Arduino Board werkelt. Wenn du schon dabei bist, verrate doch auch gleich, welche Portpins dein Analog-Pin 7 und dein Digital-Pin 13 sind.
Christian U. schrieb: > Wenn ich das jedoch mache lese ich am digitalen Eingang überhaupt kein > Signal. Ein Signal kann Low oder High sein. Dass irgendwo "überhaupt kein Signal" ist, kann man sich nur durch eine Unterbrechung erklären... Christian U. schrieb: > Wenn ich mein Raindrop Modul mit Pin D13 habe ich weniger als die > hälfte der Spannung zwischen den beiden Leiterbahnen der Platine als > wenn ich mit A7 verbinde. Zwischen welchen Leiterbahnen welcher Platine? Meinst du vom Pin D13 bzw. A7 gegen Masse? Wie hast du denn das ganze Zeug miteinander verbunden? Christian U. schrieb: > RaindropSpannung = RaindropAnalog * (5.0/1023.0); Diese Rechnung ist prinzipiell falsch, auch wenn sie evtl. schönere Werte ergibt. 1024 ist korrekt. Aber das wurde schon des öfteren diskutiert... Aber am Schlimmsten an /1023 ist, dass das wirklich eine richtige Rechnung ist, wogegen /1024 super optimiert werden könnte. Du bräuchtest beispielsweise keine Fließkommazahl, wenn du deine Spannung in mV skalierst und so schreibst: Raindrop_mV = (RaindropAnalog*5000)/1024;
:
Bearbeitet durch Moderator
Christian U. schrieb: > Haben die digitalen Widerstände einen anderen Eingangswiderstand? Sicher meinst du "digitale Eingänge" und nicht "digitale Widerstände". Und ja, sie sind unterschiedlich, das kann schon zwischen unterschiedlichen digitalen Eingängen vorkommen (ist aber eher unwahrscheinlich). Ich meine der Eingangswiderstand darf beim Atmega328 (ich nehme an du benutzt den Arduino Uno, da wäre der Atemga328 drauf) zwischen 50kΩ und 200kΩ liegen, mit Pullupp liegts dann zwischen 20kΩ und 50kΩ. Hier weiß sicher das Datenblatt mehr (hab ich jetzt nicht reingeschaut). Da die Analogen Eingänge aber auch prinzipbedingt schon anders aufgebaut sind als die Digitalen ist hier definitiv mit unterschiedlichem Verhalten zu rechnen. Möglicher Weise hilft dir schon ein simpler Spannungsfolger (z.B. mit LM358) zwischen deinem Sensor und dem digitalen Eingang. Christian U. schrieb: > RaindropSpannung = RaindropAnalog * (5.0/1023.0); Kann man machen, muss man aber nicht und ist, wie schon gesagt wurde, prinzipell falsch. Du musst nämlich, um richtig zu rechnen, nicht durch den maximal zu erwartenden Wert dividieren sondern durch die maximale Zahl der Schritte und das wären 1024. Der Compiler sollte so klug sein aus einem /1024 eine entsprechende Shift-Operation zu generieren.
Christian U. schrieb: > Wenn ich mein Raindrop Modul mit Pin D13 habe ich weniger als die > hälfte der Spannung zwischen den beiden Leiterbahnen der Platine als > wenn ich mit A7 verbinde. Zumindest bei den beiden Arduino, deren Schaltpläne ich hier habe, hängt am Signal D13 noch eine LED... Welchen Arduino hast du? Hast du dir mal den Schaltplan deines Arduino angesehen?
:
Bearbeitet durch Moderator
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.