Mündəricat:

Velosiped Əl Siqnal İşığı: 10 Addım (Şəkillərlə birlikdə)
Velosiped Əl Siqnal İşığı: 10 Addım (Şəkillərlə birlikdə)

Video: Velosiped Əl Siqnal İşığı: 10 Addım (Şəkillərlə birlikdə)

Video: Velosiped Əl Siqnal İşığı: 10 Addım (Şəkillərlə birlikdə)
Video: nivanı aşırdıq😥 2024, Noyabr
Anonim
Velosiped Əl Siqnal İşığı
Velosiped Əl Siqnal İşığı

Bu layihənin məqsədi, velosiped əlcəyinə uyğun olan və nəzərdə tutulan dönüş istiqamətini göstərən işıq yaratmaq, gecə görmə qabiliyyətini artırmaqdır. Yüngül, istifadəsi asan və siqnal vermək üçün mövcud hərəkətlərlə inteqrasiya olunmalıdır (siqnal metodunun minimal tənzimlənməsi (düyməni basmaq lazım deyil, siqnal verəndə gedər)). Bu əla bir bayram hədiyyəsi olacaq.

Qeyd: Bunun üçün lehimləmə haqqında əvvəlcədən məlumat tələb olunur və AVR -in necə proqramlaşdırılacağı fikri böyük bir artıdır. Bunu nəzərə alaraq, əylənin, səbirli olun və məhsulunuzun şəkillərini aşağıda yerləşdirin! İşdə bir video: İşdə mənim bir şəklim:

Addım 1: hissələr

Hissələri
Hissələri

x1 ATmega 32L 8PU (www.digikey.com) x1 40 pinli DIP yuvası (www.digikey.com) x1 8x8 LED Array (www.sparkfun.com) x1 74138 De-multiplexer (www.digikey.com) x2 Flex Sensorlar (www.sparkfun.com) x (Bir çox) Rezistorlar 180 ohm və 10k ohmx2 PC Kartı (www.sparkfun.com) x6 Ayrılmalar (www.sparkfun.com) və uyğun vintlər (Yerli Avadanlıq Mağazası) x1 Qırılma lövhəsində akselerometr (www.sparkfun.com) x2 Başlıqlar - Kişi (www.sparkfun.com), Qadın (www.sparkfun.com) və Düz Bucaq (www.sparkfun.com) x1 LM7805 (www.digikey.com) x2 8 pinli yuva (Radio Shack-da məndə var) x1 9v batareya x1 ayaq dayaqlı velcrox1 Tam barmaqlı velosiped glovex1 makara polyester threadx1 Proqramçı (məndə var) x1 Tel çıxarıcı və klipx1 Multimetr Bəzi hissələr:

Addım 2: Lövhələri hazırlayın

Lövhələri hazırlayın
Lövhələri hazırlayın
Lövhələri hazırlayın
Lövhələri hazırlayın
Lövhələri hazırlayın
Lövhələri hazırlayın
Lövhələri hazırlayın
Lövhələri hazırlayın

Əvvəlcə ziddiyyətləri əlavə edin. Düzgün hündürlüyü əldə etmək üçün ikisini bir -birinə bağlamalı olacaqsınız. Qarşılaşmaların SQUARE yastiqciqlar ilə yan tərəfdən endiyinə əmin olun. Bu yolla altlıqları lehimlə bağlaya bilərsiniz və yerə qoşulmaq üçün yuxarıdakı ortaq yastıqla körpü bağlaya bilərsiniz. Sonra LED dizisini əlavə edin və içərisinə lehimləyin. YS -nin qarşı tərəfə baxa biləcəyi qədər, iki stanoff ilə lövhənin kənarına qədər olmalıdır. Sol altdakı pin 1 -dir. (Şəkildə də qeyd olunub.) Sonra 16 pinli bir yuva yaratmaq üçün üst -üstə iki 8 pinli yuva əlavə edin. Solda bir boşluq olduğundan əmin olun və sonra onu lehimləyin. Sonra kişi və qadın başlıqlarını 10 və 11 pinli hissələrə ayırın. İki dəfə çox qadın başlıqlara ehtiyacınız olacaq. Şəkildə gördüyünüz kimi içəri girənləri lehimləyin. Kişi başlıqlarına gəldikdə, pimi dəyişmək lazımdır, beləliklə plastikin hər tərəfində bərabərdir. Nə demək istədiyimi başa düşmək üçün bir şəkilə baxmaq daha asandır, #6 -ya baxın. Kəlbətinlərdən istifadə etdim və çox yaxşı işlədim. İndi kişi başlıqlarını götürüb 2 dişi başlığın arasına qoysanız, üst və alt lövhəni bir -birinə bağlayacaq ölçüdə olduqlarını görəcəksiniz.

