Strona 1 z 1

Serwokrokowiec z przekładnią na STM32F103C8T6

: 25 sty 2021, 20:11
autor: tuxcnc
Mam pomysł prosty i tani w realizacji, ale nie za bardzo czas żeby się nim zająć.
Może ktoś inny wykona projekt i pochwali się efektem ?

Chodzi o wykonanie "czwartej osi" do frezarki, mechanicznie mało istotne, może być na pasku albo zębatce, byle bez luzów, bo się serwo będzie wzbudzać.
Można kupić taką płytkę https://www.aliexpress.com/item/4000165230349.html
Ważne żeby to był model SERVO57B, bo płytka z "A" w nazwie jest na innym procesorze od Atmela, a ten nas nie interesuje, bo nie ma tanich płytek z tym procesorem, natomiast są tanie płytki z STM32F103.
Problem jest taki, że płytkę zaprojektowano do bezpośredniego sprzężenia z osią silnika. To znaczy magnes można przylepić gdzie się spodoba, ale i tak trzeba będzie trzeba dłubać w kodzie, żeby kroki silnika skorelować z odczytem z enkodera. Sprawa jest oczywista, jeśli damy przekładnię, to trzeba wysyłać więcej impulsów STEP na każdy impuls enkodera.
Jeśli ktoś nie załapał, to tam jest enkoder magnetyczny, czyli chip na płytce i magnes montowany na osi. Enkoder jest absolutny 12-bit co odpowiada inkrementalnemu 1000 cpr.
Zintegrowany na płytce sterownik daje max 3A, co nie jest najgorzej, ale może być za mało.
Moim zdaniem lepiej kupić płytkę z STM32F103, jakiś przyzwoity enkoder inkrementalny i przyzwoity sterownik z przyzwoitym silnikiem krokowym.
Oprogramowanie jest na licencji GPL i dostępne tutaj : https://github.com/makerbase-mks/MKS-SERVO42B (wersja "42" jest też do płytki "57"). Są tam linki do instrukcji kompilacji i użycia.
Do kompilacji potrzebne jest środowisko PlatformIO, do zdobycia według instrukcji tutaj : https://platformio.org/install/ide?install=vscode

Teraz najważniejsze.
Zajrzałem do kodu i nie powinno być żadnego problemu żeby zamiast absolutnego enkodera magnetycznego na I2C użyć enkodera inkrementalnego obsługiwanego sprzętowo przez licznik wbudowany w STM32F103.
Jak czytać sprzętowo enkoder opisywałem w wątku dro-stm32f103c8t6-blue-pill-t109648.html. Nie wiem czy użyte tam bibliotek podejdą, ale zrobić da się na pewno.
Na koniec zamiast czytać położenie wału z Allegro A1333LLETR-T, trzeba czytać z wewnętrznego licznika STM32F103.
I to by było na tyle.

Może ktoś znajdzie czas i ochotę żeby sprawą się zająć ?