Forum: Mikrocontroller und Digitale Elektronik [Fischertechnik] Taster schicken Störsignale und gehen in Interruptfunktion(Arduino)


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Myrtol (Gast)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo meine Damen und Herren, :)
ich hoffe Ihr könnt mir weiterhelfen. Sitze schon seit mehreren Stunden 
dran und komme nicht weiter.

Undzwar bin ich gerade dabei von Fischertechnik das Hochregal mit einem 
Arduino zu steuern.
Ich habe leider ein großes Problem mit den Tastern(meiner Meinung nach). 
Wenn diese betätigt werden sollen sie durch Interruptfunktionen bestimme 
Aufgaben bewältigen. Dazu gehört eigentlich nur das diese die jeweiligen 
Motoren abschalten sollen und dann ein Stück vorfahren, damit der Taster 
dann nichtmehr betätigt ist. Jedoch beim Starten des Programms und auch 
wenn ich die Motoren einschalte springt es manchmal automatisch(ohne das 
die Taster betätigt werden) in die Interruptfunktion.
Ich habe die Taster über ein Active-Low mit dem internen 
Pullup-widerstand geschalten. Außerdem habe ich Softwaretechnisch 
entprellt und auch Doppelprüfungen eingebaut.
Trotz dieser Maßnahmen springt das Programm in die Interruptfunktion und 
stoppt den Motor ohne das dieser z.B zurück gefahren ist(taster wurde 
auch nicht betätigt).
Kommt das Problem überhaupt von meinen Tastern?


Mir gehen echt die Ideen aus.




Ich hoffe Ihr könnt mir helfen

: Verschoben durch Moderator
von Frank M. (ukw) (Moderator) Benutzerseite


Bewertung
0 lesenswert
nicht lesenswert
1
  pinMode(input_links,INPUT);
2
  pinMode(input_rechts,INPUT_PULLUP);
3
  pinMode(input_hoch,INPUT_PULLUP);
4
  pinMode(input_runter,INPUT);

Warum schaltest Du den Pullup nur für "rechts" und "hoch", aber nicht 
für "links" und "runter" ein? Ohne Pullup floaten solche Inputs, d.h. Du 
hast sie nicht auf definiertem Pegel.

Eine Korrektur könnte schon das Problem lösen. Allerdings sollte man 
generell nicht Taster über Interrupts behandeln. Wenn sie prellen, löst 
der Interrupt mehrfach aus, was u.U. schwierig zu behandeln ist.

Besser ist es, die Taster zu pollen, siehe auch Entprellung.

P.S.
Ich habe den Thread von "Projekte & Code" nach "µC & Elektronik" 
geschoben. Threads unter "Projekte & Code" dienen der Vorstellung von 
fertigen/lauffähigen Projekten und sind nicht für Fragen gedacht.

: Bearbeitet durch Moderator
von Stefan ⛄ F. (stefanus)


Bewertung
0 lesenswert
nicht lesenswert
Drei Fehler:

1) Die internen Pull-Up Widerstände sind zu hochohmig. Verwende externe 
mit weniger als 10k Ohm. Kann ruhig 1k Ohm sein.

2) Störimpulse können immer vorkommen, jede Leitung zugleich eine 
Antenne ist. Das trifft ganz besonders auf Leitungen zu, die in der Nähe 
von Motoren liegen. Die Software sollte das Signal von den Tastern 
entprellen, dabei kann sie es auch gleich entstören (sehr kurze Impulse 
ignorieren). Alternativ: Mit R/C Filtern entstören.

3) Der Ablauf einer Steuerung sollte nicht in Interrupt-Handlern 
stecken. Das ist Aufgabe des Hauptprogrammes, typischerweise in Form 
eines oder mehrerer quasi-parallel laufender Zustandsautomaten.

Interrupthandler sollten höchsten Ereignisse (Tastendruck) erfassen und 
in eine Variable oder Warteschlange ablegen. Die Reaktion darauf gehört 
nicht in den Interrupthandler.

von ÄXl (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Welche PINs können bei deinem Board als Interruptquelle verwendet 
werden?
https://www.arduino.cc/reference/en/language/functions/external-interrupts/attachinterrupt/
1
Board   Digital Pins Usable For Interrupts
2
3
Uno, Nano, Mini, other 328-based
4
  
5
6
2, 3
7
8
Uno WiFi Rev.2
9
  
10
11
all digital pins
12
13
Mega, Mega2560, MegaADK
14
  
15
16
2, 3, 18, 19, 20, 21
17
18
Micro, Leonardo, other 32u4-based
19
  
20
21
0, 1, 2, 3, 7
22
23
Zero
24
  
25
26
all digital pins, except 4
27
28
MKR Family boards
29
  
30
31
0, 1, 4, 5, 6, 7, 8, 9, A1, A2
32
33
Due
34
  
35
36
all digital pins
37
38
101
39
  
40
41
all digital pins (Only pins 2, 5, 7, 8, 10, 11, 12, 13 work with CHANGE)

von ÄXl (Gast)


Bewertung
0 lesenswert
nicht lesenswert
da hat die Forensoft ja was tolles aus der Tabelle gemacht...
Nun, siehe Link.
Was für einen Arduino verwendest Du?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.