Sumator dwóch sygnałów DRO na Arduino/ESP8266
-
Autor tematu - Czytelnik forum poziom 2 (min. 20)
- Posty w temacie: 6
- Posty: 28
- Rejestracja: 14 paź 2021, 14:15
Sumator dwóch sygnałów DRO na Arduino/ESP8266
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
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
-
Autor tematu - Czytelnik forum poziom 2 (min. 20)
- Posty w temacie: 6
- Posty: 28
- Rejestracja: 14 paź 2021, 14:15
Re: Sumator dwóch sygnałów DRO na Arduino/ESP8266
Główna pętla programu wygląda tak:
void loop()
{
if((millis() % 50) == 0)
{
readoutSHAHE.loopAtLeastEvery100ms();
encoderEmulator.updateTargetPosition(-readoutSHAHE.getValue()*2 - encoderReader.getValue());
}
encoderEmulator.generateSignal();
}
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ę.
void loop()
{
if((millis() % 50) == 0)
{
readoutSHAHE.loopAtLeastEvery100ms();
encoderEmulator.updateTargetPosition(-readoutSHAHE.getValue()*2 - encoderReader.getValue());
}
encoderEmulator.generateSignal();
}
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ę.
-
Autor tematu - Czytelnik forum poziom 2 (min. 20)
- Posty w temacie: 6
- Posty: 28
- Rejestracja: 14 paź 2021, 14:15
-
- Lider FORUM (min. 2000)
- Posty w temacie: 4
- Posty: 11548
- Rejestracja: 17 mar 2009, 08:55
- Lokalizacja: Skępe
Re: Sumator dwóch sygnałów DRO na Arduino/ESP8266
DawidMechatronik pisze: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.
Ja mam dwa liniały 1µ (też zsumowana oś Z+U) na jeszcze mniejszej i mniej masywnej ZX32G-1,
i nie jest wcale z tym tak źle.
Przykład - dość udarowe frezowanie zamocowanej tylko jednopunktowo pośrodku długiej wąskiej listwy z NC11 głowiczką ⌀50mm na APKT, wszystkie zaciski poza osią Y stołu zaciśnięte, wskazania DRO (Z+U) z włączonym tłumikiem wskazań...
.
i co ciekawe, po frezowaniu ustawiony wymiar na U zmienił się o niepełną setkę...
Myślę, że liniały 5µ jak najbardziej są na miejscu, tyle, że do pomiaru wysuwu wrzeciona(pinoli) z braku miejsca na głowicy najlepsze typu SLIM, np KA200
u mnie,
musiałem go tylko nieco odstawić podkładkami z aluminiowych listew od korpusu by karetka nie zawadzała o wskaźnik oleju, przy tym funkcja skrętu głowicy zachowana,
pozdrawiam,
Roman
Roman
-
Autor tematu - Czytelnik forum poziom 2 (min. 20)
- Posty w temacie: 6
- Posty: 28
- Rejestracja: 14 paź 2021, 14:15
Re: Sumator dwóch sygnałów DRO na Arduino/ESP8266
Nawet nie wiedziałem że są takie fajne DRO na 4 osie, z sumowaniem Z+U. I masz ciekawy sposób na montaż liniału z tyłu.
Jak będę kiedyś ulepszać suwmiarkę do prawilnego liniału to chyba zrobię podobnie
Jak będę kiedyś ulepszać suwmiarkę do prawilnego liniału to chyba zrobię podobnie
-
- Lider FORUM (min. 2000)
- Posty w temacie: 4
- Posty: 11548
- Rejestracja: 17 mar 2009, 08:55
- Lokalizacja: Skępe
Re: Sumator dwóch sygnałów DRO na Arduino/ESP8266
Gdybyś potrzebował, to mam więcej zdjęć jak to zrobiłem...
A moje DRO (Ditron D-80) ma polskie menu... Wygodne zwłaszcza jak korzystasz z funkcji..
Instrukcję PL też.
A moje DRO (Ditron D-80) ma polskie menu... Wygodne zwłaszcza jak korzystasz z funkcji..
Instrukcję PL też.
pozdrawiam,
Roman
Roman
-
Autor tematu - Czytelnik forum poziom 2 (min. 20)
- Posty w temacie: 6
- Posty: 28
- Rejestracja: 14 paź 2021, 14:15
Re: Sumator dwóch sygnałów DRO na Arduino/ESP8266
Z fotek wydaje się wszystko jasne, poza sposobem mocowania tej poziomej belki do pinoli.
Jakbyś dosłał fotkę tego mocowania do pinoli to bym sobie wszystko zapisał na dysk na lepsze czasy
Jakbyś dosłał fotkę tego mocowania do pinoli to bym sobie wszystko zapisał na dysk na lepsze czasy
-
- Lider FORUM (min. 2000)
- Posty w temacie: 4
- Posty: 11548
- Rejestracja: 17 mar 2009, 08:55
- Lokalizacja: Skępe
Re: Sumator dwóch sygnałów DRO na Arduino/ESP8266
Sposób mocowania jest bardzo prosty, przykręcana jest do żeliwnej obejmy 129 na tulei 128,
odwróconej o 180° rozcięciem do frontu frezarki.
Aluminiowy wspornik(kwadratowy pręt alu 16x16 z OBI) jest przykręcany do obejmy 129 jedną śrubą imbusową, co pozwala na dowolne ustawianie go w płaszczyźnie poziomej w stosunku do położenia osi liniału.
Łeb śruby jest nieco wpuszczony we wspornik by przy pełnym schowaniu tulei nie uderzał w korpus głowicy, co zapobiega przestawieniom zamocowania karetki i zmianom bazy odczytu liniału. Można ew. dać jeszcze nakrętkę kontrującą od dołu.
Wspornik ma w osi wyfrezowany podłużny otwór który pozwala na dokładne swobodne ustawienie i zamocowanie do niego bez generowania bocznych naprężeń popychacza karetki liniału.
Popychacz wykonany jest z pręta aluminiowego(OBI) ⌀8mm obustronnie nagwintowanego,
wkręcanego w wyfrezowaną (z takiegoż 16x16 alu pręta) nakładkę 16x14mm
nakładaną na karetkę liniału
Taki prosty system mocowania belki do pinoli i popychacza karetki do tej belki pozwala na dokładne wzajemne ich ustawienie by na karetkę oprócz siły równoległej do osi liniału przy wysuwaniu pinoli nie działały żadne niepożądane siły boczne/naprężenia, które mogłyby powodować nieprecyzyjne przesuwanie karetki po liniale, i fałszować odczyt.
odwróconej o 180° rozcięciem do frontu frezarki.
Aluminiowy wspornik(kwadratowy pręt alu 16x16 z OBI) jest przykręcany do obejmy 129 jedną śrubą imbusową, co pozwala na dowolne ustawianie go w płaszczyźnie poziomej w stosunku do położenia osi liniału.
Łeb śruby jest nieco wpuszczony we wspornik by przy pełnym schowaniu tulei nie uderzał w korpus głowicy, co zapobiega przestawieniom zamocowania karetki i zmianom bazy odczytu liniału. Można ew. dać jeszcze nakrętkę kontrującą od dołu.
Wspornik ma w osi wyfrezowany podłużny otwór który pozwala na dokładne swobodne ustawienie i zamocowanie do niego bez generowania bocznych naprężeń popychacza karetki liniału.
Popychacz wykonany jest z pręta aluminiowego(OBI) ⌀8mm obustronnie nagwintowanego,
wkręcanego w wyfrezowaną (z takiegoż 16x16 alu pręta) nakładkę 16x14mm
nakładaną na karetkę liniału
Taki prosty system mocowania belki do pinoli i popychacza karetki do tej belki pozwala na dokładne wzajemne ich ustawienie by na karetkę oprócz siły równoległej do osi liniału przy wysuwaniu pinoli nie działały żadne niepożądane siły boczne/naprężenia, które mogłyby powodować nieprecyzyjne przesuwanie karetki po liniale, i fałszować odczyt.
pozdrawiam,
Roman
Roman