Ich habe einen Sketch bei dem ich einen Windsensor auslese. Der interrupt zählt mir allerdings hoch ohne dass das Rad dreht. Was könnte das sein? Ich verwende einen Arduino Yun. Danke für jeden Hinweis
Berger schrieb: > Was könnte das sein? Das Problem liegt in Zeile 42... Spaß bei seite: Poste deinen Code dann kann man dir auch helfen. Kein Code == Keine Hilfe
Berger schrieb: > Was könnte das sein? Das kann nur an deiner Software oder an der Beschaltung liegen.
Ja ich hoffte auf einen Anfängerfehler. Den Code hab ich grad nicht zur Hand, werd ihn aber noch posten.
Ohne weitere Informationen, kann man nur vermuten, das die Leitung vom Sensor zum Controller, Störimpulse aus der Umgebung einfängt. Dagegen könnte ein kleiner Kondensator vom µC-Eingang nach Masse (Tiefpass) helfen. Der Wert nängt natürlich von der genauen Beschaltung ab...
Ingo Wendler schrieb: > Dagegen könnte ein kleiner Kondensator vom µC-Eingang nach Masse > (Tiefpass) helfen. Ein einzelner Kondensator würde bei Störimpulse mit zu kleiner Ladungsmenge dafür sorgen, dass die Schaltschwelle nicht überschritten wird. Für einen echten Tiefpass müßte noch ein Widerstand in die Leitung. Der Eingang sollte in beiden Fällen Schmitt-Trigger Charakteristik besitzen.
Berger schrieb: > einen Windsensor auslese. Der interrupt zählt mir allerdings hoch Wie schnell muss denn da überhaupt gezählt werden? Welche maximale Frequenz gibt der Sensor aus?
Lothar Miller schrieb: > Wie schnell muss denn da überhaupt gezählt werden? Welche maximale > Frequenz gibt der Sensor aus? Damit sind wir bei der nächsten (vielleicht) wichtigen Frage: Welchen Windsensor verwendest du denn, lieber TO?
Kaj schrieb: > Damit sind wir bei der nächsten (vielleicht) wichtigen Frage: > Welchen Windsensor verwendest du denn? Und: Wie ist der an den uC Pin angeschlossen?
Kaj schrieb: > Damit sind wir bei der nächsten (vielleicht) wichtigen Frage: > Welchen Windsensor verwendest du denn, lieber TO? Und: Wie ist der Eingang konfiguriert?
Kaj schrieb: > Welcher Windsensor Lothar Miller schrieb: > Wie ist der an den uC Pin angeschlossen? Mike schrieb: > Wie ist der Eingang konfiguriert? Code, Schaltplan, usw. sonst wird das nichts. Immerhin ist der Controller ist schon mal bekannt: > Arduino Yun ATMega32u4
Also der Code ist im Anhang. Ich habe bewusst den Regensensor genommen, da der noch etwas einfacher als der Windsensor ist. Ich verwende die Bridge Library zum Auslesen der Daten. Der Regensensor stammt aus der Wetterstation von Sparkfun. Ein Kontakt des Regensensors ist auf D8 (HIGH) und INT3 (Pin1) der andere an GND. Damit sollte GND D8 runterziehen und einmal zählen. Stattdessen zählt er pro Sekunde ca 40 hoch. Egal ob da etwas angeschlossen sit oder nicht.
Berger schrieb: > Stattdessen zählt er > pro Sekunde ca 40 hoch. Egal ob da etwas angeschlossen sit oder nicht. Dann vergiß erstmal den Regensensor und häng an den Eingang nur einen zusätzlichen Pull-Up, z.B. 4k7. Dann muss Ruhe herrschen. Als nächstes könntest du einen Rechteckgenerator mit bekannter Frequenz anschließen ... Warum fragst du in deiner Interrupt-Routine eigenlich deinen Zeitzähler bis zu 3 Mal ab (und bekommst jedesmal ein anderes Ergebnis)? Und wenn du rain_last auch bei ungültigen Impulsen aktualisierst, trägt das nicht gerade zur Genauigkeit des Zeitwertes bei.
Alex S. schrieb: > Zeile 25: Input -> Output Guckst du hier: http://www.arduino.cc/en/Tutorial/DigitalPins "Prior to Arduino 1.0.1, it was possible to configure the internal pull-ups in the following manner:"
1 | pinMode(pin, INPUT); // set pin to input |
2 | digitalWrite(pin, HIGH); // turn on pullup resistors |
Aktuell gibt es pinMode INPUT_PULLUP
Eigentlich wollte ich endlich mal den Schaltplan sehen. War wohl nix. Mit "Windsensor" Datenblatt is auch nix. Nach was soll man da suchen. Is ja auch nicht verlinkt. Schei... Programm öffnen ... Mit Notepad kriegt man nur Textmüll. Andere Programme probiere ich nicht mehr. Arduino Spezialisten werden ihn wohl lesen können ... ob es was bringt? Keinen Bock mehr, gehe an die frische Luft - bringt mehr als ein Danke.
Berger schrieb: > Also der Code ist im Anhang. Womit kann man den ansehen? Evtl. wäre es einfacher, wenn du den Quelltext hier postest. Dafür sind dann die [c] Tags da...
:
Bearbeitet durch Moderator
Lothar Miller schrieb: > Berger schrieb: >> Also der Code ist im Anhang. > Womit kann man den ansehen? > > Evtl. wäre es einfacher, wenn du den Quelltext hier postest. Dafür sind > dann die [c] Tags da... Sieht wie ein normaler C-Quelltext aus
ciao schrieb: > Mit Notepad kriegt man nur Textmüll. Andere Programme probiere ich nicht > mehr. Arduino Spezialisten werden ihn wohl lesen können ... Das sind ganz normale Textdateien. Nur weil die File Extension "INO" ist, mußt du nicht gleich beleidigt sein. Peinlich genug ist es für Notepad. Das Schei.ding aus den Anfängen der PC-Zeit kommt einfach mit einem einfache Linefeed am Zeilenende nicht zurecht. Nimm Notepad++, dann hast du das Problem vom Tisch http://notepad-plus-plus.org/
Berger schrieb: > Ich habe einen Sketch bei dem ich einen Windsensor auslese. Der > interrupt zählt mir allerdings hoch ohne dass das Rad dreht. Was könnte > das sein? Du verwendest den internen PullUp-Widerstand am Reedkontakt:
1 | pinMode(PIN_RAINMETER, INPUT); |
2 | digitalWrite(PIN_RAINMETER, HIGH); |
Die internen PullUps der Atmega-Controller haben einen Wert von ca. 20K bis 50K und pullen die Leitung sehr schwach. Sobald Du zwischen Controller und Schalter eine "lange Leitung" hast, reichen diese schwachen PullUps nicht mehr. Verwende einen externen PullUp-Widerstand, Standardwert 4.7K.
Jürgen S. schrieb: > Sobald Du zwischen Controller und Schalter eine "lange Leitung" hast, > reichen diese schwachen PullUps nicht mehr. Berger schrieb: > Stattdessen zählt er pro Sekunde ca 40 hoch. Egal ob da etwas > angeschlossen sit oder nicht. Unter "nichts angeschlossen" hätte ich verstanden, dass da auch keine "lange Leitung" angeschlossen ist. But who knows ...
Moin schrieb: > Das sind ganz normale Textdateien. Nur weil die File Extension "INO" > ist, mußt du nicht gleich beleidigt sein. > > Peinlich genug ist es für Notepad. Das Schei.ding aus den Anfängen der > PC-Zeit kommt einfach mit einem einfache Linefeed am Zeilenende nicht > zurecht. > > Nimm Notepad++, dann hast du das Problem vom Tisch > http://notepad-plus-plus.org/ Was sind denn "normale" Textdateien in deinen Augen? Ich probiere jedenfalls nicht lange rum, besonders dann nicht, wenn man auch noch hinter anderen Angaben herlaufen muß, die auch schon genügend nachgefragt wurden.
Hallo Berger, Du schreibst:
1 | #define PIN_RAINMETER 8 // Digital 8
|
2 | pinMode(PIN_RAINMETER, INPUT); |
3 | digitalWrite(PIN_RAINMETER, HIGH); |
4 | attachInterrupt(3, countRainmeter, FALLING); |
Laut http://arduino.cc/en/Main/ArduinoBoardYun: "External Interrupts: 3 (interrupt 0), 2 (interrupt 1), 0 (interrupt 2), 1 (interrupt 3) and 7 (interrupt 4). These pins can be configured to trigger an interrupt on a low value, a rising or falling edge, or a change in value. See the attachInterrupt() function for details. Is not recommended to use pins 0 and 1 as interrupts because they are the also the hardware serial port used to talk with the Linux processor." Du benutzt Arduino Interrupt 3? Der triggert doch auf Arduino Pin 1, nicht auf Arduino Pin 8? Wie soll das dann gehen? Mal ganz abgesehen davon, dass Arduino Pin 1 für die Bridge-Kommunikation benötigt wird ... LG, Sebastian
:
Bearbeitet durch User
ciao schrieb: > Schei... Programm öffnen ... Mit Notepad kriegt > man nur Textmüll Nö, kein Textmüll, weder mit dem normalen windows notepad noch mit notepad++, mit dem windows notepad fehlen nur die zeilen umbrüche so das alles in 2 zeilen steht. Sogar Wordpad und M$-Word kann die Datei problemlos öffnen (gerade ausprobiert). Da liegt das Problem, beim öffnen und anschauen der Datei, ganz klar nicht an der Datei oder dem Editor... ciao schrieb: > Was sind denn "normale" Textdateien in deinen Augen? alles das, wo klartext drin steht. auch eine .c .cpp .hpp .make .lss .map datei ist nichts anderes als eine normale textdatei. Selbst eine .hex-Datei würde ich noch fast dazu zählen, weil die hex-Werte als klartext drin stehen. .bin oder .elf dateien sind für mich z.B. keine "normalen" Textdateien mehr, weil dort kein klartext drin steht. ciao schrieb: > Ich probiere jedenfalls nicht lange rum Brauch man ja auch nicht... rechts klick --> öffnen mit... und den Editor deiner Wahl aussuchen. Alterantiv, wenn man den Total Commander hat, einfach F3 drücken. Aber für alle die das nicht hin bekommen:
1 | #include <Bridge.h> |
2 | #include <YunServer.h> |
3 | #include <YunClient.h> |
4 | |
5 | #define uint unsigned int
|
6 | #define ulong unsigned long
|
7 | |
8 | #define PIN_RAINMETER 8 // Digital 8
|
9 | |
10 | long rain_last = 0; |
11 | volatile int RegenCounter = 0; |
12 | |
13 | |
14 | YunServer server; |
15 | |
16 | void setup() { |
17 | pinMode(13,OUTPUT); |
18 | digitalWrite(13, LOW); |
19 | Bridge.begin(); |
20 | digitalWrite(13, HIGH); |
21 | server.listenOnLocalhost(); |
22 | server.begin(); |
23 | |
24 | |
25 | pinMode(PIN_RAINMETER, INPUT); |
26 | digitalWrite(PIN_RAINMETER, HIGH); |
27 | attachInterrupt(3, countRainmeter, FALLING); |
28 | }
|
29 | |
30 | |
31 | void loop() { |
32 | YunClient client = server.accept(); |
33 | if (client) { |
34 | process(client); |
35 | client.stop(); |
36 | }
|
37 | |
38 | delay(50); |
39 | }
|
40 | |
41 | void process(YunClient client) { |
42 | String command = client.readStringUntil('/'); |
43 | if (command == "regen") { |
44 | getRegenMenge(client); |
45 | }
|
46 | }
|
47 | |
48 | void countRainmeter() |
49 | {
|
50 | long thisTime = micros() - rain_last; |
51 | rain_last = micros(); |
52 | if (thisTime > 500) |
53 | {
|
54 | RegenCounter++; |
55 | rain_last = micros(); //verhindert Prellen |
56 | }
|
57 | }
|
58 | |
59 | void getRegenMenge(YunClient client) { |
60 | double Menge = 0.2794; |
61 | double Regenmenge = Menge * RegenCounter; |
62 | client.print(F(" X Counter Regen ")); |
63 | client.println(RegenCounter); |
64 | client.print(F(" X Regenmenge ")); |
65 | client.println(Regenmenge); |
66 | |
67 | RegenCounter = 0; // Reset Zähler |
68 | }
|
Kaj schrieb: > Aber für alle die das nicht hin bekommen: Danke sehr, mein neues Android Smartphone hat da offenbar auch so seine Probleme. Ich werde Andreas mal vorschlagen, dass er in der Forensoftware die ino Dateien wie C Dateien behandelt...
Lothar Miller schrieb: > mein neues Android Smartphone ok, hätte nicht damit gerechnet das jemand versucht sich das auf nem neumodischen mobilfunk telefon anzuschauen :D aber ok, man lernt nie aus^^
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.