detektor fazy (?)
Masz problem? Zapytaj na forum elektroda.pl
From: <iwashington_at_nospam_poczta.onet.pl>
Subject: detektor fazy (?)
Date: 20 Feb 2002 13:16:04 +0100
Kupilem cos takiego, podobne do potencjometru, 3 nozki, 30 krokow.
Ma ktos program na 51 do obslugi? Napisalem juz program(liczy liczbe przekrecen
i dekoduje kierunek), ale cosik jest zle. Bede wdzieczny za kazda wskazowke!
P.S. Jak nazwac ten element? (jego nazwa chocby po Ang.)
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
From: Marek Lewandowski <locust_at_nospam_poczta.onet.pl>
Subject: Re: detektor fazy (?)
Date: Wed, 20 Feb 2002 13:42:08 GMT
<iwashington_at_nospam_poczta.onet.pl> wygenerował manualnie w wiadomości
<5b9e.00000147.3c739383_at_nospam_newsgate.onet.pl> udostępnionej publicznie
dnia 20 Feb 2002 13:16:04 +0100 co następuje:
Kupilem cos takiego, podobne do potencjometru, 3 nozki, 30 krokow.
Ma ktos program na 51 do obslugi? Napisalem juz program(liczy liczbe przekrecen
i dekoduje kierunek), ale cosik jest zle. Bede wdzieczny za kazda wskazowke!
P.S. Jak nazwac ten element? (jego nazwa chocby po Ang.)
Enkoder obrotowo-impulsowy
enkoder kwadraturowy lub enkoder inkrementalny oraz tp. (to zalezy od
postaci sygnału wyjściowego).
Nie napisałeś co jest źle, więc trochę trudno zgadnąć. Może problemy z
drganiami styków (jeśli to mechaniczne)?
--
Marek Lewandowski ICQ# 10139051
locust_at_nospam_poczta.onet.pl
http://locust.republika.pl
From: <iwashington_at_nospam_poczta.onet.pl>
Subject: Re: detektor fazy (?)
Date: 21 Feb 2002 12:38:00 +0100
Enkoder obrotowo-impulsowy
enkoder kwadraturowy lub enkoder inkrementalny oraz tp. (to zalezy od
postaci sygnału wyjściowego).
Nie napisałeś co jest źle, więc trochę trudno zgadnąć. Może problemy z
drganiami styków (jeśli to mechaniczne)?
--
> Marek Lewandowski ICQ# 10139051
> locust_at_nospam_poczta.onet.pl
> http://locust.republika.pl
Mój program do obslugi zwraca ilosc przekrecen z bitem kierunkowym. Problem w
tym, ze zlicza dobrze tylko w jedna strone. W druga znacznie gorzej. Na
papierze wszystko jest w porzadku :-(
Zeby wyeliminowac drgania dalem mu opoznienie 1 ms.
Czy mozliwe jest, ze procesor nie wyrabia z obsluga? Dziala na 51 z 11 Mhz
ASMa nie moge podac, bo go w tej chwili nie mam.
Dzieki wszystkim za wskazowki!
Pozdrawiam,
p.s. W koncu szlag mnie trafi i kupie tego ALPSa. Ile cos takiego kosztuje?
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
From: "Jacek Domański" <jadoone_at_nospam_polbox.com>
Subject: Re: detektor fazy (?)
Date: Sat, 23 Feb 2002 09:01:13 GMT
Użytkownik <iwashington_at_nospam_poczta.onet.pl> napisał w wiadomości
news:2322.000003a9.3c74dc17_at_nospam_newsgate.onet.pl...
p.s. W koncu szlag mnie trafi i kupie tego ALPSa. Ile cos takiego
kosztuje?
Ja kupilem na Wolumenie po 2zl/szt.do montazu powierzchniowego. Facet w
innym miejscu miel po 4,5zl, ale tamte byly duzo wieksze i do przykrecenia -
cos a'la potecjometr do radia samochodowego.
Pozdrawiam
Jado.
From: "Marek Dzwonnik" <mdz_at_nospam_message.pl>
Subject: Re: detektor fazy = enkoder
Date: Wed, 20 Feb 2002 15:21:18 +0100
Użytkownik <iwashington_at_nospam_poczta.onet.pl> napisał w wiadomości
news:5b9e.00000147.3c739383_at_nospam_newsgate.onet.pl...
Kupilem cos takiego, podobne do potencjometru, 3 nozki, 30 krokow.
Ma ktos program na 51 do obslugi? Napisalem juz program(liczy liczbe
przekrecen
i dekoduje kierunek), ale cosik jest zle. Bede wdzieczny za kazda
wskazowke!
P.S. Jak nazwac ten element? (jego nazwa chocby po Ang.)
Ang: Encoder
Sposób obsługi zależy od typu enkodera.
1).
Z wy. w 2 bitowym kodzie Graya (zmiana tylko jednego bitu / ząbek)
Używałem ECW0J-B24-BC0006 Bournsa ( czyli 24 ząbki/obrót; 6 pełnych
cykli/obrót)
Katalogowo:
Contact Bounce (15 RPM) 5 milliseconds maximum
RPM (Operating) 120 maximum (czyli 2 obr/s =
48ząbków/s= min. ok. 20ms/ząbek)
Podłączony był tak:
Wy. enkodera podciągnięte do Vcc i podłączone przez RC (ok. 5ms) i bramki
HC132 do bitów 6 i 7 portu P1.
(nie opłacała mi się programowa filtracja odbić)
A obsługiwany w ten sposób:
Proc. 10 ms. czyta stan wy. enkodera (A,B), zestawia ze stanami z
poprzedniego odczytu (A_old, B_old) w zmiennej enc i takim 4-bitowym słowem
adresuje tablicę przejść enkodera (ENCTAB). Wartośc odczytaną z tablicy
czyli kierunek ruchu encodera akumuluje w zmiennej enc_aku (czytanej i ew.
zerowanej asynchronicznie w wątku głównym).
----------------------------------------------------------
#define rld_TH0 0xDC
#define rld_TL0 0x00
// tablica przejsc enkodera
char code ENCTAB[16] =
{
0, -1, 1, 0,
1, 0, 0, -1,
-1, 0, 0, 1,
0, 1, -1, 0
};
unsigned char kbval;
unsigned char enc; // stan enkodera
int enc_aku; // licznik kumulujacy ruch enkodera
----------------------------------------------------------
// przerwanie od TIMER0 - co 10 ms
void uart0_service() interrupt 1 using 2
{
// przeladowanie licznika
TL0 = TL0 + rld_TL0;
TH0 = rld_TH0;
// Enkoder - styki: A(p1.7), B(p1.6)
kbval = P1;
kbval = kbval >> 4;
kbval &= 0x0C; // (new_A==bit3, new_B==bit2 )
enc = enc >> 2; // (A -> A_old, B -> B_old)
enc |= kbval;
// enc zawiera (MSB..LSB): 0, 0, 0, 0, new_A, new_B, A_old, B_old
// tzn. aktualne i poprzednie odczyty.
// dekodowanie stanu enkodera
enc_aku += ENCTAB[enc];
} // uart0_service()
----------------------------------------------------------
Inne enkodery:
2.) Np. ECW0J-B24-BC0024 Bournsa czyli taki, który na jeden obrót ma 24ząbki
i 24 pełne cykle ( czyli w jednym ząbku: impulsA + impulsB przesunięty o
90stopni)
Można dać przerzutnik D wyzwalany zboczem (ls74) i podłączyć A->D, B->CLK.
Wtedy narastające zbocze B zatrzaskuje w przerzutniku stan A czyli kierunek
ruchu enkodera.
Albo to samo programowo: Przerwanie od zbocza B. Odczyt stanu A okresla
kierunek. Tylko uwaga na odbicia styków B (możliwość wielokrotnego
zgłoszenia przerwania)!
Albo podobnie jak klawisze: próbkować (szybko!) stan linii B i wyznaczać
stany stabilne styku. Przejście B w nowy stan stabilny to okazja do
odczytania A i zaliczenia ząbka enkodera.
3). Grzechotki (np. Alpsa) z dwoma wyjściami zwieranymi impulsowo. Przy
ruchu w lewo impulsuje tylko A. przy ruchu w prawo - impulsuje tylko B. Do
odczytu w taki sam sposób jak każdy inny przycisk klawiatury.
MDz