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ę
}
}
}







