pic 16f84 i mini-lift

Rasprava o PIC mikrokontrolerima, PIC projekti i drugo vezano za PIC-eve...

Moderators: pedja089, stojke369, [eDo], trax

Post Reply
milanbp
Pocetnik na forumu
Pocetnik na forumu
Posts: 34
Joined: 27-02-2010, 15:41

pic 16f84 i mini-lift

Post by milanbp »

Pozdrav drugari.Pravim mini-lift, sa tri nivoa,tj tri sprata. imam 6 ulaza -komandi od kojih su 3 tastera za pozivanje (gde da lift ide,na koji sprat) a tri su tj krajnji prekidaci tj senzori gde lift treba da stane kada mu se zada komanda tasterima. Dva su izlaza koja pale jednu ili drugu sklopku tj smer motora-gore,dolE.Senzori su klasicni prekidaci-mehanicki aktivirani kad lift dodje do njih.Ovako sam zamislio pocetak koda,pa vas molim da mi pomognete i uputite dalje sta i kako.Evo i uproscene seme kako bi to izgledalo

Code: Select all

OUTPUT PORTB.7
OUTPUT PORTB.6
INPUT PORTB.5
INPUT PORTB.4
INPUT PORTB.3
INPUT PORTB.2
INPUT PORTB.1
INPUT PORTB.0
 SYMBOL MOTORG= PORTB.7  ;pali relej -motor na gore
 SYMBOL MOTORD= PORTB.6  ;pali relej-motor na dole
SYMBOL TASTER0=PORTB.0  ;taster za komandu da lift ide na 0 sprat
SYMBOL TASTER1=PORTB.1  ;taster za komandu da lift ide na 1 sprat
SYMBOL TASTER2=PORTB.2  ;taster za komandu da lift ide na 2 sprat
 SYMBOL SENZOR0=PORTB.3  ;senzor da se zaustavi lift kad dodje na 0 sprat
 SYMBOL SENZOR1=PORTB.4  ;senzor da se zaustavi lift kad dodje na 1 sprat
 SYMBOL SENZOR2=PORTB.5  ;senzor da se zaustavi lift kad dodje na 2 sprat

Code: Select all

http://imageshack.us/photo/my-images/805/liftm.jpg/
User avatar
informaticar
Odlično uznapredovao
Odlično uznapredovao
Posts: 588
Joined: 09-12-2008, 16:31
Location: Velika Kopanica - Slavonski Brod

Re: pic 16f84 i mini-lift

Post by informaticar »

Pa dobro si sa kodom počeo ali kod sheme bi se dalo par stvari prepraviti, recimo ja bi otpornike kod tipkala stavio na gnd, a tipkala na +5V tako će ti biti jednostavnije programirati jel kad pogledaš sada kod npr. naredbe if kada je tipkalo stisnuto morao bi napisati ovako:

Code: Select all

IF portb.5 = 0 THEN
a kada ti su tipkala na +5V tada ne moraš raditi naopačke nego

Code: Select all

IF portb.5 = 1 THEN
otpornici prema gnd trebaju zato što kod pic-a nekad brljavi stanje tipkala nekada u trenutak se dogodi ispadne kao da je stisnuto (to je zbog visokih frekvencija u pic-u) i kada se dogodi da na primjer u krugu imaš lcd ta se pojava često vidi, ne diraš taster, a on na ekranu mijenja stanja kao da si ga na trenutak stisao i to bi te moglo zajebavati...
btw. nemoj zaboraviti one zavojnice motora spojiti na napon...
milanbp
Pocetnik na forumu
Pocetnik na forumu
Posts: 34
Joined: 27-02-2010, 15:41

Re: pic 16f84 i mini-lift

Post by milanbp »

Ma da, ok za to 0 ili 1... nije mi to problem, kao i fizicki izvesti semu...Kod je problem.Napisao sam nesto,mada kontam da nije to dobro,previse sam ga iskomplikovao...evo da vidite

Code: Select all

output PORTB.7
OUTPUT PORTB.6
INPUT PORTB.5
INPUT PORTB.4
INPUT PORTB.3
INPUT PORTB.2
INPUT PORTB.1
INPUT PORTB.0
 SYMBOL MOTORG= PORTB.7  ;pali relej -motor na gore
 SYMBOL MOTORD= PORTB.6  ;pali relej-motor na dole
SYMBOL TASTER0=PORTB.0  ;taster za komandu da lift ide na 0 sprat
SYMBOL TASTER1=PORTB.1  ;taster za komandu da lift ide na 1 sprat
SYMBOL TASTER2=PORTB.2  ;taster za komandu da lift ide na 2 sprat
 SYMBOL SENZOR0=PORTB.3  ;senzor da se zaustavi lift kad dodje na 0 sprat
 SYMBOL SENZOR1=PORTB.4  ;senzor da se zaustavi lift kad dodje na 1 sprat
 SYMBOL SENZOR2=PORTB.5  ;senzor da se zaustavi lift kad dodje na 2 spraT
 POCETAK0:
 LOW MOTORG   ;ugasen relej za gore
 LOW MOTORD   ;ugasen relej za dole
 IF TASTER0=0 AND SENZOR0=0 THEN
 GOTO POCETAK1
 ENDIF
 POCETAK1:
 LOW MOTORG  ;ugasen relej za gore
 LOW MOTORD   ;ugasen relej za gore
 IF TASTER1=0 AND SENZOR1=0 THEN 
 GOTO POCETAK2
 ENDIF
 POCETAK2:
 LOW MOTORG ;ugasen relej za gore
 LOW MOTORD ;ugasen relej za gore
 IF TASTER2=0 AND SENZOR2=0 THEN
 GOTO START1
 ENDIF
 START0:
 IF TASTER0=0 AND (SENZOR1=0 OR SENZOR2=0) THEN
 HIGH MOTORD
 ELSE
 GOTO START1
 ENDIF
 IF SENZOR0=0 THEN
 LOW MOTORD
 ENDIF
 GOTO START1
 START1:
 IF TASTER1=0 AND (SENZOR0=0 OR SENZOR2=1) THEN
 HIGH MOTORG
 ELSE
 GOTO START2
 ENDIF
 IF SENZOR1=0 THEN
 LOW MOTORG
 ENDIF
 GOTO START2
 START2:
 IF TASTER1=0 AND (SENZOR0=1 OR SENZOR2=0) THEN
 HIGH MOTORD
 ELSE
 GOTO START3
 ENDIF
 IF SENZOR1=0 THEN
 LOW MOTORD
 ENDIF
 GOTO START3
 START3:
 IF TASTER2=0 AND (SENZOR0=0 OR SENZOR1=0) THEN
 HIGH MOTORG
 ELSE
 GOTO POCETAK0
 ENDIF
 IF SENZOR2=0 THEN
 LOW MOTORG
 ENDIF
 GOTO POCETAK0
Post Reply