Innholdsfortegnelse:

Interaktivt omgivelseslys: 8 trinn
Interaktivt omgivelseslys: 8 trinn

Video: Interaktivt omgivelseslys: 8 trinn

Video: Interaktivt omgivelseslys: 8 trinn
Video: 8 инструментов в Excel, которыми каждый должен уметь пользоваться 2024, Juli
Anonim
Interaktivt omgivelseslys
Interaktivt omgivelseslys
Interaktivt omgivelseslys
Interaktivt omgivelseslys
Interaktivt omgivelseslys
Interaktivt omgivelseslys

Dette er min første instruks! Vær så snill å bære med meg mens jeg sliter med å skrive skikkelig engelsk. Rett meg gjerne! Jeg startet dette prosjektet like etter at "Let it glow" -konkurransen startet. Jeg skulle ønske jeg hadde laget mye mer og fullført det jeg ønsket å lage. Men mellom skole og jobb har jeg ikke hatt så mye tid igjen som jeg ønsket. Likevel legger jeg igjen en rapport om mine eksperimenter her som en instruks, så hvem som helst kan prøve å lage det jeg gjorde. Dette instruerbare er ikke ment å tjene som en guide og lære hvordan du lager denne kontraheringen. Det er ikke en guide for nybegynnere innen elektronikk. Det er mer som å dele en idé og et mål jeg ønsker å forfølge. Hvis du er nybegynner/fullstendig uvitende innen elektronikk og ønsker å lage noe slikt, beklager jeg! Men vi kan prøve å alltid hjelpe deg. Se det siste trinnet. Vi har allerede sett mange omgivelseslysprosjekter. De fleste av dem bruker RGB -lysdioder: - For å belyse et rom med en farge, sette en atmosfære som passer ditt humør - For å lage lyseffekter fra fargen på TV/Monitor eller fra lyd. Det er til og med noen få i instructables.com Relatert: DIY Ambient Light Systems Light Bar Ambient Lighting Bygge dine egne omgivende fargebelysningsbjelker Ved å bruke denne konkurransen som en unnskyldning startet jeg et prosjekt som har tenkt meg en stund. Jeg har alltid ønsket å lage noe lignende til disse omgivende lysene og fylle veggene i rommet mitt med RGB -lysdioder. Men tar det et skritt videre, og gjør dem alle og alle kontrollerbare. Dette prosjektet vil forhåpentligvis resultere i et elektronisk sett med åpen kildekode for hobbyfolk og elektroniske tinkerere, slik at maskinvare/programvare kan hackes og sensorisk integrasjon. Her er en liten forhåndsvisning av det jeg har laget:

Trinn 1: Utforske ideen

Jeg vil være i stand til å fylle veggene i rommet mitt med RGB -lysdioder, som styrer farge og lysstyrke for hver LED. Jeg kommer til å bruke en mikrokontroller for brukervennlighet og fleksibilitet. Dessverre kan jeg ikke kontrollere hundrevis av lysdioder med de få pinnene som er tilgjengelige på mikrokontrollere. Det ville til og med være vanskelig å kode kontrollen for så mange lysdioder. Så jeg bestemte meg for at jeg skulle dele alle lysdiodene i flere mindre stolper, og for hver stolpe kunne jeg bruke en mikrokontroller. Deretter ville jeg bruke kommunikasjonskapasiteten til mikrokontrollere til å dele informasjon mellom dem. Denne informasjonen kan være fargen og lysstyrken til lysdioder, mønstre/fargesekvenser og sensorisk informasjon. For hver stolpe bestemte jeg meg for å bruke 16 RGB -lysdioder. Dette resulterer i en verken for stor eller liten bar. På denne måten bruker jeg et akseptabelt antall ressurser for hver LED, og reduserer kostnadene for hver bar. 16 RGB -lysdioder er imidlertid 48 lysdioder (3*16 = 48) for mikrokontrolleren å kontrollere. Med tanke på kostnader bestemte jeg meg for å bruke den billigste mikrokontrolleren jeg kan bruke. Dette betyr at mikrokontrolleren bare vil ha opptil 20 I/O -pinner, ikke nok for 48 lysdioder. Jeg ønsker ikke å bruke charlieplexing eller noen form for tidsdeling, siden målet med prosjektet er å belyse et rom. alternativet jeg kunne tenke meg er å bruke et slags låst skiftregister! Gjenopptar:- Lag og interaktivt omgivelseslys- Lag en standard bar med kontrollerbare lysdioder- Mulighet for å koble flere barer for å fylle et rom- Tillat brukertilpasning/konfigurasjon og sensorisk integrasjon

