Ich möchte ein sehr kleines Projekt für einen tragbaren Punktezähler entwerfen. Es besteht aus der Verwendung eines Mikrocontrollers zur Steuerung von 4 Sätzen/Gruppen von LEDs auf einer kleinen Leiterplatte. Es ist ein sehr kleines Projekt (3,5 Zoll x 1,5 Zoll). 2 der 4 Sets bestehen jeweils aus 4 LEDs und die anderen 2 bestehen aus jeweils 7 LEDs. Insgesamt 22 LEDs, aber ich brauche nur 4 LEDs, um gleichzeitig eingeschaltet zu sein. Ich möchte Drucktasten verwenden, um die Punktzahl zu erhöhen und zu verringern, wodurch eine LED aufleuchtet. Die LEDs werden mit Punktepunkten beschriftet. Der kleinere Satz ist die Spielpunktzahl, während der größere Satz die Satzpunktzahl ist.
Ich habe mich gefragt, ob dies möglich ist und wie ich das tun würde? Gibt es einen Mikrocontroller, der klein genug ist, um 8 Drucktasteneingänge zu haben, um 4 separate Sätze / Gruppen mehrerer LEDs zu manipulieren?
Ich plane, vorerst einfache 3-V-Knopfzellenbatterien zu verwenden, werde mich aber nach kleinen wiederaufladbaren Netzteilen umsehen. Ich habe einen sehr einfachen DIP-Schalter-Prototyp mit sehr kleinen oberflächenmontierten LEDs auf einer dünnen Leiterplatte mit einer Knopfzellenbatterie hergestellt. Der DIP-Schalter war sperrig und nahm viel Platz ein. Ich würde es verschlanken und es mit weniger Schaltern schlanker machen, indem ich diese Ideen umsetze, wenn sie möglich sind.
Jedes Wort des Rates und der Hilfe wird geschätzt. Vielen Dank :D
Oli hat eine gute Antwort gegeben, aber warte, meine wird besser sein! :-)
Oli kommentierte den begrenzten Strom aus der Knopfzelle, und das ist in der Tat etwas, das man im Auge behalten sollte. Diese CR2430 -Zelle liefert 5 mA als maximalen Dauerstrom. Mal sehen, ob wir das hinkriegen.
Gut, dass man immer nur eine LED anschalten muss, ansonsten würde ich sogar die Knopfzelle in Betracht ziehen. Das sieht nach einer schönen LED aus: typischerweise 15 mcd bei 2 mA.
Oli entschied sich für ein SIPO (Serial-In, Parallel-Out) Schieberegister für die LEDs und ein PISO (Parallel-In, Serial Out) für die Tasten. Das spart viel I/O, kostet aber zusätzliche Komponenten. Können wir die I/O eines Mikrocontrollers nicht direkt nutzen? 22 LEDs und 8 Tasten sind 30 I/Os, kein Problem, aber wir können es etwas billiger machen, wenn wir die LEDs in einer 4 x 5-Matrix multiplexen. Normalerweise würde dies die Leuchtkraft der LEDs um 75 % verringern, aber da wir nur jeweils eine LED leuchten müssen, können wir statisch eine Zeile und eine Spalte auswählen. Wir brauchen also 4 + 5 + 8 = 17 I/Os.
Übliche Verdächtige für einen Mikrocontroller sind Atmel AVR und Microchop PIC. Normalerweise würde ich PIC für die LED-Ansteuerung vermeiden, da er keine 20 mA liefern oder senken kann, aber wir haben einen niedrigen LED-Strom, also kein Problem. PIC ist auch billiger als AVR. Der PIC16F57 hat 20 I/Os, das reicht also. Das Datenblatt sagt 22,5 µA maximal für einen 32,768-kHz-Takt bei 2 V, also bei 3 V immer noch unter 50 µA.
Das ist es. Ein Mikrocontroller, ein billiger Kristall, 22 LEDs, 8 Tasten und 12 Widerstände (4 für die LEDs und 8 für die Tasten. Der PIC16F57 scheint keine internen Pull-ups zu haben). Keine Schieberegister erforderlich.
Dies ist sicherlich mit so ziemlich jedem kleinen Mikro möglich. Sie können entweder einen mit genügend Pins bekommen oder ein Multiplexing für die Tasten durchführen und die LEDs von Schieberegistern ansteuern lassen.
Für 4 LEDs plus Mikro reicht eine Knopfzelle nicht wirklich aus, sie haben einen sehr hohen Innenwiderstand und können im Allgemeinen nur wenige mA liefern, bevor die Spannung unter ein "brauchbares" Niveau fällt. Ein paar AAAs/AAs/Li-Ion wären leistungsfähiger.
Wenn Sie die LEDs mit einem sehr niedrigen Strom und das Mikro mit zB 32 kHz betreiben, könnte dies zum Laufen gebracht werden, aber wenn keine dringende Notwendigkeit besteht, Knopfzellen zu verwenden, würde ich sie vermeiden.
So etwas wie der 20-polige PIC16F1828 , einige Tasten und ein paar Schieberegister wären eine billige und einfache Möglichkeit, dies zu erreichen. Wenn Sie eine andere Mikromarke bevorzugen, gibt es natürlich viele Äquivalente.
EDIT - einige Details:
Schieberegister
Ein Schieberegister verwandelt im Grunde serielle Daten in parallele Daten oder umgekehrt. Das, was Sie brauchen, ist ein Seriell-zu-Parallel-Schieberegister wie das 74HC595. Sie haben 3 Hauptsteuereingänge, einen Takteingang, einen Dateneingang und einen Latch-Eingang. Der 595 hat 8 Flip-Flops in einer Kette (Flip-Flops speichern 1s oder 0s) wie folgt (4 gezeigt):
Wenn die Uhr umschaltet, wird der Wert am Data In-Pin (1 oder 0) in den IC verschoben und der letzte Wert herausgeschoben (entweder vergessen oder an einen anderen 595 gesendet, wenn er verkettet ist). Sie "schieben" also die Daten ein ein Bit nach dem anderen, bis Sie alle 8 Flip-Flops auf Ihren gewünschten Wert eingestellt haben.
Um diese Daten auszugeben, setzen Sie dann den Latch-Pin und die Daten erscheinen auf den 8 Ausgangspins. So können 3 Pins verwendet werden, um 8 Pins (oder 16, 24, 32 usw.) zu steuern.
Hier ist ein Bild von 2 595s, die aneinander gekettet und von einem Arduino angesteuert werden:
Es gibt jede Menge Tutorials, die viel detaillierter sind als oben, googeln Sie nach "Shift Register Tutorial" und Sie erhalten Dinge wie:
PIC-Schieberegister-Tutorial
Arduino 74HC595-Tutorial
Ein weiteres 74HC595-Tutorial
Tasten
Sie können einen Multiplexer verwenden, wie ich ihn oben erwähnt habe (sehen Sie sich Sachen wie 74HC4051 , 4052 und 4053 an), aber da wir über Schieberegister sprechen, ist es erwähnenswert, dass wir ein Schieberegister mit parallelem Eingang und seriellem Ausgang verwenden können, um die Tasten zu lesen. Dieselben Verbindungen, nur umgekehrt - wir speichern die Tastenzustände in den Flip-Flops und takten dann die Daten Bit für Bit in Ihren Mikrocontroller-Pin (dh lesen bei jedem Takt und speichern, sodass Sie am Ende 8 Binärwerte haben).
Hier ist ein Beispiel:
Abschließende Gedanken
Aus den Kommentaren und nachdem ich etwas Zeit zum Nachdenken hatte, neige ich dazu, nur ein Mikro mit genügend Pins zu verwenden, um 1 pro LED und Taste zu haben. Dies ist ein kleinerer Platzbedarf als die Schieberegister und beinhaltet die einfachste Firmware. Ich würde zumindest beim Prototyping damit beginnen.
Steven hat eine sehr gute Antwort gegeben, und das Multiplexen mit IO-Pins ist eine gängige Vorgehensweise (siehe Charlieplexing für eine sehr wirtschaftliche Multiplexing-Methode) und es lohnt sich auf jeden Fall, etwas darüber zu lernen.
Der Knopfzellenantrieb ist wie erwähnt durchaus möglich. Als grobe Vorstellung habe ich hier einen Projektprototypen mit einem der oben genannten PIC16F1828, der ein 7-Segment-Display, 2 Tasten (der 16F1828 hat interne Pull-Ups, also keine Widerstände erforderlich) und 2 LEDs, die von einer Knopfzelle und laufen schläft zwischen den Operationen - die Zelle hält bei normaler Nutzung bis zu einem Jahr. Es ist also durchaus möglich, fügt nur Komplexität hinzu, die Sie sich vielleicht für später sparen möchten.
Zusammenfassend gibt es also viele Möglichkeiten, dies zu tun. Wenn Sie ein Steckbrett haben, warum greifen Sie nicht nach den Komponenten für die Optionen, die Sie ausprobieren möchten (verwenden Sie die Dip-Versionen, und wechseln Sie dann, wenn möglich, zu SMD für die endgültige Version) und experimentieren Sie in Ruhe.
Oli Glaser
stevenvh
Oli Glaser