Taula de continguts:

Làmpada solar recarregable alimentada per XOD: 9 passos (amb imatges)
Làmpada solar recarregable alimentada per XOD: 9 passos (amb imatges)

Vídeo: Làmpada solar recarregable alimentada per XOD: 9 passos (amb imatges)

Vídeo: Làmpada solar recarregable alimentada per XOD: 9 passos (amb imatges)
Vídeo: Документальный фильм «Экономика солидарности в Барселоне» (многоязычная версия) 2024, Desembre
Anonim
Làmpada solar recarregable alimentada per XOD
Làmpada solar recarregable alimentada per XOD

Hi ha làmpades solars de jardí / passarel·la barates disponibles a la majoria de ferreteries i articles per a la llar. Però, com diu la vella dita, normalment obteniu el que pagueu. Els circuits de càrrega i il·luminació habituals que utilitzen són senzills i econòmics, però la llum que obtingueu és gairebé impressionant (i amb prou feines perquè ningú que utilitzi la vostra passarel·la vegi cap a on va).

Aquest és el meu intent de dissenyar un mòdul d’il·luminació fora de la xarxa que suposa una millora significativa, tot i que és relativament econòmic. En donar-li alguns "cervells". XOD.io és un nou IDE compatible amb la plataforma de desenvolupament incrustada Arduino, on podeu "escriure" codi gràficament. L'entorn transmet el vostre esbós gràfic al C ++ modern, que és extraordinàriament eficient en la generació de codi compacte, i genera una font totalment compatible amb l'IDE Arduino de stock sense necessitat de més dependències externes. D’aquesta manera, fins i tot microcontroladors petits i econòmics amb recursos limitats d’emmagatzematge de programes i programes es poden emprar per assumir tasques complexes.

Aquest projecte mostra com dos microcontroladors ATTiny85 compatibles amb Arduino que treballen junts es poden utilitzar per gestionar les necessitats d’alimentació de la làmpada. El primer processador gestiona les dades ambientals de detecció del maquinari extern i el segon intenta recollir la major quantitat d’energia del sol que pot fer durant el dia i, a continuació, controlar la il·luminació d’un LED d’alta potència mentre la bateria d’emmagatzematge es descarrega a la nit. El segon processador realitza la seva feina mitjançant una implementació compacta de control de "lògica difusa". El programari per a ambdós xips es va desenvolupar exclusivament dins de l’entorn XOD.

Pas 1: materials necessaris

Arduino IDE, última versió, amb extensió ATTinyCore instal·lada des del gestor "Boards"

Programador Sparkfun USBTinyISP ATTiny, 11801 o pàgina del producte Sparkfun equivalent

Convertidor amplificador de baixa tensió ajustable Pololu amb entrada d’aturada, U1V11A o pàgina de producte Pololu equivalent

LED d'alta potència de color blanc o RGB amb dissipador de calor, ànode comú, pàgina Adafruit 2524 o equivalent del producte Adafruit

Microchip ATTiny85 en paquet DIP de 8 pins, pàgina del producte 2 Mouser

Preses IC DIP de 8 pins, 2

Condensador d'emmagatzematge massiu, 16 v 220 uF

Condensador de sortida, 6,3v 47uF

Resistències de limitació de corrent, 50 ohm 1/4 watt

Resistències de tracció i2c, 4,7 k, 2

Resistors divisors de tensió del panell, 1/4 watts, 100k, 470k

Resistència de detecció de corrent, 10 ohm 1⁄2 watt 1% de tolerància

Condensadors de derivació, 0,1 uF de ceràmica, 2

2 bateria recarregable de ions de liti de 3,7 v 100 mAh, PKCELL LP401 o equivalent

Connector d'entrada per a panell, 1

Mini blocs de terminals Tauler de soldadura de 3 "x3" i filferro de nucli sòlid prim per fer connexions

Gairebé segur que es necessitarà un oscil·loscopi, un multímetre i una font d'alimentació de banc per a les proves

Pas 2: Configuració de l'entorn

Configuració de l'entorn
Configuració de l'entorn

L’entorn XOD no és compatible amb la sèrie de processadors ATTiny, però si utilitzeu un parell de biblioteques de tercers de l’univers Arduino és senzill afegir suport per a aquesta sèrie d’AVR. El primer pas és instal·lar la biblioteca “ATTinyCore” des del menú desplegable “Eines → Taula → Gestor de taules” de l’Arduino IDE. Assegureu-vos que els paràmetres que es mostren a la imatge inclosa són correctes; recordeu que heu de prémer "Burn bootloader" per canviar els fusibles de configuració de la tensió de marró i de la velocitat del rellotge abans de carregar cap codi.

