Automatyczna praska do czarnego prochu

Projekt zrealizowany przez użytkownika @jimboston

Rys. 1. Widok projektu 3D automatycznej ładowarki prochu zaprojektowany.

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.



Rys.2. Schemat blokowy logiki programu praski.

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:

Kod_praska


Wytłumaczenie kodu programu:

Ten fragment programu steruje sekwencją pracy prasy do czarnego proszku. Składa się z trzech głównych części:

  1. Definicje pinów – przypisanie symbolicznych nazw do numerów pinów Arduino.
  2. Funkcja setup() – konfiguracja wejść/wyjść oraz portu szeregowego.
  3. 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.