-
1 Archivos adjunto(s)
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
La descarga normal depende de cuando creemos que es sistema esta o no en riesgo por
- Bateria: Maxima descarga que pueda admitir las baterias de nuestro sistema
- Inversor: Potencia maxima de salida
En mi caso a 24v ...los 70A significan unos 1.700 w (microondas, termo, vitroceramica,...) pero si se pasa de esos watios ya puedo empezar a pasar del limite del inversor
- - - - - - - - - - - - - - - - - - -
Una posible opcion para control a distancia podria ser utilizar enchufes telecontrolados que se encuentran facilmente y bastante baratillos
Archivo adjunto 15000
Como tengo unos pocos mirare si es facil simular la pulsacion de los botones
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
Mleon
Una posible opcion para control a distancia podria ser utilizar enchufes telecontrolados que se encuentran facilmente y bastante baratillos
Archivo adjunto 15000
Como tengo unos pocos mirare si es facil simular la pulsacion de los botones
Pero ¿se pueden activar con el mando a cierta distancia (sin tener el enchufe delante) ?
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
Mleon
En mi caso a 24v ...los 70A significan unos 1.700 w (microondas, termo, vitroceramica,...)
En mi caso, a 48V y con 2 híbridos de 4kW en paralelo, los 70A son unos 3.5kW, que ya son kW. Pero la "jefa" no tiene problemas en llegar a 6kW o más, puntualmente ...
Cita:
Iniciado por
Mleon
Una posible opcion para control a distancia podria ser utilizar enchufes telecontrolados ... mirare si es facil simular la pulsacion de los botones
Si, es una opción. Pero creo que tienen poca cobertura, esos enchufes telecontrolados. No sirven para comunicar entre el regulador en 2a planta y el consumidor en planta baja, por ejemplo.
Con los últimos avances en WeMos (placa estilo Arduino, pero con WiFi), la comunicación por WiFi se ha hecho fácil.
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
nikitto
Pero ¿se pueden activar con el mando a cierta distancia (sin tener el enchufe delante) ?
En general si.....hay muchos modelos dependiendo de W maximos , distancia,....
Por ejm ...
Pocos W y mas distancia....https://www.amazon.es/Elro-AB440S-3C.../dp/B002QXN7X6
Mas W....https://www.amazon.es/dp/B006H0XNFQ/...HDP9FNJ9XVBEWS
Uno intermedio...https://www.amazon.es/dp/B016I3TZ58?psc=1
Es una opcion....pero todo dependera de precio/prestaciones en comparacion con otras opciones (wifi,...)
-
1 Archivos adjunto(s)
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Archivo adjunto 15002
Hasta aquí las gráficas, a falta de implementar Iplaca y Temperatura. A partir de hoy me centraré en los excedentes (on/prog/off relés, condiciones, etc).
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
Mleon
En general si.....hay muchos modelos dependiendo de W maximos , distancia,.... Por ejm ...
No sé , no sé, los tres ejemplos que pones no me parecen tener mucho alcance; para los tres pone "Alcance inalámbrico de hasta 50 / 30 metros". Si comparamos esto con los 300m que suelen decirse para el alcance WiFi ...
Sé que los 300m del WiFi se pueden alcanzar (con dificultad) al aire libre, sin obstáculos. Dentro de una casa la señal suele llegar de una planta a otra, pero pocas veces se consigue comunicar entre segunda planta y planta baja. Yo, por ejemplo, necesito repetidor WiFi para conseguirlo.
Supongo que los 50m de los enchufes RF hay que entenderlos de una forma similar y no servirán para mucha distancia en interior.
-
2 Archivos adjunto(s)
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
nikitto
Hasta aquí las gráficas, a falta de implementar Iplaca y Temperatura. A partir de hoy me centraré en los excedentes (on/prog/off relés, condiciones, etc).
OK...el highchart no tiene secretos para ti ya
- - - - - - - - - - - - - - - - - - -
Cita:
Iniciado por
el_cobarde
No sé , no sé, ...
Supongo que los 50m de los enchufes RF hay que entenderlos de una forma similar y no servirán para mucha distancia en interior.
Estoy de acuerdo...es una opcion a considerar...no es la unica opcion a estudiar
Una prueba con estos que tengo
Archivo adjunto 15003
Los pille baratillos (<5€ mando mas enchufe) en un conocido hipermercado
Caracteristicas
- Alcance 25m
- W: 1.150w
Pruebas.
-En zona mas o menos diafana de unos 13m ...sin problema
-Entre plantas: En algunos sitios bien....en otros hay que pulsar mas de una vez o no va
-Entre dos plantas: idem que entre plantas
El mando se alimenta a 12V y son botones...... luego es facil atacarlos
Archivo adjunto 15004
NO es perfecto pero puede ser solucion en algunas necesidades a un precio bajo
No obstante estoy de acuerdo en ver opcion por wifi dado que parece tener mayor potencial
He visto en alliexpress un ejm por unos 11€
Aliexpress.com: Comprar Lo nuevo Wifi Smart Plug Power Socket App Control Remoto Inalámbrico Temporizador de Interruptor de Pared Enchufe del Aparato Electrodoméstico Automatización UE EE. UU. Estilo de Tomas de Corriente fiable proveedores en AliKo
Lo que no se es si es facil o no activar dichos enchufes comerciales via SW que desarrollemos en RPi/Arduino,..
Lo que me gusta de estas opciones es que la "caja" ya esta implementada y es de "muy facil" instalacion
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
He estado dando un vistazo al tema de como activar los relés a través del integrado PCF8574 y la cosa parece bastante fácil. Pongo un ejemplo de lo que he encontrado en la web:
(Básicamente los comandos son: bus.write_byte() and bus.read_byte() - en negrita el que usaremos)
Código PHP:
from smbus import SMBus
from itertools import cycle
from time import sleep
LED1 = 0x01
LED2 = 0x02
LED3 = 0x04
LED4 = 0x08
LED5 = 0x10
LED6 = 0x20
LED7 = 0x40
LED8 = 0x80
PATTERN = (LED1, LED2, LED3, LED4,
LED5, LED6, LED7, LED8,
LED7, LED6, LED5, LED4,
LED3, LED2)
bus = SMBus(1) # Port 1 used on REV2
for LED in cycle(PATTERN):
bus.write_byte(0x38, LED)
sleep(0.1)
https://www.youtube.com/watch?v=qpc7IaVqkC8
Fuente: http://electronicsbyexamples.blogspo...pberry-pi.html
- - - - - - - - - - - - - - - - - - -
Lo que veo es que usando este comando, se activa la salida y desactiva, tan pronto acaba el comando sleep. Supongo que hay alguna forma para primero, activar y luego, con otro comando desactivar.
- - - - - - - - - - - - - - - - - - -
Estoy repasando tu mensaje #90, allí es donde está todo el meollo del control de relés (condiciones, horarios, etc.) Habrá que ir descifrándolo.
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
nikitto
He estado dando un vistazo al tema de como activar los relés a través del integrado PCF8574 y la cosa parece bastante fácil. Pongo un ejemplo de lo que he encontrado en la web:
(Básicamente los comandos son: bus.write_byte() and bus.read_byte() - en negrita el que usaremos)
En mi caso usos los dos...leer y escribir
Cita:
Iniciado por
nikitto
Código PHP:
....
bus.write_byte(0x38, LED)
....
Esta facil....simplemente la funcion escribe en el integrado de la direccion 0x38 el valor que tenga LED.....
Asi por ejm
bus.write_byte(0x38, 0x00)....apagara todos los led
bus.write_byte(0x38, 0xFF)....encendera todos los led
bus.write_byte(0x38, 0x0F)....encendera los 4 ultimos y apaga los 4 primeros
para tener el control individual de cada rele yo me hice una funcion que indico de nuevo
'-------------------------Control RELES por I2C----------
Código PHP:
Sub I2C_RELE(DIREC,PORT,OUT) ' Out=1 enc.puerto PORT en direccion DIREC...OUT=0 apaga
I2C OPEN 100, 1000
I2C READ DIREC,0,1,Status_I2C ' Leer el status actual de los 8 puertos y lo pone en Status_I2C
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
Es facilmente implementable en RPi....
OPEN....CLOSE no hace falta ...ya te lo hace la libreria que tienes
Con esta funcion...puedes encender o apagar cada rele de cada integrado...por ejm
I2C_RELE(0x20,5,1) encenderia el puerto 5 del integrado que este en la direccion 0x20
I2C_RELE(0x22,4,0) apagaria el puerto 4 del integrado que este en la direccion 0x22
.....
Con la logica que aplicamos en la funcion (and... Xor... or..) el resto de puertos se quedan como esten...apagados o encendidos
Cita:
Iniciado por
nikitto
Estoy repasando tu mensaje #90, allí es donde está todo el meollo del control de relés (condiciones, horarios, etc.) Habrá que ir descifrándolo.
Segun comentado empieza implementando la funcion y prueba a encender y apagar los reles
.............
Respecto al control wifi....mirando un poco se ven cosas impresionantes en precio/prestaciones
http://es.aliexpress.com/store/produ...f-6bd0aa64950d
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
Mleon
Respecto al control wifi....mirando un poco se ven cosas impresionantes en precio/prestaciones ...
Exactamente! Cuando hablo de WiFi, no me refiero a enchufes WiFi, sino al ESP8266.
Después de mucho buscar y hablar con eseperao, me he decidido por la placa WeMos D1 R2, basada en el ESP8266. Hace la función de Arduino (más potente), emisora y receptora WiFi, y es fácil de programar.
Con la placa WeMos puedes hacer (casi) todo lo que se te ocurra ...
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
el_cobarde
Exactamente! Cuando hablo de WiFi, no me refiero a enchufes WiFi, sino al ESP8266.
Después de mucho buscar y hablar con eseperao, me he decidido por la placa WeMos D1 R2, basada en el ESP8266. Hace la función de Arduino (más potente), emisora y receptora WiFi, y es fácil de programar.
Con
la placa WeMos puedes hacer (casi) todo lo que se te ocurra ...
Vale, pero está placa la conectarías al arduino, ¿no? Entonces p.e. donde tienes el termo eléctrico, ¿que otra placa pones? ¿O sirve la misma ? He leído que es emisora/receptora.
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
nikitto
Vale, pero está placa la conectarías al arduino, ¿no?
La WeMos no se conecta al Arduino, ella misma "es" un Arduino, y con bastante más potencial que el Arduino Uno.
Entra en Google y busca WeMos - te quedarás asombrado ... :cool:
Cita:
Iniciado por
nikitto
Entonces p.e. donde tienes el termo eléctrico, ¿que otra placa pones? ¿O sirve la misma ? He leído que es emisora/receptora
La WeMos sirve como emisora y como receptora - y para mucho más.
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Un poco más y ayer me quedo sin proyecto, por culpa de un corto. Por suerte pude recuperar la RPi.
Bueno, pasado el susto, sigamos:
Código PHP:
from smbus import SMBus
import time
bus = SMBus(1) #RPi rev.B
def i2c_rele(addr,port,out) :
estado=bus.read_byte(addr) #devuelve el valor en decimal
estado=hex(estado) #lo paso a hexadecimal
if out == 1 :
#i2c_out = estado and (bool(2**(port-1)) != bool(0xFF)) #este 0xFF quizás debá ser 0x00
i2c_out = (bool(estado and (2**(port-1))) != bool(0xFF))
# primero realizo el 'and' de los 2 primeros operandos, y el resultado Xor con el último operando
else :
i2c_out = estado or 2**(port-1)
bus.write_byte(addr,i2c_out)
return
Manuel, esta es la función que pusiste pasada a python. No la he probado por ahora.
Pero veamos varias cosas de las que no he encontrado info:
Cita:
Asi por ejm
bus.write_byte(0x38, 0x00)....apagara todos los led
bus.write_byte(0x38, 0xFF)....encendera todos los led
bus.write_byte(0x38, 0x0F)....encendera los 4 ultimos y apaga los 4 primeros
Esto en mi caso es al revés. P.e. para apagar todo mando un 0XFF. Pero esto ahora no es importante.
Lo que me interesa, es como acceder a cada puerto en concreto, que es lo que queda definido en tu función.
No me queda claro que la instrucción bus.write_byte(addr, valor_hex) pueda acceder a una posición X concreta.
Siendo los puertos del P0 a P7, ¿qué valor hexadecimal tiene cada uno?
- - - - - - - - - - - - - - - - - - -
He sacado la calculadora de programador (windows) y obtengo los siguientes resulatados:
Port - Dec - Hex
P0 - 1 - 1H
P1 - 2 - 2H
P2 - 4 - 4H
P3 - 8 - 8H
P4 -16 - 10H
P5 -32 - 20H
P6 -64 - 40H
P7 -128 - 80H
Ahora entiendo lo de 0x00 y 0xFF, yo estaba equivocado. La salida es por lógica positiva (positivo). Será después que habrá que convertir el valor, ya que los módulos de relés trabajan con lógica negativa.
Después de esto último si le veo potencial a la instrucción bus.write_byte(addr, port). Manos a la obra.
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Caray....un corto....¿hubo alguna victima o solo susto?
Leyendo tu mensaje......
¿ No entiendo demasiado la necesidad de pasar a hexadecimal, etc?
Si tu en Python pones:
A1=128 and 0xFF
A2=128 or 0x00
Que valores te da A1 y A2?
Si te dan 128 ..ok...codifica simplemente mi codigo
-
1 Archivos adjunto(s)
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Archivo adjunto 15009
Este es el resultado de las operaciones.
El corto lo sufrió la RPi...pero pudo recuperarse. El susto yo.
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
No sale bien el and....puedes definir A1 y A2 como de tipo Byte
Para asegurar que el OR funciona ... pon
A2=128 or 0x01 por ejm o
A2= 4 or 0x02
-
1 Archivos adjunto(s)
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Ya he averiguado donde esta el fallo, por lo visto hay que usar el operador '&'.
Aquí la imagen:
Archivo adjunto 15010
Habrá que cambiarlo en la función que he definido pues.
-
2 Archivos adjunto(s)
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
nikitto
Ya he averiguado donde esta el fallo, por lo visto hay que usar el operador '&'.
OK
De todas formas la prueba definitiva seria:
Código PHP:
addr=dirección donde este el integrado
bus.write_byte(addr,0x01) # activo todos los reles menos el primero
estado=bus.read_byte(addr) #devuelve el valor en decimal
Print estado # debería dar 1
estado=estado | 0x02 # el OR se debe poner asi
Print estado # debería dar 3
estado=estado & 0x02
Print estado # debería dar 2
bus.write_byte(addr,estado) # activo todos los reles menos el segundo
.-------edito...comprobado que funciona ------
Operadores en Python a nivel de bit
Archivo adjunto 15012
Comprobación.....
Archivo adjunto 15013
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Gracias Manuel. Encontré la web de los operadores ayer.
Mientras, me he dejado de leds y he conectado el módulo de 8 relés directamente a la salidas del integrado, respetando voltajes.
Me explico, para el que nos siga, la señales de la RPi son a 3,3 Vcc; aunque si dispone de 1 terminal de 5Vcc. Las masas (negativo) son comunes.
Entonces lo que hago es alimentar al módulo de 8 relés con +- 5V, y como la señal para activar los relés del módulo es por lógica negativa (negativo -) la salida del PCF8574P ya las pueden atacar directamente. Cuando la salida p.e. P0 = 3,3v el relé estará deconectado y cuando pase a 0V estará conectado.
Es un poco lioso pero es así. Por eso he pasado de los leds (que tonto de mi, los había montado para funcionar con lógica positiva -de ahí alguno de los malentendidos, que si 0xff o 0x00-) y he puesto el módulo. Ahora ya no hay error posible.
Ahora pongo el programa:
- - - - - - - - - - - - - - - - - - -
Código PHP:
from smbus import SMBus
import time
bus = SMBus(1) #Rpi rev.B
#apagar todo
bus.write_byte(0x20,255)
print('R1_1...R1_8 OFF - Reles modulo 1')
time.sleep(2)
def i2c_rele(addr,port,out) :
estado=bus.read_byte(addr) #devuelve el valor en decimal
if out == 1 :
i2c_out = estado & (2**(port-1) ^ (255))
print('i2c_out(=1)'),i2c_out
else :
i2c_out = estado | 2**(port-1)
print('i2c_out(!=1)'),i2c_out
bus.write_byte(addr,i2c_out)
return
while True:
#encender P0
i2c_rele(0x20,1,1)
print('R1_1 ON')
time.sleep(2)
#encender P1
i2c_rele(0x20,2,1)
print('R1_2 ON')
time.sleep(2)
#encender P2
i2c_rele(0x20,3,1)
print('R1_3 ON')
time.sleep(2)
#encender P3
i2c_rele(0x20,4,1)
print('R1_4 ON')
time.sleep(2)
#apagar todo
bus.write_byte(0x20,255)
print('apagando...')
time.sleep(2)
Con esto, primero me aseguro que se apague todo, y luego es una secuencia de encendido y vuelta a empezar.
- - - - - - - - - - - - - - - - - - -
He aplicado la definición de la función dentro del programa de FV.py con estas simples condiciones:
Código PHP:
if soc > 90 and vflot ==1 :
i2c_rele(0x20,1,1)
else:
print('no se dan las condiciones')
i2c_rele(0x20,1,0)
Cosas que veo:
- El Relé1 se enciende porque se dan las condiciones - OK
- Se repite el bucle, y cuando se llega a la sentencia en cuestión, Relé1 se apaga, y al siguiente bucle vuelve a encenderse.
- Supongo que he de añadir alguna sentencia más en la que diga que si Relé1 ya está a ON, entonces que no haga nada ¿?¿?
Corregido, gracias a Mleon; un parentesis mal puesto. Ya está modificado el código.
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Chequea los parentesis de la funcion
Debe ser...
estado & (2**(port-1) ^ (255))
Ademas es logico que haya condiciones con un poco de histeresis entre ON y OFF para que el rele no este conmutando muchas veces
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
Mleon
Chequea los parentesis de la funcion
Debe ser...
estado & (2**(port-1) ^ (255))
Ademas es logico que haya condiciones con un poco de histeresis entre ON y OFF para que el rele no este conmutando muchas veces
Quedó arreglado colocando bien el parentesis. Gracias una vez más.
Hoy he recibido el resto de material para acabar la ampliación a 24V, es decir, tan pronto tenga todo montado, sigo con esto.
PD: Modifico el código del mensaje anterior, por si alguien lo va a usar.
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
OK...por eso de ser didáctico analicemos lo que hace la función
Partimos de la idea de que la placa de reles tienen lógica negativa es decir se enciende con un "0" y se apaga con un "1" pero en la función vamos a utilizar lógica positiva (1 enciende y 0 apaga)
Pongamos el código del programa por partes con dos ejm....
I2c_rele(0x20,3,1) debe encender el rele3
I2c_rele(0x20,5,0) debe apagar el rele5
Código PHP:
def i2c_rele(addr,port,out) :
definimos una función para apagar o encender un rele con esta lógica:
- addr define la dirección física en donde esta el integrado que controla los reles ( en el ejm 0x20)
- port: numero de rele (de 1 a 8)...en los ejm el rele nº3 y el nº5
- out: 1 para encender y 0 para apagar
Código PHP:
estado=bus.read_byte(addr) #devuelve el valor en decimal
Lee la situación actual de encendido/apagado de los 8 reles y lo almacena en la variable estado
Para el ejemplo pensemos que nos da el valor 0100 1100 en binario, es decir encendidos lo reles 1,2,5,6,8 (recordar lógica negativa 0=encendido)
Código PHP:
if out == 1 :
i2c_out = estado & (2**(port-1) ^ (255))
print('i2c_out(=1)'),i2c_out
Para el caso de encender (rele3) hagamos la secuencia de cálculos viendo el resultado en binario por claridad
2**(port-1)= 2**( 3-1)=2**2=4=0000 0100
2**(port-1) ^ 255 = 0000 0100 ^ 1111 1111= 1111 1011
i2c_out=estado & (2**(port-1) ^ (255))= 0100 1100 & 1111 1011 = 0100 1000
luego vemos que todos los reles permanecen como estaban salvo el rele3 que cambia de 1 a 0 (de apagado a encendido)
Código PHP:
else :
i2c_out = estado | 2**(port-1)
print('i2c_out(!=1)'),i2c_out
Para el caso de apagado (rele5) hagamos la secuencia de cálculos viendo el resultado en binario por claridad
2**(port-1)= 2**( 5-1)=2**4=16=0001 0000
i2c_out=estado | 2**(port-1) = 0100 1100 | 0001 0000 = 0101 1100
luego vemos que todos los reles permanecen como estaban salvo el rele5 que cambia de 0 a 1 (de encendido a apagado)
Código PHP:
bus.write_byte(addr,i2c_out)
return
Escribimos la variable calculada i2c_out en el integrado para aplicar los cambios realmente al estado de los reles y salimos de la función
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
:leer: muy buen post Manuel. Super clarificador.
-
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Cita:
Iniciado por
nikitto
:leer: muy buen post Manuel. Super clarificador.
Gracias...había detectado un poco de lio con la lógica negativa/positiva, lo que hacia la función, ....
Mejor siempre entender lo que se hace,,,asi por ejm si se quiere cambiar la numeración de los reles de 1-8 a 0-7 para adaptarla a la numeracion de los puertos del integrado (P0-P7) se entiende que solo hay que cambiar "Port-1" a "Port"
En mi caso decidi utilizar lógica positiva para encender y numeración empezando por 1
PD: En mi caso alimento los 5v de los reles con un conversor DC-DC para no cargar mucho la salida 5V del micro
-
1 Archivos adjunto(s)
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Antes iba a subir una foto del (mal) montaje, pero me quedé sin internet. La subo ahora. En ella se ve como según se cumplen las condiciones de soc>90 'y' Vflot==1 se enciende el Relé1 (led rojo).
A parte del fallo del parentesis, el malentendido fue debido al uso de lógica positiva para los led, cuando de buen principio debería haberlos conectado tal cual el módulo de relés.
La nomenclatura de los puertos, NO coincide con el de los módulos, donde Relé1 = IN1. Lo importante es tener claro que P0-> Relé1, P1-> Relé2, etc.
Archivo adjunto 15015
Al final soldé el PCF8574P a una placa de CI de pruebas porque mi 'vieja' protoboard de cuando estudiaba FP2 ya no está para muchos trotes.