Profilwalzen einer Profilieranlage (Aluminium)


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Kinder Electric
mit Mikrocontroller und Fotowiderständen


Kinder Electric-Schaltung


Mit dem wohlbekannten und populären Spiel „Kinder Electric“ haben wir uns bereits beschäftigt. In seiner Grundausführung ist die notwendige Beschaltung äußerst einfach. Um es etwas interessanter zu gestalten, haben wir in dem Beispiel eine „Falsche Antwort“-LED eingeführt, was die Schaltung auch ein wenig anspruchsvoller machte. Doch ein großer Nachteil der Schaltung wurde in dem Versuch nicht ausgeschmerzt. Alle Frage- und Antwort-Buchsen waren mit Drahtbrücken fest miteinander verknüpft, was bedeutet, dass die richtige Antwort für jeweilige Frage-Buchse immer auf dem gleichen Platz stand. Das würde nach einiger Zeit unweigerlich dazu führen, dass man die richtige Antwort auch ohne sie eigentlich zu kennen erraten könnte.
Die Schaltung kann man unter diesem Link erreichen:

"Kinder Electric" mit Komparator


In dem neuen Versuch wollen wir diese Lücke schließen. Zu diesem Zweck werden die Karten mit Fragen und Antworten kodiert. Das führt dazu, dass von Karte zu Karte andere Verknüpfungen der Frage- und Antwort-Buchsen gebildet werden. So wird ausgeschlossen, dass man anhand des Schemas der davor benutzten Karten erraten kann, welche Antwort auf die gestellte Frage die richtige ist.
Die Kodierung der Karten wird mithilfe von Leuchtdioden und Fotowiderständen realisiert. In dem Beispiel kommen drei Fotowiderstände zum Einsatz, was bedeutet, dass sieben unterschiedliche Abhängigkeiten der Frage- und Antwort-Buchsen realisierbar sind. Bei Bedarf kann man die Zahl der Fotowiderstände erhöhen und mehr Kodierungsmöglichkeiten erschaffen.
Die Fotowiderstände werden jeweils von einer Leuchtdiode beleuchtet. Beim Einstecken einer Frage-Antwort-Karte werden die Leuchtdioden verdeckt, was dazu führt, dass der Widerstand der Fotowiderstände sich verändert. Die Fotowiderstände bilden mit festen Widerständen von 10 kOhm drei Spannungsteiler. Die Spannung der Spannungsteiler wird anschließend über analoge Eingänge des Mikrocontrollers erfasst. Anhand der Spannungswerte bestimmt er den Spielmodus und damit die Verbindungen zwischen Frage- und Antwort-Buchsen.

Mikrocontroller

Arduino UNO

Die Entscheidungen, ob die Antworten richtig oder falsch sind, übernimmt Arduino Uno. Vier Eingänge, Pins 2,3,4 und 5, verraten ihm, in welche Frage-Buchse der Frage-Stecker gesteckt wurde. Vier weitere Eingänge, Pins 6,7,8,9, liefern ihm die Information, welche Antwort-Buchse gewählt wurde. Mit zwei Leuchtdioden, Ausgänge 10 und 11, teilt er der Außenwelt mit, ob die Antwort falsch oder richtig ist. Dabei beachtet er stets, welcher Karten-Modus eingestellt ist. Das wird mit drei Spannungsteiler, die jeweils einen Fotowiderstand enthalten, festgelegt. Die Spannungen der Spannungsteiler werden an den analogen Eingängen A0, A1 und A2 abgefragt. Beim Einstecken einer Frage-Antwort-Karte werden vordefinierte Fotowiderstände verdeckt, wodurch ihre Widerstände sich ändern und die betreffenden Spannungsteiler andere Spannungen liefern.

Schaltplan

Schaltplan


Um Eingänge zu sparen, werden die Frage- und Antwort-Buchsen über Sperrdioden mit Eingängen des Mikrocontrollers verbunden. Für die Frage-Buchsen sind vier Eingänge, Pins 2,3,4 und 5 zuständig. Dank entsprechender Verdrahtung werden die Nummern der Frage-Buchsen binär-kodiert dem Mikrocontroller mitgeteilt. Wenn z.B. die Frage-Buchse Nr. 7 gewählt und über den Stecker ST1 mit Masse verbunden wird, werden drei Eingänge aktiv: Pin 2, Pin 3 und Pin 4. Pin 5 bleibt unberührt. Jeder Pin hat andere Wertigkeit: 0/1, 0/2, 0/4 oder 0/8 (deaktiviert/aktiv). Daraus ergibt sich für den Mikrocontroller die Information, dass Frage-Buchse Nr. 7 (1+2+4+0) gewählt wurde.
Ähnlich gestaltet sich die Situation bei Antwort-Buchsen. Hier kommen die Pins 6,7,8 und 9, die ebenfalls als Eingänge definiert sind, ins Spiel. Wird in dem Feld die Antwort-Buchse Nummer 6 gewählt, werden über den Stecker ST2 die Eingänge Pin 7 und Pin 8 mit Masse verbunden und so aktiviert. Auch hier werden die Informationen von Pin 6 bis Pin 9 (0/1, 0/2, 0/4, 0/8) binär kodiert. In dem Fall handelt es sich bei der „verstecken“ Zahl um 6 (0+2+4+0).
Bei LED1 handelt es sich um rote Leuchtdiode für falsche Antworten. Die LED2 ist gelb und blinkt bei richtigen Antworten. Die LEDs Nummer 3 bis 5 beleuchten die Fotowiderstände R3, R5 und R7. Die Widerstände R3 bis R8 bilden paarweise Spannungsteiler, die dem Mikrocontroller mitteilen, welcher Fotowiderstand abgedeckt wurde. Auf diese Weise, ebenfalls binär kodiert, ermittelt der Mikrocontroller, um welchem Spielmodus es sich gerade handelt.

Programm (Sketch)

// ************************************************************************************************
// Kinder Electric mit Mikrocontroller
// Eine Schaltung mit Arduino Uno und Fotowiderständen.
// Arduino IDE 2.3.2
// ************************************************************************************************
int Fotowiderstand_1 = A0;                  // Analoge Eingänge für Karten-Modus
int Fotowiderstand_2 = A1;
int Fotowiderstand_3 = A2;

int Fragebuchsen_Bits [4] = {2,3,4,5};                         // Kodierung Fragebuchsen
int Antwortbuchsen_Bits [4] = {6,7,8,9};                       // Kodierung Antwortbuchsen
int Kartenmodus_Analog [3] = {A0, A1, A2};                     // Kodierung Karten-Modus
                                                               // Zuordnung der Antwortbuchsen zu
                                                               // Fragebuchsen abhängig von Karten-
                                                               // Modus:
int Frage_Antwort_Tabelle [4][9] = {{5,8,2,4,9,3,1,7,6},              
                                    {4,7,5,1,9,8,3,6,2},
                                    {8,9,3,6,1,4,2,7,5},
                                    {9,1,4,7,2,5,3,8,6} };
int Rote_LED = 10;                                             // Status LED - falsche Antwort
int Gelbe_LED = 11;                                            // Status LED - richtige Antwort
byte Wert [2];                                                 // Zwischen Byte-Variable
int Bit_Wert;
                                                               // Atuelle Nummer der Frage- und
                                                               // Antwort Buchse und Karten-Modus
int Frage_Buchse, Antwort_Buchse, Karten_Modus;                
                                                               
unsigned long Millis_Aktuell, Millis_Alt;                      // Zeitmessung Blinker
bool Blinker;


// ************************************************************************************************
void setup() {

    for (int i=0; i<4; i++) {                                  // Digitale Eingänge
        pinMode(Fragebuchsen_Bits [i], INPUT_PULLUP);
        pinMode(Antwortbuchsen_Bits [i], INPUT_PULLUP);
    }            
    pinMode(Rote_LED, OUTPUT);                                 // Digitale Ausgänge
    pinMode(Gelbe_LED, OUTPUT);

    Millis_Alt = millis();                                     // Millisekunden aktuell festhalten
}

// ************************************************************************************************
void loop() {

    // Blinker ------------------------------------------------------------------------------------
    Millis_Aktuell = millis();                                 // Blinker alle 400 ms
    if (Millis_Aktuell > (Millis_Alt + 400)) {
        Blinker = !Blinker;
        Millis_Alt = millis();
    }

    // Hier wird ermittelt, welcher Karten-Modus aktiviert wurde. ---------------------------------
    Wert [0] = 0;
    for (int i=0; i<3; i++) {
        int Analog_Wert = analogRead (Kartenmodus_Analog [i]);
        if (Analog_Wert > 800) { Bit_Wert= 0; } else { Bit_Wert = 1; }
        bitWrite (Wert[0], i, Bit_Wert);               
        Karten_Modus = Wert[0];                                // Aktueller Karten-Modus
    }

    // Hier wird ermittelt, in welche Frage- oder Antwort-Buchse ein Stecker gesteckt wurde. ------
    Frage_Buchse = 0;
    Antwort_Buchse = 0;
    Wert [0] = 0; Wert [1] = 0;
    for (int i=0; i<4; i++) {
        Bit_Wert = digitalRead(Fragebuchsen_Bits [i]);  
        bitWrite (Wert[0], i, !Bit_Wert);              
        Frage_Buchse = Wert[0];                                // Aktuelle Frage
        Bit_Wert = digitalRead(Antwortbuchsen_Bits [i]);     
        bitWrite (Wert[1], i, !Bit_Wert);  
        Antwort_Buchse = Wert[1];                              // Aktuelle Antwort
    }

    // Hier wird ermittelt, ob auf gestellte Frage die richtige Antwort folgte --------------------
    delay(100);
    if ((Frage_Buchse > 0) && (Antwort_Buchse > 0)) {
        if (Frage_Antwort_Tabelle [Karten_Modus-1][Frage_Buchse-1] != Antwort_Buchse) {
            digitalWrite(Rote_LED, HIGH);                      // Falsche Antwort
            digitalWrite(Gelbe_LED, LOW);
        } else {
            if (Blinker) {
                digitalWrite(Gelbe_LED, HIGH);                 // Richtige Antwort
            } else {
                  digitalWrite(Gelbe_LED, LOW);
                  }            
            digitalWrite(Rote_LED, LOW);
        }
    } else {
        digitalWrite(Gelbe_LED, LOW);                          // Warten auf Frage und Antwort
        digitalWrite(Rote_LED, LOW);
    }
}
// ************************************************************************************************
        

Spielmodus

Durch Veränderung des Spielmodus werden auch die Verbindungen zwischen den zuständigen Frage- und Antwort-Buchsen verändert. Dank dessen ist es zwecklos, sich zu merken, welche Antwort-Buchse zu welcher Frage-Buchse gehört. Bei einer weiteren Spieltafel wird der Modus geändert und die Antworten stehen dann auf anderen Plätzen. Hier ein Beispiel für Frage-Buchsen Nummer 3 und 6.

Beispiel Modus 1

Spielmodus 1

Im Modus 1 ist die Frage-Buchse Nr. 3 mit der Antwort-Buchse Nr. 2 verbunden. Entsprechend Nummer 6 mit 3.

Beispiel Modus 2

Spielmodus 2

Im Modus 2 sehen die Verbindungen jetzt anders aus: Frage Platz 3 ist jetzt mit Antwort Platz 5 verbunden. Entsprechend Nummer 6 mit 8.

Beispiel Modus 3

Spielmodus 3

Verbindungen im Modus 3.

Beispiel Modus 4

Spielmodus 4

Auch im Modus 4 gestalten sich die Verbindungen anders.

Ein Modus wird dadurch bestimmt, dass bestimmte Fotowiderstände von den sie beleuchtenden Leuchtdioden verdeckt werden. In dem Beispiel werden zu diesem Zweck einfach kleine Fragmente der Frage-Antwort-Karte herausgeschnitten. Die nicht herausgeschnittenen Fragmente der Karten trennen dann beim Einstecken die Leuchtdioden von den Fotowiderständen.

Modus Bestimmung


Wenn z.B. im unterem Bereich aus der Karte die Abdeckfragmente 1 und 3 herausgeschnitten werden, wird der zweite Fotowiderstand (R5) mit dem Fragment 2 abgedeckt. Er wird jetzt von seiner Leuchtdiode (LED4) nicht mehr beleuchtet und verändert folglich seinen Widerstand. Der Spannungsteiler R5-R6 liefert jetzt am Eingang A1 andere Spannung, was der Mikrocontroller erfasst und daraus den Spielmodus herleitet. In dem Fall handelt es sich um Spielmodus Nummer 2.

Fotowiderstand

Fotowiderstand

Je nachdem wie ein Fotowiderstand beleuchtet wird, verändert er seinen Widerstand. Je heller es wird, umso kleiner wird sein Widerstand. Zusammen mit einem festen Widerstand kann ein Spannungsteiler gebildet werden. Je nach Beleuchtung liefert der Spannungsteiler unterschiedliche Spannungen, die gemessen werden können.

Frage-Antwort Tabelle

Die Verbindungen Frage-Antwort, die vom jeweiligen Modus abhängen, sind in der Variable Frage_Antwort_Tabelle enthalten. Sie ist als zweidimensionales Array definiert.

Frage-Antwort Variable


[4] – Vier Modi vordefiniert
[9] – Neun Verknüpfungen pro Modus

Die Handhabung der Tabelle ist nicht schwer. Wenn der Mikrocontroller feststellt, dass gerade Modus Nummer 3 vorgewählt wurde und der ST1-Stecker in die Frage-Buchse Nummer 4 gesteckt wurde, kann er aus der Tabelle entnehmen, dass die richtige Antwort oberhalb der Antwort-Buchse Nummer 6 steht.

Frage-Antwort Zuordnung


Testschaltung

Testschaltung 1


Testschaltung 2



Kurzvideo


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Mikrocontroller

Die Mikrocontroller, den man auch als abgespeckte Computer ansehen kann, gehören zu den leistungsfähigsten Mikrochips der Elektronik-Welt. Versehen mit einem kleinen Programm können sie Aufgaben bewältigen, die mit herkömmlichen elektronischen Teilen nur schwer oder gar nicht realisierbar sind. Dabei sind sie äußerst flexibel. Man erstellt ein neues Programm und schon ist der Mikrocontroller in einer ganz anderen Welt tätig.
Was gestern für jeden Neueinsteiger nur schwer verständlich war, wie z.B. Assembler-Programmierung, wird heute zum Kinderspiel. Neue Software übernehmen viele Aufgaben, machen Programmierung einfach und erleichtern damit den Einstieg jedem Anfänger erheblich. Es ist eine gute Zeit, jetzt mit Mikrocontroller-Experimenten anzufangen.

Arduino

Mikrocontroller HT46F47E (TPS)

TPS: Tatenprogrammierbare Steuerung. Versuche und Experimente mit dem Mikrocontroller HT46F47E. Zum Programmieren werden lediglich zwei Tastschalter benötigt.

ESP32

Ein Mikrocontroller mit Zusätzen (SoC). Er hat eingebaute Touchsensoren, verfügt über WLAN und Bleutooth und kann u.a. mit Arduino IDE programmiert werden.

PIC-Mikrocontroller

Kleine, große und noch etwas größere Mikrocontroller des amerikanischen Chips Herstellers Microchip. Programmierbare Chips für alle Aufgaben.

ATtiny

ATiny können mit Arduino IDE programmiert werden.

Raspberry Pi

Raspberry Pi ist vollwertiger Computer und hat mit kleinen PICs oder ATtinys denkbar wenig zu tun. Da die Entwickler dem Raspi eine kleine Elektronik-Schnittstelle für elektronische Experimente hinzugefügt haben, kommt er auch in unsere Reihe der Mikrocontroller.


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz