# Autor: David Marchena Martinez # Fecha: 01/05/2021 # Mail: davidmarxena@gmail.com #*********************************** # *Calcula el estado de la bateria * #*********************************** #!/usr/bin/env python3 # coding: utf-8 import sys import datetime import time # importar modulos propios import writefile import convert_ard_TO_ras import busio import digitalio import board import adafruit_mcp3xxx.mcp3008 as MCP from adafruit_mcp3xxx.analog_in import AnalogIn def calcula_bateria(): i = 0 suma_bateria = 0 suma_ant = 0 #No creamos clase ya que tras 1024 lecturas la aplicaci�n da error cerr�ndo todo # create the spi bus spi = busio.SPI(clock=board.SCK, MISO=board.MISO, MOSI=board.MOSI) # create the cs (chip select) Orignalmente D5 (Gpio5, conector 29) cs = digitalio.DigitalInOut(board.D22) # create the mcp object mcp = MCP.MCP3008(spi, cs) try: while True: Vin=AnalogIn(mcp, MCP.P5).voltage #usamos una bateria de 12v y el ADC solo le voltajes de hasta 3.3v bateria=(12*Vin)/3.3 # Evaluamos la bateria cada 12 periodos de 5 segundos por tanto 1 minuto suma_bateria = suma_bateria + bateria i = i + 1 if suma_bateria!=0: if i == 12: #Hacemos una media en un minuto del voltaje en la bateria suma_bateria = suma_bateria / 12 # Generamos la hora utc = datetime.datetime.utcnow().strftime('%Y-%m-%d %H:%M:%S') i = 0 # Enviamos a la web cuando hay cambios del +-1% if suma_bateria > suma_ant+(suma_ant*1/100) or suma_bateria< suma_ant -(suma_ant*1/100): suma_ant=0 suma_ant = suma_bateria print ("Bateria") print ("-------") print (utc) print ("V "+ str(suma_bateria)) print ("") #Redondeamos a 2 decimales para que la BBDD guarde bien los datos writefile.setfile("Bateria", round (suma_bateria,2)) #ponemos el contador a 0 suma_bateria = 0 else: print("error Revisa el Sistema de Baterias") time.sleep(5) except (KeyboardInterrupt, SystemExit): raise