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

Inkrementalni opticki enkoder

[es] :: Elektronika :: Inkrementalni opticki enkoder

Strane: 1 2

[ Pregleda: 6724 | Odgovora: 26 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

diwljina
Beograd, Srbija

Član broj: 286033
Poruke: 20
*.dynamic.sbb.rs.



+12 Profil

icon Inkrementalni opticki enkoder23.04.2015. u 13:40 - pre 109 meseci
U pitanju je Balluff inkrementalni enkoder sa 2+1 kanalom i 2000 markera.

Interesuje me neki algoritam na osnovu kog mogu odrediti:
1. detektovanje smera obrtanja osovine enkodera
2. brzinu obrtanja osovine rotacionog enkodera
3. ogranicenje za 2000 markera

Gledao sam na netu ali nema nista ilustrovanom samo kodovi, za pic, arduino, ili neki drugi mikrokontroler i to u assembleru ili nekom drugom jeziku.
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3871
31.223.133.189



+334 Profil

icon Re: Inkrementalni opticki enkoder23.04.2015. u 15:21 - pre 109 meseci
1 Ako se signal prvo pojavi na A pa na B okrece se u jednu stranu, ako se okrece kontra onda se prvo pojavi signal na B pa na A.
2. Brzinu moes odrediti na vise nacina.
2a. nadjes prvi izvod signala ( bilo A bilo B)
2b. mjeris vrijeme izmedju dva signala
2c. brojis signale u nekoj jedinici vremena.

3 mi nije jasno.
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4543

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+530 Profil

icon Re: Inkrementalni opticki enkoder23.04.2015. u 15:50 - pre 109 meseci
Ajde ti to nama malko lepše objasni, ono pod 3.
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

diwljina
Beograd, Srbija

Član broj: 286033
Poruke: 20
*.dynamic.sbb.rs.



+12 Profil

icon Re: Inkrementalni opticki enkoder23.04.2015. u 16:10 - pre 109 meseci
Ovo pod 1. i 2. razumem ali mi se u kodu nesto ne slaze. Odnosno, problem je kod mene ili do hard ili softv. Sto se tice 3. stavke....

3. Npr Kanal A i B naprave zajedno po 2000 impulsa po krugu, zar ne ?
Ako okrenem 2 kruga i polovinu treceg kruga , oni naprave 5000 imp i 2 imp od R kanala, s toga bih hteo da ispis te neke pozicije izgleda ovako:
+2 rot : 1000 imp 180* ( * je stepeni ) ili - 2 rot : - 1000 imp = 180*.

Elem, pitao sam vas za ovo pod 1 i 2, zbog toga sto koristim procesor koji moze da hvata rastuce i opadajuce ivice . Tako da od 2 000 imp, ja mogu dobiti rezoluciju od
8 000 . ( 2 x 2000 - rastuca i opadajuca A ) + ( 2 x 2000 - rastuca i opadajuca B ) ucetvorostrucenu preciznost dobijam.

Tako da, ako bih koristio ovu metodu dobijanja preciznost, mislim da mi ovo komplikuje pisanje, zar ne ?
 
Odgovor na temu

mikikg
System administrator
Srbija

Član broj: 3779
Poruke: 5059
*.dynamic.isp.telekom.rs.

Sajt: yu3ma.net


+505 Profil

icon Re: Inkrementalni opticki enkoder23.04.2015. u 16:23 - pre 109 meseci
Koji MCU koristis i koji kompajler za programe?
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
 
Odgovor na temu

diwljina
Beograd, Srbija

Član broj: 286033
Poruke: 20
*.dynamic.sbb.rs.



+12 Profil

icon Re: Inkrementalni opticki enkoder23.04.2015. u 16:32 - pre 109 meseci
Koristim Arm7 mikrokontroler i uVision4.

Da li bi te petlje za detektovanje smera trebale da budu tipa if, while ili ???

Ja sam pokusao nesto poput ovoga :

If ( kanal A ==1 ) // desilo se dogadjaj
if ( kanal B ==1) // takodje i ovde
i++;
if(kanal B==1)
if (kanal A==)
i--;


Ali ne valja bas ovo...
 
Odgovor na temu

yugaja
BG

Član broj: 18381
Poruke: 402
*.dynamic.sbb.rs.

Sajt: yugaja.co.nf


+4 Profil

icon Re: Inkrementalni opticki enkoder23.04.2015. u 21:00 - pre 109 meseci
Ja za rot. encodere koristim rutinu koju sam pre puno godina pronasao... U osnovi je kao sa linka: http://www.circuitsathome.com/...ding-rotary-encoder-on-arduino kombinacija lookup tabele i sitnog racuna u dva reda.. Mislim da je originalna ideja iz glave nekog rusa i radi za sve novce...

EDIT: izgleda da sam okacio link bas od tog rusa...Nisam ni citao detaljno tekst kad ono...Sta ce covek svi su na arduinu sada :)
R Tape loading error, 0:1
 
Odgovor na temu

diwljina
Beograd, Srbija

Član broj: 286033
Poruke: 20
*.dynamic.sbb.rs.



+12 Profil

icon Re: Inkrementalni opticki enkoder23.04.2015. u 21:57 - pre 109 meseci
Ja sam ovo video jos preksinoc...U tom trenutku mi se nije cinilo korisnim. Iskren da budem, ni sada mi se ne cini korisnim, ali cu zbog Vaseg posta pogledati.
Nadam se da ce mi pomoci.
ps. ako jos neko ima neke korisne linkove-preporuke, nek okaci ovde. Unapred se zahvaljujem
 
Odgovor na temu

mikikg
System administrator
Srbija

Član broj: 3779
Poruke: 5059
*.dynamic.isp.telekom.rs.

Sajt: yu3ma.net


+505 Profil

icon Re: Inkrementalni opticki enkoder23.04.2015. u 22:30 - pre 109 meseci
Na brzinu sam pogledao spomenuti link i program. Izgleda korektno jer koristi malu look-up tablicu.
Naravno moras da ga prepakujes u sintaksu pogodnu za C++ / uVision4.

Mozda ti nije bio interesantan na prvi pogled jer je malo slozeniji program ali to inace NE MOZE jednostavno da se resi!
Zaguljena je malo ta logika posebno kada se operise sa obe (uzlazne i silazne) ivice signala.
Komplikovano je jer ima vise potencialnih stanja i recimo ako ti se enkoder zalomi izmedju dva markera na disku pa promeni smer moze pogresno da ti detektuje i "proguta" informaciju.
Ovakvi algoritmi sa look-up tablicom bi trebali apsolutno tacno da rade (jer prate sta je bilo predhodno stanje) bez gubljenja informacija.
Site about Software Defined Radio – SDR
http://yu3ma.net/
https://github.com/yu3ma
On-line LM317 kalkulator
 
Odgovor na temu

diwljina
Beograd, Srbija

Član broj: 286033
Poruke: 20
*.dynamic.sbb.rs.



+12 Profil

icon Re: Inkrementalni opticki enkoder24.04.2015. u 02:15 - pre 109 meseci
Hvala Vam na pozrtvovanju ali iskreno ja nista nisam tamo razumeo. Procitao sam ono, preveo, i nista...
 
Odgovor na temu

ZAS011
Uzgajivač šargarepe izakuće
Vanuatu

Član broj: 288510
Poruke: 4543

ICQ: 8713400
Sajt: www.justfuckinggoogleit.c..


+530 Profil

icon Re: Inkrementalni opticki enkoder24.04.2015. u 05:57 - pre 109 meseci
Ako ti ništa nije jasno, kreni sa učenjem C++ iz početka.
Ako si početnik, kreni od prostijih programčića pa lagano na teže.
--
Make no mistake between my personality and my attitude.
My personality is who I am.
My attitude depends on who you are.
 
Odgovor na temu

diwljina
Beograd, Srbija

Član broj: 286033
Poruke: 20
*.dynamic.sbb.rs.



+12 Profil

icon Re: Inkrementalni opticki enkoder24.04.2015. u 18:57 - pre 109 meseci
Da li mislis da je normalno uciti c++ koji u principu objektno orijentisano programiranje ? Slozen je veoma i tezak za ucenje. Znam C jezik i to sasvim dovoljno za ovaj zanat. Zbog jednog enkodera ja trebam da ucim novi - drugi jezik ? Pa ne radim ja svaki dan sa enkoderima, nisam ja fabrika ...
 
Odgovor na temu

ColdKeyboard
Sasa Karanovic
Hardware and Firmware Engineer
Toronto, Canada

Član broj: 31924
Poruke: 868
*.dynamic.sbb.rs.

Jabber: ColdKeyboard
Sajt: www.SasaKaranovic.com


+11 Profil

icon Re: Inkrementalni opticki enkoder24.04.2015. u 19:25 - pre 109 meseci
Kod koji ti je dat je napisan u cistom C-u, vrlo je jasan, pregledan i elegantno napisan. Drugo nema razloga da napadas ljude zato sto su ti dali primjer/savjet a ne gotov kod koji mozes copy&paste i da radi u tvom primjeru.

Ako te interesuje kako izgledaju signali sa tog enkodera imas recimo Microchip Quadrature Encoder Interface app note koji pored podesavanja i primene
na PIC-u pokazuje i algoritam rada sa vremenskim dijagramima i objasnjenjima, sve sazvakano.

1. Koji kod si napisao i ne radi?
2. Sta ti nije jasno na ovom linku sto si vec dobio? Ako znas C, uzmi razlozi kod na delove, idi liniju po liniju i gledaj sta bi trebalo da dobijes kao rezultat funkcije read_encoder() i kako ona radi.
3. Reci da je C++ tezak i kompleksan jezik je isto da kazes da je 50kg puno.

Ako ti se ne svidja sto su svi dusmani i niko nece da napise gotov kod pa da uradis samo copy&paste nego svi cekaju da vide tvoj kod pa da ti onda pomognu, predlazem da temu pokrenes na Berza poslova, tamo ce ti sigurno neko pomoci, ali za pare. :)
 
Odgovor na temu

diwljina
Beograd, Srbija

Član broj: 286033
Poruke: 20
*.dynamic.sbb.rs.



+12 Profil

icon Re: Inkrementalni opticki enkoder24.04.2015. u 20:07 - pre 109 meseci
Prvo ne ljutim se ali predlog koji mi je predlozio je stvarno... Da mi je rekao-preporucio da proucim rad enkodera ili da potrazim nesto drugo, pa ok...Ali ovo...
Kao kada trazis pitanje na forumu i pitas nekog da li neko zna kako se puni akumulator, a neko ti odg idi upisi srednju skolu za automehanicara.

Znam kako izgledaju signali video sam ih na osciloskopu.

Stavio sam u IRQ rutini da mi detektuje ivice i on to uradi...Sada treba neki algoritam koji ce kada se desi interapt (stigne impuls) videti stanje na drugom kanalu i uporediti ih i u zavisnosti inkrementirati ili dekrementirati.
Ja sam to uradio sa 2 glavne if petlje i u svakoj if petlji sam sa if petljom ispitao stanje drugog kanala i non stop mi se inkrementira ili dekrementira.

Sve razumem ali mi nije mi jasno od 31. - 37.
Ne moras puno filozofirati, ako znas c++ onda i sam znas koliko si ucio i da li je lako. C jezik je svakome laksi nego C++.
Ja mislim da nikome nisam trazio gotov kod sa copy-paste. Ja kod mogu okaciti ali mislim da ce malo vas razumeti jer je sastavljen od registara, nije prost kao arduino.
Ja sam trazio-zamolio algoritam, ne kod ! Znaci smisao, predlog, neku sliku kao ilustraciju. video neki itd... Tu rec DUSMANI nisam ovde izgovorio, ti si je izgovorio !
 
Odgovor na temu

zica49
Ivica Antolović E74ZI
44°50′N 18°03′E

Član broj: 3011
Poruke: 4673
*.team.ba.

ICQ: -27


+1146 Profil

icon Re: Inkrementalni opticki enkoder24.04.2015. u 20:23 - pre 109 meseci
Okaci kod da vidimo.
Ja sam iz BiH sporo "kontam"pa molim za razumijevanje!
 
Odgovor na temu

diwljina
Beograd, Srbija

Član broj: 286033
Poruke: 20
*.dynamic.sbb.rs.



+12 Profil

icon Re: Inkrementalni opticki enkoder24.04.2015. u 20:39 - pre 109 meseci
Povezao sam enkoder na motor pa pored tolikog kod-a kacim samo interapt rutinu jer u njoj to radim.

#define MR0I_CHANNEL_A (1<<4)
#define MR0I_CHANNEL_B (1<<5)
------------------------------
__irq void T0ISR(void) // kada se desi interapt ...
{
static int value;
int vrednost;
char jbuffer [20];

value = T0IR;
snprintf(jbuffer,20,"%d",vrednost);

// ako stigne impuls na kanal a ( a kanal a je port na mcu) , i ako stigne impuls na kanal b, inkrementiraj vrednost pozicije
if( T0IR & MR0I_CHANNEL_A )
{
if( T0IR & MR0I_CHANNEL_B)
vrednost++;
}

// ako stigne impuls na kanal b ( a kanal a je port na mcu) , i ako stigne impuls na kanal a, dekrementiraj vrednost pozicije
if( T0IR & MR0I_CHANNEL_B )
{
if( T0IR & MR0I_CHANNEL_A)
vrednost--;
}
UART0_Ispisi_Tekst(MOJTIP jbuffer);
/*ovde ide jos neki kod ali nije vazan, vezano je za resetovanje itd... ne krijem nista, da ne mislite, vec sam kacio na drugim forumima kod pa su mi trazili samu srz*/
}
 
Odgovor na temu

goran_68

Član broj: 89012
Poruke: 932
*.dynamic.isp.telekom.rs.



+81 Profil

icon Re: Inkrementalni opticki enkoder24.04.2015. u 20:57 - pre 109 meseci
Ovoliki kod u prekidnoj rutini nije dobra praksa. Pogotovo tu nema mesta ovoj serijskaoj komunikaciji. To se sve radi kada izađeš iz prekidne rutine. Prekidna rutina samo beleži šta se i kad dogodilo. Sve ostalo ide van.

Ovo nikako ne ide ovako:

Code:

// ako stigne impuls na kanal a ( a kanal a je port na mcu) , i ako stigne impuls na kanal b, inkrementiraj vrednost pozicije
if( T0IR & MR0I_CHANNEL_A ) 
{    
if( T0IR & MR0I_CHANNEL_B)
vrednost++;
}


Moraš da imaš prethodno stanje (kada je stigao neki signal) i sadašnje. Upoređivanjem određuješ šta se dogodilo.

Probaj kod sa linka koji si dobio.
gorankg
 
Odgovor na temu

ColdKeyboard
Sasa Karanovic
Hardware and Firmware Engineer
Toronto, Canada

Član broj: 31924
Poruke: 868
*.dynamic.sbb.rs.

Jabber: ColdKeyboard
Sajt: www.SasaKaranovic.com


+11 Profil

icon Re: Inkrementalni opticki enkoder24.04.2015. u 20:59 - pre 109 meseci
Ne znam kako su ti podeseni interrup-i, trebalo bi da su interrupt on change, tj. i na silaznu i na uzlaznu ivicu od oba ta kanala.

Ako su ti na istom portu svi pinovi, posmatraj ih sve istovremeno.

Takodje treba da imas uvid u prethodno stanje + trenutno stanje, na osnovu toga racunas da li se motor vrti na jednu ili na drugu stranu.
Ako hoces brzinu, onda pored prethodnog stanja dodas i neki tajmer, kada se desi interrupt zapises vreme, u sledecem interrupt-u uzmes novo vreme - staro i dobio si koliko je vremena proslo, a na osnovu pozicije enkodera znas koliko se motor pomerio, podelis predjeni put sa vremenom i imas brzinu.

Kako ti se zove port na kome su ti nakaceni ulazni signali enkodera i kako si podesio interrupt?
 
Odgovor na temu

diwljina
Beograd, Srbija

Član broj: 286033
Poruke: 20
*.dynamic.sbb.rs.



+12 Profil

icon Re: Inkrementalni opticki enkoder24.04.2015. u 22:54 - pre 109 meseci
Obojica ste u pravu. Ne razumem ovaj deo sa linka od 31. do 37 linije koda.

U interaptu sam ja podesio kada stigne impuls, kakav god. Ali ja mogu da stavim (MISLIM) ali to nisam uspeo jos, da kada stigne rastuca ili opadajuca ivica da se desi irq.
Nisu port 2 je a , port 4 je b, port 6 je I...

Taj uvid ne znam kako, jer ja ga restartujem i postavim na 0, a sto se tice brzine to znam, to nije tesko...
 
Odgovor na temu

veselinovic
Jovan Veselinovic
Ist. Sarajevo

Moderator
Član broj: 7761
Poruke: 3871
31.223.133.244



+334 Profil

icon Re: Inkrementalni opticki enkoder25.04.2015. u 06:47 - pre 109 meseci
Ja bih razmisljao malo o hardverskim poboljsanjima.
Recimo, stavio bih jedno EXOR kolo, na ulaze doveo A i B. Na izlazu dobijem signal za interapt.
Ima jos hardverskih mogucnosti za dalju obradu interapta, pa bi se moglo dobiti dva signala
X i Y, gdje je X inkrementiranje a Y dekremntirane.
Probaj nije tesko.
Evo ti ideja za interapt signal.
U eri mikrokontrolera cesto se zaboravi digitalna elektronika, a moze mnogo pomoci.
Prikačeni fajlovi
 
Odgovor na temu

[es] :: Elektronika :: Inkrementalni opticki enkoder

Strane: 1 2

[ Pregleda: 6724 | Odgovora: 26 ] > FB > Twit

Postavi temu Odgovori

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