Indholdsfortegnelse:

Cykelhåndsignallys: 10 trin (med billeder)
Cykelhåndsignallys: 10 trin (med billeder)

Video: Cykelhåndsignallys: 10 trin (med billeder)

Video: Cykelhåndsignallys: 10 trin (med billeder)
Video: НАША ЖИЗНЬ ИЗМЕНИЛАСЬ ПОСЛЕ ПОЯВЛЕНИЯ ............ 2024, November
Anonim
Cykelhåndsignallys
Cykelhåndsignallys

Målet med dette projekt er at skabe et lys, der passer på en cykelhandske og peger i retning af den påtænkte sving, for at øge synligheden om natten. Det skal være let, let at bruge og integreret med de eksisterende bevægelser til signalering (minimal tilpasning af signalmetode (du behøver ikke at trykke på en knap, det går bare når du signalerer)). Dette ville gøre en fantastisk feriegave.

Bemærk: Dette kræver forudgående viden om, hvordan man lodder, og en idé om, hvordan man programmerer AVR'er, er et stort plus. Med det i tankerne, hav det sjovt, vær tålmodig og læg billeder af dit produkt herunder! Her er en video: Og her er et billede af mit:

Trin 1: Dele

Dele
Dele

x1 ATmega 32L 8PU (www.digikey.com) x1 40-pin DIP-stik (www.digikey.com) x1 8x8 LED Array (www.sparkfun.com) x1 74138 De-multiplexer (www.digikey.com) x2 Flex Sensors (www.sparkfun.com) x (Mange) Modstande 180 ohm og 10k ohmx2 PC Board (www.sparkfun.com) x6 Standoffs (www.sparkfun.com) og skruer, der passer til (Local Hardware Store) x1 Accelerometer på breakout board (www.sparkfun.com) x2 Headers - Han (www.sparkfun.com), Female (www.sparkfun.com) og Right Angle (www.sparkfun.com) x1 LM7805 (www.digikey.com) x2 8 -pins stikkontakter (Jeg fik min på Radio Shack) x1 9v batteri x1 fod fast-on velcrox1 Fuldfingret cykelhandskex1 spole polyester trådx1 programmerer (jeg har denne) x1 Wire stripper og clipx1 Multimeter Nogle af delene:

Trin 2: Forbered tavlerne

Forbered bestyrelserne
Forbered bestyrelserne
Forbered bestyrelserne
Forbered bestyrelserne
Forbered bestyrelserne
Forbered bestyrelserne
Forbered bestyrelserne
Forbered bestyrelserne

Tilføj først standoffs. Du bliver nødt til at skrue to sammen for at få den korrekte højde. Sørg for, at afstandene falder ned fra siden med SQUARE -puderne. På denne måde kan du bropuder med lodning i bunden og bro med den fælles pude på toppen for at forbinde til jorden. Tilføj derefter LED -arrayet og lod det i. Det skal være så langt til kanten af brættet med de to stanoffs som det kan være med YS mod den modsatte side. Stiften nederst til venstre er pin 1. (Den er også markeret på billedet.) Tilføj derefter de to 8 -pins stikkontakter oven på hinanden for at danne en 16 -benet fatning. Sørg for at have et mellemrum til venstre og lod det derefter. Del derefter han- og hunhovederne i 10 og 11 ben sektioner. Du skal bruge dobbelt så mange kvindelige overskrifter. Lod dem i som ses på billedet. Med hensyn til de mandlige overskrifter skal du flytte stiften, så den er lige stor på hver side af plasten. Det er nemmest at se på et billede for at se, hvad jeg mener, så tag et kig på #6. Jeg brugte nogle tænger, og det fungerede ganske godt. Hvis du nu tager de mandlige overskrifter og placerer dem mellem de to kvindelige overskrifter, vil du se, at de nu har den rigtige størrelse til at forbinde det øverste og nederste bord sammen.

Trin 3: Tilføj modstanderne

Tilføj modstanderne
Tilføj modstanderne
Tilføj modstanderne
Tilføj modstanderne
Tilføj modstanderne
Tilføj modstanderne

Disse modstande går mellem LED -arrayet og 74138 (Ground) for at beskytte arrayet. Fold en af lederne fra modstanden over toppen, så de to ledninger er parallelle. Monter dem på ben 7, 9, 10, 11, 12, 13, 14 og 15 og loddetin. Jeg fandt ud af, at det fungerer bedst, hvis du skifter modstandens retning, som du kan se på det andet og tredje billede.

Trin 4: Tilslut toppen

Tråd toppen
Tråd toppen
Tråd toppen
Tråd toppen
Tråd toppen
Tråd toppen
Tråd toppen
Tråd toppen

Dette er langt det længste trin i projektet, så jeg håber bestemt, at du kan lide lodning! Bare følg skematikken herunder og sørg for at teste kontinuitet med dit multimeter. Hvis du vil vide, hvordan jeg skaffede os det skematiske kig på databladet til arrayet og 74138.

Trin 5: Befolker bunden

Befolk bunden
Befolk bunden
Befolk bunden
Befolk bunden
Befolk bunden
Befolk bunden
Befolk bunden
Befolk bunden

Nu er det tid til at placere vores grundkomponenter på bundpladen. Først gør vi 40 -pin DIP -stikket, der går så tæt på øverst til venstre som muligt, mens vi efterlader en række plads på venstre side. (Se billede nr. 1). Lod det ind, og placer derefter overskrifterne. Den nemmeste måde at gøre dette på er at forbinde dem øverst til dem, der går nederst ved hjælp af dine modificerede mandlige overskrifter. Hvis du gjorde alt rigtigt, skulle du ende med de tre øverste tre ben i venstre sidehoved ved siden af de nederste højre ben på stikkontakten. Det er ok. Vi bruger kun den nederste pin til højre, og som du kan se, har vi et klart skud på den fra en anden retning. Tilføj nu spændingsregulatoren som vist på billedet. Jeg sikrede min gennem hullet i metalkølelegemet med en skrue og møtrik. Kølelegemet er en anden måde at jorde chippen på og bolte den til brættet giver en solid kontakt med den fælles forbindelse. Dette er forbundet til bunden såvel som toppen, fordi de to er forbundet med metalafstande. Men hvis du ikke bruger den fælles forbindelse til jord, må du IKKE bolte kølelegemet til brættet, da kølelegemet fungerer som jord, og du vil sandsynligvis kortslutte noget. Næste ledning i batteriklemmen. Rød går til stiften til venstre (Med kølelegemet oppe og stifterne nede) sort til midten og den højre nål producerer +5v. Nu kan du tilslutte strøm til toppen (se billede nr. 2). Nu til programmeringsforbindelsen. Jeg har en adapter, som jeg lavede til min programmør, men du vil sandsynligvis gerne inkorporere et 6 -pins (3x2) header i dit design. Men hvis du har en adapter som jeg har, her er hvad jeg gjorde. Jeg tog en retvinklet header og en kvindelig header og lodde dem sammen (Billede #3). Derefter fastgjorde jeg det til tavlen med den første pin tilsluttet pin 6. Nu skal du strømforsynne og jorde chippen samt ledninger i en modstand for at trække reset højt. Jeg kørte en 10k modstand fra pin 9 til pin 10 og sluttede derefter pin 10 til +5v. Den næste pin (11) går til den fælles forbindelse (jord). Endelig se på billede #4 for at afslutte dette trin (Det er ret selvforklarende).

Trin 6: Tråd bunden

Tråd bunden
Tråd bunden
Tråd bunden
Tråd bunden
Tråd bunden
Tråd bunden

Kan du huske det virkelig sjove trin, hvor du skulle køre over 30 ledninger for at få et LED -array til at fungere? Nu skal du gøre det igen! På bunden!. Denne er lidt hurtigere, men ikke min meget. Kig igen på skematikken og kontroller alle dine forbindelser til dit multimeter. Bare rolig, dette er det sidste store lodningsstykke i projektet, og du er næsten færdig.

Trin 7: Flex -sensorer og accelerometeret

Flex -sensorer og accelerometeret
Flex -sensorer og accelerometeret
Flex -sensorer og accelerometeret
Flex -sensorer og accelerometeret
Flex -sensorer og accelerometeret
Flex -sensorer og accelerometeret

Vi vil først tackle flexsensorerne, men du er på hjemmestrækningen, hvad hardware angår. Jeg tror, at billederne herunder stort set forklarer, hvad de skal gøre. Tilslut den ene pin til +5v den anden til den tredje eller fjerde pin fra toppen på højre side af AVR (mikrokontrolleren i hjertet af dette projekt). Da jeg først satte dette sammen, tænkte jeg, at det var alt, hvad jeg skulle gøre, men det viser sig, at for at AVR'en kan læse flexsensorerne, skal du sætte en modstand fra stiften på sensoren, der går til AVR'en til jorden (Se billeder # 10 og 11). Jeg brugte en 10k. Dette deler spændingen til AVR'en, hvilket praktisk talt fordobler følsomheden af sensoren. Nu til accelerometeret. Fordi accelerometeret bare er et hår højere end mellemrummet mellem de to brædder, og fordi vi måske vil udskifte det en dag, har jeg besluttet at bruge overskrifter til at støde det ud af brættet og tilslutte det. Brug en retvinklet overskrift til at forbinde til de 6 ben på breakout -kortet. Tag nu en anden retvinklet overskrift og lod en kvindelig overskrift til de korte stifter, og lod den derefter nederst til venstre på dit bord. Tilslut accelerometeret for at sikre, at det passer, tag stikket ud, og slut derefter de rigtige ben til Vcc (+5v) og Gnd. Tilslut derefter pin -udgangen X til pin 40 og Y til pin 39. Nu skal du være indstillet til at tilføje IC'erne (integrerede kredsløb) og tænde den.

26. december 2009: Jeg har fundet ud af, at den måde, jeg monterede pegefingerflekssensoren på, fik materialet, der forbinder sensoren med stifterne, til at forringes. Jeg har siden købt en udskiftningssensor og varmlimet et stykke tynd plastik til sensoren for at forhindre, at dette område er den del, der gør det meste af bøjningen. Jeg har mærket placeringen på billedet herunder.

Trin 8: Tilføjelse af IC'er og det første program

Tilføjelse af IC'er og det første program
Tilføjelse af IC'er og det første program
Tilføjelse af IC'er og det første program
Tilføjelse af IC'er og det første program
Tilføjelse af IC'er og det første program
Tilføjelse af IC'er og det første program
Tilføjelse af IC'er og det første program
Tilføjelse af IC'er og det første program

Dette er sandsynlighed det letteste trin i hele processen. Igen hjælper billedet. Sørg for, at du har chipsene på den rigtige måde som forklaret på billede #3. Jeg ville først tilslutte strøm uden noget tilsluttet og røre kølepladen på spændingsregulatoren. Hvis det er varmt, mangler noget, og du skal gå tilbage og kontrollere dine forbindelser. Fortsæt på denne måde, tilføj en chip ad gangen, føl for varme og når alt er på plads, stram møtrikkerne på bundpladen, så de to brædder fastgøres sikkert. Dernæst programmerer du AVR. Hvis du aldrig har gjort dette før, giver en hurtig Google -søgning et væld af resultater. Hvis jeg var dig, ville jeg sætte min AVR på et brødbræt og programmere der, før du prøver det på dit stykke hårdt arbejde. Jeg skrev et simpelt program til at sende de oplysninger, der modtages fra flexsensorerne, til LED -arrayet. Dette skulle give dig en grundlæggende idé om, hvad der er og ikke fungerer i dit kredsløb. Her er en video af koden i aktion …… og her er koden: #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 (); mens (1) {ADMUX = 0b01100011; ADCSRA | = 0b01000000; mens (bit_is_clear (ADCSRA, ADIF)); PORTA = 0b00000000; PORTD = ADCH; _forsinkelse_ms (1); PORTD = 0x00; ADMUX = 0b01100010; ADCSRA | = 0b01000000; mens (bit_is_clear (ADCSRA, ADIF)); PORTA = 0b11100000; PORTB = ADCH; _forsinkelse_ms (1); PORTB = 0x00; }}

Trin 9: Vedhæftning af dit kredsløb til en handske

Fastgør dit kredsløb til en handske
Fastgør dit kredsløb til en handske
Fastgør dit kredsløb til en handske
Fastgør dit kredsløb til en handske
Vedhæftning af dit kredsløb til en handske
Vedhæftning af dit kredsløb til en handske

Jeg tror, at der er mange måder at knytte dit kredsløb til din hånd og troede i et stykke tid, at jeg ville overlade det til læseren, men besluttede derefter, at det instruerbare ikke ville være komplet uden denne lukning. Jeg gik til min lokale cykelbutik og fik den billigste fuld-finger handske jeg kunne finde. Full finger er nødvendig, for ellers kan du ikke fastgøre flexsensorerne særlig godt. Jeg gik derefter forbi en stofbutik og fik noget polyestertråd og klæbebånd. Jeg tog handsken på og lagde kredsløbet på min hånd. En del af positioneringen er komfort, men en anden del er flexsensorerne. De skulle gå ned midt på to fingre. Jeg syede sløjfer rundt om de tre standoffs for at holde hovedkortet på (se billede #2) og løste derefter løkker 3/4 af vejen ned ad hver flex sensor finger (#3 og 4). Sørg for at du ikke sy din handske lukket. Derefter stak jeg et stykke velcro fast på siden af min tommelfinger for at holde batteriet. Jeg har fundet ud efter at have testet, at det virkelig også kan betale sig at sy dette på, da pinden ikke holder for længe. Dernæst lagde jeg en loop med velcro omkring 9v (billede 5). Denne opsætning ser ud til at fungere ret godt. Som du ser på billederne på de første og sidste dias, har jeg nu tilføjet ærmer til flexsensorerne, men hvis du ikke har tid, skal sløjfer gøre det fint. Når du er færdig med dit projekt, skal du sende billeder af dit færdige produkt under. Jeg ville elske at se, hvad du fandt på for at vedhæfte kredsløbet!

Trin 10: Den virkelige kode

Den virkelige kode
Den virkelige kode

Tak fordi du har holdt med mig indtil videre. Husk, at min kode ikke er perfekt. Jeg har fundet ud af, at det tager lidt at lære at få signalet til at fungere rigtigt. Jeg vil fortsætte med at forsøge at perfektionere mit system og vil holde denne side opdateret med ny kode, når jeg skriver det. 26. dec 2009: NY KODE! Det er opslået, hvor den gamle kode var. Mange tak til Jacob for forenklingen. Det fungerer virkelig godt. Her er det. Tak fordi du læste, og glem ikke at stemme! #include #include #include // Sætter eller sletter bits i registre #define setBit (sfr, bit) (sfr | = (1 << bit)) #define clearBit (sfr, bit) (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) #define matrixRY (y) (PORTB = y) void delay (unsigned int delay) {unsigned int x = 0; mens (x <forsinkelse) {x ++; }} ugyldig initMatrix () {DDRD = 0xFF; // Grøn kontrol DDRB = 0xFF; // Rød kontrol DDRA = 0xE0; // Ground control} void matrixRowDraw (char greenmask, char redmask, char column) {matrixX (column); int i = 0; for (i = 0; i <8; i ++) {matrixGY (greenmask & (1 << i)); matrixRY (rødmaske & (1 << i)); _forsinkelse_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 | chan; ADCSRA | = 0x40; mens (bit_is_clear (ADCSRA, ADIF)); returnér ADCH; } char adcAvg (char chan, char avgnum) // Kun gennemsnitligt op til 256 prøver {int i = 0; usigneret int total = 0; for (i = 0; i <avgnum; i ++) {total+= adcGet (chan); } returnere total/avgnum; } int main () {initMatrix (); adcInit (); while (1) {while (adcAvg (3, 50)> 0x45 & adcAvg (2, 50)> 0x70) // Hexværdierne her bør ændres afhængigt af brugernes opsætning for at bestemme følsomheden af flexsensorerne. {if (adcAvg (1, 50)> 0x4F) {matrixRight (); } hvis (adcAvg (1, 100) <0x4F) {matrixLeft (50); }}} returner 0; } Særlig tak til Chamberlains, mine forældre og venner, der hjalp.

Finalist i hjemmelavet feriekonkurrence

Anbefalede: