-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Tienes razón, crearé un diccionario nuevo para las condiciones horarias.
Código PHP:
OP={'id_rele':0,'nombre':1,'modo':2,'id_rele2':3,'operacion':4,'parametro':5,'condicion':6,'valor':7}
OH={'id_rele':0,'nombre':1,'modo':2,'id_rele2':3,'parametro_h':4,'valor_h_ON':5,'valor_h_OFF':6}
¿Así mejor?
----
He pensado desconectar toda la producción FV del híbrido y pasarla al KID (regulador MPPT, máx 30A -estoy en el límite-). Así podría tener más control sobre todos los elementos que tengo ya.
¿Qué os parece?
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
nikitto
He pensado desconectar toda la producción FV del híbrido y pasarla al KID (regulador MPPT, máx 30A) ... ¿Qué os parece?
Ningún problema. Un regulador MPPT no tiene problemas, si se supera un poco la intensidad nominal; por ejemplo 1000Wp en vez de 750Wp. Simplemente bloquea la producción FV excesiva y deja pasar solo 30A.
Quiero decir, que si te facilita el control, puedes conectar todas las placas al KID, sin miedo.
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Así es, con un shunt a la salida del regulador junto con el que tengo en la batería puedo saber la producción y el consumo diario.
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Yo tuve algun problema (el LCD se colgaba, etc) poniendo al FM80 mas placas de las nominales, ademas, supongo que por efecto nube, vi intensidades de carga mayores de 80 a pesar de estar limitada por configuracion...por lo que preferi quitarle placas conectadas
Supongo que si el exceso es poco no pasara nada, pero al menos a mi ,con el FM80, no me dio confianza dejarlo sobredimensionado en la entrada
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Ayer hice una prueba de algoritmo para el control por horario y creo que va bien con algunas limitaciones ( si quieres que encienda por ejm a las 23:00 y que apague a las 3:00 se debe hacer en dos registros....de 23:00 a 23:59 y de 0:00 a 3:00)
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
Mleon
Yo tuve algun problema ... poniendo al FM80 mas placas de las nominales ...
Qué potencia en placa tenías conectado al FM80 cuando te daba problemas?
Antes de tener el "regulador BBB", tenía 3400Wp conectados a mi Sunstar SS-50C (de 50A nominales), y me iba perfectamente. Claro, durante las horas de máximo sol me limitaba la intensidad a 50A, pero en un 80% del día me aprovechaba perfectamente toda la potencia conectada.
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Creo recordar que un pico de 100-110A....como vi problemas con el LCD y en el manual te indica el array maximo que se puede instalar decidi no ponerlo en riesgo
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
Mleon
Ayer hice una prueba de algoritmo para el control por horario y creo que va bien con algunas limitaciones ( si quieres que encienda por ejm a las 23:00 y que apague a las 3:00 se debe hacer en dos registros....de 23:00 a 23:59 y de 0:00 a 3:00)
Que raro que no puedas poner de 23:00:00 a 03:00:00. Publica aquí el código o súbelo a tu directorio de la RPi.
¿Has visto lo que puse antes de los diccionarios? ¿Era así cómo decías?
Cita:
Iniciado por
el_cobarde
Qué potencia en placa tenías conectado al FM80 cuando te daba problemas?
Antes de tener el "regulador BBB", tenía 3400Wp conectados a mi Sunstar SS-50C (de 50A nominales), y me iba perfectamente. Claro, durante las horas de máximo sol me limitaba la intensidad a 50A, pero en un 80% del día me aprovechaba perfectamente toda la potencia conectada.
Haré unas pruebas y decidiré que hago. No me cuesta nada mover 2 cables (+PV & -PV).
------
En unos minutos veremos como que pasa con los relés hoy.
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Claro que lo puedes poner....pero el algoritmo pregunta si
hora_actual > Valor_on and hora_actual < Valor_off
Para saber si esta dentro del periodo de funcionamiento, por lo que en el caso de pasar de medianoche habria que hacer algo especial para considerarlo
En un momento pongo el codigo....no estaba muy contento de como me habia quedado, pero para empezar deberia valer
De paso ya he puesto algo para que solo se ejecute la funcion i2c_rele en los reles dados de alta
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
Mleon
Creo recordar que un pico de 100-110A....como vi problemas con el LCD y en el manual te indica el array maximo ... decidi no ponerlo en riesgo
Pues esto es 25% - 37% de sobrepotencia. Me extraña que el FM80 tenga problemas con esto. No es solo mi experiencia personal, otros foreros comentan lo mismo.
Posiblemente sea solo la pantalla, que se niega a marcar picos >80A?
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Mientras puedo decir que los relés han vuelto a pararse. En breve podré mirar el log, que no se porque motivo lo escribe cada x minutos.
Es decir, la parte de los for -> 1 y -> 2 puede dejarse como estaba.
- - - - - - - - - - - - - - - - - - -
El problema es HW como ya se sabía, en ningún momento desde el SW se les manda ninguna instrucción de apagado. He revisado todo el log, al que añadí hora y sólo figuran los encendidos de los relés, esta mañana, según condiciones y nada más.
Ejemplo del encendido del relé TERMO esta mañana:
Código PHP:
hora= 09:58:19
hora= 09:58:24
i2c_rele= 32 2 1
estado= 255
i2c_out(=1) 253
hora= 09:58:29
hora= 09:58:34
y relé DEPURADORA un rato después:
Código PHP:
hora= 10:44:03
hora= 10:44:08
i2c_rele= 32 1 1
estado= 253
i2c_out(=1) 252
hora= 10:44:14
hora= 10:44:19
- - - - - - - - - - - - - - - - - - -
Quizás podríamos añadir algún algoritmo que comprobara el estado de los mismos y si es necesario los encendiera. Ya que ahora se da por hecho que están encendidos. Del tipo:
estado_actual = estado_anterior, si se cumplen las condiciones
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Vamos con el codigo...
Primero he importado la libreria datetime (es posible que valga con la libreria time) y creo dos nuevos diccionarios uno del join de las condiciones de horario y otro de los dias de la semana
Código PHP:
import datetime
.......
OPH={'id_rele':0,'nombre':1,'modo':2,'id_rele2':3,'parametro_h':4,'valor_h_on':5,'valor_h_off':6}
NDIA={'D':0,'L':1,'M':2,'X':3,'J':4,'V':5,'S':6}
Ya en el bucle principal al principio veo que dia de la semana es y los segundos que se llevan desde el principio del dia (esto de los segundos es que no he visto claro como hacer la comparacion de dos variables de horas:minutos:seg
Código PHP:
........
diasemana=time.strftime("%w")
ahora= datetime.datetime.now()
segundosdia=ahora.hour*60*60+ahora.minute*60+ahora.second
.......
Vamos a coger tanto la tabla reles como la reles_c como la reles_h
Código PHP:
### Cargar tablas reles , reles_c, reles_h
treles = MySQLdb.connect(host = "localhost", user = "root", passwd = "fv", db = "fv")
cur = treles.cursor()
sql_reles='SELECT * FROM reles'
nreles=cur.execute(sql_reles)
nreles=int(nreles) # = numero de reles
TR=cur.fetchall()
reles = MySQLdb.connect(host = "localhost", user = "root", passwd = "fv", db = "fv")
cur = reles.cursor()
sql_reles='SELECT * FROM reles JOIN reles_c WHERE reles.id_rele = reles_c.id_rele'
ncon=cur.execute(sql_reles)
ncon=int(ncon) # = numero de condiciones
R=cur.fetchall()
reloj = MySQLdb.connect(host = "localhost", user = "root", passwd = "fv", db = "fv")
cur = reloj.cursor()
sql_reloj='SELECT * FROM reles INNER JOIN reles_h ON reles.id_rele = reles_h.id_rele'
hcon=cur.execute(sql_reloj)
hcon=int(hcon) # = numero de condiciones h
H=cur.fetchall()
y ahora el algoritmo (los print se pueden quitar..eran para control)
Código PHP:
#------------------------ ALGORITMO CONDICIONES RELES -----------------------------
Rele_Out_Ant = [i[:] for i in Rele_Out] #copio valores Rele_Out en Rele_Out_Ant
for I in range(nreles):
Puerto=(TR[I][0]%10)-1 # desde 0 a 7
GR=int((TR[I][0]-Puerto)/10-32) # desde 0 donde GR=0 si id_rele=32X, GR=1 si id_rele=33X
Rele_Out[GR][Puerto]=1 #encendemos virtualmente todos los reles por defecto
# -------------------- Bucle de condiciones de horario --------------------------
Rele_Out_H = [[0] * 8 for i in range(8)] # Inicializo variable a 0
for I in range(hcon):
print "Procesando ",H[I]
Puerto=(H[I][0]%10)-1
GR=int((H[I][0]-Puerto)/10-32)
diaok=0
horaok=0
if H[I][OPH['parametro_h']]=='T': #Todos los dias de la semana
diaok=1
elif str(NDIA[H[I][OPH['parametro_h']]])==diasemana:
diaok=1
if (segundosdia >= H[I][OPH['valor_h_on']].seconds and
segundosdia <= H[I][OPH['valor_h_off']].seconds):
horaok=1
if diaok == 1 and horaok == 1:
Rele_Out_H[GR][Puerto]+=1
print "registro activo"
print
print Rele_Out_H
for I in range(hcon):
Puerto=(H[I][0]%10)-1
GR=int((H[I][0]-Puerto)/10-32)
if Rele_Out_H[GR][Puerto]==0:
Rele_Out[GR][Puerto]=0 #apago rele
print
# -------------------- Bucle de condiciones de parametros FV --------------------------
for I in range(ncon):
print "Procesando ",R[I]
Puerto=(R[I][0]%10)-1
GR=int((R[I][0]-Puerto)/10-32)
if R[I][OP['condicion']]=='<':
if (R[I][OP['operacion']]=='ON' and
DatosFV[R[I][OP['parametro']]] > R[I][OP['valor']] and
Rele_Out_Ant[GR][Puerto] == 0) :
Rele_Out[GR][Puerto]=0
if R[I][OP['operacion']]=='OFF' and DatosFV[R[I][OP['parametro']]] < R[I][OP['valor']] :
Rele_Out[GR][Puerto]=0
if R[I][OP['condicion']]=='>':
if (R[I][OP['operacion']]=='ON' and
DatosFV[R[I][OP['parametro']]] < R[I][OP['valor']] and
Rele_Out_Ant[GR][Puerto] == 0) :
Rele_Out[GR][Puerto]=0
if R[I][OP['operacion']]=='OFF' and DatosFV[R[I][OP['parametro']]] > R[I][OP['valor']] :
Rele_Out[GR][Puerto]=0
### forzado ON/OFF
if R[I][OP['modo']]=='ON' :
Rele_Out[GR][Puerto]=1
if R[I][OP['modo']]=='OFF' :
Rele_Out[GR][Puerto]=0
print "Salida Rele=", Rele_Out[GR][Puerto]
print
# -----------------------Bucle encendido/apagado reles -----------------
Flag_Rele_Encendido = 0
for I in range(nreles):
Puerto=(TR[I][0]%10)-1 # desde 0 a 7
GR=int((TR[I][0]-Puerto)/10-32) # desde 0 donde GR=0 si id_rele=32X, GR=1 si id_rele=33X
if Rele_Out[GR][Puerto] == 1 and Rele_Out_Ant[GR][Puerto] == 0 and Flag_Rele_Encendido == 1 :
Rele_Out[GR][Puerto] = 0 #no encender rele
if Rele_Out[GR][Puerto] == 1 and Rele_Out_Ant[GR][Puerto] == 0 and Flag_Rele_Encendido == 0 :
i2c_rele(GR+32,Puerto+1,1) #encender rele
Flag_Rele_Encendido=1
if Rele_Out[GR][Puerto] == 0 and Rele_Out[GR][Puerto] == 1 :
i2c_rele(GR+32,Puerto+1,0) #apagar rele
print "Rele",TR[I][0],"=",Rele_Out[GR][Puerto]," // ",
print
Por ultimo faltara cerrar las conexiones a la BD
Código PHP:
........
reles.close()
treles.close()
reloj.close
........
- - - - - - - - - - - - - - - - - - -
Cita:
Iniciado por
nikitto
- - - - - - - - - - - - - - - - - - -
Quizás podríamos añadir algún algoritmo que comprobara el estado de los mismos y si es necesario los encendiera. Ya que ahora se da por hecho que están encendidos. Del tipo:
estado_actual = estado_anterior, si se cumplen las condiciones
Pues asi a primera vista cambia e bucle de encendido de reles por este codigo
Código PHP:
# -----------------------Bucle encendido/apagado reles -----------------
Flag_Rele_Encendido = 0
for I in range(nreles):
Puerto=(TR[I][0]%10)-1 # desde 0 a 7
GR=int((TR[I][0]-Puerto)/10-32) # desde 0 donde GR=0 si id_rele=32X, GR=1 si id_rele=33X
if Rele_Out[GR][Puerto] == 1 and Rele_Out_Ant[GR][Puerto] == 0 and Flag_Rele_Encendido == 1 :
Rele_Out[GR][Puerto] = 0 #no encender rele
if Rele_Out[GR][Puerto] == 1 and Rele_Out_Ant[GR][Puerto] == 0 and Flag_Rele_Encendido == 0 :
i2c_rele(GR+32,Puerto+1,1) #encender rele
Flag_Rele_Encendido=1
if Rele_Out[GR][Puerto] == 1 and Rele_Out_Ant[GR][Puerto] == 1 :
i2c_rele(GR+32,Puerto+1,1) #confirmar rele encendido
if Rele_Out[GR][Puerto] == 0 and Rele_Out[GR][Puerto] == 1 :
i2c_rele(GR+32,Puerto+1,0) #apagar rele
print "Rele",TR[I][0],"=",Rele_Out[GR][Puerto]," // "
La pega que veo es que se te van a encender de golpe los 2 reles si se han apagado
Podemos hacer que el valor de Rele_Out_Ant no sea un valor calculado por el programa sino leido de los PCF, para ello tienes que confirmar que cuando se apagan los reles por fallo HW.. si lees el valor del PCF te da coherente
En este caso parece facil ver el estado del PCF y si no coincide con el valor de Rele_Out_Ant actuar en consecuencia
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Voy mirando, luego me centraré con lo de la hora.
Ahora quería comentar que cogiendo también la tabla reles (1) sabes el número de relés instalados, fijándote en la info de la BD. ¿No?
De todas formas no hay problema con el anterior SW.
- - - - - - - - - - - - - - - - - - -
Sobre lo de la hora, creo que ya te lo puse.
Código PHP:
hora = time.strftime("%H:%M:%S")
print('hora='),hora
y luego el tema de comparaciones es muy fácil:
Código PHP:
if (hora>= "00:00:00" and hora<="00:00:05"):
Cambiando los valores, por el propio contenido que pueda tener valor_h_on o valor_h_off
Tal como has cogido el día de la semana, perfecto.
- - - - - - - - - - - - - - - - - - -
Cita:
Iniciado por
Mleon
La pega que veo es que se te van a encender de golpe los 2 reles si se han apagado
Podemos hacer que el valor de Rele_Out_Ant no sea un valor calculado por el programa sino leido de los PCF, para ello tienes que confirmar que cuando se apagan los reles por fallo HW.. si lees el valor del PCF te da coherente
En este caso parece facil ver el estado del PCF y si no coincide con el valor de Rele_Out_Ant actuar en consecuencia
El valor del PCF cuando se 'apaga todo' es 255.
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
nikitto
Voy mirando, luego me centraré con lo de la hora.
Ahora quería comentar que cogiendo también la tabla reles (1) sabes el número de relés instalados, fijándote en la info de la BD. ¿No?
De todas formas no hay problema con el anterior SW.
Claro..por eso he cogido la tabla TR....ademas es mas "limpio" recorrer la tabla reles que la tabla reles_c en algunos for y por eso he actualizado el codigo en algunas partes para usar TR en lugar de R
Cita:
Iniciado por
nikitto
Sobre lo de la hora, creo que ya te lo puse.
Código PHP:
hora = time.strftime("%H:%M:%S")
print('hora='),hora
y luego el tema de comparaciones es muy fácil:
Código PHP:
if (hora>= "00:00:00" and hora<="00:00:05"):
Cambiando los valores, por el propio contenido que pueda tener valor_h_on o valor_h_off
Si pero comparar dos cadenas de texto siempre me ha dado menos confianza que comparar numeros, y como me dio algun error con las variables valor_h_on y valor_h_off (por controlar poco python supongo) tire por la opcion de segundos
Cita:
Iniciado por
nikitto
El valor del PCF cuando se 'apaga todo' es 255.
Luego es coherente........en este caso haz que la variable Rele_Out_Ant se actualice al valor leido de los PCF y el algoritmo reconectara los reles de uno en uno
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
Mleon
Si pero comparar dos cadenas de texto siempre me ha dado menos confianza que comparar numeros, y como me dio algun error con las variables valor_h_on y valor_h_off (por controlar poco python supongo) tire por la opcion de segundos
Luego es coherente........en este caso haz que la variable Rele_Out_Ant se actualice al valor leido de los PCF y el algoritmo reconectara los reles de uno en uno
Llevo usanto la variable 'hora' desde hace un mes y un día y ningún problema. Es más, piensa que en la tabla reles_h, las variables valor_h_on y valor_h_off son del tipo TIME (xx:xx:xx)
Con lo de que 'Rele_Out_Ant se actualice al valor leido de los PCF', ¿a qué te refieres? Vas mil pasos por delante mío. Sorry.
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
nikitto
Llevo usanto la variable 'hora' desde hace un mes y un día y ningún problema. Es más, piensa que en la tabla reles_h, las variables valor_h_on y valor_h_off son del tipo TIME (xx:xx:xx)
Con lo de que 'Rele_Out_Ant se actualice al valor leido de los PCF', ¿a qué te refieres? Vas mil pasos por delante mío. Sorry.
Como he comentado tuve algunos problemas con la comparación (supongo que tenia que haber pasado a texto las variables valor_h_on y valor_h_off con la funcion .strftime o algo asi...pero me sentía mas cómodo con números
Evidentemente si mejoras el código estupendo
.................
Lo de 'Rele_Out_Ant se actualice al valor leido de los PCF'.....
Ahora mismo el valor de Rele_Out_Ant sale del valor de Rele_Out antes de empezar la comparación
Código PHP:
Rele_Out_Ant = [i[:] for i in Rele_Out] #copio valores Rele_Out en Rele_Out_Ant
Dicho valor nos sirve para saber si cada rele una vez hecha la comparación de horario y condiciones FV pasa de encendido a apagado o de apagado a encendido..... y asi por ejm:
- No encender mas de 1 rele en cada iteracion
- Solamente mandar información al PCF cuando cambia de estado
En este sentido si tienes en Rele_Out_Ant un valor de encendido y realmente el PCF esta apagado, el SW no manda la instrucción de encendido i2c_rele dado que no es necesaria en teoría.....y por tanto el rele permanece apagado
Vamos a hacer que el valor Rele_Out_Ant sea el valor leido del PCF cambiando el código
Código PHP:
Rele_Out_Ant = [i[:] for i in Rele_Out] #copio valores Rele_Out en Rele_Out_Ant
por algo que lea el valor real del PCF y lo guarde en Rele_Out_Ant
Con esto se debería recuperar ante errores HW salvo que el PCF o la RPi dejen de responder
No creo que sea muy complicado hacer dicho código....intenta hacerlo, si te atrancas avisa
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Vale, entiendo, a ver si lo he hecho bien:
Código PHP:
#algoritmo condiciones reles
estado=bus.read_byte(32)
if estado != 255 :
Rele_Out_Ant = [i[:] for i in Rele_Out]
else :
Rele_Out_Ant = [[0] * 8 for i in range(8)
No me he parado a especificar direcciones, he ido directo al grano. Es para probar y si funciona, perfeccionar.
Es lo mismo que teníamos, lo que primero mira que valor tiene en la dirección 32 (0x20H), si no es = a 255, Rele_Out_Ant=Rele_Out y si es = a 255, pone todos los campos de Rele_Out_Ant a 0
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
nikitto
Vale, entiendo, a ver si lo he hecho bien:
Código PHP:
#algoritmo condiciones reles
estado=bus.read_byte(32)
if estado != 255 :
Rele_Out_Ant = [i[:] for i in Rele_Out]
else :
Rele_Out_Ant = [[0] * 8 for i in range(8)
No me he parado a especificar direcciones, he ido directo al grano. Es para probar y si funciona, perfeccionar.
Es lo mismo que teníamos, lo que primero mira que valor tiene en la dirección 32 (0x20H), si no es = a 255, Rele_Out_Ant=Rele_Out y si es = a 255, pone todos los campos de Rele_Out_Ant a 0
Para probar valdria pero como no se quede en 255 sino en otro valor no valdria, ademas como tengas mas de un PCF tambien ira raro
Me habia puesto a mirarlo y este era el codigo que me salia en primera pensada
Código PHP:
for I in range(nreles):
Puerto=(TR[I][0]%10)-1
GR=int((TR[I][0]-Puerto)/10-32)
addr=GR+32
estado=bus.read_byte(addr) #devuelve el valor en decimal del PCF en direccion addr
estado=bin(estado)
estado=estado[2:10]
Rele_Out_Ant[GR][Puerto]=int(estado[7-Puerto])
Con esto solo leemos y actualizamos los reles dados de alta en la BD
Al final voy a empezar a conocer algo de Python :leer::leer:
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Vale, dejame que pruebe mañana mi código para confirmar que funciona. Y luego implemento todo lo expuesto hoy.
Desde esta noche hasta el martes por la mañana tengo invitados en casa. Pero intentaré sacar tiempo para ello.
Lo único que no me convence es lo de los segundos, por ello implementaré el programa con 'hora'.
- - - - - - - - - - - - - - - - - - -
Cita:
Iniciado por
Mleon
Al final voy a empezar a conocer algo de Python :leer::leer:
Eso, seguro.
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
OK....
Por cierto viendo la web dos temas:
- El 13/Ago tuviste un pico negativo de Ibat de -70A......lo bueno es que se ve perfectamente
- En el grafico de Kwh bateria el valor sera en wh...ya te gustaria tener mil y pico Kwh por dia
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
Mleon
OK....
Por cierto viendo la web dos temas:
- El 13/Ago tuviste un pico negativo de Ibat de -70A......lo bueno es que se ve perfectamente
- En el grafico de Kwh bateria el valor sera en wh...ya te gustaria tener mil y pico Kwh por dia
1. Sí, es de ayer, con tanta prueba con la bomba de la depuradora.
2. Jajaja...ya te digo. Esta madrugada he pasado los Wh a kWh (/1000) que no lo tenía en el programa. Y luego he modificado la web. Lógicamente toda la info ahora sale como kWh. De todas formas, quizás vuelva a Wh. Iré viendo como va.
- - - - - - - - - - - - - - - - - - -
He cambiado también esta parte:
Código PHP:
if (ibat>0 and ibat<1 and abs(vbat-27.4)<0.2) :
DS = DS + (AH-DS)/50
Que se había quedado en 13,7. Estos días por la tarde veía que no llegaba el SOC al 100% y buscando encontré el fallo.
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
nikitto
- - - - - - - - - - - - - - - - - - -
He cambiado también esta parte:
Código PHP:
if (ibat>0 and ibat<1 and abs(vbat-27.4)<0.2) :
DS = DS + (AH-DS)/50
Que se había quedado en 13,7. Estos días por la tarde veía que no llegaba el SOC al 100% y buscando encontré el fallo.
Leñe lo habia visto pero se me paso comentartelo....lo logico dado que detectas la V del sistema (12, 24,48..) es que ese valor dependa de dicha variable
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Código PHP:
#declaracion variables
vflotacion = 0.0
Código PHP:
### Calcular voltaje sistema (12,24 o 48)
valor = adc.read_adc(2, gain=1)
voltaje = (valor * 0.125) / 1000
voltaje = voltaje * RES
if voltaje > 11 and voltaje < 15.5 :
vsis = 1
print('Voltaje nominal 12V')
vflotacion = 13.7
elif voltaje > 22 and voltaje < 31 :
vsis = 2
print('Voltaje nominal 24V')
vflotacion = 27.4
elif voltaje > 44 and voltaje < 62 :
vsis = 4
print('Voltaje nominal 48V')
vflotacion = 54.8
else :
print('Error: Imposible reconocer el voltaje del sistema')
sys.exit()
###
Código PHP:
#calculo del SOC
...
if (ibat>0 and ibat<1 and abs(vbat-vflotacion)<0.2) :
DS = DS + (AH-DS)/50
else :
DS = DS + (Ip * Tiempo_horas)
Hecho.
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
La ventaja de tener algo que controlas tu ........ y no un sistema cerrado
No sabes la rabia que tengo de no poder entrarle al FM80 al menos para que me diera sus datos (Vbat, Iplaca,....) y poder variarle los parametros de carga Vflot,Vabs,.... en remoto
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
Mleon
La ventaja de tener algo que controlas tu ........ y no un sistema cerrado
No sabes la rabia que tengo de no poder entrarle al FM80 al menos para que me diera sus datos (Vbat, Iplaca,....) y poder variarle los parametros de carga Vflot,Vabs,.... en remoto
Estoy casi seguro que acabarás haciéndote tu mismo un regulador.