| Alarmgeber mit PIC12F509Schon ein einfacher Alarmgeber kann äußerst nützlich sein und bei Überwachung von kritischen Zuständen oder
Gefahrensituationen gute Dienste leisten. Je nachdem, welcher Sensor verwendet wird, können diverse unerwünschte Zustände erkannt
und gemeldet werden. In der folgenden Schaltung kommt ein einfacher Öffner-Kontakt zum Einsatz. Im Ruhezustand bleibt der
Kontakt, da er betätigt ist, geöffnet. Beim Schließen versorgt der Kontakt unsere kleine Alarmanlage mit Spannung und initiiert
so die Ausgabe von Warnsignalen. In der Anfangsphase wird zunächst eine Wartezeit gestartet. Erst nach Ablauf dieser Zeit werden die Alarmsignale generiert.
So kann unserer Alarmgeber z.B. für Tür- oder Fensterüberwachung verwendet werden. Das könnte ein Kühlschrank, eine Kühltruhe,
Dachluke, Garagentor oder Tür eines Tresors mit wertvollem Inhalt sein.
PIC12F509Der Mikrocontroller PIC12F509 ist ein 8-Bit-Mikrocontroller. Ähnlich wie bei PIC12F200 stehen 33 Assembler-Anweisungen
zur Verfügung. Er verfügt über einen Flashspeicher, der 100000 Mal beschrieben werden kann. Seine Größe beträgt 1024 Words. Der
RAM-Speicher ist 41 Bytes groß. Der Mikrocontroller hat acht Pins und stellt fünf Ein-/Ausgänge zur Verfügung. Zusätzlich steht
noch ein Eingang zur Verfügung.
Pinbelegung
|
Der Schaltplan
// CONFIG #pragma config OSC = IntRC // Internal RC oscillator #pragma config WDT = OFF // Watchdog Timer Enable bit (disabled) #pragma config CP = OFF // Code Protection bit #pragma config MCLRE = OFF // GP3/MCLR Pin Function Select bit #include <xc.h> #define _XTAL_FREQ 4000000 // Taktfrequenz #define Ausgang_Info_LED GPIObits.GP0 // GP0 ist Info-LED-Ausgang #define Ausgang_Alarm_LED GPIObits.GP1 // GP1 ist Alarm-LED-Ausgang #define Ausgang_Buzzer GPIObits.GP4 // GP2 ist Buzzer-Ausgang int i; // Laufvariable für For-Schleifen void main(void) { Ausgang_Info_LED = 0; // Info LRD aus Ausgang_Alarm_LED = 0; // Alarm LED Aus Ausgang_Buzzer = 0; // Buzzer Aus TRIS = 0b00000000; // GPIO 0,1,4 als Ausgänge // Phase 1: Leerlauf, Info LED (Gelb)) for (i=0; i<10; i++) { // For Schleife __delay_ms(3000); // Wartezeit Ausgang_Info_LED = 1; // Ausgang Info-LED Ein __delay_ms(100); // Wartezeit Ausgang_Info_LED = 0; // Ausgang Info-LED Aus } // Phase 2: Alarm LED (Rot)) for (i=0; i<11; i++) { // For Schleife Ausgang_Alarm_LED = ~Ausgang_Alarm_LED; // Ausgang toggeln __delay_ms(1000); // Wartezeit } // Phase 3: Buzzer (Voralarm)) for (i=0; i<10; i++) { // For Schleife __delay_ms(3000); // Wartezeit Ausgang_Buzzer = 1; // Ausgang Buzzer Ein __delay_ms(100); // Wartezeit Ausgang_Buzzer = 0; } // Phase 3: Buzzer (Alarm)) for (i=0; i<10; i++) { // For Schleife __delay_ms(2000); // Wartezeit Ausgang_Buzzer = 1; // Ausgang Buzzer Ein __delay_ms(500); // Wartezeit Ausgang_Buzzer = 0; // Ausgang Buzzer Aus } // Phase 4: Buzzer (Alarm intensiv)) for (i=0; i<10; i++) { // For Schleife __delay_ms(1000); // Wartezeit Ausgang_Buzzer = 1; // Ausgang Buzzer Ein __delay_ms(300); // Wartezeit Ausgang_Buzzer = 0; // Ausgang Buzzer Aus __delay_ms(50); // Wartezeit Ausgang_Buzzer = 1; // Ausgang Buzzer Ein __delay_ms(300); // Wartezeit Ausgang_Buzzer = 0; // Ausgang Buzzer Aus } // Phase 5: Buzze (konstant An)) while (1) // While Schleife Ausgang_Buzzer = 1; // Ausgang Buzzer Ein }
Testschaltung
Im Ruhezustand, wenn die untersuchte Tür, Deckel oder Klappe geschlossen ist, ist der Öffner-Kontakt des Endschalters
S1 geöffnet. Die Stromzufuhr ist unterbrochen und die Schaltung deaktiviert. In dem Zustand wird kein Strom aufgenommen.
Sobald die Tür geöffnet wird, schließt der Öffner von S1, die Schaltung wird mit Spannung versorgt und das Programm gestartet.
Der Programmablauf ist auf fünf Phasen unterteilt. Jede Phase wird mit einer FOR-Schleife realisiert. Die Dauer jeder Phase
kann beliebig durch Veränderung des Wertes der Laufvariable i eingestellt werden.
In der ersten Phase, die als Leerlauf bezeichnet werden kann, werden keine Warnsignale ausgegeben. In der Phase blinkt in
größeren zeitlichen Abständen die gelbe Leuchtdiode. So kann die Schaltung auf Funktionstüchtigkeit geprüft werden, bevor die
eigentlichen Alarmsignale ausgegeben werden.
In der zweiten Phase wird mit der roten Leuchtdiode das erste Alarmsignal ausgegeben. Die LED blinkt in 1-sek-Takt. Auch diese
Zeit kann im Programm frei eingestellt werden. Der Wert der Variable i ist hier so eingestellt (eine ungerade Zahl), dass die
Leuchtdiode nach Verlassen der Schleife im eingeschalteten Zustand bleibt.
Die dritte, vierte und fünfte Phase befassen sich mit dem akustischen Signal. Das Signal wird nach und nach immer
aufdringlicher ausgegeben. In der fünften Phase werden die Pieptöne in einen konstanten Dauerton
umgewandelt.
Kurzvideo
Google-Suche auf MEINE-SCHALTUNG.de : |