Página 4 de 52 PrimerPrimer ... 34514 ... ÚltimoÚltimo
Resultados 76 al 100 de 1294
  1. #76
    Avatar de nikitto
    nikitto está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Cambrils
    Mensajes
    983

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    A medida que la programación avanza debo ir tomando decisiones sobre como hacer tal y tal.

    Lo primero que he descartado es la creación de un (segundo) archivo de respando donde se guardan todas las variables en tiempo real. Para dicho cometido me centro en el uso de una base de datos y su respectiva tabla de valores. Para realizar copias de seguridad se puede usar 'crontab'.

    La representación de gráficos y demás valores se hará mediante servidor web (Apache) y programación PHP. Del mismo modo, y para que la web sea más intersante, se colocarán botones para activar/desactivar lo que más convenga.

    El programa lo estoy realizando en Python y la base de datos con mySQL. Cualquier ayuda con Apache, PHP, Python y mySQL será bienvenida. Ya que mis conocimientos son bastante básicos. Muchas horas leyendo y probando. Gracias San Google.

    Lo siguiente, dar las gracias a Mleon por toda la ayuda ofrecida tanto a nivel de foro como a nivel privado, con mil y una explicaciones. Sin tu ayuda (y culpa, jajaja) no habría empezado esto.

    También dar las gracias a carlos6065 por este post sobre Peukert y otra vez a Mleon por recordármelo y ofrecerme su ayuda (y cálculos).

    Partiendo de que sabemos los Ah de la batería a C100 y a C10, podemos calcular primeramente el factor de Peukert y después los Ah a C20.

    Tomaré como ejemplo mi batería monoblock de 250Ah a C100 y 200Ah a C10.

    Siguiendo el post de Carlos6065, la cosa sería así:

    t1=10h
    t2=100h

    I1=200Ah/10h= 20 A
    I2=250Ah/100h=2,5 A

    n = (log 100 - log 10) / (log 20 - log 2,5) = (2-1) / (1,301 - 0,398) = 1,107 es el factor Peukert

    Con esto, ya estamos capacitados para calcular la intensidad de descarga a C20.

    Echamos mano otra vez del post de Carlos6065 y sustituimos los valores tal que:

    I2 = Raiz(1,107) de [(2,5^1,107 x 100) / 20)] = 10,699 A

    Aquí para calcular la raíz enésima

    10,699A x 20h = 213,98Ah (214Ah) a C20

    Mañana publicaré todo lo que tengo hecho en Python.

  2. #77
    Avatar de Mleon
    Mleon está desconectado Forero
    Fecha de ingreso
    may 2016
    Ubicación
    MADRID
    Mensajes
    991

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Tengo que comentar que Nikitto esta siendo un alumno de Matricula de Honor, y su implementación sobre Raspberry esta tomando una forma que reto a que encontréis un monitor de baterias comercial (aunque sea de los "caros") que tenga prestaciones similares

    Yo ya estoy esperando a que lo termine para tener ambas versiones (Duinomite y Raspberry)

    Felicidades

  3. #78
    el_cobarde Invitado

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Cita Iniciado por Mleon Ver mensaje
    Tengo que comentar que Nikitto esta siendo un alumno de Matricula de Honor ...
    Es una maravilla que en este foro tengamos "profesores" como carlos6025 y Mleon (y muchos más) y "alumnos " como nikitto (y muchos más) ...

  4. #79
    Avatar de nikitto
    nikitto está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Cambrils
    Mensajes
    983

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Vamos al lío:

    En /var/www tenemos la parte web. De momento 2 archivos muy, muy básicos:

    /var/www/index.php

    Código PHP:
    <html><body>

    <
    img src="grafico_linea.php" alt="" border="0">

    </
    body></html
    /var/www/grafico_linea.php

    Código PHP:
    <?php
    require_once('jpgraph/jpgraph.php');
    require_once(
    'jpgraph/jpgraph_line.php');
    require_once(
    'jpgraph/jpgraph_bar.php');
    // require_once('jpgraph/jpgraph_plotline.php');


    $x_axis = array();
    $y_axis = array();
    $i      0;

    $con    mysqli_connect("localhost""fv""fv""fv");

    // Check connection
    if (mysqli_connect_errno()) {
            echo 
    "Failed to connect to MySQL: " mysqli_connect_error();
    }
    $sql mysqli_query($con"SELECT Hora,Vbat FROM datos");

    while (
    $row mysqli_fetch_array($sql)) {
            
    $x_axis[$i] = $row["Hora"];
            
    $y_axis[$i] = $row["Vbat"];
            
    $i++;
    }

    mysqli_close($con);

    $graph  = new Graph(1000300);
    $graph->SetMargin(40,40,40,40);
    $graph->SetScale('textint');
    $graph->SetShadow();
    $graph->title->Set('Vbat');
    $graph->xaxis->title->Set('(Hora)');
    //$graph->xaxis->SetTickLabels($x_axis);
    $graph->yaxis->title->Set('(Vbat)');

    $plotline = new LinePlot($y_axis);
    $plotline->SetColor("blue");

    $graph->Add($plotline);
    $graph->Stroke();
    ?>
    Ahora vamos a por el programa, realizado en Python

    Código PHP:
    import time
    import MySQLdb

    # Importar modulo ADS1x15
    import Adafruit_ADS1x15

    # Variables, algunas estan, otras estaran y otras cambiaran
    AH 214.0
    CP 
    1.107
    EC 
    1.0
    #Tiempo_horas = tiempo de muestreo en horas = 1,5/3600 en este caso
    Tiempo_horas 0.000416667
    Ip 
    0.0
    Ip1 
    0.0
    Ip2 
    0.0
    float
    (CP)
    float(Ip)
    float(Ip1)
    float(Ip2)
    DS=[214.0,0.0,0.0]

    # Create an ADS1115 ADC (16-bit) instance.
    adc Adafruit_ADS1x15.ADS1115()

    # Para la conexion de ADS1115 uso la direccion por defecto (0x48) - Pin GND a Pin ADDR
    # aqui mas info: http://henrysbench.capnfatz.com/henrys-bench/arduino-voltage-measurements/arduino-ads1115-module-getting-started-tutorial/

    # Estas son las escalas con las que trabaja el ADS1115
    #  - 2/3 = +/-6.144V
    #  -   1 = +/-4.096V
    #  -   2 = +/-2.048V
    #  -   4 = +/-1.024V
    #  -   8 = +/-0.512V
    #  -  16 = +/-0.256V

    try:
            
    #conectar a base de datos
            
    db MySQLdb.connect(host "localhost"user "fv"passwd "fv"db "fv")
            
    cursor db.cursor()

    except Exception as e:
            
    #si no existe, la creamos
            
    print "Error, la base de datos no existe"
            
    time.sleep(1)
            print 
    "Creando base de datos fv ..."
            
    time.sleep(1)
            
    db MySQLdb.connect(host='localhost',user='fv',passwd='fv')
            
    cursor db.cursor()
            
    cursor.execute('CREATE DATABASE fv')
            
    #Por ahora estos datos...
            
    cursor.execute('CREATE TABLE fv.datos(id INT UNSIGNED PRIMARY KEY AUTO_INCREMENT, Fecha DATE, Hora TIME, Ibat FLOAT, Vbat FLOAT, SOC FLOAT, DS FLOAT$
            db.commit()


    print('
    Pulsa Ctrl-C para salir...')

    #aqui empieza el bucle
    while True:
            #leemos fecha y hora
            fecha = time.strftime("%y-%m-%d")
            hora = time.strftime("%H:%M:%S")

            #calcular la diferencia de voltaje en el shunt A0-A1
            value = adc.read_adc_difference(0, gain=16, data_rate=8)
            #calcular voltaje en A2 (voltaje bateria)
            valor = adc.read_adc(2, gain=1)

            # el ADS1115 es de 16 bits, pero uno es para el signo, entonces el valor máximo es 32767
            amps = (value * 256.0)/32767
            # 200.0/75 mi modelo de SHUNT
            amps = amps * (200.0/75)
            amps = round(amps, 2)
            print('
    amperios '), amps

            voltaje = (valor * 0.125)/1000
            vbat = round((voltaje * 10.96),2)

            ## 10,96 SUMA VALOR Resistencias
            print('
    Vbat '),vbat


            ### CALCULO SOC%
            if amps < 0 :
                    Ip1 = -amps
                    Ip1 = Ip1**CP
                    Ip1 = AH*Ip1

                    Ip2 = AH / 100
                    Ip2 = (Ip2**CP)*100
                    Ip= -Ip1/Ip2
            else :
                    Ip = amps * EC

            #Tiempo_horas esta definido en las variables al inicio del programa
            DS[0] = DS[0] + (Ip * Tiempo_horas)

            if DS[0] > AH :
                    DS[0] = AH
            if DS[0] < 0 :
                    DS[0] = 0

            print('
    AH='),AH
            print('
    DS[0]='),DS[0]
            print('
    DS[1]='),DS[1]
            print('
    DS[2]='),DS[2]
            print('
    Ip='),Ip

            if DS[0] > DS[1] :
                    DS[1] = DS[0]
            if DS[0] < DS[2] :
                    DS[2] = 0

            soc = DS[0]/AH*100
            print('
    SOC='),soc,('%')
            print(DS[1]/AH*100),('
    %')
            print(DS[2]/AH*100),('
    %')

            ### FIN CALCULO SOC%



            try:
                    #meter los datos en la base de datos
                    cur.execute("""INSERT INTO fv.datos(Fecha,Hora,Ibat,Vbat,SOC,DS) VALUES(%s,%s,%s,%s,%s,%s)""",(fecha,hora,amps,vbat,soc,DS[0]))
                    db.commit()
            except:
                    db.rollback()

            # Repetir bucle cada 1.5 segundos
            time.sleep(1.5)

    cur.close()
    db.close() 
    Todo esto es lo que tengo hasta ahora. Como dije, seguro se puede mejorar/pulir/rehacer/... cualquier ayuda en programación será bienvenida. Recordar que este trabajo es de un autodidacta; no soy informático, ni mucho menos programador. Pero a estas alturas, ya me gustaría...

  5. #80
    el_cobarde Invitado

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Hace unos días, nikitto escribió:

    Cita Iniciado por nikitto Ver mensaje
    Por otro lado hoy me he estado pegando con el shunt 200A 75mV. Una pregunta para vosotros, cuando el valor es positivo se está cargando la batería, ¿no? y cuando es negativo se está descargando.
    - - - - - - - - - - - - - - - - - - -

    Y yo le contesté:

    Cita Iniciado por el_cobarde Ver mensaje
    Eso depende de como hayas conectado al shunt.
    Simplemente significa, que un sentido de la corriente da el valor positivo y el otro sentido da el valor negativo.
    Es que lo que te marca el raspberry, es simplemente un valor proporcional a la caída de tensión en el shunt (200A, si la caída de tensión son 75mV), y este valor cambia de signo cuando la corriente cambia de sentido.
    - - - - - - - - - - - - - - - - - - -

    Cita Iniciado por el_cobarde Ver mensaje
    Si intercalas el shunt en el cable que va del regulador al borne negativo de la batería, entonces el "polo negativo" del shunt es el más cercano al borne negativo de batería (y claro, el "polo positivo" es el otro).
    Con esta convención, valor positivo significa cargar la batería y valor negativo, descargar la batería.
    Hay que reflexionar un poco sobre el tema de como conectar el shunt.
    En general se dice que "el polo negativo del shunt es el más cercano al borne negativo de la batería". Yo también lo dije así.
    Esto es correcto, cuando la batería alimenta al consumo!
    Pero en FV, es el regulador que carga o "alimenta" a la batería. Entonces, es al revés!
    En FV, entre regulador y batería, lo cierto es que "el polo negativo del shunt es el más cercano al borne negativo del regulador"

  6. #81
    Avatar de nikitto
    nikitto está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Cambrils
    Mensajes
    983

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Hice varias pruebas y tal cual lo tengo funciona. A0 -> borne - batería y A1 -> otro extremo

    Sin producción FV (paneles desconectados), tenía una intensidad negativa (sentido inversor) con un consumo aproximado de 50Wh. 40 de los cuales eran una bombilla de filamento y los otros 10 del propio inversor.

    Si conecto los paneles, la intensidad pasa, por lo general (depende del regulador, estado de la batería y consumo), a ser positiva porque se realiza una carga de la batería, aunque este en flotación y otro tanto de la producción FV pasa directamente a consumo, a encender la bombilla.

    - - - - - - - - - - - - - - - - - - -

    El esquema que subió Mleon AQUÍ es muy bueno, a mi entender. Porque al tener esos 2 shunts podemos calcular que intensidad entra en baterías y que intensidad va directa a consumo desde la propia producción FV.

    - - - - - - - - - - - - - - - - - - -

    No es una de mis mejores fotos, jajaja. Pero puede apreciarse que el cálculo de Vbat es casi,casi exacto a lo que marca el voltímetro:

    Control exhaustivo ciclo de carga/SOC/Cargas/etc-20160614_182823.jpg

    Y si no me fallan las mates: 3,88A x 12,88v = 49,97
    La intensidad de signo negativo porque está descargando de la propia batería
    Última edición por nikitto; 16/06/2016 a las 13:18

  7. #82
    junavar está desconectado Forero
    Fecha de ingreso
    ene 2011
    Ubicación
    madrid
    Mensajes
    393

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Cita Iniciado por nikitto Ver mensaje
    Todo esto es lo que tengo hasta ahora. Como dije, seguro se puede mejorar/pulir/rehacer/... cualquier ayuda en programación será bienvenida. Recordar que este trabajo es de un autodidacta; no soy informático, ni mucho menos programador. Pero a estas alturas, ya me gustaría...
    Veo mucho entusiasmo en lo que estás haciendo Nikitto.
    Si me permites una sugerencia, la manera de llevar a cabo proyectos de código cooperativo es emplear un lugar común donde pueda participar más gente y controlar eficazmente su evolución, versionado y derivaciones (forks). GitHub es una herramienta muy adecuada para estos menesteres aunque requiere cierto entrenamiento para su manejo.

    Por otro lado lado, creo que los interfaces de presentación WEB son muy importantes y en este sentido te sugiero que trabajes en HTML5, CSS y Javascript empleando un "framework" llamado "AngularJS". Te recomiendo que intentes que tus programas (servicios) devuelvan mera información en formato JSON, sin info HTML. Emplea AJAX en el código Javascript que se ejecuta el navegador para pedir asíncronamente esta información y formatearla en el terminal mediante paginas web dinámicas.

    Naturalmente es muy conveniente dar prioridad al empleo del móvil inteligente. En las aplicaciones web actuales se emplea un diseño que en la jerga se denomina "responsive" y "mobile first". Para ayudar en esto puedes emplear "Boostrap".

    Por último en javascript existen varias librerías para la representación gráfica muy potentes. Yo he empleado "google graphs" pero las mas reputadas se llaman "D3".

    Por supuesto son meros consejos que a lo mejor pueden ser de utilidad cuando avances un poco más en tu proyecto.
    Ten presente que la "programación" solo es una parte del complejo mundo de las tecnologías de la información.

    Saludos.

  8. #83
    Avatar de nikitto
    nikitto está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Cambrils
    Mensajes
    983

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Algunos aspectos importantes que debemos tener en cuenta para trabajar con bases de datos.
    Lo primero, debe existir el usuario. Entonces vamos a crearlo y a darle permisos:

    nikitto@asako ~ $ sudo mysql -u root -p
    Enter password:
    Welcome to the MySQL monitor. Commands end with ; or \g.
    Your MySQL connection id is 113
    Server version: 5.5.46-0+deb7u1 (Debian)

    Copyright (c) 2000, 2015, Oracle and/or its affiliates. All rights reserved.

    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.

    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

    mysql>

    Una vez dentro vamos a crear el usuario:

    mysql>CREATE USER 'fv'@'localhost' IDENTIFIED BY 'fv';

    usuario 'fv' en el mismo sistema y contraseña 'fv'
    y a darle permisos totales para una base de datos en concreto (fv) y las tablas que contenga (*):

    mysql>GRANT ALL ON fv.* TO 'fv'@'localhost';

    mysql>FLUSH PRIVILEGES;
    mysql>quit

    Con esto ya funciona el programa que subí antes.

    - - - - - - - - - - - - - - - - - - -

    Gracias junavar

    Tengo para 10 años

    - - - - - - - - - - - - - - - - - - -

    Control exhaustivo ciclo de carga/SOC/Cargas/etc-20160616_133424.jpg

    Más cositas van llegando.

  9. #84
    junavar está desconectado Forero
    Fecha de ingreso
    ene 2011
    Ubicación
    madrid
    Mensajes
    393

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Cita Iniciado por nikitto Ver mensaje


    Pulsa en la imagen para verla en tamaño completo

Nombre: 20160616_133424.jpg
Visitas: 167
Tamaño: 38,7 KB
ID: 14828

    Más cositas van llegando.
    Supongo que sabes que estos relés van con un optoacoplador que se activa por nivel bajo en la salida del pin GPIO de la RPi.

  10. #85
    Avatar de nikitto
    nikitto está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Cambrils
    Mensajes
    983

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Cita Iniciado por junavar Ver mensaje
    Supongo que sabes que estos relés van con un optoacoplador que se activa por nivel bajo en la salida del pin GPIO de la RPi.
    Código PHP:
    import RPi.GPIO as GPIO
    import time

    # Use physical pin numbers
    #GPIO.setmode(GPIO.BOARD)
    # Set up header pin 11 (GPIO17) as an output
    print "Setup Pin 11"
    GPIO.setup(11GPIO.OUT)

    var=
    1
    print "Start loop"
    while var==:
      print 
    "Set Output False"
      
    GPIO.output(11False)
      
    time.sleep(10)
      print 
    "Set Output True"
      
    GPIO.output(11True)
      
    time.sleep(10
    Ya lo he probado, alimentación Vcc a 5 V directo desde PIN2 y PIN 6 (GND). Para conectar/desconectar con PIN11.

    Control exhaustivo ciclo de carga/SOC/Cargas/etc-fn1yekzhn824u1e.jpg

    De todas formas el control de los módulos voy a realizarlo tal cual lo hace Mleon, con el integrado PCF8574P que se conecta también al puerto I2C.

  11. #86
    Avatar de Mleon
    Mleon está desconectado Forero
    Fecha de ingreso
    may 2016
    Ubicación
    MADRID
    Mensajes
    991

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Cita Iniciado por el_cobarde Ver mensaje
    - - - - - - - - - - - - - - - - - - -


    Hay que reflexionar un poco sobre el tema de como conectar el shunt.
    En general se dice que "el polo negativo del shunt es el más cercano al borne negativo de la batería". Yo también lo dije así.
    Esto es correcto, cuando la batería alimenta al consumo!
    Pero en FV, es el regulador que carga o "alimenta" a la batería. Entonces, es al revés!
    En FV, entre regulador y batería, lo cierto es que "el polo negativo del shunt es el más cercano al borne negativo del regulador"

    Conceptualmente:

    Un shunt no tiene polaridad dado que es una resistencia
    Como tal, su polo "positivo" o "negativo" dependera del sentido de la I que circule

    Si consideramos como convenio que Intensidad positiva es cuando se carga la batería y el shunt esta conectado en el cable negativo de la batería, en situaciones de carga de batería el positivo estará en el lado de la batería y el negativo en el lado del regulador, al contrario en caso de descarga de batería

    Comoquiera que lo que medimos es Voltaje diferencial entre ambos polos del shunt, (por ejm el A0 a un polo y el A1 al otro) independientemente de como los conecte lo único que hay que cuidar por SW es calcular A0-A1 o A1-A0 para que el signo de la corriente sea congruente con el convenio

    - - - - - - - - - - - - - - - - - - -

    Cita Iniciado por junavar Ver mensaje
    Veo mucho entusiasmo en lo que estás haciendo Nikitto.

    ..... forks... GitHub..... HTML5...... CSS ...... Javascript ......"AngularJS"...... JSON, ...HTML....AJAX .....Javascript...........asíncronamente.......... web dinámicas......"responsive" ....."mobile first"....... "Boostrap"...."google graphs"....."D3".
    Leñe junavar no acongojes

    Como persona de cierta edad, cuando me plantee este tema y lo quería en bajo coste y en plazo rápido, me decante por el duinomite porque me hizo gracia volver a la programación de Basic (esa que melancólicamente tenia el ZX-81, spectrum,....)

    Después, para gráficos off-line y base de datos, también por sencillez, opte por Ms-Access que viene con el Office (El excel te da menos funcionalidad y no es capaz de manejar el volumen de registros que se guardan)

    Para acceso remoto simplemente uso Teamviewer como escritorio remoto
    ....

    La idea de Nikitto con la Raspberry me parecio una muy buena alternativa (mas "moderna", potente, web, etc), y estoy contigo en el entusiasmo (y trabajo) con la que lo esta implementando

    Lo perfecto es enemigo de lo bueno, creo que es mas gratificante tener un primer prototipo funcional pronto y después "mejorarlo"

    Como veo que estas versado en estos temas, seria bueno que orientes en las decisiones de diseño que, de no tomarlas ahora, complica su introducción mas tarde

    En este sentido, Nikitto ha optado por una arquitectura (Base de datos: Mysql, ....), si ves que hay algo que no complica en exceso y da mas potencialidad ahora es el momento

    Si te animas, incluso te puedes meter en el lio y coger una parte (interfaz web, gráficos avanzados, etc)

    El concepto para el mundo FV es simple:

    Tengo los datos de Vbateria, Ibateria, Iplacas, SOC%,Temperatura..... de mi instalación cada 1,5 sg por ejm y quiero con esos datos:

    En tiempo real:
    Controlar "N" Reles (Luces, termo, Placas, Bateria Auxiliar, etc)
    Ver el grafico: IBat, Iplacas, Vbat de los ultimos 5 minutos por ejm
    ....

    En tiempo no real:

    Multiples graficos: por hora, dia, semana....

    Tablas Estadisticas: Maximo/minimo/Medio valor SOC, Vbat,Iplacas por hora/dia...

    ....


    Como esto acabe con una "web dinamica" dando prioridad al "movil inteligente" va a ser curioso dado que empezó con el modesto basic junto con un teclado y una pantalla vga

    - - - - - - - - - - - - - - - - - - -


    En mi programa en basic como es "lineal" el bucle esta en un menu que permite elegir varias opciones (programar los reles, ver resumen diario, etc)

    Utilizo una interrupcion SW cada 1,5sg para leer los valores de la instalación FV , "pintarlos", guardarlos en la SD y actuar en consecuencia con los reles activandolos o desactivandolos

    Con la Rpi entiendo que ya no tiene sentido una programacion lineal con interrupciones sino que se tendran activos varios procesos concurrentes:

    - Lectura de valores
    - Gráfico en tiempo real
    - Control Reles
    - .....

    Adicionalmente procesos de guardado de valores, servidor web, etc

    Entiendo que lo estas planteando así ¿no?


    ..............................


    El usar el PCF8574P , fue por dos motivos:

    - Hay posibilidad de ampliar hasta 8 integrados de 8 puertos GPIO luego 64 puertos con solo usar 2 cables del puerto I2C

    - Siempre es bueno (fallo en el cableado etc) que si me equivoco se queme un integrado de menos de 1€ que el micro
    Última edición por Mleon; 17/06/2016 a las 00:35

  12. #87
    Avatar de nikitto
    nikitto está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Cambrils
    Mensajes
    983

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Manuel, dale un vistazo al programa, está en la página anterior (8) http://www.solarweb.net/forosolar/fo...tml#post314389

    Gráficas por ahora no hace, ya que serán accesibles desde la web. Generación inmediata, leyendo los datos desde la BD.
    De momento el programa es pequeño, está en un mismo bucle que se repite cada 1,5 seg. al tiempo que se guardan los datos generados en la base de datos.

    Sobre lo de usar el integrado PCF8574P, estoy de acuerdo contigo (tengo pedidos 5 - a ver si llegan-). Prefiero que se queme uno, a que se queme la raspberry.

    Me haría falta saber con que condiciones, activar/desactivar relés. Ya sabes que mi instalación FV es de juguete por ahora. Y excedentes me sobran casi todos. Pero puedo dejar programada la activación de X relés según las condiciones del sistema: Vbat, Ibat, SOC, ... Con esto todavía no he jugado, y tengo ganas de meterle mano.

    Te he mandado un un vídeo por lo del PWM. Parece interesante, fácil y se podría implementar.

  13. #88
    Avatar de Mleon
    Mleon está desconectado Forero
    Fecha de ingreso
    may 2016
    Ubicación
    MADRID
    Mensajes
    991

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Cita Iniciado por nikitto Ver mensaje
    Manuel, dale un vistazo al programa, está en la página anterior (8) http://www.solarweb.net/forosolar/fo...tml#post314389

    Gráficas por ahora no hace, ya que serán accesibles desde la web. Generación inmediata, leyendo los datos desde la BD.
    De momento el programa es pequeño, está en un mismo bucle que se repite cada 1,5 seg. al tiempo que se guardan los datos generados en la base de datos.

    Sobre lo de usar el integrado PCF8574P, estoy de acuerdo contigo (tengo pedidos 5 - a ver si llegan-). Prefiero que se queme uno, a que se queme la raspberry.

    Me haría falta saber con que condiciones, activar/desactivar relés. Ya sabes que mi instalación FV es de juguete por ahora. Y excedentes me sobran casi todos. Pero puedo dejar programada la activación de X relés según las condiciones del sistema: Vbat, Ibat, SOC, ... Con esto todavía no he jugado, y tengo ganas de meterle mano.

    Te he mandado un un vídeo por lo del PWM. Parece interesante, fácil y se podría implementar.


    No se PHP, pero interpretando la logica (y sin meterme detalladamente) parece correcto y mucho mejor documentado (comentarios etc) que el mio

    Algunos consejos:

    Valores propios de cada instalacion (Shunt 200/75mV, divisor tension,... ) yo los tendria como variables al principio del programa y no dentro del codigo, asi el mas facil personalizarlo/cambiarlo

    Hay algunos "elementos de control" que habra que pulir por SW

    - Por ejm yo si durante la noche no tengo un valor de Iplaca >x considero I=0
    - Yo saco de la salida auxiliar del FM80 la situacion de Flotacion de las baterias y la leo/guardo (es verdad que si no se dispone de esa señal se puede calcular por ejm en base a que la bateria mantiene la Vflot durante X sg con una Ibat< Zamperios) y en ese caso decidir si corrijo o no el valor SOC que me esta dando el SW
    - ....

    ......................

    Con respecto a las condiciones para activar/desactivar reles

    Creo que ya he comentado como lo tengo programado:

    - Basicamente tengo 32 salidas (4ud PCF8734P)
    - Cada rele se activa cuando se cumplen todas la condiciones y se desactiva cuando se cumple al menos una condicion
    - Como condicion tengo un conjunto de parametros:

    Flot: Si esta en flotación el sistema
    Vbat: que puedo elegir si es > o < y un valor (por ejm >24,7 o <29,0)
    IBat: idem
    Soc: Idem
    Programacion horaria: a intervalos de 30'

    Por tanto yo defino en una tabla de 32 registros (1 por cada rele) la condiciones de On y de OFF por cada uno de esos parametros

    Si un parámetro no es relevante para un rele simplemente pongo una condición que siempre se cumpla (por ejm Vbat_ON>0)

    Como la "programacion de reles" esta guardada en la SD y la leo al principio del programa pasandola a una matriz, simplemente con los datos (Vbat, Ibat, SOC,hora,..) que leo de la instalacion activo o desactivo reles cada 1,5sg

    Un matiz....por eso de minimizar picos hago que solo se pueda encender 1 rele cada 1,5 sg, es decir que si por las condiciones que se dan deberian pasar de OFF a ON varios reles a la vez solo enciendo el primero y espero al siguiente 1,5 sg para encender el 2º y asi sucesivamente........para apagar si lo hago todos a la vez

    Como ejemplo.....

    ON: yo tengo puesto el Termo electrico que se encienda solo si
    - El sistema esta en flotacion
    - Vbat>25,0 (el valor dependera de los w que consuma el termo y de la bateria que se tenga)
    - Ibat>30 (el valor tambien dependera de la instalacionpero solo enciendo si esta cargando la bateria por encima de un valor de I)
    - SOC>95% (valor a criterio de instalacion/usuario)
    - En la programacion horaria tengo puesto varios intervalos para que no coincida con otras cargas (depuradora, etc)


    OFF: El termo se apagara si se cumple cualquiera de estas condiciones

    - Vbat<24,0 (el valor dependera de los w que consuma el termo y de la bateria que se tenga)
    - Ibat<-30 (el valor tambien dependera de la instalacion pero una valor que no haga sufrir mucho a la bateria)
    - SOC<90% (valor a criterio de instalacion/usuario)
    - Programacion horaria: los intervalos que no quiero que este encendida


    En las cargas que se prevea que va a existir mucho ON-OFF es mejor poner un rele SSR o ampliar los margenes de ON-OFF para que el rele no se estropee rapido



    Otro Ejemplo: Conectar Placas

    En este caso por ejm ON seria si Vbat<24.8 y OFF si Vbat>27.3......(¿ves la necesidad de > o < dependiendo de lo que se quiera controlar?)

    Otros Ejm:
    - Conectar Bateria Auxiliar
    - Activar Rele alto voltaje o bajo voltaje
    - Activar Rele bajo SOC,
    - .....


    ...............................


    No se si lo he comentado antes, pero, siguiendo con mi "criterio de diseño" si al final se ve la necesidad de tener control de PWM, quizas lo logico es usar un integrado a través de I2C

    Por ejm por unos 2€ tenemos el PCA9685 con 16 canales de 12 bits de resolución (mas que suficiente para las necesidades medias de una instalacion FV)

    De todas formas hay que tener en cuenta que PWM si se quiere usar para AC hay que utilizar un circuito de paso por 0 para implementar control de potencia por disparo de angulo de fase (o utilizar el "dispositivo" del Carlotron)

  14. #89
    Avatar de nikitto
    nikitto está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Cambrils
    Mensajes
    983

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Buena información. Sí señor.

    A ver, un par de cosas, la programación web está realizada en PHP, aunque está todavía muy verde.
    La programación del controlador está realizada en Python.

    Los valores tienes razón, mejor definirlos al principio del programa. Había pensado que se pueden solicitar al iniciar el programa y guardarlos en la base de datos. Si por algún problema se reinicia el programa/raspberry, recuperar los datos de la BD en caso de existir.
    También solicitar el voltaje del sistema:

    Introduce voltaje batería sistema:
    1- Batería 12V
    2- Batería 24V
    4- Batería 48


    Y construir toda la programacion en base a x1 (12), x2 (24) o x4 (48). Esto he de mirármelo bien.

    El Midnite Kid también puede facilitarme la señal (FLOAT ON) a través de la salida LOAD. Claro, para que sea libre de potencial debería poner algún tipo de relé. Pero casi prefiero que sea el mismo programa el que me diga esa situación. Repasaré la info que has aportado al respecto.

    ¿ Las placas también las controlas con uno/s de los relés del móludo de relés? He visto que pone máximo 10A.

  15. #90
    Avatar de Mleon
    Mleon está desconectado Forero
    Fecha de ingreso
    may 2016
    Ubicación
    MADRID
    Mensajes
    991

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Cita Iniciado por nikitto Ver mensaje
    ¿ Las placas también las controlas con uno/s de los relés del móludo de relés? He visto que pone máximo 10A.
    Las placas si tienes I>6-8A yo lo haria con SSR, en mi caso para conectar 2 conjuntos de placas tengo 2 SSR DC de 80A (con disipador y no mas de 40A de pico previsto)

    Pero si quieres controlar placas de una en una (cada 1 o 2 o 3... si están en serie) para conectarlas a un regulador (el principal) o a otro regulador (bat auxiliar)....como el rele es conmutador (1 entrada que conmuta entre 2 salidas) es especialmente fácil hacerlo, ¿no te parece?

    Esto lo tengo pensado implementar yo para al principio y final del dia (o en dias nublados) conectar mas placas al FM80 y en las horas centrales poner las placas a otro regulador que alimenta otro banco de baterias auxiliar que tengo de back-up

    -------------------------------------------

    Con respecto al inicio del programa, dado que en mi caso esta "desantendido", si se reinicia (tengo un watchdog activado por si se cuelga), el sistema arranca solo, carga los parámetros de la SD y ........ sigue con el control/datalogging

    Por ese motivo intenta "minimizar" la intervencion del usuario "obligatoria"......por ejm si quieres hacer un sistema valido para sistemas 12V-24V-.... lee el valor de Vbat al arrancar y ya esta

    Pongo el codigo de control de los 32 reles por si ayuda con los algoritmos (no esta optimizado, lo hice rapido pero.... funciona,....)

    Algunas aclaraciones
    En la matriz RELEOUT$() tengo 32 registros de texto con la programacion por cada rele...un ejm

    P,BAT_BAJA ,N,N,<230,>240,>-200,<-200,<99,>99,11111111111111111111111111111111111111 1111111111
    P,BAT_ALTA ,N,N,>302,<275,>-200,<-200,>50,<50,11111111111111111111111111111111111111 1111111111
    .....

    Tengo definida una subrutina para controlar cada GPIO de los integrados PCF8574P denominada I2C_RELE() ....intenta entenderla es un poco curiosa como esta hecha

    Por ejm I2C_RELE(&H21,5,1) significa que enciendo el puerto numero 5 en el PCF8574P que esta en la direccion &H21 del bus I2C

    En el programa uso logica positiva (1=ON, 0=OFF) solo en I2C-RELE() convierto la logica positiva a lo que necesita el PCF8574P para conectar el rele (0 en el puerto )

    Hay algunas instrucciones que solo tienen sentido en duinomite (pintar en pantalla, etc)

    Código PHP:
    '------------ SUB RELES SALIDA ----------
    RELES_SALIDA:
     FLAG_RELE=0
     If Val(Mid$(Time$,4,2))>29 Then MH=1 Else MH=0 ' 
    media hora

     
    If T1=9 Then ' en T1 tengo la tecla pulsada, si pulso 9 cambio de grupo de 8 reles a presentar en pantalla
       GR=GR+1:If GR=4 Then GR=0
     EndIf

     If T1>=1 And T1<=8 Then
       If Mid$(RELEOUT$(GR*8+T1),1,1)="E" Then a$="A" ' 
    Apagado
       
    If Mid$(RELEOUT$(GR*8+T1),1,1)="A" Then a$="P" ' Programacion
       If Mid$(RELEOUT$(GR*8+T1),1,1)="P" Then a$="E" ' 
    Encendido
       RELEOUT
    $(GR*8+T1)=a$+Mid$(RELEOUT$(GR*8+T1),2)
     EndIf

     
    '------------- FOR para CONDICIONES ON-OFF -----------
     For j1=1 To 32
     ' 
    control Horario  
       
    If FLAG_RELE=0 Then 'para encender solo uno cada vez
         RELESAL(j1)=Val(Mid$(RELEOUT$(j1),48+2*Hora+MH,1))
       Else
         RELESAL(j1)=RELESAL_ANT(j1)
       EndIf


     '
    Control Flotacion
       
    If Flot=And Mid$(RELEOUT$(j1),14,1)="S" Then RELESAL(j1)=0

       
    'Von
       If Mid$(RELEOUT$(j1),18,1)="<" Then
         If Volt>Val(Mid$(RELEOUT$(j1),19,3))/10 And RELESAL_ANT(j1)=0 Then
           RELESAL(j1)=0
         EndIf
       EndIf
       If Mid$(RELEOUT$(j1),18,1)=">" Then
         If Volt<Val(Mid$(RELEOUT$(j1),19,3))/10 And RELESAL_ANT(j1)=0 Then
           RELESAL(j1)=0
         EndIf
       EndIf

       '
    Voff
       
    If Mid$(RELEOUT$(j1),23,1)=">" Then
         
    If Volt>Val(Mid$(RELEOUT$(j1),24,3))/10 Then RELESAL(j1)=0
       
    EndIf
       If 
    Mid$(RELEOUT$(j1),23,1)="<" Then
         
    If Volt<Val(Mid$(RELEOUT$(j1),24,3))/10 Then RELESAL(j1)=0
       
    EndIf

       
    'Ion
       If Mid$(RELEOUT$(j1),28,1)="<" Then
         If Amp>Val(Mid$(RELEOUT$(j1),29,4)) And RELESAL_ANT(j1)=0 Then
           RELESAL(j1)=0
         EndIf
       EndIf
       If Mid$(RELEOUT$(j1),28,1)=">" Then
         If Amp<Val(Mid$(RELEOUT$(j1),29,4)) And RELESAL_ANT(j1)=0 Then
           RELESAL(j1)=0
         EndIf
       EndIf

       '
    Ioff
       
    If Mid$(RELEOUT$(j1),34,1)=">" Then
         
    If Amp>Val(Mid$(RELEOUT$(j1),35,4)) Then RELESAL(j1)=0
       
    EndIf
       If 
    Mid$(RELEOUT$(j1),34,1)="<" Then
         
    If Amp<Val(Mid$(RELEOUT$(j1),35,4)) Then RELESAL(j1)=0
       
    EndIf


     
    'SOC on
       If Mid$(RELEOUT$(j1),40,1)="<" Then
         If DS(0)/AH*100>Val(Mid$(RELEOUT$(j1),41,2)) And RELESAL_ANT(j1)=0 Then
           RELESAL(j1)=0
         EndIf
       EndIf
       If Mid$(RELEOUT$(j1),40,1)=">" Then
         If DS(0)/AH*100<Val(Mid$(RELEOUT$(j1),41,2)) And RELESAL_ANT(j1)=0 Then
           RELESAL(j1)=0
         EndIf
       EndIf


     '
    SOC off
       
    If Mid$(RELEOUT$(j1),44,1)=">" Then
         
    If DS(0)/AH*100>Val(Mid$(RELEOUT$(j1),45,2)) Then RELESAL(j1)=0
       
    EndIf
       If 
    Mid$(RELEOUT$(j1),44,1)="<" Then
         
    If DS(0)/AH*100<Val(Mid$(RELEOUT$(j1),45,2)) Then RELESAL(j1)=0
       
    EndIf

     
    'FORZADO
       If Mid$(RELEOUT$(j1),1,1)="E" Then RELESAL(j1)=1
       If Mid$(RELEOUT$(j1),1,1)="A" Then RELESAL(j1)=0

       '
    ---- ENCENDIDO RELE Volt>V_alarma SI Activa DERIVACION
       
    If Volt>V_alarma And Mid$(RELEOUT$(j1),16,1)="S" And FLAG_RELE=0 Then
         RELESAL
    (J1)=1
       
    EndIf
       If 
    Volt>V_alarma-And Mid$(RELEOUT$(j1),16,1)="S" And RELESAL_ANT(j1)=1 Then
         RELESAL
    (J1)=1   ' Dejo 1 Voltio de Histeresis para apagar
       EndIf
       '
    ------------

       If 
    RELESAL_ANT(j1)=And RELESAL(j1)=1 Then FLAG_RELE=1

     Next j1

    ' --------------------------------

      FM$(BB)=""
      For j1=1 To 32
        If RELESAL(j1)<>RELESAL_ANT(J1) Then
          RELESAL_ANT(J1)=RELESAL(J1)
          J2=(j1-1) Mod 8 +1
          If j1<=8 Then I2C_RELE(&H20,J2,RELESAL(j1))
          If j1>8 And j1<=16 Then I2C_RELE(&H21,J2,RELESAL(j1))
          If j1>16 And j1<=24 Then I2C_RELE(&H22,J2,RELESAL(j1))
          If j1>24 And j1<=32 Then I2C_RELE(&H23,J2,RELESAL(j1))
        EndIf
        I=(j1-1) Mod 8: J=(j1-1)\8 '
    para presentar situacion reles en pantalla
        
    Print @(I*6+62*6,J*12+24Format$(RELESAL(j1),"%1.0f");
        
    FM$(BB)=FM$(BB)+Str$(RELESAL(j1))
     
    Next j1

     
     T1
    =0

    Return

    '-------------------------Control RELES por I2C----------

    Sub I2C_RELE(DIREC,PORT,OUT) '
    Out=1 enc.puerto PORT en direccion DIREC
     I2C OPEN 100
    1000
     I2C READ DIREC
    ,0,1,Status_I2C  ' Leer el status actual de los 8 puertos
     If OUT=1 Then
       I2C_OUT=Status_I2C And (2^(PORT-1) Xor &HFF)
     Else
       I2C_OUT=Status_I2C Or 2^(PORT-1)
     EndIf
     I2C WRITE DIREC,0,1,I2C_OUT
     I2C CLOSE
    End Sub 


    ------------------------------------------------------ FIN

    Tengo algunos problemas con los tabuladores al copiar/pegar......se lee peor pero espero sea suficientemente claro......

    Actualizado gracias a consejo de Nikitto
    Última edición por Mleon; 16/06/2016 a las 23:51

  16. #91
    junavar está desconectado Forero
    Fecha de ingreso
    ene 2011
    Ubicación
    madrid
    Mensajes
    393

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Cita Iniciado por Mleon Ver mensaje
    Leñe junavar no acongojes...
    ¡Vaya!. Ya veo que he errado "el tiro".
    Cita Iniciado por Mleon Ver mensaje
    ... seria bueno que orientes en las decisiones de diseño que, de no tomarlas ahora, complica su introducción mas tarde
    Pues esa era la intención. Yo he aprendido lo poco que sé poniendo a punto el sistema de limitación de potencia de mi inversor Fronius. Por eso me he permitido hacer los comentarios sobre las tecnologías de interfaz de usuario a emplear. A la larga ahorran tiempo, dan mayor robustez al código y permiten su comoda visualización en los, ahora ubicuos, teléfonos inteligentes
    Cita Iniciado por Mleon Ver mensaje
    ... te puedes meter en el lio y coger una parte (interfaz web, gráficos avanzados, etc)
    Lo siento pero mi interés, al menos de momento, no pasa por emplear baterías sino por optimizar la conexión a red. Con la RPi lo que pretendo es el control de la potencia generada, la gestión de cargas no prioritarias y la monitorización y registro de los parámetros eléctricos para un mejor aprovechamiento y ahorro.
    Cita Iniciado por Mleon Ver mensaje
    Con la Rpi entiendo que ya no tiene sentido una programacion lineal con interrupciones sino que se tendrán activos varios procesos concurrentes.
    Sí. En mi opinión este es el mejor modelo. Pero para sacarle partido hay que tener un buen conocimiento de Linux y de su interfaz de programación lo que implica programar en C/C++.

  17. #92
    Avatar de Mleon
    Mleon está desconectado Forero
    Fecha de ingreso
    may 2016
    Ubicación
    MADRID
    Mensajes
    991

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Cita Iniciado por junavar Ver mensaje
    ¡Vaya!. Ya veo que he errado "el tiro".

    .
    No hombre es que, como yo empece a programar con tarjetas perforadas.....y casi me quede en ese nivel..... al leerlo me quede un poco apabullado por las nuevas tecnologías

    En cualquier caso gracias por las sugerencias

    - - - - - - - - - - - - - - - - - - -

    Cita Iniciado por junavar Ver mensaje
    Lo siento pero mi interés, al menos de momento, no pasa por emplear baterías sino por optimizar la conexión a red. Con la RPi lo que pretendo es el control de la potencia generada, la gestión de cargas no prioritarias y la monitorización y registro de los parámetros eléctricos para un mejor aprovechamiento y ahorro.
    Por favor, ¿puedes explicar con mas detalle lo que tienes hecho y su objetivo?

  18. #93
    Avatar de nikitto
    nikitto está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Cambrils
    Mensajes
    983

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Cita Iniciado por Mleon Ver mensaje
    Tengo algunos problemas con los tabuladores al copiar/pegar......se lee peor pero espero sea suficientemente claro
    Entra en modo avanzado de escritura, botón 'Ir a avanzado' y utiliza el icono PHP: Envolver con la etiqueta [PHP]...

    Código PHP:
    ejemplo
             ejemplo
                       ejemplo 
    -----
    Como ves hay mil formas de hacer lo mismo o parecido, tú usas Basic, yo Python y junavar C/C++. Seguro que sale otro que usa un lenguaje de programación diferente. Estuve tentado en hacerlo en C, pero Python me parece un muy buen lenguaje y con gran cantidad de librerías para hacerte la vida más cómoda.

    Las tarjetas programables las llegué a ver cuando estudiaba, pero nunca las usé. Allá por el año 85 (creo).

    Con todo lo que me has dado ya tengo curro. Ahora voy a centrarme en lo que me has dicho, para la autoconfiguración del voltaje del sistema (12,24 o 48) y Vflot.

  19. #94
    el_cobarde Invitado

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Cita Iniciado por Mleon Ver mensaje
    Un shunt no tiene polaridad dado que es una resistencia. Como tal, su polo "positivo" o "negativo" dependera del sentido de la I que circule.
    Exactamente! Es que nunca hay polo "positivo" o "negativo" absoluto, siempre es en comparación con un punto que esté a otro potencial. Esto es cierto hasta en una batería: En dos baterías conectadas en serie, el polo de en medio (donde están conectadas las baterías), es el positivo para una de las baterías y el negativo para la otra.
    Cuando por una resistencia circula corriente, habrá una caída de tensión en la resistencia. Entonces sí que un extremo de la resistencia será positivo respecto al otro (en el caso de CC). Pero claro, dependerá del sentido de la corriente que circula.
    Si lo prefieres, podemos llamar a los dos polos "el del cable rojo" y "el del cable negro".


    Cita Iniciado por Mleon Ver mensaje
    Si consideramos como convenio que Intensidad positiva es cuando se carga la batería y el shunt esta conectado en el cable negativo de la batería, en situaciones de carga de batería el positivo estará en el lado de la batería y el negativo en el lado del regulador, al contrario en caso de descarga de batería
    Justo esto es lo que quería decir. Parece que dicho con tus palabras se entiende mejor ...

  20. #95
    junavar está desconectado Forero
    Fecha de ingreso
    ene 2011
    Ubicación
    madrid
    Mensajes
    393

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Cita Iniciado por Mleon Ver mensaje
    ¿puedes explicar con mas detalle lo que tienes hecho y su objetivo?
    Puedes consultar el siguiente hilo.
    http://www.solarweb.net/forosolar/fo...berryp-pi.html

    Al final hay una referencia a un documento que explica el proyecto.
    Saludos.

  21. #96
    Gabriel 2015 Invitado

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Cita Iniciado por junavar Ver mensaje
    Puedes consultar el siguiente hilo.
    http://www.solarweb.net/forosolar/fo...berryp-pi.html

    Al final hay una referencia a un documento que explica el proyecto.
    Saludos.
    Excelente hilo; no lo había visto porque es antiguo.

  22. #97
    Avatar de Mleon
    Mleon está desconectado Forero
    Fecha de ingreso
    may 2016
    Ubicación
    MADRID
    Mensajes
    991

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Cita Iniciado por Gabriel 2015 Ver mensaje
    Excelente hilo; no lo había visto porque es antiguo.
    Estoy con Gabriel 2015 en cuanto a lo interesante del hilo de junavar

    Me ha hecho especial gracia, que cuando estaba leyendo los problemas que se derivan de la cuanto menos curiosa legislacion.......veo que en un grafico de la pag 2 aparece el subconsciente de junavar y escribe ......lavapleitos......en lugar de lavaplatos

  23. #98
    Avatar de nikitto
    nikitto está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Cambrils
    Mensajes
    983

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Una pequeña actualización del software:

    Código PHP:
    ### Calcular voltaje sistema (12,24 o 48)

    valor adc.read_adc(2gain=1)
    voltaje = (valor 0.125) / 1000
    voltaje 
    voltaje RES
    if voltaje 11 and voltaje 15.5 :
            
    vsis 1
            
    print('Voltaje nominal 12V')
    elif voltaje 22 and voltaje 31 :
            
    vsis 2
            
    print('Voltaje nominal 24V')
    elif voltaje 44 and voltaje 62 :
            
    vsis 4
            
    print('Voltaje nominal 48V')
    else :
            print(
    'Error: Imposible reconocer el voltaje del sistema')
            
    sys.exit()

    ### 
    ¿Cómo veis los voltajes?

    Otra parte en la que estoy trabajando:

    Código PHP:
            ### CALCULO FLOTACION

            
    if vbat >= (14.4 vsis) or soc >= 99 :
                    
    vabs 1

                    
    print('vbat '),vbat
                    
    print('amps '),amps
                    
    print('vabs '),vabs
                    
    if vbat >= (13.4 vsis) and vbat <= (13.85 vsis) and amps and vabs == 1  :
                            
    ## 20 x 1,5 = 30 segundos
                            
    contador contador 1
                            
    print('contador ='),contador
                            
    if contador == 20 :
                                    
    #print('Bateria en flotacion')
                                    # 1 = bateria en flotacion
                                    
    vflot 1
                                    contador 
    0
                                    vabs 
    0

                                    
    if soc >= 99 :
                                            print(
    'SOC correcto: 100%')

                                    else:
                                            print(
    'SOC no correcto. Autoreparar')
                                            
    DS[0] = AH

                    
    else :
                            
    contador 0
                            vflot 
    0
            
    else :
                    
    vabs 0

            
    ####

            
    if vflot == :
                    print(
    'Bateria en flotacion')

            
    #### PERMISO PARA ACTIVAR


                    ### ACTIVAR X

                    ### DESACTIVAR X

            #### 
    ¿ Ideas ? ¿ Mejoras ?

  24. #99
    Avatar de Mleon
    Mleon está desconectado Forero
    Fecha de ingreso
    may 2016
    Ubicación
    MADRID
    Mensajes
    991

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Cita Iniciado por nikitto Ver mensaje
    Una pequeña actualización del software:

    Código PHP:
    ### Calcular voltaje sistema (12,24 o 48) 


    ¿Cómo veis los voltajes?
    Por mi parte es suficiente para detectar el voltaje del sistema

    Cita Iniciado por nikitto Ver mensaje
    Otra parte en la que estoy trabajando:

    Código PHP:
            ### CALCULO FLOTACION 
    ¿ Ideas ? ¿ Mejoras ?
    Algun comentario

    Demasiado poco restrictivo que se cumpla en una sola muestra la condicion de V>14,4 (Absorcion)

    Es verdad que la condicion de Vbat>13,4 con amp<1 es bastante restrictiva y, a bote pronto, no veo casuistica que diera error (nubes, etc)

    Eso si, el no activar hasta que amps<1 asegurara la carga del sistema pero seguro pierdes algunos posibles excedentes que podrias utilizar

    No obstante el tema de entrar en flotacion, una vez que se "activa" no se deberia desactivar hasta otro tipo de condiciones, y por tanto el "else" con Vflot=0 no lo veo claro

  25. #100
    Avatar de nikitto
    nikitto está desconectado Forero
    Fecha de ingreso
    ago 2015
    Ubicación
    Cambrils
    Mensajes
    983

    Predeterminado Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc

    Siguiendo con la idea de Mleon de coger el estado de las baterías del propio regulador (FLOAT) y mientras no me llegan los integrados PCF8574P, he decidido usar uno de los puertos GPIO de la Raspberry. Este es el esquema eléctrico:

    Nombre:  pulsador.png
Visitas: 1033
Tamaño: 8,0 KB

    Y este el programa:

    Código PHP:
    import RPi.GPIO as GPIO

    GPIO
    .setup(7GPIO.IN)

    if (
    not GPIO.input(7)) :
        print (
    " Regulador: FLOAT"
    El Midnite KID no tiene una salida dedicada para este menester, pero si puedes usar la salida LOAD. Que puede activarse/desactivarse con diferentes configuraciones. Algunas tan interesantes como FLOAT ON o PWM Divert. Se coloca un relé y ya tenemos interruptor libre de carga.

Página 4 de 52 PrimerPrimer ... 34514 ... ÚltimoÚltimo



1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47