Microcontroller reagiert auf meine Hand

Löten, Basteln, Tippen, Schrauben.
Gesperrt
MartinZippel
Beiträge: 1543
Registriert: 02.11.2005 19:16
Name: Martin Zippel
Geschlecht: weiblich
Studienrichtung: Informatik
Matrikel: 2005
Angestrebter Abschluss: Dipl-Ing.
Wohnort: Püchau
Contact:

Microcontroller reagiert auf meine Hand

Beitrag von MartinZippel » 11.03.2008 14:57

Hey Jungs! Hab mich in den Ferien mit Microcontrollern auseinandergesetzt, genauer gesagt, dem ATmega8. Ich hab zunächst auf dem Experimentierboard von pollin ein bisschen rumgespielt. Gestern Nacht hab ich dann auf eine Platine einen Gleichrichter, dahinter einen Festspannungsregler für 5V, parallel dazu zwei Kondensatoren und daran den ATmega gelötet. Das sieht im Prinzip so aus. An Port D hängen 8 LEDs mit Vorwiderstand und an Port B eine 7-Segment-Anzeige. Die Ausgänbge anzusteuern funktioniert auch prima. Die LEDs laufen schön nacheinander los und die SSA zählt brav von 0 bis 9.
Wenn ich allerdings Port C als Input nehme und Port B dementsprechend schalten soll, dann reagieren die LEDs schon, wenn ich mich mit meinem Finger nur annähere. Das ist natürlich katastrophal. Woran kann das liegen? Die Verbindungen habe ich alle kontrolliert. Vor allem PIN 8 und 22 haben wirklich Kontakt mit dem Masseanschluss. Die beiden Kondensatoren habe ich vorhin erst eingebaut, weil ich hoffte, dass sie das Problem lösen. Der µC ist mit dem Experimentierboard noch über drei leitungen verbunden, damit ich ihn programmieren kann, ohne ihn auszubauen: MISO MOSI SCK RESET

Mein Code sieht so aus:

Code: Alles auswählen

$regfile = \"m8def.dat\" 
$crystal = 1000000    

Config Portc = Input
Config Portd = Output

Main:
Portd = 0           \' Port D komplett ausschalten
Portd.1 = 1        \' eine LED an zur Kontrolle

Do
If Pinc.5 = 1 Then \' wenn PIN 5 an Port C Kontaktmit Masse hat
 Toggle Portd       \' Port D komplett umschalten
 Portd.1 = 1         \' Kontroll-LED bleibt an
End If
Loop

Hat jemand eine Ahnung, was ich da tun kann?
Ich hab *hüstel*, sogar schon ans Innere meines Rechnergehäuses und die Heizung gefasst, falls es an meiner fehlenden Erdung liegen sollte oder so was...

Hab ein Video davon gemacht.
Falls nötig, stell ich einen genaueren Plan von der Schaltung hier rein, aber vielleicht weiß ja jemand sofort, was das Problem ist?

Nachtrag:
Meine Freundin kam grad, bei ihr reagiert der Controlller auch auf das Feld. Wenn sie allerdings den Rechner anfasst, gehen die Leuchten wieder aus... Sollte ich also einen weiteren Anschluss auf Masse legen? Oder soll ich etwa den Minus-Anschluss mit der Heizung verbinden? Kann das an einem minderwertigen Gleichrichter liegen?

fabian
Beiträge: 2283
Registriert: 12.11.2003 17:03
Name: Fabian
Geschlecht: männlich
Studienrichtung: Elektrotechnik
Matrikel: 2003
Wohnort: München
Contact:

Microcontroller reagiert auf meine Hand

Beitrag von fabian » 11.03.2008 16:08

[quote]If Pinc.5 = 1 Then \' wenn PIN 5 an Port C Kontaktmit Masse hat [/quote]
Ist 1 wirklich Masse?

Das Verhalten laesst auf den ersten Blick darauf schliessen, dass der Port \"in der Luft\" haengt (also kein pullup/pulldown Widerstand vorhanden) und dank seines extrem hohen Eingangswiderstandes schon durch deine Hand problemlos auf High gezogen wird. Ein 10kOhm Widerstand gegen Masse sollte helfen.
Le Netaction est mort, vive le Netaction !

MartinZippel
Beiträge: 1543
Registriert: 02.11.2005 19:16
Name: Martin Zippel
Geschlecht: weiblich
Studienrichtung: Informatik
Matrikel: 2005
Angestrebter Abschluss: Dipl-Ing.
Wohnort: Püchau
Contact:

Microcontroller reagiert auf meine Hand

Beitrag von MartinZippel » 11.03.2008 16:55

Mensch, vielen Dank!
Aber da tun sich neue Fragen auf: PIN 1 des ATmega ist über 100k mit + verbunden(damit wir die Pinns jetzt nicht verwechseln).

Wenn ich jetzt, wie du gesagt hast, meinen PIN 28 des ATmega,also Pin 5 von Port C über 10k mit Masse verbinde, dann dauert\'s immer eine Weile, bis ich den Taster (der von Pin C an + geht) loslassen kann und der µC den neuen Zustand von Port D speichert.
Und wieso schalte ich den Taster zwischen Pin und + ? Auf der Seite, die ich oben verlinkt hatte, ist im Bild unter der Überschrift \"Der AVR wertet Eingaben aus\", der Schalter auch zwischen Pin und Masse?!

Ich dank dir aber schon mal für den Tipp!

MartinZippel
Beiträge: 1543
Registriert: 02.11.2005 19:16
Name: Martin Zippel
Geschlecht: weiblich
Studienrichtung: Informatik
Matrikel: 2005
Angestrebter Abschluss: Dipl-Ing.
Wohnort: Püchau
Contact:

Microcontroller reagiert auf meine Hand

Beitrag von MartinZippel » 13.03.2008 01:14

Kann mir denn jemand was dazu sagen? Also ich mein, kann man die Pins gegen + oder - schalten? Ist das egal, also prüft der nur auf Durchgang oder wie muss ich mir das vorstellen?

fabian
Beiträge: 2283
Registriert: 12.11.2003 17:03
Name: Fabian
Geschlecht: männlich
Studienrichtung: Elektrotechnik
Matrikel: 2003
Wohnort: München
Contact:

Microcontroller reagiert auf meine Hand

Beitrag von fabian » 13.03.2008 14:36

Der Mikrokontroller kann an einem Pin entweder \"high\" oder \"low\" feststellen. Da gibt es zwei Moeglichkeiten:

1. Du legst U_B ueber einen sog. Pullup-Widerstand an den Pin, dann ist er auf \"High\", und der Schalter schliesst den Pin nach Masse kurz, damit waere der Pin \"Low\".

2. Du verbindest den Pin ueber einen \"Pulldown\"-Widerstand permanent mit Masse. Damit ist auf jeden Fall ein definierter Zustand (Low) vorhanden, der Pin haengt nicht \"in der Luft\" (wie bei dem oben beschriebenen Problem). Der Schalter geht dann von U_B auf den Pin; sobald er geschlossen ist, liegt dann dort \"High\" an.

Beide Varianten sind von der Stoerfestigkeit her (sofern die Schwellen zwischen Low und High symmetrisch sind) gleichwertig, aber die eine oder andere ist in der Praxis, je nach Schaltung, evtl. zu bevorzugen. Natuerlich sind die Schaltzustaende im Mikrokontroller dann auch invertiert, aber das sollte kein Problem darstellen, das wird eben in der Software wieder umgedreht falls noetig.

Siehe auch: http://en.wikipedia.org/wiki/Pull-up_resistor etc.
Le Netaction est mort, vive le Netaction !

MartinZippel
Beiträge: 1543
Registriert: 02.11.2005 19:16
Name: Martin Zippel
Geschlecht: weiblich
Studienrichtung: Informatik
Matrikel: 2005
Angestrebter Abschluss: Dipl-Ing.
Wohnort: Püchau
Contact:

Microcontroller reagiert auf meine Hand

Beitrag von MartinZippel » 14.03.2008 02:06

Dann ist ja gut, das bestätigt dann einiges. Ich dachte anfangs, die Pins müssten immer mit Masse verbunden werden um zu schalten. Deswegen war ich enttäuscht, als ich feststellte, dass meine Siebensegmentanzeige eine gemeinsame Anode hat. Das war dann aber kein Problem, nur dass, wie du auch sagst, alle Ausgänge erstmal auf high sind und ich sie \"ausschalten\" muss.
Mittlerweile hab ich \"sogar\" eine zweistellige Anzeige und einen Taschenrechner hinbekommen. Sieht nach nix aus, hat mich aber viel Zeit und viele Nerven gekostet.
Also vielen Dank, ich bin jetzt um einiges schlauer.:fliessband:

Easyrider
Beiträge: 427
Registriert: 30.11.2004 00:13
Contact:

Microcontroller reagiert auf meine Hand

Beitrag von Easyrider » 16.03.2008 11:06

kleiner Tip: der ATMEGA hat auch interne Pullups. Einfach den Pin als Eingang definieren und das entsprechende Bit des PORT Registers ne 1 reinschreiben.
nochn Tip: siehe Datenblatt, bei mir seite 51 (unter I/O Ports)
Wer glaubt, dass ein Bauleiter einen Bau leitet, der glaubt auch, dass ein Zitronenfalter Zitronen faltet.
http://server6.das-arbeitslosenspiel.de ... p?id=15333

FlyingMatze
Beiträge: 87
Registriert: 31.01.2005 09:34

Microcontroller reagiert auf meine Hand

Beitrag von FlyingMatze » 19.03.2008 21:46

Außerdem würde ich den 100nF Kondensator nicht so weit weg vom Atmega plazieren wie es auf dem Layout von deinem Link ist. Ich hatte da schon einmal Probleme. Also die 100nF so nahe am µC wie möglich.

heino
Beiträge: 97
Registriert: 07.01.2008 16:15

Microcontroller reagiert auf meine Hand

Beitrag von heino » 23.04.2008 13:54

[quote=fabijan][quote]Das Verhalten laesst auf den ersten Blick darauf schliessen, dass der Port \"in der Luft\" haengt (also kein pullup/pulldown Widerstand vorhanden) und dank seines extrem hohen Eingangswiderstandes schon durch deine Hand problemlos auf High gezogen wird. Ein 10kOhm Widerstand gegen Masse sollte helfen.[/quote]
Kannst du mal \"für Dummies\" erklären, inwiefern die Hand abhängig vom Widerstand den Eingang auf High ziehen kann? Ich kenne das Problem zwar, hab es aber noch nie wirklich begriffen.

MartinZippel
Beiträge: 1543
Registriert: 02.11.2005 19:16
Name: Martin Zippel
Geschlecht: weiblich
Studienrichtung: Informatik
Matrikel: 2005
Angestrebter Abschluss: Dipl-Ing.
Wohnort: Püchau
Contact:

Microcontroller reagiert auf meine Hand

Beitrag von MartinZippel » 23.04.2008 18:07

Ich hab das so verstanden, dass der Pin nich weiß, ob er denn nun mit Masse oder + verbunden ist, oder auch nicht. Wenn du mit der Hand drüber gehst, dann ist er auf low, aber irgendwie doch nicht, der kann sich nicht richtig entscheiden, weil ihm der Bezug fehlt. Der weiß eben nicht, was + und - ist und weiß deswegen auch nicht genau, wie er auf eine Änderung reagieren soll.
Klingt so wirr, wie die Schaltung reagiert, sollte also hinhauen ;-)

MadCyborg
Beiträge: 172
Registriert: 09.11.2006 15:42
Contact:

Microcontroller reagiert auf meine Hand

Beitrag von MadCyborg » 23.04.2008 18:53

Antenne ist das Stichwort

heino
Beiträge: 97
Registriert: 07.01.2008 16:15

Microcontroller reagiert auf meine Hand

Beitrag von heino » 23.04.2008 20:22

Ich hab gesagt für Dummies.. Antenne hilft mir da nicht weiter. Was is ne Antenne?
Das vom Martin war dann wieder zu dumm, ich weiß ja dass da kein kleiner Gnom drin sitzt, der sich nicht entscheiden kann.

fabian
Beiträge: 2283
Registriert: 12.11.2003 17:03
Name: Fabian
Geschlecht: männlich
Studienrichtung: Elektrotechnik
Matrikel: 2003
Wohnort: München
Contact:

Microcontroller reagiert auf meine Hand

Beitrag von fabian » 27.04.2008 21:12

Das Stichwort ist eher Kondensator als Antenne. Der Pin hat einen Eingangswiderstand von ein paar Megaohm (in erster Naeherung also ein Leerlauf) und gleichzeitig eine kleine Eingangskapazitaet, die sich praktisch nicht vermeiden laesst. Eine minimale statische Aufladung der Hand kann genuegen um diese Kapazitaet zu laden und somit zu \"schalten\".
Aber das ist noch nicht alles: Wenn man an so einen Eingang eine Spannung anlegt (-> High) und danach die Spannungsquelle wieder abklemmt, bleibt der Eingang noch fuer eine Weile auf \"High\", naemlich so lange bis sich die Eingangskapazitaet entladen hat.
Deswegen schaltet man immer einen Pullup- oder Pulldown-Widerstand parallel, zu Betriebsspannung oder Masse, durch den ein definiertes Potential am Pin herrscht.
Le Netaction est mort, vive le Netaction !

heino
Beiträge: 97
Registriert: 07.01.2008 16:15

Microcontroller reagiert auf meine Hand

Beitrag von heino » 27.04.2008 22:24

Ok, damit kann ich schon eher was anfangen. Allerdings verstehe ich nicht, wie diese winzige Kapazität ausreicht den Eingang zu beschalten. Ist denn die Schaltspannung so klein?

Edit: Mir ist gerade aufgegangen, dass die Kapazität ja reziprok zur Spannung ist. Ich kann mir trotzdem nicht erklären, wie das passieren kann.

fabian
Beiträge: 2283
Registriert: 12.11.2003 17:03
Name: Fabian
Geschlecht: männlich
Studienrichtung: Elektrotechnik
Matrikel: 2003
Wohnort: München
Contact:

Microcontroller reagiert auf meine Hand

Beitrag von fabian » 29.04.2008 00:46

[quote]Ist denn die Schaltspannung so klein?[/quote]
Nein, aber die durch Influenz entstehende Spannung kann durchaus ein paar Groeszenordnungen ueber der Schaltspannung (je nach System, < 5V) liegen.
Le Netaction est mort, vive le Netaction !

Gesperrt

Zurück zu „Technik“