Poszło o częstotliwość PWM.
Otóż wtedy gdy założyłem wątek, wyciąłem co miałem do wycięcia, więc temat odłożyłem na później, bo inne sprawy były ważniejsze...
Wczoraj znalazłem trochę czasu
Robiąc pomiary stwierdziłem, że moc lasera zmienia się bardzo nieliniowo (800 to tylko 50% tego co 1000), a do tego jeszcze przy wartościach poniżej 800 (jak wspominałem wcześniej), dzieją się cuda, zasilacz wpada w jakieś oscylacje, rzęzi i wskazówka miliamperomierza wariuje, co doskonale zgadza się z opisywanym na początku problemem...
Zacząłem szukać informacji na temat budowy zasilacza lasera K40 i jego współpracy z PWM w ogólności i GRBL w szczególności.
Otóż znalazłem, że można pod wejście fabrycznie podpięte do potencjometru podłączyć PWM o częstotliwości 20 kHz.
Sprawdziłem źródła GRBL i okazało się, że domyślnie PWM pracuje z częstotliwością 0,98 kHz, czyli by wychodziło że za mało...
Tutaj jest problem z preskalerem użytego timera. Nie wchodząc niepotrzebnie w szczegóły, da się ustawić częstotliwości: 62,5 7,8125 1,96 0,98 0,49 0,245 i 0,061 kHz. Innych wartości nie da się uzyskać bez wymiany kwarcu, co z innych powodów nie wchodzi w grę.
Skompilowałem więc firmware na 7,8 kHz i było dużo lepiej, choć przy pewnych ustawieniach zasilacz piszczał.
Co ciekawe, ta wartość jest skomentowana "(Used in v0.9)"...
I to by się zgadzało!
Na 99% poprzedni sterownik był V0.9, bo to była najnowsza wersja kiedy kupowałem laser.
Po cholerę zmienili cichaczem 8 kHz na 1 kHz nie wiadomo, pewnie jakieś powody były...
Szczerze mówiąc wcale mnie to nie dziwi, bo twórcy GRBL dużo większe głupoty mają na sumieniu...
Trochę mnie wkurzały te piski z zasilacza, bo niczego dobrego nie wróżą.
Postanowiłem więc jeszcze trochę pokombinować.
Mam takie moduły https://www.aliexpress.com/item/4001315452325.html więc jeden podłączyłem.
To są płytki od Mach3, standardowo sterowane PWM o częstotliwości 500 Hz, chociaż sprzedawca twierdzi że 1-3 kHz.
Pomierzyłem dobrym sprzętem i okazało się że co prawda przy 1000 Hz działa, ale jest już nieliniowa zależność wypełnienie/napięcie, a przy 500 Hz prawie idealnie...
Wyżej nie sprawdzałem, bo nie miałem motywacji...
Źródła GRBL nie zawierają linii odpowiadającej PWM 500 Hz, ale taką wartość da się uzyskać dopisując w cpu_map.h :
Kod: Zaznacz cały
#define SPINDLE_TCCRB_INIT_MASK ((1<<CS22) | (1<<CS20)) // 1/128 prescaler -> 0.49kHz (Mach3 0-10V modules)
Jest jeszcze taka sprawa, że moduł od Mach3 wytrzymuje napięcie zasilania 24V dostępne w zasilaczu, ale daje na wyjściu sygnał 0-10V zamiast potrzebnego 0-5V. Tutaj wystarczy dzielnik na dwóch rezystorach, ja dałem potencjometr montażowy 2k2, bo akurat miałem pod ręką.
Ogólnie działa dobrze, mam trochę nieliniowości w okolicach 90-100%, może da się to wyregulować, ale dzisiaj to już mi się nie chce...