Taula de continguts:
- Pas 1: parts necessàries:
- Pas 2: Potència i energia
- Pas 3: mesura de la tensió
- Pas 4: Mesura actual
- Pas 5: mesura del temps
- Pas 6: Com ARDUINO calcula la potència i l'energia
- Pas 7: sortida visual
- Pas 8: càrrega de dades a Xively.com
- Pas 9: Codi Xively i ARDUINO
- Pas 10: registre de dades en una targeta SD
Vídeo: CONTADOR ENERGÈTIC ARDUINO: 10 passos (amb imatges)
2024 Autora: John Day | [email protected]. Última modificació: 2024-01-30 08:15
[Reprodueix vídeo]
Pertanyo a un poble d'Odisha, a l'Índia, on és freqüent que es produeixi un freqüent tall de subministrament elèctric. Impedeix la vida de cadascú. Durant la meva infantesa, continuar els estudis després del capvespre era un veritable repte. A causa d’aquest problema, vaig dissenyar un sistema solar per a casa meva de manera experimental. Vaig utilitzar un panell solar de 10 watts i 6 V per il·luminar pocs LED brillants. Després d’afrontar moltes dificultats, el projecte va tenir èxit. Aleshores vaig decidir controlar el voltatge, el corrent, la potència i l’energia del sistema. Això va portar la idea de dissenyar un ENERGY METER. Vaig utilitzar ARDUINO com a centre d’aquest projecte perquè és molt fàcil escriure codi al seu IDE i hi ha un gran nombre de biblioteques de codi obert disponibles a Internet que es poden utilitzar segons He experimentat el projecte per a un sistema solar nominal molt petit (10 Watts), però es pot modificar fàcilment per utilitzar-lo en un sistema de classificació superior.
Podeu trobar tots els meus projectes a:
Funció: Monitorització de l’energia mitjançant pantalla 1. LCD 2. a través d’Internet (pujada Xively) 3. Registre de dades en una targeta SD
Podeu veure el meu nou CONTROLADOR DE CÀRREGA SOLAR ARDUINO MPPT (versió-3.0)
També podeu veure els meus altres instructius a
CONTROLADOR DE CÀRREGA SOLAR ARDUINO (versió 2.0)
CONTROLADOR DE CÀRREGA SOLAR ARDUINO (versió-1)
Pas 1: parts necessàries:
1. ARDUINO UNO (Amazon) 2. ARDUINO ETHERNET SHIELD (Amazon)
3. LCD de 16x2 CARÀCTERS (Amazon)
4. SENSOR ACTUAL ACS 712 (Amazon) 4. RESISTORS (10k, 330ohm) (Amazon) 5. POTENCIOMETRE 10K (Amazon) 6. JUMPER WIRES (Amazon) 7. CABLE ETHERNET (Amazon) 8. PAU (Amazon)
Pas 2: Potència i energia
Potència: la potència és el producte de la tensió (volt) i el corrent (Amp) P = VxI La unitat de potència és Watt o KW Energia: L’energia és producte de la potència (watt) i el temps (Hora) Hora (kWh) Per la fórmula anterior queda clar que per mesurar l’energia necessitem tres paràmetres: 1. Voltatge. 2. Corrent. 3. Temps
Pas 3: mesura de la tensió
La tensió es mesura amb l’ajut d’un circuit divisor de tensió. Com que el voltatge d’entrada del pin analògic ARDUINO es limita a 5V, he dissenyat el divisor de tensió de manera que la tensió de sortida d’aquest sigui inferior a 5 V. La meva bateria que s’utilitza per emmagatzemar la la potència del panell solar té una qualificació de 6v, 5,5 Ah. Per tant, he de baixar aquest 6,5v a una tensió inferior a 5V. He utilitzat R1 = 10k i R2 = 10K. El valor de R1 i R2 pot ser inferior, però el problema és que, quan la resistència és baixa, el flux de corrent és més elevat a través d’ella com a resultat, una gran quantitat de potència (P = I ^ 2R) es dissipa en forma de calor. Per tant, es pot escollir un valor de resistència diferent, però cal tenir cura de minimitzar la pèrdua de potència a la resistència. Vout = R2 / (R1 + R2) * Vbat Vbat = 6,5 quan està completament carregat R1 = 10 k i R2 = 10 k Vout = 10 / (10 + 10) * 6,5 = 3,25 v que és inferior a 5 v i és adequat per al pin analògic ARDUINO NOTA I he mostrat una bateria de 9 volts al circuit de la placa de barres, per exemple, per connectar els cables. Però la bateria real que he utilitzat és una bateria de plom àcid de 6 volts i 5,5 Ah. a Vout = 3,25 v i valor inferior per a altres tensions de bateria més baixes. AEDUINO ADC converteix el senyal analògic a la corresponent aproximació digital. Quan la tensió de la bateria és de 6,5v, he obtingut 3,25v del divisor de voltatge i sample1 = 696 al monitor sèrie, on sample1 és el valor ADC correspon a 3,25v. Per a una millor comprensió, he adjuntat la simulació en temps real mitjançant un circuit de 123D. 3.25v equivalent a 696 1 equival a 3.25 / 696 = 4.669mv Vout = (4.669 * sample1) / 1000 volts Tensió real de la bateria = (2 * Vout) volt CODI ARDINO: // presa de 150 mostres del divisor de voltatge amb un interval de 2 segons i, a continuació, prometeu les dades de mostres recollides per a (int i = 0; i <150; i ++) {sample1 = sample1 + analogRead (A2); // llegiu la tensió del retard del circuit divisor (2); } mostra1 = mostra1 / 150; voltatge = 4.669 * 2 * mostra1 / 1000;
Pas 4: Mesura actual
Per a la mesura de corrent he utilitzat un sensor de corrent ACS 712 (20 A) de Hall Effect. Hi ha diferents sensors de corrent ACS712 disponibles al mercat, així que trieu segons el vostre requisit. Al diagrama de la placa de pa, he mostrat el LED com a càrrega, però la càrrega real és diferent. un camp magnètic perpendicular al corrent. Per obtenir més informació sobre el sensor d’efecte Hall, feu clic aquí. El full de dades del sensor ACS 712 es troba aquí. A partir del full de dades 1. ACS 712 mesura 20A positius i negatius, corresponent a la sortida analògica 100mV / A. VCC / 2 = 5v / 2 = 2,5V Calibració: la lectura analògica produeix un valor de 0-1023, que equival a 0v a 5v Així que la lectura analògica 1 = (5/1024) V = 4,89mv Valor = (4,89 * Valor de lectura analògica) / 1000 V, però, segons les fulles de dades, l’offset és de 2,5 V (quan el zero actual obtindrà 2,5 V de la sortida del sensor) Valor real = (valor-2,5) V Corrent en amp = valor real * 10 CODI ARDINO: // prenent 150 mostres de sensors amb un interval de 2 segons i, a continuació, mitjana de les dades de mostres recollides per a (int i = 0; i <150; i ++) {sample2 + = analogRead (A3); // llegir el corrent del retard del sensor (2); } mostra2 = mostra2 / 150; val = (5,0 * mostra2) / 1024,0; actualval = val-2.5; // la tensió de desplaçament és de 2,5 v amperes = actualval * 10;
Pas 5: mesura del temps
Per a la mesura del temps no cal cap maquinari extern, ja que ARDUINO té un temporitzador incorporat. La funció millis () retorna el número de mil·lisegons des que la placa Arduino va començar a executar el programa actual. // calcular el temps en mil·lisegons llarg temps = milisec / 1000; // converteix mil·lisegons en segons
Pas 6: Com ARDUINO calcula la potència i l'energia
totamps = totamps + amps; // calcular el total d’amperis avgamps = totamps / temps; // amperes mitjanes amphr = (avgamps * time) / 3600; // amp-hora watt = voltatge * amplificadors; // potència = tensió * energia actual = (watt * temps) / 3600; Watt-seg es torna a convertir a Watt-Hr dividint 1 hora (3600 seg) // energia = (watt * temps) / (1000 * 3600); per llegir en kWh
Pas 7: sortida visual
Tots els resultats es poden visualitzar al monitor sèrie o mitjançant una pantalla LCD. He utilitzat un LCD de 16x2 caràcters per mostrar tots els resultats obtinguts en els passos anteriors. Per als esquemes, consulteu el circuit de la placa de pa que es mostra més amunt. Connecteu el LCD amb ARDUINO com es mostra a continuació: LCD -> Arduino 1. VSS -> Arduino GND 2. VDD - > Arduino + 5v 3. VO -> Arduino GND pin + Resistor or Potentiometer 4. RS -> Arduino pin 8 5. RW -> Arduino pin 7 6. E -> Arduino pin 6 7. D0 -> Arduino - No connectat 8. D1 -> Arduino - No connectat 9. D2 -> Arduino - No connectat 10. D3 -> Arduino - No connectat 11. D4 -> Pin Arduino 5 12. D5 -> Pin Arduino 4 13. D6 -> Pin Arduino 3 14. D7 -> Arduino pin 2 15. A -> Arduino Pin 13 + Resistor (retroiluminació) 16. K -> Arduino GND (Backlight ground) CODI ARDUINO: Per a monitor sèrie:
Serial.print ("TENSIÓ:"); Serial.print (voltatge); Serial.println ("Volt"); Serial.print ("ACTUAL:"); Serial.print (amplificadors); Serial.println ("amplificadors"); Serial.print ("POWER:"); Serial.print (watt); Serial.println ("Watt"); Serial.print ("ENERGIA CONSUMIDA:"); Serial.print (energia); Serial.println ("Watt-Hour"); Serial.println (""); // imprimeix els següents conjunts de paràmetres després d'un retard de línia en blanc (2000); per a LCD: per a la pantalla LCD, primer heu d'importar la biblioteca "LiquidCrystal" al codi. Per obtenir més informació sobre la biblioteca LequidCrystal, feu clic aquí Per obtenir informació sobre el tutorial LCD, feu clic aquí. int Llum posterior = 9; void setup () {pinMode (backLight, OUTPUT); // estableix el pin 9 com a sortida analogWrite (backLight, 150); // controla la intensitat de la llum de fons 0-254 lcd.begin (16, 2); // columnes, files. mida de la pantalla lcd.clear (); // neteja la pantalla} void loop () {lcd.setCursor (16, 1); // configureu el cursor fora del recompte de visualització lcd.print (""); // imprimeix un retard de caràcter buit (600); //////////////////////////////////////////// imprimeu energia i energia a una pantalla LCD / ///////////////////////////////////////////////// lcd.setCursor (1, 0); // configureu el cursor a la primera col i a la primera fila lcd.print (watt); lcd.print ("W"); lcd.print (voltatge); lcd.print ("V"); lcd.setCursor (1, 1); // estableix el cursor a la primera col i a la segona fila lcd.print (energia); lcd.print ("WH"); lcd.print (amplificadors); lcd.print ("A"); }
Pas 8: càrrega de dades a Xively.com
Consulteu les captures de pantalla anteriors per obtenir una millor comprensió. Per carregar dades a xively.com la següent biblioteca que es descarregarà primer HttpClient: feu clic aquí Xively: feu clic aquí SPI: Importar des de IDE arduino (croquis -> Importa biblioteca …..) Ethernet: Importar des d’arduino IDE ((croquis -> Importa biblioteca …). Obriu un compte a https://xively.com (abans pachube.com i cosm.com) Registreu-vos per obtenir un compte de desenvolupador gratuït a
Trieu un nom d'usuari, una contrasenya, configureu l'adreça i la zona horària, etc. Rebreu un correu electrònic de confirmació;
a continuació, feu clic a l'enllaç d'activació per activar el vostre compte. Després d’obrir el compte amb èxit, es desviarà a la pàgina de dispositius de desenvolupament
- Feu clic a la casella + Afegeix dispositiu
- Poseu un nom al vostre dispositiu i la descripció (per exemple, SEGUIMENT ENERGÈTIC) ·
- Trieu dades privades o públiques (jo trio privades) ·
- Feu clic a Afegeix dispositiu
Després d'afegir el dispositiu, se us desviarà a una pàgina nova on hi ha molta informació important
- Identificador de producte, secret de producte, número de sèrie, codi d'activació ·
- Identificador de feed, FeedURL, punt final de l'API (l'identificador de feed s'utilitza al codi ARDUINO)
- Afegiu canals (seleccioneu ENERGY i POWER, però podeu triar segons la vostra elecció) Indiqueu la unitat i el símbol del paràmetre ·
- Afegeix la teva ubicació ·
- Claus API (utilitzades al codi ARDUINO, eviteu compartir aquest número) ·
- Activadors (ping a la pàgina web quan es produeix un esdeveniment, com quan el consum d'energia supera un límit determinat)
Pas 9: Codi Xively i ARDUINO
Aquí he adjuntat el codi complet (versió beta) per al comptador d’energia, excepte el registre de dades de la targeta SD, que s’adjunta per separat al següent pas. / ** Pujada de dades de control de l'energia a xively ** / #include #include #include #include #define API_KEY "xxxxxxxx" // Introduïu la vostra clau d'API Xively #define FEED_ID xxxxxxxxx // Introduïu el vostre ID de feed Xively // Adreça MAC per al vostre Mac de bytes de protecció Ethernet = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; // Pin analògic que estem supervisant (el blindatge Ethernet utilitza 0 i 1) int sensorPin = 2; unsigned long lastConnectionTime = 0; // l'última vegada que ens vam connectar a Cosm const unsigned long connectionInterval = 15000; // retard entre la connexió a Cosm en mil·lisegons // Inicialitzeu la biblioteca Cosm // Definiu la cadena per al nostre ID de transmissió de dades char sensorId = "POWER"; char sensorId2 = "ENERGIA"; XivelyDatastream datastreams = {XivelyDatastream (sensorId, strlen (sensorId), DATASTREAM_FLOAT), XivelyDatastream (sensorId2, strlen (sensorId2), DATASTREAM_FLOAT), DATASTREAM_FLOAT),}; // Emboliqueu el flux de dades en un canal XivelyFeed (FEED_ID, datastreams, 2 / * nombre de flux de dades * /); Client EthernetClient; XivelyClient xivelyclient (client); configuració nul·la () {Serial.begin (9600); Serial.println ("Inicialització de la xarxa"); while (Ethernet.begin (mac)! = 1) {Serial.println ("Error en obtenir l'adreça IP mitjançant DHCP, provant de nou …"); retard (15000); } Serial.println ("Xarxa inicialitzada"); Serial.println (); } void loop () {if (millis () - lastConnectionTime> connectionInterval) {sendData (); // enviar dades a xively getData (); // llegeix el flux de dades de xively lastConnectionTime = millis (); // actualitzeu el temps de connexió, així que esperem abans de connectar-vos de nou}} void sendData () {int sensor1 = watt; int sensor2 = energia; datastreams [0].setFloat (sensor1); // power power datastreams [1].setFloat (sensor2); // valor energètic Serial.print ("Potència de lectura"); Serial.println (datastreams [0].getFloat ()); Serial.print ("Llegiu l'energia"); Serial.println (datastreams [1].getFloat ()); Serial.println ("Càrrega a Xively"); int ret = xivelyclient.put (feed, API_KEY); Serial.print ("Codi de retorn PUT:"); Serial.println (ret); Serial.println (); } // obtingueu el valor del flux de dades de xively, imprimint el valor que hem rebut void getData () {Serial.println ("Lectura de dades de Xively"); int ret = xivelyclient.get (feed, API_KEY); Serial.print ("Codi de devolució GET:"); Serial.println (ret); if (ret> 0) {Serial.print ("Datastream és:"); Serial.println (feed [0]); Serial.print ("El valor de potència és:"); Serial.println (feed [0].getFloat ()); Serial.print ("Datastream és:"); Serial.println (feed [1]); Serial.print ("El valor energètic és:"); Serial.println (feed [1].getFloat ()); } Serial.println ();
Pas 10: registre de dades en una targeta SD
Per emmagatzemar dades en una targeta SD, heu d’importar la biblioteca SD. Per fer un tutorial, feu clic aquí Per obtenir més informació sobre la biblioteca SD, feu clic aquí. codi d’escriptura per a pantalla LCD i càrrega de dades xively.com. Però estic intentant millorar el codi de la versió beta perquè un codi únic pugui contenir totes les funcions (pantalla LCD, càrrega de dades Xively i emmagatzematge de dades en una targeta SD). El codi per al registre de dades s’adjunta a continuació. millor codi modificant el meu codi, si us plau, comparteix-lo amb mi. Aquesta és la meva primera instrucció tècnica. Si algú hi troba algun error, no dubti a fer comentaris.. perquè pugui millorar-me. o envieu-me un missatge, de manera que el projecte serà més potent. Crec que serà útil tant per a altres com per a mi.
Tercer premi al concurs de circuits 123D
Recomanat:
Reconeixement d'imatges amb plaques K210 i Arduino IDE / Micropython: 6 passos (amb imatges)
Reconeixement d’imatges amb plaques K210 i Arduino IDE / Micropython: ja vaig escriure un article sobre com executar demostracions d’OpenMV a Sipeed Maix Bit i també vaig fer un vídeo de demostració de detecció d’objectes amb aquesta placa. Una de les moltes preguntes que la gent ha formulat és: com puc reconèixer un objecte que la xarxa neuronal no és tr
Aliat energètic: 5 passos
Energy Ally: el nostre projecte permet als propietaris de cases provar l’eficiència dels seus sistemes de climatització a tota la llar, cosa que els permet prendre decisions amb més eficiència energètica. Dissenyat i produït per: Christopher Cannon, Brent Nanney, Kayla Sims &
Dispositiu de mesurament elèctric de cost energètic Arduino: 13 passos (amb imatges)
Dispositiu de mesurament elèctric de cost energètic Arduino: pagueu massa per les vostres factures d'electricitat? Voleu saber quanta electricitat consumeix la vostra caldera o escalfador? Feu el vostre propi comptador elèctric de cost energètic portàtil. Mireu com he trobat l’ús d’aquest dispositiu
Comandament a distància sense fils que utilitza el mòdul NRF24L01 de 2,4 Ghz amb Arduino - Nrf24l01 Receptor transmissor de 4 canals / 6 canals per quadcòpter - Helicòpter Rc - Avió Rc amb Arduino: 5 passos (amb imatges)
Comandament sense fils que utilitza un mòdul NRF24L01 de 2,4 Ghz amb Arduino | Nrf24l01 Receptor transmissor de 4 canals / 6 canals per quadcòpter | Helicòpter Rc | Avió Rc amb Arduino: per fer funcionar un cotxe Rc | Quadcopter | Drone | Avió RC | Vaixell RC, sempre necessitem un receptor i un transmissor, suposem que per RC QUADCOPTER necessitem un transmissor i un receptor de 6 canals i aquest tipus de TX i RX és massa costós, així que en farem un al nostre
Com desmuntar un ordinador amb passos i imatges senzills: 13 passos (amb imatges)
Com desmuntar un ordinador amb passos i imatges senzills: és una instrucció sobre com desmuntar un ordinador. La majoria dels components bàsics són modulars i fàcilment eliminables. Tanmateix, és important que us organitzeu al respecte. Això us ajudarà a evitar la pèrdua de peces i també a fer el muntatge