Omron Relais 24 VDC


Google-Suche auf MEINE-SCHALTUNG.de :





Dauerkalender


Programmiereung des Mikrocontrollers
HT46F47E TPS

Für das Programmieren des Mikrocontrollers HT46F47E werden lediglich zwei Tasten benötigt. Es sind die Tasten S1 und S2. Die dritte Taste S3, Reset, wird benötigt, um in den Programmiermodus des Controllers zu gelangen. Mit vier Leuchtdioden, die an die Ausgänge des Controllers angeschlossen werden, werden die Eingaben visualisiert. Um die Programmierung durchführen zu können, wird der Mikrocontroller wie folgt verschaltet:

Programmierungs - Schaltung

Programmierungs - Grundschaltung

Auf einem Steckbrett könnte die Schaltung wie folgt aussehen:

Schaltung auf Steckbrett

Schaltung auf Steckbrett

Die Anordnung der Leuchtdioden ist dabei nicht zufällig. Die Befehle und zugehörige Daten werden über die vier LEDs binär angezeigt. Dabei hat jede Leuchtdiode eine andere Wertigkeit. Die D1 hat den Wert 1, die D2 den Wert 2, die D3 den Wert 4 und schließlich D4 den Wert 8. Bei Eingabe der Zahl 7 würden dann D3, D2 und D1 aufleuchten (4+2+1).

Programme eingeben

Es soll folgendes Programm in den Mikrocontroller eingegeben werden:

 CC 31 71 54 29 90 
        

Die Funktionalität: Beim Betätigen der Taste S1 wird die Variable C um 1 erhöht. Der aktuelle Wert der Variable wird binär mithilfe der Leuchtdioden D1 bis D4 angezeigt. Das Programm mit Adressen und Kommentaren:

000  CC   Überspringe den folgenden Befehl, wenn S1 betätigt wird. 
001  31   Springe -1
002  71   Führe die Operation A = A +1 durch
003  54   Übertrage den Wert von A auf die digitalen Ausgänge
004  29   Warte 1 s.
004  90   Springe zurück auf die Adresse 0
        

Um das Programm einzugeben muss Folgendes getippt werden:
Programmiermodus aktivieren:
S2 ein
S3 ein
S3 aus
S2 nach ca. 1 s aus

Programm Eingabe (Mit S1 werden die Daten eingegeben, mit S2 erfolgt die Speicherung):
13xS1 / 1xS2 / 13xS1 / 1xS2
4xS1 / 1xS2 / 2xS1 / 1xS2
8xS1 / 1xS2 / 2xS1 / 1xS2
6xS1 / 1xS2 / 5xS1 / 1xS2
3xS1 / 1xS2 / 10xS1 / 1xS2
10xS1 / 1xS2 / 1xS1 / 1XS2

Programmiermodus verlassen:
S3 ein
S3 aus
Das Programm wird gestartet, nachdem man die Taste S1 gedrückt hat.

Programme lesen

Man kann durch das vorhandene Programm problemlos scrollen und es ansehen. Dazu aktiviert man zuerst den Programmierungsmodus (wie oben beschrieben). Anschließend scrollt man mit der Taste S2 durch das ganze Programm. Die aktuellen Programm-Werte (Befehle und Parameter) werden mithilfe der Leuchtdioden binär nacheinander angezeigt.

Programme ändern

Ein vorhandenes Programm lässt sich leicht ändern. Zunächst aktiviert man den Programmiermodus (wie oben beschrieben) und scrollt mit der Taste S2 bis zu der Stelle, wo Änderung stattfinden soll. Mit der Taste S1 verändert man den Befehl oder die Daten. Anschließend wird die Änderung mit S2 gespeichert.


Programme eingeben mit Arduino

Arduino Nano

Arduino Nano

Arduino - Kurzeinführung
Arduino - Versuche

