Hektometar

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

Moderators: pedja089, stojke369, [eDo], trax

zeljkogelic
Pocetnik na forumu
Pocetnik na forumu
Posts: 46
Joined: 29-01-2013, 00:44

Hektometar

Post by zeljkogelic »

E ovako hteo bih da napravim hektometar pomocu pic-a, da radi na hall senzor, sad sve sam smislio kao obican brojac ali da mi umesto 1 od koje krece sabira 0.0048 + 0'0048 i svaki inpuls da mi vrednuje kao 0,0048m tj svaki put kad se okrene osovina da mi se poveca brojac za 0.0048. Unapred hvala.
User avatar
WhiteHead
Pravi forumaš
Pravi forumaš
Posts: 1627
Joined: 28-06-2007, 18:36
Location: 75,35k; B&H

Re: Hektometar

Post by WhiteHead »

Wiki kaže: "Hektometar je mjerna jedinica za dužinu koja iznosi stotinu metara."
Pa mi tu nije baš jasno šta želiš napraviti.
Btw, svaki PLC ima svoje specifične funkcije, pa ukoliko želiš da ti neko pomogne oko programa trebaš navesti o kom se radi.
Ako kaniš pobijediti, ne smiješ izgubiti
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Hektometar

Post by pedja089 »

Ne pise PLC nego PIC :)
Sto se tice programa PBP direktno ne podrzava rad sa decimalnim brojevima.
Postoji u asembleru FloatingPoint biblioteka, koja moze da se koristi i u PBP, ali je prilicno komplikovana.
Jednostavno umesto 0.048, sabiraj 48, i to je to. prikazi ga na displeju kako oces.
Ili sabiraj po 1, ali rezultat podeli ili pomnozi sa necim da izgleda isto.
Ono sta je tu problem je sto na 16F picevima maksimalni broj je 65535.
Mozes napraviti brojac gde svaki bajt predtavlja 2 cifre 00-99, kada on dodje do 100 uvecavas sledeci bajt itd. Mislim da ima negde takav primer na forumu.
User avatar
Black
Odlično uznapredovao
Odlično uznapredovao
Posts: 981
Joined: 17-12-2008, 15:44

Re: Hektometar

Post by Black »

16F PIC nema long varijablu? Odnosno 32 bitnu?

Ja bi to ovako: hall senzor spojit na interupt, svaki put kad hall okine povećaj brojač za 1
I kasnije na LCD ispisuješ:

Metri=brojac×0.0048;

Vrlo jednostavno
zeljkogelic
Pocetnik na forumu
Pocetnik na forumu
Posts: 46
Joined: 29-01-2013, 00:44

Re: Hektometar

Post by zeljkogelic »

probacu tako da uradim ali problem mi je.kako da racuna kada prebacim tipa.na.drugi prekidac kako da.nastavi da racuna.i dalje od.stare vrednosti koju je dostigao tipa.da sam izracunao 40Ha i.sad da prebacim da.mi racuna od.0.0024 al da nastavi na.tih 40Ha
zeljkogelic
Pocetnik na forumu
Pocetnik na forumu
Posts: 46
Joined: 29-01-2013, 00:44

Re: Hektometar

Post by zeljkogelic »

moja zamisao tog hektometra je.da.ima 2 prekidaca da jedan prekidac meri celu kosu kombaja koja je 0.0048Ha u jednom impulsu i kada prebacim na.prekidac 2 da mi meri pola tog inpulsa tj da impuls bude 0.0024 ali da nastavi na staru vrednost, postavicu vam semu i kod.koji sam do sada napisao...prekidace sam odvojio pomocu if funkcije i prebacivanja na labelu celakosa.i pola.kose tipa.ako je ukljicena prekodac.za celu kosu on ga prebacuje u taj deo programa gde racunam sa 0.0048 ili ako je prekida 2 upaaljen da racuna sa 0.0024.
zeljkogelic
Pocetnik na forumu
Pocetnik na forumu
Posts: 46
Joined: 29-01-2013, 00:44

Re: Hektometar

Post by zeljkogelic »

Code: Select all

 
DEFINE LCD_BITS 4
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 4
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 2
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 3
DEFINE LCD_LINES 2
pause 100 
symbol HALL= PORTA.2
Symbol SW = PORTA.7
symbol SW1= PORTA.6
TRISA=1
TRISB=0
input hall 
input sw
input sw1 
i var byte
i=0
b Var byte 
b=0
lcdout $FE, 1 
pocetak: 
if SW = 1 then Celakosa
if sw1= 1 then polakose
pause 100
goto pocetak 


CelaKosa:
if hall=0 then 
i=i+48
Lcdout $fe,1, "ukupno:", DEC ( i  /1000),DEC4     i, "Ha"
pause 1000
endif
goto celakosa



PolaKose:
if Hall = 0 then 
b=b+48
Lcdout $fe, $C0, " ", DEC ( b  /1000), ".", DEC4     b, "Ha"
pause 2000
endif
goto polakose

end


zeljkogelic
Pocetnik na forumu
Pocetnik na forumu
Posts: 46
Joined: 29-01-2013, 00:44

Re: Hektometar

Post by zeljkogelic »

User avatar
Black
Odlično uznapredovao
Odlično uznapredovao
Posts: 981
Joined: 17-12-2008, 15:44

Re: Hektometar

Post by Black »

'b' i 'i' varijabla su ti postavljene kao byte. Što znači da mogu brojit do 255 i tada opet se vraćaju na nulu.
Te varijable trebaju bit 'interger'(brojit ce do 65655) ili 'long' ako to pic podržava
zeljkogelic
Pocetnik na forumu
Pocetnik na forumu
Posts: 46
Joined: 29-01-2013, 00:44

Re: Hektometar

Post by zeljkogelic »

a kako bih mogao da postavim neku funkciju da kada prebacim na prekodac za pola kose da nastavi da racuuna od prethodnog.stanja, tipa ako.sam.sa.celom kosom uradio 40ha i onda prebacim na pola.kose i da mi racunanje.krene od.40ha
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Hektometar

Post by pedja089 »

Izgleda da si se vodio onim, zasto jednostavno kad moze komplikovano. Pauza imas i previse... Nadji kako se detektuje prelazak sa 1 na 0 ili obrnuto, to ima na forumu.

Code: Select all

.... 
i var word
pocetak:
    novostanje=hall
    if novostanje<starostanje then
        if SW = 1 then i=i+48
        if sw1= 1 then i=i+24
        Pause 100'ovde moze mala pauza ako koristis reed ili tako nesto, ako koristis hall mislim da debounce ne reba za njega
    endif
    starostanje=novostanje
    Lcdout $fe,1, "ukupno:", DEC ( i  /1000),DEC4     i, "Ha"
goto pocetak
end
EDIT:
Bila je greska u kodu
starostanje=hall
a treba da bude
starostanje=novostanje
zeljkogelic
Pocetnik na forumu
Pocetnik na forumu
Posts: 46
Joined: 29-01-2013, 00:44

Re: Hektometar

Post by zeljkogelic »

Momci Hvala vam puno.
zeljkogelic
Pocetnik na forumu
Pocetnik na forumu
Posts: 46
Joined: 29-01-2013, 00:44

Re: Hektometar

Post by zeljkogelic »

Sta sam primetio kada racuna sa celom kosom tj i=i+48 , i onda prebacim na prekidac sw1 ili ti pola kose on mi racuna 72
zeljkogelic
Pocetnik na forumu
Pocetnik na forumu
Posts: 46
Joined: 29-01-2013, 00:44

Re: Hektometar

Post by zeljkogelic »

znaci svaki inpuls mi racuna kao 72
User avatar
Black
Odlično uznapredovao
Odlično uznapredovao
Posts: 981
Joined: 17-12-2008, 15:44

Re: Hektometar

Post by Black »

Ne razumijem se u taj jezik toliko, pa nemogu nac grešku zašto ti duplo zbraja. Možda hall ostane duže upaljen pa ti ove dvije sekunde nisu dovoljne jer se kombajn sporo vrti ili prebrzo...

Pitaš kako će ukupno sve zbrojit? Pa probaj ić nekom logikom... Dodaš još jednu varijablu... Slikovito objašnjeno
Marko i jura bacaju kamen
Imaš tri varijable marko_bacio_kamenja
Jura_bacio_kamenja
Svekupno_baçeno_kamnjea

If jura bacio kamen then jura_bacio_kamen+1
Svekupno_baceno_kamena+1

If mArko_bacio_kamnenja the marko_bacio_kamen+1
Sveukuno_baceno_kamenja +1
zeljkogelic
Pocetnik na forumu
Pocetnik na forumu
Posts: 46
Joined: 29-01-2013, 00:44

Re: Hektometar

Post by zeljkogelic »

aha skontao sam, ali jos uvek nmg da skontam.zasto mi kada prebacim na.pola kose.ne.racuna.+24 nego.72 :(
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Hektometar

Post by pedja089 »

Koliko je 24+48?
Ne iskljucis prvi ulaz, kad ukljucis drugi...
User avatar
Black
Odlično uznapredovao
Odlično uznapredovao
Posts: 981
Joined: 17-12-2008, 15:44

Re: Hektometar

Post by Black »

Peđa jel ovdje potrebno koristit funkciju 'goto'
U C-u ja je izbjegavam jer kad ih se više koristi lako se pogubi.
Može li se stavit jedan
While(1) i pičiš s programom da se stalno vrti u jednoj petlji?
User avatar
pedja089
Administrator sajta
Administrator sajta
Posts: 7877
Joined: 20-02-2007, 14:50
Location: Beočin -Srbija

Re: Hektometar

Post by pedja089 »

While 1 ili goto na labelu mu dodje jedno te isto.
User avatar
Black
Odlično uznapredovao
Odlično uznapredovao
Posts: 981
Joined: 17-12-2008, 15:44

Re: Hektometar

Post by Black »

Da ali on u svakoj petlji koristi goto
Kako on uspije izać iz ove petlje?
Imagefr*e screen capture software
Post Reply