Keresés

Új hozzászólás Aktív témák

  • ekkold

    Topikgazda

    válasz daninet #17860 üzenetére

    A kapott adatokról: a programod soros portra küldi ki amit kap, viszont a soros portra írás ideje összemérhető (vagy akár hosszabb) mint az enkóder impulzus-ideje. Ezért össze kellene gyűjteni egy csomó adatot és egyben kiírni - vagy méginkább egy megfelelő programmal számlálni az enkóder lépéseit, és csak a számláló változása után kiírni az értékét.

  • ekkold

    Topikgazda

    válasz daninet #17860 üzenetére

    Minden mechanikus kapcsoló hajlamos egy olyan jelenségre amit "prellezésnek" hívnak. Fizikailag amikor az érintkezők összeérnek akkor rugalmasan torzulnak, majd az érintkező visszapattan, az áramkör megszakad majd újra összezáródik (akár többször is egymás után). Ez általában ezredmásodperces időtartományban zajlik (vagy akár 100usec tartományban). Emberi szempontból ez nagyon rövid idő, de digitális elektronikák szempontjából ez sok idő, simán észreveszi az áramkör és megpróbálja feldolgozni - ami alaphelyzetben hibás működéshez vezethet.
    Két megoldási lehetőség van:
    - Szoftveresen felkészülni a prellezés kezelésére - ahhoz hogy ez jól működjön nem lesz elég egy egyszerű kód. Persze megoldható teljesen jól is, csak az nem pár soros programrész lesz (készítettem már ilyet).
    - A prellezés hardveres kezelése: a kontaktusokra kapcsolt felhúzó ellenállások után egy megfelelő időállandójú R-C szűrő is kell (ilyenkor a belső felhúzó ellenállást ki kell kapcsolni). Ez több alkatrészt igényel, viszont a szoftver viszonylag egyszerű maradhat.
    Ha a programozás nem az erősséged, akkor a hardveres megoldás a könnyebb út, mivel az egyszerű áramkört igényel... Már én is elgondolkoztam rajta, hogy nekem is egyszerűbb lett volna hardveresen megoldani, mint szoftveresen, csak akkor már a hardver kész volt, így nem volt választásom.

Új hozzászólás Aktív témák

Hirdetés