Велосипед сигналының шамы: 10 қадам (суреттермен)
Велосипед сигналының шамы: 10 қадам (суреттермен)
Anonim

Бұл жобаның мақсаты - велосипедке арналған қолғапқа сәйкес келетін шамды жасау және белгіленген бұрылыстың бағытын көрсету, түнде көрінуді арттыру. Ол жеңіл, қолдануға оңай және сигнал беру үшін қолданыстағы қозғалыстармен біріктірілген болуы керек (сигналдың әдісінің минималды өзгеруі (түймені басудың қажеті жоқ, ол сигнал бергенде ғана жүреді)). Бұл мерекеге керемет сыйлық болады.

Ескерту: Бұл қалай дәнекерлеу туралы білімді қажет етеді және AVR -ді қалай бағдарламалау керектігі туралы идея - бұл үлкен плюс. Осыны ескере отырып, көңіл көтеріңіз, шыдамды болыңыз және төменде өз өніміңіздің суреттерін салыңыз! Міне видео: міне менің суретім:

1 -қадам: бөлшектер

x1 ATmega 32L 8PU (www.digikey.com) x1 40 істікшелі DIP ұяшығы (www.digikey.com) x1 8x8 жарық диодты массив (www.sparkfun.com) x1 74138 Мультиплексор (www.digikey.com) x2 Flex сенсорлары (www.sparkfun.com) x (Көптеген) резисторлар 180 Ом және 10к ohm2 ДК тақтасы (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 Толық саусақты велосипед glovex1 полиэтиленнен жасалған threadx1 бағдарламашы (менде бар) x1 Сымды тазартқыш пен клипx1 мультиметр Кейбір бөліктер:

2 -қадам: тақталарды дайындаңыз

Алдымен келіспеушіліктерді қосыңыз. Тиісті биіктікті алу үшін екеуін бұрау керек. Кедергілер SQUARE жастықшаларымен бүйірден төмен түсетініне көз жеткізіңіз. Осылайша сіз төменгі жағында дәнекерленген жастықшаларды және жерге қосылу үшін үстіңгі жағындағы жалпы төсеммен көпір жасай аласыз. Содан кейін жарық диодты массивті қосыңыз және оны дәнекерлеңіз. Ол YS қарама -қарсы жаққа қарайтындай екі тақтаның көмегімен тақтаның шетіне дейін болуы керек. Төменгі сол жақ түйреуіш 1 -штырь (ол суретте де белгіленген.) Әрі қарай 16 істікшелі розетканы қалыптастыру үшін екі 8 істікшелі розеткаларды бірінің үстіне бірін қосыңыз. Сол жақта бір бос орын бар екеніне көз жеткізіңіз, содан кейін оны дәнекерлеңіз. Әрі қарай ерлер мен әйелдер тақырыптарын 10 және 11 түйреуіштерге бөліңіз. Сізге екі есе көп әйел тақырыптары қажет болады. Фотосуретте көрсетілгендей, оларды дәнекерлеңіз. Еркек тақырыптарға келер болсақ, олар түйреуішті пластмассаның екі жағында тең болатындай етіп жылжыту керек, менің айтқанымды түсіну үшін суретке қарап, №6 -ға қараңыз. Мен бірнеше қысқыштарды қолдандым және ол жақсы жұмыс істеді. Енді, егер сіз еркек тақырыптарды алып, оларды 2 әйел тақырыбының арасына қойсаңыз, олар енді үстіңгі және астыңғы тақтаны бір -бірімен байланыстыратын өлшемге сәйкес келетінін көресіз.

3 -қадам: резисторларды қосыңыз

Бұл резисторлар массивті қорғау үшін жарық диодты массив пен 74138 (Жер) арасында жүреді. Резистордан өткізгіштердің бірін жоғары қарай бүктеңіз, осылайша екі сым параллель болады. Оларды 7, 9, 10, 11, 12, 13, 14 және 15 түйреуіштерге және дәнекерге бекітіңіз. Егер сіз резистордың бағытын екінші және үшінші суреттерде көріп тұрғандай ауыстырсаңыз, бұл жақсы жұмыс істейтінін білдім.

4 -қадам: Жоғарғы бөлікті жалғаңыз

Бұл жобаның ең ұзақ кезеңі, сондықтан сізге дәнекерлеу ұнайды деп сенемін! Тек төмендегі схеманы орындаңыз және мультиметрдің үздіксіздігін тексеріңіз. Егер сіз бізге қалай келгенімді білгіңіз келсе, 74138 массивінің деректер кестесін қараңыз.

5 -қадам: төменгі жағын толтырыңыз

Енді біздің негізгі компоненттерді төменгі тақтаға қою уақыты келді. Алдымен біз сол жақта бір қатар бос орын қалдырып, мүмкіндігінше сол жаққа жақын орналасқан 40 істікшелі DIP ұяшығын жасаймыз. (№1 суретті қараңыз.) Дәнекерлегішті енгізіңіз, содан кейін тақырыптарды қойыңыз. Мұны істеудің ең оңай жолы - өзгертілген ерлер тақырыптары арқылы үстіңгі жағын төменгі жағымен байланыстыру. Егер сіз бәрін дұрыс жасасаңыз, сіз сол жақтағы жоғарғы оң жақ түйреуіштің жанындағы үш жоғарғы үш түйреуішті алуыңыз керек. Бұл жарайды. Біз тек оң жақтағы ең төменгі түйреуішті қолданамыз, және сіз көріп тұрғандай, бізде басқа жақтан нақты соққы бар. Енді суретте көрсетілгендей кернеу реттегішін қосыңыз. Мен өзімді металл жылытқыштағы тесік арқылы бұранда мен гайкамен бекітіп қойдым. Жылу қабылдағыш - бұл чипті жерге қосудың тағы бір әдісі және оны тақтаға бекіту - жалпы қосылыммен берік байланыс. Бұл төменгіге де, жоғарыға да қосылады, себебі екеуі де металдың үзілісімен байланысты. Алайда, егер сіз жерге ортақ қосылуды пайдаланбайтын болсаңыз, жылу қабылдағышты тақтаға бекітпеңіз, себебі жылу қабылдағыш жерге қосылады және сіз қысқа тұйықталуыңыз мүмкін. Батарея қысқышындағы келесі сым. Қызыл сол жақ түйреуішке өтеді (жылу қабылдағыш жоғары және түйреуіштер төмен) қара ортаға қарай, ал оң жақ түйреуіш +5в шығарады. Енді сіз жоғарыдан жоғары қуатқа қосыла аласыз (No2 суретті қараңыз). Енді бағдарламашы қосқышы үшін. Менде бағдарламашыға арналған адаптер бар, бірақ сіз дизайнға 6 істікшелі (3x2) тақырыпты қосқыңыз келуі мүмкін. Егер сізде мен сияқты адаптер болса, мен осылай жасадым. Мен тік бұрышты және әйел тақырыпшаны алып, оларды дәнекерледім (сурет 3). Содан кейін мен оны 6 -шы істікке қосылған түйреуішпен тақтаға тіркедім. Енді жоғары қалпына келтіру үшін чипті, сондай -ақ резистордың сымын қосу керек. Мен 10 -шы істікшеден 10 -шы пинге дейін 10к резисторды іске қостым, содан кейін 10 -шы істікті +5в -ке жалғадым. Келесі түйреуіш (11) жалпы қосылымға (Жерге) өтеді. Ақырында бұл қадамды аяқтау үшін №4 суретті қараңыз (бұл өздігінен түсінікті).

6 -қадам: төменгі жағын сыммен бекітіңіз

Жарықдиодты массивтің жұмыс істеуі үшін 30 сымнан асатын өте қызықты қадам есіңізде ме? Енді сіз оны қайтадан жасауыңыз керек! Төменде !. Бұл сәл жылдам, бірақ менікі емес. Тағы да схемаға қараңыз және мультиметрмен барлық байланыстарыңызды тексеріңіз. Алаңдатпаңыз, бұл жобаның соңғы үлкен дәнекерлеу бөлігі және сіз аяқтауға жақынсыз.

7 -қадам: икемді сенсорлар мен акселерометр

Біз алдымен икемді сенсорлармен айналысамыз, бірақ сіз аппараттық құралдарға байланысты үйдесіз. Менің ойымша, төмендегі суреттер не істеу керектігін түсіндіреді. Бір түйреуішті +5в -ке, екіншісін AVR -дің оң жағындағы жоғарыдан үшінші немесе төртінші түйреуге қосыңыз (бұл жобаның негізінде орналасқан микроконтроллер). Мен мұны алғаш рет қосқанда, мен мұны істеуім керек деп ойладым, бірақ AVR иілгіш сенсорларды оқу үшін сенсордағы түйреуіштен резисторды жерге қосу керек екені белгілі болды (суреттерді қараңыз) 10 және 11). Мен 10к қолдандым. Бұл AVR кернеуін бөледі, бұл сенсордың сезімталдығын іс жүзінде екі есе арттырады. Енді акселерометрге. Акселерометр екі тақтаның арасындағы кеңістіктен биік болғандықтан және біз оны бір күні ауыстырғымыз келетіндіктен, мен оны тақтадан шығарып, оны қосу үшін тақырыптарды қолдануды шештім. Бөлу тақтасындағы 6 түйреуішке қосылу үшін тік бұрышты тақырыпты қолданыңыз. Енді тағы бір тік бұрышты тақырыпты алыңыз және аналық тақырыпты қысқа түйреуіштерге дәнекерлеңіз, содан кейін оны тақтаның төменгі сол жағына дәнекерлеңіз. Сәйкес екеніне көз жеткізу үшін акселерометрді қосыңыз, оны ажыратыңыз, содан кейін тиісті түйреуіштерді Vcc (+5v) пен Gnd -ге қосыңыз. Содан кейін X шығатын түйреуішті 40 -қа, ал У -ге 39 -шы нүктеге қосыңыз. Енді сіз IC -ді (интегралды схемалар) қосып, оны қосыңыз.

26 желтоқсан, 2009: Мен сұқ саусақты иілу датчигін қалай орнатқаным сенсорды түйреуіштермен байланыстыратын материалдың тозуына әкелгенін білдім. Мен содан кейін сенсорды алмастырдым және сенсорға жұқа пластиктен ыстық желім жаптым, себебі бұл аймақ майысудың көп бөлігін жасамайды. Мен төмендегі суреттегі орынды белгілеп қойдым.

8 -қадам: IC және бірінші бағдарламаны қосу

Бұл бүкіл процестің ең оңай қадамы. Тағы да сурет көмектеседі. Сізде чиптер бар екеніне көз жеткізіңіз, №3 суретте. Мен алдымен қуатты қосылмай қосатын едім және кернеу реттегішіндегі жылу қабылдағышқа тиер едім. Егер ыстық болса, онда бірдеңе жетіспейді және сіз кері қайтып, қосылымдарды тексеруіңіз керек. Осы жолмен жүріңіз, бір уақытта бір чипті қосып, жылуды сезініп, бәрі орнына түскеннен кейін, төменгі тақтайдағы жаңғақтарды қатайтыңыз, осылайша екі тақта бір -біріне мықтап бекітіледі. Әрі қарай сіз AVR бағдарламасын жасайсыз. Егер сіз бұған дейін мұндай әрекетті жасамаған болсаңыз, Google -де жылдам іздеу көптеген нәтижелер береді. Егер мен сенің орныңда болсам, мен өз жұмысымды орындамас бұрын АВР -ды тақтаға қоятын едім. Мен икемді сенсорлардан алынған ақпаратты жарық диодты массивке шығару үшін қарапайым бағдарлама жаздым. Бұл сізге тізбекте не бар және не істемейтіні туралы негізгі түсінік беруі керек. Міне, кодтың бейнесі …… және мына код: #define F_CPU 800000UL #include #include #include void ADCINIT () { ADMUX = 0b01100000; ADCSRA = 0b10000000;} int main () {int a; a = 0; int b; b = 0; DDRD = 0xFF; DDRB = 0xFF; DDRA = 0b11100000; ADCINIT (); while (1) {ADMUX = 0b01100011; ADCSRA | = 0b01000000; while (bit_is_clear (ADCSRA, ADIF)); PORTA = 0b00000000; PORTD = ADCH; _кешігу (1); PORTD = 0x00; ADMUX = 0b01100010; ADCSRA | = 0b01000000; while (bit_is_clear (ADCSRA, ADIF)); PORTA = 0b11100000; PORTB = ADCH; _кешігу (1); PORTB = 0x00; }}

