Forum: Mikrocontroller und Digitale Elektronik Entprellen Wechselschalter/Taster


von Jonas R. (jofie)


Lesenswert?

Hallo zusammen,

ich möchte an meinen µC einen Taster entprellt anschließen. Da der 
Taster auf einen PinChange Interrupt geht und ich noch einen anderen 
Interrupt (Timer) laufen habe, möchte/muss ich den Taster hardwareseitig 
entprellen.

Mangels Bauteilen für die anderen Varianten habe ich mich für diesen 
hier entschieden:
http://www.mikrocontroller.net/articles/Datei:WechselEntprellC.PNG

Im Gegensatz zum verlinkten Schaltplan verwende ich einen Taster und 
einen 100nF Kerko. Als R1 habe ich 1kOhm eingesetzt.

Ich hatte nun allerdings Bedenken, ob ich mir da nicht den Eingang 
meines µC zerschieße?!
In dem Moment, in dem sich der Kondensator entläd, habe ich in Richtung 
Masse 1kOhm "im Weg", in Richtung µC nur den Innenwiderstand.
Entläd sich dann nicht der Kondensator mit voller Geschwindigkeit über 
den µC? Der verträgt ja am Port nicht allzu viel...

Liebe Grüße
Jonas

von Peter D. (peda)


Lesenswert?

Jonas R. schrieb:
> ich noch einen anderen
> Interrupt (Timer) laufen habe, möchte/muss ich den Taster hardwareseitig
> entprellen.

Gerade wenn man eh schon einen Timer laufen hat, empfiehlt sich eine 
SW-Entprellung.
Und der Timerinterrupt freut sich darüber, die etwa 10 Zeilen noch 
mitmachen zu dürfen.

von Pit S. (pitschu)


Lesenswert?

Die hardware Entprellung ist völlig OK. Den Innenwiderstand des MC von 
einigen MOhm kannst du vernachlässigen. Der Kondensator wird über 1K 
geladen und entladen. Wen du allerdings keinen Umschalttaster hast, 
sonder nur einen Eintaster, solltest du noch einen 1K nach Masse 
spendieren.

von rava (Gast)


Lesenswert?

brauchst du nicht andere Bauteilwerte?

t=RC=100µs
nach 100µs ist der Pegel also auf 60%. Dann muss dein Prellen also eine 
deutlich kleinere Zeit haben. Und der Schalter wird mit den Jahren 
schlechter!

von Jonas R. (jofie)


Angehängte Dateien:

Lesenswert?

Peter Schulten schrieb:
> solltest du noch einen 1K nach Masse
> spendieren.

da ist was dran...^^
Ich hab die Widerstände nochmal etwas umgesetzt, so müsste es dann fast 
noch besser passen... (s. Anhang)

@Peter hm, ok... da habe ich wohl etwas zu schnell gedacht ;) vllt. 
probier ichs mit dem Timer irgendwann mal aus.

@rava Dem kann ich folgen... Aber warum soll das Problem beim 
Wechselschalter nicht bestehen...?! Und mein Kondesator ist ja bereits 
größer als der Vorgeschlagene... Oder gingen die 20nF noch von einer 
Schaltung ohne Widerstand aus??

LG

von spontan (Gast)


Lesenswert?

Warum überhaupt per Hardware entprellen??????

Pin-Change-Interrupt, wenn ich das schon lese, dann kommen mir die 
größten Bedenken, ob das Design halbwegs vernüftig ist.

von m.n. (Gast)


Lesenswert?

Jonas R. schrieb:
> Ich hab die Widerstände nochmal etwas umgesetzt, so müsste es dann fast
> noch besser passen... (s. Anhang)

Und Du glaubst im Ernst, dass die Schaltung funktioniert? Womöglich noch 
0,1% Widerstände?
Ich weiß ja nicht, welchen µC Du verwendest. Mit einem AVR klappt das 
nicht.

Jonas R. schrieb:
> vllt. probier ichs mit dem Timer irgendwann mal aus.

Mach's am besten sofort.

von m.n. (Gast)


Lesenswert?

spontan schrieb:
> Pin-Change-Interrupt, wenn ich das schon lese, dann kommen mir die
> größten Bedenken, ob das Design halbwegs vernüftig ist.

Da ich ich Dich trösten. Es geht.
Beitrag "EIN-AUS mit Taster per Interrupt, ATtiny25 o.ä."

von Jonas R. (jofie)


Lesenswert?

m.n. schrieb:
> Und Du glaubst im Ernst, dass die Schaltung funktioniert? Womöglich noch
> 0,1% Widerstände?
> Ich weiß ja nicht, welchen µC Du verwendest. Mit einem AVR klappt das
> nicht.

Diese Forenfreundlichkeit ist wieder umwerfend....
Wie du vielleicht bemerkt hast, habe ich bisher tatsächlich gedacht, das 
könnte funktionieren...
Da dies anscheinend nicht so ist, wärst du bitte so freundlich mir zu 
erklären warum?

von Jonas R. (jofie)


Lesenswert?

spontan schrieb:
> Pin-Change-Interrupt, wenn ich das schon lese, dann kommen mir die
> größten Bedenken, ob das Design halbwegs vernüftig ist.

Was hat denn die Verwendung des PCINT mit dem Design zu tun??
Der Grund dafür ist ganz einfach... Auf PortD, auf dem die Externen 
Interrupts sitzen ist bereits ein LCD angeschlossen, das mit 8bit 
angesteuert wird, und dementsprechend den gesamten Port belegt. (Und 
jetzt kommt mir bitte nicht mit "mach doch 4bit ans LCD!")

PS:
Ich verwende einen ATmega88PA

von Jonas R. (jofie)


Angehängte Dateien:

Lesenswert?

Also... mittlerweile ist mir nun der gewaltige Denkfehler selbst 
aufgefallen.
Ich habe den Widerstand nun wieder zurück gesetzt, so sollte es aber 
wieder funktionieren, oder?
Eine einfache, kurze Erklärung wäre jedoch deutlich netter gewesen. Wenn 
das hier jedes Mal so läuft, dann traut man sich als einfacher Bastler 
bald gar nicht mehr hier irgendetwas zu fragen...

von Wilhelm F. (Gast)


Lesenswert?

Jonas R. schrieb:

> ich möchte an meinen µC einen Taster entprellt anschließen.

Ein RS-Kippglied wie z.B. im 4013 mit R und S (Reset, Set) ist ganz 
nützlich, oder zwei kreuzrückgekoppelte NAND- oder NOR-Gates (4001, 
4011), absolut zuverlässigst.

Allerdings braucht man dafür einen Taster mit drei Polen, das ist etwas 
lästig, oder zwei Taster für jeweils ein und aus.

von Peter D. (peda)


Lesenswert?

Ich würde die Zeitkonstante wenigstens einige ms lang machen, z.B. 
10k/1µF.

von Jonas R. (jofie)


Lesenswert?

Mangels Kondensatoren bin ich jetzt auf zwei 470µF Elkos in Reihe und 1k 
Widerstände umgestiegen...^^
Damit müsste ich ungefähr bei 235ms liegen... Das reicht :D
Danke Peter! ;)

Thema erledigt.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Jonas R. schrieb:
> Der Grund dafür ist ganz einfach...

... aber unverständlich. Was willst du denn erreichen? Den µC aufwecken? 
dafür kannst du ja den Interrupt nutzen (vor dem Schlafen legen 
aktivieren, nach Aufwachen deaktivieren) und ansonsten "ganz normal" in 
Software entprellen.

von Jonas R. (jofie)


Lesenswert?

Nein. Idee war so eine Art Uhr auf dem LCD anzeigen zu lassen. Der 
Taster ist als Resetknopf vorgesehen, dabei will ich jedoch nicht gleich 
den ganzen Controller Resetten, sondern nur meine Variablen.

von cppler (Gast)


Lesenswert?

Jonas R. schrieb:
> Nein. Idee war so eine Art Uhr auf dem LCD anzeigen zu lassen. Der
> Taster ist als Resetknopf vorgesehen, dabei will ich jedoch nicht gleich
> den ganzen Controller Resetten, sondern nur meine Variablen.

Dann brauchst Du erst recht keinen IRQ und Hardwareentprellung.
Du hast sicherlich sowieso Taster um die Uhr einzustellen, die dann mit 
PeDas Routine entprellen und einen zusätzlichen Taster (eventuell 
versenkt) für den Reset Deiner Uhr einbauen.
Spart viel Arbeit/Bauteile und ist sinnvoller.

von Jonas R. (jofie)


Lesenswert?

Es handelt sich hier um einen ganz einfachen Breadboard-Aufbau. Mein 
eigentliches Ziel ist kein perfektes großes Projekt, sondern ich bin 
dabei selbst den Umgang mit den Mikrocontrollern auszuprobieren und zu 
lernen. Der Aufbau besteht aus dem µC, einem LCD und dem Taster. 
(natürlich jew. incl. Grundbeschaltung)

Das Thema ist von meiner Seite erledigt, daher werde ich jetzt keine 
Fragen mehr beantworten, da diese erfahrungsgemäß in verschiedensten 
"geht doch viel besser"-Vorschlägen enden.

Ich bitte um Verständnis.


PS:
Tut mir leid, wenn das vllt etwas pampig ist, aber mir geht es gewaltig 
auf den Keks, wenn ich eine Frage stelle, und dann statt die Frage zu 
beantworten erst mal alles außenherum schlecht gemacht wird.

von Dennis H. (t1w2i3s4t5e6r)


Lesenswert?

Jonas R. schrieb:
> wenn ich eine Frage stelle, und dann statt die Frage zu
> beantworten erst mal alles außenherum schlecht gemacht wird.

Hier wird nix schlecht gemacht. Es wird nur auf

Jonas R. schrieb:
> sondern ich bin
> dabei selbst den Umgang mit den Mikrocontrollern auszuprobieren und zu
> lernen.

eingegangen. Aber wenn du mit aller Gewalt nicht lernen willst sondern 
nach wie vor deine Sichtweise durchsetzen willst, dann bitte, niemand 
zwingt dich, aber wenn du wirklich lernen wollen würdest, würdest du dir 
die Hinweise mit der Software-Entprellung wenigstens mal ansehen und 
feststellen, das geht viel einfacher.


Dennis

von Martin V. (oldmax)


Lesenswert?

Hi
Sorry, wenn ich mich erst nach Abschluss des Themas einmische. Jonas, 
wenn du in den Foren Fragen stellst, ist es ganz normal, das du nicht 
immer ganz gezielte Antworten bekommst. Das hat nichts mit 
Besserwisserei zu tun, aber wenn du eine Frage bezüglich Widerstands/ 
Kondensatorbeschaltung stellst, zeigt es, das dir das Wissen in der 
Elektronik fehlt. Natürlich lassen sich mit Lade- und Entladekurven 
aufzeigen, wann dein Eingang einen stabilen Status hat und das Gezappel 
des Pegels beim Schaltvorgang vorbei ist. Aber das setzt dann wiederum 
voraus, das du dem folgen kannst. Und da geht es mir auch wie anderen, 
das ich es nicht weiß, wer auf der anderen Seite der Strippe sitzt und 
schon gar nicht weiß ich um den Kenntnisstand der Materie beim 
Gegenüber. Außerdem, und mir klappern auch immer gleich die Liddeckel, 
Schalter mit Interrupt...., so was geht gar nicht. Klar, zum Üben macht 
es vielleicht Sinn, aber sonst nicht. Schon gar  nicht, wenn ich einen 
sowieso wachen Controller habe. Da reicht Polling und das ist auch 
völlig ausreichend. So schnell kannst du einen Kontakt gar nicht 
betätigen, das es der Controller "verschläft". Es ist halt dann nur ein 
Hinweis an den "Laien" auf der anderen Erdkugel, das dies ein 
Designfehler ist und so in der Regel nicht gemacht wird. Nimm's halt 
nicht persönlich.
Niemand will dir deine Art zu lernen kaputtreden, aber die Hinweise sind 
gut gemeint. Stell dir vor, wir würden Tastaturabfragen mit Interrupt 
gutheißen. Das lesen auch andere Anfänger und schon sind sie auf einem 
falschen Gaul aufgesessen. Daher wird bei einer so gestellten Frage 
immer der Hinweis kommen, Kontakte nicht in einer ISR zu erfassen. 
Irgendwann einmal wirst du auch mal eine Frage beantworten und dann 
vermutlich auch deine Weißheit weitergeben....
Schönes WE
Gruß oldmax

von Conny G. (conny_g)


Lesenswert?

Vielleicht sollte man auch die Gründe noch genauer ausführen, weshalb 
der Taster nicht am Int hängen sollte.
Habe ich mich beim ersten Mal als ich das gelesen habe auch gefragt: 
warum eigentlich nicht. Wenn ich den frei habe und es so machen möchte 
könnte ich es ja machen, technisch gibt's ja nix dagegen.

Aber der INT ist eine so wertvolle Resource, der in anderen Aufgaben 
viel passender ist, dass ich beim Design so etwas gar nicht erst 
anfangen sollte.
Lieber habe ich einen Timer Tick (Timer INT) jede Millisekunde, der auch 
mal nach dem Taster / den Tastern kuckt als den INT dafür zu verwenden, 
denn der sollte lieber auf Dinge reagieren, wo ich wirklich schnell sein 
muss (auf eine Flanke eines anderen Bausteins reagieren, z.B. wenn ein 
I2C-Transfer reinkommt o.ä.) und das auch viel häufiger als ein Taster 
jemals betätigt wird.

von Jonas R. (jofie)


Lesenswert?

hmmm jetzt muss ich mich wohl doch nochmals melden...

Danke Martin... Das passt ganz gut was du sagst.
Ich nehme auch gerne Kritik an, und Vorschläge, wie es besser wäre. 
Allerdings dann bitte mit kurzer Erklärung (Danke Conny!) und eben einer 
Antwort auf die eigentliche Frage.
Was mich eben so gestört hat, war dieses "Falsch" ohne kurze Info dazu. 
Und so blöd der am anderen Ende auch sein möge. Eine Begründung, die der 
andere evtl. nicht auf Anhieb versteht, ist sinnvoller, als nur 
"schwachsinn, machs anders."

Wie gesagt, ich werde mir die Softwaregeschichte wohl demnächst mal 
anschauen müssen, habe im Moment aber die Hardwarevariante aufgebaut.

LG
Jonas

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.