Hallo, mich beschäftigt momentan folgende Aufgabenstellung: An einem Mikrocontroller sind zwei Bedieneinheiten über je ein 4-adriges Kabel angeschlossen. Eine der Adern ist Masse. Zwei weitere Adern werden zur Ansteuerung von je zwei LEDs pro Bedieneinheit genutzt. (LEDs werden u.a. mit unterschiedlichen Helligkeiten angesteuert usw.) Über die vierte Ader sollen nun je zwei Taster pro Bedieneinheit abgefragt werden. Am Mikrocontroller stehen noch zwei bidirektionale Ports zur Verfügung. Erster Ansatz von mir war, eine Funktion des Microcontrollers zu nutzen (Basic Stamp 1), bei der mittels RC Glied ein Widerstandswert eingelesen werden kann. Das RC Glied muss dabei gegen Masse an den Port geschaltet werden, hätte also prima gepasst. Und ich hätte über nur einen Port recht einfach 4 Taster einlesen können, da einfach 4 verschiedenen Widerstände an einem Kondensator am Microcontroller-Port gegen Masse geschaltet werden. Prinzipiell funktioniert das auch, praktisch aber leider nicht, da bei Kabelverbindungen um ca. 2 Meter sich irgendwie andere Kapazitätswerte einkoppeln, welche die Messung des Mikrocontrollers unvorhersagbar machen. (Beispielsweise halbieren sich die Messwerte, wenn eine der LEDs eingeschaltet ist.) Leider kann ich das Kabel selbst nicht auswechseln, da fest verlegt. Gibt es nicht irgendeine andere einfach Möglichkeit, zwei Taster über eine Zweidrahtverbindung auszulesen, wenn eine Ader davon Masse ist? Ich hatte schon an irgendetwas mit Dioden gedacht, aber dazu wäre wahrscheinlich eine symmetrische Spannungsversorgung notwendig, scheint alles recht aufwendig für das Abfragen von ein paar Tastern. Hat irgendjemand noch eine Idee dazu? OneWire hatte ich schon schon durch: unterstützt Basic Stamp 1 leider nicht und der Umweg über OneWire->RS232-Wandler geht leider auch nicht, da der Mikrocontroller serielle Verbindungen nur bis 2400 baud kann. Beste Grüße Tjareson
Hallo Tjareson, mir ist auch spontan nur die Variante mit Pro Taster einem Anderen Widerstand eingefallen - hast du noch einen AnalogIn zu Verfügung? damit müsstest du genau genug die verschiedenen Widerstände und Widerstandskombinationen der vier Taster Messen können - auch könnte man dabei ja einen automatischen Abgleich des 'Leitungsfehlers' machen. immer wenn definitiv nix gedrückt ist misst man auch und kann so auswerten was der Grundwert ist - getriggert wird dann nur bei den passenden 'Deltas'. Sonnige Grüße Stefan
Du könntest auch die 2 LED Leitungen nehmen, um sie parallel für Clock Signale für ein 74xx165 Schieberegister zu nutzen. Du würdest periodisch die LEDs kurz ausmachen, mit einer schnellen Clock kurz die 8 Bit des SR "reinclocken", und danach mit den LEDs normal weitermachen. Das ganze dauert mit einer 1 MHz Clock unsichtbare 10us. Die 4. Leitung nimmst du dann als Eingang für die seriellen Daten des Schieberegister.
Gehe auf eine niedrigere Impedanz. Widerstandswert / 10, Kondensatorwert * 10. Hast du einen ADC in deinem Chip?
Hallo, der Vorschlag von Helge hat die Lösung gebracht: Beschaltungsvorschlag vom Hersteller war ein RC-Glied mit 0.1μF mit Widerstandswerten von 5-50k. Der Controller ist dieses Teil hier: https://wilke.de/embedded-computer/verschiedenes.html ("Basic Briefmarke 1" - schon ein etwas älteres Modell, aber für den Anwendungsfall auch fast schon überdimensioniert.) Ich habe jetzt Werte mit 4.7μF und 150 - 220 - 470 Ohm genommen und an den AD-Eingang des Controllers auch noch einen 100k Pull-Down gegen Masse geschaltet, da sonst der Eingang ohne Tastendruck in der Luft hängt. Jetzt klappt es tadellos und störungsfrei. Zusätzliche Erkenntnis, die sich noch eingestellt hat: selbst über das Kabel des Programmieradapters vom Hersteller koppeln sich mitunter Störungen ein, wenn man in der Nähe Netzspannung schaltet. Vielen Dank für die zahlreichen weiteren Tipps und Antworten. Beste Grüße. Tjareson
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.