Indholdsfortegnelse:
- Trin 1: Nødvendige materialer
- Trin 2: Miljøopsætning
- Trin 3: Designoversigt
- Trin 4: Oprettelse af tilpassede patches fra XOD Core Library
- Trin 5: Oprettelse af brugerdefinerede patches ved hjælp af C ++
- Trin 6: Konstruktion
- Trin 7: Test, del 1
- Trin 8: Test, del 2
- Trin 9: Tillæg om Fuzzy Logic
Video: XOD-drevet genopladelig sollampe: 9 trin (med billeder)
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
Der er billige solhave-/gangbro -lamper tilgængelige på de fleste hjemmevarer og isenkræmmere. Men som det gamle ordsprog siger, får du normalt, hvad du betaler for. De sædvanlige opladnings- og belysningskredsløb, de bruger, er enkle og billige, men det lyseffekt, du får, er alt andet end imponerende (og knap nok til, at alle, der bruger din gangbro, kan se, hvor de skal hen!)
Dette er mit forsøg på at designe et off-grid belysningsmodul, der er en betydelig forbedring, mens det stadig er relativt billigt at lave. Ved at give den nogle "hjerner". XOD.io er en ny IDE kompatibel med Arduino integrerede udviklingsplatform, hvor du grafisk kan "skrive" kode. Miljøet transpilerer din grafiske skitse til moderne C ++, som er bemærkelsesværdigt effektiv til at generere kompakt kode og genererer kilde, der er fuldt kompatibel med Arduino IDE -bestanden uden at kræve yderligere eksterne afhængigheder. På den måde kan selv små, billige mikrokontrollere med begrænsede program- og datalagringsressourcer bruges til at påtage sig komplekse opgaver.
Dette projekt viser, hvordan to Arduino-kompatible ATTiny85 mikrokontrollere, der arbejder sammen, kan bruges til at styre lampens strømbehov. Den første processor håndterer registreringsmiljødata fra den eksterne hardware, og den anden forsøger at høste mest energi fra solen, den kan i løbet af dagen, og derefter styre belysningen af en LED med høj effekt, da et opladningsbatteri aflades om natten. Den anden processor udfører sit job via en kompakt implementering af "fuzzy logic" kontrol. Softwaren til begge chips blev udelukkende udviklet inden for XOD -miljøet.
Trin 1: Nødvendige materialer
Arduino IDE, nyeste version, med ATTinyCore -udvidelse installeret fra "Boards" -administratoren
Sparkfun USBTinyISP ATTiny programmerer, 11801 eller tilsvarende Sparkfun produktside
Pololu justerbar lavspændings boost-konverter med nedlukning, U1V11A eller tilsvarende Pololu produktside
Høj effekt hvid eller RGB LED med køleplade, fælles anode, Adafruit 2524 eller tilsvarende Adafruit produktside
Mikrochip ATTiny85 i 8-benet DIP-pakke, 2 Mouser produktside
8 pin DIP IC stik, 2
Bulklagerkondensator, 16 v 220 uF
Udgangskondensator, 6.3v 47uF
Strømbegrænsende modstande, 50 ohm 1/4 watt
i2c pull-up modstande, 4,7k, 2
Panelspændingssensorafskiller modstande, 1/4 watt, 100k, 470k
Strømfølsom modstand, 10 ohm 1⁄2 watt 1% tolerance
Bypass -kondensatorer, 0.1uF keramik, 2
2 3,7 v 100mAh lithium-ion genopladeligt batteri, PKCELL LP401 eller tilsvarende
Tønde stik input jack til panel, 1
Mini terminalblokke 3”x3” loddepudeplade og tynd solid-core wire til tilslutning
Et oscilloskop, multimeter og bænkforsyning vil næsten helt sikkert være påkrævet til test
Trin 2: Miljøopsætning
XOD-miljøet understøtter ikke ATTiny-serien af processorer ud af kassen, men ved hjælp af et par tredjepartsbiblioteker fra Arduino-universet er det ligetil at tilføje support til denne serie AVR'er. Det første trin er at installere "ATTinyCore" -biblioteket fra Arduino IDEs "Værktøjer → Board → Board Manager" rullemenu. Sørg for, at indstillingerne som vist i det medfølgende billede er korrekte - husk, at du skal trykke på "Burn bootloader" for at ændre sikringerne for bruningsspænding og urhastighed, før du uploader nogen kode!
Kildekoden til dette bibliotek er tilgængelig på:
Et andet nyttigt bibliotek at have fra depotet er "FixedPoints", som er en kompileringstid-implementering af fast punktmatematik til Arduino-understøttede processorer. ATTiny har begrænset SRAM og programhukommelse, og det hjælper meget med at krympe den endelige skitsestørrelse for at bruge et 2 byte heltal til generel datalagring, frem for en floating point -type, som kræver 4 bytes på AVR. Udførelseshastighed bør også forbedres, da ATTiny ikke har en hardware-multiplikationsenhed, meget mindre hardware-flydende punkt!
Kildekode er tilgængelig på:
Tutorial om hvordan man opretter, transpilerer og implementerer XOD grafiske skitser på: https://github.com/Pharap/FixedPointsArduino hjælper meget med at forstå, hvordan de medfølgende kildefiler blev oprettet.
Trin 3: Designoversigt
På kortet er to ATTiny85 -processorer forbundet via en i2c -grænseflade og bruges sammen til at styre sensing af solpanelets spænding, strøm der strømmer ind i batteriet fra boost -omformeren, mens panelet er oplyst, batterispændingen og batteriet temperatur.
Boost-konverteren er et hyldemodul baseret på en Texas Instruments TPS6120 IC, som kan tage en indgangsspænding så lav som 0,5 volt og booste den til alt fra 2 volt til 5 volt. Sensorkernen består af flere funktionelle blokke. Master -uret begynder at køre, så snart der tilføres boost -omformeren strøm fra solpanelindgang. Dette starter skitsen, og den første ting er at afgøre, om panelet er oplyst nok til at levere batteristrøm til batteriet.
Solpanelets spænding passeres gennem to digitale filtre, og hvis det er over en vis tærskel, bestemmer systemet, at panelet er oplyst og lukker hoveduret ind i den strømfølsomme skærm. Dette er en analog til digital konverteringskanal for chippen, konfigureret differentielt, som registrerer spændingen over en 10 ohm 1% tolerancemodstand, der er forbundet i serie mellem boost -konverterens output og batteriindgangen. Når panelet ikke er oplyst, sender denne ATTiny et signal til den anden ATTiny, der fortæller den at overvåge LED -strøm i stedet for opladningseffekt, og slå boost -konverteren fra og isolere indgangen, så batteriet ikke sender strøm tilbage gennem panelet.
Den anden ATTiny -kerne er, hvor LED -controlleren og batteriopladningsovervågningssystemet udføres. Panelspænding, batterispænding og batteriladestrømdata sendes til denne kerne til behandling via et fuzzy-logisk netværk, der forsøger at generere et passende PWM-signal til at gælde for SHTDN-stiften og derved kontrollere mængden af strøm, der sendes til batteriet at oplade den, når den er oplyst-en grundlæggende form for maksimal power-point-tracking (MPPT.) Den modtager også et signal fra sensorkernen, der fortæller den, om den skal tænde eller slukke LED'en, afhængigt af output fra sensorkernen/ nat flip -flop.
Når LED'en er aktiv om natten, overvåger denne ATTiny de batterispændingsdata, der sendes til den fra sin kammerat og sin egen on-chip temperatursensor, for at få et groft skøn over, hvor meget strøm der skubbes ind i LED'en (batterispændingen falder og chiptemperaturen stiger med strømmen trukket ud af stifterne.) Det fuzzy-logiske netværk, der er forbundet med LED PWM-patchen, forsøger at tage en vurdering af, hvor meget batteristrøm der stadig er tilgængelig, og reducere LED-intensiteten, når batteriet er opbrugt.
Trin 4: Oprettelse af tilpassede patches fra XOD Core Library
Flere brugerdefinerede patchnoder blev brugt til dette design, hvoraf nogle let kan konstrueres helt ud fra inkluderede XOD -noder, og nogle som blev implementeret i C ++.
Den første af de to brugerdefinerede patchnoder på billederne en implementering af et eksponentielt glidende gennemsnitsfilter. Dette er et lavoverliggende lavpas digitalt filter, der bruges i serier i skitsen, en gang til at filtrere den indgående solpanels spænding til den logiske kerne og endnu en gang til at fodre aftrækkeren, der bestemmer langsigtet omgivelsesbelysning. Se Wikipedia -indlægget om eksponentiel udjævning.
Nodestrukturen i billedet er blot en direkte grafisk repræsentation af overførselsfunktionen i artiklen, forbundet sammen ved hjælp af links fra de relevante indgange til udgange. Der er en udsættelsesnode fra biblioteket, som gør det muligt at oprette en feedback -loop (XOD advarer dig, hvis du opretter en feedback -loop uden at indsætte en forsinkelse i loop, som beskrevet i XOD -udførelsesmodellen.) Med den detalje taget hånd om patch fungerer godt, det er simpelt.
Den anden brugerdefinerede patchnode er en variation af lager flip-flop inkluderet i XOD, der fodres med den filtrerede panelspænding. Det låser højt eller lavt afhængigt af om indgangssignalet er over eller under en bestemt tærskel. Cast -noder bruges til at konvertere boolske outputværdier til pulsdatatypen for at udløse flip -floppen, da tilstanden overgår fra lav til høj. Designet af denne patchnode skal forhåbentlig være noget selvforklarende fra skærmbilledet.
Trin 5: Oprettelse af brugerdefinerede patches ved hjælp af C ++
For særlige krav, hvor nodefunktionen er nødvendig, ville være for kompleks til let at skildre grafisk, eller som er afhængige af Arduino-biblioteker, der ikke er hjemmehørende i Arduino-miljøet, gør XOD det let for dem med en vis C/C ++ viden at skrive bidder i små størrelser kode, der derefter kan integreres i en patch på samme måde som enhver anden brugeroprettet eller lagernode. Hvis du vælger "opret en ny patch" i filmenuen, oprettes et tomt ark til arbejde, og input- og outputnoder kan trækkes ind fra kernebibliotekets "noder" -afsnit. Derefter kan "ikke-implementeret-i-xod" -knuden trækkes ind, og når der klikkes på den, vises en teksteditor, hvor den nødvendige funktionalitet kan implementeres i C ++. Sådan håndteres intern tilstand og adgang til input- og outputporte fra C ++ - kode er dækket her.
Som et eksempel på implementering af brugerdefinerede patches i C ++ bruges to yderligere brugerdefinerede patches til driverkernen til at udarbejde et skøn over driverkerns forsyningsspænding og kernetemperatur. Sammen med sit fuzzy netværk tillader dette et groft skøn over den resterende batteristrøm, der er tilgængelig for at drive lysdioderne, når det er mørkt.
Temperatursensorplasteret fodres også med udgangssignalet fra forsyningsspændingssensoren for at opnå et bedre skøn - ved at registrere kernetemperatur kan vi få et groft skøn over, hvor meget strøm der forbrændes i lysdioderne, og kombineret med forsyningsspændingsaflæsning, når kører batteriet et yderligere groft skøn over, hvor meget batteristrøm der er tilbage. Det behøver ikke at være superpræcist; Hvis kernen "ved", at lysdioderne trækker meget strøm, men batterispændingen falder hurtigt, er det sandsynligvis sikkert at sige, at batteristrøm ikke vil vare meget længere, og det er tid til at slukke lampen.
Trin 6: Konstruktion
Jeg byggede projektet på et lille stykke prototypebord med kobberpuder til gennemgående huller. Brug af stikkontakter til IC'erne hjælper meget til programmering/ændring/test; USBTiny ISP fra Sparkfun har en lignende stikkontakt på sit bord, så programmering af de to chips består bare i at tilslutte programmereren til en PC USB -port, uploade den transponerede XOD -kode fra de medfølgende Arduino.ino -filer med de relevante kort og programmeringsindstillinger, og fjern derefter forsigtigt chipsene fra programmeringsstikket og sæt dem i protoboardstikkene.
Det Pololu TPS6120 -baserede boost -konvertermodul kommer på et riser board, der er loddet ind i protoboardet på pinhoveder, så det er muligt at spare plads ved at montere nogle komponenter nedenunder. På min prototype satte jeg de to 4,7k pullup modstande nedenunder. Disse er nødvendige for, at i2c -bussen mellem chipsene fungerer korrekt - kommunikation fungerer ikke rigtigt uden dem! På højre side af tavlen er indgangsstikket til solpanelets stik og inputlagerkondensatoren. Det er bedst at prøve at forbinde stikket og denne hætte direkte sammen via "kørsler" af loddetin, ikke tilslutningstråd, for at få en så lav modstand en vej som muligt. Kørsler af solid lodning bruges derefter til at forbinde lagerkondensatorens positive terminal direkte til indgangsspændingsterminalen på boostmodulet og boostmodulets jordstift direkte til donkraftens jordstift.
Til højre og venstre for stikkene til de to ATTinys er 0.1uF despike/deglitching kondensatorer. Disse komponenter er også vigtige for ikke at udelade, og de skal forbindes til IC'ernes strøm og jordstifter gennem en så kort og direkte vej som muligt. 10 ohm strømfølermodstanden er til venstre, denne er forbundet i overensstemmelse med output fra boost -omformeren, og hver side er forbundet til en sensorkernindgangsstift - disse ben er konfigureret til at fungere som en differentiel ADC til indirekte at måle strøm i batteriet. Forbindelser mellem IC-ben til i2c-bussen og til boost-konverterens lukkestift osv. Kan foretages ved hjælp af tilslutningstråd på undersiden af protoboardet, meget tynd solid-core tilslutningstråd fungerer godt til dette. Det gør ændringer lettere og ser også meget pænere ud end at løbe jumpere mellem hullerne på toppen.
LED-modulet, jeg brugte, var en trefarvet RGB-enhed, min plan var at have alle tre lysdioder aktive til at producere hvidt, når batteriet var næsten fuldt opladet, og langsomt falme den blå LED ud i gult, da opladningen var opbrugt. Men denne funktion mangler endnu at blive implementeret. En enkelt hvid LED med en strømbegrænsende modstand fungerer også OK.
Trin 7: Test, del 1
Efter programmering af begge ATTiny IC'er med de medfølgende skitsefiler via USB -programmereren fra Arduino -miljøet hjælper det med at teste, at de to kerner på prototypen fungerer korrekt, inden de forsøger at oplade batteriet fra solpanelet. Ideelt set kræver dette et grundlæggende oscilloskop, multimeter og bænkforsyning.
Den første ting at kontrollere er, at der ikke er nogen kortslutninger nogen steder på kortet, inden IC'erne, batteriet og panelet sættes i deres stikkontakter for at undgå mulig skade! Den nemmeste måde at gøre dette på er at bruge en bænkstrømforsyning, der kan begrænse dens udgangsstrøm til en sikker værdi i tilfælde af denne situation. Jeg brugte min bænkforsyning, der var indstillet til 3 volt og 100 mA grænse forbundet til solcellepanelets indgangsstik til de positive og negative strømforsyningsledninger. Med intet andet end de passive komponenter installeret, bør der i det væsentlige ikke være registreret strømforbrug på strømforsyningens nuværende skærm at tale om. Hvis der er betydelig strøm, eller forsyningen går i strømbegrænsning, er der gået noget galt, og tavlen bør kontrolleres for at sikre, at der ikke er fejlforbundne forbindelser eller kondensatorer med omvendt polaritet.
Det næste trin er at sikre, at boost -omformeren fungerer korrekt. Der er et skruepotentiometer på tavlen, hvor strømforsyningen stadig er tilsluttet, og fire af konverterens ben er tilsluttet korrekt, skal potentiometeret drejes med en lille skruetrækkerspids, indtil spændingen ved modulets udgangsterminal læser omkring 3,8 til 3,9 volt. Denne DC -værdi ændres ikke under drift, driverkernen styrer den gennemsnitlige udgangsspænding via pulserende modulets nedlukningspind.
Trin 8: Test, del 2
Næste ting at kontrollere er, at i2c communicaton fungerer OK, da kortet løber fra bænkstrøm, kan sensorkernen IC installeres. På et oscilloskop bør der være pulserende signaler på både pin 5 og pin 7 i den fysiske chip, denne i2c -driver på chippen forsøger at sende data til sin kammerat. Efter nedlukning af driverkernen kan installeres og forbindelsen kontrolleres med et oscilloskop igen, skulle der være en større sekvens af synlige impulser på begge linjer. Det betyder, at chipsene kommunikerer korrekt.
Det hjælper at have batteriet lidt opladet til den sidste fulde test. Bænkforsyningen kan også bruges til at opnå dette, med den nuværende grænse sat til omkring 50 mA og spændingen stadig ved 3,8 volt, hvilket efterlader LiPo -batteriet direkte forbundet i et par minutter.
Det sidste trin er at teste det fulde system - med alt tilsluttet, hvis panelet er dækket i ti eller 15 sekunder, skal lyset tændes ved at blive drevet via driverkernens PWM -udgang. Med panelet i stærkt sollys, skal batteriet oplades fra boost -konverterens output. Det fuzzy logiske netværk kan indirekte inspiceres for at se, om det fungerer korrekt ved at se på PWM -linjen, der driver boost -konverterens nedlukningspind; da belysningen stiger med batteri med lav opladningstilstand, bør pulsbredden øges, hvilket viser, at efterhånden som der bliver mere strøm fra sollys, signalerer førerkernen, at der skal sendes mere strøm til batteriet!
Trin 9: Tillæg om Fuzzy Logic
Fuzzy logic er en machine learning -teknik, der kan bruges til styring af hardwaresystemer, hvor der er usikkerhed i mange af systemets parametre, der styres, hvilket gør en eksplicit input til output -kontrolløsning for målet svært at skrive ned matematisk. Dette opnås ved at bruge logiske værdier, der falder et sted mellem 0 (falsk) og 1 (sand), udtrykke usikkerhed i en værdi, der mere ligner den måde, et menneske ville ("for det meste sandt" eller "ikke rigtig sandt") og tillade et gråt område mellem udsagn, der er 100% sande og 100% falske. Måden dette opnås på, er ved først at tage prøver af de inputvariabler, som en beslutning skal baseres på og "fuzzificere" dem.
Hjertet i ethvert fuzzy logic system er en "fuzzy associativ hukommelse." Dette minder om en matrix, hvor der for batteriets opladningskredsløb er gemt et 3x3 sæt værdier, der spænder mellem 0 og 1. Værdierne i matrixen kan groft sagt være forbundet med, hvordan et menneske ville ræsonnere om, hvad PWM -faktoren, der styrer SHTDN -stiften i boost -omformeren skal være, afhængigt af hvordan medlemsfunktionen ovenfor kvalificerer et givet sæt input. For eksempel, hvis panelets indgangsspænding er høj, men strømmen, der trækkes ind i batteriet, er lav, betyder det sandsynligvis, at der kan trækkes mere strøm, og PWM -indstillingen er ikke optimal og bør øges. Omvendt, hvis panelspændingen går lavt, men opladeren stadig forsøger at skubbe en stor strøm ind i batteristrømmen, vil det også være spildt, så det ville være bedst at reducere PWM -signalet til boost -omformeren. Når indgangssignalerne er "fuzzified" til et fuzzy sæt, multipliceres de med disse værdier, på samme måde som en vektor multipliceres med en matrix, for at generere et transformeret sæt, der er repræsentativt for, hvor tungt "viden" indeholdt celle af matrixen skal indregnes i den endelige kombinationsfunktion.
Brug af "ikke-implementeret-i-xod" -knuden, der tillader XOD-noder, der implementerer brugerdefineret funktionalitet, der er for kompliceret til at være rimelig at lave fra lagerblokkene, og lidt Arduino-stil C ++, den associative hukommelse, vægtningsfunktion og " fuzzifier "ligner de blokke, der er beskrevet i denne reference: https://www.drdobbs.com/cpp/fuzzy-logic-in-c/184408940 er ligetil at lave og meget lettere at eksperimentere med.
Anbefalede:
4 i 1 BOX (Solar Genopladelig Stun Gun, Power Bank, LED Light & Laser): 5 trin (med billeder)
4 i 1 BOX (Solar Genopladelig Stun Gun, Power Bank, LED Light & Laser): I dette projekt vil jeg tale om Sådan laver du 4 i 1 Solar Genopladelig Stun Gun, Power Bank, LED Light & Laser alt i en kasse. Jeg lavede dette projekt, fordi jeg vil tilføje alle mine ønskede enheder i kassen, det er som en overlevelsesboks, stor kapacitet
Lavteknologisk sollampe med genbrugte batterier: 9 trin (med billeder)
Lavteknologisk sollampe med genbrugte batterier: Denne vejledning giver dig mulighed for at lave en sollampe udstyret med en USB-oplader. Det bruger litiumceller, der genbruges fra en gammel eller beskadiget bærbar computer. Dette system, med en dag med sollys, kan oplade en smartphone fuldt ud og have 4 timers lys. Denne teknik
Genopladelig blå LED SAD Light Book: 17 trin (med billeder)
Genopladelig blå LED SAD Light Book: Blå lysterapi kan bruges til at forbedre humør, forbedre søvn, behandle jetlag, justere sengetid og øge energien. Lysterapi gavner elever, der starter tidligt i skole, når det stadig er mørkt. Denne kan passe i din rygsæk, er dæmpbar, har en adju
USB genopladelig miljøvenlig lommelygte: 4 trin (med billeder)
USB genopladelig miljøvenlig lommelygte: Hjælp med at spare miljøet ved at bygge din egen USB genopladelige lommelygte. Ikke mere smide billige batterier væk hver gang du vil bruge en lommelygte. Du skal bare tilslutte en USB -port for at oplade fuldstændigt, og du har en kraftig LED -lommelygte, der holder i
En storslået genopladelig lommelygte med Bluetooth -højttalere og opladning af mobiltelefoner: 4 trin (med billeder)
En storslået genopladelig lommelygte med Bluetooth -højttalere og opladning af mobiltelefoner: Hej venner, I denne instruktør rapporterer jeg om et genopladeligt blitzlys udstyret med Bluetooth -højttalere og opladning af USB -hun til opladning af mobiltelefoner, så det er en enhed med mange facetter, hvilket er godt til camping og gåture i parker eller bjerg