AVR Leaf Switch vernünftig abgreifen

Gast #3232937
Lesenswert?

Hallo Leute,

ich bin auf ein kleines Problem gestoßen:

Ich versuche die Wählscheibe von einem altehrwürdigen FeTAp abzunehmen. 
Jetzt hat das Ding 2 leaf switches (weiß zufällig jemand das deutsche 
Wort?), einer geht zu sobald die Scheibe nicht mehr in Ruhelage ist, der 
andere wird über ein recht kompliziertes System von einem Nocken so oft 
geöffnet, wie die Nummer, die man gewählt hat.

Nun haben diese Dinger zwei Nachteile:
Sie prellen wie Hund, was kein Problem ist, weil sich die Scheibe mit 
konstanter Geschwindigkeit dreht und ich dann einfach die ansteigende 
Flanke detektiere. Das läuft auch. So:
1
while(!(PIND & (1 << Scheibe))) { //Solange die Scheibe gedreht bleibt, wird eine Ziffer gewählt
2
        if((Status == 0) && (PIND & (1 << Impuls))) {
3
          Ziffer++; //So oft der Impulsgeber von 0 auf 1 springt, ist die Ziffer zu erhöhen
4
          _delay_ms(40); //einfache Entprellung
5
        }
6
        Status = (PIND & (1 << Impuls));
7
      }

ABER: Noch dazu löst der anscheinend nicht immer zuverlässig aus...
Das Ding ist zu schnell, um mit den Augen zu folgen, aber ich denke, 
dass manchmal einfach einer verloren geht. Ideen?
#3233224
Lesenswert?

Ein Kontakt, Arbeitskontakt, nsa, schließt beim Aufziehen der 
Wählscheibe und schließt die Sprecheinrichtung kurz und bleibt bis zur 
Beendigung des Ablaufs geschlossen. Es wird damit das knattern der 
Wählscheibe im Hörer verhindert und der Schleifenstrom erhöht.
Der zweite Kontakt, Impulskontakt, nsi, unterbricht den Schleifenstrom 
impulsweise je nach Ziffer.
#3233280
Lesenswert?

Danke, das sieht schon mal hilfreich aus!
Ich meinte wie ist der deutsche Begriff für leaf switch, ist aber auch 
egal, solang mich keiner für meinen Anglizismus lyncht ;)

@Hubert: Macht Sinn, in meinem Fall benutze ich den einen, um eine 
Ziffer zu starten und vor allem zu beenden (spart mir Timer-Gefrickel) 
und den anderen für die Ziffer.

@Peter: Ag oxidiert? Hätte die knickrige Post doch nur Au genommen! :) 
Für sein Alter ist der Apparat in verdächtig gutem Zustand, aber die 
Kontakte sehen in der Tat ein bisschen dunkel aus...Fensterleder hab ich 
nicht, ich lass mir was einfallen.
Zum Delay: Der wird ja eh nur ausgelöst, wenn der Schalter öffnet und 
danach kann erst mal ca. 50 ms ohnehin nichts passieren. Die Lösung ist 
nicht übertragbar aber sollte relativ sicher Impulse abgrenzen (Vor 
allem, weil er beim Öffnen auslöst, prellen wird der Schalter aber erst 
beim Schließen. Ich versuche mal den Schließvorgang als Auslöser, vllt 
klappt das besser).
Zum Pullup: Ich mache mir Sorgen um Stromverbrauch. Lösung (?): Den 
Pullup über den Arbeitskontakt führen, so hängt der Input zwar in der 
Luft, wird aber ja ohnehin überhaupt nur bei geschlossenem 
Arbeitskontakt ausgelesen (mechanisch zwingend)
#3234389
Lesenswert?

So, habe jetzt den nsa am internen Pullup (Prellen ist hier unerheblich) 
und wenn er geschlossen ist, zieht er nicht nur seinen eigenen Pin 
sondern auch über 2,5kOhm den Impulsgeber auf GND. Dieser wiederum ist 
dann mit Vcc verbunden, zieht also das Signal hoch (Zuverlässig über 
3,5V, also bei weitem genug für ein high).
Wenn nun gewählt wird, wird der nsa über 2 Widerstände runtergezogen 
solange nsi geschlossen wird, womit dieser Kontakt hoffentlich genug 
bekommt, um am Leben zu bleiben. Geht nsi kurz auf, zieht der 2,5kOhm 
den entsprechenden Pin runter und der interne Pullup den nsa-Pin hoch.
Ist das Wählen beendet, geht nsa auf, der Pin wird vom Pullup 
hochgezogen und nsi ist wieder zu und geht damit von selbst auf Vcc.

Ich habe an den Timings beim Auslesen rumgeschraubt und habe jetzt 
bisher 100% Übereinstimmung, muss dann noch mal länger testen ob es 
immer klappt.

Vielen Dank an alle Helfer!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren