Serwokrokowiec z przekładnią na STM32F103C8T6

Dyskusje o programowaniu mikroprocesorów.
Awatar użytkownika

Autor tematu
tuxcnc
Lider FORUM (min. 2000)
Lider FORUM (min. 2000)
Posty w temacie: 1
Posty: 7861
Rejestracja: 26 lut 2011, 23:24
Lokalizacja: mazowieckie

Serwokrokowiec z przekładnią na STM32F103C8T6

#1

Post napisał: tuxcnc » 25 sty 2021, 20:11

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ąć ?



Wróć do „Arduino, Raspberry pi i inne systemy mikroprocesorowe”