Съдържание:

Сигнална лампа за велосипед: 10 стъпки (със снимки)
Сигнална лампа за велосипед: 10 стъпки (със снимки)

Видео: Сигнална лампа за велосипед: 10 стъпки (със снимки)

Видео: Сигнална лампа за велосипед: 10 стъпки (със снимки)
Видео: Динко Вълев иска да вкара Стоян Колев в багажника 2024, Ноември
Anonim
Велосипедна ръчна сигнална светлина
Велосипедна ръчна сигнална светлина

Целта на този проект е да се създаде светлина, която да се побира върху ръкавица за велосипед и да сочи в посоката на предвидения завой, за да се увеличи видимостта през нощта. Той трябва да бъде лек, лесен за използване и интегриран със съществуващите движения за сигнализиране (минимално промяна на метода на сигнала (не е нужно да натискате бутон, той просто се изпълнява, когато сигнализирате)). Това би било чудесен празничен подарък.

Забележка: Това изисква предишни познания за запояване и идеята за програмиране на AVR е голям плюс. Имайки това предвид, забавлявайте се, бъдете търпеливи и публикувайте снимки на вашия продукт по -долу! Ето видео: И ето една моя снимка:

Стъпка 1: Части

Части
Части

x1 ATmega 32L 8PU (www.digikey.com) x1 40-пинов DIP гнездо (www.digikey.com) x1 8x8 LED масив (www.sparkfun.com) x1 74138 Демултиплексор (www.digikey.com) x2 Flex сензори (www.sparkfun.com) x (Много) Резистори 180 ома и 10 k ohmx2 PC платка (www.sparkfun.com) x6 Стойкове (www.sparkfun.com) и винтове за поставяне (Местен магазин за хардуер) x1 Акселерометър на пробивната платка (www.sparkfun.com) x2 заглавки - мъжки (www.sparkfun.com), женски (www.sparkfun.com) и прав ъгъл (www.sparkfun.com) x1 LM7805 (www.digikey.com) x2 8 -контактни гнезда (Взех моята в Radio Shack) x1 9v батерия x1 крак закрепване velcrox1 Пълнопръстен мотоциклетник x1 макара полиестерна нишка x1 Програмист (имам този) x1 Стрипер за тел и clipx1 Мултицет Някои от частите:

Стъпка 2: Подгответе дъските

Подгответе дъските
Подгответе дъските
Подгответе дъските
Подгответе дъските
Подгответе дъските
Подгответе дъските
Подгответе дъските
Подгответе дъските

Първо добавете отстъпките. Ще трябва да завиете две заедно, за да получите правилната височина. Уверете се, че противостоянията се спускат отстрани с подложките SQUARE. По този начин можете да мостовете подложки с спойка отдолу и мост с общата подложка отгоре, за да се свържете към земята. След това добавете светодиодния масив и го залепете. Той трябва да бъде толкова далеч до ръба на платката с двата жилища, колкото може да бъде с YS, обърнат към противоположната страна. Щифтът в долния ляв ъгъл е щифт 1. (Той също е отбелязан на снимката.) След това добавете двата 8 -пинови гнезда един върху друг, така че да образуват един 16 -пинов контакт. Уверете се, че има едно пространство отляво и след това запоявайте това. След това разделете мъжките и женските заглавки на 10 и 11 щифтови секции. Ще ви трябват два пъти повече женски заглавки. Запоявайте тези вътре, както се вижда на снимката. Що се отнася до мъжките заглавки, трябва да изместите щифта, така че те да са равни по размер от всяка страна на пластмасата. Най -лесно е да погледнете снимка, за да видите какво имам предвид, така че погледнете #6. Използвах клещи и работи доста добре. Сега, ако вземете мъжките заглавки и ги поставите между двете женски заглавки, ще видите, че те вече са с правилния размер, за да свържат горната и долната дъска заедно.

Стъпка 3: Добавете резисторите

Добавете резисторите
Добавете резисторите
Добавете резисторите
Добавете резисторите
Добавете резисторите
Добавете резисторите

Тези резистори преминават между LED масива и 74138 (заземяване), за да защитят масива. Сгънете един от проводниците от резистора отгоре, така че двата проводника да са успоредни. Поставете ги на щифтове 7, 9, 10, 11, 12, 13, 14 и 15 и запойте. Открих, че работи най -добре, ако редувате посоката на резистора, както можете да видите на втората и третата снимка.

Стъпка 4: Свържете върха

Свържете горната част
Свържете горната част
Свържете горната част
Свържете горната част
Свържете горната част
Свържете горната част
Свържете горната част
Свържете горната част

Това е най -дългата стъпка на проекта, така че се надявам да харесате запояване! Просто следвайте схемата по -долу и не забравяйте да тествате непрекъснатостта с вашия мултицет. В случай, че искате да знаете как стигнахме до нас със схематичния поглед към листа с данни за масива и 74138.

Стъпка 5: Попълнете дъното

Попълнете дъното
Попълнете дъното
Попълнете дъното
Попълнете дъното
Попълнете дъното
Попълнете дъното
Попълнете дъното
Попълнете дъното

Сега е време да поставим основните ни компоненти на дъното. Първо ще направим 40 -пинов DIP гнездо, което се приближава възможно най -близо до горния ляв ъгъл, като същевременно оставя един ред пространство от лявата страна. (Вижте снимка №1.) Запоявайте го и след това поставете заглавките. Най -лесният начин да направите това е да свържете тези отгоре към тези, които ще отидат отдолу, като използвате вашите модифицирани мъжки заглавки. Ако сте направили всичко правилно, трябва да завършите трите горни три щифта в лявата заглавка до долните десни щифтове на гнездото. Това е ОК. Използваме само най -долния щифт вдясно и както виждате имаме ясен изстрел към него от друга посока. Сега добавете регулатора на напрежението, както е показано на снимката. Закрепих моята през отвора в металния радиатор с винт и гайка. Радиаторът е друг начин за заземяване на чипа и закрепването му към платката осигурява стабилен контакт с общата връзка. Това е свързано както с долната, така и с горната част, тъй като двете са свързани с метални стойки. Ако обаче не използвате общата връзка за заземяване, НЕ закрепвайте радиатора към платката, тъй като радиаторът служи като земя и вероятно ще късо съедините нещо. Следващият проводник в скобата за батерията. Червеното отива към щифта вляво (с радиатора нагоре и щифтовете надолу) черно в средата и десния щифт произвежда +5v. Сега можете да свържете захранване към върха (вижте снимка #2). Сега за конектора на програмиста. Имам адаптер, който направих за моя програмист, но вероятно ще искате да включите 6 -пинов (3x2) хедър във вашия дизайн. Ако обаче имате адаптер като мен, ето какво направих. Взех правоъгълен хедер и женски хедър и ги запоявахме заедно (Снимка #3). След това го прикрепих към платката с първия щифт, свързан към щифт 6. Сега трябва да включите и заземите чипа, както и окабеляването в резистор, за да издърпате нулирането високо. Пуснах 10k резистор от щифт 9 до щифт 10 и след това свързах щифт 10 до +5v. Следващият щифт (11) отива към общата връзка (маса). Накрая погледнете снимка #4, за да завършите тази стъпка (Това е доста обяснително).

Стъпка 6: Свържете дъното

Свържете дъното отдолу
Свържете дъното отдолу
Свържете дъното отдолу
Свържете дъното отдолу
Свържете дъното отдолу
Свържете дъното отдолу

Спомняте ли си тази наистина забавна стъпка, при която трябва да преминете през 30 проводника, за да накарате LED масив да работи? Сега можете да го направите отново! На дъното!. Този е малко по -бърз, но не и много. Още веднъж погледнете схемата и проверете всичките си връзки с вашия мултицет. Не се притеснявайте, това е последното голямо запояване на проекта и почти сте готови.

Стъпка 7: Гъвкави сензори и акселерометър

Гъвкави сензори и акселерометър
Гъвкави сензори и акселерометър
Гъвкави сензори и акселерометър
Гъвкави сензори и акселерометър
Гъвкави сензори и акселерометър
Гъвкави сензори и акселерометър

Първо ще се заемем с гъвкавите сензори, но вие сте вкъщи, що се отнася до хардуера. Мисля, че снимките по -долу обясняват до голяма степен какво да правя. Свържете единия щифт към +5v другия към третия или четвъртия щифт отгоре от дясната страна на AVR (Микроконтролерът в основата на този проект). Когато сглобих това за първи път, си помислих, че това е всичко, което трябва да направя, но се оказа, че за да може AVR да чете гъвкавите сензори, трябва да поставите резистор от щифта на сензора, който отива към AVR към земята (Вижте снимки # 10 и 11). Използвах 10к. Това разделя напрежението към AVR, което на практика удвоява чувствителността на сензора. Сега за акселерометъра. Тъй като акселерометърът е само с коса по -висок от пространството между двете платки и защото може би ще искаме да го сменим някой ден, реших да използвам заглавки, за да го извадя от дъската и да го свържа. Използвайте заглавка под прав ъгъл, за да се свържете към 6 -те пина на пробивната платка. Сега вземете друга правоъгълна заглавка и запоявайте женска заглавка към късите щифтове, след което запоявайте това в долния ляв ъгъл на дъската. Включете акселерометъра, за да се уверите, че е подходящ, изключете го и след това свържете правилните щифтове към Vcc (+5v) и Gnd. След това свържете извода X към извод 40 и Y към извод 39. Сега трябва да настроите да добавяте интегралните схеми (интегрални схеми) и да го включите.

26 декември 2009 г.: Открих, че начинът, по който монтирах сензора за огъване на показалеца, доведе до разграждане на материала, свързващ сензора с щифтовете. Оттогава купих заместващ сензор и горещо залепих парче тънка пластмаса към сензора, за да предотвратя тази област да бъде частта, която извършва по -голямата част от огъването. Маркирах местоположението на снимката по -долу.

Стъпка 8: Добавяне на интегрални схеми и първата програма

Добавяне на интегрални схеми и първата програма
Добавяне на интегрални схеми и първата програма
Добавяне на интегрални схеми и първата програма
Добавяне на интегрални схеми и първата програма
Добавяне на интегрални схеми и първата програма
Добавяне на интегрални схеми и първата програма
Добавяне на интегрални схеми и първата програма
Добавяне на интегрални схеми и първата програма

Това вероятно е най -лесната стъпка от целия процес. Още веднъж снимката помага. Уверете се, че разполагате с чиповете по правилния начин, както е обяснено на снимка #3. Първо бих свързал захранването без нищо свързано и докосна радиатора на регулатора на напрежението. Ако е горещо, значи нещо се къси и трябва да се върнете и да проверите връзките си. Продължете по този начин, добавяйки един чип наведнъж, усещайки топлина и след като всичко е на мястото си, затегнете гайките на долната дъска, така че двете дъски да са здраво закрепени заедно. След това ще програмирате AVR. Ако никога досега не сте правили това, бързо търсене в Google дава изобилие от резултати. Ако бях на ваше място, щях да сложа своя AVR на макет и програма, преди да го опитате върху вашето парче работа. Написах проста програма за извеждане на получената информация от гъвкавите сензори към LED масива. Това трябва да ви даде основна представа за това какво работи и какво не работи във вашата схема. Ето видео на кода в действие …… и ето кода: #define F_CPU 800000UL #include #include #include void ADCINIT () { ADMUX = 0b01100000; ADCSRA = 0b10000000;} int main () {int a; а = 0; int b; b = 0; DDRD = 0xFF; DDRB = 0xFF; DDRA = 0b11100000; ADCINIT (); докато (1) {ADMUX = 0b01100011; ADCSRA | = 0b01000000; while (bit_is_clear (ADCSRA, ADIF)); PORTA = 0b00000000; PORTD = ADCH; _ закъснение_ms (1); PORTD = 0x00; ADMUX = 0b01100010; ADCSRA | = 0b01000000; while (bit_is_clear (ADCSRA, ADIF)); PORTA = 0b11100000; PORTB = ADCH; _ закъснение_ms (1); PORTB = 0x00; }}

Стъпка 9: Прикрепване на кръга към ръкавица

Прикрепване на кръга към ръкавица
Прикрепване на кръга към ръкавица
Прикрепване на кръга към ръкавица
Прикрепване на кръга към ръкавица
Прикрепване на кръга към ръкавица
Прикрепване на кръга към ръкавица

Мисля, че има много начини да прикачите вашата верига към вашата ръка и известно време мислех, че ще оставя това на читателя, но след това реших, че инструкциите няма да бъдат пълни без това затваряне. Отидох в местния магазин за велосипеди и взех най-евтината ръкавица с пълен пръст, която можах да намеря. Пълен пръст е необходим, защото в противен случай не можете да прикрепите гъвкавите сензори много добре. След това отидох до магазин за тъкани и взех полиестерна нишка и залепващо велкро. Сложих ръкавицата и сложих веригата на ръката си. Част от позиционирането е комфорт, но друга част са гъвкавите сензори. Те трябва да слизат по средата на два пръста. Заших бримки около трите стойки, за да задържа основната платка (Виж снимка #2) и след това разхлабих контури 3/4 от пътя надолу всеки пръст на сензора за гъвкавост (#3 и 4). Внимавайте да не шиете ръкавицата си затворена. След това залепих парче велкро отстрани на палеца си, за да държа батерията. След тестване установих, че наистина си струва да шиете и това, тъй като клечката не издържа твърде дълго. След това сложих верига от велкро около 9v (Снимка 5). Тази настройка изглежда работи доста добре. Както виждате на снимките на първия и последния слайд, сега добавих ръкави за гъвкавите сензори, но ако нямате време, контурите трябва да се справят. Когато приключите с проекта си, публикувайте снимки на готовия продукт По-долу. Бих искал да видя какво сте измислили, за да прикрепите веригата!

Стъпка 10: Истинският код

Истинският кодекс
Истинският кодекс

Благодаря ти, че ме държеше досега. Моля, имайте предвид, че моят код не е перфектен. Открих, че отнема малко научаване, за да накара сигнала да работи както трябва. Ще продължа да се опитвам да усъвършенствам системата си и ще поддържам тази страница актуализирана с нов код, след като я напиша. 26 декември 2009 г.: НОВ КОД! Публикувано е там, където е бил старият код. Много благодаря на Яков за опростяването. Наистина работи добре. Ето го. Благодаря за четенето и не забравяйте да гласувате! #include #include #include // Задава или изчиства битовете в регистрите #дефинира setBit (sfr, бит) (sfr | = (1 << бит)) #дефинира clearBit (sfr, бит) (sfr & = ~ (1 << bit)) #define flipBit (sfr, bit) (sfr ^= (1 << bit)) #define FALSE 0 #define TRUE 1 #define matrixX (x) (PORTA = (x - 1) << 5) #define matrixGY (y) (PORTD = y) #дефинира матрица RY (y) (PORTB = y) забавяне на празнотата (беззнаково int забавяне) {unsigned int x = 0; while (x <забавяне) {x ++; }} void initMatrix () {DDRD = 0xFF; // Зелен контрол DDRB = 0xFF; // Червено управление DDRA = 0xE0; // Наземен контрол} void matrixRowDraw (char greenmask, char redmask, char column) {matrixX (колона); int i = 0; за (i = 0; i <8; i ++) {matrixGY (зелена маска & (1 << i)); matrixRY (redmask & (1 << i)); _delay_us (150); } matrixGY (0x00); matrixRY (0x00); } void matrixLeft () {matrixRowDraw (0x10, 0, 1); matrixRowDraw (0x20, 0, 2); matrixRowDraw (0x40, 0, 3); matrixRowDraw (0xFF, 0, 4); matrixRowDraw (0xFF, 0, 5); matrixRowDraw (0x40, 0, 6); matrixRowDraw (0x20, 0, 7); matrixRowDraw (0x10, 0, 8); } void matrixRight () {matrixRowDraw (0x18, 0, 1); matrixRowDraw (0x18, 0, 2); matrixRowDraw (0x18, 0, 3); matrixRowDraw (0x18, 0, 4); matrixRowDraw (0x99, 0, 5); matrixRowDraw (0x5A, 0, 6); matrixRowDraw (0x3C, 0, 7); matrixRowDraw (0x18, 0, 8); } void adcInit () {ADMUX = 0x60; ADCSRA = 0x80; } char adcGet (char chan) {ADMUX = 0x60 | чан; ADCSRA | = 0x40; while (bit_is_clear (ADCSRA, ADIF)); връщане ADCH; } char adcAvg (char chan, char avgnum) // Само средно до 256 проби {int i = 0; без знак int общо = 0; for (i = 0; i <avgnum; i ++) {total+= adcGet (chan); } възвръщане на общата сума/avgnum; } int main () {initMatrix (); adcInit (); while (1) {while (adcAvg (3, 50)> 0x45 & adcAvg (2, 50)> 0x70) // Шестнадесетичните стойности тук трябва да се променят в зависимост от настройките на потребителите, за да се определи чувствителността на гъвкавите сензори. {if (adcAvg (1, 50)> 0x4F) {matrixRight (); } if (adcAvg (1, 100) <0x4F) {matrixLeft (50); }}} връщане 0; } Специални благодарности на Чембърлейн, моите родители и приятели, които помогнаха.

Финалист в конкурса за домашно приготвени празници

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