W tym artykule wykorzystamy dwa wyłączniki krańcowe endstop oraz silnik krokowy, będziemy go uruchamiać za pomocą komendy i będzie się kręcił do póki nie napotka endstopu. Następnie odczeka wyznaczony czas i zacznie się kręcić w drugą stronę aż nie dotknie drugiego endstopu. Wtedy program się zakończy i do ponownego go włączenia będzie trzeba użyć komendy.


Spis treści
- Krótki opis
- Specyfikacja
- Wykorzystane komponenty
- Podłączenie
- Zaprogramowanie
- Działanie w praktyce
- Pliki do pobrania
Krótki opis
Krańcówka z przewodem do drukarek 3D. Zabezpiecza przed wyjechaniem głowicy lub wózka w drukarce poza obszar działania. W zestawie z przewodem. Jest kompatybilny z RAMPS 1.4.
Specyfikacja
- Czerwony przewód VCC (ramps of +)
- Czarny przewód GND (ramps of -)
- Zielony przewód SIGNAL (ramps in s)
- Długość kabla: 70cm
- Moduł posiada diody LED sygnalizujące zadziałanie krańcówki
- Zabezpiecza przed wyjechaniem głowicy lub wózka w drukarce
- Jest kompatybilny z RAMPS 1.4
Wykorzystane komponenty
- Arduino
- Płytka stykowa
- L293D 2-kanałowy sterownik silnika Arduino
- Endstop mechaniczny
- Silnik krokowy 17Hs08 1004S
Podłączenie
Zaczniemy od podłączenia sterownika silnika do Arduino. Do VCC podłączamy 5V z arduino, GND do GND, IN1 do pinu 11, IN2 do pinu 10, IN3 do pinu 9, IN4 do pinu 8. Z drugiej strony sterownika podłączamy silnik A- czarny przewód, A+ zielony przewód, B- czerwony przewód, B+ niebieski przewód. Zasilanie zewnętrzne 3,6V podłączamy do VIN “+” i GND “-“.
Teraz podłączymy endstopy, obydwa musimy wpiąć do zasilania 5V (czerwony przewód) i GND(czarny przewód). Teraz sygnał(zielony przewód) wpinamy do pinów 7 i 6.
Całe połączenie znajduje się poniżej.

Zaprogramowanie
Aby uruchomić silnik w monitorze portu szeregowego trzeba wpisać START. Po dotknięciu endstopu silnik powinien się zatrzymać odczekać 3 sekundy i kręcić się w drugą stronę. Po wciśnięciu drugiego endstopu silnik powinien się zatrzymać, a program powinien czekać na ponowne wpisanie komendy START.
#include <Stepper.h> #define IN1 8 #define IN2 9 #define IN3 10 #define IN4 11 #define END1 7 #define END2 6 #define KROKI 10 String komenda; Stepper krokowy(KROKI, IN1, IN2, IN3, IN4); void setup() { Serial.begin(9600); pinMode(IN1, OUTPUT); //ustawienie IN1 jako wyjście pinMode(IN2, OUTPUT); //ustawienie IN2 jako wyjście pinMode(IN3, OUTPUT); //ustawienie IN3 jako wyjście pinMode(IN4, OUTPUT); //ustawienie IN4 jako wyjście pinMode(END1, INPUT); //ustawienie END1 jako wejście pinMode(END2, INPUT); //ustawienie END2 jako wejście krokowy.setSpeed(800); //ustawiamy prędkość obrotów silnika } void loop() { komenda = Serial.readStringUntil('\n');//wczytanie komendy z monitora portu szeregowego if (komenda == "START") { while (digitalRead(END1) == HIGH) //do póki pierwszy endstop nie zostanie wciśnięty rób obrót w prawo { krokowy.step(KROKI); //wykorzystanie funkcji step, w miejsce argumentu wpisujemy KROKI, aby silnik kręcił się zgodnie z ruchem zegara } delay(3000);//odczekaj określoną liczbę sekund while (digitalRead(END2) == HIGH) //do póki drugi endstop nie zostanie wciśnięty rób obrót w lewo { krokowy.step(-KROKI); //wykorzystanie funkcji step, w miejsce argumentu wpisujemy -KROKI, aby silnik obracał się w drugą stronę } } }