W artykule tym przedstawimy opis kompletnego sterownika do frezarki numerycznej do obróbki drewna, tworzyw sztucznych oraz metali miękkich. W naszym zastosowaniu steruje on frezarką 3-osiową jednak istnieje możliwość bezproblemowej rozbudowy o dodatkową oś. Sterowanie silnikami krokowymi realizują układy Allegro A4989. Całą elektroniką zarządza oprogramowanie LinuxCNC na systemie Debian. Przedstawione w artykule moduły to prototypy i są ciągle modyfikowane.{jcomments on}

 

Spis treści:

1. Ogólny opis sterowania

2. Zasilacze

3. Płyta główna

4. Sterownik silnika krokowego - Powerlolu

5. Elementy wykonawcze

Pliki do pobrania

1. Ogólny opis sterowania


Skrzynka sterująca frezarką składa się z modułów przedstawionych na rysunku 1:

  • zasilającego: transformatory i zasilacze,

  • płyty głównej,

  • elementów wykonawczych wyjściowych,

  • sterowników silników krokowych – Powerlolu.

 

W projekcie wykorzystaliśmy 4 poziomy napięć:

  • 230V do zasilania wyjść oraz transformatorów,

  • 5V do zasilania logiki TTL,

  • 12V do przekaźników oraz przyszłych zastosowań,

  • 45 V do zasilania silników krokowych.

Płyta główna zabezpiecza elementy wyjściowe i wejściowe przed uszkodzeniem oraz ustala odpowiednie poziomy napięć za pomocą przerzutników Schmitta. Na płycie wyprowadzone są optoizolowane wejścia oraz wyjścia do podłączenia dowolnych modułów, np. z triakiem lub przekaźnikiem (do sterowania wrzecionem, chłodziwem i dowolnymi innymi akcesoriami do frezarki).

Płytki Powerlolu pozwalają na sterowanie silnikami o prądzie znamionowym do 10A i wysokich momentach, idealne do dużych obciążeń. Kroki silnika można podzielić maksymalnie na 16 mikrokroków co pozwoli na precyzyjne dojazdy i płynniejszą pracę. Dokładniejszy opis modułów znajduje się w dalszej części artykułu.

 

 Rys.1a. Przykładowe połączenia pomiędzy modułami

 

Rys.1b. Zdjęcie przedstawiające skrzynkę sterowniczą

 

 

2. Zasilanie


Maszynę zasilają dwa transformatory toroidalne. Z pierwszego 12V/5A po wyprostowaniu i odfiltrowaniu kondensatorem 4700uF/25V otrzymujemy napięcie stałe o √2 większe, czyli ok 17V. Z niego uzyskujemy napięcie stabilizowane 12VDC za pomocą układu LM7812. Drugi toroid 32V/12,5A służy do zasilenia silników krokowych bez stabilizacji. Po prostowaniu i filtracji kondensatorem 10mF/100V otrzymamy 45VDC.Przy doborze kondensatorów kierowaliśmy się zasadą 1000uF na 1A pobieranego prądu. Im większa pojemność tym lepiej dla sterowników, ale drożej dla użytkowników :). U nas transformatory nie będą tak bardzo obciążone, więc dobraliśmy pojemności nieco mniejsze od obliczonych.

 

Rys.2. Schemat zasilacza

 

Dodatkowo w zasilacz wbudowany jest układ opóźniacza z przekaźnikiem, dodający zwłokę czasową załączenia zasilania na silniki krokowe. Na początku napięcie z zasilacza zostanie podane na płytę główną, czerwoną diodę sygnalizacyjną i opóźniacz złożony z kondensatora elektrolitycznego C11 i rezystora R1. Dobierając odpowiednio parametry R i C można uzyskać żądany czas opóźnienia (im większe parametry tym czas będzie dłuższy). Opóźniacz po pewnej zwłoce czasowej załącza przekaźnik, który podaje napięcie na silniki krokowe. Lepszym rozwiązaniem byłby opóźniacz na układzie scalonym NE555 lub jakimś miroprocku, ponieważ w poprzednim przypadku napięcie na cewce przekaźnika narasta stopniowo. Styki przekaźnika są powoli zwierane i rozwierane po odłączeniu napięcia. Przy dużych prądach może to spowodować szybsze ich zużycie lub sklejanie.

 

3. Płyta główna


 

LPTpinout

 Rys.3a. Rozpiska sygnałów portu LPT

Maszyna sterowana jest komputerem PC przez port równoległy LPT. Ze specyfikacji widać, że można wysterować nim 8 wyjść, 5 wejść, 4 piny mogą służyć zarówno jako wejście i wyjście, natomiast pozostałe są podłączone do masy. W programie LinuxCNC piny 1, 14, 16, 17 są ustawione jako wyjścia, zatem do dyspozycji mamy łącznie 12 wyjść i tylko 5 wejść. Gdyby to nie zaspokajało naszych potrzeb, to istnieje możliwość skonfigurowania dwóch portów LPT, jednak dla prostej maszyny jeden jest wystarczający. Do skonfigurowania 3-osiówki potrzebujemy minimalnie 7 wyjść, po dwa sygnały na każdy silnik ( krok i kierunek) oraz sygnał włączenia napięcia. Pozostałe możemy użyć do załączania wrzeciona, chłodziwa, odkurzacza itp. Co do wejść musimy użyć minimalnie dwóch, jedno rezerwujemy do krańcówek i bazowania osi, czyli znalezienia punktu początkowego maszyny. Drugie wejście musimy zarezerwować dla przycisku awaryjnego zatrzymania ESTOP.

Jak działa bazowanie?

Po wciśnięciu przycisku "bazuj osie", maszyna rozpoczyna przejazd w każdej osi po kolei i szuka jednej z krańcówek. Dla ustawienia domyślnego w programie, wjeżdża na nią, a następnie zjeżdża i po rozwarciu styku oznacza w tym miejscu punkt początkowy. Od niego dodaje zadeklarowaną wcześniej w konfiguracji maksymalną długość osi. Jeżeli wszystkie długości podaliśmy poprawnie i maszyna jest odpowiednio skonfigurowana, po przejeździe na przeciwległą krańcówkę, program zatrzyma się tuż przed nią nie załączając jej.

Opis pinów portu LPT

Nr pinu (DB25)

Nazwa sygnału

Kierunek LPT

Kierunek LinuxCNC

Przykładowe użycie dla 4 osi

1

Strobe

In/Out

Out

Krok A

2

Data0

Out

Out

Kierunek A

3

Data1

Out

Out

Krok Z

4

Data2

Out

Out

Kierunek Z

5

Data3

Out

Out

Krok Y

6

Data4

Out

Out

Kierunek Y

7

Data5

Out

Out

Krok X

8

Data6

Out

Out

Kierunek X

9

Data7

Out

Out

Wolne wyjście 1

10

Ack

In

In

Krańcówki i bazujące

11

Busy

In

In

Wolne wejście 1

12

Paper-Out

In

In

Wolne wejście 2

13

Select

In

In

Wolne wejście 3

14

Linefeed

In/Out

Out

Włączenie napięcia

15

Error

In

In

ESTOP

16

Reset

In/Out

Out

Wolne wyjście 2

17

Select-Printer

In/Out

Out

Wolne wyjście 3

18-25

GND

-

-

-

 

Najważniejsza funkcja płyty głównej to izolacja galwaniczna sygnałów wejściowych i wyjściowych oraz stabilizacja sygnałów sterujących silnikiem. Układy scalone jakie zostały wykorzystane do realizacji tych funkcji to:

  • PC817 – standardowy transoptor,

  • 6N137 – transoptor szybki, dla sygnałów sterujących silnikami,

  • 74HC14 – przerzutniki Schmitta dla pewniejszego sterowania silnikami.

 

Rys.3b. Ustawienia portu LPT w LinuxCNC

 

Po co tyle izolacji? Przezorny zawsze ubezpieczony! W pierwszej wersji płyty głównej bez zabezpieczeń udało nam się (z naszej winy) uszkodzić port LPT w dopiero co nabytym komputerze. Jeszcze przed kupieniem drugiego PC-ta nowa płyta główna była już zabezpieczona ze wszystkich stron. :)

 datasheetczęstotliwościwykres

 

 

 

Rys.3c. Charakterystyki częstotliwościowe PC817

Transoptor PC817 separuje wszystkie 5 wejść oraz wyjście ENABLE (włączenie napięcia silników). Izoluje on sygnały o niskiej częstotliwości zmian w czasie. Z noty katalogowej widać, że przy prądzie kolektora 2mA, napięciu 5V i obciążeniu 100Ω maksymalna przenoszona częstotliwość to typowo 80 kHz. Do prostych przycisków, krańcówek i sygnału włączenia napięcia wystarczy nam zaledwie kilka Hz, także ten transoptor będzie w zupełności wystarczający. Jak to wygląda w przypadku sygnałów sterujących naszymi silnikami krokowymi? Informacji musimy szukać w nocie układu scalonego drivera. W projekcie zastosowaliśmy sterowniki Powerlolu ze scalakiem firmy Allegro A4989. W datasheet znajdujemy ważne dla nas informacje w sekcji tabeli Control Timing. Najkrótszy czas trwania sygnału kierunku wynosi 1μs zarówno dla stanu niskiego i wysokiego. Minimalny czas trwania okresu dla sygnału STEP to 2μs czyli 500kHz.

 

Rys.3d. Parametry transoptora PC817

 

To już stanowczo za dużo dla tego separatora. Konieczne jest zastosowanie transoptorów szybkich np. 6N137, które jak można przeczytać w dokumentacji przenoszą sygnał z prędkością nawet do 10 Mbit/s. Dla przykładu maksymalna szybkość portu równoległego naszego komputera to 2 Mbit/s, czyli powinno wystarczyć. Układ ten w przeciwieństwie do PC817 wymaga niestety podłączenia zasilania.

 

 Rys.3e. Czasy przełączania sygnałów STEP i DIR

 

Do pewnego odczytu odseparowanych sygnałów STEP i DIRECTION zastosowaliśmy przerzutnik Schmitta 74HC14. Cały schemat płyty głównej znajduje się poniżej.

 


 

Rys.3f. Schemat elektroniczny płyty głównej

 


Rys.3g. Nasza płyta główna, wyżej projekt w KiCAD niżej wykonanie w chińskiej płytkarni.

 

4. Sterownik silnika krokowego - Powerlolu


Sterownik ten jest większym mocowo zamiennikiem dla bardzo popularnego drivera Pololu na scalaku A4988. Oba są dostępne w sieci jako projekty open source, schematy i dokumentacje można ściągnąć za darmo. Pololu można znaleźć na wszelkich portalach aukcyjnych i sklepach z elektroniką. Do tego jest tanie jak barszcz i praktycznie nie opłaca się robić ich na własną rękę. Polecamy zamówić je na Fasttech.com. Są tam za nieco ponad 2$. Z Powerlolu natomiast jest trochę gorzej. Cena gotowca to poniżej 50EUR. Koszty oczywiście da się znacznie obniżyć wykonując je na własną rękę. Nasz silnik krokowy typu 57h76-3008b ma prąd znamionowy 4,2A. W sieci jest sporo różnych rodzajów sterowników dla takich mocy, my jednak zdecydowaliśmy się przetestować ten mało popularny Powerlolu. Porównajmy jeszcze najważniejsze parametry obu sterowników.

 

Porównanie Sterowników Pololu i Powerlolu
  Pololu A4988 Powerlolu A4989 Jednostka
Napięcie zasilające silnik 8-35 12-50 V
Napięcie na logikę 3-5,5 3-5,5 V
Maksymalny prąd silników 2 10 A
Podział kroku

1, ½, ¼, 1/8, 1/16

1, ½, ¼, 1/16

-

 

pololu

Rys.4a. Sterowniki Pololu

 

Zabieramy się do pracy. Ze strony internetowej: http://www.thingiverse.com/thing:40540 pobieramy potrzebne schematy i dokumentacje, wszystko zaprojektowane w darmowym oprogramowaniu Eagle. Płytki oczywiście można zmodyfikować do własnych potrzeb, my zmieniliśmy zworki na pinowe, złącza z ARK na szersze EDG i gniazdo sygnałowe na MOLEX. Rezystory i potencjometr pod napięcie referencyjne, którymi regulujemy maksymalny prąd obciążenia, są dobrane standardowo dla zasilania 3,3V. My jednak wykorzystujemy 5V dlatego musieliśmy nieco zmienić konfigurację dzielnika napięcia. Dodatkowo prąd maksymalny zależy od rezystorów podpiętych do wyjść SENSE, no i oczywiście od użytych tranzystorów(te dobrane wytrzymają 17A przy odpowiednim chłodzeniu), ale tego nie zmieniamy. Nasz silnik może pobierać maksymalnie 4,2A, prąd musimy więc ograniczyć. W dokumentacji znajdziemy wzór:

ITRIP(MAX)=VREF/(8xRSENSE).

Zakres regulacji napięcia VREF zawiera się w przedziale 0,8V do 2V. Podstawiając do wzoru żądane 5A przy VREF=2V otrzymujemy:

5=2/(8xRSENSE)

RSENSE=1/20=0,05 OHM

W schemacie open source mamy dobrane odpowiednio dwa rezystory po 0,1 ohma połączone równolegle, co daje żądane 0,05 ohma. My zastosowaliśmy takie same wartości. Pozostaje nam jeszcze kwestia doboru dzielnika napięcia. Wegług datasheet Vref może przyjąć wartości w przedziale do 0,8V do 2V. U nas dobraliśmy rezystor 4,3k + potencjometr 10k oraz rezystor 22k. Cały schemat przedstawiony jest na rysunku 4b. Jeżeli chcielibyśmy ustawić maksymalny prąd na 10A, ze wzoru powyżej obliczymy że musimy zastosować dwa rezystory równolegle po 0,05 OHM. Jeżeli logika ma być zasilana z napięcia niższego 3,3V rezystory będą miały wartości: 10k + potencjometr 20k oraz rezystor 22k.

Liczbę kroków silnika reguluje się za pomocą zworek przy pinach MS1 i MS2. Wygląda to tak jak w tabelce poniżej. Bez zworki pin ma wartość jedynki.

 

Ustawienie kroków silnika za pomocą zworek

MS2 MS1

Rozdzielczość mikrokroku

0 0

Cały krok

0 1

½ kroku

1 0

¼ kroku

1 1

1/16 kroku

Dodatkowo zworkami mamy możliwość wyboru trybu kluczowania tranzystorów pinami PFD1 oraz PFD2. Ma to wpływ na gaszenie prądu, ustawienia są różne w zależności od wybranego wcześniej podziału kroku. W naszym sterowniku wszystkie zworki są rozwarte, wtedy silnik pracuje najpłynniej.

Najdroższym elementem sterownika jest układ scalony, który to w TME kosztuje ponad 10zł. Można oczywiście napisać do firmy Allegro (nie mylić z portalem aukcyjnym) ze studencką prośbą o darmowe próbki. My tak zrobiliśmy i otrzymaliśmy 4 układy A4989 i do tego kilkanaście innych do sterowania silnikami całkowicie za darmo.

 

Rys.4b. Schemat elektroniczny sterownika Powerlolu 

 

Płytki PCB możemy zrobić sami lub zlecić je do wykonania firmie. W naszym sterowniku wymagany jest laminat dwustronny, do tego będzie w nim cała masa przelotek do zrobienia w bardzo małej szerokości ścieżkach. Pierwsze dwie płytki wykonaliśmy sami metodą termotransferu. Po godzinach wytrawiania, wiercenia i dniach lutowania mogliśmy testować prototypy. Nie były one jednak dokładnie wykonane, zabezpieczone, dlatego mieliśmy ciągłe problemy z ich użytkowaniem. Do tego z naszej winy wystąpiło kilka zwarć i układy firmy Allegro uległy uszkodzeniu. Zdecydowaliśmy się na wykonanie płytek PCB w Chinach, podobno tanio i jakość lepsza niż w polskich faktoriach. Skorzystaliśmy z oferty http://www.kikipcb.com/, płytki zamówiliśmy przed samymi świętami Bożego Narodzenia, a po nowym roku zostały już wysłane do Polski. Koszt całkowity to 22.90$ za 10 płytek w tym jedna testowa gratis. Policzmy zatem (22,90*3,5)/11 wychodzi nieco ponad 7zł za płytkę o bdb jakości z soldermaską, pocynowanymi padami, porobionymi przelotkami. Wniosek - płytki nie opłaca się robić w domu. Do tego doliczyć trzeba koszt elementów i płytka łącznie ze scalakiem wychodzi za mniej niż 50 zł a nie 50 EUR(ceny na rok 2014)!!!

 

Rys.4c. Płytki PCB, po lewej zrobiona metodą domową, po prawej zamówiona w Chinach

 

Do sterownika musi dochodzić 5 sygnałów od płyty głównej. Dwa to zasilanie 5V i masa do zasilania scalaka poza tym:

  • ENABLE (EN) – sygnał włączenia napięcia;

  • STEP – sygnał kroku silnika;

  • DIRECTION (DIR) – sygnał kierunku, w zależności od stanu niski lub wysoki to prawo lub lewo.

Z drugiej strony płytki podłączamy zasilanie maksymalnie 50VDC oraz odpowiednie cewki silnika bipolarnego. W zależności od połączenia, im mniejsza induktancja i większy prąd, osiągniemy wyższy moment. Powstałe z połączenia dwie fazy podpinamy pod skrajne wejścia PHASE oznaczone 1 i 2. Od tego jak podłączymy pod nie dwie pary przewodów silnik będzie się kręcił w lewo lub w prawo.

W silniku musimy dobrać prąd za pomocą rezystorów od Vref oraz rezystorów mocy(opisane wyżej).

 

Dane znamionowe silnika Krokowego
 

Kąt kroku

Napięcie

Prąd na fazę

Rezystancja na fazę

Induktancja na fazę

Moment trzymający

Bezwładność rotora

Waga

Typ połączenia

deg V A Ω mH Nm gcm2 kg

Unipolarny

1.8

2.76

3.0

0.92

2.2

1.4

480

1.0

Bipolarny (szeregowe)

3.86

2.1

1.84

8.8

2.0

Bipolarny (równoległe)

1.93

4.2

0.46

2.2

2.0

 

Rys.4d. Polutowana przez nas płytka PCB Powerlolu

 

 

 

5. Elementy wykonawcze


Jako wyjścia w płycie głównej wyprowadzone są piny MOLEX. Do wyjścia można podłączyć dowolny moduł na przykład:

  • transoptor z przekaźnikiem dla załączania napięć stałych;

  • optotriak i triak do przełączania napięć zmiennych;

  • transoptor z tranzystorem MOSFET do PWM;

  • zwykłą diodę sygnalizacyjną;

  • dowolny inny moduł wykonawczy.

My u siebie zastosowaliśmy moduły z triakiem, które załączają wrzeciono marki Kress. Wrzeciono uruchamia się automatycznie o ile w naszym G-kodzie będą dodane odpowiednie funkcje M03/M04 obroty prawe/lewe lub M05 - wyłączenie wrzeciona. Nie musimy podchodzić do wrzeciona i ręcznie wciskać przycisku załączającego. Wrzecionem można sterować też z klawiatury przez LinuxCNC - F9/F10 obroty prawe/lewe. Do tego modułu można podłączyć np. odkurzacz do wyciągania wiórów lub pompkę z płynem chłodzącym, o ile nie przekraczają maksymalnego obciążenia triaka.

 

Rys.5a. Schemat elektronicznego modułu z triakiem

 

Element wyjściowy jest sterowany napięciem 5V i jego prąd musi być ograniczony odpowiednim rezystorem. Elementy są podłączone szeregowo, a obliczenia wykonamy dla optotriaka MOC3041 i diody sygnalizacyjnej żółtej. W dokumentacji MOC3041 mamy podany spadek napięcia przy prądzie 30mA, jest to max 1,5V, a spadek napięcia na diodzie żółtej to 2,2V. Obliczamy:

5V-1,5V-2,2V=1,3V,

1,3V/0,030A≈43,3Ω.

Wartość najbliższego rezystora z szeregu E42 to 47Ω. Miejsce na rezystor ograniczający znajduje się w module wykonawczym, wyjście na diodę oczywiście można zewrzeć i dać odpowiednio większy rezystor ograniczający napięcie triaka. Triak BTA16 wytrzyma ciągłe obciążenie 16A prądu zmiennego sinusoidalnego przy odpowiednio dobranym radiatorze, czyli ponad 3000W. Płytka została zaprojektowana tak, aby pasowała do obudowy Z103 na szynę DIN. Obudowę można dostać w sklepach elektronicznych, np. w TME lub Lispol.

 

 

Rys.5b. Płytka układu wykonawczego. Otwory oraz krawędzie frezowane, ścieżki wykonane metodą termotansferu. 

 

 Pliki do pobrania


Dokumentacja w PDF
Płyta główna
Zasilacz
Zmodyfikowany Powerlolu
Wykonawczy triak

 

 INFO


 

Jeżeli ktoś byłby zainteresowany, pozostało nam sporo płytek PCB zamówionych w płytkarni, a także polutowanych sterowników i części. Więcej info w dziale: kontakt.

 SELL