Wie bringe ich bei einem 555 + 4017 7 LEDs zum Leuchten, dann 6, dann 5 ... dann 1, dann 0?

Ich bin dabei, ein Raspberry Pi-Projekt in eine einfachere Platine umzuwandeln, die mit 555- und 4017-Chips betrieben wird.

Ich möchte in der Lage sein, mit 7 LEDs zu beginnen, dann zu 6, dann zu 5 und so weiter, bis alle gedimmt sind.

Ich nehme ein einfaches Beispiel mit 3 LEDs: LED 1 leuchtet, wenn das Board im Zustand [0] ist. LED 2 leuchtet, wenn die Platine im Zustand [0 ODER 1] ist. LED 3 leuchtet, wenn sich die Platine im Zustand [0, 1 oder 2] befindet. Für Zustand [3] ist nichts mit der Platine verbunden. Somit leuchten im Platinenzustand 0 die LEDs 1, 2 und 3. Im Zustand 1 leuchten die LEDs 2 und 3. Im Zustand 2 leuchtet nur LED 3. In Zustand 3 leuchtet nichts.

Ich hatte versucht, die Schritt-für-Schritt-Ausgänge des 4017-Chips und der Dioden zu verwenden, um eine ODER-Schaltung zu bilden, aber ich denke, ich habe alle LEDs in Reihe (die zu viel Spannung verbrauchen), sodass die resultierende Helligkeit mit mehr als ein paar LEDs schrecklich ist .

Frage 1: Wie kann ich die LEDs wie oben herunterzählen (UND mit guter Spannung zu den LEDs, wenn sie leuchten)?

Frage 2: Die LEDs sind nur eine Hälfte der Platine. Wie kann ich sicherstellen, dass die LEDs ausgeschaltet bleiben, sobald der 4017-Chip in seinen achten Zustand eintritt (bis die Stromversorgung der Platine aus- und wieder eingeschaltet wird)? Die Beispiele, die ich im Internet finde, scheinen sich ständig zu drehen. Danke.

Mit nur diesen beiden ICs werden Sie mit dieser Aufgabe zu kämpfen haben, Sie benötigen etwas zusätzliche Logik. Es wäre billiger. kleiner, ordentlicher und einfacher, dies mit einem kleinen Mikrocontroller zu erreichen.
Danke @Colin__s. Gibt es bestimmte Mikrocontroller, die Sie mir empfehlen würden?
Ich habe sie nicht benutzt, aber für einen Einzelfall wäre so etwas wie Arduino wahrscheinlich gut. Es gibt einen ziemlich einfachen Einstiegspfad und eine große Support-Community. Wenn es etwas ist, das Sie in Volumen herstellen und monetarisieren möchten, dann das kleinste billigste Mikro, das Sie mit genügend IO finden können, oder ein kleineres billigeres Mikro und ein Schieberegister, wenn das billiger ist.
ATTiny. Ich habe einen ATTiny85 verwendet, der mit einem internen Oszillator läuft, und genau dafür 2 AA-Batterien ausgeschaltet - in meinem Fall mit 5 LEDs. Die einzigen Komponenten waren die LEDs, eine Reset-Taste (um den Timer zurückzusetzen), ein Widerstand (für den Reset-Pulldown) und das ATTiny. Und offensichtlich ein ISP-Programmierer. Das Schöne am Betrieb mit 2 AAs ist, dass Sie keine Strombegrenzungswiderstände benötigen. Ich habe eine rote, eine gelbe und drei rote LEDs für einen Dusch-Countdown-Timer verwendet.

Antworten (2)

Es gibt viele Möglichkeiten, dies zu tun, einige enthalten eine Tüte Dioden ... oder ein Mikro, was meiner Meinung nach übertrieben wäre.

Am einfachsten ist es, einfach einige ODER-Gatter zu kaskadieren.

schematisch

Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan

Allerdings: Wenn das alles ist, wofür diese Ausgänge verwendet werden, verwenden Sie hier das falsche Teil. Sie sollten stattdessen ein Schieberegister verwenden. Vielleicht ein CD4015 .

schematisch

Simulieren Sie diese Schaltung

HINWEIS: Die gezeigten Widerstände sind für 5 V Vdd.

Ich habe dies für 5 LEDs mit einem ATTiny85, einem Reset-Knopf mit 10k Pulldown und 2x AA-Batterien für die Stromversorgung gemacht. Keine Strombegrenzungswiderstände erforderlich (aufgrund der Spannung der beiden AAs). Theoretisch könnten Sie den Reset-Pin für eine 6. LED verwenden, aber dann müssten Sie den Netzschalter verwenden, um den Controller zurückzusetzen. Arduino-Skizze:

// Shower timer with LEDs
// everything happens on the setup part.
// timer starts when reset
// once loop() is reached, go in deep sleep

#define LED1 0 // 1st green led
#define LED2 1 // 2nd green led
#define LED3 2 // 3rd green led
#define LED4 4 // yellow led
#define LED5 3 // red led

#include <avr/power.h>
#include <avr/sleep.h>

// the setup routine runs once when you press reset:
void setup() {
  // go low power
  power_adc_disable();
  power_usi_disable();
  power_timer0_disable();

  // initialize the digital pin as an output.
  pinMode(LED1, OUTPUT);
  pinMode(LED2, OUTPUT);
  pinMode(LED3, OUTPUT);
  pinMode(LED4, OUTPUT);
  pinMode(LED5, OUTPUT);
  PORTB = B00011111; // all LEDs on
  delay(60000); // one minute
  digitalWrite(LED1, LOW);
  delay(60000); // one minute
  digitalWrite(LED2, LOW);
  delay(60000); // one minute
  digitalWrite(LED3, LOW);
  delay(60000); // one minute
  digitalWrite(LED4, LOW);
  delay(60000); // one minute

  // blink for a minute
  for (int i=0; i<30; i++) {
    PORTB = 0;
    delay(1000);
    PORTB = B00011111;
    delay(1000);
  }
  PORTB = 0; // all off
}

// the loop routine runs over and over again forever:
void loop() {
  cli(); // disable all interrups
  set_sleep_mode(SLEEP_MODE_PWR_DOWN); // lower power sleep mode
  cli(); // disable all interrups
  sleep_enable(); // enable sleep
  sleep_cpu();  
}

Informationen zum Programmieren des ATTiny 85 finden Sie beispielsweise unter http://www.hobbytronics.co.uk/arduino-attiny .