smd Frequenzumrichter von Lenze


Google-Suche auf MEINE-SCHALTUNG.de :





Online Rechner

Chronik

Dauerkalender


Impulsschalter mit PIC10F200
und Kodierung des Startverhaltens

Mit drei Anschlüssen, die als Ein- oder Ausgänge definiert werden können, und einem Anschluss, der konstant als Eingang fungiert, eignet sich der Mini-Mikrocontroller PIC10F200 ausgezeichnet für kleine Aufgaben. Für einen Impulsschalter werden nur ein Eingang und ein Ausgang benötigt. Damit stehen bei dem kleinen Mikrocontroller noch zwei Anschlüsse, die für andere Zwecke verwendet werden können, frei zur Verfügung.
Die Aufgabe der Schaltung ist simpel. Mit einem Knopfdruck wird ein Abnehmer, in diesem Fall eine Leuchtdiode, eingeschaltet. Mit einem weiteren Knopfdruck wird er wieder ausgeschaltet.
Um die beiden freien Anschlüsse nicht unbenutzt zu lassen, erweitern wir die Schaltung um noch eine zusätzliche Funktion. Mit weiterem Eingang, der optional verdrahtet werden kann, wird der Zustand des Schaltausganges nach Spannungswiederkehr (Startverhalten) bestimmt.
Trotz dieser Erweiterung der Grundfunktion eines Impulsschalters bleibt die Anzahl der Komponenten, die an der Schaltung teilnehmen, sehr gering. Neben dem Mikrocontroller werden ein Taster, eine Leuchtdiode und drei Widerstände benötigt. Ein in der Testschaltung eingebauter Codierschalter kann mit einer Brücke ersetzt werden.

PIC10F200

PIC10F200

Der kleine Mikrocontroller gehört zu den kleinsten PICs überhaupt. Er stellt uns für das Programm einen Speicher, der 256 Words vertragen kann, zur Verfügung. Ganz große Sprünge sind mit dem PIC nicht zu machen. Für ganz kleine Aufgabe steht er jedoch als Alternative in der ersten Reihe.

PIC10F200

Der Schaltplan

Der Schaltplan

Der Schaltplan

Das Programm

// ***************************************************************************
// Impulsschalter mit PIC10F200 und Kodierung
// MPLAB X IDE v6.00
// XC8-Compiler 2.4
// ***************************************************************************
             
#include <xc.h>
#include <stdbool.h>
                                           // PIC10F200 Konfiguration 
#pragma config WDTE = OFF                  // Watchdog Timer 
#pragma config CP = OFF                    // Code Protect  
#pragma config MCLRE = OFF                 // Master Clear (GP3/MCLR) 

#define _XTAL_FREQ 4000000                 // Taktfrequenz 
#define LED_Ausgang  GPIObits.GP0          // GP0 ist LED-Ausgang 
#define Taster  GPIObits.GP1               // GP1 ist Taster-Eingang 
#define Kodierung  GPIObits.GP2            // GP2 ist Eingang für Kodierung 
_Bool LED_Merker;                          // Aktueller Stand des Ausgangs 
_Bool Um_Merker;                           // Hilfsmerker Umschaltung 

void main(void) {
    
    LED_Ausgang = 0;                       // LED AUS 
    TRIS = 0b00000110;                     // GP0=Ausgang, GP1=GP2=Eingang 
    
    if (Kodierung == 0)                    // Startverhalten laut Kodierung 
        LED_Merker = true;                 // Kodierung aktiv = LED AN     
    
    while(1) {                             // Endloschleife 
        LED_Ausgang = LED_Merker;          // LED EIN oder AUS 
        
        if (Taster == 0) {                 // Taster betätigt? 
            if (Um_Merker == false) {      // Merker deaktiviert? 
                Um_Merker = true;          // Neuer Wert 
                if (LED_Merker == false) { // LED AUS? 
                    LED_Merker = true;     // LED_Merker setzen 
                    goto OK;               // Keine Abfrage mehr 
                }
                if (LED_Merker == true)    //LED EIN? 
                    LED_Merker = false;    // Neuer Wert 
                OK:                        // Goto Sprungziel 
                __delay_ms(50);            // Prellen abwarten 
            }
        }
        if (Taster == 1) {                 // Taster losgelassen? 
            if (Um_Merker == true) {       // UM_Merker noch aktiv? 
                Um_Merker = false;         // UM_Merker zurücksetzen 
                __delay_ms(50);            // Prellen abwarten 
            }
        }  
    }
}        


Die Testschaltung

Testschaltung

Impulsschalter mit PIC10F200 - Testschaltung

Nachdem die GPIOs passend eingestellt wurden (GP0 als Ausgang, GP1 und GP2 als Eingänge) fragt das Programm nach dem Start (Spannung EIN), ob der Codierungsschalter geöffnet oder geschlossen ist. Bei dem geschlossenen Codierungsschalter bekommt der „LED_Merker“ den Wert “true“. Dieser Wert entscheidet, ob nach dem Einschalten die Leuchtdiode ein- oder ausbleibt. Bei „LED_Merker = true“ wird die Leuchtdiode nach dem Start eingeschaltet. Ansonsten bleibt sie aus. Mit dem Codierungsschalter kann man also das Startverhalten der Leuchtdiode bestimmt.
Anschließend geht das Programm in eine Endlosschleife und fragt permanent GP1, der als Eingang definiert ist (Taster), ab. Wird der Taster betätigt, kommt der „UM_Merker“ ins Spiel. Mit diesem Merker wird verhindert, dass der Ausgang, falls jemand den Taster über längeren Zeitraum gedrückt hält, ständig umschaltet wird.
Die Umschaltung der Leuchtdiode darf bei einem Tastendruck nur einmal erfolgen. Der nächste Umschaltvorgang darf erst dann stattfinden, wenn der Taster losgelassen und anschließend wieder betätigt wird.

Kurzvideo zur Schaltung

Kurzvideo


Weitere Themen:


Experimente mit PICs von Microchip


Google-Suche auf MEINE-SCHALTUNG.de :


Home Impressum Datenschutz