Forum: Mikrocontroller und Digitale Elektronik Arduino Uno Eingang "flattert"


von Weisni (Gast)


Lesenswert?

Hallo erstmal,
ich habe seit 2 Tagen mein Arduino Uno.
Dieser funktionierte auch immer tadellos, bis heute.
Sobald ich eine un-beschaltete Litze in einen Eingang stecke (egal 
welcher), fängt dieser an wie wild zwischen 1 und 0 hin- und 
herzuspringen.
(Das habe ich dem Serial-Monitor entnommen.)

sobald ich dann das Gehäuse (Masse) des USB-Ports vom Arduino mit dem 
Finger berühre, bleibt der Eingang auf einem zufälligen Wert stehen.
(1 oder 0, ändert sich aber nicht!)

Ich bin mir nun nicht sicher, ob ich mit irgendetwas den µC zerschossen 
habe oder ob dies wohl eher ein Fehler des Boards ist.
Und vor allem wie ich diesen beheben kann oder ob ich einen neuen µC 
brauche.

Dies sind meine ersten Versuche mit µC - Programmierung daher werde ich 
Fachausdrücke mit Sicherheit nicht verstehen ;)

Danke schon mal für eure Hilfe und euer Verständnis.

Weisni

von Falk B. (falk)


Lesenswert?

@  Weisni (Gast)

>Sobald ich eine un-beschaltete Litze in einen Eingang stecke (egal
>welcher), fängt dieser an wie wild zwischen 1 und 0 hin- und
>herzuspringen.

Logisch, du hast einen offenen CMOS-Eingang und eine Antenne. Der ist 
sehr empfindlich und reagiert auf kleinste Signale.

>Und vor allem wie ich diesen beheben kann

Schalte in der Software die internen Pull-Up Widerstände ein. Oder legen 
deinen Eingang fest auf GND oder VCC.

von Weisni (Gast)


Lesenswert?

int led1 = 11;
int led2 = 12;
int led3 = 13;
int counter = 0;
int button = 7;
int buttonStatus = LOW;
int buttonStatusOld = HIGH;
int i;

void setup()
{
  pinMode(led1, OUTPUT);
  pinMode(led2, OUTPUT);
  pinMode(led3, OUTPUT);
  pinMode(button, INPUT);
  digitalWrite(button, LOW);
  Serial.begin(9600);
}
void loop()
{
  buttonStatus = digitalRead(button);
  Serial.println(buttonStatus);
}


So habe ich den Probrammiert. das "digitalWrite(button, LOW);" sagt doch 
Pull-down Widerstand oder nicht?

Und selbst wenn ich HW mäßig einen 50k Widerstand zwischen Pin und Masse 
hänge und den Taster mit 5V verbinde springt er trotzdem noch hin und 
her.
Erst wenn ich ihn per "Freiluft - verdrahtung" direkt an den Widerstand 
hänge bleibt er auf 0.

Vorher hatte das doch auch so Funktioniert..
bin ich zumindest der Meinung.

Trotzem Danke, villeich vertue ich mich auch nur und hab ein Brett vor 
dem Kopf das du hoffentlich beseitigen kannst. :)

Und als Nebenfrage, wieso hört er auf seinen Zustand zu wechseln wenn 
ich das Gehäuse vom USB anfasse?

von Falk B. (falk)


Lesenswert?

@  Weisni (Gast)

>So habe ich den Probrammiert. das "digitalWrite(button, LOW);" sagt doch
>Pull-down Widerstand oder nicht?

Nicht. ICh kenn mich mit Arduino nicht aus, musst du in der Doku 
nachlesen.

>Und selbst wenn ich HW mäßig einen 50k Widerstand zwischen Pin und Masse
>hänge und den Taster mit 5V verbinde springt er trotzdem noch hin und
>her.

Da sollte nicht sein.

>Und als Nebenfrage, wieso hört er auf seinen Zustand zu wechseln wenn
>ich das Gehäuse vom USB anfasse?

Kann man so einfach nicht sagen.

von Michael (Gast)


Lesenswert?

Wenn du mit

pinMode(button, INPUT);

einen Pin auf Eingang gesetzt hast, dann kannst du die Pull-Ups mit

digitalWrite(button, HIGH);

aktivieren.

Danach solltest du kontinuierlich eine 1 lesen.

von Weisni (Gast)


Lesenswert?

OK, das mit dem "digitalWrite(button, LOW);" stimmt. Das ist der Befehl 
um den 20KOhm Widerstand gegen Masse einzuschalten.
Funktioniert trotzdem nicht.

Kann ich villeich irgendwie den IC kaputt gemacht haben?
Ich würde jetzt auch aus Testgründen mir einen neuen ATMega328 holen 
aber da wo ich den jetzt auf Anhieb hernehmen würde, ist der Bootloader 
nicht aufgespielt. Wie das geht weiß ich leider auch nicht. Bin gerade 
am Googlen aber finde momentan nichts nützliches.

Trotzdem Danke für deine Hilfe ;)

von Mw E. (Firma: fritzler-avr.de) (fritzler)


Lesenswert?

> OK, das mit dem "digitalWrite(button, LOW);" stimmt. Das ist der Befehl
> um den 20KOhm Widerstand gegen Masse einzuschalten.
> Funktioniert trotzdem nicht.

Oh mann...
Der AVR hat nur pullUPs und keine PullDOWNs....

von spess53 (Gast)


Lesenswert?

Hi

>OK, das mit dem "digitalWrite(button, LOW);" stimmt. Das ist der Befehl
>um den 20KOhm Widerstand gegen Masse einzuschalten.
>Funktioniert trotzdem nicht.

ATMegas haben keinen intern zuschaltbaren Pull-Down-Widerstand.

>Kann ich villeich irgendwie den IC kaputt gemacht haben?

Quatsch. Du hast nur deinen ersten Zufallsgenerator gebaut.

MfG Spess

von Weisni (Gast)


Lesenswert?

Genau das habe ich gerade auch gemerkt..
Arbeite mit dem Buch "Die elektronische Welt mit Arduinos entdecken"
Da stand dann viel über "Pullup und Pulldown" hab gedacht der hat also 
auch interne Pulldown Widerstände...

Besten dank :) Funktioniert alles wieder.
Verstehe zwar immer noch nicht wieso der externe Pulldown nicht 
funktioniert,aber mir ist immerhin schon mal geholfen.

Vielen Dank :)
Tut mir leid.. Doofheit >.<

von Peter D. (peda)


Lesenswert?

Weisni schrieb:
> So habe ich den Probrammiert. das "digitalWrite(button, LOW);" sagt doch
> Pull-down Widerstand oder nicht?

Macht es Dir soviel Spaß, nur rumzuraten?
Warum schaust Du nicht einfach mal ins Datenblatt?
Da gibt es extra ein Kapitel zu den IOs.


Der IC ist definitiv nicht kaputt, Du hast nur einen floatenden Pin.

Bei langen Leitungen können auch bei 50k Pullup Störungen einkoppeln. Da 
hilft entweder den Widerstand kleiner zu machen (1k) oder besser eine 
Entprellroutine zu verwenden.


Peter

von Weisni (Gast)


Lesenswert?

Ja ich habe noch keinen einzigen Blick in das Datenblatt geworfen weil 
ich mit dem Buch gearbeitet habe. Den Rest habe ich auf Arduino.cc 
nachgelesen.
Mit dem 1kOhm Widerstand geht es :)

Danke, Danke vielmals.

Dann lade ich mir das Datenblatt jetzt erstmal runter, und schaue 
demnächst zuerst in das Datenblatt.

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
Noch kein Account? Hier anmelden.