INHOUDSOPGAWE:

Batterykontroleerder met temperatuur en batteryseleksie: 23 stappe (met foto's)
Batterykontroleerder met temperatuur en batteryseleksie: 23 stappe (met foto's)

Video: Batterykontroleerder met temperatuur en batteryseleksie: 23 stappe (met foto's)

Video: Batterykontroleerder met temperatuur en batteryseleksie: 23 stappe (met foto's)
Video: Как спрятать данные в ячейках Excel? 2024, Julie
Anonim
Image
Image
Verander van basisprojek
Verander van basisprojek

Batterykapasiteitstoetser.

Met hierdie toestel kan u die kapasiteit van die 18650 battery, suur en ander (die grootste battery wat ek getoets het, nagaan) Dit is 6v Acid battery 4, 2A). Die uitslag van die toets is in milliampere/uur.

Ek skep hierdie toestel, want dit is nodig om die valse porseleinbattery te kontroleer.

Vir die veiligheid het ek bygevoeg, met behulp van 'n termistor, die temperatuur van die kragweerstand en die battery om te verhoed dat dit te warm word; met hierdie truuk kan ek 'n 6V -suurbattery nagaan sonder om die bord te brand (in die siklus van ontlading gaan ek na 'n warm kragweerstand) en die toestel wag 20 sekondes om die temperatuur te verlaag).

Ek kies 'n klein mikrobeheerder atmega328 -versoenbare nano (eBay).

Al die kode is hier.

Stap 1: Verander van die basisprojek

Ek het die idee van die projek van OpenGreenEnergy gesteel, en ek het die bord oorgedra om funksies by te voeg, sodat ek nou meer algemeen word.

v0.1

  • VCC van Arduino word nou outomaties bereken;
  • Variabele bygevoeg om die instelling op 'n gemakliker manier te verander.
  • Bygevoeg persentasie van ontslag
  • Bygevoeg temperatuur van battery en kragweerstand

v0.2

  • Bykomende moontlikheid vir batterykeuse
  • Geskep prototipe bord (kyk die skema), met die skerm, knoppie en luidspreker buite die bord, want in die toekoms wil ek 'n pakket skep.
  • Bygevoeg bestuur van die temperatuurgrens by die kragweerstand, sodat ek die proses kan blokkeer wanneer die temperatuur verder as 70 ° styg (oor hierdie temperatuurverlaging).

v0.3

Binnekort 'n bord van hierdie diens

Stap 2: V0.2 van die Raad

V0.2 van die Raad
V0.2 van die Raad

In v0.2 om verskillende soorte batterye te ondersteun, het ek 'n struktuur geskep wat gevul moet word met die naam van die battery, min spanning en maksimum spanning (ek het hulp nodig om dit te vul: P).

// Struktuur van batterytipe struktuur BatteryType {naam naam [10]; float maxVolt; dryf minVolt; }; #define BATTERY_TYPE_NUMBER 4 BatteryType batteryTypes [BATTERY_TYPE_NUMBER] = {{"18650", 4.3, 2.9}, {"17550", 4.3, 2.9}, {"14500", 4.3, 2.75}, {"6v Acid", 6.50, 5.91 }};

Nou gebruik ek 'n stel 10k weerstande vir die spanningsverdeler om die dubbele temperatuur van die analoog insette te lees. As u ondersteuning vir veranderingspanning wil hê, moet u hierdie waarde verander (verduidelik hieronder beter):

// Weerstand teen batteryspanning

#definieer BAT_RES_VALUE_GND 10.0 #definieer BAT_RES_VALUE_VCC 10.0 // Kragweerstand spanningsweerstand #definieer RES_RES_VALUE_GND 10.0 #definieer RES_RES_VALUE_VCC 10.0

As u nie 'n termistor gebruik nie, stel dit as onwaar:

#defineer USING_BATTERY_TERMISTOR waar

#defineer USING_RESISTO_TERMISTOR waar

As u 'n ander i2c -skerm gebruik, moet u hierdie metode herskryf:

leegte trek (leeg)

In die projek vind u skitterende sketse, foto's en meer.

Stap 3: Breadboard: I2c Character Display Controller uitgebrei

Breadboard: I2c Character Display Controller uitgebrei
Breadboard: I2c Character Display Controller uitgebrei

Ek het 'n generiese karaktervertoning gebruik, en ek het die i2c -beheerder gebou en dit saam met my persoonlike biblioteek gebruik.

Maar as u wil, kan u 'n normale i2c -beheerder (minder as 1 €) met 'n standaardbiblioteek neem, die kode bly dieselfde. Alle vertoonkode is in tekenfunksie, sodat u dit kan verander sonder om ander dinge te verander.

Beter hier verduidelik.

Stap 4: Broodbord: karaktervertoning met geïntegreerde I2c

Broodbord: Karaktervertoning met geïntegreerde I2c
Broodbord: Karaktervertoning met geïntegreerde I2c

Dieselfde skema sonder i2c -beheerde uitgebrei.

Stap 5: Realisering

Vir die meting van spanning gebruik ons die beginsel van 'n spanningsverdeler (meer inligting op Wikipedia).

In eenvoudige woorde, hierdie kode is die vermenigvuldigingsfaktor vir die meting van batteryspanning.

batResValueGnd / (batResValueVolt + batResValueGnd)

Ek het die 2 weerstande van batResValueVolt en batResValueGnd waarde ingevoeg na en voor die analoog leesdraad.

batVolt = (sample1 / (1023.0 - ((BAT_RES_VALUE_GND / (BAT_RES_VALUE_VCC + BAT_RES_VALUE_GND)) * 1023.0))) * vcc;

monster1 is die gemiddelde analoog lesings;

vcc verwysing Arduino spanning;

1023.0 is die maksimum verwysingswaarde van analoog lees (Arduino analoog lees gaan van 0 tot 1023).

Om stroom te kry, benodig u spanning na en voor die kragweerstand.

As u die spanning na en voor die kragweerstand meet, kan u die milliampere wat die battery verbruik, bereken.

Die MOSFET word gebruik om die dreinering van die battery van die kragweerstand te begin en te stop.

Vir veiligheid het ek 2 termistors ingesit om die temperatuur van die battery en kragweerstand te monitor.

Stap 6: Uitbreidbaarheid

Uitbreidbaarheid
Uitbreidbaarheid
Uitbreidbaarheid
Uitbreidbaarheid

Ek probeer 'n prototipe bord uitrek wat uitrekbaar is, maar vir eers gebruik ek slegs 'n minimale stel penne (in die toekoms sal ek leds en ander knoppies byvoeg).

As u 'n ondersteuningsspanning groter as 10v wil hê, moet u die weerstandswaarde van die battery en weerstand volgens die formule verander

(BAT_RES_VALUE_GND / (BAT_RES_VALUE_VCC + BAT_RES_VALUE_GND)

in die skema Weerstandspanning

Weerstandspanning GND 1/2/(Weerstandspanning 2/2 + Weerstandspanning GND 1/2)

Pienk is besig om te soldeer

Stap 7: Lys van onderdele

Bedrag tipe tipe eienskappe

  • 2 5 mm skroefterminal Inwendige skroefaansluitblok met skroefdraad 8A 250V LW SZUS (eBay)
  • 1 Arduino Pro Mini -kloon (versoenbaar Nano) (eBay)
  • 1 Basiese FET P-kanaal IRF744N of IRLZ44N (eBay)
  • 11 10kΩ Weerstandsweerstand 10kΩ (eBay)
  • 2 Temperatuursensor (termistor) 10kΩ; (eBay)
  • * Generiese manlike kopvorm ♂ (manlik); (eBay)
  • * Generiese vroulike kopvorm ♀ (vroulik); (eBay)
  • 1 PerfBoard -bord Prototipe -bord 24x18 (eBay)
  • 10R, 10W

    kragweerstand (eBay) Ek vind myne in 'n ou TV.

Stap 8: Bord: herstel, knoppie E om die battery te kies

Bord: herstel, knoppie E om die battery te kies
Bord: herstel, knoppie E om die battery te kies

In die linker gedeelte van die penne vind u die knoppie en die zoemer.

Ek gebruik 3 knoppies:

  1. een om die batterytipe te verander;
  2. een om die geselekteerde battery te begin ontlaai;
  3. dan gebruik ek die reset pin om alles weer te begin en die nuwe werking te aktiveer.

Alle pen is reeds afgetrek, dus moet u met VCC aktiveer

Herstel word geaktiveer met GND

Pienk is besig om te soldeer

Stap 9: Bord: I2c en kragbronne

Bord: I2c en kragtoevoerpennetjies
Bord: I2c en kragtoevoerpennetjies

Aan die basis kan u die VCC, GND en SDA, SCL sien (en ander in die toekoms).

Pienk is besig om te soldeer

Stap 10: Bord: termistor en meetspanning

Bord: termistor en meetspanning
Bord: termistor en meetspanning

Regs is daar penne om die termistorwaarde te lees, een vir termistor of kragresistor en die ander vir (manlike/vroulike penne om aan te heg) battery -termistor.

Dan is daar analoog penne wat die differensiële spanning na en voor die kragweerstand meet.

Pienk is besig om te soldeer

Stap 11: Bord: weerstand teen die meting van spanning

Bord: weerstand teen die meting van spanning
Bord: weerstand teen die meting van spanning
Bord: weerstand teen die meting van spanning
Bord: weerstand teen die meting van spanning

Hier kan u die weerstand sien wat toelaat dat die spanning dubbel as die arduino -pen (10v) ondersteun; u moet dit verander om meer spanning te ondersteun.

Pienk is besig om te soldeer

Stap 12: Soldeerstap: Alle penne

Soldeerstap: alle penne
Soldeerstap: alle penne
Soldeerstap: alle penne
Soldeerstap: alle penne

Eerstens voeg ek alle penne by en soldeer dit.

Stap 13: Soldeerstappe: afweerweerstand en termistor

Soldeerstappe: afweerweerstand en termistor
Soldeerstappe: afweerweerstand en termistor
Soldeerstappe: afweerweerstand en termistor
Soldeerstappe: afweerweerstand en termistor

Dan voeg ek alle aftrekresitor (vir knoppies) en i2c -aansluiting (skerm) by.

Dan is die termistor van die kragweerstand baie belangrik, aangesien die suurbattery te warm word.

Stap 14: Soldeerstappe: MOSFET, weerstand teen spanning

Soldeerstappe: MOSFET, weerstand teen spanning
Soldeerstappe: MOSFET, weerstand teen spanning
Soldeerstappe: MOSFET, weerstand teen spanning
Soldeerstappe: MOSFET, weerstand teen spanning

Nou moet ons mosfet insit om ontlading te aktiveer en weerstand om spanning te kontroleer.

2 weerstand vir spanning voor kragweerstand 2 weerstand vir spanning na kragweerstand, as u hierdie spanning het, kan u die verbruik van milliampere bereken.

Stap 15: Kode

Die mikrobeheerder is verenigbaar met nano, dus moet u u IDE instel om 'n Arduino Nano op te laai.

Om te werk, moet u kode aflaai van my github -bewaarplek.

Dan moet u 3 biblioteek byvoeg:

  1. Draad: standaard arduino -biblioteek vir i2c -protokol;
  2. Termistor Library hiervandaan nie die biblioteek wat u in arduino IDE kan vind nie, maar my weergawe;
  3. LiquidCrystal_i2c: as u 'n uitgebreide/aangepaste weergawe van i2c -adapter (my weergawe) gebruik, moet u die biblioteek hier aflaai, as u die standaardkomponent gebruik, kan u die biblioteek van arduino IDE neem, maar alles word hier beter verduidelik.

Ek toets nie die LCD met 'n standaard biblioteek nie; dit lyk vir my asof dit uitruilbaar is, maar as daar 'n probleem is, kan u my gerus kontak.

Stap 16: Resultaat na montering

Image
Image
Resultaat na montering
Resultaat na montering
Resultaat na montering
Resultaat na montering

Die basisbord is op die foto, dan kan ons dit toets.

Stap 17: Kies eers batterytipe

Kies eers batterytipe
Kies eers batterytipe

Soos beskryf, het ons 'n kaart van waarde met die konfigurasie van die battery.

// Struktuur van batterytipe struktuur BatteryType {naam naam [10]; float maxVolt; dryf minVolt; }; #define BATTERY_TYPE_NUMBER 4 BatteryType batteryTypes [BATTERY_TYPE_NUMBER] = {{"18650", 4.3, 2.9}, {"17550", 4.3, 2.9}, {"14500", 4.3, 2.75}, {"6v Acid", 6.50, 5.91 }};

Stap 18: Begin ontslag

Begin ontslag
Begin ontslag
Begin ontslag
Begin ontslag

Klik op die tweede knoppie om te begin laai.

Op die skerm kan u huidige milliampere, milliampere/uur, persentasie ontlading, batteryspanning en temperatuur van kragweerstand en battery sien.

Stap 19: Uitsonderings: battery verwyder

Image
Image
Uitsonderings: Temperatuurwaarskuwing
Uitsonderings: Temperatuurwaarskuwing

As u die ontladingsproses van die battery verwyder, gaan dit onderbreek, en dan begin u dit weer met die laaste waarde.

Stap 20: Uitsonderings: Temperatuurwaarskuwing

Uitsonderings: Temperatuurwaarskuwing
Uitsonderings: Temperatuurwaarskuwing
Uitsonderings: Temperatuurwaarskuwing
Uitsonderings: Temperatuurwaarskuwing
Uitsonderings: Temperatuurwaarskuwing
Uitsonderings: Temperatuurwaarskuwing

As die temperatuur (battery of kragweerstand) warm word, gaan die ontladingsproses tot stilstand.

#definieer BATTERY_MAX_TEMP 50

#definieer RESISTANCE_MAX_TEMP 69 // 70 ° op datablad (Derating resistors) #definieer TEMP_TO_REMOVE_ON_MAX_TEMP 20

Die standaardwaarde vir die maksimum temperatuur is 50 ° vir die battery en 69 vir die kragweerstand.

Soos u op die kommentaar kan sien, word die kragweerstand beïnvloed deur 'n derating wanneer dit meer as 70 ° gaan.

As die waarskuwing verhoog word, begin TEMP_TO_REMOVE_ON_MAX_TEMP sekondes se onderbreking om lae temperatuur te stel.

Stap 21: Toets Amperage

Toets Amperage
Toets Amperage

Die resultaat van die ampertoets is goed.

Stap 22: Pakket

Met 'n geskeide komponent is die resultaat van die pakket eenvoudig om te besef.

In 'n boks moet 'n reghoek vir die LCD, die gate vir drukknoppies en 'n eksterne wyfie vat gemaak word om spanning van die kragtoevoer te voorsien.

Drukknop het nie 'n aftrekweerstand nodig nie, want ek voeg dit reeds aan boord.

As ek tyd het, skep ek dit en plaas dit.

Aanbeveel: