Spisu treści:
- Krok 1: Materiały, narzędzia, urządzenia używane do uruchomienia projektu
- Krok 2: Sprzęt, który trzeba było zrobić
- Krok 3: Kodowanie Arduino
- Krok 4: Oprogramowanie Visual Studio C#
- Krok 5: Wyniki
Wideo: Narzędzie do pomiaru prędkości posuwu CNC wykonane ze złomu: 5 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:32
Czy ktoś kiedykolwiek chciał zmierzyć rzeczywistą prędkość posuwu na maszynie CNC? Prawdopodobnie nie, dopóki frezy nie zostaną nienaruszone po pracy CNC… ale kiedy zaczynają się regularnie łamać, może nadszedł czas, aby to zbadać. W tej instrukcji możesz wykonać zadanie określające rzeczywistą prędkość posuwu maszyny CNC. Obejmie część drukarki, oprogramowanie układowe arduino, oprogramowanie PC i wyniki, które uzyskałem z pomocą kolegów, a także śmieci zamienione w skarb.
Krok 1: Materiały, narzędzia, urządzenia używane do uruchomienia projektu
Kiedy zacząłem nad tym pracować, wymyśliłem krótką listę rzeczy, których będziemy potrzebować:
- zdemontowany mechanizm karetki drukarki
- narzędzia ręczne do poprawienia tego
- lutownica, lut, przewody
- multimetr
- oscyloskop lub analizator stanów logicznych – nie jest to absolutnie konieczne
- zasilacz
- mikroskop
- Arduino nano + pinout
- PC z Arduino IDE, Visual Studio 2008 Express + zainstalowane narzędzia MS Charting
- (MPU6050 - skończyło się na tym, że tego nie używałem)
- chętny do przeglądania wszystkiego, czego nie wiesz, jak zrobić
Na początku myślałem, że płytka MPU6050 pozwoli mi mierzyć posuwy na wszystkich trzech osiach jednocześnie. Mając w środku akcelerometr, byłem pewien, że zsumowanie danych akcelerometru da mi pożądaną wartość - prędkość na każdej osi. Po pobraniu i zmodyfikowaniu fragmentu Arduino, który wyświetlał surowe dane na monitorze szeregowym, napisałem w Visual Studio mały program na PC, który przetwarzał dane i wykreślał je na wykresie w celu łatwiejszej interpretacji. Musiałem pobrać zarówno Visual Studio C# Express 2008, jak i narzędzia do tworzenia wykresów.
Po pewnym czasie kodowania i sprawdzania wszystkich rzeczy, których potrzebowałem do komunikacji szeregowej, skończyłem z wykreślonymi wartościami, ale bez względu na to, co zrobiłem, nie nadawał się do użytku. Małe, ale nagłe ruchy skutkowałyby ogromnymi skokami, podczas gdy dłuższe podróże nawet nie pojawiałyby się na mapach. Po dwóch dniach wbijania młotków w MPU6050, w końcu się poddałem i zwróciłem się do czegoś innego – do zdemontowanego mechanizmu sprzężenia zwrotnego położenia drukarki.
Krok 2: Sprzęt, który trzeba było zrobić
Inżynieria odwrotna
Oczywiście mechanizm drukarki nie miał numeru części, którego mógłbym użyć do określenia jego dokładnych właściwości, trzeba było trochę odwrócić, aby dostać się tam, gdzie chcieliśmy. Po dokładnym zbadaniu mechanizmu i elektroniki uznałem, że pierwszą rzeczą jest identyfikacja pinów czujnika optycznego. Musiało to zostać zrobione, aby połączyć całość z Arduino. Zdemontowałem czarną plastikową część, wyciągnąłem płytkę i sprawdziłem czujnik: miał na nim napis ROHM RPI-2150. To mnie ucieszyło, miałam nadzieję, że znajdę arkusz danych. Niestety, jest to albo stara, albo niestandardowa część – nigdzie w sieci nie można było znaleźć arkusza danych. Oznaczało to, że musiałem wziąć sprawy w swoje ręce: wiedząc, że te czujniki zwykle mają w środku diodę podczerwieni i dwa fototranzystory, chwyciłem multimetr, ustawiłem go w tryb pomiaru diody i zacząłem mierzyć między pinami.
Wyprowadzenia zasilania są zazwyczaj łatwe do odnalezienia – będą miały na sobie kondensatory i są zwykle połączone szerokimi ścieżkami na płytkach drukowanych. Ślady uziemienia są często połączone z wieloma padami w celu lepszego tłumienia szumów.
Piny wejściowe i wyjściowe nie są jednak tak trywialne. Podczas pomiaru przez diodę miernik pokaże swoje napięcie przewodzenia w jednym kierunku i przeciążenie (nieskończone) w drugim. Udało mi się zidentyfikować cztery diody między pinami, doszedłem do wniosku, że czwarta dioda musi być jakaś diodą Zenera lub TVS, ponieważ znajdowała się dokładnie między pinami zasilania komponentu. Zlokalizowanie emitera podczerwieni było łatwe, połączono z nim szeregowo rezystor 89R. Zostały mi dwa pomiary diod na pozostałych dwóch pinach, to musiały być dwa odbiorniki.
Uwaga: Czujniki te mają dwa odbiorniki, aby oprócz określania pozycji poprzez zliczanie impulsów, można było określić kierunek ruchu. Te dwa przebiegi wyjściowe są przesunięte w fazie o 90°, co służy do wytworzenia impulsu zliczającego lub odliczającego. Śledząc liczbę tych impulsów można określić dokładną pozycję głowicy drukującej.
Po zlokalizowaniu emitera i dwóch odbiorników przylutowałem przewody na ich pinach, aby móc połączyć czujnik z Arduino. Wcześniej zasiliłem czujnik napięciem 3,3V, kilka razy przeciągnąłem pasek między czujnikiem i zaobserwowałem falę prostokątną na wyjściach. Częstotliwość fali prostokątnej zmieniała się wraz z prędkością ruchu i doszedłem do wniosku, że system pomiarowy jest teraz gotowy do podłączenia do Arduino.
Podłączanie Arduino
Podłączenie tego nowego „czujnika” jest bardzo proste. Wystarczy podłączyć wyjścia czujników do D2 i D3 (piny z możliwością przerwania!), a przewody zasilające i można rozpocząć kodowanie.
Krok 3: Kodowanie Arduino
Kod Arduino jest dość prosty. Przypisałem funkcję, która wykonuje się za każdym razem, gdy D2 widzi zbocze narastające, jest to funkcja elapse z dołączonego kodu Arduino. Jeśli spojrzysz na sygnały enkodera kwadratowego, zobaczysz to:
- w jednym kierunku faza A jest logicznie wysoka na każdej fazie B zbocze narastające
- w przeciwnym kierunku faza A jest logicznie niska na każdej fazie B zbocze narastające
To była właściwość enkodera, z którego skorzystałem: ponieważ funkcja elapse jest wykonywana za każdym razem, gdy D2 ma zbocze narastające, napisałem po prostu if, który inkrementuje licznik, gdy D3 jest wysoki, i dekrementuje go, gdy D3 jest niski. To zadziałało przy pierwszej próbie, wysłałem wartość licznika do monitora szeregowego i obserwowałem, jak wzrasta/zmniejsza się, gdy przesunąłem głowicę drukarki na wale.
Krótko mówiąc, oprogramowanie układowe wykonuje następujące czynności w funkcji pętli:
- sprawdza bufor odbioru szeregowego pod kątem wszelkich przychodzących danych
- jeśli są dane przychodzące, sprawdź, czy jest to „1”, czy nie
- jeśli jest to „1”, oznacza to, że oprogramowanie PC żąda wartości licznika
- wyślij wartość licznika do komputera przez port szeregowy
- zacznij od nowa o 1.
Dzięki temu piłka jest teraz na boisku oprogramowania komputerowego. Przejdźmy do tego!
Krok 4: Oprogramowanie Visual Studio C#
Celem programu VS C# było przeniesienie obciążenia obliczeniowego z Arduino na komputer PC. To oprogramowanie odbiera dane dostarczane przez Arduino, oblicza i wyświetla prędkość w formie wykresu.
To, co najpierw zrobiłem, to google, jak zrobić komunikację szeregową w C#. Znalazłem wiele dobrych informacji na MSDN.com wraz z dobrym przykładem, a potem po prostu wyrzuciłem to, czego nie potrzebowałem - w zasadzie wszystko oprócz części do czytania. Ustawiłem port COM i prędkość tak, aby pasowały do Arduino, a następnie po prostu wykonałem kilka prób i zrzuciłem wszystko, co pojawiło się na porcie szeregowym, do wielowierszowego pola tekstowego.
Po odczytaniu wartości mogłem po prostu użyć funkcji readto & split, aby odizolować jeden pomiar od siebie i od znaków ogranicznika. Zostały one wykreślone na kontrolce Chart, a wartości zaczęły pojawiać się na ekranie.
Jeśli nie widzisz kontrolki Wykres w przyborniku VS, możesz wygooglować problem i znaleźć rozwiązanie tutaj (poszukaj odpowiedzi nr 1): link
Zasada pomiaru
Aby znaleźć związek między liczbą zliczeń a odległością przebytą przez głowicę, wyzerowaliśmy wartość zliczenia, przesunęliśmy ręcznie głowicę drukarki o 100 mm i obserwowaliśmy zmianę zliczeń. W końcu wymyśliliśmy następującą proporcję: 1 liczba = 0,17094 mm.
Ponieważ możemy zapytać o odległość i zmierzyć czas między próbkami, możemy obliczyć szybkość, z jaką następuje przesunięcie pozycji - możemy obliczyć prędkość!
Dzięki TMR0 istnieje zgrubne taktowanie oprogramowania wynoszące 50 ms, ale zauważyliśmy, że te czasy nie były zbyt dokładne. W rzeczywistości, po kilku pomiarach prędkości oprogramowania, stwierdziliśmy, że czasowe 50 ms wcale nie jest 50 ms. Oznaczało to, że próbki nie były pobierane w ustalonych odstępach czasu, więc obliczenia prędkości również nie mogły korzystać ze stałej podstawy czasu. Gdy znaleźliśmy ten problem, łatwo było przejść dalej: wzięliśmy różnicę w odległości i różnicę w czasie i obliczyliśmy prędkość jako D_distance/D_time (zamiast D-distance/50ms).
Ponadto, ponieważ nasze równanie zwróciłoby prędkość w jednostkach mm/50ms, musimy pomnożyć to przez 1200, aby otrzymać odległość, jaką przebyłaby głowa w ciągu jednej minuty, w [mm/minutę].
Uwaga: oprogramowanie sterujące frezarką Mach 3 CNC definiuje posuwy w jednostkach [mm/minutę]
Filtracja
Od tego momentu pomiary wydawały się dość dokładne, ale na mierzonym sygnale pojawił się pewien szum. Podejrzewaliśmy, że jest to spowodowane mechanicznymi niespójnościami wału, sprzęgła wału, itp., więc postanowiliśmy to odfiltrować, aby uzyskać ładną średnią wartość tego, co jest mierzone.
Drobne poprawki w oprogramowaniu
Aby zmienić częstotliwość próbkowania i częstotliwość filtrowania w czasie pracy, dodano paski przewijania - po jednym dla każdego. Wprowadzono również możliwość ukrycia wątków.
Krok 5: Wyniki
Gdy części sprzętowe i programowe były gotowe, przeprowadziliśmy trzy zestawy pomiarów za pomocą macha 3 + moje oprogramowanie, wyniki można zobaczyć na załączonych zdjęciach. Późniejsze eksperymenty wykazały lepszą dokładność, ze zwiększonymi częstotliwościami filtrowania i próbkowania. Wykresy pokazują zmierzoną prędkość na czerwono, a średnią na niebiesko.
Biorąc to pod uwagę, wygląda na to, że Mach 3 całkiem dokładnie radzi sobie z tymi ustawieniami prędkości, ale teraz wiemy na pewno:)
Mam nadzieję, że spodobała Ci się ta krótka instrukcja o inżynierii odwrotnej i zamianie wody w wino!
Pozdrawiam!
Zalecana:
Głośniki wykonane z materiałów pochodzących z recyklingu i ponownie wykorzystanych: 6 kroków
Głośniki wykonane z materiałów pochodzących z recyklingu i ponownie wykorzystanych: „Muzyka jest uniwersalnym językiem ludzkości” - Henry Wadsworth LongfellowOto dobry sposób na stworzenie świetnie brzmiącego zestawu głośników z materiałów pochodzących z recyklingu. A najlepsze jest to, że nie kosztowały mnie ani grosza. Wszystko w tym pr
Pipboy zbudowany ze złomu: 26 kroków (ze zdjęciami)
Pipboy Built From Scrap: To mój działający Pipboy, zbudowany z przypadkowych śmieci z garażu i nalotu na moje zapasy komponentów elektronicznych. Uważam, że jest to wymagająca wersja i zajęło mi to kilka miesięcy pracy, więc nie zaklasyfikowałbym tego jako projekt dla początkujących. S
Ręcznie wykonane gniazdo ładowarki samochodowej: 7 kroków
Hand Made Car Charger Socket: Podczas naszych ostatnich wakacji w Norwegii wynajęliśmy furgonetkę, która będzie używana jako kamper; w tym surowym zakwaterowaniu brakuje jednego „luksusu”; był brak punktu ładowania USB z tyłu furgonetki, czyli w części sypialnej, zasilanej nawet przy wyłączonym kluczyku
Łatwe budzenie: inteligentne światło do budzenia wykonane za pomocą Raspberry Pi: 6 kroków
Easy Wake-Up: Inteligentne światło do budzenia wykonane za pomocą Raspberry Pi: Wprowadzenie Do programu nauczania Project1 musiałem coś zrobić. Zawsze byłem zafascynowany tym, jak światło do pobudki może pomóc Ci obudzić się tak, jak te od Philipsa. Postanowiłem więc zrobić światło do pobudki. Zrobiłem światło budzenia za pomocą Raspberr
Wykonane z Marsa: 9 kroków
Made of Mars: Ten projekt zaczął się jako wyzwanie projektowe, kiedy mój przyjaciel J.R. Skok (geolog planetarny w Instytucie SETI) dostarczył mi kilka bazaltowych tkanin, aby stworzyć coś modnego. Tkaniny te zostały wykonane z lawy wulkanicznej, którą wydobywano, topiono