Addım 3: Rezistorlar əlavə edin

Rezistorlar əlavə edin
Rezistorlar əlavə edin
Rezistorlar əlavə edin
Rezistorlar əlavə edin
Rezistorlar əlavə edin
Rezistorlar əlavə edin

Bu rezistorlar, dizini qorumaq üçün LED dizisi ilə 74138 (Ground) arasında gedir. Rezistorun uclarından birini yuxarıya bükün ki, iki aparat paralel olsun. Onları 7, 9, 10, 11, 12, 13, 14 və 15 sancaqlar və lehimlə bağlayın. Rezistorun istiqamətini ikinci və üçüncü şəkillərdə görə biləcəyiniz kimi dəyişdirsəniz daha yaxşı işlədiyini gördüm.

Addım 4: Üstü bağlayın

Üst tel
Üst tel
Üst tel
Üst tel
Üst tel
Üst tel
Üst tel
Üst tel

Bu, layihənin ən uzun addımıdır, buna görə ümid edirəm lehimləməyi bəyənirsiniz! Aşağıdakı sxemə əməl edin və multimetrinizlə davamlılığı sınadığınızdan əmin olun. Array və 74138 üçün məlumat cədvəlinə şematik baxaraq bizə necə gəldiyimi bilmək istəyirsinizsə.

Addım 5: Altını doldurun

Altını doldurun
Altını doldurun
Altını doldurun
Altını doldurun
Altını doldurun
Altını doldurun
Altını doldurun
Altını doldurun

İndi əsas komponentlərimizi alt lövhəyə yerləşdirməyin vaxtı gəldi. Əvvəlcə sol tərəfdə bir sıra boşluq buraxarkən, sol üstə mümkün qədər yaxın olan 40 pinli DIP yuvasını edəcəyik. (Şəkil #1 -ə baxın.) Lehimləyin və sonra başlıqları yerləşdirin. Bunun ən asan yolu, dəyişdirilmiş kişi başlıqlarınızı istifadə edərək yuxarıdakıları aşağıya gedənlərlə birləşdirməkdir. Hər şeyi düzgün etdinizsə, sol üst başlıqdakı üç üst üç pinlə, yuvanın sağ alt sancaqlarının yanında olmalısınız. Bu tamamdır. Yalnız sağdakı ən altındakı pimi istifadə edirik və gördüyünüz kimi başqa bir istiqamətdən dəqiq bir vuruşumuz var. İndi şəkildə göstərildiyi kimi gərginlik tənzimləyicisini əlavə edin. Mən metal vint və qoz ilə metal radiatorda olan çuxurdan özümü təmin etdim. İstilik yuyucusu, çipi topraklamağın başqa bir yoludur və onu lövhəyə bağlamaq ümumi əlaqə ilə möhkəm bir əlaqə təmin edir. Bu, alt ilə üstə bağlıdır, çünki ikisi də metal dayaqlar ilə bağlıdır. Ancaq torpaq üçün ümumi əlaqədən istifadə etmirsinizsə, istilik emicisini taxtaya bərkitməyin, çünki istilik alıcısı torpaq kimi xidmət edir və ehtimal ki, bir şey qısaqapanacaqsınız. Batareya klipindəki növbəti tel. Qırmızı soldakı pinə gedir (İstilik batırıcı yuxarı və sancaqlar aşağıya doğru) ortadan qara və sağ pin +5v istehsal edir. İndi gücü yuxarıya bağlaya bilərsiniz (şəkil #2). İndi proqramçı bağlayıcısı üçün. Proqramçı üçün hazırladığım bir adapterim var, ancaq dizaynınıza 6 pinli (3x2) başlıq daxil etmək istəyəcəksiniz. Ancaq mənim kimi bir adapteriniz varsa, burada etdim. Düz bucaqlı bir başlıq və bir qadın başlıq götürüb birlikdə lehimlədim (Şəkil #3). Sonra onu pin 6 -ya bağlı olan ilk pinlə lövhəyə bağladım. İndi sıfırlamağı yüksək səviyyəyə qaldırmaq üçün çipi və rezistoru bağlamalısınız. Pin 9 -dan pin 10 -a qədər 10k müqavimət çəkdim və sonra pin 10 -dan +5v -ə bağladım. Növbəti pin (11) ümumi əlaqəyə (Zəmin) gedir. Nəhayət, bu addımı başa çatdırmaq üçün 4 nömrəli şəkilə baxın (Bu olduqca özünü izah edir).

Addım 6: Altını tellə bağlayın

Altını tel edin
Altını tel edin
Altını tel edin
Altını tel edin
Altını tel edin
Altını tel edin

Bir LED serialının işləməsi üçün 30 -dan çox teldən keçməli olduğunuz həqiqətən əyləncəli bir addımı xatırlayırsınızmı? İndi yenidən etməlisən! Aşağıda !. Bu bir az daha sürətli, amma mənim üçün çox deyil. Bir daha sxemə baxın və multimetrinizlə bütün əlaqələrinizi yoxlayın. Narahat olmayın, bu layihənin son böyük lehimləmə hissəsidir və demək olar ki, bitirdiniz.

Addım 7: Flex Sensorlar və Akselerometr

Flex Sensorlar və Akselerometr
Flex Sensorlar və Akselerometr
Flex Sensorlar və Akselerometr
Flex Sensorlar və Akselerometr
Flex Sensorlar və Akselerometr
Flex Sensorlar və Akselerometr

Əvvəlcə əyilmə sensörləri ilə məşğul olacağıq, ancaq aparat getdiyi qədər evin uzanırsınız. Düşünürəm ki, aşağıdakı şəkillər nə etməli olduğumuzu izah edir. Bir pimi +5v -ə digərini AVR -in sağ tərəfindəki yuxarıdan üçüncü və ya dördüncü pinə bağlayın (Bu layihənin mərkəzində mikro nəzarətçi). Bunu ilk dəfə bir araya gətirəndə etməyim lazım olan şey olduğunu düşündüm, amma məlum oldu ki, AVR -nin əyilmə sensorlarını oxuması üçün AVR -ə gedən sensordakı pindən yerə bir rezistor qoymalısınız (şəkillərə baxın # 10 və 11). 10k istifadə etdim. Bu, sensorun həssaslığını praktiki olaraq iki qat artıran AVR -ə gedən gərginliyi bölür. İndi akselerometr üçün. Akselerometr iki lövhə arasındakı boşluqdan daha hündür bir saç olduğundan və bir gün onu əvəz etmək istəyə biləcəyimiz üçün lövhədən çıxarmaq və birləşdirmək üçün başlıqlardan istifadə etmək qərarına gəldim. Kəsmə lövhəsindəki 6 sancağa qoşulmaq üçün düz bucaqlı başlıqdan istifadə edin. İndi başqa bir dik açılı başlıq götürün və bir qadın başlığı qısa sancaqlara lehimləyin, sonra lövhənizin sol alt hissəsinə lehimləyin. Uyğun olduğundan əmin olmaq üçün akselerometri qoşun, ayırın və sonra müvafiq pinləri Vcc (+5v) və Gnd -ə qoşun. Sonra X çıxış pinini 40 -cı pilə və Y -ni 39 -a bağlayın. İndi IC -ni (İnteqral sxemlər) əlavə edib işə salmalısınız.

26 Dekabr 2009: Göstərici barmağının əyilmə sensorunu necə qurduğum, sensoru sancaqlar ilə birləşdirən materialın aşınmasına səbəb olduğunu gördüm. O vaxtdan bəri bir dəyişdirmə sensoru aldım və əyilmənin çox hissəsini bu hissənin etməməsi üçün sensora nazik bir plastik parçası yapışdırdım. Aşağıdakı fotoda yeri qeyd etdim.

Addım 8: IC və İlk Proqramı əlavə edin

IC və Birinci Proqramın əlavə edilməsi
IC və Birinci Proqramın əlavə edilməsi
IC və Birinci Proqramın əlavə edilməsi
IC və Birinci Proqramın əlavə edilməsi
IC və Birinci Proqramın əlavə edilməsi
IC və Birinci Proqramın əlavə edilməsi
IC və Birinci Proqramın əlavə edilməsi
IC və Birinci Proqramın əlavə edilməsi

Bu, bütün prosesin ən asan addımıdır. Bir daha şəkil kömək edir. Çipləri şəkil 3 -də göstərildiyi kimi düzgün şəkildə aldığınızdan əmin olun. Əvvəlcə heç bir əlaqəsi olmayan gücü bağlayardım və gərginlik tənzimləyicisindəki soyuducuya toxunardım. İsti olarsa, bir şey çatışmır və geri qayıtmaq və əlaqələrinizi yoxlamaq lazımdır. Bu şəkildə davam edin, hər dəfə bir çip əlavə edin, istilik hiss edin və hər şey öz yerinə gəldikdən sonra alt lövhədəki qoz -fındıqları sıxın ki, iki lövhə etibarlı şəkildə bərkidilsin. Sonra AVR proqramlaşdıracaqsınız. Bunu əvvəllər heç etməmisinizsə, sürətli bir Google axtarış çoxlu nəticələr verir. Mən sizin yerinizdə olsaydım, çətin işinizə cəhd etməzdən əvvəl AVR -ni çörək taxtasına qoyardım və orada proqram hazırlayardım. Fleks sensorlarından alınan məlumatları LED silsiləsinə çıxarmaq üçün sadə bir proqram yazdım. Bu, dövrənizdə nəyin işlədiyini və işləmədiyini sizə təsəvvür etməlidir. İşdə olan kodun bir videosu …… və burada kod: #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 (); isə (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; }}

Addım 9: Sirketinizi bir əlcəyə bağlayın

Sirketinizi bir əlcəyə bağlayın
Sirketinizi bir əlcəyə bağlayın
Sirketinizi bir əlcəyə bağlayın
Sirketinizi bir əlcəyə bağlayın
Sirketinizi bir əlcəyə bağlayın
Sirketinizi bir əlcəyə bağlayın

Düşünürəm ki, dövrənizi əlinizə bağlamağın bir çox yolu var və bir müddət bunu oxucunun öhdəsinə buraxacağımı düşündüm, amma sonra bu bağlanmadan təlimatların tamamlanmayacağına qərar verdim. Yerli velosiped mağazama getdim və tapa biləcəyim ən ucuz tam barmaq əlcəyi aldım. Tam barmaq lazımdır, çünki əks halda əyilmə sensorlarını çox yaxşı bağlaya bilməzsiniz. Sonra bir parça mağazasına getdim və bir az polyester ip və yapışqanlı cırtdan aldım. Əlcəyi taxdım və dövrəni əlimə qoydum. Yerləşdirmənin bir hissəsi rahatlıqdır, digər hissəsi isə əyilmə sensorlarıdır. İki barmağın ortasından aşağı getməlidirlər. Əsas lövhəni tutmaq üçün üç dayaq ətrafında döngələr tikdim (Şəkil #2) və sonra hər bir əyilmə sensoru barmağının 3/4 hissəsində boş döngələr etdim (#3 və 4). Əlcəklərinizi bağlamadığınızdan əmin olun. Sonra batareyanı tutmaq üçün baş barmağımın kənarına bir ədəd cırtdan yapışdırdım. Çubuq uzun müddət davam etmədiyi üçün bunu tikməyin həqiqətən də xeyir verdiyini testdən sonra gördüm. Sonra 9v ətrafında bir velcro döngəsi qoydum (Şəkil 5). Bu quruluş olduqca yaxşı işləyir. İlk və son slaydlardakı şəkillərdə gördüyünüz kimi, indi fleks sensorlar üçün qollar əlavə etdim, amma vaxtınız yoxdursa, döngələr yaxşı olmalıdır. Layihənizi bitirdikdən sonra hazır məhsulunuzun şəkillərini yerləşdirin. aşağıda Dövrəni bağlamaq üçün nə etdiyinizi görmək istərdim!

Addım 10: Real Kod

Real Kod
Real Kod

Bu günə qədər mənimlə birlikdə olduğunuz üçün təşəkkür edirəm. Zəhmət olmasa kodumun mükəmməl olmadığını unutmayın. Siqnalın düzgün işləməsini öyrənmək üçün bir az öyrənmək lazım olduğunu gördüm. Sistemimi mükəmməlləşdirməyə çalışacağam və yazdıqdan sonra bu səhifəni yeni kodla yeniləyəcəyəm. 26 Dekabr 2009: YENİ KOD! Köhnə kodun olduğu yerdə yazılıb. Sadələşdirilməsi üçün Yaquba çox təşəkkür edirəm. Həqiqətən yaxşı işləyir. Bax budur. Oxuduğunuz üçün təşəkkürlər və səs verməyi unutmayın! #include #include #include // Bitləri reyestrlərə qoyur və ya təmizləyir #setBit (sfr, bit) təyin edin (sfr | = (1 << bit)) #define clearBit (sfr, bit) (sfr & = ~ (1 <<) bit)) #define flipBit (sfr, bit) (sfr ^= (1 << bit)) #FALSE 0 təyin et #DOĞRU 1 #matrisi X (x) təyin et (PORTA = (x - 1) << 5) #define matrixGY (y) (PORTD = y) #matrixRY (y) (PORTB = y) boş gecikmə (işarəsiz int gecikmə) {işarəsiz int x = 0; while (x <gecikmə) {x ++; }} etibarsız initMatrix () {DDRD = 0xFF; // Yaşıl idarəetmə DDRB = 0xFF; // Qırmızı idarəetmə DDRA = 0xE0; // Yer nəzarət} boş matrixRowDraw (char greenmask, char redmask, char sütunu) {matrixX (sütun); int i = 0; for (i = 0; i <8; i ++) {matrixGY (greenmask & (1 << i)); matrixRY (qırmızı maska & (1 << i)); _delay_us (150); } matrixGY (0x00); matrixRY (0x00); } boş 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); } boş 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); } boş adcInit () {ADMUX = 0x60; ADCSRA = 0x80; } char adcGet (char chan) {ADMUX = 0x60 | çan; ADCSRA | = 0x40; while (bit_is_clear (ADCSRA, ADIF)); ADCH qayıt; } char adcAvg (char chan, char avgnum) // Yalnız 256 nümunəyə qədər orta {int i = 0; imzasız int total = 0; for (i = 0; i <avgnum; i ++) {total+= adcGet (chan); } total/avgnum qaytar; } int main () {initMatrix (); adcInit (); while (1) {while (adcAvg (3, 50)> 0x45 & adcAvg (2, 50)> 0x70) // Buraxıcı sensorların həssaslığını müəyyən etmək üçün istifadəçilərin quruluşundan asılı olaraq buradakı hex dəyərləri dəyişdirilməlidir. {if (adcAvg (1, 50)> 0x4F) {matrixRight (); } if (adcAvg (1, 100) <0x4F) {matrixLeft (50); }}} 0 qaytar; } Kömək edən Chamberlains, valideynlərimə və dostlarıma xüsusi təşəkkürlər.

Evdə Tətil Müsabiqəsinin finalçısı

Tövsiyə: