Съдържание:

Изградете свой собствен (евтин!) Многофункционален безжичен контролер за камера .: 22 стъпки (със снимки)
Изградете свой собствен (евтин!) Многофункционален безжичен контролер за камера .: 22 стъпки (със снимки)

Видео: Изградете свой собствен (евтин!) Многофункционален безжичен контролер за камера .: 22 стъпки (със снимки)

Видео: Изградете свой собствен (евтин!) Многофункционален безжичен контролер за камера .: 22 стъпки (със снимки)
Видео: Xiaomi MCCGQ01LM - Датчик открытия дверей и окон системы умный дом mihome 2024, Ноември
Anonim
Изградете свой собствен (евтин!) Многофункционален безжичен контролер за камера
Изградете свой собствен (евтин!) Многофункционален безжичен контролер за камера
Изградете свой собствен (евтин!) Многофункционален безжичен контролер за камера
Изградете свой собствен (евтин!) Многофункционален безжичен контролер за камера
Изградете свой собствен (евтин!) Многофункционален безжичен контролер за камера
Изградете свой собствен (евтин!) Многофункционален безжичен контролер за камера

Въведение Някога мечтали ли сте да създадете свой собствен контролер за камера? ВАЖНО ЗАБЕЛЕЖКА: Кондензаторите за MAX619 са 470n или 0.47u. Схемата е правилна, но списъкът с компоненти е грешен - актуализиран. Това е участие в конкурса „Цифрови дни“, така че ако ви се струва полезно, моля, оценете/гласувайте/коментирайте положително! Ако наистина ви харесва и сте спъвач, натиснете „харесва ми!“:) Актуализация: включено в hackaday! hackaday.com/2009/10/13/a-different-breed-of-camera-controllers/ Актуализация: нови снимки на лазерния спусък в действие! Актуализация: Първа награда = D, благодаря за гласуването и/или оценката! Тази инструкция е предимно в полза на потребителите на SLR, които искат да получат малко повече пробег от камерите си, но ако има някакви точки и издънки с IR интерфейси, може да ви се стори интересно. Със сигурност това ще работи (с малко модификация) с хакове за камера, където можете да свържете логически изходи към терминалите за задействане на камерата. Това започна като пълноценен урок, но поради някои неочаквани ограничения, които срещнах по -късно, може да е по -скоро ръководство за това как да постигнете различни неща - често ще ви оставям избор как да правите неща, които Мисля, че е по -добър начин да правите неща, отколкото просто сляпо да кажете „трябва да направите това“. Мислете за това като за урок по дизайн на контролера на камерата. Предоставих схеми и пълен код, така че винаги можете просто да го копирате. Това ще бъде прост случай на прехвърляне на дизайна на лента и добавяне на LCD за повечето хора. Преминах как да го направя, тъй като процесът е много подобен и позволява да се коригират грешките, преди да направите дизайна постоянен! Характеристики: Режим на единичен кадър Интервал (интервал от време) Режим на задействане (задействане от външен сензор) с променливи условия Включени дизайни на сензори - светлина, звук (много повече възможни!) Обща цена - под £ 25 (без инструменти) LCD дисплей за лесна промяна на настройките Съвместим с Nikon/Canon (кодиран), потенциална поддръжка (не тестван) за Olympus/Pentax Без фърмуер необходима модификация Използва IR, така че е едновременно безжичен и не уврежда камерата ви. Имах идеята за това, след като седнах навън на студено и щракнах с дистанционното си с часове. Правих 8 секунден интервал за около 1000 изстрела. Помислих си, хей, това е просто инфрачервен светодиод, нали? Защо не мога да го копирам и да направя собствено дистанционно с вградено забавяне? Тогава разбрах (донякъде смутен, защото си мислех, че съм имал огромна мозъчна вълна), че това е направено и има дори няколко инструкции по темата. Там, където моето изпълнение се различава от повечето интервалометри и дистанционно управление, е, че позволява много персонализиране и модулност, съвместимо е както с Nikon/Canon (и вероятно други по -късно), така и съчетава възможността да се направи снимка на конкретен спусък. Идеята е проста. Искате да направите снимка на нещо доста бързо (ограничено в момента от изоставането на затвора, за мен 6ms). Има различни методи за това: 1. Опити и грешки, когато се опитвате да направите снимката в правилния момент 2. Подобрен опит и грешка, вие затъмнявате стаята, поставяте камерата си на крушка (отворен затвор) и задействате светкавица в точното време 3. Купете специален задействащ контролер, който има някакъв аудио/светлинен сензор, за да направите снимката по ваша команда 4. Изградете такъв сами! Добре, 1 и 2 са подходящи за бъркотия и могат да дадат много добри снимки. Но това, което ще ви покажа, е, че е възможно да се изгради схема, която да ви дава постоянни резултати отново и отново. Най -важното е, че в тези тежки времена цената е по -ниска от алтернативните модели (някои хора са произвели комплекти за такива неща, но струват цяло състояние вижте връзки). Универсалността на дизайна е следната: Ако вашият сензор генерира изходно напрежение между 0 и 5V, можете да го използвате, за да задействате камерата си! На пръв поглед това е скучно твърдение, но щом започнете да разбирате последиците, то става много мощно. Чрез просто наблюдение на нивото на напрежение, вашият спусък може да бъде на светлинна основа (LDR), на звук (микрофон или ултразвук), на температура (термистор) или дори на обикновен потенциометър. Всъщност, почти всичко. Можете дори да свържете веригата към друг контролер и при условие, че може да ви даде логически изход, като по този начин можете да задействате от него. Единственото основно ограничение на дизайна в момента е, че работи само с IR интерфейси, би било сравнително лесно да се променят софтуерът и хардуерът за извеждане чрез mini-USB или какъвто и друг вид интерфейс е необходим. Забележка: Изходен код: Предоставих някои приложения в стъпка 13. Кодът, който изпълнявам на моя контролер към момента, е горе в шестнадесетичен файл заедно с основния c файл и неговите зависимости. Можете просто да стартирате моя код, ако не сте сигурни относно компилирането. Включих и примерен код, който можете да използвате в различни стъпки (те се наричат очевидно като remote_test, intervalometer test и adc test. Ако визирам кода на стъпка, има вероятност той е там. EDIT: Актуализация за изскачащи балони - изглежда бях малко късоглед, когато казах, че лесно можете да снимате снимки на изскачащи балони. е проблем с повечето камери, НЕ с контролера (който разпознава ADC със скорост около 120kHz). Начинът около това е да се използва задействана светкавица, което е възможно, ако добавите допълнителен проводник и друга малка верига. Това казано, на теория бихте могли да използвате нещо друго, за да го пуснете и да играете със закъснението (или дори да промените кода на забавяне, за да включите микросекунди). Въздушната гранула, пътуваща 1 м при 150 мс-1, отнема около 6-7 мс, достатъчно време за задействане и стрелба Само преместването на пистолета би осигурило елементарно забавяне от няколко микросекунди с. Отново се извинявам за това, ще играя за тази вечер, ако успея да се добера до някои балони, но все още има много приложения за звуков спусък, като фойерверки! По -долу съм поставил бърз и мръсен интервал, за да покажа, че все пак работи:) Не забравяйте да прочетете, оцените и/или гласувайте! Наздраве, Джош Отказ от отговорност В малко вероятния случай, че нещо се обърка ужасно или по някакъв начин сте си тухлили камерата/драмелите котката си, аз не нося отговорност за нищо. Започвайки проект на базата на тази инструкция, вие приемате това и продължавате на свой собствен риск. Ако направите едно от тях или използвате моите инструкции, за да ви помогна - моля, изпратете ми връзка/снимка, за да мога да го включа тук! Отговорът досега беше огромен (поне по моите стандарти), така че би било страхотно да се види как хората го тълкуват. Работя по редакция 2, докато пиша;)

Стъпка 1: Някои първоначални мисли …

И така, как ще изградим това нещо? Микроконтролер Сърцето и душата на този проект е AVR ATMega8. По същество това е леко подрязана версия на чипа ATMega168, който използва Arduino. Той е програмируем на C или монтаж и има редица наистина полезни функции, които можем да използваме в наша полза. "28 пина, повечето от които са вход/изход (i/o)" Вграден аналогово -цифров преобразувател "Ниска консумация на енергия "3 вградени таймера" Вътрешен или външен източник на часовник "Много кодови библиотеки и примерни онлайн Наличието на много пинове е добре. Можем да взаимодействаме с LCD екран, да имаме 6 входа за бутони и все още да имаме достатъчно, за да може IR LED да снима и някои светодиоди за състоянието. Серията процесори Atmel AVR има много онлайн поддръжка и има много уроци за получаване започна (ще разгледам това накратко, но има по -добри специализирани уроци) и купчини и купчини код, които да обмислям. За справка ще кодирам този проект на C, използвайки библиотеката AVR-LibC. Можех лесно да отида с PIC, за да направя това, но AVR се поддържа добре и всички примери, които открих за дистанционни управления, са базирани на AVR! LCD дисплей Тук са два основни типа дисплей, графичен и буквено -цифров. Графичните дисплеи имат резолюция и можете да поставяте пиксели където пожелаете. Недостатъкът е, че те са по -трудни за кодиране (въпреки че библиотеките съществуват). Буквено -цифровите дисплеи са просто един или повече редове знаци, LCD дисплеят има вградено хранилище на основни символи (т.е. азбуката, някои числа и символи) и е сравнително лесно да се извеждат низове и т.н. Недостатъкът е, че те не са толкова гъвкави и показването на графики е практически невъзможно, но отговаря на целта ни. Те също са по -евтини! Буквено -цифровите са категоризирани по броя на редовете и колоните. 2x16 е доста често срещан, с два реда по 16 знака, като всеки знак е 5x8 матрица. Можете да получите и 2x20 s, но не виждам нужда. Купете всичко, с което се чувствате комфортно. Избрах да използвам червен LCD дисплей с подсветка (искам да го използвам за астрофотография, а червената светлина е по -добра за нощно виждане). Можете да отидете без подсветка - това е изцяло ваш избор. Ако изберете маршрут без подсветка, ще спестите енергия и пари, но може да се нуждаете от фенерче на тъмно. Когато търсите LCD, трябва да се уверите, че той се контролира от HD44780. Това е индустриален стандартен протокол, разработен от Hitachi и има много добри библиотеки, които можем да използваме за извеждане на данни. Моделът, който купих, беше JHD162A от eBay. InputInput ще се извършва с бутони (просто!). Избрах 6 - режим за избор, ok/стрелба и 4 посоки. Също така си струва да получите още един малък бутон за нулиране на микро в случай на срив. Що се отнася до входа на тригера, някои основни идеи са светлозависим резистор или електретен микрофон. Тук можете да проявите креативност или скъперничество в зависимост от бюджета си. Ултразвуковите сензори ще струват малко по -скъпо и изискват допълнително програмиране, но можете да правите някои наистина чисти неща с тях. Повечето хора ще се радват на микрофон (може би най -полезният общ сензор) и електриците са много евтини. Имайте предвид, че и той ще трябва да бъде усилен (но ще разгледам това по -късно). снимки, трябва да се свържем с камерата и за това имаме нужда от източник на светлина, който може да произвежда инфрачервено излъчване. За щастие има множество светодиоди, които правят това и трябва да се опитате да вземете един сравнително висок. Устройството, което избрах, има текущ рейтинг от 100 mA max (повечето светодиоди са около 30 mA). Трябва също така да обърнете внимание на изхода на дължината на вълната. Инфрачервената светлина е в частта с по-голяма дължина на вълната на ЕМ спектъра и трябва да търсите стойност от около 850-950nm. Повечето инфрачервени светодиоди са насочени към края на 950 и може да видите малко червена светлина, когато е включена, това не е проблем, но е изгубен спектър, затова се опитайте да се доближите до 850, ако е възможно. това? Е, ще бъде преносим, така че батерии! Избрах да използвам 2 батерии АА, които след това се увеличават до 5V. Ще разгледам мотивите зад това в следващите няколко раздела. „Корпус и конструкция“Как ще направите това, зависи изцяло от вас. Реших да използвам лента за веригата след прототипиране, защото е евтина и гъвкава и спестява проектирането на персонализирана печатна платка. Предоставих схемите, така че можете свободно да направите свое собствено оформление на печатна платка - въпреки че ако го направите, ще съм благодарен да имате копие! Отново случаят е изцяло ваш избор, той трябва да може да се побере на екрана, бутоните (в доста интуитивно оформление, ако е възможно) и батериите. С платките това не е толкова сложно, много връзки са просто към неща като бутоните/LCD.

Стъпка 2: Управление на захранването

Управление на енергията
Управление на енергията

Управление на захранването За такъв проект е очевидно, че преносимостта трябва да бъде ключов аспект. По този начин батериите са логичният избор! Сега за преносимите устройства е доста важно да изберете източник на батерия, който е или презареждащ се, или лесно достъпен. Двете основни опции са батерията 9V PP3 или батериите AA. Сигурен съм, че някои хора ще предположат, че 9V батерията е най -добрият вариант, защото хей, 9V е по -добра от 3 нали? Е, не в този случай. 9V батерии, макар и много полезни, произвеждат напрежението си за сметка на живота на батерията. Измерена в mAh (милиамперни часове), тази оценка ви показва теоретично колко дълго ще издържи батерията да работи при 1mA в часове (макар че я вземете с щипка сол, те често са при идеални условия при ниско натоварване). Колкото по -висок е рейтингът, толкова по -дълго ще издържи батерията. 9V батерии са с мощност до и около 1000mAh. Алкалните АА от друга страна имат почти три пъти повече при 2900mAh. NiMH акумулаторите могат да достигнат това, въпреки че 2500mAh е разумно количество (имайте предвид, че акумулаторните батерии работят при 1.2V, а не 1.5!). LCD екранът се нуждае от вход 5V (10%), а AVR (микроконтролерът) се нуждае от приблизително същото (въпреки че може да стигне до 2,7 за нискочестотни тактови честоти). Нуждаем се и от доста стабилно напрежение, ако то се колебае, може да причини проблеми с микроконтролера. За да направим това, ще използваме регулатор на напрежението, трябва да направите избор за цена срещу ефективност сега. Имате възможност да използвате прост 3-пинов регулатор на напрежение като LM7805 (серия 78, изход +5 волта) или малка интегрална схема. Използване на прост регулатор Ако решите да отидете с тази опция, трябва да носите няколко точки предвид. Първо, три щифтовите регулатори почти винаги се нуждаят от вход, който е по -висок от техния изход. След това понижават напрежението до желаната стойност. Недостатъкът е, че те имат ужасна ефективност (50-60% вървят добре). Предимството е, че те са евтини и ще работят с 9V батерия, можете да вземете основен модел за 20 пенса във Великобритания. Трябва също така да имате предвид, че регулаторите имат напрежение на отпадане - минималната разлика между входа и изхода. Можете да закупите специални LDO (Low DropOut) регулатори, които имат отпадания при около 50mV (в сравнение с 1-2V при други дизайни). С други думи, внимавайте за LDO с изход +5 V. Използване на интегрална схема Идеалният начин да преминете е превключващ регулатор. За нашата цел това ще бъдат обикновено 8 -пинови пакети, които приемат напрежение и ни дават регулиран изход с висока ефективност - почти 90% в някои случаи. Можете да получите преобразуватели за увеличаване или понижаване (съответно усилване/понижение) в зависимост от това, което искате да поставите, алтернативно можете да закупите регулатори, които ще поемат или над или под желания изход. Чипът, който използвам за този проект, е a MAX619+. Това е 5V регулатор, който приема 2 AA (обхватът на входа е 2V-3.3V) и дава постоянен изход 5V. За работа му трябват само четири кондензатора и е много ефективен в пространството. Цена - 3,00 лв., Включително капачките. Може би си заслужава разточителството, само за да се възползвате малко повече от батериите си. Единственият основен недостатък е, че не е защитен от късо съединение, така че ако има токов удар, бъдете предупредени! Това е сравнително тривиално за коригиране с добавяне на верига: Друг полезен дизайн на чип - макар и не толкова чисто решение е LT1307. Отново регулатор 5V, но той може да приема различни входове и има полезни неща като откриване на изтощена батерия. Това струва доста повече при почти 5 с индуктори, големи кондензатори и резистори. Релси за напрежение Ще използваме две релси за основно напрежение (плюс общо заземяване). Първият ще бъде 3V от батерията, той ще се използва за захранване на светодиодите и други компоненти с относително висока мощност. Моят MAX619 е оценен само до 60mA (въпреки че абсолютният максимум е 120mA), така че е по -лесно да свържете микроконтролера към MOSFET, за да контролирате всички светодиоди. MOSFET не черпи почти никакъв ток и действа като прекъсване на веригата, когато входът на портата е под около 3V. Когато микроконтролерът изпрати логически 1 на щифта, напрежението е 5V и FET се включва, след което просто действа като късо съединение (т.е. парче тел). 5V шината ще захранва LCD, микроконтролера и всички усилващи вериги за входни сензори. Консумация на енергия Ако разгледаме различни технически листове, отбелязваме, че AVR отнема не повече от 15-20mA при максимално натоварване. LCD работи само 1mA за работа (поне когато тествах, бюджет за 2). С включената подсветка наистина вие решавате. Свързването му директно към 5V шината (опитах) е добре, но се уверете, че има вграден резистор (следвайте следите на печатната платка), преди да го направите. Той изтегли 30mA по този начин - ужасно! С 3.3k резистор той все още е видим (идеален за астро фотография) и извлича само 1mA. Все още можете да получите прилична яркост, като използвате 1k или по друг начин. Добре съм с рисуването на малко под 2mA с включена подсветка! Ако искате, тривиално е да добавите копче за яркост с помощта на 10k потенциометър. IR LED може да отнеме максимум 100mA, но имах добри резултати с 60mA през моя (експеримент!). След това можете да намалите наполовина този ток, защото ефективно работите при 50% работен цикъл (когато светодиодът е модулиран). Както и да е, той е включен само за част от секундата, така че не е нужно да се притесняваме за това. Другите светодиоди, с които трябва да играете, може да откриете, че само 10mA ток е достатъчен, за да ви осигури добра яркост - със сигурност погледнете за светодиоди с ниска мощност (с изключение на инфрачервения), не проектирате фенерче! Избрах да не добавя индикатор за захранване във веригата си, просто защото това е много текущо потребление за не много използване. Използвайте превключвателя за включване/изключване, за да проверите дали е включен! Като цяло не трябва да работите повече от 30mA по едно и също време и с теоретично захранване от около 2500 (позволяващо вариации) mAh, което би трябвало да ви даде над 80 часа направо с всичко включено. С процесора на празен ход през повечето време това ще се удвои/утрои, така че не трябва да сменяте батериите си много често. Можете или да отидете евтино и весело с 9V батерия и LDO регулатор за сметка на ефективността, или да платите малко повече и да използвате специална интегрална схема, за да го направите. Бюджетът ми все още беше под 20 дори с ИС, така че можете да го намалите още повече, ако е необходимо.

Стъпка 3: По -отблизо погледнете ATmega8

По -внимателен поглед към ATmega8
По -внимателен поглед към ATmega8

PinsImage 1 е диаграмата на извод за ATMega8 (точно същата като 168/48/88, единствената разлика е количеството вградена памет и опциите за прекъсване). Pin 1 - Нулиране, трябва да се държи при напрежение VCC (или поне логично 1). Ако е заземен, устройството ще се рестартира меко: Pin 2-6 - Порт D, общ вход/изход Pin 7 - VCC, захранващо напрежение (+5V за нас) Pin 8 - GroundPin 9, 10 - XTAL, външни часовникови входове (част от Порт B) Pin 11 - 13 Порт D, общ вход/изход Pin 14 - 19 Порт B, общ вход/изход Pin 20 - AVCC, аналогово захранващо напрежение (същото като VCC) Pin 21 - AREF, справка за аналогово напрежение Pin 22 - GroundPin 23-28 Порт C, общ вход/изход Използваеми входно -изходни портове: D = 8, C = 6, B = 6 Общо 20 използваеми порта са чудесни, за простота трябва да групирате вашите изходи или в портове (да речем, D като изходен порт) или в групи на дъската - може да искате LCD да работи от порт C, само за да поддържа кабелите подредени в този ъгъл. Има три допълнителни пина, които са необходими за програмиране. Това са MISO (18), MOSI (17) и SCK (19). Те обаче с удоволствие ще действат като входно -изходни щифтове, ако е необходимо. Всички AVR имат вътрешен осцилатор, от който чипът може да получи часовника си. Недостатъкът на това е, че те могат да се колебаят около 10% с температура/налягане/влажност. Това, което можем да направим, за да се борим с това, е да използваме външен кварцов кристал. Те са достъпни във всякакъв диапазон от 32768kHz (часовник) до 20MHz. Избрах да използвам 4Mhz кристал, тъй като той осигурява прилично количество скорост, но е сравнително консервативен в сравнение с може би 8Mhz+. Управление на захранването на борда Наистина исках да използвам сънни процедури в кода си. Всъщност написах първата версия, за да разчитам силно на празен ход на процесора, докато времето минава. Неуверено, поради ограничения във времето, се сблъсках с някои проблеми с външното пускане на часовника и прекъсването на използването на таймерите. По същество ще трябва да пренапиша кода, за да се справя с контролера просто без да се събужда - което бих могъл да направя, но времето е против мен. Като такова, устройството извлича само 20 mA иш, така че можете да се измъкнете. Ако наистина сте готови за това, тогава по всякакъв начин се занимавайте с кода, всичко, което трябва да направите, е да работите вътрешно и след това да стартирате Таймер 2 в асинхронен режим, използвайки 4MHz кристал за по -точни закъснения. Това е лесно да се направи, но отнема много време. ADC Швейцарският армейски нож в набора от инструменти AVR, ADC означава Аналогово -цифров конвертор. Начинът на работа е сравнително прост отвън. Пробва се напрежение върху щифт (от някой сензор или друг вход), напрежението се преобразува в цифрова стойност между 0 и 1024. Стойност 1024 ще се наблюдава, когато входното напрежение е равно на референтното напрежение на ADC. Ако зададем нашата референция да бъде VCC (+5V), тогава всяко разделение е 5/1024 V или около 5mV. По този начин увеличение с 5mV на щифта ще увеличи стойността на ADC с 1. Можем да вземем стойността на изхода на ADC като променлива и след това да се занимаваме с нея, да я сравним с нещата и т.н. в кода. ADC е невероятно полезна функция и ви позволява да правите много готини неща като да превърнете вашия AVR в осцилоскоп. Честотата на дискретизация е около 125kHz и трябва да бъде настроена пропорционално на основната тактова честота. Регистратори Може да сте чували за регистри преди, но не се страхувайте! Регистърът е просто съвкупност от адреси (местоположения) в AVR паметта. Регистрите се класифицират по техния битов размер. 7 -битов регистър има 8 местоположения, като започваме от 0. Има регистри за почти всичко и по -късно ще ги разгледаме много по -подробно. Някои примери включват регистрите PORTx (където x е B, C или D), които контролират дали един щифт е настроен високо или ниско и задава издърпващи резистори за входове, DDRx регистрите, които задават дали изводът е изход или вход и т.н. Техническият лист - гигант на литературата, с тегло около 400 страници; Информационните листове на AVR са безценна справка за вашия процесор. Те съдържат подробности за всеки регистър, всеки щифт, как работят таймерите, какви предпазители трябва да бъдат настроени на какво и много други. Те са безплатни и рано или късно ще ви трябват, затова изтеглете копие! Www.atmel.com/dyn/resources/prod_documents/doc2486.pdf

Стъпка 4: Разпределяне на щифтове

Разпределяне на щифтове
Разпределяне на щифтове

Вече споменах входовете и изходите, от които се нуждаем, така че трябва да ги разпределим! Сега PORT D има 8 пина, което е удобно, тъй като може да действа като наш изходен порт. LCD дисплеят изисква 7 пина за работа - 4 пина за данни и 3 контролни пина. Инфрачервеният светодиод изисква само един щифт, така че това прави нашия 8. PORTB ще бъде нашият бутон за порт, той има 6 входа, но ще ни трябват само 5. Това ще бъдат бутоните за режим и насочване. специално, това е ADC порт. Нуждаем се само от един щифт за вход за задействане и има смисъл да го поставим на PC0 (често срещано съкращение за щифтове за портове в този случай Port C, Pin 0). След това имаме няколко пина за светодиоди за състоянието (единият светва, когато стойността на ADC е над някакво условие, другият светва, когато е под някакво състояние). Тук също ще въведем нашия бутон OK/shoot, поради причини, които ще станат ясни по -късно. След всичко това, ние използвахме по -голямата част от портовете, но все още имаме няколко, ако искате да разширите проекта - може би множество задействания?

Стъпка 5: Общуване с камерата

Комуникация с камерата
Комуникация с камерата
Комуникация с камерата
Комуникация с камерата

Първа награда във фотоконкурса Digital Days

Препоръчано: