WIFI batteri Monitor System - ESP8266 (4 / 9 steg)
Steg 4: Programvara genomförandet
För programmering CBDBv2 Evo styrelsen och ladda upp drivrutinerna och programvaran kommer vi fortsätta att använda LuaUploader som tidigare.
1. definiera används GPIO stift och variabler:
ADC_SRC = 5--GPIO14 - Välj spänningsavdelare / ström ingång
SDA = 2--GPIO4 - SDA
SCL-värdet = 1--GPIO5 - SCL
gpio.mode (ADC_SRC, gpio. UTGÅNG, gpio. PULLUP)
gpio.write(ADC_SRC,1)--spänningsmätning - spänningsavdelare källa vald
gpio.write(ADC_SRC,0)--strömmätning - nuvarande Shunt monitorutgången valt
voltdiv = 0.00412--spänning läsa kalibrering
dival = 0.00096--ADC volt/div värde - kalibrera!
resdiv = 4.31447--spänningsavdelare förhållandet - kalibrera!
divalI = 0.9425--nuvarande volt/div förhållandet - kalibrera!
CPCT = 0--beräknas levereras energi
adcI = 0--ADC avläsningar - Curent
adcV = 0--ADC avläsningar - spänning
PWR = 0--beräkna makt
t = 0--tid
2. Läs ADC - spänning
funktion readADC_Voltage()
adcV = 0
advr = 0
advr=ADC.Read(0)
skriva ut ("\nADCV steg:".. string.format("%g",advr).."steg")
adcV = advr * dival * resdiv
skriva ut ("spänning:".. string.format("%g",adcV).." V")
återgå adcV
slutet
3. Läs ADC - ström
funktion readADC_Current()
adcI = 0
adcr = 0
adcr=ADC.Read(0)
adcI = adcr * divalI
skriva ut ("ADCI steg:".. string.format("%g",adcr).."steg")
skriva ut ("nuvarande:".. string.format("%g",adcI).."mA")
returnera adcI
slutet
4. Läs ADC Process funktion och momentan ström konsumtion beräkning
funktion readUI()
gpio.write(ADC_SRC,1)--Välj källa
adcV = readADC_Voltage()
TMR.Delay(10000)
gpio.write(ADC_SRC,0)--Välj källa
adcI = readADC_Current()
PWR = adcI * adcV
skriva ut ("Power:".. string.format("%g",PWR).."mW")
slutet
5. antal format-funktionen för ordentlig LCD utskrift
nr_format = funktion (Bildrutnr, enhet)
om (Bildrutnr > 1000) sedan fnri = Bildrutnr/1000
Uniti=String.sub (enhet 2)
NRF=String.format ("%.3f%s", fnri, uniti)
annat
om (Bildrutnr < 100) sedan
om (Bildrutnr < 10) sedan
NRF = string.format ("%.1f%s", Bildrutnr, enhet)
annat nrf = string.format ("%.1f%s", Bildrutnr, enhet)
slutet
annat nrf = string.format ("%.1f%s", Bildrutnr, enhet)
slutet
slutet
returnera nrf
slutet
6. LCD-Print - > spänning / ström / energi / effekt
För mer information om I2C LCD-drivrutinen, ta gärna en titt på ST7032i LCD förare artikel
funktion readUI()
gpio.write(ADC_SRC,1)--Välj källa
adcV = readADC_Voltage()
TMR.Delay(10000)
gpio.write(ADC_SRC,0)--Välj källa
adcI = readADC_Current()
PWR = adcI * adcV
skriva ut ("Power:".. string.format("%g",PWR).."mW")
slutet
7. de viktigaste program
require('st7032i')
st7032i:init_i2c(SDA,SCL)
st7032i:init_LCD()
st7032i:lcd_clear()
st7032i:lcd_print (1,1,string.format ("batteri Monitor"))
st7032i:lcd_print (3,2,string.format ("start..."))
TMR.alarm (0, 10000, 1, function() readUI() LCDout() tmr.delay(1000) slutet)