El codi font d’aquesta biblioteca està disponible a:

Una altra biblioteca útil del dipòsit és "FixedPoints", que és una implementació en temps de compilació de matemàtiques de punt fix per als processadors compatibles amb Arduino. L'ATTiny té una memòria SRAM i de programes limitada, i ajuda molt a reduir la mida final de l'esbós per utilitzar un enter de 2 bytes per emmagatzemar dades generals, en lloc d'un tipus de coma flotant, que requereix 4 bytes a l'AVR. També s’hauria de millorar la velocitat d’execució, ja que l’ATTiny no té una unitat de multiplicació de maquinari, i molt menys punt flotant de maquinari.

El codi font està disponible a:

El tutorial sobre com crear, transmetre i desplegar esbossos gràfics XOD a: https://github.com/Pharap/FixedPointsArduino ajudarà molt a entendre com es van crear els fitxers font inclosos.

Pas 3: Visió general del disseny

Visió general del disseny
Visió general del disseny
Visió general del disseny
Visió general del disseny

A la placa, dos processadors ATTiny85 es connecten mitjançant una interfície i2c i s’utilitzen treballant junts per gestionar la detecció del voltatge del panell solar, el corrent que flueix a la bateria des del convertidor d’augment mentre el panell està il·luminat, el voltatge de la bateria i la bateria. temperatura.

El convertidor d’impulsió és un mòdul disponible bàsicament basat en un IC Texas Instruments TPS6120, que pot prendre una tensió d’entrada de fins a 0,5 volts i augmentar-lo a qualsevol lloc, des de 2 fins a 5 volts. El nucli del sensor comprèn diversos blocs funcionals. El rellotge principal comença a funcionar tan bon punt s’aplica l’alimentació al convertidor d’impulsió des de l’entrada del panell solar. Comença l'execució de l'esbós i el primer és determinar si el panell està prou il·luminat per proporcionar corrent de càrrega a la bateria.

La tensió del panell solar es passa mitjançant dos filtres digitals i, si està per sobre d’un determinat llindar, el sistema determina que el panell està il·luminat i entra al rellotge principal al monitor de sentit actual. Es tracta d’un canal de convertidor analògic a digital del xip, configurat de manera diferent, que detecta la tensió a través d’una resistència de tolerància de l’1% de 1 ohm connectada en sèrie entre la sortida del convertidor d’augment i l’entrada de la bateria. Quan el tauler no està il·luminat, aquest ATTiny envia un senyal al segon ATTiny indicant-li que monitoritzi l'energia del LED en lloc de carregar-lo i que apagueu el convertidor amplificador i aïlleu l'entrada perquè la bateria no enviï corrent a través del tauler..

El segon nucli ATTiny és on s’executa el controlador LED i el sistema de control de càrrega de la bateria. Les dades sobre el voltatge del panell, el voltatge de la bateria i la càrrega de la bateria s’envien a aquest nucli perquè es processin a través d’una xarxa de lògica difusa, que intenta generar un senyal PWM adequat per aplicar al pin SHTDN, controlant així la quantitat de corrent enviada a la bateria. per carregar-lo quan estigui il·luminat: una forma bàsica de seguiment de punts de màxima potència (MPPT). També rep un senyal del nucli del sensor que li indica si ha d’encendre o apagar el LED, segons la sortida del dia del nucli del sensor / xanclet de nit.

Quan el LED està actiu a la nit, aquest ATTiny controla les dades de voltatge de la bateria que se li envien des del seu amic i el seu propi sensor de temperatura al xip, per obtenir una aproximació aproximada de la quantitat d’energia que s’empeny al LED (el voltatge de la bateria disminueix i la temperatura del xip augmenta amb el corrent extret dels seus pins.) La xarxa de lògica difusa associada amb el pegat LED PWM intenta fer un judici sobre la quantitat de potència de la bateria que encara està disponible i reduir la intensitat del LED a mesura que la bateria s’esgota.

Pas 4: Creació de pegats personalitzats des de la biblioteca principal de XOD

Creació de pedaços personalitzats des de la biblioteca bàsica XOD
Creació de pedaços personalitzats des de la biblioteca bàsica XOD
Creació de pedaços personalitzats des de la biblioteca bàsica XOD
Creació de pedaços personalitzats des de la biblioteca bàsica XOD

Es van utilitzar diversos nodes de pegat personalitzats per a aquest disseny, alguns dels quals es poden construir fàcilment completament a partir de nodes XOD inclosos, i alguns que es van implementar en C ++.

El primer dels dos nodes de pegat personalitzats de les imatges és una implementació d’un filtre de mitjana mòbil exponencial. Es tracta d’un filtre digital de pas baix de cap baix que s’utilitza en sèrie a l’esbós, una vegada per filtrar la tensió del panell solar entrant per al nucli lògic i una vegada més per alimentar el disparador que determina la il·luminació ambiental a llarg termini. Vegeu l’entrada de Wikipedia sobre suavitzat exponencial.

L’estructura de nodes de la imatge és només una representació gràfica directa de la funció de transferència de l’article, connectada entre si mitjançant enllaços des de les entrades adequades fins a les sortides. Hi ha un node diferit de la biblioteca que permet crear un bucle de retroalimentació (XOD us avisarà si creeu un bucle de retroalimentació sense inserir un retard al bucle, tal com es descriu al model d’execució de XOD). el pegat funciona bé, és senzill.

El segon node de pedaç personalitzat és una variació del xanclet d’estoc inclòs amb XOD, que s’alimenta amb la tensió del panell filtrat. Es bloqueja alts o alts segons que el senyal d'entrada estigui per sobre o per sota d'un llindar determinat. Els nodes emesos s’utilitzen per convertir els valors de sortida booleans al tipus de dades d’impulsos per activar el xanclet, ja que l’estat passa de baix a alt. Esperem que el disseny d’aquest node de pedaç s’expliqui per si mateix des de la captura de pantalla.

Pas 5: Creació de pegats personalitzats mitjançant C ++

Creació de pedaços personalitzats mitjançant C ++
Creació de pedaços personalitzats mitjançant C ++

Per a requisits especials en què la funcionalitat de node necessària seria massa complexa per representar-la fàcilment gràficament o que depenguin de biblioteques Arduino que no siguin originàries de l’entorn Arduino existent, XOD facilita escriure trossos de codi que després es pot integrar en un pedaç igual que qualsevol altre node creat o creat per l'usuari. Si seleccioneu "crea un nou pedaç" al menú de fitxers, es crea un full en blanc amb el qual podeu treballar i es poden arrossegar els nodes d'entrada i sortida des de la secció "nodes" de la biblioteca principal. Aleshores es pot arrossegar el node "no implementat en xod" i, quan es fa clic, apareixerà un editor de text on es podrà implementar la funcionalitat requerida en C ++. Aquí es descriu la manera de gestionar l’estat intern i l’accés als ports d’entrada i sortida des del codi C ++.

Com a exemple d’implementació de pegats personalitzats en C ++, s’utilitzen dos altres pegats personalitzats per al nucli del controlador per publicar una estimació de la tensió d’alimentació i la temperatura del nucli del conductor. Juntament amb la seva xarxa difusa, permet una estimació aproximada de la bateria restant disponible per alimentar els LED quan és fosc.

El pegat del sensor de temperatura també s’alimenta amb la sortida del sensor de tensió d’alimentació per obtenir una millor estimació: detectar la temperatura del nucli ens permet obtenir una estimació aproximada de la quantitat de potència que es crema als LED i es combina amb la lectura del voltatge d’alimentació quan esgotant la bateria, es calcula aproximadament la quantitat de bateria que queda. No ha de ser súper precís; si el nucli "sap" que els LED consumeixen molta intensitat, però el voltatge de la bateria cau ràpidament, és probable que digueu que la bateria no durarà molt més i és hora d'apagar la llum.

Pas 6: construcció

Construcció
Construcció
Construcció
Construcció
Construcció
Construcció

Vaig construir el projecte sobre un petit tros de taulell de prototipatge amb coixinets de coure per a les parts dels forats passants. L’ús de sòcols per als circuits integrats ajuda molt a la programació / modificació / prova; l'ISP USBTiny de Sparkfun té un sòcol similar a la seva placa, de manera que programar els dos xips només consisteix a connectar el programador a un port USB de la PC, carregar el codi XOD transpilat dels fitxers.ino Arduino inclosos amb la configuració i la placa adequades del programador, i a continuació, traieu suaument els xips del sòcol del programador i introduïu-los als sòcols del protoboard.

El mòdul convertidor d’augment basat en Pololu TPS6120 ve en una placa elevadora soldada a la protoborda en capçaleres de pin, de manera que és possible estalviar espai muntant alguns components a sota. Al meu prototip he posat les dues resistències pullup de 4,7 k a sota. Són necessaris perquè el bus i2c entre els xips funcioni correctament: la comunicació no funcionarà bé sense ells. A la part dreta de la placa hi ha la presa d’entrada per a l’endoll del panell solar i el condensador d’emmagatzematge d’entrada. El millor és intentar connectar la presa i aquest tap directament junts mitjançant "tirades" de soldadura, no de filferro de connexió, per obtenir un camí el més baix possible. A continuació, s’utilitzen corrents de soldadura sòlida per connectar el terminal positiu del condensador d’emmagatzematge directament al terminal de tensió d’entrada del mòdul d’augment i el pin de terra del mòdul d’augment directament al pin de terra del jack.

A la dreta i a l’esquerra dels endolls dels dos ATTinys hi ha condensadors despike / deglitching 0.1uF. Aquests components també són importants per no deixar-los de banda i s’han de connectar als pins d’alimentació i de terra dels circuits integrats a través d’un camí el més curt i directe possible. La resistència de detecció de corrent de 10 ohms es troba a l’esquerra, es connecta en línia amb la sortida del convertidor d’impulsió i cada costat està connectat a un pin d’entrada del nucli del sensor; aquests pins estan configurats per funcionar com un ADC diferencial per mesurar indirectament corrent a la bateria. Les connexions entre els pins IC del bus i2c i el pin d’apagada del convertidor d’augment, etc., es poden fer mitjançant un cable de connexió a la part inferior del protoboard; el cable de connexió de nucli sòlid molt prim funciona molt bé per a això. Facilita els canvis i, a més, té un aspecte molt més net que els ponts que corren entre els forats de la part superior.

El mòdul LED que vaig fer servir era una unitat RGB tricolor, el meu pla era tenir els tres LED actius per produir blanc quan la bateria estava gairebé completament carregada i es va esvair lentament el LED blau cap al groc a mesura que es va esgotar la càrrega. Però aquesta funció encara no s'ha implementat. Un sol LED blanc amb una resistència que limita el corrent també funcionarà bé.

Pas 7: proves, primera part

Proves, primera part
Proves, primera part

Després de programar els dos IC ATTiny amb els fitxers de croquis inclosos a través del programador USB de l'entorn Arduino, ajuda a provar que els dos nuclis del prototip funcionin correctament abans d'intentar carregar la bateria del panell solar. Idealment, això requereix un oscil·loscopi bàsic, un multímetre i una font d'alimentació de banc.

El primer que cal comprovar és que no hi hagi cap curtcircuit a la placa abans de connectar els circuits integrats, la bateria i el panell als seus endolls per evitar possibles danys. La forma més senzilla de fer-ho és fer servir una font d'alimentació de banc que pugui limitar el seu corrent de sortida a un valor segur en cas d'aquesta situació. Vaig utilitzar el meu subministrament de banc establert a 3 volts i un límit de 100 mA connectat als terminals de la presa d’entrada del panell solar als cables d’alimentació positiva i negativa. Sense res més que els components passius instal·lats, no hauria d’haver-hi, bàsicament, cap captació de corrent registrada al monitor actual de la font d’alimentació. Si hi ha un flux de corrent important o si el subministrament passa a limitar el corrent, alguna cosa ha fallat i s’ha de comprovar la placa per assegurar-se que no hi hagi connexions mal cablades ni condensadors amb polaritat invertida.

El següent pas és assegurar-vos que el convertidor boost funciona correctament. Hi ha un cargol-potenciòmetre a la placa, amb la font d'alimentació encara connectada i quatre dels pins del convertidor connectats adequadament, el potenciòmetre s'ha de girar amb una petita punta de tornavís fins que la tensió del terminal de sortida del mòdul es calculi al voltant de 3,8 a 3,9 volts. Aquest valor de CC no canviarà durant el funcionament, el nucli del controlador controlarà el voltatge mitjà de sortida pulsant el pin d’apagada del mòdul.

Pas 8: proves, part 2

