Stránka 2 z 2
Napsal: 30 led 2012, 00:24
od Jenda_KL
polo_marco píše:upravit aj pre obvod cd4013?
invertorem (tuším 4049) před resetovací piny
Napsal: 30 led 2012, 07:19
od procesor
Opravil som ešte priebehy signálov (viď vyššie) - všimol som si ,že výstupy X a Y sú v origináli prehodené navzájom.
Funkcia obvodu je O.K. ....cvičí jeden Q....na druhom je L a naopak.
Ak to má fachčiť s 12V vcc potom 4013 s invertormi pre SETy aj RESety oboch D-flopov. Inak je to zbytočnosť (keď stačí jedno púzdro74xx74)
Napsal: 30 led 2012, 09:19
od BOBOBO
Trochu ošetřený je tebou uvedený obvod v SaK 4/01 .
Napsal: 30 led 2012, 10:10
od Andrea
procesor píše:Ak to má fachčiť s 12V vcc potom 4013 s invertormi pre SETy aj RESety oboch D-flopov
Pro SETy je nepotřebuje, místo na Vcc je připojí na GND.
Napsal: 30 led 2012, 13:12
od procesor
No...invertovať....statické vstupy kto ako chce/vie

To bolo po reakcii Jenda_KL-a, že inverovať RESETy (Jenda_KL v tom má samo jasno)
Napsal: 30 led 2012, 13:53
od Jenda_KL
procesor píše:No...invertovať....statické vstupy kto ako chce/vie
My vieme, ale on nevie, možno proto to Andrea napsala.
Mělo tam bejt "invertovat RES přes 4049 a SET přepojit na GND"
Napsal: 30 led 2012, 14:01
od Jenda_KL
Funkční filtr zákmitů je vidět v tomto ds
čítače HCTL2032 na str.12
Napsal: 30 led 2012, 14:41
od procesor
Ani ten nezaručuje bezchybnosť, má to nejaké medze.
Kedysi som používal naprogramovanú ROMku 32x8, alebo väčšiu už nepamätám presne možno 64x8.
Napsal: 30 led 2012, 15:16
od Andrea
Ono to jde ošetřit vcelku jednoduše hlídáním tří po sobě jdoucích stavů, v CPLD se to vejde do pár makrobuněk.
Napsal: 30 led 2012, 15:28
od procesor
A špeciálne taký encodér môže generovať aj dvojnásobnú početnosť impulzov, prípadne ak sa odmeriava poloha tak dvojnásobok pozícií a možno aj štvornásobok.
Napsal: 30 led 2012, 16:19
od Atlan
Andrea píše:Ono to jde ošetřit vcelku jednoduše hlídáním tří po sobě jdoucích stavů, v CPLD se to vejde do pár makrobuněk.
mohla by si to rozviet troska nejde mi ani tak o CPLD ale o realizaciu toho osetrenia napr pre uP
Napsal: 30 led 2012, 16:31
od Andrea
No zákmit je stav kdy to například z 01 přejde do 11, zpátky do 01 a zase do 11, tak se hlídá současný stav a stav o dva zpátky a když jsou stejné, je to pravděpodobně zákmit a jako krok se to bere, až když jsou ty tři po sobě jdoucí stavy různé. Tedy myslím, že to tak bylo, už si to nepamatuju, je to nějaký rok, co jsem nad tím dumala.

A softwarově v mcu to nechodilo, některé zákmity jsou krátké a procesor nezachytí všechny přechody, hardware je hardware. Jestli na to doma vzpomenu, tak sem dám těch pár řádek ve VHDL.
Edit: Nějak takhle
Kód: Vybrat vše
SIGNAL IRCIN_t1 : STD_LOGIC_VECTOR(1 DOWNTO 0); -- Minuly stav IRC
SIGNAL IRCIN_t2 : STD_LOGIC_VECTOR(1 DOWNTO 0); -- Predminuly stav IRC
SIGNAL IRC_L : STD_LOGIC_VECTOR(7 DOWNTO 0); -- Citac puslu doleva
SIGNAL IRC_R : STD_LOGIC_VECTOR(7 DOWNTO 0); -- Citac puslu doprava
Kód: Vybrat vše
-- Osetreni rotacniho enkoderu
PROCESS (clk_10, RST_n)
BEGIN
IF RST_n = '0' THEN
IRCIN_t2 <= (OTHERS => '0');
IRCIN_t1 <= (OTHERS => '0');
IRC_L <= (OTHERS => '0');
IRC_R <= (OTHERS => '0');
ELSIF clk_10'EVENT AND clk_10 = '1' THEN -- Nabezna hrana na clk_10
IF (((IRCIN(0) XOR IRCIN_t1(0)) OR (IRCIN(1) XOR IRCIN_t1(1))) = '1') AND
(((IRCIN(0) XOR IRCIN_t2(0)) OR (IRCIN(1) XOR IRCIN_t2(1))) = '1') THEN
IRCIN_t2 <= IRCIN_t1;
IRCIN_t1 <= IRCIN;
IF (IRCIN_t2(0) AND IRCIN_t2(1) AND NOT IRCIN_t1(0) AND IRCIN_t1(1) AND NOT IRCIN(0) AND NOT IRCIN(1)) = '1' THEN
IRC_L <= IRC_L + 1;
END IF;
IF (IRCIN_t2(0) AND IRCIN_t2(1) AND IRCIN_t1(0) AND NOT IRCIN_t1(1) AND NOT IRCIN(0) AND NOT IRCIN(1)) = '1' THEN
IRC_R <= IRC_R + 1;
END IF;
END IF;
END IF;
END PROCESS;
Napsal: 30 led 2012, 21:51
od procesor
Používam túto schému kde poruchy započítam a vo výsledku dostanem štyri zdvihy up/dw na celý cyklus vstupov A a B. V jednom projekte tie poruchy de-facto poruchy ani neboli.