Model skrzyżowania z sygnalizacją świetlną – makieta edukacyjna
Opis
Budowa
Jako podstawę do makiety został użyty wydruk UV na PVC spienionym 5mm, takim jak używany w reklamie wizualnej. Wymiary to 300x300mm, czyli ok. 0,1m kw. Druk zleciłem firmie znalezionej na portalu aukcyjnym. Nie mam się co do jego jakości przyczepić, jest dokładnie taki jak chciałem. Pod tą warstwą PVC znajduje się część elektroniczna wraz z dystansami z PVC 10+5mm. Przestrzeń na część elektroniczną została podyktowana przez przełączniki. Ostatnia warstwa to pokrywa z 1mm PVC uzyskanego jako odpad z agencji reklamowej.
Na widocznej części makiety znajdują się sygnalizatory, przełączniki i gniazdo baterii 2xAA. Sygnalizatory zostały wykonane z PCB pomalowanego czarnym lakierem do paznokci. Przełączniki umożliwiają włączenie urządzenia oraz wybór jego trybu pracy.
Część elektroniczna
Całością steruje mikroprocesor ATMEGA88PA. Wybór został podyktowany elastycznością wynikającą z użycia mikroprocesora, odpowiednia liczba wyjść oraz możliwość pracy przy zasilaniu z 2 baterii 1,5V. Poza tym udało mi się go nabyć w okazyjnej cenie (prawdopodobnie od jednego z użytkowników elektrody).
Zadania atmegi:
-Sterowanie sygnalizatorami drogi z pierwszeństwem przejazdu (światła czerwone, żółte i zielone),
-Sterowanie sygnalizatorami drogi z podporządkowanej (światła czerwone, żółte i zielone),
-Sterowanie sygnalizatorami pieszych drogi z pierwszeństwem przejazdu (światła czerwone i zielone),
-Sterowanie sygnalizatorami pieszych drogi z podporządkowanej (światła czerwone i zielone),
-Odczyt nastawionego trybu pracy z przełącznika,
-Sterowanie oświetleniem ulicznym (nie zrealizowane w modelu),
-Odczyt z dodatkowych czujników (nie zrealizowane w modelu)
Diody LED sygnalizatorów sterowane są bezpośrednio z pinów IO mikroprocesora poprzez rezystory ograniczające prąd. Mimo znacznej ilości LEDów mogłem zastosować takie rozwiązanie, ponieważ nigdy nie świecą się one wszystkie (najgorszy przypadek: 12). Ewentualne LEDy oświetlenia ulicznego są sterowane z jednego wyjścia poprzez mały tranzystor MOSFET-N. Dodatkowo w układzie przewidziałem możliwość dołączenia:
-czujnika oświetlenia (fotorezystor lub fototranzystor),
-2 zestawów kontaktronów (początkowo planowałem dodać funkcję “pętli indukcyjnej”, czyli resorakowi zamontować w podwoziu magnes neodymowy, pod wjazdy od strony podporządkowanej dać równolegle po kilka kontaktronów i na ich podstawie sterować sygnalizacją).
Na wejściu zasilania zastosowałem oprócz 100nF także kondensator 10µF. Nie mogło oczywiście zabraknąć 6-pinowego złącza AVRISP.
Poza główną płytką sterującą musiałem wykonać także kilkanaście płytek “dokujących”, które zawierają tylko gniazdo goldpin 2.54mm 2×2 piny, oraz wyprowadzone ścieżki do przewodów oraz płytki PCB pod sygnalizatory. “Sygnalizatory” mają możliwość wlutowania złącz goldpin zarówno do pozycji leżącej, jak i stojącej. Ja wybrałem tą drugą opcję, więc musiałem zastosować także przelotki.
Część programowa
Ponieważ zmiany stanów diod następują stosunkowo rzadko, mikroprocesor przez większość czasu nie robi nic. Dlatego praktycznie wszystko odbywa się w przerwaniu WatchDoga, które następuje co ok. 0.25s. W “międzyczasie” procesor śpi twardym snem (PowerDown). Dzięki temu średni pobór prądu przez mikroprocesor to ok. 5uA (tyle zmierzyłem). Dokładność częstotliwości nie ma praktycznie żadnego znaczenia. Okres występowania przerwań mógłby być nawet jeszcze większy, gdyby nie konieczność mrygania światłem zielonym dla pieszych. W funkcji obsługującej przerwanie procesor odczytuje swoje aktualne zadanie wyznaczone przez zmienną pozycja oraz zapala odpowiednie LEDy, których stan jest w tablicy sekwencja[][]. Tablica znajduje się w pamięci FLASH. Dzięki takiemu rozwiązaniu możemy łatwo zaimplementować dowolne sekwencje zapalania LEDów.
Program został napisany w języku C w Atmel Studio 6.1.
PCB
Płytki drukowane zostały zaprojektowane w programie Eagle. Płytka sterownika ma wymiary 50x50mm i została wykonana przez firmę w Chinach. Została specjalnie tak upchana, aby obniżyć jej cenę. Zastosowane rezystory są w obudowach 0805, które łatwo się lutuje, a jednocześnie nie zajmują zbyt dużo miejsca. Nie życzę nikomu robienia takiej płytki w domu (cienkie ścieżki, duża ilość przelotek, soldermaska praktycznie niezbędna). Pozostałe płytki natomiast wykonałem sam. Płytki sygnalizatorów są dwustronne i należy wykonać 4 komplety narysowanego projektu. Montaż płytek jest dosyć prosty. Natomiast połączenie ich przewodami to czysta męka, na szczęście niezbyt długa.
Podzespoły
Użyte zostały typowe elementy. Jako mikroprocesor można zastosować również starsze układy, takie jak Atmega8A, Atmega8L, Atmega88; ew. zwracając uwagę na różnicę w rejestrach. Problemem może być jedynie zdobycie LEDów. Chciałem użyć takich w obudowach PLCC6 5060, ponieważ zależało mi na ich dużej powierzchni. Ja zakupy robiłem w TME.
Wnioski
Układ cieszy się dużym zainteresowaniem wśród dzieciaków. Duża ilość “światełek” robi wrażenie. Jak widać po zdjęciach i filmie, brakuje jednego zestawu świateł dla pieszych. Wynika to z tego, że zamówiłem za mało LEDów oraz złączy goldpin. Potrzeba 12 LEDów czerwonych, 12 zielonych, 4 żółte i po 12 gniazd oraz wtyków goldpin (te da się zastąpić zwykłymi listwami “łamanymi”). Nie zrealizowałem też oświetlenia ulicznego, ponieważ nie wymyśliłem jak wykonać latarnie, a dotychczasowe próby na drukarce 3D nie były zadowalające (zbyt małe modele). Mimo to w planach jest dodanie po 2 latarnie na “skwer”. Dla wygody montażu płytki “dokujące” należałoby zgrupować po 3 z każdego rogu i połączyć w jedną, wraz z jednym złączem (może flex?). Jako przełączniki należało zastosować inne modele, które nie zajmowałyby tyle miejsca pod spodem. Może przesuwane? Lepiej, aby całość po złożeniu nie była grubsza niż 10mm, a przeszkodą do tego są tylko te przełączniki. Kolejne spostrzeżenie: ten model niezbyt zasługuje na miano zabawki, ze względu na małe części oraz niezbyt dobre materiały (PCV). W przyszłości postaram się wyeliminować te problemy.
Dodam jeszcze, że osoby początkujące w programowaniu AVR mogą skorzystać z kodu źródłowego, aby zobaczyć realizację migania diodami w przerwaniu; coby więcej do takich zadań nie używać funkcji delay. Jak by co, służę pomocą w wyjaśnieniu kodu.
W załącznikach: PCB (gerbery+PDF do termotransferu), kody źródłowe, lista podzespołów płytki sterującej, grafika skrzyżowania. Gerbery można podejrzeć w widoku 3D na stronie mayhewlabs.com/3dpcb . Wszystkie materiały udostępniam na licencji:
Uznanie autorstwa-Użycie niekomercyjne-Bez utworów zależnych 3.0 Polska (CC BY-NC-ND 3.0 PL)
W celu innego wykorzystania proszę o kontakt.