Forum: Mikrocontroller und Digitale Elektronik Kapazitive Taster Entprellung in C


von el p. (elpistolero84)


Angehängte Dateien:

Lesenswert?

Hallo an alle,

ich habe eine Software mit C geschrieben, wo durch 12 kapazitive Tasten, 
am Ausgang LED´s steuert(Taste1()==1 -> LED1 =1 uw…)

Wie bei den üblichen Tasten das Problem ist, soll dies durch Software 
Entprellung verbessert werden.
Hierfür habe ich einen Code geschrieben, wo ich mir aber nicht sicher 
bin ob dies soweit richtig funktionieren würde!

Für einige Tipps oder Verbesserungsvorschläge wäre echt sehr hilfreich.

Mfg

Als Anhang das C-Code

von Jens (Gast)


Lesenswert?

ich habe mich nun nicht durch dein Programm gehangelt. Du könntest ja 
auch die Funktionsweise grob erklären, aber was mir aufgefallen ist:

A)sperre=Taste1(),Taste3(),Taste4(),Taste5(),Taste6(),Taste7(),Taste8(), 
Taste9(),Taste0(),TasteStern(),TasteRaute();  // Tastenverriegelung

geben die Unterprpogramme Taste1-x() alle einen unsigned zurück? Wie 
soll diese Zuweisung funktionieren? Durch Komma getrennt, kenne ich 
nicht. Man kann schreiben

sperre=Taste1()+Taste2();

oder '-' etc...

B) Wo sind die Unterprogramme Taste 3- 9 etc?

C) Ich denke es ist einfacher einen Index zu übergeben als 10 Tasten 
Unterprogramme die zu 90% gleich sind zu schreiben....

JJ

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

el pistolero schrieb:
> Wie bei den üblichen Tasten das Problem ist, soll dies durch Software
> Entprellung verbessert werden.
Warum, frage ich mich, prellen deine kapazitiven Taster?

Was ist dein eigentliches Problem? Was willst du mit dieser 
"Entprellung" bewerkstelligen?

von el p. (elpistolero84)


Lesenswert?

Hallo Jens,

ich habe 12 tasten, habe in dem Programm nur 2 Tasten reinkopiert. Das 
Prinzip ist ein und dasselbe, auch bei den anderen Tasten1-12

durch Sperre=0 soll verhindert werden, wenn eine TasteX gedrückt worden 
ist, die anderen Tasten nicht auslösen. Da ich für 12 Tasten einzelne 
Analogeingänge benutzt habe, keine Matrixform :) So eine Art wie 
Verriegelung

Mfg

von el p. (elpistolero84)


Lesenswert?

Lothar Miller schrieb:
> el pistolero schrieb:
>> Wie bei den üblichen Tasten das Problem ist, soll dies durch Software
>> Entprellung verbessert werden.
> Warum, frage ich mich, prellen deine kapazitiven Taster?
>
> Was ist dein eigentliches Problem? Was willst du mit dieser
> "Entprellung" bewerkstelligen?

Hallo Lothar,

am Ausgang Flackern die LED´s wenn ich eine Taste drücke. Die impulse 
sollen dadurch auf 100ms verlängert werden, bzw. eine Taste soll 100ms 
betätigt werden damit eine LED überhaupt an geht.

Mfg

von Udo S. (urschmitt)


Lesenswert?

Vieleicht kannst du uns den Typ der Taster sagen oder wenn selbstgebaut 
beschreiben wie.
Denn kapazitive Taster haben keinen mechanischen Kontakt der beim 
Schalten durch elastisches Nachfedern prellt.

von el p. (elpistolero84)


Lesenswert?

Hallo,

dieses Verfahren arbeitet durch eine bestimmte Betätigungskraft. Eine 
Kupferfläche auf der Platine stellt die eine Platte einer Kondensator 
und eine Aluplatte die zweite Platte der Kondensator dar. Zwischen 
Platine und Aluplatte ist eine nichtleitende Abstandshalter eingebaut. 
Durch Betätigen auf die Aluplatte ändert sich der Abstand (d) und 
dadurch auch die kapazität.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

el pistolero schrieb:
> am Ausgang Flackern die LED´s wenn ich eine Taste drücke. ...
Diese Aufgabenstellung hat rein gar nichts mit "Entprellen" zu tun.

> Durch Betätigen auf die Aluplatte ändert sich der Abstand (d) und
> dadurch auch die kapazität.
Und wer wertet das wie aus?
Und dann btte noch den Rest der Information:
uC? Taster? Schaltplan?

BTW:
>>> Angehängte Dateien: Entprellung.txt <<<
Häng C-Sourcecode bitte als *.c Datei an.
Stichwort: Syntax-Highlighting...

von Udo S. (urschmitt)


Lesenswert?

el pistolero schrieb:
> Zwischen
> Platine und Aluplatte ist eine nichtleitende Abstandshalter eingebaut.
> Durch Betätigen auf die Aluplatte ändert sich der Abstand (d) und
> dadurch auch die kapazität.

Ja und, dahinter brauchst du eine Auswerteelektronik, und wenn die eine 
Hysterese hat, dann prellt da nichts.
Was ist dein eigentliches Problem?

von el p. (elpistolero84)


Lesenswert?

Hallo,

der Mikrocontroller ist von Microchip PIC18LF45k22

Die Tasten sind an einem Analogeingang angeschlossen.
Der Interne Sample&Hold Kondensator wird über die Referenzspannung 
aufgeladen. Anschließend wird der Sensor(kapazitiver taster) parallel 
zur Sample&Hold Kondensator geschaltet(in dem man den jeweiligen 
Analogeingang als Eingang wählt TRISx =1). Die spannung was auf dem 
sensor liegt wird durch den AD-Wandler ausgewertet. CVD Verfahren von 
Microchip

Mfg

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

el pistolero schrieb:
> Die spannung was auf dem sensor liegt wird durch den AD-Wandler
> ausgewertet. CVD Verfahren von Microchip
Und was blinkt da dann?


Jetzt fällt es mir wie Schuppen aus den Haaren, dieser Thread gehört zu 
dem da: Beitrag "Tastenverriegelung (Tastensperre)"

von el p. (elpistolero84)


Lesenswert?

Lothar Miller schrieb:
> el pistolero schrieb:
>> Die spannung was auf dem sensor liegt wird durch den AD-Wandler
>> ausgewertet. CVD Verfahren von Microchip
> Und was blinkt da dann?
>
>
> Jetzt fällt es mir wie Schuppen aus den Haaren, dieser Thread gehört zu
> dem da: Beitrag "Tastenverriegelung (Tastensperre)"

Hallo,

Die Tastenverriegelung wurde mit der "sperre=Taste1()..." gelöst!

von Otto (Gast)


Lesenswert?

Vermutlich muss el pistolero bald wieder die Erkenntnisse seiner 
mühsamen und selbstaufopfernden Forschung der letzten Woche 
abliefern.....

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.