Sadržaj:

Signalno svjetlo za bicikl: 10 koraka (sa slikama)
Signalno svjetlo za bicikl: 10 koraka (sa slikama)

Video: Signalno svjetlo za bicikl: 10 koraka (sa slikama)

Video: Signalno svjetlo za bicikl: 10 koraka (sa slikama)
Video: Miletov cuveni pad sa bicikla. :D 2024, Studeni
Anonim
Signalno svjetlo za bicikl
Signalno svjetlo za bicikl

Cilj ovog projekta je stvoriti svjetlo koje staje na biciklističku rukavicu i pokazuje u smjeru predviđenog zavoja, kako bi se povećala vidljivost noću. Trebao bi biti lagan, jednostavan za korištenje i integriran sa postojećim pokretima signalizacije (minimalno dotjerivanje metode signala (ne morate pritisnuti gumb, to ide samo kad signalizirate)). Ovo bi bio izvrstan poklon za blagdan.

Napomena: To zahtijeva prethodno znanje o lemljenju, a ideja o programiranju AVR -ova veliki je plus. Imajući to na umu, zabavite se, budite strpljivi i ispod postavite fotografije svog proizvoda! Evo videa: A evo i moje slike:

Korak 1: Dijelovi

Dijelovi
Dijelovi

x1 ATmega 32L 8PU (www.digikey.com) x1 40-pinska DIP utičnica (www.digikey.com) x1 8x8 LED niz (www.sparkfun.com) x1 74138 De-multiplekser (www.digikey.com) x2 Flex senzori (www.sparkfun.com) x (Mnogi) Otpornici 180 ohma i 10 k ohmx2 PC ploča (www.sparkfun.com) x6 Odstojci (www.sparkfun.com) i vijci za pričvršćivanje (Lokalna trgovina hardvera) x1 Akcelerometar na probojnoj ploči (www.sparkfun.com) x2 zaglavlja - muški (www.sparkfun.com), ženski (www.sparkfun.com) i pravi kut (www.sparkfun.com) x1 LM7805 (www.digikey.com) x2 8 -polne utičnice (Nabavio sam svoj u Radio Shacku) x1 9v baterija x1 nožna palica za pričvršćivanje velcrox1 biciklistička rukavica s punim prstima x1 kalem od poliesterske niti x1 programator (imam ovaj) x1 skidač žice i multimetar clipx1 Neki od dijelova:

Korak 2: Pripremite ploče

Pripremite ploče
Pripremite ploče
Pripremite ploče
Pripremite ploče
Pripremite ploče
Pripremite ploče
Pripremite ploče
Pripremite ploče

Prvo dodajte odstupanja. Morat ćete spojiti dva zajedno kako biste dobili odgovarajuću visinu. Uvjerite se da se odstupanja spuštaju sa strane pomoću SQUARE jastučića. Na ovaj način možete premostiti jastučiće s lemljenjem na dnu i premostiti s uobičajenom podlogom na vrhu za spajanje na masu. Zatim dodajte LED niz i zalemite ga. Trebalo bi biti što je moguće bliže rubu ploče s dva stanofa, a YS prema suprotnoj strani. Igla u donjem lijevom kutu je iglica 1. (Također je označena na slici.) Zatim dodajte dvije 8 -polne utičnice jednu na drugu tako da tvore jednu 16 -polnu utičnicu. Pazite da ostavite jedan razmak s lijeve strane, a zatim ga zalemite. Zatim podijelite muški i ženski zaglavlje na 10 i 11 pin dijelove. Trebat će vam dvostruko više ženskih zaglavlja. Lemite one unutra kao što se vidi na fotografiji. Što se tiče muških zaglavlja, morate pomaknuti iglu tako da im bude jednaka količina sa svake strane plastike. Najlakše je pogledati sliku da vidite na što mislim, pa pogledajte #6. Koristio sam kliješta i radili su prilično dobro. Sada, ako uzmete muška zaglavlja i postavite ih između 2 ženska zaglavlja, vidjet ćete da su sada odgovarajuće veličine za povezivanje gornje i donje ploče.

Korak 3: Dodajte otpornike

Dodajte otpornike
Dodajte otpornike
Dodajte otpornike
Dodajte otpornike
Dodajte otpornike
Dodajte otpornike

Ovi otpornici idu između LED polja i 74138 (uzemljenje) kako bi zaštitili niz. Presavijte jedan od vodiča otpornika preko vrha tako da su dva voda paralelna. Postavite ih na igle 7, 9, 10, 11, 12, 13, 14 i 15 i lemite. Otkrio sam da najbolje radi ako promijenite smjer otpornika kao što možete vidjeti na drugoj i trećoj slici.

Korak 4: Ožičite vrh

Ožičite vrh
Ožičite vrh
Ožičite vrh
Ožičite vrh
Ožičite vrh
Ožičite vrh
Ožičite vrh
Ožičite vrh

Ovo je daleko najduži korak projekta pa se nadam da vam se sviđa lemljenje! Samo slijedite donju shemu i provjerite kontinuitet s multimetrom. Ako želite znati kako sam došao sa shematskim pregledom podatkovne tablice za niz i 74138.

Korak 5: Napunite dno

Napuni dno
Napuni dno
Napuni dno
Napuni dno
Napuni dno
Napuni dno
Napuni dno
Napuni dno

Sada je vrijeme da naše osnovne komponente stavimo na donju ploču. Prvo ćemo napraviti 40 -polnu DIP utičnicu koja ide što je moguće bliže lijevom gornjem dijelu, ostavljajući jedan red prostora na lijevoj strani. (Pogledajte sliku br. 1) Lemite to unutra, a zatim postavite zaglavlja. Najlakši način za to je da povežete one na vrhu s onima koji će ići na dnu pomoću vaših izmijenjenih muških zaglavlja. Ako ste učinili sve kako treba, trebali biste završiti s tri gornja tri pina na lijevom zaglavlju pored donjih desnih pinova na utičnici. Ovo je u redu. Koristimo samo najniži klin s desne strane i kao što vidite imamo jasan udarac u njega iz drugog smjera. Sada dodajte regulator napona kao što je prikazano na slici. Ja sam svoj pričvrstio kroz rupu u metalnom hladnjaku vijkom i maticom. Hladnjak je još jedan način uzemljenja čipa i pričvršćivanje pričvršćivanjem na ploču osigurava čvrsti kontakt s uobičajenom vezom. To je povezano s dnom, kao i s vrhom, jer su spojena metalnim ogradama. Međutim, ako ne koristite zajednički spoj za uzemljenje, NE pričvršćujte hladnjak na ploču jer hladnjak služi kao uzemljenje i vjerojatno ćete nešto spojiti. Sljedeća žica u držaču baterije. Crveno ide do igle na lijevoj strani (S hladnjakom prema gore i iglicama prema dolje) crno do sredine, a desna iglica proizvodi +5V. Sada možete spojiti napajanje na vrh (pogledajte sliku #2). Sada o povezivanju programera. Imam adapter koji sam napravio za svog programera, ali vjerojatno ćete htjeti u svoj dizajn ugraditi 6 -polno (3x2) zaglavlje. Međutim, ako imate adapter poput mene, evo što sam učinio. Uzeo sam zaglavlje pod pravim kutom i žensko zaglavlje i lemio ih zajedno (Slika #3). Zatim sam ga priključio na ploču s prvim pinom spojenim na pin 6. Sada morate napajanje i uzemljenje čipa, kao i ožičenje u otporniku povući reset visoko. Prošao sam 10k otpornik od pina 9 do pina 10, a zatim spojio pin 10 na +5v. Sljedeći pin (11) ide na zajedničku vezu (uzemljenje). Na kraju pogledajte sliku #4 da biste dovršili ovaj korak (prilično je razumljivo samo za sebe).

Korak 6: Ožičite dno

Ožičite dno
Ožičite dno
Ožičite dno
Ožičite dno
Ožičite dno
Ožičite dno

Sjećate li se onog zaista zabavnog koraka u kojem morate proći preko 30 žica kako biste LED niz radili? Sada to morate učiniti opet! Na dnu!. Ovaj je malo brži, ali nije moj. Još jednom pogledajte shemu i provjerite sve svoje veze s multimetrom. Ne brinite, ovo je posljednji veliki dio lemljenja u projektu i skoro ste gotovi.

Korak 7: Savitljivi senzori i mjerač ubrzanja

Fleksibilni senzori i akcelerometar
Fleksibilni senzori i akcelerometar
Fleksibilni senzori i akcelerometar
Fleksibilni senzori i akcelerometar
Fleksibilni senzori i akcelerometar
Fleksibilni senzori i akcelerometar

Prvo ćemo se pozabaviti sa fleksibilnim senzorima, ali vi ste na domaćem planu što se hardvera tiče. Mislim da slike u nastavku prilično objašnjavaju što učiniti. Spojite jedan pin na +5v, drugi na treći ili četvrti pin odozgo s desne strane AVR -a (mikrokontroler u središtu ovog projekta). Kad sam ovo prvi put sastavio, mislio sam da je to sve što trebam učiniti, ali pokazalo se da je za AVR za očitavanje fleksibilnih senzora potrebno staviti otpornik s pina na senzoru koji ide prema AVR -u na zemlju (vidi slike # 10 i 11). Koristio sam 10k. Time se dijeli napon koji ide prema AVR -u što praktički udvostručuje osjetljivost senzora. A sada za akcelerometar. Budući da je mjerač ubrzanja samo za dlaku viši od prostora između dvije ploče i zato što bismo ga jednog dana mogli htjeti zamijeniti, odlučio sam upotrijebiti zaglavlja kako bih ga izbacio s ploče i spojio. Zaglavljem pod pravim kutom spojite se na 6 pinova na ploči za razbijanje. Sada uzmite još jedno zaglavlje pod pravim kutom i zalemite žensko zaglavlje na kratke igle, a zatim ga zalemite u donji lijevi dio ploče. Uključite mjerač ubrzanja kako biste bili sigurni da odgovara, isključite ga, a zatim spojite odgovarajuće pinove na Vcc (+5v) i Gnd. Zatim spojite pin izlaz X na pin 40 i Y na pin 39. Sada biste trebali biti postavljeni da dodate IC (integrirana kola) i uključite ga.

26. prosinca 2009.: Otkrio sam da je način na koji sam postavio senzor savijanja kažiprsta prouzročio propadanje materijala koji povezuje senzor s iglama. Od tada sam kupio zamjenski senzor i vruće zalijepio komad tanke plastike na senzor kako bih spriječio da ovo područje bude dio savijanja. Označio sam lokaciju na donjoj fotografiji.

Korak 8: Dodavanje IC -a i prvog programa

Dodavanje IC -a i Prvi program
Dodavanje IC -a i Prvi program
Dodavanje IC -a i Prvi program
Dodavanje IC -a i Prvi program
Dodavanje IC -a i Prvi program
Dodavanje IC -a i Prvi program
Dodavanje IC -a i Prvi program
Dodavanje IC -a i Prvi program

Ovo je vjerojatno najlakši korak u cijelom procesu. Još jednom slika pomaže. Provjerite imate li čips na ispravan način kako je objašnjeno na slici #3. Prvo bih spojio napajanje bez ičega spojenog i dodirnuo hladnjak na regulatoru napona. Ako je vruće, onda nešto nedostaje i morate se vratiti i provjeriti veze. Postupite na ovaj način, dodajući jedan po jedan čip, osjećajući toplinu i kad sve bude na svom mjestu, pritegnite matice na donjoj ploči tako da su dvije ploče čvrsto pričvršćene zajedno. Zatim ćete programirati AVR. Ako to dosad niste učinili, brzo Google pretraživanje daje mnoštvo rezultata. Da sam na vašem mjestu stavio bih svoj AVR na ploču i program prije nego što ga pokušate na svom trudu. Napisao sam jednostavan program za ispis informacija primljenih od fleks senzora u LED niz. Ovo bi vam trebalo dati osnovnu ideju o tome što radi, a što ne radi u vašem krugu. Evo videozapisa koda na djelu …… i evo koda: #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; _kašnjenje_ms (1); PORTD = 0x00; ADMUX = 0b01100010; ADCSRA | = 0b01000000; while (bit_is_clear (ADCSRA, ADIF)); PORTA = 0b11100000; PORTB = ADCH; _odgoda_ms (1); PORTB = 0x00; }}

Korak 9: Pričvršćivanje kruga na rukavicu

Pričvršćivanje vašeg kruga na rukavicu
Pričvršćivanje vašeg kruga na rukavicu
Pričvršćivanje vašeg kruga na rukavicu
Pričvršćivanje vašeg kruga na rukavicu
Pričvršćivanje vašeg kruga na rukavicu
Pričvršćivanje vašeg kruga na rukavicu

Mislim da postoji mnogo načina da svoje kolo pričvrstite na svoju ruku i neko vrijeme sam mislio da ću to prepustiti čitatelju, ali sam tada odlučio da instrukcije neće biti potpune bez ovog zatvaranja. Otišao sam u svoju lokalnu trgovinu bicikala i dobio sam najjeftiniju rukavicu s punim prstima koju sam mogao pronaći. Pun prst je neophodan jer u protivnom senzore savijanja ne možete spojiti jako dobro. Zatim sam otišao u trgovinu tkaninama i nabavio konac od poliestera i čičak naljepljive trake. Stavila sam rukavicu i stavila strujni krug na ruku. Dio pozicioniranja je udobnost, ali drugi dio su senzori savijanja. Trebali bi se spuštati po sredini dva prsta. Sašio sam petlje oko tri stajalice kako bih držao glavnu ploču (vidi sliku #2), a zatim sam olabavio petlje 3/4 dolje prema svakom prstu osjetnika savijanja (#3 i 4). Pazite da ne zašijete svoju rukavicu. Zatim sam zalijepio komad čička na stranu palca kako bih držao bateriju. Nakon testiranja otkrio sam da se i ovo zaista isplati prišiti jer štapić ne traje predugo. Zatim sam stavio petlju čičak trake oko 9v (Slika 5). Čini se da ovo postavljanje radi prilično dobro. Kao što vidite na slikama na prvom i posljednjem slajdu, sada sam dodao rukave za flex senzore, ali ako nemate vremena, petlje bi trebale biti u redu. Kada završite s projektom, objavite fotografije gotovog proizvoda ispod. Volio bih vidjeti što ste smislili da spojite krug!

Korak 10: Pravi kod

Pravi kod
Pravi kod

Hvala vam što ste me dosad držali. Imajte na umu da moj kôd nije savršen. Otkrio sam da je potrebno malo učenja kako bi signal radio ispravno. I dalje ću se truditi usavršiti svoj sustav, a stranicu ću ažurirati novim kodom kad je napišem. 26. prosinca 2009.: NOVI KOD! Postavljeno je tamo gdje je bio stari kôd. Veliko hvala Jakovu na pojednostavljenju. Zaista dobro radi. Evo ga. Hvala na čitanju i ne zaboravite glasovati! #include #include #include // Postavlja ili briše bitove u registrima #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; while (x <kašnjenje) {x ++; }} void initMatrix () {DDRD = 0xFF; // Zelena kontrola DDRB = 0xFF; // Crveno upravljanje DDRA = 0xE0; // Kontrola tla} void matrixRowDraw (char zelena maska, char redmask, char stupac) {matrixX (stupac); int i = 0; za (i = 0; i <8; i ++) {matrixGY (zelena maska & (1 << i)); matrixRY (crvena maska & (1 << i)); _odgoda_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; while (bit_is_clear (ADCSRA, ADIF)); povrat ADCH; } char adcAvg (char chan, char avgnum) // Samo prosječno do 256 uzoraka {int i = 0; nepotpisani int ukupno = 0; za (i = 0; i <avgnum; i ++) {ukupno+= adcGet (chan); } povrat ukupno/avgnum; } int main () {initMatrix (); adcInit (); while (1) {while (adcAvg (3, 50)> 0x45 & adcAvg (2, 50)> 0x70) // Vrijednosti šesterokutnika ovdje treba promijeniti ovisno o postavkama korisnika za određivanje osjetljivosti fleks senzora. {if (adcAvg (1, 50)> 0x4F) {matrixRight (); } if (adcAvg (1, 100) <0x4F) {matrixLeft (50); }}} return 0; } Posebno zahvaljujem Chamberlainima, mojim roditeljima i prijateljima koji su pomogli.

Finalist na natjecanju Domaći praznici

Preporučeni: