INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Störungen auf kurzen Leitungen
23.09.2014, 10:07
Beitrag #1
Störungen auf kurzen Leitungen
Hallo,
ich bin gaaaanz neu hier unterwegs und mache gerade meine ersten Schritte mit einem nagelneuen A.nano.
Nun, die Versuche mit dem Geblinke und so funktionieren prächtig. Nun habe ich einen Code für einen Encoder geklaut (sorry, aber soweit bin ich noch nicht um das selber zu proggen Blush), aber der Zähler bzw. der Drehgeber macht was er will und nicht was der Code soll. Jetzt habe ich rausgefunden, dass wohl bereits das Annähern meiner Hand Zählsignale triggert! Die Leitungen des Encoders zum Steckbrettl sind nicht soooo lang (ca. 6 cm)...! Zu lang oder was kann das Problem sein?
Also verschaltet ist der Drehgeber mit den äußeren Pins an Dig2 und 3 , der mittlere ist mit GND verbunden.
Vielen Dank für Eure Tipps
Code:
#define CHA 2
#define CHB 3
#define CW_LED 8
#define CCW_LED 7

volatile int master_count = 0; // universal count
volatile byte INTFLAG1 = 0; // interrupt status flag

void setup() {
pinMode(CHA, INPUT);
pinMode(CHB, INPUT);
pinMode(CW_LED, OUTPUT); // LED connected to pin to ground
pinMode(CCW_LED, OUTPUT); // LED connected to pin to ground

Serial.begin(9600);
Serial.println(master_count);

attachInterrupt(0, flag, RISING);
// interrupt 0 digital pin 2 positive edge trigger
}

void loop() {

if (INTFLAG1) {
Serial.println(master_count);
delay(10);
INTFLAG1 = 0; // clear flag
} // end if


} // end loop


void flag() {
INTFLAG1 = 1;
// add 1 to count for CW
if (digitalRead(CHA) && !digitalRead(CHB)) {
master_count++ ;
digitalWrite(CW_LED, HIGH);
digitalWrite(CCW_LED, LOW);
}
// subtract 1 from count for CCW
if (digitalRead(CHA) && digitalRead(CHB)) {
master_count-- ;
digitalWrite(CW_LED, LOW);
digitalWrite(CCW_LED, HIGH);
}
}
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.09.2014, 11:27
Beitrag #2
RE: Störungen auf kurzen Leitungen
(23.09.2014 10:07)Nimes schrieb:  [...] der Zähler bzw. der Drehgeber macht was er will und nicht was der Code soll. Jetzt habe ich rausgefunden, dass wohl bereits das Annähern meiner Hand Zählsignale triggert! Die Leitungen des Encoders zum Steckbrettl sind nicht soooo lang (ca. 6 cm)...! Zu lang oder was kann das Problem sein?

Ich tippe mal auf einen fehlenden Pulldown-Widerstand.

gruß lorenz
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.09.2014, 11:50
Beitrag #3
RE: Störungen auf kurzen Leitungen
(23.09.2014 10:07)Nimes schrieb:  Jetzt habe ich rausgefunden, dass wohl bereits das Annähern meiner Hand Zählsignale triggert! Die Leitungen des Encoders zum Steckbrettl sind nicht soooo lang (ca. 6 cm)...! Zu lang oder was kann das Problem sein? ...
Das klingt tatsaechlich danach, dass da ein Widerstand fehlt. Da Du aber den mittleren Pin sowieso schon auf GND hast, wuerde ein Pulldown-Widerstand nichts bringen.
Statt dessen brauchst Du Pullup-Widerstaende. Das schoene ist, dass der Arduino die schon mitbringt, man muss sie nur aktivieren.
Versuch mal folgendes:
Code:
pinMode(CHA, INPUT_PULLUP);
  pinMode(CHB, INPUT_PULLUP);
Gruss,
Thorsten

Falls ich mit einer Antwort helfen konnte, wuerde ich mich freuen, ein paar Fotos oder auch ein kleines Filmchen des zugehoerigen Projekts zu sehen.
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.09.2014, 15:51
Beitrag #4
RE: Störungen auf kurzen Leitungen
(23.09.2014 11:50)Thorsten Pferdekämper schrieb:  
(23.09.2014 10:07)Nimes schrieb:  Jetzt habe ich rausgefunden, dass wohl bereits das Annähern meiner Hand Zählsignale triggert! Die Leitungen des Encoders zum Steckbrettl sind nicht soooo lang (ca. 6 cm)...! Zu lang oder was kann das Problem sein? ...
Das klingt tatsaechlich danach, dass da ein Widerstand fehlt. Da Du aber den mittleren Pin sowieso schon auf GND hast, wuerde ein Pulldown-Widerstand nichts bringen.
Statt dessen brauchst Du Pullup-Widerstaende. Das schoene ist, dass der Arduino die schon mitbringt, man muss sie nur aktivieren.
Versuch mal folgendes:
Code:
pinMode(CHA, INPUT_PULLUP);
  pinMode(CHB, INPUT_PULLUP);
Gruss,
Thorsten

Vielen Dank Thorsten...es klappert!

Und jetzt gehts an die restlichen "Details" und benötige sicherlich noch die eine oder andere Hilfe.
`nen schönen Abend noch
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
23.09.2014, 21:05
Beitrag #5
RE: Störungen auf kurzen Leitungen
Hallo zusammen,
eigentlich einen clevere Lösung um einen Encoder einzulesen - Respekt für die Idee.
Was mich wundert ist das es wohl keine Probleme mit dem prellen der Kontakte zu geben scheint.
lg
bk

1+1 = 10 Angel ...und ich bin hier nicht der Suchmaschinen-Ersatz Dodgy...nur mal so als genereller Tipp..
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Störungen auf LCD Display celle 11 389 05.11.2016 19:52
Letzter Beitrag: hotsystems
  Arduino Störungen bei hochfrequentemr Zeilentrafoschaltung saitek200 3 867 28.08.2015 17:36
Letzter Beitrag: Scherheinz

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste