readoutSHAHE.getValue() - wartość z linijk suwmiarkowej. Jest w rozdzielczości 0,01mm więc musiałem pomnożyć *2 aby generowało dwa razy więcej impulsów, bo monitorek DRO oczekuje impulsów co 0,005mm. Sygnał wygląda tak:
Jest wysyłany co około 100ms, trwa około 9ms, jest wysyłane 6 paczek po 4 bity. Jak sygnał zegarowy rośnie to wtedy trzeba sprawdzić jaka jest wartość na lini danych. Zwracamy uwagę tylko na 20 bitów, gdzie 20 jest znakiem +/-.
encoderReader.getValue() - wartość z fabrycznego liniału optycznego DRO. Sygnał jest najzwyklejszym enkoderem A/B.
Obie wartości są dodawane do siebie, a potem porównywane z aktualną wartością generowanego sygnału enkodera. Różnica między wartością generowanego enkodera, a odczytem z liniałów mówi ile razy trzeba wygenerować sygnał enkodera aby monitorek DRO wyświetlił poprawną pozycję.
Ostatnio wykonałem taki mini projekt i chyba wyszło całkiem nieźle
Chodzi oczywiście o sumator DRO, który ma zastosowanie w frezarce (ZX7045). Jeden liniał jest na kolumnie a drugi na pinoli. Na pinoli używam liniału typu suwmiarka, może dałoby się to przerobić na kolejny liniał optyczny z dokładnością 0,005mm ... ale nie wiem czy taka dokładność ma sens w tak giętkiej frezarce.
Suwmiarka pinoli to zestaw od Chinola, firmy SHAHE:
Zasilanie bateryjne 3V, ale da się podpiać 3,3V i działa
Sygnał z pozycją jest w postaci cyfrowej, jest to sygnał w stylu SPI, 2 linie: DATA i CLK
Liniał od kolumny osi Z to kolejny Chińczyk, kupiłem komplet DRO na 3 osie z monitorkiem:
Zasilanie 5V
Sygnał wyjściowy to zwykły enkoder, sygnał A i B. Jest jeszcze jeden sygnał ale można pominąć (coś w stylu drugiej masy, ale delikatnie przesuniętej).
Z monitorka wychodzi zasilanie 5V, którym jest zasilana płytka z mikrokontrolerem ESP8266. Obyło się więc bez dodatkowych zasilaczy.
Dziś zrobiłem testy na maszynie i wydaje się działać OK