9 -қадам: циркіңізді қолғапқа бекіту

Менің ойымша, сіздің тізбегіңізді өзіңізге қосудың көптеген жолдары бар және мен оны оқырманға қалдырамын деп ойладым, бірақ нұсқаулық толық жабылмайды деп шештім. Мен жергілікті велосипед дүкеніне бардым. Мен таба алатын ең арзан толық саусақты қолғап алдым. Толық саусақ қажет, өйткені олай болмаған жағдайда иілгіш сенсорларды жақсы бекіту мүмкін емес. Содан кейін мен мата дүкеніне бардым, полиэфир жіп пен жабысқақ велкро алдым. Мен қолғапты киіп, тізбекті қолыма қойдым. Орналастырудың бір бөлігі - жайлылық, ал екінші бөлігі - иілгіш сенсорлар. Олар екі саусақтың ортасынан төмен түсуі керек. Мен негізгі тақтаны ұстап тұру үшін үш ілгекті айналдыра тігіп алдым (№2 суретті қараңыз), содан кейін сенсорлық саусақтың әр саусағының 3/4 бөлігінде бос ілмектер жасадым (№3 және 4). Қолғапты жабық тігіп алмайтындығыңызға көз жеткізіңіз. Содан кейін мен аккумуляторды ұстап тұру үшін бас бармағымның жағына велкроны жапсырдым. Мен тестілеуден кейін таптым, бұл таяқша ұзақ уақытқа созылмайды, себебі оны тігу өте жақсы. Содан кейін мен 9v айналасында велкро ілмегін қойдым (5 -сурет). Бұл орнату өте жақсы жұмыс істейтін сияқты. Бірінші және соңғы слайдтардағы суреттерден көріп отырғанымдай, мен бүгу сенсорларына арналған жеңдерді қостым, бірақ егер сізде уақыт болмаса, ілмектер жақсы болуы керек. Жобаны аяқтағаннан кейін дайын өнімнің фотосуреттерін жіберіңіз. төменде Схеманы бекіту үшін не ойластырғаныңызды көргім келеді!

10 -қадам: Нақты код

Осы уақытқа дейін менімен болғандарыңызға рахмет. Менің кодым мінсіз емес екенін есте сақтаңыз. Мен сигналдың дұрыс жұмыс істеуін үйрену үшін аздап үйрену керек екенін байқадым. Мен жүйені жетілдіруге тырысамын және оны жазғаннан кейін бұл бетті жаңа кодпен жаңартып отырамын. 26 желтоқсан, 2009: ЖАҢА КОД! Ол ескі код болған жерде орналастырылады. Жеңілдету үшін Джейкобқа үлкен рахмет. Бұл шынымен жақсы жұмыс істейді. Мінеки. Оқығаныңыз үшін рахмет және дауыс беруді ұмытпаңыз! #include #include #include // Регистрлердегі биттерді орнатады немесе тазалайды #setBit (sfr, bit) анықтаңыз (sfr | = (1 << бит)) #define clearBit (sfr, bit) (sfr & = ~ (1 <<) бит)) #анықта flipBit (sfr, bit) (sfr ^= (1 << бит)) #ЖАЛҒАН 0 анықтау #ШЫНДЫҚ 1 анықтау #матрицаныX (x) анықтау (PORTA = (x - 1) << 5) #анықтау matrixGY (y) (PORTD = y) #matrixRY (y) (PORTB = y) бос кідіріс (unsigned int delay) {unsigned int x = 0; while (x <кешігу) {x ++; }} жарамсыз initMatrix () {DDRD = 0xFF; // Жасыл басқару DDRB = 0xFF; // Қызыл басқару DDRA = 0xE0; // Ground control} жарамсыз matrixRowDraw (char greenmask, char redmask, char бағанасы) {matrixX (баған); int i = 0; for (i = 0; i <8; i ++) {matrixGY (greenmask & (1 << i)); matrixRY (қызыл маска & (1 << i)); _кешіктіру (150); } matrixGY (0x00); matrixRY (0x00); } жарамсыз 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); } жарамсыз 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); } жарамсыз 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 total = 0; for (i = 0; i <avgnum; i ++) {total+= adcGet (chan); } total/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 қайтару; } Палата мүшелеріне, көмектескен ата -анама және достарыма ерекше алғыс.

Үйде өткізілетін мерекелер байқауының финалисті

Ұсынылған: