Spisu treści:

Zbuduj swój własny (tani!) Wielofunkcyjny bezprzewodowy kontroler aparatu.: 22 kroki (ze zdjęciami)
Zbuduj swój własny (tani!) Wielofunkcyjny bezprzewodowy kontroler aparatu.: 22 kroki (ze zdjęciami)

Wideo: Zbuduj swój własny (tani!) Wielofunkcyjny bezprzewodowy kontroler aparatu.: 22 kroki (ze zdjęciami)

Wideo: Zbuduj swój własny (tani!) Wielofunkcyjny bezprzewodowy kontroler aparatu.: 22 kroki (ze zdjęciami)
Wideo: ⚡️ Najciekawsze Gadżety z AliExpress 2020 cz. 1 2024, Lipiec
Anonim
Zbuduj swój własny (tani!) wielofunkcyjny kontroler kamery bezprzewodowej
Zbuduj swój własny (tani!) wielofunkcyjny kontroler kamery bezprzewodowej
Zbuduj swój własny (tani!) wielofunkcyjny bezprzewodowy kontroler aparatu
Zbuduj swój własny (tani!) wielofunkcyjny bezprzewodowy kontroler aparatu
Zbuduj swój własny (tani!) wielofunkcyjny kontroler kamery bezprzewodowej
Zbuduj swój własny (tani!) wielofunkcyjny kontroler kamery bezprzewodowej

Wprowadzenie Czy kiedykolwiek marzyłeś o zbudowaniu własnego kontrolera kamery? WAŻNA UWAGA: Kondensatory dla MAX619 to 470n lub 0,47u. Schemat jest poprawny, ale lista komponentów była błędna - zaktualizowana. To jest zgłoszenie do konkursu Digital Days, więc jeśli uznasz to za przydatne, oceń/zagłosuj/komentuj pozytywnie! Jeśli naprawdę Ci się podoba i potykasz się, naciśnij „lubię to!”:) Aktualizacja: polecane na hackaday! hackaday.com/2009/10/13/a-inna-rasa-kontrolerów-kamer/ Aktualizacja: nowe zdjęcia wyzwalacza laserowego w akcji! Aktualizacja: Pierwsza nagroda =D, dziękujemy za głosowanie i/lub ocenę! Ta instrukcja jest przeznaczona głównie dla użytkowników lustrzanek jednoobiektywowych, którzy chcą uzyskać nieco większy przebieg ze swoich aparatów, jednak jeśli jest jakiś punkt i strzela z interfejsami IR, może to być interesujące. Z pewnością zadziała to również (z niewielką modyfikacją) w przypadku hacków kamer, w których można podłączyć wyjścia logiczne do terminali wyzwalających kamerę. Zaczęło się od pełnego samouczka, ale ze względu na pewne nieoczekiwane ograniczenia, które napotkałem później, może to być bardziej przewodnik, jak osiągnąć różne rzeczy - często pozostawiam ci wybór, jak możesz robić rzeczy, które Myślę, że jest to lepszy sposób na robienie rzeczy niż ślepe mówienie „musisz to zrobić”. Pomyśl o tym jako o lekcji projektowania kontrolera kamery. Dostarczyłem schematy i pełny kod, więc zawsze możesz go po prostu skopiować. Będzie to prosty przypadek przeniesienia projektu na stripboard i dodania wyświetlacza LCD dla większości ludzi. Przeszedłem przez proces tworzenia prototypów, ponieważ proces jest bardzo podobny i pozwala na korygowanie błędów przed utrwaleniem projektu! Funkcje: Tryb pojedynczego strzału Tryb interwałowy (poklatkowy) Tryb wyzwalany (wyzwalacz z czujnika zewnętrznego) ze zmiennymi warunkami Dołączone projekty czujników - światło, dźwięk (możliwe znacznie więcej!) Całkowity koszt - poniżej 25 £ (bez narzędzi) Wyświetlacz LCD do łatwej zmiany ustawień Kompatybilny z Nikon/Canon (kodowany), potencjalna obsługa (nietestowana) dla Olympus/Pentax Brak oprogramowania układowego konieczna modyfikacja Wykorzystuje IR, więc jest zarówno bezprzewodowy, jak i nie uszkadza aparatu. Wpadłem na ten pomysł po kilkugodzinnym siedzeniu na dworze na mrozie i klikaniu na moim pilocie. Robiłem 8 sekundowy interwał na około 1000 strzałów. Pomyślałem, hej, to tylko dioda podczerwieni, prawda? Dlaczego nie mogę go odtworzyć i zrobić własnego pilota z wbudowanym opóźnieniem? Wtedy dowiedziałem się (trochę zawstydzony, ponieważ myślałem, że mam ogromną falę mózgową), że tak się stało i jest nawet kilka instrukcji na ten temat. Moja implementacja różni się od większości interwałometrów i pilotów do samodzielnego montażu, ponieważ pozwala na wiele dostosowań i modułowości, jest kompatybilna zarówno z Nikonem/Canonem (i prawdopodobnie z innymi późniejszymi) i łączy w sobie możliwość robienia zdjęć na konkretnym spuście. Pomysł jest prosty. Chcesz zrobić zdjęcie dość szybko (ograniczone obecnie opóźnieniem migawki, u mnie 6ms). Można to zrobić na wiele sposobów: 1. Próba i błędy, które próbujesz zrobić w odpowiednim momencie 2. Udoskonalone metody prób i błędów: zaciemniasz pomieszczenie, włączasz żarówkę aparatu (otwarta migawka) i wyzwalasz lampę błyskową we właściwym czasie 3. Kup dedykowany kontroler wyzwalania, który ma jakiś rodzaj czujnika dźwięku/światła, aby wykonać zdjęcie na Twoje polecenie 4. Zbuduj go sam! Ok, 1 i 2 nadają się do zabawy i mogą dać bardzo dobre zdjęcia. Ale pokażę wam, że można skonstruować obwód, który za każdym razem będzie dawał spójne wyniki. Co najważniejsze, w tych napiętych czasach koszt jest niższy niż modeli alternatywnych (niektórzy ludzie wyprodukowali zestawy do tego typu rzeczy, ale kosztują fortunę zobacz linki). Uniwersalność projektu jest następująca: jeśli twój czujnik generuje napięcie wyjściowe między 0 a 5 V, możesz go użyć do uruchomienia aparatu! Na pierwszy rzut oka jest to nudne stwierdzenie, ale kiedy zaczniesz rozumieć implikacje, staje się bardzo potężne. Po prostu monitorując poziom napięcia, wyzwalacz może być oparty na świetle (LDR), dźwięku (mikrofon lub ultradźwięki), temperaturze (termistor) lub nawet prostym potencjometrem. Właściwie prawie wszystko. Możesz nawet połączyć obwód z innym kontrolerem i pod warunkiem, że może on dać logiczne wyjście, dzięki czemu możesz go uruchomić. Jedynym głównym ograniczeniem tego projektu jest obecnie to, że działa tylko z interfejsami IR, dość łatwo byłoby zmodyfikować oprogramowanie i sprzęt w celu wyprowadzenia przez mini-USB lub inny wymagany interfejs. Uwaga: Kod źródłowy: W kroku 13 udostępniłem kilka aplikacji. Kod, który uruchamiam na moim kontrolerze, znajduje się w pliku szesnastkowym wraz z głównym plikiem c i jego zależnościami. Możesz po prostu uruchomić mój kod, jeśli nie masz pewności co do kompilacji. Dołączyłem również przykładowy kod, którego można użyć w różnych krokach (oczywiście są one nazwane jak remote_test, test interwałometru i test adc. Jeśli odwołuję się do kodu w kroku, szanse na to, że tam są. EDYCJA: Aktualizacja o balony pękające - wydaje mi się, że byłem trochę krótkowzroczny, kiedy powiedziałem, że można łatwo robić zdjęcia pękających balonów. Okazuje się, że skóra na przeciętnym balonie porusza się tak szybko, że przed odpaleniem aparatu całkowicie pęka. jest to problem z większością kamer, a NIE kontrolerem (który wykrywa przetwornik ADC z częstotliwością około 120 kHz). Oprócz tego jest użycie wyzwalanej lampy błyskowej, co jest wykonalne, jeśli dodasz dodatkowy przewód i inny mały obwód. powiedział, możesz teoretycznie użyć czegoś innego, aby go wystrzelić i bawić się opóźnieniem (lub nawet zmienić kod opóźnienia, aby obejmował mikrosekundy). Śrut powietrzny podróżujący 1m z prędkością 150ms-1 zajmuje około 6-7ms, wystarczająco dużo czasu na wyzwolenie i wystrzelenie. Samo przesunięcie pistoletu spowodowałoby szczątkowe opóźnienie rzędu kilku mikrosekund s. Ponownie, przepraszam za to, będę się bawić dzisiaj, jeśli uda mi się zdobyć kilka balonów, ale wciąż jest wiele zastosowań wyzwalacza dźwięku, takich jak fajerwerki! Poniżej zamieszczam krótki i brudny upływ czasu, aby pokazać, że to działa:) Nie zapomnij przeczytać, ocenić i/lub głosować! Pozdrawiam, JoshZastrzeżenie W mało prawdopodobnym przypadku, gdy coś pójdzie nie tak lub w jakiś sposób zamurujesz aparat/dremel swojego kota, nie ponoszę żadnej odpowiedzialności. Rozpoczynając projekt oparty na tej instrukcji, akceptujesz to i kontynuujesz na własne ryzyko. Jeśli zrobisz jeden z nich lub użyjesz mojej instrukcji, aby ci pomóc - wyślij mi link / zdjęcie, abym mógł je tutaj zamieścić! Jak dotąd odpowiedź była przytłaczająca (przynajmniej według moich standardów), więc byłoby wspaniale zobaczyć, jak ludzie to interpretują. Pracuję nad rewizją 2 jak piszę;)

Krok 1: Kilka wstępnych myśli…

Jak więc zamierzamy to zbudować? Mikrokontroler Sercem i duszą tego projektu jest AVR ATMega8. Jest to w zasadzie nieco okrojona wersja układu ATMega168, z którego korzysta Arduino. Jest programowalny w języku C lub Assembly i ma wiele naprawdę przydatnych funkcji, które możemy wykorzystać na naszą korzyść." 28 pinów, z których większość to wejścia/wyjścia (i/o)" Wbudowany konwerter analogowo-cyfrowy" Niski pobór mocy "3 wbudowane zegary" Wewnętrzne lub zewnętrzne źródło zegara" Wiele bibliotek kodu i próbek online Posiadanie wielu pinów jest dobre. Możemy połączyć się z ekranem LCD, mamy 6 wejść przycisków i wciąż mamy wystarczająco dużo miejsca, aby strzelać diodą podczerwieni i kilkoma diodami stanu. Seria procesorów Atmel AVR ma wiele wsparcia online i jest wiele samouczków, jak uzyskać zacząłem (przejdę to krótko, ale są lepsze dedykowane tutoriale) i stosy kodu do przemyślenia. Dla porównania będę kodować ten projekt w C za pomocą biblioteki AVR-LibC. Mogłem z łatwością skorzystać z PIC, aby to zrobić, ale AVR jest dobrze obsługiwany, a wszystkie przykłady, które znalazłem dla pilotów, były oparte na AVR! Wyświetlacz LCDTam to dwa główne typy wyświetlaczy, graficzny i alfanumeryczny. Wyświetlacze graficzne mają rozdzielczość i możesz umieszczać piksele w dowolnym miejscu. Minusem jest to, że trudniej je zakodować (chociaż istnieją biblioteki). Wyświetlacze alfanumeryczne to po prostu jeden lub więcej rzędów znaków, wyświetlacz LCD ma wbudowaną pamięć podstawowych znaków (tj. alfabetu, niektórych liczb i symboli) i stosunkowo łatwo jest wyprowadzać ciągi i tak dalej. Minusem jest to, że nie są tak elastyczne, a wyświetlanie grafiki jest praktycznie niemożliwe, ale odpowiada naszym celom. Są również tańsze! Alfanumeryczne są klasyfikowane według liczby wierszy i kolumn. 2x16 jest dość powszechne, z dwoma rzędami po 16 znaków, każdy znak jest macierzą 5x8. Możesz też uzyskać 2x20 s, ale nie widzę potrzeby. Kup wszystko, z czym czujesz się komfortowo. Wybrałem podświetlany na czerwono wyświetlacz LCD (chcę go używać do astrofotografii, a czerwone światło jest lepsze do widzenia w nocy). Możesz obejść się bez podświetlenia - to całkowicie twój wybór. Jeśli wybierzesz trasę bez podświetlenia, zaoszczędzisz energię i pieniądze, ale możesz potrzebować latarki w ciemności. Szukając wyświetlacza LCD, upewnij się, że jest on kontrolowany przez HD44780. Jest to standardowy protokół branżowy opracowany przez firmę Hitachi i istnieje wiele dobrych bibliotek, których możemy użyć do wyprowadzania danych. Model, który kupiłem, to JHD162A z serwisu eBay. Wprowadzanie danych odbywa się za pomocą przycisków (proste!). Wybrałem 6 - wybór trybu, ok/strzelanie i 4 kierunki. Warto też zaopatrzyć się w kolejny mały przycisk do resetowania mikro w przypadku awarii. Jeśli chodzi o wejście wyzwalające, to kilka podstawowych pomysłów to rezystor zależny od światła lub mikrofon elektretowy. To jest miejsce, w którym możesz być kreatywny lub skąpy w zależności od budżetu. Czujniki ultradźwiękowe będą kosztować trochę więcej i wymagają dodatkowego programowania, ale można z nimi zrobić naprawdę fajne rzeczy. Większość ludzi będzie zadowolona z mikrofonu (prawdopodobnie najbardziej przydatnego czujnika ogólnego), a elektrety są bardzo tanie. Miej świadomość, że to też będzie musiało zostać wzmocnione (ale omówię to później). Wyjście - Status Jedynym rzeczywistym wyjściem, którego potrzebujemy, jest status (oprócz wyświetlacza), więc kilka diod LED będzie tutaj działać poprawnie. Wyjście - Strzelanie Do robienia zdjęć zdjęć, musimy połączyć się z aparatem, a do tego potrzebujemy źródła światła, które może wytwarzać promieniowanie podczerwone. Na szczęście istnieje wiele diod LED, które to robią i powinieneś spróbować wybrać diodę o dość dużej mocy. Wybrana przeze mnie jednostka ma prąd maksymalny 100mA (większość diod LED ma około 30mA). Należy również zwrócić uwagę na długość fali wyjściowej. Światło podczerwone znajduje się w dłuższej części widma EM i powinieneś szukać wartości około 850-950nm. Większość diod IR zbliża się do końca 950 i możesz zobaczyć trochę czerwonego światła, gdy jest włączone, to nie jest problem, ale to marnowane widmo, więc spróbuj zbliżyć się do 850, jeśli to możliwe. MocJak będziemy zasilać wszystkie ten? Cóż, będzie przenośny, więc baterie! Zdecydowałem się na użycie 2 baterii AA, które są następnie zwiększane do 5V. Omówię to w kilku następnych rozdziałach. „Obudowa i konstrukcja” Jak to zrobisz, zależy wyłącznie od Ciebie. Zdecydowałem się użyć stripboardu do obwodu po prototypowaniu, ponieważ jest tani i elastyczny oraz oszczędza projektowanie niestandardowej płytki drukowanej. Dostarczyłem schematy, więc możesz stworzyć własny układ PCB - chociaż jeśli to zrobisz, byłbym wdzięczny za kopię! Ponownie sprawa jest całkowicie twoim wyborem, musi być w stanie zmieścić się na ekranie, przyciskach (w dość intuicyjnym układzie, jeśli to możliwe) i baterii. Jeśli chodzi o płytki drukowane, ta nie jest tak skomplikowana, wiele połączeń jest po prostu do takich elementów, jak przyciski/LCD.

Krok 2: Zarządzanie energią

Zarządzanie energią
Zarządzanie energią

Zarządzanie energiąW przypadku takiego projektu oczywiste jest, że przenośność powinna być kluczowym aspektem. Baterie są zatem logicznym wyborem! Teraz, w przypadku urządzeń przenośnych, kluczem jest wybór źródła baterii, które można ładować lub jest łatwo dostępne. Dwie główne opcje to bateria 9V PP3 lub baterie AA. Jestem pewien, że niektórzy uznają, że bateria 9V to najlepsza opcja, bo hej, 9V jest lepsze niż 3, prawda? Cóż, nie w tym przypadku. Baterie 9V, choć bardzo użyteczne, wytwarzają napięcie kosztem żywotności baterii. Mierzona w mAh (miliamperogodzinach), ta ocena mówi teoretycznie, jak długo bateria będzie działać przy 1 mA w godzinach (choć weź to z przymrużeniem oka, często są one w idealnych warunkach niskiego obciążenia). Im wyższa ocena, tym dłużej wytrzyma bateria. Baterie 9V są oceniane na około 1000 mAh. Z drugiej strony alkaliczne AA mają prawie trzy razy więcej przy 2900 mAh. Akumulatory NiMH mogą to osiągnąć, chociaż 2500 mAh to rozsądna ilość (pamiętaj, że akumulatory działają przy napięciu 1,2 V, a nie 1,5!). Ekran LCD potrzebuje wejścia 5 V (<10%), a AVR (mikrokontroler) potrzebuje mniej więcej tego samego (choć może spaść nawet do 2,7 dla niskich częstotliwości zegara). Potrzebujemy również dość stabilnego napięcia, jeśli wahania mogą powodować problemy z mikrokontrolerem. Aby to zrobić, użyjemy regulatora napięcia, musisz teraz dokonać wyboru między ceną a wydajnością. Masz możliwość użycia prostego 3-pinowego regulatora napięcia, takiego jak LM7805 (seria 78, wyjście +5 V) lub małego układu scalonego. Korzystanie z prostego regulatora Jeśli zdecydujesz się na tę opcję, musisz mieć kilka punktów na uwadze. Po pierwsze, trzy-pinowe regulatory prawie zawsze potrzebują wejścia, które jest wyższe niż ich wyjście. Następnie obniżają napięcie do pożądanej wartości. Minusem jest to, że mają straszną wydajność (50-60% to dobra sprawa). Plusem jest to, że są tanie i będą działać z baterią 9V, w Wielkiej Brytanii można kupić podstawowy model za 20 pensów. Należy również pamiętać, że regulatory mają napięcie zaniku - minimalną przerwę między wejściem a wyjściem. Możesz kupić specjalne regulatory LDO (Low DropOut), które mają przerwy przy około 50mV (w porównaniu do 1-2V z innymi konstrukcjami). Innymi słowy, zwróć uwagę na LDO z wyjściem +5V. Użycie układu scalonego Idealnym rozwiązaniem jest regulator przełączający. Będą to, na nasze potrzeby, zwykle 8-pinowe pakiety, które pobierają napięcie i dają nam stabilizowane wyjście z wysoką sprawnością - w niektórych przypadkach prawie 90%. Możesz uzyskać konwertery step up lub step down (odpowiednio boost / buck) w zależności od tego, co chcesz włożyć, alternatywnie możesz kupić regulatory, które będą miały wyższą lub niższą wydajność. Chip, którego używam do tego projektu, jest MAX619+. Jest to regulator podwyższający napięcie 5V, który pobiera 2 AA (zakres wejściowy to 2V-3,3V) i daje stałe napięcie 5V. Do działania potrzebuje tylko czterech kondensatorów i zajmuje bardzo mało miejsca. Koszt - 3,00 £, w tym czapki. Zapewne warto zaszaleć, aby nieco lepiej wykorzystać swoje baterie. Jedynym poważnym minusem jest to, że nie jest chroniony przed zwarciem, więc jeśli wystąpi przepięcie, uważaj! Jest to jednak dość trywialne do naprawienia za pomocą dodatkowego układu: Innym użytecznym projektem chipa - choć nie tak zgrabnym rozwiązaniem jest LT1307. Ponownie, regulator 5 V, ale może przyjmować różne wejścia i ma przydatne funkcje, takie jak wykrywanie niskiego poziomu baterii. Kosztuje trochę więcej, prawie 5 z cewkami indukcyjnymi, dużymi kondensatorami i rezystorami. Szyny napięciowe Będziemy używać dwóch głównych szyn napięciowych (plus wspólna masa). Pierwszym będzie 3V z akumulatora, które posłuży do zasilania diod LED i innych elementów o stosunkowo dużej mocy. Mój MAX619 ma tylko prąd znamionowy 60mA (chociaż absolutne maksimum to 120mA), więc łatwiej jest podłączyć mikrokontroler do MOSFET-u w celu sterowania dowolnymi diodami LED. MOSFET prawie nie pobiera prądu i działa jako przerwa w obwodzie, gdy wejście bramki jest poniżej około 3V. Gdy mikrokontroler wyśle logiczną 1 na pinie, napięcie wynosi 5V i FET włącza się, a następnie działa tylko jako zwarcie (tj. kawałek drutu). Szyna 5V będzie zasilać LCD, mikrokontroler i wszelkie obwody wzmacniające dla czujniki wejściowe. Pobór mocyJeśli spojrzymy na różne arkusze danych, zauważymy, że AVR pobiera nie więcej niż 15-20mA przy maksymalnym obciążeniu. LCD potrzebuje tylko 1mA do działania (przynajmniej kiedy testowałem, budżet na 2). Przy włączonym podświetleniu decyzja należy do Ciebie. Podłączenie go bezpośrednio do szyny 5 V (próbowałem) jest w porządku, ale zanim to zrobisz, upewnij się, że ma wbudowany rezystor (postępuj zgodnie ze śladami na płytce drukowanej). W ten sposób pobierało 30mA - okropne! Z rezystorem 3,3k jest nadal widoczny (idealny do astrofotografii) i pobiera tylko 1mA. Nadal możesz uzyskać przyzwoitą jasność za pomocą 1k lub w inny sposób. Nie mam problemu z moim rysunkiem poniżej 2mA z włączonym podświetleniem! Jeśli chcesz, trywialne jest dodanie pokrętła jasności za pomocą potencjometru 10k. Dioda podczerwieni może przyjmować maksymalnie 100mA, ale mam dobre wyniki przy 60mA w poprzek mojego (eksperyment!). Możesz wtedy zmniejszyć o połowę ten prąd, ponieważ efektywnie pracujesz w cyklu pracy 50% (kiedy dioda LED jest modulowana). W każdym razie świeci tylko na ułamek sekundy, więc nie musimy się tym martwić. Z innymi diodami, z którymi powinieneś się pobawić, może się okazać, że wystarczy prąd 10mA, aby zapewnić dobrą jasność - na pewno spójrz dla diod LED małej mocy (oprócz IR) nie projektujesz latarki! Zdecydowałem się nie dodawać wskaźnika zasilania do mojego obwodu, po prostu dlatego, że jest to duży pobór prądu, który nie jest zbyt duży. Użyj włącznika/wyłącznika, aby sprawdzić, czy jest włączony! W sumie nie powinieneś działać więcej niż 30mA w tym samym czasie i przy teoretycznej mocy około 2500 (z uwzględnieniem zmian) mAh, która powinna dać ci dobrze ponad 80 godzin prosto ze wszystkim. Przy bezczynnym procesorze przez większość czasu będzie to co najmniej dwukrotnie lub trzykrotnie, więc nie powinieneś często wymieniać baterii. Wniosek No i to było łatwe, nieprawdaż! Możesz albo taniej i wesoło z baterią 9V i regulatorem LDO kosztem wydajności, albo zapłacić trochę więcej i użyć do tego dedykowanego układu scalonego. Mój budżet wciąż wynosił poniżej 20, nawet Z IC, więc możesz go jeszcze bardziej obniżyć, jeśli zajdzie taka potrzeba.

Krok 3: Bliższe spojrzenie na ATmega8

Bliższe spojrzenie na ATmega8
Bliższe spojrzenie na ATmega8

PinsImage 1 to schemat pinów dla ATMega8 (dokładnie taki sam jak 168/48/88, jedyną różnicą jest ilość wbudowanej pamięci i opcji przerwań). Pin 1 - Reset, powinien być trzymany przy napięciu VCC (lub przynajmniej logiczne 1). W przypadku uziemienia urządzenie wykona miękki resetPin 2-6 - Port D, ogólne wejście/wyjściePin 7 - VCC, napięcie zasilania (dla nas +5V)Pin 8 - GroundPin 9, 10 - XTAL, wejścia zegara zewnętrznego (część portu B)Pin 11 - 13 Port D, ogólne wejście/wyjściePin 14 - 19 Port B, ogólne wejście/wyjściePin 20 - AVCC, analogowe napięcie zasilania (takie samo jak VCC)Pin 21 - AREF, analogowe napięcie odniesieniaPin 22 - MasaPin 23-28 Port C, ogólne wejścia/wyjściaUżyteczne porty we/wy: D = 8, C = 6, B = 6 Łącznie 20 użytecznych portów jest świetne, dla uproszczenia powinieneś pogrupować swoje wyjścia albo w porty (powiedzmy, D jako port wyjściowy) lub w grupy na płycie - możesz chcieć, aby wyświetlacz LCD działał z portu C, aby utrzymać porządek w tym rogu. Do programowania wymagane są trzy dodatkowe piny. Są to MISO (18), MOSI (17) i SCK (19). W razie potrzeby będą one jednak z radością działały jako piny we/wy. TaktowanieSygnał, który wysyłamy do kamery, musi być precyzyjnie zsynchronizowany (z dokładnością do około mikrosekundy), dlatego ważne jest, aby wybrać dobre źródło zegara. Wszystkie AVR mają wewnętrzny oscylator, z którego chip może pobierać zegar. Wadą tego jest to, że mogą oscylować wokół 10% wraz z temperaturą/ciśnieniem/wilgotnością. Aby temu zaradzić, możemy użyć zewnętrznego kryształu kwarcu. Są one dostępne w dowolnym zakresie od 32768 kHz (zegarek) do 20 MHz. Zdecydowałem się na użycie kryształu 4Mhz, ponieważ zapewnia on przyzwoitą prędkość, ale jest dość konserwatywny w porównaniu do być może 8Mhz +. Zarządzanie energią na płycie Naprawdę chciałem użyć procedur uśpienia w moim kodzie. W rzeczywistości napisałem pierwszą wersję, aby w dużym stopniu polegać na bezczynności procesora podczas upływu czasu. Niestety, ze względu na ograniczenia czasowe, napotkałem pewne problemy z zewnętrznym działaniem zegara i przerywaniem korzystania z timerów. Zasadniczo musiałbym przepisać kod, aby poradzić sobie z kontrolerem, który po prostu się nie budzi - co mógłbym zrobić, ale czas jest przeciwko mnie. W związku z tym urządzenie pobiera tylko prąd o natężeniu 20 mA, więc możesz uciec. Jeśli naprawdę masz na to ochotę, to na pewno pobawisz się kodem, wszystko, co musisz zrobić, to wewnętrznie taktować, a następnie uruchomić Timer 2 w trybie asynchronicznym, używając kryształu 4 MHz dla dokładniejszych opóźnień. To proste, ale czasochłonne. ADC Szwajcarski scyzoryk w zestawie narzędzi AVR, ADC oznacza konwerter analogowo-cyfrowy. Jak to działa jest stosunkowo proste z zewnątrz. Napięcie jest próbkowane na bolcu (z jakiegoś czujnika lub innego wejścia), napięcie jest konwertowane na wartość cyfrową z zakresu od 0 do 1024. Wartość 1024 będzie obserwowana, gdy napięcie wejściowe jest równe napięciu odniesienia ADC. Jeśli ustawimy nasze odniesienie na VCC (+5V), to każda dywizja to 5/1024 V lub około 5mV. Tak więc wzrost o 5mV na pinie zwiększy wartość ADC o 1. Możemy przyjąć wartość wyjściową ADC jako zmienną, a następnie bawić się nią, porównywać ją z rzeczami itp. w kodzie. ADC jest niezwykle przydatną funkcją i pozwala robić wiele fajnych rzeczy, takich jak przekształcenie AVR w oscyloskop. Częstotliwość próbkowania wynosi około 125kHz i musi być ustawiona proporcjonalnie do częstotliwości głównego zegara. Rejestry Być może słyszałeś już o rejestrach, ale nie obawiaj się! Rejestr to po prostu zbiór adresów (lokalizacji) w pamięci AVR. Rejestry są klasyfikowane według ich rozmiaru w bitach. Rejestr 7-bitowy ma 8 lokalizacji, ponieważ zaczynamy od 0. Są rejestry dla prawie wszystkiego i przyjrzymy się im znacznie bardziej szczegółowo później. Niektóre przykłady obejmują rejestry PORTx (gdzie x to B, C lub D), które kontrolują, czy pin jest ustawiony na wysoki lub niski i ustawia rezystory podciągające dla wejść, rejestry DDRx, które ustawiają, czy pin jest wyjściowy, czy wejściowy i tak dalej. Arkusz danych Olbrzym literatury, ważący około 400 stron; arkusze danych AVR są nieocenionym źródłem informacji o Twoim procesorze. Zawierają szczegóły każdego rejestru, każdego pinu, jak działają zegary, jakie bezpieczniki należy na co ustawić i wiele więcej. Są bezpłatne i prędzej czy później będziesz ich potrzebować, więc pobierz kopię! www.atmel.com/dyn/resources/prod_documents/doc2486.pdf

Krok 4: Przydzielanie pinów

Przypisywanie pinów
Przypisywanie pinów

Wspomniałem już o wejściach i wyjściach, których potrzebujemy, więc powinniśmy przydzielić im piny! Teraz PORT D ma 8 pinów, co jest wygodne, ponieważ może działać jako nasz port wyjściowy. Wyświetlacz LCD wymaga do działania 7 pinów - 4 pinów danych i 3 pinów sterujących. Dioda IR wymaga tylko jednego pinu, więc nasz 8. PORTB będzie naszym portem przycisków, ma 6 wejść, ale będziemy potrzebować tylko 5. Będą to przyciski trybu i kierunku. specjalny, jest to port ADC. Potrzebujemy tylko jednego pinu do wejścia wyzwalacza i sensowne jest umieszczenie go na PC0 (powszechny skrót dla pinów portu w tym przypadku Port C, Pin 0). Następnie mamy kilka pinów dla diod LED stanu (jeden zapala się, gdy wartość ADC jest wyższa od pewnego warunku, drugi zapala się, gdy jest poniżej pewnego warunku). Zamierzamy również umieścić tutaj nasze dane wejściowe przycisku ok/strzelaj z powodów, które wyjaśnią się później. Po tym wszystkim zużyliśmy większość portów, ale wciąż zostało nam kilka, jeśli chcesz rozszerzyć projekt - może wiele wyzwalaczy?

Krok 5: Komunikacja z aparatem

Komunikacja z aparatem
Komunikacja z aparatem
Komunikacja z aparatem
Komunikacja z aparatem

I nagroda w konkursie fotograficznym Digital Days

Zalecana: