Spisu treści:

Multi-Timer W/Kontrola Zewnętrzna: 13 Kroków
Multi-Timer W/Kontrola Zewnętrzna: 13 Kroków

Wideo: Multi-Timer W/Kontrola Zewnętrzna: 13 Kroków

Wideo: Multi-Timer W/Kontrola Zewnętrzna: 13 Kroków
Wideo: Multi-function DC/AC 5V - 24V Forward Reverse Motor Controller Timer I053A02 2024, Lipiec
Anonim
Multi-Timer W/Kontrola Zewnętrzna
Multi-Timer W/Kontrola Zewnętrzna

Ten projekt Instructable jest kompilacją wielofunkcyjnego Timera

Ten zegar może działać jako:

  1. Alarm ogólnego przeznaczenia z wybieranymi czasami od 1 sekundy do +90 godzin. Posiadanie odliczania z alarmem dźwiękowym i/lub sterowaniem urządzeniem zewnętrznym do zakończenia, a następnie wskazanie odliczania czasu od alarmu.
  2. Minutnik drzemki z 7 wybieranymi czasami, odliczaniem i alarmem po zakończeniu.
  3. Zegar medytacji z 4 wybieranymi czasami, odliczaniem i krótkim świergotem po zakończeniu, odliczanie kolejnym świergotem po 5 minutach.

Ten projekt może być zbudowany zgodnie z opisem tutaj lub zmodyfikowany do własnych potrzeb. Wcześniej zbudowałem timer z tą funkcją i użyłem go w moim pierwszym Instructable do sterowania polem ekspozycji UV.

Pomyślałem, że mogę po prostu opublikować oryginalny program i projekty plansz. Jednak z jakiegoś powodu nie mogłem znaleźć kodu. Chciałem również wprowadzić ulepszenia w sprzęcie, aby obwody sterujące były bardziej elastyczne i zmniejszały zużycie baterii. Wynikające z tego przeprojektowanie głównej płytki drukowanej i przepisanie kodu daje możliwość omówienia podejścia do programowania i projektowania sprzętu.

Za każdym razem, gdy tworzę płytkę drukowaną, często stwierdzam, że występują wady w projekcie lub rozmieszczeniu komponentów. Płytki, które buduję, są również jedną z dwóch wad. Poza tym po prostu lubię być zaangażowany we wszystkie aspekty projektu od początku do końca. To niektóre z powodów, dla których robię własne płytki drukowane, zamiast wysyłać pliki Gerbera do produkcji za granicę. Może jestem po prostu stary i utknąłem na swoich drogach. Ten projekt odzwierciedla to nastawienie. Ponieważ tworzę własne płytki drukowane, moje projekty i moje pliki Gerber nie spełniają standardów produkcyjnych, nie załączyłem tych plików. Osoby, które nie chcą wytrawiać i wykańczać desek, zapraszamy do przygotowania własnych projektów i zamieszczenia plików Gerber w komentarzach. Przed wysłaniem prosimy o wyprodukowanie i przetestowanie swoich tablic.

Krok 1: Przegląd elementów sprzętowych

Urządzenie zasilane jest 4 bateriami AAA i sterowane jest przez Arduino Pro Mini 5V.

Mały brzęczyk/głośnik zapewnia alarm dźwiękowy.

Miniaturowy przekaźnik 5 V dostarcza napięcia sterujące do urządzeń zewnętrznych. Źródło tego napięcia sterującego zapewnia elastyczność.

Enkoder obrotowy z przyciskiem umożliwia wybór menu.

Wyświetlacz OLED i chwilowy przełącznik start/stop uzupełniają interfejs użytkownika.

Dodatkowy sprzęt elektroniczny składa się z przełącznika zasilania SPDT i miniaturowego gniazda telefonicznego do podłączenia urządzeń zewnętrznych.

Dodatkowo udostępniamy pliki pomocne w realizacji tego projektu:

Pliki STL dla przypadku drukowanego projektu 3D.

Obrazy miedzi i maski lutowniczej do wytrawiania i wykańczania obwodów sterowania i enkodera obrotowego.

Obrazy schematyczne i planszowe jako odniesienie dla tych, którzy chcą zmodyfikować mój projekt.

Możesz przejrzeć moje instrukcje dotyczące tworzenia dwustronnych płytek drukowanych jako przykład instrukcji dotyczących produkcji płytek drukowanych.

Krok 2: Przegląd oprogramowania

Wraz z plikami źródłowymi Arduino kilka dodatkowych informacji, które mogą być pomocne..

Biblioteki sterowania sprzętowego są używane, jeśli są dostępne (odbicie przycisków, sterowanie OLED, odczyt enkodera obrotowego).

Program implementuje prostą maszynę skończonych stanów (FSM) do sterowania wykonywaniem kodu jako instrukcja switch w funkcji pętli.

Klasa Menu jest zdefiniowana, aby umożliwić wybór wyświetlanych opcji na OLED i wybór za pomocą enkodera obrotowego.

Wejście jest implementowane przez bezpośrednie odpytywanie (bez przerwań), ponieważ nie jest to krytyczne czasowo i sprawia, że kod jest bardziej przejrzysty.

Instrukcje drukowania do Serial służą do śledzenia wykonywania kodu i debugowania

Różne rodzaje elementów struktury programu, w tym:

  • Wiele zakładek kodu w celu wyizolowania niektórych funkcji i zmiennych sterowania sprzętem.
  • Instrukcje Switch, aby ustawić wartość stanu (FSM) i zmienne sterujące.
  • Definicja struktury
  • Wyliczenia umożliwiające przypisanie wartości stanu jako tekstu.
  • #define definicje preprocesora dla pinów sprzętowych i wartości standardowych.

Krok 3: Lista części

Stwórz obudowę
Stwórz obudowę

Nie byłem pewien, gdzie postawić ten krok, ponieważ można to zrobić w dowolnym momencie. Użyłem drukowanego w 3D pudełka z obudową. Możesz nie mieć dostępu do drukarki 3D lub wolisz inny rodzaj obudowy, taki jak aluminiowe pudełko, plastik wycinany laserowo, ręcznie rzeźbione drewno lub inny typ, którego używasz do swoich projektów elektronicznych. Dołączyłem pliki STL dla górnej, dolnej, pokrętła enkodera i ramki OLED. Użyj tych plików i wybranego fragmentatora, aby utworzyć pliki gcode dla swojej drukarki.

Wszystkie części drukuję za pomocą filamentu PLA, jeden kolor na górę i dół obudowy, drugi kontrastowy na pokrętło i ramkę (która jest przyklejona od góry). Nie będę określał wszystkich ustawień krajalnicy, ale użyj Tri - Wypełnienie sześciokątne co najmniej 35%, aby umożliwić gwintowanie śrub narożnych i ustawienie „bez podparcia”, aby można było odczytać nacięte napisy. Wydrukowałem pudełko używając "normalnej" wysokości warstwy mojej drukarki.

Krok 9: Projektowanie i pisanie kodu

Ten krok jest opcjonalny, ale sugerowany dla lepszego zrozumienia.

Większość wysiłku pod względem godzin to pisanie kodu. Możesz pominąć ten krok, jeśli używasz dołączonego programu bez zmian. Zaleca się jednak poświęcenie czasu na przejrzenie kodu w celu lepszego zrozumienia lub modyfikacji w celu zaspokojenia potrzeb.

Poniższe uwagi mogą być pomocne w zrozumieniu tego procesu.

  • Komentarze - komentuj obszernie w miarę postępu - często piszę komentarze przed napisaniem kodu.
  • Dziel i zwyciężaj - używaj funkcji, klas i modułów (zakładek.) Używaj częstych kompilacji (Weryfikuj) do sprawdzania składni. Debugowanie - użyj instrukcji print, aby zweryfikować przepływ i wartości testowe oraz interfejsy sprzętowe. Nie bój się rozwiązywać problemów na bieżąco, nikt nie pisze kodu, który jest wolny od błędów!
  • Stałe - #define instrukcje prekompilatora przypisują nazwy do numerów pinów. Definicje zmiennych const z komentarzami zmniejszają lub eliminują liczby „magiczne”. Wykorzystanie stałych umieszczonych na początku programu lub funkcji pozwala na zmianę parametrów bez przepisywania kodu
  • Predefiniowane biblioteki - korzystanie z predefiniowanych bibliotek zmniejsza obciążenie programistyczne i czas debugowania.
  • Bloki projektowe - tworzone za pomocą funkcji, izolowanie kodu w osobnych zakładkach (powiązane programy i pliki.h), wyliczenia, klasy i struktury. Skoncentruj swoją uwagę na każdym z nich, aby zrozumieć, jak działają w odniesieniu do reszty kodu.
  • State Machine(s) - jest to wzorzec programowania, który doskonale współpracuje z Arduino lub dowolnymi programami używanymi do sterowania wyjściami lub reagowania na wejścia. Istnieje kilka odmian maszyn państwowych. Ten kod wykorzystuje maszynę stanów opartą na instrukcji switch w funkcji pętli. Ten formularz jest łatwy do zrozumienia i debugowania.
  • Wyświetlacz i menu - wyjście OLED jest zwięzłe, ale zapewnia wystarczającą ilość informacji zwrotnych dla zwykłych użytkowników i obsługuje wybór opcji. Dobrze integruje się z automatem stanów (prawie wszystkie stany mają skojarzony ekran OLED). Klasa Menu była pomocna w izolowaniu kodu do wyświetlania i wybierania opcji menu

Proszę przeczytać program kilka razy. Pomaga w przejmowaniu jednej funkcji lub sekcji na raz. Często nie rozumiem kodu, który napisałem, chyba że przeczytałem go przynajmniej dwa razy!

Krok 10: Zainstaluj program

Skopiuj załączony plik na komputer, a następnie rozpakuj go do katalogu Sketches

Podłącz Arduino do komputera i pobierz kod programu w normalny sposób. Otwórz monitor szeregowy Arduino IDE, aby sprawdzić, czy program działa i pomóc w debugowaniu.

Krok 11: Złóż Timer

Złóż Timer
Złóż Timer
Złóż Timer
Złóż Timer
Złóż Timer
Złóż Timer
Złóż Timer
Złóż Timer

Po wydrukowaniu i wyczyszczeniu górnej i dolnej części obudowy, elementy można przymocować za pomocą małych samogwintujących wkrętów z tworzywa sztucznego. Najpierw uchwyt baterii jest zatrzaskiwany z tyłu. Pozostałe części są przymocowane do blatu obudowy w następującej kolejności:

  1. OLED i kabel
  2. Przełącznik i okablowanie Start/Stop
  3. Enkoder obrotowy i kabel
  4. Głośnik/brzęczyk i okablowanie
  5. Zewnętrzne gniazdo sterujące i okablowanie
  6. Przełącznik suwakowy włączania/wyłączania i okablowanie (sprawdzić orientację, aby włączone było w żądanym kierunku)

Jeśli lutujesz kable bezpośrednio do płytki drukowanej, zrób to po przymocowaniu wszystkich części do obudowy, aby zmniejszyć pękanie przewodów. Musisz poczekać, aż kable zostaną podłączone do płyty głównej, zanim przykręcisz tę płytkę z tyłu.

Jeśli używasz listew stykowych i złączy Dupont, najpierw przymocuj płytę główną z tyłu za pomocą śrub, a następnie podłącz komponenty. Bądź ostrożny podczas podłączania baterii do płyty głównej i przestrzegaj prawidłowej polaryzacji. W tym momencie należy również skonfigurować zworki lub okablowanie sterowania przekaźnikiem.

Spód obudowy łączy się z górą za pomocą 4-40 śrub z łbem okrągłym, po jednym w każdym rogu. Cztery otwory w górnej części powinny być nagwintowane za pomocą gwintownika 4/40 lub jeśli używasz 4-40 wkładek gwintowanych, musisz wywiercić otwory, aby je zaakceptować. Należy również wywiercić 4 otwory do mocowania płyty głównej na spodzie. Przymocuj tę płytkę do zatrzaskowego uchwytu baterii i zaznacz położenie otworów. Wywierć odpowiednio do posiadanych śrub montażowych.

Krok 12: Testowanie integracji

Testy integracyjne
Testy integracyjne
Testy integracyjne
Testy integracyjne
Testy integracyjne
Testy integracyjne

Testowanie końcowe (integracyjne) polega na wypróbowaniu wszystkich opcji menu i sprawdzeniu, czy działają z zaprojektowanym sprzętem. Dla podanego przeze mnie kodu to powinno wystarczyć. Jeśli napisałeś własny kod lub zmodyfikowałeś mój kod, twoje testy będą musiały być bardziej rozbudowane. Nie wierzę, że wszystkie wybory czasowe muszą być ćwiczone, ale musisz wypróbować wszystkie standardowe opcje alarmów i sprawdzić, czy alarmy drzemki i medytacji działają zgodnie z założeniami.

Krok 13: Końcowe myśli

Gratuluję udanego, mam nadzieję, projektu. Jestem pewien, że po drodze napotkałeś problemy, które musiałeś rozwiązać. Jestem też pewien, że niektóre z moich instrukcji mogłyby być pełniejsze lub jaśniejsze. Daj mi znać w sekcji komentarzy, jakie były Twoje wyniki i podawaj sugestie, jak można ulepszyć te instrukcje.

Dziękujemy za poświęcony czas na oglądanie i/lub tworzenie tego projektu.

Zalecana: