Indholdsfortegnelse:

Programmerbar LED: 6 trin (med billeder)
Programmerbar LED: 6 trin (med billeder)

Video: Programmerbar LED: 6 trin (med billeder)

Video: Programmerbar LED: 6 trin (med billeder)
Video: Елизавета Туктамышева - как живёт последняя Императрица и сколько она зарабатывает 2024, Juli
Anonim
Programmerbar LED
Programmerbar LED

Inspireret af forskellige LED Throwies, blinkende LED'er og lignende instruktioner ville jeg lave min version af en LED, der blev styret af en mikrokontroller. Ideen er at gøre LED -blinkende sekvens omprogrammerbar. Denne omprogrammering kan udføres med lys og skygge, f.eks. du kan bruge din lommelygte. Dette er min første instruktion, eventuelle kommentarer eller rettelser er velkomne. Opdatering 2008-08-12: Der er nu et sæt tilgængeligt i Tinker Store. Her er en video af omprogrammering af det. Beklager kvaliteten.

Trin 1: Sådan fungerer det

En LED bruges som output. Som input brugte jeg en LDR, en lysafhængig modstand. Denne LDR ændrer sin modstand, da den modtager mere eller mindre lys. Modstanden bruges derefter som analog indgang til mikroprocessorerne ADC (analog digital converter).

Controlleren har to funktionsmåder, den ene til optagelse af en sekvens, den anden til afspilning af den optagede sekvens. Når controlleren bemærker to ændringer i lysstyrken inden for et halvt sekund (mørk, lys, mørk eller omvendt), skifter den til optagelsestilstand. I genkodningstilstand måles LDR -input flere gange i sekundet og gemmes på chippen. Hvis hukommelsen er opbrugt, skifter controlleren tilbage til afspilningstilstand og begynder at afspille den optagede sekvens. Da hukommelsen til denne lille controller er meget begrænset, 64 bytes (ja, bytes!), Er controlleren i stand til at optage 400 bit. Det er plads nok i 10 sekunder med 40 prøver i sekundet.

Trin 2: Materialer og værktøjer

Materialer og værktøjer
Materialer og værktøjer
Materialer og værktøjer
Materialer og værktøjer

Materialer- 2 x 1K modstand- 1 x LDR (lysafhængig modstand), f.eks. M9960- 1 x Lavstrøm LED, 1,7 V, 2ma- 1 x Atmel ATtiny13v, 1KB flash-RAM, 64 Bytes RAM, 64 Bytes EEPROM, 0-4MHz@1,8-5,5V- 1 x CR2032, 3V, 220mAhVærktøjs- loddejern - loddetråd- brødbræt- AVR programmerer- 5V strømforsyning- multimeter Software- Eclipse- CDT plugin- WinAVRCosts samlet set bør være under 5 $ uden værktøjerne. Jeg brugte ATtiny13v, fordi denne version af denne controller -familie kan køre på 1,8V. Det gør det muligt at køre kredsløbet med et meget lille batteri. For at få det til at køre i meget lang tid, besluttede jeg at bruge en lavstrøm -LED, der når fuld lysstyrke allerede ved 2ma.

Trin 3: Skemaer

Skemaer
Skemaer

Nogle kommentarer til skematisk. Nulstillingsindgangen er ikke tilsluttet. Dette er ikke bedste praksis. Bedre ville være at bruge en 10K modstand som pull up. Men det fungerer fint for mig uden, og det sparer en modstand. For at holde kredsløbet så enkelt som muligt brugte jeg den interne oscillator. Det betyder, at vi gemmer en krystal og to små kondensatorer. Den interne oscillator lader controlleren køre med 1,2 MHz, hvilket er mere end nok hastighed til vores formål. Hvis du beslutter dig for at bruge en anden strømforsyning end 5V eller for at bruge en anden LED, skal du beregne modstanden R1. Formlen er: R = (Strømforsyning V - LED V) / 0,002A = 1650 Ohm (Strømforsyning = 5V, LED V = 1,7V). Ved hjælp af to lavstrøm -LED'er i stedet for en ser formlen sådan ud: R = (Strømforsyning V - 2 * LED V) / 0,002A = 800 Ohm. Bemærk, at du skal justere beregningen, hvis du vælger en anden type LED. Værdien af modstanden R2 afhænger af den anvendte LDR. 1KOhm virker for mig. Du vil måske bruge et potentiometer til at finde den bedste værdi. Cicuiten skal være i stand til at registrere lysændringer i normalt dagslys. For at spare strøm er PB3 kun sat til høj, hvis der foretages en måling. Opdatering: skematikken var misvisende. Nedenfor er den korrekte version. Tak, dave_chatting.

Trin 4: Saml på et prototypebræt

Saml på et prototypebræt
Saml på et prototypebræt
Saml på et prototypebræt
Saml på et prototypebræt

Hvis du kan lide at teste dit kredsløb, er et brødbræt meget praktisk. Du kan samle alle dele uden at skulle lodde noget.

Trin 5: Programmer kredsløbet

Programmer kredsløbet
Programmer kredsløbet
Programmer kredsløbet
Programmer kredsløbet

Controlleren kan programmeres på forskellige sprog. Mest anvendte er Assembler, Basic og C. Jeg brugte C, da den matcher mine behov bedst. Jeg var vant til C for ti år siden og var i stand til at genoplive noget af kendskabet (tja, kun nogle …). For at skrive dit program anbefaler jeg Eclipse med CDT -pluginet. Få formørkelse her https://www.eclipse.org/ og plugin'et her https://www.eclipse.org/cdt/. For at kompilere C -sprog til AVR -mikrokontrollere skal du have en cross compiler. Heldige som vi er, findes der en havn i den berømte GCC. Det kaldes WinAVR og kan findes her https://winavr.sourceforge.net/. En meget god vejledning i, hvordan man programmerer AVR-controllere med WinAVR er her https://www.mikrocontroller.net/articles/AVR-GCC- Tutorial. Beklager, det er på tysk, men du finder muligvis tusinder af selvstudiesider om dette emne på dit sprog, hvis du søger efter dem. Efter at have samlet din kilde, skal du overføre hex -filen til controlleren. Det kan gøres ved at forbinde din pc til kredsløbet ved hjælp af ISP (i systemprogrammerer) eller ved hjælp af dedikerede programmører. Jeg brugte en dedikeret programmør, da det gør kredsløbet lidt lettere ved at gemme nogle ledninger og et stik. Ulempen er, at du skal skifte controlleren mellem kredsløbet og programmøren hver gang du vil opdatere din software. Min programmør kommer fra https://www.myavr.de/ og bruger USB til at oprette forbindelse til min notebook. Der er mange andre rundt, og du kan endda bygge det selv. Til selve overførslen brugte jeg et program ved navn avrdude, som er en del af WinAVR -distributionen. Et eksempel på en kommandolinje kan se sådan ud:

avrdude -F -p t13 -c avr910 -P com4 -U flash: w: flickled.hex: iVedhæftet kan du få kilden og den kompilerede hex -fil.

Trin 6: Lodning

Lodning
Lodning

Hvis dit kredsløb fungerer på brødbrættet, kan du lodde det.

Dette kan gøres på et printkort (printet cicuit board), på et prototype board eller endda uden et board. Jeg besluttede at gøre det uden, da kredsløbet kun består af få komponenter. Hvis du ikke er bekendt med lodning, anbefaler jeg, at du først søger efter en lodningstutorial. Mine loddeevner er lidt rustne, men jeg tror, du forstår ideen. Jeg håber du nød det. Alex

Anbefalede: