Archiv verlassen und diese Seite im Standarddesign anzeigen : Spuckhafter Taster
Ich bin gerade am rumspielen und lernen und habe mir auf meinem Steckbrett einen Taster in Form eines simplen Kabels zusammengesteckt.
Zwischen VCC und GND liegt ein (gemessener :-) ) 9.98 k Widerstand und der Taster steckt auf Port Pinh.5
Mit folgendem Proggi lasse ich mir so nebenbei auch noch den Status des Tasters auf die USB mit rausgeben und die kleine Boardled auf Pind.5 soll aufleuchten
Hier der Mini-Code:
$programmer = 12
$regfile = "m2560def.dat"
$hwstack = 82
$framesize = 68
$swstack = 68
$crystal = 16000000 'Quarzfrequenz
$baud = 9600
Dim I As Integer
Config Pinh.5 = Input
Config Pind.5 = Output
Led Alias Portd.5
Config Pine.5 = Input
Usb Alias Pine.5
Config Com4 = 9600 , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
Open "com4:" For Binary As #4
Do
If PinH.5 = 0 Then
Led = 1
Print #4 , "Led ist an"
Else
Led = 0
Print #4 , "Led ist aus"
End If
Loop
End
Also ganz was simples.
So jetzt kommts. Sobald ich das Kabel des Porth.5 berühre... ja nur berühre... schon schaltet die led wie wild hin und her und am Rechner via USB wird abwechselnd der Status hin und her geschalten.
Ich habe das Kabel "nur berührt". Also noch keinen Kontakt im Sinne des Tasters hergestellt.
Wenn ich das mache, dann bleibt der status auch auf "an". Aber ich muss das Kabel erst loslassen um einen definitiven "aus" Status zu bekommen.
Ach ja. Das Kabel ist natürlich isoliert und ich berühre nur das Plastik.
Bin ich so geladen ? (bin auch wegen der Firma genervt :-) ) Ist das was mit Hochfrequenz? Sind ja immerhin 16MH. Oder ist das Kabel einfach zu lange und es fungiert als Antenne. Hat ungefähr 15 cm und ich bin umringt von 2 Rechnern, 2 Tastaturen, Funkmäusen, Bluetooth und 3 großen Flachbildschirmen.
Ich habe etwas gezögert, das hier zu fragen, weil ich mich selbst für beklopt halten würde, wenn ich es nicht live miterlebt hätte.
Würde auch ein Mini-Video machen, wenn man mir nicht glaubt.
Ach ja. Mit PortD.2, PortB.0 und PortB5 passiert genau das gleiche und mein Board ist das rn2560 hier aus dem shop.
Danke im Vorraus
Kleiner Nachtrag. Meine Freundin kanns auch hervorrufen. Was haben wir jetzt gelacht :-)
Zwischen VCC und GND liegt ein (gemessener ) 9.98 k Widerstand und der Taster steckt auf Port Pinh.5
Vielleicht liegt es ja an mir, ich kann dieser Beschreibung jedenfalls nicht entnehmen, wie deine Schaltung genau aussieht.
Könnte es sein, dass die Pins deines Controllers bei "geöffnetem Schalter" weder mit GND noch mit VCC verbunden sind, also in der Luft hängen?
Vielleicht liegt es ja an mir, ich kann dieser Beschreibung jedenfalls nicht entnehmen, wie deine Schaltung genau aussieht.
Könnte es sein, dass die Pins deines Controllers bei "geöffnetem Schalter" weder mit GND noch mit VCC verbunden sind, also in der Luft hängen?
Nein. Zwischen VCC und GND liegt der besagte 10k Widerstand und ich berühre nur das Kabel, was zum Port führt.
Ich habe weiter experimentiert. Ich muss es anfassen, also ein berühren alleine genügt nicht. Aber welcher Strom kann da fliessen ? Es ist ja alles isoliert?
Die Ports D und C sind von einer anderen Testschaltung auch mit Kabel am Steckboard angesteckt. Aber extra in nicht verbundene Stellen am Steckboard.
Das war mein erster Gedanke, dass ich irgendwo irgendwie einen Kurzen verursache, weil ich das Kabel anlange. Deshalb habe ich alles doppelt geprüft ob irgendwo eine Verbindung sein könnte. Aber iss nicht.
Kabel in die Finger nehmen, als wenn man eine Antenne anlangt und schon gibts Reaktion am Port.
Die Kabellänge ist genau genommen etwas länger als 20 cm. Vielleicht liegts daran
Pyro-Mike
11.09.2007, 18:14
Hi,
der Atmega hat doch interne Pullup's?
Schalte den mal an:
Config Pinh.5 = Input
Porth.5 = 1
Ich weis jetzt nicht wie deine Schaltung genau aussieht, aber du kannst auch einen 4k7 Widerstand oder sowas von Pinh.5 auf VCC legen. (externer Pullup)
(Bei dem Wert möchte ich mich jetzt nicht festlegen, habe sowas aber schonmal gehört)
Andree-HB
11.09.2007, 18:15
Zwischen VCC und GND liegt der besagte 10k Widerstand
...der Widerstand gehört zwischen dem Pin und VCC, nicht zwischen VCC und GND. Du kannst Dir den aber sparen, wenn Du die internen Pullups aktivierst, die haben nämlich den gleichen Sinn.
Ich habe jetzt mal alles weggenommen, was an Kabeln nicht benötigt wird. Also VCC, Gnd und Port H.5 stecken am Board.
Es ist jetzt *kein* Kabel miteinander verbunden.
Aber es genügt ein Anfassen des PortH.5 Kabels um eine Reaktion hervorzurufen. Sogar das Tippen hier auf meiner Tastatur, wärend ich diese Message schreibe, läßt ab und zu mal die Led aufleuchten.
Also absolut unabhängig von PullupWiderstand und sonst noch was.
Ich seh schon. Ich muss ein Video machen, sonst glaubt mir das keiner.
Kleines Video davon als Windows Media File
http://www.pherzog.de/spuktaster/spuktaster.wmv
Wer sich wundert, was das für ein seltsames Board ist, auf dem das rn2560 steckt... Siehe hier: http://www.pherzog.de/steckboard/
Pyro-Mike
11.09.2007, 18:56
Hi,
wir glauben dir ja, das liegt daran, weil der Port, wenn er nirgends angeschlossen ist, einen völlig undefinierten Zustand hat. Deshalb musst du mit einem relativ hohen Widerstand den Port auf VCC legen.
Der AtMega kann das sogar intern machen, man muss es ihm nur sagen.
wir glauben dir ja, das liegt daran, weil der Port, wenn er nirgends angeschlossen ist, einen völlig undefinierten Zustand hat. Deshalb musst du mit einem relativ hohen Widerstand den Port auf VCC legen.
Der AtMega kann das sogar intern machen, man muss es ihm nur sagen.
Das ist mir ja auch vollkommen klar. Aber warum reagiert es auf Berührung des Kabels, welches isoliert ist?
Ich kanns mir nur dadurch erklären, als dass VCC nicht 100% glatt rüberkommt und sozusagen wie eine Antenne strahlt. Das Kabel am Port empfängt diese "Radiowellen" und meine Berührung löst den Schaltvorgang irgendwie aus.
Mit dem Phänomen sollte ich wohl in ein Physik- oder Hochfrequenzforum gehen, oder ?
Andree-HB
11.09.2007, 19:33
Thema : Luftspulen / Kapazitäten
...damit kannst Du Dich dann die nächsten Wochen im Net beschäftigen ! ;-)
Ich kanns mir nur dadurch erklären, als dass VCC nicht 100% glatt rüberkommt und sozusagen wie eine Antenne strahlt. Das Kabel am Port empfängt diese "Radiowellen" und meine Berührung löst den Schaltvorgang irgendwie aus.
Mit dem Phänomen sollte ich wohl in ein Physik- oder Hochfrequenzforum gehen, oder ?
Du hast auf deinem Steckbrett ein paar Kontakte/Stellen/Leitungen mit 5V und ein paar mit GND. Dazwischen ist Luft, auch Luft hat einen Widerstand, d.h. auch an Luft fällt eine Spannung ab.
Deine offenenen Pins sind quasi irgendwo an der Luft dazwischen angeschlossen. Wenn du in deiner Schaltung rumfingerst, beinflusst das das elektrische Feld zwischen deinen Leitungen, d.h. die Spannung an deinen offenen Pins ändert sich.
Da die Spannung an den offenen Pins knapp jenseits von "high" oder "low" (ein/aus; 0/1) liegt, kann diese geringe Änderung zwischen ein und aus entscheiden.
Mit dem Phänomen sollte ich wohl in ein Physik- oder Hochfrequenzforum gehen, oder ?
Du arbeitest mit Gleichspannung und wenn du mit blossen Auge sehen kannst wie die LED blinkt, kann auch die Blinkfrequenz nicht so schrecklich hoch sein.
Mit Hochfrequenz hat es also wenig zu tun, trotzdem wird man dir jeder Hochspannungstechniker das Phänomen erklären können und ein Physiker sowieso.
Nimms nicht persönlich, aber bei dem Kabelsalat was Du am Board hast, und 16MHz, würde ich mich über solche Phenomäne nicht sehr wundern...
Nimms nicht persönlich, aber bei dem Kabelsalat was Du am Board hast, und 16MHz, würde ich mich über solche Phenomäne nicht sehr wundern...
Ich nehms nicht persönlich. Aber mich hats gewundert, weil wir doch angeblich mit 5Volt TTL arbeiten und nicht mit ... ach was weiß ich.
Habs nicht gelernt oder studiert, also darf ich solche wüsten Kabelsalate machen und mich über sowas wundern. :-)
Thema : Luftspulen / Kapazitäten
Ich nenn es einfach "RFID-Experiment" :-)
Ich nehms nicht persönlich. Aber mich hats gewundert, weil wir doch angeblich mit 5Volt TTL arbeiten und nicht mit ... ach was weiß ich.
Habs nicht gelernt oder studiert, also darf ich solche wüsten Kabelsalate machen und mich über sowas wundern.
Ich finde Steckbretter sind dafür da, dass man Kabelsalat drauf machen kann ;-)
Am Kabelsalat liegt es auch genausowenig wie an den 16MHz.
Dass offenen Eingänge flattern und unberechenbar ist welchen Zustand der Eingang annimmt ist ein grundsätzliches Problem.
Deshalb sollte man bei allen digitalen Bausteinen unbenutze Eingänge immer auf ein definiertes Potential (GND oder VCC) legen.
Bei vielen µC haben die Hersteller das netterweise dadurch erleichtert, dass man die Eingänge per Software über integrierte Pullup-Widerstände auf VCC, bzw High legen kann.
Deshalb sollte man bei allen digitalen Bausteinen unbenutze Eingänge immer auf ein definiertes Potential (GND oder VCC) legen
Das gabe ich inzwischen schon mehrfach gelesen.
Für mich ist es ein angenehmer Aha-Effekt. Also eine interessante Art und Weise etwas gelernt zu haben.
Inzwischen habe ich ordentlich verkabelt und ordentlich die richtigen Ports in definierte Zustände gebracht und das kleine Lernprojekt läuft einwandfrei.
Ich bau mir langsam aber sicher eine digitaluhr, die man mit Taster stellen kann. Als nächstes wird ein Schieberegister 74hct595 eingesetzt und Schritt für Schritt das ganze Zeugs gelernt
Im Grunde genommen mache ich das Tutorial von http://www.mikrocontroller.net/articles/AVR-Tutorial durch, wobei ich mir die Reihenfolge selbst bestimme.
Und vor allem. Es macht irre Spaß.
Irgendwann mal soll was rumlaufen oder krabbeln und meine 2 Katzen durch die Wohnung jagen :-)
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.