Wie kann ich mit einem Mikrocontroller 4 LED-Sätze mit 8 Drucktasteneingängen inkrementieren / dekrementieren?

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

Antworten (2)

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.

Hehe, gute Antwort - ich habe mich für den SR-Weg entschieden, um zu versuchen, es einfach zu halten, obwohl ich mich vielleicht falsch eingeschätzt habe, nicht sicher. Ich dachte, die Sorge um das Sparen von Strom und das Multiplexen mit den Pins könnte die Firmware für einen kompletten Neuling entmutigender machen, obwohl sie wahrscheinlich genauso wahrscheinlich von den Schieberegistern verwirrt werden :-) Ich neige zu 1 Pin pro Taste / LED jetzt (wie in meinem zweiten Kommentar erwähnt), was platzmäßig immer noch einfach sein wird, aber so einfach wie möglich mit Verbindungen / Firmware.
@Oli - Ich denke, die Komplexität von SR und Mux ist für einen Anfänger ungefähr gleich.
ja, ich denke du hast wahrscheinlich recht. Alles Gute für die OP sowieso ...

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):

FFs

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:

Beispiel HC595

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:

Schaltflächen Verschiebung

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.

Wow cool! das klingt kompliziert :( Die Computerspur war nie meine starke Seite der Elektrotechnik. Wenn Sie könnten, würden Sie das bitte erläutern, damit ein Anfänger wie ich verstehen kann, wo er anfangen und mit diesem kleinen Projekt umgehen soll. Ich bin erleichtert, dass dies so ist ist möglich haha. Ich bin mir ziemlich unsicher, wie man Multiplexing macht oder Schieberegister verwendet und auch welche Teile ich bekomme. Vielen Dank für Ihre Hilfe: D
Ich habe weitere Informationen hinzugefügt, hoffe, das hilft ein wenig - lassen Sie es mich einfach wissen, wenn Sie etwas klären müssen.
Vielen Dank. Ich habe gerade gelesen, wie man multiplext. Ich werde heute Abend mehr lesen, aber ich bin gespannt, ob dies noch in eine 3,5-Zoll-X-1,5-Zoll-Leiterplatte mit allen Teilen (LEDs, Taster, Schaltregler, Mikro, Stromversorgung und Verkabelung / Löten) passt. Ich bin verwirrt darüber, ob ich sowohl Multiplexing als auch Shift-Regs verwenden sollte. Ich muss nachlesen, wie Schichtregs funktionieren, haha. Ich erinnere mich, dass ich Labore gemacht habe, ich wünschte, ich hätte mehr Aufmerksamkeit geschenkt. Bisher hatte ich im Sinn, 5 mal 5 zu machen, also 10 Pins zu verwenden. aber dann las ich, dass es an Transistoren und Widerstände angeschlossen werden musste. Ich mache mir Sorgen um den Platz auf der Platine.
Sie können einfach die Shift-Regs für beide Tasten/LEDs verwenden, oder Sie können einen Multiplexer verwenden, wenn Sie möchten - es gibt viele verschiedene ICs und Möglichkeiten, dies zu tun, das obige ist nur eine Möglichkeit. Abhängig von Ihrem Mikro haben Sie möglicherweise genügend Pins, um die Tasten direkt zu verdrahten (oder sogar LEDs, wenn Sie sich für ein z. B. 48- oder 64-Pin-Mikro entscheiden - möglicherweise der richtige Weg, wenn Sie es einfach und einfach halten möchten). Sie verwenden SMD-Zeug, Sie sollten es in 3,5 Zoll x 1,5 Zoll passen, okay.
danke, dass du so hilfsbereit und geduldig mit mir bist!!! ich weiß das wirklich zu schätzen! Ich verstehe, dass es eine Reihe von Möglichkeiten gibt, dies zu tun, und ich würde nicht wissen, welche die beste oder effizienteste Methode wäre. Als letzten Ausweg werde ich wahrscheinlich versuchen, ein 48- oder 64-poliges Mikro zu verwenden, haha. Aber sagen wir, ich wollte das 5-mal-5-Multiplexing machen. Was müsste ich konkret bekommen und verstehen, um diese Methode anzuwenden? Bisher dachte ich, ich könnte eine Taste zum Erhöhen und Verringern verwenden, indem ich sie drücke oder halte. Jetzt weniger Tasten :) Was sind in diesem Fall die notwendigen Dinge, die ich tun und verstehen muss? Nochmal vielen Dank
hmm entschuldigung, wenn ich mich langsam selbst verwirre. Ich denke, ich brauche 6 Pins, um 30 LEDs steuern zu können, oder? Mein Kopf fängt an zu schmerzen und dreht sich :(
Sie können nur 3 Pins verwenden, wenn Sie einige Schieberegister miteinander verketten. Grundsätzlich können Sie eine beliebige Anzahl von LEDs mit 3-Pin ansteuern, wenn Sie viele Schieberegister miteinander verketten - der Nachteil ist, dass Sie sie nicht so schnell aktualisieren können, wie Sie jedes Bit einzeln verschieben müssen (also insgesamt time equals clock period * number of bits in chain) Machen Sie sich keine Sorgen, dass es anfangs verwirrend ist, lesen Sie einfach die Beispiele, die ich verlinkt habe, ein paar Mal durch und lassen Sie es ein wenig sacken. Sich ein paar der 595er zu schnappen und mit ihnen auf einem Steckbrett zu experimentieren, wäre der beste Weg, um zu lernen.
Beachten Sie, dass der 74HC595 nur 70 mA (absolutes Maximum) liefern kann, sodass Sie hocheffiziente LEDs benötigen, die weniger als 10 mA benötigen.