Proves, part 2
Proves, part 2
Proves, part 2
Proves, part 2

El següent que cal comprovar és que la comunicació i2c funciona correctament, ja que la placa funciona sense alimentació i es pot instal·lar l’IC del nucli del sensor. En un oscil·loscopi hi hauria d’haver senyals polsants tant al pin 5 com al pin 7 del xip físic, aquest controlador i2c del xip intentant enviar dades al seu amic. Després d’apagar el nucli del controlador i instal·lar la connexió de nou amb un oscil·loscopi, hauria d’haver una seqüència més gran de polsos visibles a les dues línies. Això significa que els xips es comuniquen correctament.

Ajuda a tenir la bateria lleugerament carregada per a la prova completa final. El subministrament de banc també es pot utilitzar per aconseguir-ho, amb el límit de corrent fixat a uns 50 mA i la tensió encara a 3,8 volts, deixant la bateria LiPo connectada directament durant uns minuts.

L’últim pas és provar el sistema complet: amb tot connectat si el panell està cobert durant deu o 15 segons, s’hauria d’encendre el llum mitjançant la sortida PWM del nucli del controlador. Amb el panell a la llum del sol, la bateria s’ha de carregar a partir de la sortida del convertidor d’augment. La xarxa de lògica difusa es pot inspeccionar indirectament per veure si funciona correctament mirant la línia PWM que condueix el pin d’apagada del convertidor d’impulsió; a mesura que la il·luminació augmenta amb la bateria amb un estat de càrrega baix, l'amplada del pols hauria d'augmentar, cosa que demostra que, a mesura que hi hagi més energia disponible a partir de la llum solar, el nucli del controlador està indicant que s'hauria d'enviar més energia a la bateria.

Pas 9: Apèndix a Fuzzy Logic

Apèndix sobre Fuzzy Logic
Apèndix sobre Fuzzy Logic

La lògica difusa és una tècnica d’aprenentatge automàtic que es pot utilitzar en el control de sistemes de maquinari on hi ha incertesa sobre molts dels paràmetres del sistema que es controla, cosa que fa que la solució de control d’entrada de sortida explícita sigui difícil d’escriure matemàticament. Això s'aconsegueix mitjançant l'ús de valors lògics que es troben entre 0 (fals) i 1 (cert), expressant la incertesa en un valor més semblant a la forma en què ho faria un humà ("majoritàriament cert" o "no realment cert") i permetent una àrea gris entre afirmacions 100% certes i 100% falses. La manera d’aconseguir-ho és mitjançant la primera presa de mostres de les variables d’entrada en què s’ha de basar una decisió i “difusió”.

El cor de qualsevol sistema de lògica difusa és una "memòria associativa difusa". Això recorda a una matriu, on en el cas del circuit de càrrega de la bateria s’emmagatzema un conjunt de valors de 3x3 que oscil·len entre 0 i 1. Els valors de la matriu es poden associar aproximadament a la raó per la qual un ésser humà raonaria sobre quin hauria de ser el factor PWM que controla el pin SHTDN del convertidor d’impuls, en funció de com la funció de pertinença anterior qualifica un determinat conjunt d’entrades. Per exemple, si el voltatge d'entrada del tauler és elevat, però el corrent que es consumeix a la bateria és baix, probablement significa que es pot consumir més energia i que la configuració de PWM no és òptima i s'hauria d'incrementar. Per contra, si el voltatge del panell baixa, però el carregador encara intenta empènyer un gran corrent a la bateria, també es malgastarà, de manera que el millor seria reduir el senyal PWM al convertidor d’augment. Una vegada que els senyals d'entrada es "difuminen" en un conjunt difús, es multipliquen per aquests valors, de manera similar a la forma en què un vector es multiplica per una matriu, per generar un conjunt transformat que sigui representatiu de la quantitat que contenia la cel·la "coneixement". de la matriu s'ha de tenir en compte en la funció de combinació final.

Utilitzant el node "no implementat en xod" que permet als nodes XOD que implementen funcionalitats personalitzades massa complicades per ser raonables de fer a partir dels blocs de construcció, i una mica d'estil Arduino C ++, la memòria associativa, la funció de ponderació i " fuzzifier "similar als blocs descrits en aquesta referència: https://www.drdobbs.com/cpp/fuzzy-logic-in-c/184408940 són senzills de fer i molt més fàcils d'experimentar.

Recomanat: