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?
Oftmals ist die Ag-Schicht oxydiert. Dann ein Fensterleder zwischen den
Kontakten mehrmals durchziehen.
Und den Pullup nicht zu groß wählen, es sollten schon 5mA fließen.
Delay ist die typische poor man's solution, besser ist eine 4-fach
Abtastung alle 10ms.
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.
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)
Du brauchst schon einen gewissen Strom, damit die Kontakte (langfristig)
zuverlässig arbeiten. Mit ein paar hundert µA wirst Du nicht glücklich.
Ich würde es mit einer LED kombinieren, dann fließt genug Strom
(10-20mA) und man hat noch was nützliches davon.
Absurder Zwischenfall schrieb:> Fensterleder hab ich> nicht, ich lass mir was einfallen.
Gibts in jedem Supermarkt.
Auf keinen Fall Schleifmittel, dann ist das Ag komplett weg und der
Kontakt ruiniert (Totalschaden).
0,5mA könnten auch reichen, aber drunter würde ich nicht gehen.
Ausgelegt ist der Kontakt für 60mA (60V / 1k).
Ja okay, seh ich ein, aber das muss ja nur sein, wenn der Taster auch
wirklich benutzt wird. Muss ja nicht sein, dass da die ganze Zeit
während das Telefon an ist (24/7, Akkubetrieb) ein Strom rieselt...
Den Kontakt vielleicht mal für ne Weile mit 60mA "durchpusten"?
JohannesBS schrieb:> Sie prellen wie Hund,
Prellzeiten bis zu 3 ms sind zulässig.
Das Thema "Wahlauswertung" ist vor wenigen Tagen ausführlich diskutiert
worden.
Einfach mal die Suche bemühen.
Grüße
Stefan
@peda: Ich möchte nsa ja auch auswerten, ich schau gleich mal wie das
klappen könnte...
@Stefan: Da ich die Original-Elektronik größtenteils rausgenommen habe,
kann ich es so schwer machen, aber die Infos am Rande helfen mir schon
gut, danke!
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!