Bei längeren Programmen kann sich die Tastenprogrammierung ziemlich mühevoll erweisen. Alternativ kann man die Programmierung des HT46F47E mithilfe des Arduino durchführen. Der Vorteil bei der Lösung ist der Ausschluss von Tippfehlern. Zu diesem Zweck wird die oben abgebildete Grundschaltung um Arduino, einen Taster und eine Leuchtdiode erweitert. Mit dem Taster wird der Programmierungsvorgang gestartet, die zusätzliche Leuchtdiode leuchtet während der Programmierung auf. Die Schaltung sieht dann wie folgt aus:

Schaltung Programmierung mit Arduino

Schaltung: Programmierung mit Arduino

Aufgebaute Schaltung mit Arduino

Aufgebaute Schaltung mit Arduino

Das Lade-Programm (Arduino)

// ----------------------------------------------------------
// HT46F47E Programmierung
// Arduino Nano, IDE 1.8.13
// ----------------------------------------------------------

String TPS_Programm  = "CC 31 71 54 29 90" ;   // Programm - Listing
                                                       
int S1_Taste = 2;                              // HT46F47E Eingabe Taste
int S2_Taste = 3;                              // HT46F47E Speichern Taste
int S3_Taste = 4;                              // HT46F47E Reset Taste
int Start_Taste = 5;                           // Arduino Start
int LED = 10;  

int S1;                                        // Zählvariable
int Time = 500;
                                                   
void setup() {
    pinMode (S1_Taste, OUTPUT);
    pinMode (S2_Taste, OUTPUT);
    pinMode (S3_Taste, OUTPUT);
    pinMode (LED, OUTPUT);
    pinMode (Start_Taste, INPUT_PULLUP);  
}
                                               // Daten Übertragen
void Senden () {
    for (int j=0; j < S1; j++) {
          digitalWrite(S1_Taste, LOW);
          delay (Time);
          digitalWrite(S1_Taste, HIGH);
          delay (Time);
    }
    digitalWrite(S2_Taste, LOW);
    delay (Time);
    digitalWrite(S2_Taste, HIGH);
}
                                                         
void loop() {
    digitalWrite(S1_Taste, HIGH);
    digitalWrite(S2_Taste, HIGH);
    digitalWrite(S3_Taste, HIGH);
    digitalWrite(LED, LOW);
  
    if (digitalRead( Start_Taste) == LOW) {    // Übertragung starten

        digitalWrite(LED, HIGH);               // Anzeige LED ein
        digitalWrite(S2_Taste, LOW);           // Programmierung-Modus Ein
        digitalWrite(S3_Taste, LOW);
        delay (Time);
        digitalWrite(S3_Taste, HIGH);
        delay(1000);
        digitalWrite(S2_Taste, HIGH);
                                               // Programm übertragen
        for (int i=0; i < TPS_Programm.length(); i++) {
            char Zeichen = TPS_Programm [i];
            switch (Zeichen) {
                case '0': { S1 = 1; Senden(); break; }
                case '1': { S1 = 2; Senden(); break; }
                case '2': { S1 = 3; Senden(); break; }
                case '3': { S1 = 4; Senden(); break; }
                case '4': { S1 = 5; Senden(); break; }
                case '5': { S1 = 6; Senden(); break; }
                case '6': { S1 = 7; Senden(); break; }
                case '7': { S1 = 8; Senden(); break; }
                case '8': { S1 = 9; Senden(); break; }
                case '9': { S1 = 10; Senden(); break; }
                case 'A': { S1 = 11; Senden(); break; }
                case 'B': { S1 = 12; Senden(); break; }
                case 'C': { S1 = 13; Senden(); break; }
                case 'D': { S1 = 14; Senden(); break; }
                case 'E': { S1 = 15; Senden(); break; }
                case 'F': { S1 = 16; Senden(); break; }
            }
        }
    }
}        

Das Listing des HT46F47E Programms wird vor der Programmierung als String der Variable „TPS_Programm“ zugewiesen.

Listing

Hier wird Listing eingefügt.

Nach der Programmierung soll Arduino aus der Schaltung entfernt werden. Bei Betätigen der Tasten S1, S2 oder S3 können sonst seine Ausgänge beschädigt werden.


Weitere Themen:


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz