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, Novembar
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 zaokreta, kako bi se povećala vidljivost noću. Trebao bi biti lagan, jednostavan za upotrebu i integriran sa postojećim pokretima signalizacije (minimalno prilagođavanje metode signala (ne morate pritisnuti dugme, to ide samo kada signalizirate)). Ovo bi bio odličan poklon za praznike.

Napomena: Ovo 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 slike svog proizvoda! Evo videa: A evo i moje slike:

Korak 1: Dijelovi

Delovi
Delovi

x1 ATmega 32L 8PU (www.digikey.com) x1 40-pinski 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 ohmskih i 10k 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 ugao (www.sparkfun.com) x1 LM7805 (www.digikey.com) x2 8 -polne utičnice (Nabavio sam ga u Radio Shacku) x1 9v baterija x1 nožna palica za pričvršćivanje velcrox1 biciklističke rukavice sa punim prstima x1 kalem od poliesterskog konca x1 programator (imam ovaj) x1 skidač žice i clipx1 multimetar 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 da 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 sa zajedničkim jastučićem na vrhu za spajanje na uzemljenje. Zatim dodajte LED niz i zalemite ga. Trebalo bi biti što je moguće bliže ivici ploče s dva stanova, a YS prema suprotnoj strani. Igla u donjem lijevom kutu je iglica 1. (Označena je i na slici.) Zatim dodajte dvije 8 -polne utičnice jednu preko druge kako biste formirali jednu 16 -polnu utičnicu. Pazite da imate jedan razmak s lijeve strane, a zatim ga zalemite. Zatim podijelite muški i ženski zaglavlje na 10 i 11 igličnih dijelova. Trebat će vam dvostruko više ženskih zaglavlja. Lemite one unutra kako se vidi na fotografiji. Što se tiče muških zaglavlja, morate pomaknuti iglu tako da ima jednaku količinu 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 prave 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 izvoda 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 funkcionira 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 do nas sa shematskim pregledom podatkovne tablice za niz i 74138.

Korak 5: Napunite dno

Napunite dno
Napunite dno
Napunite dno
Napunite dno
Napunite dno
Napunite dno
Napunite dno
Napunite 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 gornjem lijevom dijelu, ostavljajući jedan red prostora na lijevoj strani. (Pogledajte sliku br. 1) Lemite to unutra, a zatim postavite zaglavlja. Najlakši način da to učinite 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 sve učinili 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 svoju pričvrstio kroz rupu u metalnom hladnjaku vijkom i maticom. Hladnjak je još jedan način za uzemljenje čipa i pričvršćivanje pričvršćivanjem na ploču osigurava čvrst kontakt sa uobičajenom vezom. Ovo je povezano sa dnom, kao i sa vrhom, jer su oboje povezani metalnim rastojanjima. Međutim, ako ne koristite zajedničku vezu za masu, NE pričvršćujte hladnjak na ploču jer hladnjak služi kao uzemljenje i vjerojatno ćete nešto spojiti. Sljedeća žica u kopči za bateriju. Crvena prelazi na iglu na lijevoj strani (S hladnjakom prema gore i iglicama prema dolje) crna 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 ćete vjerojatno htjeti u svoj dizajn ugraditi 6 -pinsko (3x2) zaglavlje. Međutim, ako imate adapter poput mene, evo što sam učinio. Uzeo sam zaglavlje pod pravim uglom i žensko zaglavlje i lemio ih zajedno (Slika #3). Zatim sam ga spojio 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. Pokrenuo 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 se onog zaista zabavnog koraka u kojem morate proći preko 30 žica kako biste LED niz radili? Sada to možete učiniti ponovo! 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 akcelerometar

Savitljivi senzori i akcelerometar
Savitljivi senzori i akcelerometar
Savitljivi senzori i akcelerometar
Savitljivi senzori i akcelerometar
Savitljivi senzori i akcelerometar
Savitljivi senzori i akcelerometar

Prvo ćemo se pozabaviti fleks senzorima, ali vi ste na domaćem planu što se hardvera tiče. Mislim da slike ispod objašnjavaju šta treba učiniti. Spojite jedan pin na +5v, drugi na treći ili četvrti pin sa vrha na desnoj strani AVR -a (mikrokontroler u srcu 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 sa pina na senzoru koji ide do AVR -a na masu (pogledajte slike # 10 i 11). Koristio sam 10k. Time se dijeli napon koji ide prema AVR -u, što praktično udvostručuje osjetljivost senzora. A sada 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 koristiti 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 ženski 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 podešeni da dodate IC (integrirana kola) i uključite ga.

26. prosinca 2009.: Otkrio sam da je način na koji sam montirao 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 fotografiji ispod.

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 vjerovatno 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 bih 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 kada sve sjedne na svoje mjesto, pritegnite matice na donjoj ploči tako da su dvije ploče čvrsto pričvršćene zajedno. Zatim ćete programirati AVR. Ako to nikada prije niste učinili, brzo Google pretraživanje daje mnoštvo rezultata. Na vašem mjestu bih stavio svoj AVR na osnovnu ploču i program prije nego što ga pokušate na svom trudu. Napisao sam jednostavan program za izlaz informacija primljenih od fleks senzora u LED niz. Ovo bi vam trebalo dati osnovnu ideju o tome šta radi, a šta 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; _delay_ms (1); PORTD = 0x00; ADMUX = 0b01100010; ADCSRA | = 0b01000000; while (bit_is_clear (ADCSRA, ADIF)); PORTA = 0b11100000; PORTB = ADCH; _delay_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 lokalnu trgovinu bicikala i nabavio sam najjeftiniju rukavicu s punim prstima koju sam mogao pronaći. Pun prst je neophodan jer u protivnom senzore savijanja ne možete dobro pričvrstiti. Zatim sam otišao u trgovinu tkaninama i nabavio poliesterski konac i čičak. Obukao sam rukavicu i stavio kolo na ruku. Dio pozicioniranja je udobnost, ali drugi dio su fleks senzori. Trebali bi se spuštati po sredini dva prsta. Sašio sam petlje oko tri držača da držim glavnu ploču (vidi sliku #2), a zatim sam olabavio petlje 3/4 do kraja do svakog prsta senzora savijanja (#3 i 4). Pazite da ne zašijete rukavicu. Zatim sam zalijepio komad čička na stranu palca kako bih držao bateriju. Nakon testiranja sam otkrio da se i ovo zaista isplati prišiti jer štap ne traje predugo. Zatim sam stavio petlju čičak trake oko 9v (Slika 5). Čini se da ovo postavljanje funkcionira 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 dobre. Kada završite sa svojim projektom, objavite fotografije gotovog proizvoda ispod. Volio bih vidjeti što ste smislili za priključivanje kola!

Korak 10: Pravi kod

Pravi kod
Pravi kod

Hvala vam što ste do sada bili uz mene. Imajte na umu da moj kôd nije savršen. Otkrio sam da je potrebno malo učenja da bi signal radio kako treba. I dalje ću se truditi da usavršim svoj sistem, a stranicu ću ažurirati novim kodom kad je napišem. 26. prosinca 2009.: NOVI KOD! Postavljeno je tamo gde je bio stari kod. Veliko hvala Jakovu na pojednostavljenju. Zaista dobro radi. Evo ga. Hvala na čitanju i ne zaboravite glasati! #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; // Crvena kontrola 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)); _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); } 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)); return 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) // Šesterokutne vrijednosti 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 hvala Chamberlainima, mojim roditeljima i prijateljima koji su pomogli.

Finalist na takmičenju Domaći praznici

Preporučuje se: