Davide Gironi skonstruował automatyczną nawijarkę do przystawek gitarowych. Jeśli ktokolwiek z Was wykonywał kiedyś taki pick-up, to wie, jak trudne i jednocześnie, jak ważne jest dobre nawinięcie jego uzwojenia. Zaprezentowana nawijarka CNC pozwala istotnie uprościć ten proces.
Układ sterowany jest z pomocą mikrokontrolera ATmega8, który kontroluje wszystkie ruchy systemu. Autor postanowił w system wbudować szereg usprawnień, w porównaniu do jego poprzedniego projektu (który obejrzeć można tutaj). Podstawowe funkcje, jakie wbudowano w układ to:
* Licznik nawiniętych zwojów.
* Powolne rozpędzanie silnika nawijarki.
* Automatyczne zatrzymywanie nawijarki.
* Konfigurowalna ilość zwojów oraz prędkość ich nawijania.
* Dwa kierunki obrotów.
* Automatyzacja nawijania (CNC).
* Dynamiczna zmiana prędkości poprzecznej nawijarki.
* Wyświetlacz LCD pokazujący podczas pracy następujące parametry:
- Kierunek nawijania,
- Prędkość obrotową silnika nawijarki,
- Całkowita i aktualnie nawiniętą liczbę zwojów,
- Kierunek mechanizmu ruchu poprzecznego drutu nawojowego,
- Prędkość ruchu mechanizmu poprzecznego.
Nawijarka może pracować w trybie w pełni automatycznym (CNC) z włączonym poprzecznym ruchem podajnika drutu nawojowego lub w trybie półautomatycznym, pozwalającym na manualne podawanie drutu na obracający się pick-up.
Układ wyposażony jet w trzy przyciski, pozwalające konfigurować działanie nawijarki: SELECT, UP i DOWN. Mają one następujące funkcje:
* Krótkie naciśnięcie przycisku SELECT powoduje ruch mechanizmu poprzecznego o 1 mm.
* Długie naciśnięcie przycisku SELECT powoduje wejście/wyjście do trybu programowania. W tym trybie przycisku UP i DOWN zmieniają wybrane wartości, a krótkie naciśnięcie przycisku SELECT zatwierdza ustawienie i powoduje przejście do konfiguracji kolejnego parametru.
* Krótkie naciśnięcie przycisku UP powoduje zmianę kierunku nawijania.
* Długie naciśnięcie przycisku UP resetuje licznik.
* Krótkie naciśnięcie przycisku DOWN powoduje zmianę kierunku ruchu prowadnicy drutu.
* Długie naciśnięcie przycisku DOWN resetuje licznik.
Tak prezentuje się nawijarka podczas pracy:
Układ jest wyposażony, oprócz przycisków, w pedał pozwalający na kontrolę nawijania. W trybie nawijania cewki wystarczy nacisnąć pedał RUN, aby nawijarka rozpoczęła swoją pracę. Zacznie ona najpierw powoli rozkręcać silnik obracający cewką, a po dojściu do zaprogramowanej liczby zwojów, zatrzyma się. Puszczenie pedału RUN także spowoduje natychmiastowe zatrzymanie silnika.
Jeśli wyłączymy tryb automatycznego zatrzymywania, to nawijarka pracować będzie tak długo, jak trzymany będzie pedał. W tym trybie licznik zwojów także będzie zliczał ich ilość, niezależnie od kierunku nawijania.
Jako silnik kręcący cewką nawijarki wykorzystano tani silniczek DC na 12 V o prędkości nominalnej 1200 RPM. Silnik sterowany jest poprzez driver L298N.
Mechanizm poprzecznego ruchu podajnika drutu nawojowego wykonano w oparciu o elementy ze skanera. Poruszany jest on silnikiem krokowym skanera w poprzek kierunku ruchu drutu nawojowego.
Ruch podajnika drutu ograniczony jest dwoma transoptorami. Elementy te zamontowano na niewielkich magnesach neodymowych, dzięki czemu ich położenie dostosować można do wielkości i kształtu nawijanego uzwojenia.
Napinacz drutu nawojowego wykonano z sprężyny i kawałka filcu. Jest to bardzo prosta konstrukcja, ale dobrze spełnia swoje zadanie. Dyszę podajnika wykonano z elementu wyposażenia dentystycznego - plastikowej końcówki do odsysacza śliny. Otwór tego elementu jest bardzo mały, co zapewnia precyzyjne prowadzenie drutu, a z uwagi, że element ten jest plastikowy, to nie uszkadza on izolacji uzwojenia.
Licznik zwojów wykonany jest z sensora Halla i magnesu neodymowego, umocowanego na obracającej się przystawce, na którą nawijany jest drut.
Poprzeczny mechanizm z silnikiem krokowym oferuję rozdzielczość 5,29 µm/krok. Można w jego miejsce zamontować oczywiście precyzyjniejszy silnik krokowy, aby uzyskać wyższą rozdzielczość ruchu. Niezależnie od tego, przed rozpoczęciem pracy z urządzeniem, należy je skalibrować.
Przy każdej zmianie elementów podajnika drutu należy ustawić następujące stałe w programie:
* GUIDEMOTOR_1STEPUM,
* GUIDEMOTOR_1MMSTEP,
* GUIDEMOTOR_1CMMAXSPEEDTIMEMS,
* GUIDEMOTOR_1CMMINSPEEDTIMEMS,
* GUIDEMOTOR_FIXEDSPEED_DEFAULT,
* WIRE_MINGAUGE,
* WIRE_MAXGAUGE.
Aby skalibrować ruch podajnika, należy wykonać dwa proste kroki:
Trzeba zmierzyć odległość poprzeczną, jaką pokonuje podajnik drutu na jeden krok silnika. W tym celu ustawiamy GUIDEMOTOR_MEASURESTEP jako 1, a liczbę kroków, jaką ma ruszyć się podajnik zapisujemy pod zmienną GUIDEMOTOR_MEASURESTEPSTEPS. Kompilujemy tak zmieniony program i wgrywamy do mikrokontrolera. Teraz, po uruchomieniu układu, podajnik ruszy się zaprogramowaną ilość kroków, a my musimy jedynie zmierzyć całkowitą przebytą drogę i podzielić ją przez ilość kroków. Z tego wyliczyć możemy liczbę kroków na 1 mm i liczbę kroków na 1 µm.
Dla przykładu: ustawiliśmy ruch 20 tysięcy kroków, podczas którego podajnik przemieścił się o 106 mm. Jeśli teraz podzielimy te wartości przez siebie, to otrzymujemy następujące wartości: 188,879 kroków na mm i 5,29 kroku na µm. Wartości te zapisujemy w programie jako stałe - odpowiednio - GUIDEMOTOR_1MMSTEP oraz GUIDEMOTOR_1STEPUM.
Po zakończeniu tego etapu ustawiamy zmienną GUIDEMOTOR_MEASURESTEP z powrotem na 0.
Aby zmierzyć maksymalną i minimalną prędkość przesuwu podajnika drutu nawojowego, ustawiamy GUIDEMOTOR_MEASURESPEED na 1. Ponownie kompilujemy program i wgrywamy go do mikrokontrolera. Po uruchomieniu się programu na LCD możemy odczytać maksymalną i minimalną prędkość, jaką osiągnąć może silnik krokowy przesuwu podajnika drutu. Wartości, jakie odczytaliśmy z wyświetlacza zapisujemy w programie pod zmiennymi GUIDEMOTOR_1CMMAXSPEEDTIMEMS oraz GUIDEMOTOR_1CMMINSPEEDTIMEMS, a zmienną GUIDEMOTOR_MEASURESPEED ustawiamy znowu na 0.
Po ustawieniu powyższych wartości kalibracyjnych wpisać możemy inne wartości konfigurujące program: GUIDEMOTOR_FIXEDSPEED_DEFAULT, WIRE_MINGAUGE oraz WIRE_MAXGAUGE, które obliczamy z wykorzystaniem załączonego arkusza kalkulacyjnego (patrz link poniżej). Jeśli chcemy manualnie obliczać te wartości, to opis ich wyznaczania także znajduje się w dokumentacji. Do ich wyliczenia potrzebne są nam jedynie informacje opisujące nasz układ, które znamy.
Maksymalna i minimalna średnica drutu jest ważnym parametrem, który definiuje co i jak nawinąć może nasz system.
Nawijarka nawija uzwojenie w bardzo prostym wzorze, tak, że każdy kolejny zwój znajduje się dokładnie obok poprzedniego i tak warstwa po warstwie. Na poniższym zdjęciu mikroskopowym można zobaczyć, jak wygląda gotowe uzwojenie wykonane na opisywanej nawijarce:
Teraz przyjrzyjmy się bliżej samemu programowi kontrolującemu układ. Wymagał on trochę pracy, z uwagi m.in. na fakt, że wirnik obracający cewką nie kręci się cały czas z tą samą prędkością i przesuw drutu musi to uwzględniać, szczególnie jeśli wybraliśmy opcję z wolnym rozkręcaniem silnika nawijarki, albo kiedy nawijamy uzwojenie przy niewielkiej prędkości.
Silnik przesuwu kontrolowany jest poprzez przerwanie timera w mikrokontrolerze. Program musi wyznaczyć liczbę kroków, o jaką ruszyć ma silnik krokowy podajnika drutu na podstawie:
* liczby zwojów nawiniętych od ostatniego ruchu,
* aktualnej prędkości obrotowej silnika nawijarki,
* grubości drutu,
* odległości, jaką pokonuje na jeden krok silnik krokowy,
* maksymalnego i minimalnego czasu, jaki zajmuje pokonanie podajnikowi drutu 1 cm.
Aby wyznaczyć o jaką odległość przemieścić się musi podajnik drutu, aby kolejny zwój wypadł obok poprzedniego, program realizuje dosyć proste obliczenia:
Dalej jest trochę trudniej, szczególnie, że w programie wykorzystywane są tylko wartości całkowite (i trzeba zapamiętywać dodatkowo reszty z dzielenia):
Ale to nie wszystko! Musimy zadbać, o to, żeby silnik krokowy przesuwał podajnik z taką prędkością, aby drucik wypadał zaraz obok poprzedniego zwoju dokładnie, gdy nawijarka wykona dokładnie jeden obrót. Oczywiście nie chcemy wykonywać zbyt szybkich ruchów, ani zatrzymywać silnika nawijarki, więc musimy dokonać pewnych obliczeń, które zagwarantują nam płynny ruch:
Aby estymować prędkość silnika, jaka jest wymagana, program dokonuje prostego obliczenia:
Teraz obliczyć można, korzystając z zapisanej maksymalnej i minimalnej prędkości, czas w milisekundach, jaki potrzebny jest na ruch podajnika drutu o 1 cm, aby wyznaczyć, ile czasu potrzebne jest na ruch:
Dzięki temu uzyskujemy prędkość - od 1 do 100 - z jaką poruszać się musi silnik krokowy, przesuwający podajnik drutu. Jeśli w programie ustawimy zmienną GUIDEMOTOR_DEBUGSTEPANDSPEED na 1, to wyświetlacz podawać będzie aktualną prędkość i ilość pozostałych kroków silnika krokowego. Jest to przydatne np. podczas debugowania układu. Prędkość nigdy nie powinna być wyższa niż 100, a liczba kroków musi maleć - jeśli rośnie to oznacza, że nasz podajnik porusza się zbyt wolno.
Dalsze usprawnienia, jakie przewiduje zaimplementować autor, to interfejs UART, który pozwoli na kontrolowanie układu z poziomu komputera. Dzięki temu łatwo będzie można realizować bardziej skomplikowane wzoru nawoju.
Projekt stworzony został w środowisku Eclipse, skomplikowany został avr-gcc na ATmega8 pracującą przy częstotliwości zegara 16 MHz.
Kompletną dokumentację projektu (płytek drukowanych i kodu programu) odnaleźć można tutaj.
Źródło: http://davidegironi.blogspot.com/2016/06/a-cnc-pickup-winding-machine-built-on.html#.V1DMrjV94dU
Układ sterowany jest z pomocą mikrokontrolera ATmega8, który kontroluje wszystkie ruchy systemu. Autor postanowił w system wbudować szereg usprawnień, w porównaniu do jego poprzedniego projektu (który obejrzeć można tutaj). Podstawowe funkcje, jakie wbudowano w układ to:
* Licznik nawiniętych zwojów.
* Powolne rozpędzanie silnika nawijarki.
* Automatyczne zatrzymywanie nawijarki.
* Konfigurowalna ilość zwojów oraz prędkość ich nawijania.
* Dwa kierunki obrotów.
* Automatyzacja nawijania (CNC).
* Dynamiczna zmiana prędkości poprzecznej nawijarki.
* Wyświetlacz LCD pokazujący podczas pracy następujące parametry:
- Kierunek nawijania,
- Prędkość obrotową silnika nawijarki,
- Całkowita i aktualnie nawiniętą liczbę zwojów,
- Kierunek mechanizmu ruchu poprzecznego drutu nawojowego,
- Prędkość ruchu mechanizmu poprzecznego.
Nawijarka może pracować w trybie w pełni automatycznym (CNC) z włączonym poprzecznym ruchem podajnika drutu nawojowego lub w trybie półautomatycznym, pozwalającym na manualne podawanie drutu na obracający się pick-up.
Układ wyposażony jet w trzy przyciski, pozwalające konfigurować działanie nawijarki: SELECT, UP i DOWN. Mają one następujące funkcje:
* Krótkie naciśnięcie przycisku SELECT powoduje ruch mechanizmu poprzecznego o 1 mm.
* Długie naciśnięcie przycisku SELECT powoduje wejście/wyjście do trybu programowania. W tym trybie przycisku UP i DOWN zmieniają wybrane wartości, a krótkie naciśnięcie przycisku SELECT zatwierdza ustawienie i powoduje przejście do konfiguracji kolejnego parametru.
* Krótkie naciśnięcie przycisku UP powoduje zmianę kierunku nawijania.
* Długie naciśnięcie przycisku UP resetuje licznik.
* Krótkie naciśnięcie przycisku DOWN powoduje zmianę kierunku ruchu prowadnicy drutu.
* Długie naciśnięcie przycisku DOWN resetuje licznik.
Tak prezentuje się nawijarka podczas pracy:
Układ jest wyposażony, oprócz przycisków, w pedał pozwalający na kontrolę nawijania. W trybie nawijania cewki wystarczy nacisnąć pedał RUN, aby nawijarka rozpoczęła swoją pracę. Zacznie ona najpierw powoli rozkręcać silnik obracający cewką, a po dojściu do zaprogramowanej liczby zwojów, zatrzyma się. Puszczenie pedału RUN także spowoduje natychmiastowe zatrzymanie silnika.
Jeśli wyłączymy tryb automatycznego zatrzymywania, to nawijarka pracować będzie tak długo, jak trzymany będzie pedał. W tym trybie licznik zwojów także będzie zliczał ich ilość, niezależnie od kierunku nawijania.
Jako silnik kręcący cewką nawijarki wykorzystano tani silniczek DC na 12 V o prędkości nominalnej 1200 RPM. Silnik sterowany jest poprzez driver L298N.
Mechanizm poprzecznego ruchu podajnika drutu nawojowego wykonano w oparciu o elementy ze skanera. Poruszany jest on silnikiem krokowym skanera w poprzek kierunku ruchu drutu nawojowego.
Ruch podajnika drutu ograniczony jest dwoma transoptorami. Elementy te zamontowano na niewielkich magnesach neodymowych, dzięki czemu ich położenie dostosować można do wielkości i kształtu nawijanego uzwojenia.
Napinacz drutu nawojowego wykonano z sprężyny i kawałka filcu. Jest to bardzo prosta konstrukcja, ale dobrze spełnia swoje zadanie. Dyszę podajnika wykonano z elementu wyposażenia dentystycznego - plastikowej końcówki do odsysacza śliny. Otwór tego elementu jest bardzo mały, co zapewnia precyzyjne prowadzenie drutu, a z uwagi, że element ten jest plastikowy, to nie uszkadza on izolacji uzwojenia.
Licznik zwojów wykonany jest z sensora Halla i magnesu neodymowego, umocowanego na obracającej się przystawce, na którą nawijany jest drut.
Poprzeczny mechanizm z silnikiem krokowym oferuję rozdzielczość 5,29 µm/krok. Można w jego miejsce zamontować oczywiście precyzyjniejszy silnik krokowy, aby uzyskać wyższą rozdzielczość ruchu. Niezależnie od tego, przed rozpoczęciem pracy z urządzeniem, należy je skalibrować.
Przy każdej zmianie elementów podajnika drutu należy ustawić następujące stałe w programie:
* GUIDEMOTOR_1STEPUM,
* GUIDEMOTOR_1MMSTEP,
* GUIDEMOTOR_1CMMAXSPEEDTIMEMS,
* GUIDEMOTOR_1CMMINSPEEDTIMEMS,
* GUIDEMOTOR_FIXEDSPEED_DEFAULT,
* WIRE_MINGAUGE,
* WIRE_MAXGAUGE.
Aby skalibrować ruch podajnika, należy wykonać dwa proste kroki:
Trzeba zmierzyć odległość poprzeczną, jaką pokonuje podajnik drutu na jeden krok silnika. W tym celu ustawiamy GUIDEMOTOR_MEASURESTEP jako 1, a liczbę kroków, jaką ma ruszyć się podajnik zapisujemy pod zmienną GUIDEMOTOR_MEASURESTEPSTEPS. Kompilujemy tak zmieniony program i wgrywamy do mikrokontrolera. Teraz, po uruchomieniu układu, podajnik ruszy się zaprogramowaną ilość kroków, a my musimy jedynie zmierzyć całkowitą przebytą drogę i podzielić ją przez ilość kroków. Z tego wyliczyć możemy liczbę kroków na 1 mm i liczbę kroków na 1 µm.
Dla przykładu: ustawiliśmy ruch 20 tysięcy kroków, podczas którego podajnik przemieścił się o 106 mm. Jeśli teraz podzielimy te wartości przez siebie, to otrzymujemy następujące wartości: 188,879 kroków na mm i 5,29 kroku na µm. Wartości te zapisujemy w programie jako stałe - odpowiednio - GUIDEMOTOR_1MMSTEP oraz GUIDEMOTOR_1STEPUM.
Po zakończeniu tego etapu ustawiamy zmienną GUIDEMOTOR_MEASURESTEP z powrotem na 0.
Aby zmierzyć maksymalną i minimalną prędkość przesuwu podajnika drutu nawojowego, ustawiamy GUIDEMOTOR_MEASURESPEED na 1. Ponownie kompilujemy program i wgrywamy go do mikrokontrolera. Po uruchomieniu się programu na LCD możemy odczytać maksymalną i minimalną prędkość, jaką osiągnąć może silnik krokowy przesuwu podajnika drutu. Wartości, jakie odczytaliśmy z wyświetlacza zapisujemy w programie pod zmiennymi GUIDEMOTOR_1CMMAXSPEEDTIMEMS oraz GUIDEMOTOR_1CMMINSPEEDTIMEMS, a zmienną GUIDEMOTOR_MEASURESPEED ustawiamy znowu na 0.
Po ustawieniu powyższych wartości kalibracyjnych wpisać możemy inne wartości konfigurujące program: GUIDEMOTOR_FIXEDSPEED_DEFAULT, WIRE_MINGAUGE oraz WIRE_MAXGAUGE, które obliczamy z wykorzystaniem załączonego arkusza kalkulacyjnego (patrz link poniżej). Jeśli chcemy manualnie obliczać te wartości, to opis ich wyznaczania także znajduje się w dokumentacji. Do ich wyliczenia potrzebne są nam jedynie informacje opisujące nasz układ, które znamy.
Maksymalna i minimalna średnica drutu jest ważnym parametrem, który definiuje co i jak nawinąć może nasz system.
Nawijarka nawija uzwojenie w bardzo prostym wzorze, tak, że każdy kolejny zwój znajduje się dokładnie obok poprzedniego i tak warstwa po warstwie. Na poniższym zdjęciu mikroskopowym można zobaczyć, jak wygląda gotowe uzwojenie wykonane na opisywanej nawijarce:
Teraz przyjrzyjmy się bliżej samemu programowi kontrolującemu układ. Wymagał on trochę pracy, z uwagi m.in. na fakt, że wirnik obracający cewką nie kręci się cały czas z tą samą prędkością i przesuw drutu musi to uwzględniać, szczególnie jeśli wybraliśmy opcję z wolnym rozkręcaniem silnika nawijarki, albo kiedy nawijamy uzwojenie przy niewielkiej prędkości.
Silnik przesuwu kontrolowany jest poprzez przerwanie timera w mikrokontrolerze. Program musi wyznaczyć liczbę kroków, o jaką ruszyć ma silnik krokowy podajnika drutu na podstawie:
* liczby zwojów nawiniętych od ostatniego ruchu,
* aktualnej prędkości obrotowej silnika nawijarki,
* grubości drutu,
* odległości, jaką pokonuje na jeden krok silnik krokowy,
* maksymalnego i minimalnego czasu, jaki zajmuje pokonanie podajnikowi drutu 1 cm.
Aby wyznaczyć o jaką odległość przemieścić się musi podajnik drutu, aby kolejny zwój wypadł obok poprzedniego, program realizuje dosyć proste obliczenia:
Code: c
Dalej jest trochę trudniej, szczególnie, że w programie wykorzystywane są tylko wartości całkowite (i trzeba zapamiętywać dodatkowo reszty z dzielenia):
Code: c
Ale to nie wszystko! Musimy zadbać, o to, żeby silnik krokowy przesuwał podajnik z taką prędkością, aby drucik wypadał zaraz obok poprzedniego zwoju dokładnie, gdy nawijarka wykona dokładnie jeden obrót. Oczywiście nie chcemy wykonywać zbyt szybkich ruchów, ani zatrzymywać silnika nawijarki, więc musimy dokonać pewnych obliczeń, które zagwarantują nam płynny ruch:
Aby estymować prędkość silnika, jaka jest wymagana, program dokonuje prostego obliczenia:
Code: c
Teraz obliczyć można, korzystając z zapisanej maksymalnej i minimalnej prędkości, czas w milisekundach, jaki potrzebny jest na ruch podajnika drutu o 1 cm, aby wyznaczyć, ile czasu potrzebne jest na ruch:
Code: c
Dzięki temu uzyskujemy prędkość - od 1 do 100 - z jaką poruszać się musi silnik krokowy, przesuwający podajnik drutu. Jeśli w programie ustawimy zmienną GUIDEMOTOR_DEBUGSTEPANDSPEED na 1, to wyświetlacz podawać będzie aktualną prędkość i ilość pozostałych kroków silnika krokowego. Jest to przydatne np. podczas debugowania układu. Prędkość nigdy nie powinna być wyższa niż 100, a liczba kroków musi maleć - jeśli rośnie to oznacza, że nasz podajnik porusza się zbyt wolno.
Dalsze usprawnienia, jakie przewiduje zaimplementować autor, to interfejs UART, który pozwoli na kontrolowanie układu z poziomu komputera. Dzięki temu łatwo będzie można realizować bardziej skomplikowane wzoru nawoju.
Projekt stworzony został w środowisku Eclipse, skomplikowany został avr-gcc na ATmega8 pracującą przy częstotliwości zegara 16 MHz.
Kompletną dokumentację projektu (płytek drukowanych i kodu programu) odnaleźć można tutaj.
Źródło: http://davidegironi.blogspot.com/2016/06/a-cnc-pickup-winding-machine-built-on.html#.V1DMrjV94dU
Cool? Ranking DIY