Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Praćenje induktivnih senzora sa pic16f84

[es] :: Elektronika :: Mikrokontroleri :: Praćenje induktivnih senzora sa pic16f84

[ Pregleda: 4653 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

mnn
sm

Član broj: 85435
Poruke: 723
82.208.204.*



+25 Profil

icon Praćenje induktivnih senzora sa pic16f8421.09.2008. u 17:21 - pre 188 meseci
Potrebna mi je ideja kako pratiti 6 osovina preko induktivnih senzora pomoću pic 16f84 ili pic 16f628 i asemblera.
 
Odgovor na temu

Stojan Trifunovic

Član broj: 15156
Poruke: 366
*.yu
Via: [es] mailing liste



+8 Profil

icon Re: Praćenje induktivnih senzora sa pic16f8421.09.2008. u 23:35 - pre 188 meseci
Sa ovakvim pitanjem, tesko da cete dobiti odgovor.

Koji im je izlazni oblik signala (analogni ili digitalni), koji naponski nivoi (koliko V i kakav napon za analogne, i koliko V za logicku 1 a koliko za logicku 0 za digitalne), koliko trajanje signala (u oba slucaja), ima li refleksije signala, kolika je maksimalna i minimalna frekvencija dolaska signala (brzina) koja se treba pratiti, je li potrebna regulacija brzine ili samo "pracenje" i sta uopste znaci to "pracenje". Trebate li ih pratiti na LED, LCD displeju, preko RS232 veze na kompjuteru...

Najbolje opisite ili dajte link ka senzorima, i detaljno objasnite za koju svrhu biste ih koristili, ali da to bude u malo vise recenica.

Pretpostavljam da su u pitanju industrijski senzori. Algoritam MERENJA brzine OBRTNE osovine sastojao bi se od 6 brojaca koji bi brojali impulse sa svojih senzora preko 6 ulaznih pinova. Povremeno bi se (npr. svake druge sekunde) vrednost brojaca uporedjivala sa brojacem tajmera (u interapt rutini zbog sto preciznijeg vremena), i na osnovu razlike bi se dobijala trenutna brzina osovine, AKO je ona potrebna. Istovremeno bi se brojaci inicijalizovali za sledeci ciklus merenja.
 
Odgovor na temu

VRadule
Vladimir Radulovic

Član broj: 191689
Poruke: 211
91.150.115.*



+8 Profil

icon Re: Praćenje induktivnih senzora sa pic16f8421.09.2008. u 23:39 - pre 188 meseci


Prostudiraj mehanizam interupt-a, tajmere, interrupt on change opciju na B portu i Capture
mode CCP registara, pa će ti se javiti ideja kako, a u zavisnosti od očekivanih frekvencija sa davača.

Ako su frekvencije male meri period, recimo koristeći interrupt on change na B portu koji koristiš
za aktiviranje tajmera. 4 pina na portu B imaju tu mogućnost, a možeš koristiti i RB0 interrupt.

Pretpostavljam da su očekivane frekvencije male zato što se koriste induktivni davači.



 
Odgovor na temu

mnn
sm

Član broj: 85435
Poruke: 723
82.208.204.*



+25 Profil

icon Re: Praćenje induktivnih senzora sa pic16f8422.09.2008. u 18:53 - pre 188 meseci
Ideja je da se prati okretanje osovine do 3000 0/min preko induktivnih senzora ili optičkih .
Broj osovina je šest ,praćenje u prvoj varianti je preko dvobojnih dioda ,svakim prolaskom pokraj senzora pali se led zeleno nakon prestanka okretanja osovine u roku od 3-4 sekunde led je ugašena ,a posle toga pali se crveno .Naravno pri malom broju obrtaja bilo bi vidljivo paljenje led dok kod većeg broja obrtaja vizualni efekat bio bi da je led stalno upaljena .
Ono kako sam ja pokušao nije dobro stoga što kontroler ne registruje svaki prolazak pored senzora ( trebalo bi da se kasnije omogući brojanje impulsa za broj obrtaja).
Oscilator je 20 MHz

Signali sa induktivnih senzora (ili optičkih ) dolaze na hex shmit invertor odakle sam ih vodio na PORTA .

pocetak btfss PORTA,1 ;testiramo prvu bateriju dali imamo prolazak zrna
call upis_1 ;signal treba da ima naizmenicno 1 i 0,
btfsc PORTA,1 ;svako od testiranih stanja upisujemo u poseban registar, koje kasnije umanjujemo
call upis_11

upis_1 movlw 0xFF
movwf REG_1
return

upis_11 movlw OxFF
movwf REG_11
return

Nakon testiranja svih senzora prelazimo na smanjivanja vrednosti u registrima REG_1 i REG_11 i dolaskom na nulu usmeravam program na jednu od mogućnosti : paljenje led zeleno , led ugašeno ( pin postavljen kao ulaz ) ili led crveno

prva decf REG_1 ;umanjujemo registar prve baterije niskoga stanja
skpnz ;ako je nula idemo na gašenje led diode
goto off_1 ;ako nije nula umanjujemo sledeci registar
decfsz REG_11 ;ako ni on nije nula skacemo na paljenje led zeleno
goto zeleno_1 ;uslov za zeleno led je da su oba registra razlicita od 0
goto off_1 ;ako je reg 11jednak nuli skacemo na gašenje led
goto druga

Zato pitam za neku drugu ideju mog problema pošto ovaj prvi deo program nije dobar dok drugi odrađuje paljenje zeleno , ugašeno i creveno korektno.
Prikačeni fajlovi
 
Odgovor na temu

Odin D.
Mlađi referent za automatizaciju
samoupravljanja

Član broj: 37292
Poruke: 2549



+8370 Profil

icon Re: Praćenje induktivnih senzora sa pic16f8422.09.2008. u 22:45 - pre 188 meseci
Ja nemam pojma sta se ovdje trazi.
Cini mi se da je veci problem to odgonetnuti nego rjesiti sam problem (kad bi se znalo sta je).
 
Odgovor na temu

Stojan Trifunovic

Član broj: 15156
Poruke: 366
*.yu
Via: [es] mailing liste



+8 Profil

icon Re: Praćenje induktivnih senzora sa pic16f8423.09.2008. u 09:16 - pre 188 meseci
Na osnovu vaseg koda pretpostavljam da ne poznajete dovoljno asembler da biste uspesno mogli resiti problem. Jos gore, objasnjenja su i dalje nejasna, tako da se stice utisak da ni sami ne znate sta zelite postici. Moze se ponesto pretpostaviti, ali to nije to. Buduci da niste naveli kompletan kod (sta rade potprogrami zeleno_1, off_1 i druga) niti elektricnu semu, tesko je uopste ponuditi Vam ikakvo resenje, ali bnuduci da ovakav zadatak predstavlja izazov, hajde da probam.

Imate 6 senzora. Morate brojati impulse na njima. Pretpostavicu da su impulsi dovoljne duzine za sigurnu detekciju, kako bi se izbeglo testiranje interaptima (jer nema dovoljno ulaza interapta). Ukoliko nisu, mehanicki bi mogao da se prilagodi odnos signal/pauza pomeranjem senzora blize osovini.

Kako vrsiti testiranje? U glavnom programu NEPREKIDNO testirati stanja, i po PROMENI stanja inkrementovati poseban registar (ili mozda po dva registra - sesnaestobitnim brojanjem) za svaki ulaz.

Ukoliko se pretpostavi da su na pinovima porta B svo vreme stabilni logicki nivoi, i da su senzori povezani za pinove RB0, RB1, RB2, RB3, RB4 i RB5 (namerno stavljam PORTB jer je lakse odjednom testirati ceo port, nego ceo port A i jos jedan pin sa porta B), i (takodje pretpostavi) da senzori naizmenicno salju logicku 0 i 1 na ove pinove pri svakom obrtaju, algoritam za testiranje mogao bi izgledati ovako:
Code:

      clrf      RAZLIKA
Start
      movf      PORTB,W      ; Uzimanje stanja sa porta B
      xorwf     RAZLIKA,F    ; Poredjenje sa prethodnim stanjem
      btfsc     RAZLIKA,0    ; Da li se promenilo stanje na senzoru 1?
      call      Inc_Sen_1    ; Jeste. Pozovi potprogram za inkrementaciju registra senzora 1.
      btfsc     RAZLIKA,1    ; Da li se promenilo stanje na senzoru 2?
      call      Inc_Sen_2    ;
      btfsc     RAZLIKA,2    ; ...
      call      Inc_Sen_3
      btfsc     RAZLIKA,3
      call      Inc_Sen_4
      btfsc     RAZLIKA,4
      call      Inc_Sen_5
      btfsc     RAZLIKA,5
      call      Inc_Sen_6
      goto      Start        ; Nastavi sa testiranjem iz pocetka.

U potprogramima Inc_Sen1 (do Inc_Sen_6) bi se inkrementovali registri senzora (0x00 do 0xFF) ili par registara po senzoru (0x0000 do 0xFFFF).

Onda je potrebno iz interapta izazvanih tajmerom testirati prekoracenje (unapred zadate) granice inkrementovanih vrednosti, i na osnovu toga postaviti odgovarajuce stanje LED. Na primer, ugasena za vrednosti do 0x02 (za svaki slucaj je ostavljen mali histerezis), i zelena preko ove vrednosti. Naravno, mora se voditi racuna da ne dodje do prekoracenja (zato pominjem sesnaestobitnu inkrementaciju) pre nove vrednosti interapta, kao i izabrati odgovarajuce vreme izazivanja interapta. Ovakav pristup pruza jednostavno kasnije dobijanje realne brzine.

Dalje je potrebno proveriti ima li registara senzora cije se stanje nije promenilo od prethodnog interapta (i dalje je 0x00 do 0x02). Ukoliko ima, pokrenula bi se inkrementacija dodatnog (interapt) registra samo za taj senzor. Odmah zatim, obrisati sve registre senzora.

Zatim je potrebno proveriti je li ijedan od interapt registara svih senzora presao unapred zadatu granicu (koju je potrebno proracunati za taj rok od 3-4 sekunde), i ukoliko jeste ukljuciti crvenu LED. Pri bilo kakvoj promeni registra senzora (obicnog, a ne dodatnog), resetovao bi se dodatni (interapt) registar tog senzora. Tek onda se moze izaci iz interapta.

A ukoliko bas zelite da promenom osvetljenosti zelene LED imate ikakvu predstavu o trenutnoj brzini, mozete umesto ukljucenja zelene LED iz interapta staviti da se ona ukljucuje odmah po ulasku u potprogram za inkrementaciju, i da se iskljucuje pre izlaska iz njega.

Komplikovano? Mozda. Ali, kompletan algoritam je tu. Ostalo je na Vama. Da ne ispadne da favorizujem PIC, isti algoritam se moze implementirati u bilo kom mikrokontroleru sa bar 12 U/I pinova, bar jednim tajmerom i mogucnoscu dobijanja interapta po prekoracenju tajmera (tesko da se uopste moze naci mikrokontroler sa 12 I/O pinova bez ovih mogucnosti).
 
Odgovor na temu

mnn
sm

Član broj: 85435
Poruke: 723
82.208.204.*



+25 Profil

icon Re: Praćenje induktivnih senzora sa pic16f8423.09.2008. u 16:34 - pre 188 meseci
Ipak sam ja ovo zakomplikovao.
Pre nego što analiziram Stojanovu ideju da probam pojasniti problem i kao sam ja pokušao to rešiti.

Zanemarimo izvor signala,on je naizmenično 0 ili 1 na ulazu na port mikrikontrolera.Svakom promenom stanja sa nule na jedinicu ili obrnuto treba da se pali dvobojna led dioda sa dva pina u zeleno i da sija recimo 1/2 sek. Nakon toga led zeleno se gasi i čeka se sledeća naizmenična promena stanja na ulazu da bi ponovno bila upaljena led zeleno .Ako vreme menjanja stanja bude duže od 3 sek pali se crvena led.
Gašenje led sam zamislio postavljenjem odgovarajućeg pina kao ulaz.

Prilažem kompletan kod za dva senzora ( u primeru su optički senzori ) da nebi prepisivao sve šest puta . Problem je u testiranju stanja na ulazima dok ostali deo programa radi .


Prikačeni fajlovi
 
Odgovor na temu

mnn
sm

Član broj: 85435
Poruke: 723
217.169.223.*



+25 Profil

icon Re: Praćenje induktivnih senzora sa pic16f8413.10.2008. u 18:51 - pre 188 meseci
Problem rešen uz pomoć Stojanove ideje sa upotrebom interapta izazvanog tajmerom i preradom postojećeg koda.
Pozdrav
 
Odgovor na temu

[es] :: Elektronika :: Mikrokontroleri :: Praćenje induktivnih senzora sa pic16f84

[ Pregleda: 4653 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.