Innehållsförteckning:

Cykelhandljus: 10 steg (med bilder)
Cykelhandljus: 10 steg (med bilder)

Video: Cykelhandljus: 10 steg (med bilder)

Video: Cykelhandljus: 10 steg (med bilder)
Video: На каком языке лучше звучит?🔥 2024, November
Anonim
Cykel Hand Signal Light
Cykel Hand Signal Light

Målet med detta projekt är att skapa ett ljus som passar på en cykelhandske och pekar i riktning mot den avsedda svängen, för att öka synligheten på natten. Den ska vara lätt, enkel att använda och integrerad med de befintliga rörelserna för signalering (minimal justering av signalmetod (du behöver inte trycka på en knapp, den går bara när du signalerar)). Detta skulle göra en bra semestergåva.

Obs: Detta kräver tidigare kunskap om hur man lödar och en idé om hur man programmerar AVR är ett stort plus. Med det i åtanke, ha kul, ha tålamod och lägg upp bilder på din produkt nedan! Här är en video: Och här är en bild på mig:

Steg 1: Delar

Delar
Delar

x1 ATmega 32L 8PU (www.digikey.com) x1 40-stifts DIP-uttag (www.digikey.com) x1 8x8 LED Array (www.sparkfun.com) x1 74138 De-multiplexer (www.digikey.com) x2 Flex Sensors (www.sparkfun.com) x (många) motstånd 180 ohm och 10k ohmx2 PC -kort (www.sparkfun.com) x6 Standoffs (www.sparkfun.com) och skruvar för att passa (lokal hårdvaruhandel) x1 Accelerometer på utbrottskort (www.sparkfun.com) x2 Headers - Man (www.sparkfun.com), Female (www.sparkfun.com) och Right Angle (www.sparkfun.com) x1 LM7805 (www.digikey.com) x2 8 -poliga uttag (Jag fick min på Radio Shack) x1 9v batteri x1 fot fast-på kardborreband1 Fullfingerad cykelhandskex1 spole polyester threadx1 Programmerare (jag har den här) x1 Wire stripper och clipx1 Multimeter Några av delarna:

Steg 2: Förbered brädorna

Förbered styrelserna
Förbered styrelserna
Förbered styrelserna
Förbered styrelserna
Förbered styrelserna
Förbered styrelserna
Förbered styrelserna
Förbered styrelserna

Lägg först till standoffs. Du måste skruva ihop två för att få rätt höjd. Se till att avstånden sjunker från sidan med SQUARE -kuddarna. På så sätt kan du överbrygga kuddar med lödning på botten och överbrygga med den gemensamma kudden på toppen för att ansluta till marken. Lägg sedan till LED -matrisen och löd in den. Det ska vara så långt till brädans kant med de två stanoffs som det kan vara med YS mot den motsatta sidan. Stiftet längst ner till vänster är stift 1. (Det är också markerat på bilden.) Lägg sedan till de två 8 -stifts uttagen ovanpå varandra för att bilda ett 16 -stifts uttag. Se till att ha ett mellanslag till vänster och löd sedan in det. Dela sedan han- och honhuvudena i 10 och 11 stift. Du behöver dubbelt så många kvinnliga rubriker. Lödda in de som syns på bilden. När det gäller de manliga rubrikerna måste du flytta stiftet så att det är lika mycket på varje sida av plasten. Det är lättast att titta på en bild för att se vad jag menar så ta en titt på #6. Jag använde en tång och det fungerade ganska bra. Om du tar de manliga rubrikerna och placerar dem mellan de två kvinnliga rubrikerna ser du att de nu har rätt storlek för att ansluta det övre och nedre kortet.

Steg 3: Lägg till motståndarna

Lägg till motståndarna
Lägg till motståndarna
Lägg till motståndarna
Lägg till motståndarna
Lägg till motståndarna
Lägg till motståndarna

Dessa motstånd går mellan LED -arrayen och 74138 (Ground) för att skydda arrayen. Vik en av ledningarna från motståndet över toppen så att de två ledningarna är parallella. Montera dem på stift 7, 9, 10, 11, 12, 13, 14 och 15 och löd. Jag fann att det fungerar bäst om du växlar motståndets riktning som du kan se på den andra och tredje bilden.

Steg 4: Anslut toppen

Koppla toppen
Koppla toppen
Koppla toppen
Koppla toppen
Koppla toppen
Koppla toppen
Koppla toppen
Koppla toppen

Detta är det längsta steget i projektet så jag hoppas verkligen att du gillar lödning! Följ bara schemat nedan och se till att testa kontinuiteten med din multimeter. Om du vill veta hur jag kom till oss med en schematisk titt på databladet för matrisen och 74138.

Steg 5: Fyll på botten

Befolka botten
Befolka botten
Befolka botten
Befolka botten
Befolka botten
Befolka botten
Befolka botten
Befolka botten

Nu är det dags att placera våra grundkomponenter på bottenplattan. Först gör vi 40 -stifts DIP -uttaget som går så nära uppe till vänster som möjligt medan vi lämnar en rad utrymme på vänster sida. (Se bild #1.) Löd in den och placera sedan rubrikerna. Det enklaste sättet att göra detta är att ansluta dem på toppen till de som kommer att gå längst ner med dina modifierade manliga rubriker. Om du gjorde allt rätt skulle du sluta med de tre tre översta stiften på den vänstra rubriken bredvid de nedre högra stiften på uttaget. Det här är ok. Vi använder bara den nedersta stiftet till höger och som du kan se har vi ett tydligt skott på det från en annan riktning. Lägg nu till spänningsregulatorn enligt bilden. Jag säkrade mitt genom hålet i metallkylflänsen med en skruv och mutter. Kylflänsen är ett annat sätt att jorda chipet och bulta det till brädet ger en solid kontakt med den gemensamma anslutningen. Detta är anslutet till både botten och toppen eftersom de två är anslutna med metallavstånd. Men om du inte använder den gemensamma jordanslutningen ska du INTE skruva fast kylflänsen på brädet eftersom kylflänsen fungerar som mark och du kommer förmodligen att kortsluta något. Nästa tråd i batteriklämman. Rött går till stiftet till vänster (med kylflänsen uppe och stiften nedåt) svart i mitten och höger stift ger +5v. Nu kan du koppla ström till toppen (se bild #2). Nu för programmerarens anslutning. Jag har en adapter som jag gjorde för min programmerare men du kommer förmodligen att vilja ha en 6 -stifts (3x2) rubrik i din design. Men om du har en adapter som jag har, här är vad jag gjorde. Jag tog ett rätvinkligt huvud och ett kvinnligt huvud och lödde ihop dem (bild #3). Sedan fästde jag det på kortet med den första stiftet anslutet till stift 6. Nu måste du driva och jorda chipet samt kablar i ett motstånd för att dra reset högt. Jag körde ett 10k motstånd från stift 9 till stift 10 och kopplade sedan stift 10 till +5v. Nästa stift (11) går till den gemensamma anslutningen (jord). Slutligen titta på bild #4 för att avsluta detta steg (Det är ganska självförklarande).

Steg 6: Trä botten

Trä botten
Trä botten
Trä botten
Trä botten
Trä botten
Trä botten

Kommer du ihåg det riktigt roliga steget där du fick köra över 30 ledningar för att få en LED -array att fungera? Nu får du göra det igen! På botten!. Den här är lite snabbare men inte min mycket. Återigen, titta på schemat och kontrollera alla dina anslutningar med din multimeter. Oroa dig inte, det här är den sista stora lödbiten i projektet och du är nästan klar.

Steg 7: Flex -sensorer och accelerometer

Flex -sensorer och accelerometer
Flex -sensorer och accelerometer
Flex -sensorer och accelerometer
Flex -sensorer och accelerometer
Flex -sensorer och accelerometer
Flex -sensorer och accelerometer

Vi kommer att ta itu med flex -sensorerna först, men du är på hemsträckan så långt som hårdvara når. Jag tror att bilderna nedan förklarar ganska mycket vad man ska göra. Anslut en stift till +5v den andra till den tredje eller fjärde stiftet från toppen på höger sida av AVR (mikrokontrollern i hjärtat av detta projekt). När jag först satte ihop detta trodde jag att det var allt jag behövde göra men det visar sig att för att AVR: n ska kunna läsa flexsensorerna måste du sätta ett motstånd från stiftet på sensorn som går till AVR till marken (se bilder # 10 och 11). Jag använde en 10k. Detta delar spänningen till AVR som praktiskt taget fördubblar känsligheten hos sensorn. Nu till accelerometern. Eftersom accelerometern bara är ett hår högre än utrymmet mellan de två brädorna och för att vi kanske vill byta ut det någon dag har jag bestämt mig för att använda rubriker för att stöta ut det från brädet och ansluta det. Använd en rätvinklig rubrik för att ansluta till de 6 stiften på breakout -kortet. Ta nu en annan rätvinklig rubrik och löd en kvinnlig rubrik till de korta stiften och löd den sedan längst ned till vänster på ditt bräde. Anslut accelerometern för att se till att den passar, koppla ur den och anslut sedan de rätta stiften till Vcc (+5v) och Gnd. Anslut sedan stiftutgången X till stift 40 och Y till stift 39. Nu bör du ställa in IC: erna (integrerade kretsar) och slå på den.

26 dec 2009: Jag har upptäckt att sättet jag monterade pekfingers flex -sensor orsakade att materialet som förbinder sensorn med stiften försämrades. Jag har sedan köpt en ersättningssensor och varmlimmat en bit tunn plast på sensorn för att förhindra att detta område är det som gör det mesta av böjningen. Jag har taggat platsen på bilden nedan.

Steg 8: Lägga till IC: er och det första programmet

Lägger till IC: er och det första programmet
Lägger till IC: er och det första programmet
Lägger till IC: er och det första programmet
Lägger till IC: er och det första programmet
Lägger till IC: er och det första programmet
Lägger till IC: er och det första programmet
Lägger till IC: er och det första programmet
Lägger till IC: er och det första programmet

Detta är sannolikt det enklaste steget i hela processen. Återigen hjälpte bilden. Se till att du har chipsen på rätt sätt som förklaras i bild #3. Jag skulle först ansluta ström utan att något var anslutet och vidröra kylflänsen på spänningsregulatorn. Om det är varmt så håller något på att brista och du måste gå tillbaka och kontrollera dina anslutningar. Fortsätt på detta sätt, lägg till ett chip i taget, känn efter värme och när allt är på plats, dra åt muttrarna på bottenplattan så att de två brädorna fästs ordentligt. Därefter programmerar du AVR. Om du aldrig har gjort detta tidigare ger en snabb Google -sökning en uppsjö av resultat. Om jag var du skulle jag lägga min AVR på en brödbräda och programmera där innan du försöker på ditt hårda arbete. Jag skrev ett enkelt program för att mata ut den information som tas emot från flexsensorerna till LED -matrisen. Detta bör ge dig en grundläggande uppfattning om vad som är och inte fungerar i din krets. Här är en video av koden i aktion …… och här är 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 (); medan (1) {ADMUX = 0b01100011; ADCSRA | = 0b01000000; medan (bit_is_clear (ADCSRA, ADIF)); PORTA = 0b00000000; PORTD = ADCH; _fördröjning_ms (1); PORTD = 0x00; ADMUX = 0b01100010; ADCSRA | = 0b01000000; medan (bit_is_clear (ADCSRA, ADIF)); PORTA = 0b11100000; PORTB = ADCH; _fördröjning_ms (1); PORTB = 0x00; }}

Steg 9: Fäst din krets på en handske

Fäst din krets på en handske
Fäst din krets på en handske
Fäst din krets på en handske
Fäst din krets på en handske
Fäst din krets på en handske
Fäst din krets på en handske

Jag tror att det finns många sätt att fästa din krets på din hand och tänkte ett tag att jag skulle lämna det till läsaren men bestämde mig sedan för att det instruerbara inte skulle vara komplett utan denna stängning. Jag gick till min lokala cykelbutik och fick den billigaste fullfingershandsken jag kunde hitta. Fullfinger är nödvändigt för annars kan du inte fästa flexsensorerna särskilt bra. Jag gick sedan i en tygaffär och fick lite polyestertråd och fast kardborre. Jag tog på mig handsken och lade kretsen på min hand. En del av positioneringen är komfort men en annan del är flexsensorerna. De borde gå ner i mitten av två fingrar. Jag sydde slingor runt de tre avstånden för att hålla huvudkortet på (se bild #2) och gjorde sedan lösa slingor 3/4 av vägen ner för varje flex sensor finger (#3 och 4). Se till att du inte syr handsken stängd. Därefter la jag fast en kardborrband på tummen för att hålla i batteriet. Jag har upptäckt efter testning att det verkligen lönar sig att sy på detta också eftersom pinnen inte håller för länge. Därefter lägger jag en loop med kardborre runt 9v (bild 5). Denna inställning verkar fungera ganska bra. Som du ser på bilderna på de första och sista bilderna har jag nu lagt till ärmar för flex -sensorerna, men om du inte har tid bör slingor gå bra. När du avslutar med ditt projekt kan du lägga upp foton av din färdiga produkt Nedan. Jag skulle gärna se vad du kom fram till för att fästa kretsen!

Steg 10: Den riktiga koden

Den riktiga koden
Den riktiga koden

Tack för att du håller med mig så här långt. Kom ihåg att min kod inte är perfekt. Jag har funnit att det tar lite inlärning för att få signalen att fungera rätt. Jag kommer att fortsätta försöka förbättra mitt system och kommer att hålla den här sidan uppdaterad med ny kod när jag skriver det. 26 dec 2009: NY KOD! Det är postat där den gamla koden var. Stort tack till Jacob för förenklingen. Det fungerar verkligen bra. Här är det. Tack för att du läste och glöm inte att rösta! #include #include #include // Ställer in eller raderar bitar i registren #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; medan (x <fördröjning) {x ++; }} void initMatrix () {DDRD = 0xFF; // Grön kontroll DDRB = 0xFF; // Röd kontroll DDRA = 0xE0; // Ground control} void matrixRowDraw (char greenmask, char redmask, char column) {matrixX (column); int i = 0; för (i = 0; i <8; i ++) {matrixGY (greenmask & (1 << i)); matrixRY (redmask & (1 << i)); _fördröjning_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; medan (bit_is_clear (ADCSRA, ADIF)); returnera ADCH; } char adcAvg (char chan, char avgnum) // Endast i genomsnitt upp till 256 prover {int i = 0; osignerad int total = 0; för (i = 0; i <avgnum; i ++) {total+= adcGet (chan); } returnera totalt/avgnum; } int main () {initMatrix (); adcInit (); while (1) {while (adcAvg (3, 50)> 0x45 & adcAvg (2, 50)> 0x70) // Hexvärdena här bör ändras beroende på användarnas inställningar för att bestämma känsligheten hos flexsensorerna. {if (adcAvg (1, 50)> 0x4F) {matrixRight (); } if (adcAvg (1, 100) <0x4F) {matrixLeft (50); }}} returnera 0; } Ett särskilt tack till Chamberlains, mina föräldrar och vänner som hjälpte till.

Finalist i den hemlagade semestertävlingen

Rekommenderad: