Projekt zrealizowany przez użytkownika @jimboston

Opis projektu
Projekt ma na celu stworzenie automatycznego sterownika prasy do czarnego prochu. Układ bazuje na mikrokontrolerze Arduino, który w kolejnych krokach procesu:
- Sprawdza stan drzwi zabezpieczających, wymuszając ich zamknięcie przed rozpoczęciem cyklu.
- Weryfikuje obecność kasety i naboju za pomocą czujników krańcowych.
- Uruchamia siłowniki mechaniczne i hydrauliczne w zaprogramowanej kolejności z określonymi opóźnieniami.
- Kontroluje dozowanie proszku oraz wykonuje ruch silnikiem krokowym o zadanej liczbie kroków.
- Umożliwia awaryjne wznowienie lub zatrzymanie procesu za pomocą przycisków CHECK i STOP.
Dodatkowe stany obsługują sytuacje wyjątkowe (brak kasety, naboju lub proszku) i pozwalają na powtórzenie lub bezpieczne zakończenie pracy.
Uwaga: Program nie został dotychczas przetestowany w warunkach rzeczywistych – zaleca się przeprowadzenie prób kontrolnych i weryfikację wszystkich sygnałów oraz mechanizmów bezpieczeństwa przed podłączeniem do właściwego układu hydrauliczno-mechanicznego.
Podłączenie do Arduino
| Nazwa | Pin | Opis |
|---|---|---|
| sens_door | 2 | Czujnik drzwi – LOW = drzwi zamknięte |
| button_start | 3 | Przycisk START – LOW = wciśnięty |
| sens_case | 4 | Czujnik obecności kasety – LOW = kaseta obecna |
| sens_bullet | 5 | Czujnik naboju – LOW = nabój obecny |
| button_check | 6 | Przycisk CHECK – LOW = wciśnięty |
| silownik_1 | 7 | Wyjście do sterowania siłownikiem 1 |
| silownik_2 | 8 | Wyjście do sterowania siłownikiem 2 |
| steep_dir_1 | 9 | DIR+ silnika krokowego – kierunek obrotu |
| steep_drive_1 | 10 | PUL+ silnika krokowego – puls kroków |
| motor_enable_1 | 11 | ENA+ silnika krokowego – włącz/wyłącz driver |
| button_stop | 20 | Przycisk STOP – LOW = wciśnięty |
| silownik_hyd | 21 | Wyjście do sterowania siłownikiem hydraulicznym |
| silownik_3 | 22 | Wyjście do sterowania siłownikiem 3 |
| sens_powd | 23 | Czujnik proszku – LOW = proszek obecny |
Kod programu:
Wytłumaczenie kodu programu:
Ten fragment programu steruje sekwencją pracy prasy do czarnego proszku. Składa się z trzech głównych części:
- Definicje pinów – przypisanie symbolicznych nazw do numerów pinów Arduino.
- Funkcja
setup()– konfiguracja wejść/wyjść oraz portu szeregowego. - Funkcja
loop()– główny automat stanów realizujący kolejne kroki procesu.
1. Definicje pinów
2. Konfiguracja w setup()
W tej funkcji ustawiamy port szeregowy oraz konfigurujemy wszystkie piny jako wejścia z pull-up lub wyjścia. Początkowe stany siłowników są wyłączone (LOW), a driver silnika krokowego jest włączony z ustalonym kierunkiem obrotu.
3. Główna pętla loop() – automat stanów
Pętla loop() realizuje kolejne kroki procesu, wykorzystując zmienną proces jako stan maszyny. Każdy stan sprawdza odpowiednie czujniki, zmienia wyjścia i przechodzi do kolejnego etapu lub do ścieżki błędu.
Dalsze kroki i możliwe usprawnienia
Poniżej przedstawiono propozycje kolejnych etapów prac nad projektem oraz kierunki rozbudowy funkcjonalności i zwiększenia niezawodności:
-
Integracja magistrali I²C lub SPI
Dodanie komunikacji z zewnętrznymi modułami (np. wyświetlacz OLED, czujniki temperatury), umożliwiające:- Wyświetlanie statusu procesu (stan siłowników, liczba kroków silnika).
- Pobieranie dodatkowych danych (temperatura, wilgotność, ciśnienie).
-
Rozbudowa interfejsu użytkownika
Stworzenie panelu sterującego obejmującego:- Wyświetlacz LCD/OLED do prezentacji komunikatów i menu ustawień.
- Enkoder obrotowy lub zestaw przycisków do nawigacji po menu.
-
Logowanie parametrów procesu
Implementacja zapisu danych na karcie SD lub przesyłania przez USB/Serial, co pozwoli na:- Analizę wydajności i predykcję konserwacji.
- Generowanie raportów pracy maszyny.
-
Wzmocnienie mechanizmów bezpieczeństwa
Dodanie funkcji awaryjnego zatrzymania oraz monitoringu:- Przycisk E-STOP natychmiast odcinający zasilanie siłowników i silnika.
- Monitorowanie przeciążeń prądowych silnika krokowego.
-
Automatyczna kalibracja i parametrów procesu
Umożliwienie konfiguracji parametrów (liczba kroków, czasy opóźnień) poprzez:- Potencjometry lub enkodery.
- Interfejs szeregowy lub API webowe.
-
Monitoring zdalny
Podłączenie mikrokontrolera do sieci (ESP8266/ESP32) w celu:- Zdalnego sterowania przez przeglądarkę.
- Wysyłania powiadomień e-mail/SMS o zakończeniu procesu lub błędach.
-
Projektowanie PCB i obudowy
Opracowanie własnej płytki drukowanej z wlutowanymi złączami oraz zaprojektowanie obudowy, zapewniającej:- Ochronę przed ruchem części i wysokim ciśnieniem.
- Łatwy dostęp do serwisu.
-
Testy długoterminowe i dokumentacja
Przeprowadzenie testów trwałości i niezawodności oraz stworzenie pełnej dokumentacji technicznej:- Instrukcja obsługi i schemat blokowy.
- Udostępnienie kodu oraz plików CAD na platformie GitHub.