Trinn 2: Maskinvare

Maskinvare
Maskinvare
Maskinvare
Maskinvare

Som sagt i forrige trinn, ønsker jeg å lage flere barer for å belyse ett rom. Dette tenker på kostnadsspørsmålet. Jeg skal prøve å gjøre hver bar til den mest kostnadseffektive måten som er mulig. Mikrokontrolleren jeg brukte var en AVR ATtiny2313. Disse er ganske billige, og jeg hadde noen liggende. ATtiny2313 har også ett Universal Serial Interface og ett USART -grensesnitt som vil komme til nytte i de følgende trinnene. Jeg hadde også tre MCP23016 - I2C 16bit I/O -portekspander liggende, akkurat den riktige tellingen! Jeg brukte hver portutvidelse til å kontrollere én farge på de 16 lysdiodene. Lysdiodene … Dessverre var de billigste jeg fant. De er 48 røde, grønne og blå ~ 10000mcd 5mm med 20 graders vinkel. Dette burde ikke ha betydning for nå, siden dette bare er en prototype. Til tross for dette er resultatet ganske bra! Jeg kjører mikrokontrolleren på 8 MHz. I2C -bussen er klokket til 400 kHz. LED -koblingsfrekvensen er omtrent 400 Hz. På denne måten, hvis jeg er i stand til å kjøre 48 lysdioder uten å skyve det til det ytterste, får jeg plass til mer senere!

Trinn 3: Montering

montering
montering
montering
montering
montering
montering
montering
montering

Etter å ha designet kretsen, bygde jeg den i flere brødbrett, for prototyping. Etter flere timer med kutting av ledninger og montering av kretsen, fikk jeg dette resultatet: Ett gigantisk brødbrett med 48 lysdioder og tonnevis av ledning!

Trinn 4: Kontroll?

Kontroll?
Kontroll?

Dette er den mest utfordrende delen av prosjektet. Jeg ønsket å lage en kontrollalgoritme generisk nok til å håndtere mønstre/sekvenser og også kontrollere lysstyrken og fargen på hver LED. For å kontrollere lysdiodene må jeg sende til MCP23016 en ramme på 4byte (1 byte = 8 bits). En byte med adressen til IC -korrespondenten til fargen, 1 byte med kommandoen "skriv" og 2 byte med verdien av 16bits (LED). IC er koblet til lysdiodene som "synke", noe som betyr at en logisk verdi 0 på pinnen vil lyse LED. Og nå den utfordrende delen, hvordan lage PWM -kontroll for 48 lysdioder? La oss studere PWM for en LED! PWM forklarte @ Wikipedia. Hvis jeg vil at lysstyrken til LED -en skal være 50%, er min PWM -verdi 50%. Dette betyr at LED -lampen i løpet av en tidsperiode skal være på samme tid som slukket. La oss ta en periode på 1 sekund. PWM på 50% betyr at på dette 1 sekund er på -tiden 0,5 sekunder og av -tiden er 0,5 sekunder. PWM på 80%? 0,2 sekunder av, 0,8 sekunder på! Enkelt, ikke sant? I digital verden: Med en periode på 10 klokkesykluser betyr 50% at lysdioden er på i 5 sykluser, og for ytterligere 5 sykluser er LED -en av. 20%? 2 sykluser på, 8 sykluser av. 45%? Vel, vi kan egentlig ikke få 45%… Siden perioden er i sykluser og vi bare har 10 sykluser, kan vi bare dele PWM i trinn av 10%. Dette betyr at utviklingen av tappen bør være for 50%: 1, 1, 1, 1, 1, 0, 0, 0, 0, 0; Eller til og med 1, 0, 1, 0, 1, 0, 1, 0, 1, 0; I programmeringen kan vi lage denne sekvensen med å slå på og av en matrise. For hver syklus vi sender ut til pinnen, er verdien av indeksen syklusen var. Gjorde jeg fornuftig så langt? Hvis vi vil lage LED0 50%og LED1 20%, kan vi legge til begge matriser. For å kjøre LED0 -pinnen: 1, 1, 1, 1, 1, 0, 0, 0, 0, 0; For kjøring av LED1 -pinnen: 2, 2, 0, 0, 0, 0, 0, 0, 0, 0; resulterer i LED0 +LED0: 3, 3, 1, 1, 1, 0, 0, 0, 0, 0; Ved å sende ut denne sekvensen med tall i portutvideren IC, ville vi få LED0 med 50% lysstyrke og LED1 med 20% !! Enkelt for 2 lysdioder, ikke sant? Nå må vi lage dette for 16 lysdioder, for hver farge! For hver av disse matrisene har vi en kombinasjon av lysstyrke for hver farge (16 lysdioder) Hver gang vi ønsker en ny kombinasjon av farger, må vi endre denne matrisen.

Trinn 5: Gjør det enkelt

Gjør det enkelt!
Gjør det enkelt!
Gjør det enkelt!
Gjør det enkelt!

Det forrige trinnet er for mye arbeid for å lage en enkel sekvens … Så jeg bestemte meg for å lage et program, der vi forteller fargene på hver LED i ett trinn i sekvensen, og vi får de tre matrisene i trinnet. Jeg laget dette programmet i LabView på grunn av tidsbegrensninger.

Trinn 6: Første eksperimenter

Første eksperimenter
Første eksperimenter

Når vi laster inn flere trinn i mikrokontrolleren, får vi noe slikt: Beklager den dårlige kvaliteten på videoene! Jeg definerte maksimalt antall trinn i en sekvens til 8, og begrenset PWM til 20% hopp. Denne beslutningen er basert på hva slags kontroll jeg bruker og hvor mye EEPROM ATtiny2313 har. I disse eksperimentene prøvde jeg å se hva slags effekter jeg kunne gjøre. Jeg må si at jeg er fornøyd med resultatet!

Trinn 7: Sanntidskontroll

Sanntidskontroll
Sanntidskontroll
Sanntidskontroll
Sanntidskontroll
Sanntidskontroll
Sanntidskontroll

Som nevnt i forrige trinn, ønsker jeg å kommunisere med alle mikrokontrollerne som kontrollerer lysdiodene i rommet mitt. Så jeg brukte det tilgjengelige USART -grensesnittet i ATtiny2313 og koblet det til datamaskinen min. Jeg laget også et program i LabView for å kontrollere LED -linjen. I dette programmet kan jeg fortelle mikrokontrolleren hvor lang sekvensen er, fargen på hver LED og tiden mellom trinnene i en sekvens. I den neste videoen skal jeg demonstrere hvordan jeg kan endre fargen på lysdioder og definere sekvenser.

Trinn 8: Konklusjoner

Konklusjoner
Konklusjoner
Konklusjoner
Konklusjoner
Konklusjoner
Konklusjoner
Konklusjoner
Konklusjoner

Jeg tror jeg var vellykket i denne første tilnærmingen til prosjektet mitt. Jeg er i stand til å kontrollere 16 RGB -lysdioder med lite ressurser og begrensninger. Det er mulig å kontrollere hver LED separat, og skape en ønsket sekvens.

Fremtidig arbeid:

Hvis jeg får positive tilbakemeldinger fra folk, kan jeg videreutvikle denne ideen og lage et komplett DIY Electronics Kit med kretskort og monteringsinstruksjoner.

For min neste versjon skal jeg: -Endre mikrokontrolleren til en med ADC -Endre MCP23016 for en annen type parallellutgang som kan synke mer strøm fra lysdioder -Lag programvare for åpen kildekode for å kommunisere med mikrokontrolleren og kontrollere lysdiodene -Utvikle kommunikasjonen mellom flere mikrokontrollere.

Har du noen forslag eller spørsmål? Eller legg igjen en kommentar!

Finalist i Let It Glow!

Anbefalt: