Aż mnie to zaciekawiło i postanowiłem poświecić kawałek nocy żeby to sprawdzić. Przecież to nie może być trudne...samezrp pisze:Ma działać tak, żeby zapobiegło pierdolnięciu czujnika w stół jeśli zapomnę go odłączyć a puszczę druk czy wymuszę zjazd głowicy.
W skrócie - prosto i tylko programowo to się nie da.
Od strony programowej: teoretycznie to już tak działa. Tak wynika z opisów, podobnie można wywnioskować z pierdyliarda instrukcji warunkowych (a przeglądanie tego w "notatniku" jest upierdliwe, zwłaszcza jak IDE Arduinowe nie pokazuje co jest kompilowane) oraz licznych postów w sieci. Kijem w tej kupie jest fakt że tu mamy DELTĘ i programowe endstopy co komplikuje sprawę niebywale. No i to działa jak działa, czyli nie działa. Czyli w kontekście Arduina - normalka
Jednak - jestem hardkorem i mnie takie pierdoł nie powstrzymają. Pomyślałem chwilę i wpadłem na to jak stosunkowo prostymi zmianami w kodzie zrobić tak żeby działało (instrukcja na końcu posta).
Ale to wciąż tylko pół drogi.
Dochodzimy do sprzętu: czujnik jest normalnie zamknięty. Czyli wjechanie w stół go rozwiera. Sensowne.
Niestety tutaj potykamy się o element właśnie tego zabezpieczenia - wypięcie czujnika (czyli normalna praca) również jest stanem aktywnym... Innymi słowy - jeśli to ma działać to trzeba zmienić logikę pracy sprzętu i to już na poziomie wspomnianego czujnika. Praktycznie sprowadza się to do tego: Czerwony krzyżyk nie oznacza skarbu tylko ścieżkę którą trzeba przeciąć. Zielona kreseczka to pożądane połączenia. Prościej chyba nie da się tego opisać - jeśli ktoś nie czuje się na siłach może oddać płytkę starszemu bratu. Albo babci
(koniec posta - zapowiedziana instrukcja modyfikacji Marlina 1.1.9 - w poprzednich jest pewnie tak samo ale nie sprawdzałem)
Nie odpowiadam za straty wynikłe z zadziałania, lub nie, tego poniżej
Configuration.h
1. Z_MIN_ENDSTOP_INVERTING -> true
2. Z_MIN_PROBE_ENDSTOP_INVERTING -> true
Endstops.cpp
3. (linia 53; zamienic "false" na "true")
volatile bool Endstops::z_probe_enabled = true;
4. (linia 243; zakomentowac linię, tj wstawić "//" na poczatku)
//z_probe_enabled = onoff;
Tak popatrzyłem na to wszystko...chyba łatwiej pamiętać o czujniku
Jeśli jest tu jakiś smiałek potrafiący zrobić to normalnie, to miło żeby się odezwał. Chętnie się dowiem co i jak.
edit.
Uprzedzając pytania dlaczego tak a nie inaczej:
- jak wspomniałem - to teoretycznie powinno teraz działąć bo PROBE jest tożsame z Z_MIN. Słowem klucz jest "teoretycznie",
- sam czujnik (PROBE) działa prawidłowo i też zatrzymuje jazdę - ale tylko na żądanie; wystarczy wymusić jego pracę cały czas (krok 3 i 4) i jest jak trzeba