Skip to content

Rozšíření modulu o synchronizační bit pro identifikaci fáze otáčky #3

@kaklik

Description

@kaklik

Modul EFMADC01 využívá ADC typu LTC1864/LTC1865 pro sekvenční měření hodnot řízené signálem CONV z mikrořadiče. Pro určení polarity pole je ale potřeba mít převody fázově synchronizované se začátkem otáčky.

V současné verzi je synchronizace řešena externě, což vyžaduje další signály do MCU. To by mělo jít eleminovat jednoduchou logikou přímo v modulu, která umožní zakódování informace o fázi otáčky do 17. bitu SPI přenosu bez nutnosti měnit chování ADC.

Fakticky by šlo využít faktu, že optická závora je open-drain a připojit ji rovnou na výstup ADC na signál SDO. Takové řešení je extrémně jednoduché, ale zároveň nepoužívá SPI fyzickou vrstvu úplně korektně, protože pak by se jednak mohl stav SDO měnit asynchronně s hodinami. Zároveň se tím ale zachovává možnost pro MCU číst optickou závoru a tím i fázi velmi přesně.


Návrh řešení:

Použitím kotoučku s delší fázovou značkou následujících součástek:

  • Čítač (např. MC74HC161A) řízený hodinami SCK, resetovaný signálem CONV, který generuje signál RCO při dosažení 16. taktu.
  • D-Flip-Flop (např. 74HC74), který při 16. taktu (RCO = HIGH) vzorkuje stav vstupu z optické závory (např. synchronizační značky na rotoru).
  • V následujícím (17.) taktu se tento stav poskytne na výstupu MISO namísto dat z ADC.
  • Výstup ADC (SDO) je propojen přímo na MISO pro prvních 16 taktů; 17. takt čte hodnotu Q z D-FF.

Výsledné chování

  • Standardní SPI přenos: 16 bitů dat z ADC + 1 bit synchronizační informace.
  • MCU čte data jako běžný SPI master, ale poslední bit může použít k identifikaci počátku otáčky.
  • Není nutné přidávat další signál z optické závory do MCU.
  • Možné zachovat kompatibilitu s původním chováním i bez použití synchronizační značky.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions