Sziasztok!
Mint a korábbi cikkem végén ígértem, most a már látott rendőrlámpa, bonyolultabb, programozható változatával készültem.
Ez a lámpa egy kereszteződés teljes felszerelésére is tökéletesen alkalmas, az időzítése úgy lett megoldva, hogy reális hatást keltsen.
A lámpa tartalmaz 2 autó lámpát, illetve 2 gyalogos lámpát. Ezzel egy teljes kereszteződés 8 lámpáját lehet vezérelni, máris kifejtem.
A szemben lévő lámpák egyszerre működnek, tehát az irányítás tele zöldes, ezáltal egy lámpavezérlés valójában 2-t hajt meg egyszerre.
Nos íme, a megálmodott kereszteződés.
A képen azonos számmal jelölt lámpák azonos vezérlőrészhez tartoznak.
Ezen a képen pedig az Proteus 8 Professionalban megépített áramkör látható működés közben:
A következőekben a programot fogom leírni, kommentált van, így a részek megértése könnyebb.
unsigned char ii;
/*
A következő programrész fogja elmagyarázni az IC-nek, hogy a lejjebb elhelyezett
egyszavas parancsok mit is jelentenek.
a #define parancsba szinte bármilyen folyamatot bevehetünk, ami leegyszerűsíti
a programot és korlátozott források esetén elkerülhetőek vele az IC túlterhelé-
séből fakadó esetleges hibák.
*/
#define lampa1zold PORTA.F0=0; PORTA.F1=0; PORTA.F2=1;
#define lampa1sarg PORTA.F0=0; PORTA.F1=1; PORTA.F2=0;
#define lampa1piro PORTA.F0=1; PORTA.F1=0; PORTA.F2=0;
#define lampa1sapi PORTA.F0=1; PORTA.F1=1; PORTA.F2=0;
#define lampa1ki PORTA.F0=0; PORTA.F1=0; PORTA.F2=0;
#define lampa2zold PORTA.F3=0; PORTB.F5=0; PORTB.F6=1;
#define lampa2sarg PORTA.F3=0; PORTB.F5=1; PORTB.F6=0;
#define lampa2piro PORTA.F3=1; PORTB.F5=0; PORTB.F6=0;
#define lampa2sapi PORTA.F3=1; PORTB.F5=1; PORTB.F6=0;
#define lampa2ki PORTA.F3=0; PORTB.F5=0; PORTB.F6=0;
#define lampa3zold PORTB.F0=0; PORTB.F1=1;
#define lampa3piro PORTB.F0=1; PORTB.F1=0;
#define lampa3ki PORTB.F0=0; PORTB.F1=0;
#define lampa4zold PORTB.F2=0; PORTB.F3=1;
#define lampa4piro PORTB.F2=1; PORTB.F3=0;
#define lampa4ki PORTB.F2=0; PORTB.F3=0;
void lampak(void) { //ez a programrész gondoskodik a helyes állásról
if(ii==1) {
lampa1zold;
lampa2piro;
lampa3piro;
lampa4zold;
}
if(ii==20) {
lampa1sarg;
lampa2piro;
lampa3piro;
lampa4zold;
}
if(ii==40) {
lampa1piro;
lampa2piro;
lampa3zold;
lampa4zold;
}
if(ii==60) {
lampa1piro;
lampa2sapi;
lampa3zold;
lampa4piro;
}
if(ii==80) {
lampa1piro;
lampa2zold;
lampa3zold;
lampa4piro;
}
if(ii==100) {
lampa1piro;
lampa2zold;
lampa3piro;
lampa4piro;
}
if(ii==120) {
lampa1piro;
lampa2sarg;
lampa3piro;
lampa4piro;
}
if(ii==140) {
lampa1sapi;
lampa2piro;
lampa3piro;
lampa4piro;
}
}
void main() {
TRISA0_bit=0; //Autó-1 piros O
TRISA1_bit=0; //Autó-1 sárga O
TRISA2_bit=0; //Autó-1 zöld O
TRISA3_bit=0; //Autó-2 piros O
TRISB5_bit=0; //Autó-2 sárga O
TRISB6_bit=0; //Autó-2 piros O
TRISB0_bit=0; //gyalogos-1 piros O
TRISB1_bit=0; //gyalogos-1 zöld O
TRISB2_bit=0; //gyalogos-2 piros O
TRISB3_bit=0; //gyalogos-2 zöld O
TRISB4_bit=1; //narancs villogás gomb/normál lámpa
while(1) {
while(PORTB.F4==0) { //amíg le nem nyomom a gombot a folyamat megy megállás
ii+=1; //nélkül
if(ii==160) {
ii=1;
}
lampak();
Delay_ms(100);
}
while(PORTB.F4==1) {} //Amíg nyomva tartom a gombot a program vár
lampa3ki;
lampa4ki;
while(PORTB.F4==0) { //itt kezdi el a villogást amíg gombot nem nyomok újra
lampa1ki;
lampa2ki;
Delay_ms(500);
lampa1sarg;
lampa2sarg;
Delay_ms(500);
}
while(PORTB.F4==1) {} //Amíg nyomva tartom a gombot a program vár
lampa1piro; //minden lámpát pirosra kapcsol
lampa2piro;
lampa3piro;
lampa4piro;
Delay_ms(300); //vár ~1/3 másodpercet
ii=130; //a folyamatot a legvégső állapothoz állítja
} //a program visszaindul az elejére és kezdi a lámpák
} //irányítását, amíg ismét meg nem szakítom.
A fenti program MikroC Pro for PIC v6.0.0 verziójú programban íródott, abba bemásolva tökéletesen működnie kell.
A vezérlőbe égetendő hex fájl itt érhető el.
Alkatrészlista:
piros LED 8db
zöld LED 8db
sárga LED 4db //ezek csak az autós lámpákhoz kellenek
nyomógomb 1db //a lámpaállító gomb, ha kell reset is akkor 2db
10kOhm ellenállás 1db //ha kell reset gomb, akkor ebből is 2db kell
PIC16F628 1db
NYÁK lap 1db //ilyen egyszerű áramkörnél tökéletes az előrefúrt is
Az elkészítéshez szükséges elemek minden elektronikai boltban megtalálhatóak, áruk kedvező.
A PIC programozást igényel, így szükséges hozzá egy programozó eszköz, én K150-es programozót használok, lassú de megbízható szerkezet, régebben rendeltem még a neten, igény szerint elküldöm a linket.
Amennyiben bármilyen segítségre lenne szükséged, keress nyugodtan E-mailben a hovanhenrik1@gmail.com címen. A levél tárgyaként ezt írd: "Forrasztva - rendőrlámpa PIC"
A PIC felprogramozását valamint a NYÁK kimarását örömmel vállalom még tapasztalatlanabb olvasóimnak, ilyen ügyben is hasonlóan e-mailben keressetek ugyanezen tárggyal.
Köszönöm, hogy elolvastad, most végére értem a terepasztalokra szánt áramköreim cikksorozattal, hamarosan egy erősítőt fogok nektek bemutatni. Addig is sziasztok!


Nincsenek megjegyzések:
Megjegyzés küldése