Мазмуну:

Bike Hand Signal Light: 10 кадам (Сүрөттөр менен)
Bike Hand Signal Light: 10 кадам (Сүрөттөр менен)

Video: Bike Hand Signal Light: 10 кадам (Сүрөттөр менен)

Video: Bike Hand Signal Light: 10 кадам (Сүрөттөр менен)
Video: Электр велосипед 2021 MINAKO F10 40 км / с мини электр велосипед электр велосипед бүктөлүүчү 2024, Ноябрь
Anonim
Кол велосипединин сигналы
Кол велосипединин сигналы

Бул долбоордун максаты - велосипед мээлейине туура келген жарыкты түзүү жана белгиленген бурулуштун багыттарын көрсөтүү, түнкүсүн көрүүнү жогорулатуу. Бул жеңил, колдонууга оңой жана белги берүү үчүн болгон кыймылдар менен интеграцияланган болушу керек (сигнал ыкмасын минималдуу өзгөртүү (баскычты басуунун кажети жок, ал сигнал бергенде эле кетет)). Бул чоң майрамдык белек болмок.

Эскертүү: Бул кантип ширетүү боюнча мурунку билимди талап кылат жана AVRди кантип программалоо керек экендиги чоң плюс. Муну эске алуу менен, көңүл ачыңыз, чыдамдуу болуңуз жана төмөндөгү өнүмүңүздүн сүрөттөрүн жарыялаңыз! Мына видео: Мына менин сүрөтүм:

1 -кадам: Бөлүктөр

Бөлүктөр
Бөлүктөр

x1 ATmega 32L 8PU (www.digikey.com) x1 40-pin DIP розеткасы (www.digikey.com) x1 8x8 LED Array (www.sparkfun.com) x1 74138 De-мультиплексор (www.digikey.com) x2 Flex Sensors (www.sparkfun.com) x (Көптөгөн) резисторлор 180 ohm жана 10k ohmx2 PC Board (www.sparkfun.com) x6 Standoffs (www.sparkfun.com) жана бурамалар (Жергиликтүү жабдыктар дүкөнү) x1 сынык тактасындагы акселерометр (www.sparkfun.com) x2 Headers - Эркек (www.sparkfun.com), Аял (www.sparkfun.com) жана Оң бурч (www.sparkfun.com) x1 LM7805 (www.digikey.com) x2 8 пин оюгу бар (Мен Radio Shack-те меники бар) x1 9v batteryx1 бутунун таякчасы velcrox1 Толук манжалуу велосипед glovex1 катушка полиэстер threadx1 Программист (менде бар) x1 Wire Stripper жана clipx1 Multimeter Кээ бир бөлүктөрү:

2 -кадам: такталарды даярдоо

Тактайларды даярдаңыз
Тактайларды даярдаңыз
Тактайларды даярдаңыз
Тактайларды даярдаңыз
Тактайларды даярдаңыз
Тактайларды даярдаңыз
Тактайларды даярдаңыз
Тактайларды даярдаңыз

Биринчиден, карама -каршылыктарды кошуңуз. Тиешелүү бийиктикке жетүү үчүн экөөнү бириктирүү керек болот. Түзүлүштөр SQUARE аянтчалары менен капталдан түшүп жатканын текшериңиз. Мына ушундай жол менен түбүн ширеткич менен көпүрө аласыз жана жерге туташуу үчүн өйдөдөгү жалпы төшөмө менен көпүрө жасай аласыз. Кийинкиде LED массивин кошуп, аны ээрчиңиз. Бул эки стоноф менен тактанын четине чейин болуш керек, анткени ал YS карама -каршы тарапка карайт. Төмөнкү сол жактагы пин 1 -пин. (Бул сүрөттө да белгиленген.) Андан кийин 16 пин оюкчасын түзүү үчүн эки 8 пин розетканы биринин үстүнө бирин кошуңуз. Сол жакта бир боштук бар экенин текшерип, андан кийин аны эритип коюңуз. Кийинки учурда эркек жана ургаачы баштарды 10 жана 11 төөнөгүчкө бөлүңүз. Сизге эки эсе көп аял башы керек болот. Сүрөттө көрүнүп тургандай, аларды ээрчиңиз. Эркек башына келсек, алар пластиктин ар бир тарабында бирдей өлчөмдө болушу үчүн, төөнөгүчтү жылдырышыңыз керек, эмнени айткым келгенин түшүнүү үчүн сүрөттү кароо эң оңой #6га караңыз. Мен кээ бир кычкачтарды колдондум жана ал абдан жакшы иштеди. Эми эгерде сиз эркектин баш аттарын алып, аларды 2 ургаачы аталыштын ортосуна койсоңуз, алар азыр үстүнкү жана астыңкы тактаны бириктирүүгө ылайыктуу өлчөмдө экенин көрөсүз.

3 -кадам: Резисторлорду кошуу

Резисторлорду кошуу
Резисторлорду кошуу
Резисторлорду кошуу
Резисторлорду кошуу
Резисторлорду кошуу
Резисторлорду кошуу

Бул резисторлор массивди коргоо үчүн LED массиви менен 74138 (Ground) ортосунда өтөт. Резистордон келген коргошундун бирин өйдө бүктөп, эки коргошун параллель болот. Аларды 7, 9, 10, 11, 12, 13, 14 жана 15 төөнөгүчтөргө жана ширетүүчү жерге сайыңыз. Экинчи жана үчүнчү сүрөттөрдө көрүнүп тургандай, резистордун багытын алмаштырсаңыз эң жакшы иштээрин байкадым.

4 -кадам: Чокуну зым менен жабыңыз

Wire Top
Wire Top
Wire Top
Wire Top
Wire Top
Wire Top
Wire Top
Wire Top

Бул долбоордун эң узак кадамы, андыктан сизге ширетүү жагат деп ишенем! Жөн гана төмөндөгү схеманы аткарыңыз жана мультиметрдин үзгүлтүксүздүгүн текшериңиз. Эгерде сиз бизге массивдин маалымат баракчасын жана 74138 схемасын карап кантип келгенимди билгиңиз келсе.

5 -кадам: түбүн толтуруңуз

Түбүн толтуруңуз
Түбүн толтуруңуз
Түбүн толтуруңуз
Түбүн толтуруңуз
Түбүн толтуруңуз
Түбүн толтуруңуз
Түбүн толтуруңуз
Түбүн толтуруңуз

Эми негизги компоненттерибизди астыңкы тактага жайгаштырууга убакыт келди. Биринчиден, биз 40 пин DIP розеткасын жасайбыз, ал мүмкүн болушунча сол жакка жакын, сол жактагы боштукту калтырат. (No 1 сүрөттү караңыз.) Аны кошуп, анан башын коюңуз. Муну жасоонун эң оңой жолу - бул сиздин үстүңкү жагын өзгөртүлгөн эркек аталыштарыңызды колдонуп, ылдый жагына туташтыруу. Эгерде сиз бардыгын туура кылган болсоңуз, анда сол жактын баш жагындагы үч жогорку үч казыкты розеткадагы төмөнкү оң казыктардын жанына коюшуңуз керек. Бул макул. Биз бир гана оң жактын түбүндөгү төөнөгүчтү колдонобуз жана сиз көрүп тургандай, биз башка жактан так аттык. Эми сүрөттө көрсөтүлгөндөй чыңалуу жөндөгүчтү кошуңуз. Мен металлды жылыткычтын тешигинен винт жана гайка менен камсыз кылдым. Жылыткыч чипти жерге коюунун дагы бир жолу жана аны тактага бекитүү жалпы байланыш менен бекем байланышты камсыз кылат. Бул астынкы жана үстүңкү жагына байланыштуу, анткени экөө металлдык тирешүүлөр менен байланышкан. Бирок, эгер сиз жалпы туташууну жерге колдонбосоңуз, жылыткычты тактага бекитпеңиз, анткени жылыткыч жерге кызмат кылат жана сиз бир нерсени кыска туташтырасыз. Кийинки зым батарейкадагы клипте. Кызыл сол жактагы казыкка барат (жылуулукту төмөн жана төөнөгүчтөрдү түшүрүү менен) ортосуна кара жана оң пин +5v өндүрөт. Эми сиз чыңалууну жогору карай өткөрө аласыз (2 -сүрөттү караңыз). Эми программисттин туташуусу үчүн. Менде программистке ылайыкташтырылган адаптер бар, бирок сиз дизайнга 6 пин (3x2) аталышын киргизгиңиз келет. Бирок, эгерде сизде меникиндей адаптер болсо, мына мен кылдым. Мен тик бурчтуктун башын жана ургаачынын башын алып, экөөнү чогуу коштум (Picture #3). Анан мен аны 6 -пинге туташтырылган биринчи пин менен тактага тиркедим. Эми сиз чипти, ошондой эле резистордун зымдарын жогорку абалга келтирүү үчүн жерди кубаттооңуз керек. Мен 9 -пинден 10 -пинге чейин 10k каршылыгын иштеттим, андан кийин пинти 10 -дон +5вга туташтырдым. Кийинки пин (11) жалпы байланышка (Жерге) барат. Акыры бул кадамды бүтүрүү үчүн №4 сүрөттү караңыз (Бул өзүн өзү түшүндүрүүчү).

6 -кадам: Төмөндөгү зым

Төмөнкү зым
Төмөнкү зым
Төмөнкү зым
Төмөнкү зым
Төмөнкү зым
Төмөнкү зым

LED массивинин иштеши үчүн 30дан ашык зым чуркоо керек болгон чындап эле кызыктуу кадам эсиңиздеби? Эми сиз муну дагы бир жолу жасашыңыз керек! Түбүндө!. Бул бир аз ылдамыраак, бирок менин анча эмес. Дагы бир жолу, схеманы карап, мультиметр менен бардык туташууларыңызды текшериңиз. Кабатыр болбоңуз, бул долбоордун акыркы чоң ширетүүчү бөлүгү жана сиз дээрлик бүтүрдүңүз.

7 -кадам: Flex сенсорлору жана акселерометр

Flex сенсорлору жана акселерометр
Flex сенсорлору жана акселерометр
Flex сенсорлору жана акселерометр
Flex сенсорлору жана акселерометр
Flex сенсорлору жана акселерометр
Flex сенсорлору жана акселерометр

Биз адегенде ийилчээк сенсорлорду чечебиз, бирок сиз үйдүн жабдууларына чейин. Менин оюмча, төмөндөгү сүрөттөр эмне кылуу керектигин түшүндүрөт. Бир пинти +5vга, экинчисин AVRдин оң жагындагы үчүнчү же төртүнчү пинге туташтырыңыз (Бул долбоордун жүрөгүндөгү микроконтроллер). Мен муну биринчи жолу бириктиргенде, мен эмне кылышым керек эле деп ойлогом, бирок AVRдин ийкемдүү сенсорлорду окушу үчүн, сенсордун тырмагынан резисторду жерге коюу керек (сүрөттөрдү кара #) 10 жана 11). Мен 10 мин колдондум. Бул чыңалууну AVRге бөлөт, бул сенсордун сезгичтигин дээрлик эки эсе жогорулатат. Эми акселерометр үчүн. Акселерометр эки тактайдын ортосундагы боштуктан бир аз бийик болгондуктан жана биз аны бир күнү алмаштыргыбыз келиши мүмкүн болгондуктан, мен аны тактадан түшүрүү жана туташтыруу үчүн баштарды колдонууну чечтим. Үзүлүү тактасындагы 6 казыкка туташуу үчүн туура бурчтуктун башын колдонуңуз. Эми дагы бир оң бурчтуу баштыкты алыңыз жана ургаачынын башын кыска казыктарга ээрчиңиз, анан муну тактаңыздын сол жагына салыңыз. Ылайыктуу экенине ынануу үчүн акселерометрди туташтырып, розеткадан ажыратыңыз, андан кийин тийиштүү казыктарды Vcc (+5v) жана Gnd туташтырыңыз. Андан кийин, X -пин 40ка, Y -39 -га туташтырыңыз. Эми сиз IC'ди (Интегралдык микросхемалар) кошуп, аны күйгүзүшүңүз керек.

26 -декабрь, 2009 -жыл: Мен сөөмөй манжасынын ийкемдүү сенсоруна орнотуум, сенсорду казыктар менен туташтырган материалдын начарлашына алып келди. Мен ошондон бери алмаштыруучу сенсор сатып алып, ийилчээк пластинанын бир бөлүгүн сенсорго жабыштырып койгом, анткени бул жер ийилүүнүн көбүн жасайт. Мен төмөнкү сүрөттө жайгашкан жерди белгилеп койгом.

8 -кадам: ICлерди жана Биринчи программаны кошуу

IC жана биринчи программаны кошуу
IC жана биринчи программаны кошуу
IC жана биринчи программаны кошуу
IC жана биринчи программаны кошуу
IC жана биринчи программаны кошуу
IC жана биринчи программаны кошуу
IC жана биринчи программаны кошуу
IC жана биринчи программаны кошуу

Бул, балким, бүт процесстин эң оңой кадамы. Дагы бир жолу сүрөт жардам берет. Сүрөттө 3 сүрөттөлгөндөй микросхемалардын туура жолго коюлганын текшериңиз. Мен адегенде эч нерсени туташтырбастан кубаттуулукту туташтырып, чыңалуу жөндөгүчүнүн жылыткычына тийем. Эгер ал ысык болсо, анда бир нерсе жетишпей жатат жана кайра барып, туташууларыңызды текшеришиңиз керек. Бул жол менен кетиңиз, бир эле учурда бир чип кошуп, жылуулукту сезип, баары ордуна келгенден кийин, төмөнкү тактайдагы гайкаларды бекемдеңиз, ошондо эки такта бири -бирине бекем бекитилет. Андан кийин сиз AVRди программалайсыз. Эгерде сиз буга чейин мындай кылган эмес болсоңуз, анда тез Google издөө көптөгөн натыйжаларды берет. Эгерде мен сиздин ордуңузда болсом, анда мен AVRди нан табакчасына коюп, сиз өзүңүздүн талыкпаган эмгегиңизди сынап көрүүдөн мурун ошол жерге программа коймокмун. Мен ийкемдүү сенсорлордон алынган маалыматты LED массивине чыгаруу үчүн жөнөкөй программа жаздым. Бул сиздин схемаңызда эмне бар жана эмне иштебей тургандыгы жөнүндө негизги түшүнүк бериши керек. Бул жерде коддун аракети көрүлүп жатат …… жана бул жерде код: #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; _delay_ms (1); PORTD = 0x00; ADMUX = 0b01100010; ADCSRA | = 0b01000000; while (bit_is_clear (ADCSRA, ADIF)); PORTA = 0b11100000; PORTB = ADCH; _delay_ms (1); PORTB = 0x00; }}

9 -кадам: Колкапка циркти бекитүү

Колуңузга циркуңузду тиркөө
Колуңузга циркуңузду тиркөө
Колуңузга циркуңузду тиркөө
Колуңузга циркуңузду тиркөө
Колуңузга циркуңузду тиркөө
Колуңузга циркуңузду тиркөө

Мен сиздин колуңузга схемаңызды тиркөөнүн көптөгөн жолдору бар деп ойлойм жана бир аз убакытка чейин мен аны окурманга калтырам деп ойлогом, бирок кийинчерээк инструкция толук жабылбайт деп чечтим. Мен жергиликтүү велосипед дүкөнүмө бардым жана мен тапкан эң арзан толук манжа мээлейин алдым. Толук манжа керек, антпесе ийилчээк сенсорлорду жакшы тиркей албайсыз. Мен андан кийин кездеменин дүкөнүнө барып, полиэстер жип жана чапталган велкро алдым. Колкапты кийип, схеманы колума койдум. Позициялоонун бир бөлүгү - бул ыңгайлуулук, бирок дагы бир бөлүгү - ийкемдүү сенсорлор. Алар эки манжанын ортосунан түшүшү керек. Негизги тактаны кармап туруу үчүн үч жолу тегерете илмек тигип койдум (2 -сүрөттү караңыз), андан кийин ийкемдүү сенсордун манжасынын 3/4 бөлүгүндө боштуктарды кылдым (#3 жана 4). Мээлейиңизди жабык тигип албаңыз. Кийинчерээк мен батареяны кармоо үчүн бармагымдын капталына велкрону чаптадым. Тесттен кийин таптым, анткени аны тигүү чындап эле төлөйт, анткени таяк көпкө созулбайт. Андан кийин мен 9v айланасында велкро циклин койдум (Picture 5). Бул орнотуу абдан жакшы иштейт окшойт. Биринчи жана акыркы слайддардагы сүрөттөрдөн көрүнүп тургандай, мен азыр ийкемдүү сенсорлор үчүн жеңдерди кошуп койдум, бирок эгерде убактың жок болсо, илмек жакшы болушу керек. төмөндө. Мен схеманы тиркөө үчүн эмне ойлоп тапканыңызды көргүм келет!

10 -кадам: Реалдуу код

Реал код
Реал код

Мени ушул убакка чейин көтөргөнүңүз үчүн рахмат. Сураныч, менин кодум кемчиликсиз экенин унутпаңыз. Сигналдын туура иштеши үчүн бир аз үйрөнүү керек экенин байкадым. Мен системамды өркүндөтүүгө аракет кылууну уланта берем жана бул баракчаны жазгандан кийин жаңы код менен жаңыртып турам. 26 -декабрь, 2009: ЖАҢЫ КОД! Ал эски код болгон жерде жазылган. Жөнөкөйлөтүү үчүн Жакыпка чоң рахмат. Бул чынында эле жакшы иштейт. Мына. Окуганыңыз үчүн рахмат жана добуш берүүнү унутпаңыз! #include #include #include // Регистрлерде биттерди орнотот же тазалайт #setBitти аныктоо (sfr, bit) (sfr | = (1 << бит)) #define clearBit (sfr, bit) (sfr & = ~ (1 <<) бит)) #define flipBit (sfr, bit) (sfr ^= (1 << bit)) #define FALSE 0 #анык TRUE 1 #define matrixX (x) (PORTA = (x - 1) << 5) #define 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; // Жер көзөмөлү} жараксыз matrixRowDraw (char greenmask, char redmask, char мамычасы) {matrixX (мамыча); int i = 0; for (i = 0; i <8; i ++) {matrixGY (greenmask & (1 << i)); matrixRY (кызыл маска & (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); } жараксыз 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)); return ADCH; } char adcAvg (char chan, char avgnum) // Орточо 256 үлгүгө чейин {int i = 0; unsigned int total = 0; for (i = 0; i <avgnum; i ++) {total+= adcGet (chan); } return 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; } Чамберлендерге, жардам берген ата -энеме жана досторума өзгөчө рахмат.

Үй майрамдары сынагынын финалисти

Сунушталууда: