Enkóder - riadenie

Problémy s návrhem, konstrukcí, zapojením, realizací elektronických zařízení

Moderátor: Moderátoři

Zpráva
Autor
Jenda_KL
Příspěvky: 1173
Registrován: 10 zář 2008, 00:00
Bydliště: Kadaň
Kontaktovat uživatele:

#16 Příspěvek od Jenda_KL »

polo_marco píše:upravit aj pre obvod cd4013?
invertorem (tuším 4049) před resetovací piny
Uživatelský avatar
procesor
Příspěvky: 5286
Registrován: 02 říj 2009, 00:00
Bydliště: PO

#17 Příspěvek 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)
Uživatelský avatar
BOBOBO
Příspěvky: 20872
Registrován: 25 úno 2008, 00:00
Bydliště: Rychnovsko

#18 Příspěvek od BOBOBO »

Trochu ošetřený je tebou uvedený obvod v SaK 4/01 .
Přílohy
enkoder.pdf
(166.19 KiB) Staženo 103 x
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#19 Příspěvek 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.
Uživatelský avatar
procesor
Příspěvky: 5286
Registrován: 02 říj 2009, 00:00
Bydliště: PO

#20 Příspěvek od procesor »

No...invertovať....statické vstupy kto ako chce/vie :D To bolo po reakcii Jenda_KL-a, že inverovať RESETy (Jenda_KL v tom má samo jasno)
Jenda_KL
Příspěvky: 1173
Registrován: 10 zář 2008, 00:00
Bydliště: Kadaň
Kontaktovat uživatele:

#21 Příspěvek 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"
Jenda_KL
Příspěvky: 1173
Registrován: 10 zář 2008, 00:00
Bydliště: Kadaň
Kontaktovat uživatele:

#22 Příspěvek od Jenda_KL »

Funkční filtr zákmitů je vidět v tomto ds čítače HCTL2032 na str.12
Uživatelský avatar
procesor
Příspěvky: 5286
Registrován: 02 říj 2009, 00:00
Bydliště: PO

#23 Příspěvek 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.
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#24 Příspěvek 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.
Uživatelský avatar
procesor
Příspěvky: 5286
Registrován: 02 říj 2009, 00:00
Bydliště: PO

#25 Příspěvek 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.
Uživatelský avatar
Atlan
Příspěvky: 4514
Registrován: 10 kvě 2004, 00:00
Bydliště: Košice

#26 Příspěvek 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
Andrea
Příspěvky: 9340
Registrován: 07 zář 2007, 00:00

#27 Příspěvek 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. :oops: 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 :D

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;
Uživatelský avatar
procesor
Příspěvky: 5286
Registrován: 02 říj 2009, 00:00
Bydliště: PO

#28 Příspěvek 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.
Přílohy
UpDownFilter.jpg
Roztrasený pohyb v pred.
(40.1 KiB) Staženo 71 x
Odpovědět

Zpět na „Řešení problémů s různými konstrukcemi“