Ich suche nach einem Teil, das es einem Benutzer ermöglicht, häufig eine Konfiguration zu ändern. Im Moment verwende ich einen SMD-DIP-Schalter, der an einen I2C-E / A-Expander angeschlossen ist.
Was mich stört, ist der große Platzbedarf dieser Komponenten (DIP-Schalter kombiniert mit IO-Expander-IC) sowie die eher langweilige Benutzeroberfläche. Gibt es DIP-Schalter oder etwas, das die gleiche Funktion erfüllt, mit der ich über einen digitalen Bus wie I2C sprechen kann, um seinen Zustand zu lesen?
Ich bin auch offen für ganz andere Herangehensweisen. Alles, was ich brauche, ist etwas, das mechanisch dauerhaft verändert werden kann und mindestens 64 verschiedene Zustände zulässt. Es ist wichtig, dass die Konfiguration vorgenommen werden kann, wenn die Schaltung nicht eingeschaltet ist, und dem Benutzer ein visuelles Feedback der genauen Konfiguration liefert. Die Schaltung kann nur eingeschaltet werden, wenn die Konfiguration und das visuelle Feedback eigenständig sind, ohne dass eine Steuerung durch einen Mikrocontroller oder SoC erforderlich ist.
Die Frage hängt etwas mit dieser Frage von vor 6 Jahren zusammen: Austausch der DIP-Schalter
Bearbeiten: Es gibt einige großartige Vorschläge in den Antworten und ich denke, ich lasse diese Frage unbeantwortet, Community-Abstimmungen sollten entscheiden, was hilfreich ist und was nicht. Wenn Sie das gleiche Problem haben wie ich, sehen Sie sich alle Antworten an.
Anstelle eines DIP könnte man auch einen SIP-Switch verwenden. Die Einsparung von Platinenfläche würde Ihnen Platz für Ihre I2C-Schnittstelle (oder eine einfachere Schnittstelle wie ein Schieberegister mit Eingangslatch) geben:
Das Bild zeigt es horizontal, aber es wird tatsächlich vertikal montiert.
Zunächst einmal muss ein "DIP"-Schalter nicht groß sein. Hier ist ein 6-Bit-SMD-Schalter mit J-Hook-Pins und einem Rastermaß von 1,27 mm:
Wenn Sie verzweifelt den Platzbedarf reduzieren möchten und den Benutzer ein wenig belästigen können, können Sie ein Potentiometer verwenden, das an einen A / D-Wandler angeschlossen ist. Da Sie 64 Einstellungen benötigen, sollte ein 12-Bit-Konverter mehr als genug Auflösungsspielraum haben, um zwischen den Schritten unterscheiden zu können, vorausgesetzt, einige elektrische und Software-Filter und Schwellenwerte. Hier ist eine 2 x 2 mm Lösung:
Ich habe jedoch noch nie ein analoges Potentiometer mit 64 physikalischen Arretierungen gesehen. Das bedeutet, dass Sie bei der Konfiguration des Geräts kein verlässliches taktisches Feedback für den Benutzer haben. Es ist auch schwierig, die richtige Einstellung beim Booten zuverlässig zu finden, da sie direkt auf einer Schwelle zwischen zwei Einstellungen belassen werden kann - ich würde die vorherige Einstellung in einem EEPROM speichern, und wenn das Potentiometer beim Booten nah genug am gespeicherten Wert ist, I würde sie als gleich ansehen.
Außerdem würde ich diesen 2 x 2 mm Trimmer wahrscheinlich nicht verwenden, aber es gibt Tausende von verschiedenen Trimmpotis.
Haben Sie einen Ersatz-ADC?
Wenn Sie einen freien 8-Bit-ADC auf einem Mikrocontroller in der Nähe haben, könnten Sie den IO-Expander wahrscheinlich zugunsten eines Widerstandsnetzwerks fallen lassen - entweder eine R-2R-Leiter oder eine binär gewichtete Leiter. Das würde die Schalterstellungen als analogen Pegel kodieren. Widerstandsleitern sind in sehr kleinen Paketen erhältlich, aber ich weiß nicht, ob Sie eines bekommen, das kleiner ist als Ihr I2C-Expander.
Wie viele Allzweck-IO-Leitungen haben Sie?
Wenn Sie mit weniger IO-Leitungen auskommen, können Sie vielleicht den IO-Expander fallen lassen und die verwenden, die Sie haben? Sie können die Schalter auf weniger als sechs IO-Leitungen multiplexen. Wenn Sie Platz für 3 Dioden haben und Ihr Mikrocontroller Tristate-Pins hat, dann können Sie mit nur 3 Pins auskommen.
Können Ihre Benutzer etwas Technisches verwalten?
Wenn Ihre Benutzer Anweisungen befolgen können und sich die Konfiguration nur selten ändert, könnten Sie offene Anschlüsse haben, an denen sie einen Widerstand einsetzen können. Sie würden den Widerstand mit einem ADC messen oder indem Sie die Zeitkonstante messen, die er gegen einen Kondensator macht. Sie müssten in der Lage sein, 64 Widerstandswerte zu unterscheiden, was bei letzterem Ansatz schwierig sein könnte. Und natürlich müssten Ihre Benutzer die richtigen Widerstandswerte/Gehäusestile zur Hand haben.
Dann sind Sie auf der Suche nach einem oder mehreren codierten Drehschaltern .
Theoretisch bieten Jumper mehr Konfigurationen, wenn Sie Hunderte von Optionen benötigen, da Benutzer eine beliebige Anzahl von ihnen in verschiedenen Konfigurationen kurzschließen, Widerstände, Kondensatoren, Dioden usw. hinzufügen können, aber das ist sehr technisch für Benutzer und für das Board zu entschlüsseln!
NFC NTAG von NXP + Smartphone. Es ist im Grunde ein I2C-EEPROM, das auch ohne Systemstrom über NFC gelesen und beschrieben werden kann.
Bei der Recherche bekam ich eine Empfehlung für Drehkodierschalter. Ihr Footprint ist vergleichbar mit einem etwas äquivalenten 1,27-mm-Raster-DIP-Schalter. Obwohl sie meiner Meinung nach im Vergleich zu DIP/SIP-Schaltern eine weit überlegene Benutzeroberfläche bieten.
Anstatt eine Dezimal- oder Hexzahl in eine Binärzahl umwandeln und eine Menge kleiner Schalter umlegen zu müssen, können Sie einfach 1 oder 2 dieser Drehschalter drehen und mit Hexadezimalzahlen arbeiten. Es ist viel einfacher, einem Benutzer zu sagen, dass er E6 "betreten" soll, als ihn anzuweisen, viele Schalter in einem bestimmten Muster umzulegen.
Hier gibt es viele tolle Möglichkeiten! Eine weitere etwas obskure: Verwenden Sie einen IR-Empfänger und verwenden Sie dann eine TV-Fernbedienung oder einen Computer, um die Einstellungen zu übertragen. So machen es die RGB-Leuchten.
Ein anderer Ansatz könnte ein Drehgeber, ein EEPROM und 6 kleine LEDs sein.
Der Zustand wird im EEPROM gespeichert und die LEDs zeigen den aktuell gewählten Modus an.
Durch Drehen des Encoders wird zwischen den Modi umgeschaltet.
Wahrscheinlich auch nicht viel Platz sparen - Ihr typischer Encoder hat eine 6 mm Welle und dann brauchen Sie auch noch Platz für die LEDs.
Nur einen einzigen Drehschalter zu verwenden, sieht nicht vielversprechend aus. Bei 64 Positionen würden Sie am Ende knapp 6° pro Position haben, oder das Etikettieren wird schwierig.
Lesen Sie einfach Ihren Kommentar @Trevors Antwort, daher ist dieser Ansatz auch nutzlos.
Drei Optionen.
Analog. Ein einstellbarer Spannungsteiler. Der Benutzer stellt seine eigenen standardmäßigen 5 %-Bereichswiderstände bereit, um den Wert einzustellen.
PWM. Eine optoisolierte PWM- oder RC-Schaltung mit 64 Schritten, die Ihr Gerät liest. Sie können separat oder von derselben Quelle mit Strom versorgt werden, aber da es optoisoliert ist, wird Ihr Gerät nicht eingeschaltet sein. Sie können die PWM-Schaltung nach dem Booten deaktivieren.
Digital. Ein digitales Potentiometer mit Drucktastensteuerung. Auch hier kann die Schaltung unabhängig von Ihrem Gerät mit Strom versorgt werden.
Sie könnten immer das I2C oder eine andere Schnittstelle, vielleicht USB, herausbringen und den Benutzer sein Telefon mit einer benutzerdefinierten App verbinden lassen, mit der Sie eine interne EEPROM-Adresse konfigurieren können.
Die Verwendung einer Telefonanwendung kann jedoch ziemlich problematisch sein. Sie müssten die App unterstützen und mit den neuesten Technologien auf dem Laufenden bleiben, und Sie müssten viele Telefonanbieter unterstützen.
Oder Sie könnten einen benutzerdefinierten "Dongle" liefern, der eingesteckt wird und Sie ähnliches tun können.
Aber ich bezweifle, dass es Ihnen viel Platz sparen würde.
Wenn Sie andere Benutzereingaben haben, z. B. zwei oder drei Tasten und eine Art Anzeige, ist es auch möglich, durch entsprechende Benutzereingaben an den Tasten (Haltezeit usw.) das Gerät in einen Programmiermodus zu versetzen und es zu konfigurieren dieser Weg. Das Gleiche sehen Sie auf Haushaltsgeräten wie Thermostaten, Wasserenthärtern, Dosencomputern usw.
Mit zwei oder drei Tasten und einer LED kann man verdammt viel machen.
Wenn es im stromlosen Zustand konfiguriert werden muss, stecken Sie mit Schaltern oder Jumpern ziemlich fest.
Chupacabras
Rohr
brhans
Timonku
Spehro Pefhany
Phil Frost
wie heißt es
Brian Carlton