Resultados 26 al 50 de 1294
- 08/06/2016, 16:17 #26
-
- 08/06/2016, 16:43 #27el_cobarde Invitado
- 08/06/2016, 16:45 #28
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
- 08/06/2016, 18:09 #29
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Para medir la intensidad iba a conectar el shunt directamente a A0 y A1 (modo diferencial). Luego, tal como dices, usando un divisor de tensión calcular el voltaje de la batería; usando las entradas A2 y A3 también en modo diferencial.
https://es.wikipedia.org/wiki/Divisor_de_tensi%C3%B3n
- - - - - - - - - - - - - - - - - - -
http://opendatalogger.com/hardware.html#.V1hBeL4auWw
Lo que tengo que ir es con cuidado con las tensiones, con la raspberry he de trabajar a 3,3 V.
- 08/06/2016, 21:04 #30
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Para el caso del shunt en donde se manejan voltajes pequeños si lo debes usar en modo diferencial (por ejm A0- A1 como indicas)
Para el caso de medir el Voltaje de la batería te sobra con usar una sola entrada (por ejm A2) con un divisor de tensión con un esquema mas o menos así (si quieres ser un poco mas preciso conecta el divisor de tension ANTES del shunt y no después como he dibujado
Como ves he puesto el divisor con R1=22K y R2=1K lo que te da margen mas que de sobra medir voltajes del orden de 48V (se convierten aprox. a 2,1v) y dado que el ADS1115 tiene 16 bits de resolución creo que tienes suficiente precisión
Si te equivocas, lo normal es que quemes el ADS1115, dado que la conexión ADS1115/Raspberry es por I2C y por tanto es mas difícil que le lleguen voltios "peligrosos"
No obstante, siempre recomendaré que se compruebe mas de una vez el cableado antes de conectar
- - - - - - - - - - - - - - - - - - -
Gracias
La verdad es que usando esto, se tiene bastante mas control de la instalación que con un monitor típico de baterías, por un importe bastante inferior (aprox 50€ si tienes un monitor/teclado de PC que puedas reciclar) y ademas controlas tu el SW (tanto del equipo como del PC) para adaptarlo a tu necesidad (control de reles, gráficos, etc)
Como se ve en los gráficos tengo bastante margen de excedentes, por lo que haremos sinergia con tu brico (por cierto....¿como mides tu la Intensidad de placas o batería para pasárselo al arduino?).......
....Me autocontesto....he visto en tu brico que usas uno por efecto hall (ACS712), en mi caso no opté por esta solución sino por Shunt+Amplificador diferencial, tanto por la Intensidad que manejo (>120A) como por la precisión de la medida (creo además que la caída de voltaje sera superior a usar un shunt, pero vamos que es perfectamente correcto su uso)Última edición por Mleon; 08/06/2016 a las 21:21
- 09/06/2016, 01:09 #31
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Bueno, ya he empezado a obtener los primeros resultados. Aunque habrá que mirar a que equivale cada valor.
Como todavía no he acabado la ampliación a 24V y la raspberry la uso para otros menesteres, he montado un banco de pruebas con una batería 18650 de 3,7V conectada al Shunt y a un pequeño consumo. Y el shunt conectado a las entradad A0 y A1 (para el uso en modo diferencial).
Por otra parte, aprovechando el voltaje de alimentación (3,3V) de la placa he colocado una resistencia variable: patita central a A2 y las otras 2, a 3,3 y a 0 respectivamente. Al girar el eje he obtiendo diferentes valores a la entrada de A2 (habría que saber a que voltaje corresponde cada valor).
Ejemplo (escrito en python) de como se obtienen los valolres de caida de tensión en el shunt:
import time
import Adafruit_ADS1x15
#previamente he instalado esta librería
adc = Adafruit_ADS1x15.ADS1115()
GAIN =16
# 16 = +/-0.256V
# tengo que ajustar este valor haciendo pruebas
while True:
value = adc.read_adc_difference(0, gain=GAIN)
# el 0 indica canal 0 menos canal 1
print('Canal 0 menos 1: {0}'.format(value))
time.sleep(1)
#pausa de 1 segundo entre mediciones
- 09/06/2016, 01:24 #32
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Me alegro
Para calcular a lo que corresponde el valor de voltaje medido en el shunt con la intensidad que pasa es simplemente una proporcion.....es decir si tu shunt es de 200A 75mV significa que cuando pasan 200A tienes 75 mV ......luego si mides 7,5mV estan pasando 20A o sea 0,375mV por Amperio
Con respecto al codigo .....no conozco ese lenguaje por lo que no veo con la libreria importada o simplente te lo da ya hecho la libreria como programas el ADS1115 para, en el caso del shunt, ponerlo en modo diferencial y fondo escala a 256mV, frecuencia de muestreo etc...... pero vamos que no parece dificilPVControl+ (web espejo a la real cada 5'...se puede trastear)
Manual Instalación desde Imagen SD
Manual Instalación Reles Wifi
Algo de Funcionalidad (ya tiene control excedentes via wifi, etc...)#743
- 09/06/2016, 09:57 #33
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
La primera parte OK, una simple regla de 3. Luego pongo algunos ejemplos.
La librería ya trae definidas diferentes funciones, para los distintos casos:
P.e.:
value = adc.read_adc_difference(0, gain=GAIN)
La misma función indica que va hacer (difference). El 0 significa a que tiene que resolver la diferencia entre A0 y A1.
Otras opciones son:
1 = canal 0 menos canal 3
2 = canal 1 menos canal 3
3 = canal 2 menos canal 3
Para el rango de voltajes (supongo será igual a Arduino)
2/3 = +/- 6,144V
1 = +/- 4,096V
2 = +/- 2,048V
4 = +/- 1,024V
8 = +/- 0,512V
16 = +/- 0,256V
GAIN = 16
Como son valores tan pequeños he usado el rango 16=0,256 que es el mismo que usas tú.
Otra función para leer p.e. el valor del canal 2 (A2) es:
values[i] = adc.read_adc(2, gain=GAIN)
print('{2}'.format(*values))
Esto puede parecer un coñazo, pero me sirve a mi de referencia al mismo tiempo que voy haciéndolo y puede servir para el que quiera experimentar con una Raspberry Pi, bus de comunicaciones serie I2c y un convertidor analógico-digital ADS1115.
- 09/06/2016, 10:27 #34
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Ok....queda claro el uso del ADS1115 en Python/Raspberry
Quizas faltan dos cosas
1. Como parametrizas la velocidad de muestreo del ADS1115?
2.- La posibilidad de disparar la conversion y despues leer el valor......yo lo uso asi dado que quiero hacer en 1sg muchas cosas (mide los ms que tarda en ejecutarse la sentencias adc.read... y lo comentas en el foro por favor)
- 09/06/2016, 10:33 #35el_cobarde Invitado
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Hola, Mleon y nikitto
Efectivamente, uso el sensor Hall ACS712 para 20A. La resolución es de 2.5V con 20A. En mi aplicación, la intensidad máxima será de 12A. O sea, solo podré aprovechar un 30% de la resolución teórica del ADC, que se refiere a los 5V del Arduino UNO.
Hacéis muy bien en usar un convertidor analógico-digital (ADC) de 16 bits!
El ADC del Arduino es de 10 bits, es decir, una resolución de 1/1024 = 0.1%, aproximadamente. Con lo dicho anteriormente, 0.35%.
En mi algoritmo (P=I*U) tendré que distinguir 3000W de 3050W (si el incremento en potencia es de 50W).
La resolución me limita tanto por I como por U, es decir, tendré una precisión de +/-20W, aproximadamente.
Me bastará para detectar este incremento de 50W, pero me vendrá justito. Sería mejor tener un ADC de 12 o de 16 bits.
Si veo que me falla demasiado, usaré un ADS1115, como vosotros ...
- 09/06/2016, 11:19 #36
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Mientras no tenga montada la instalación me divierto aprendiendo, he usado un potenciometro para calcular el voltage que llega a A2. Usando la propia alimentación de la RPi (ojo a 3,3V)
Programa:
------------------------
import time
import Adafruit_ADS1x15
adc = Adafruit_ADS1x15.ADS1115()
# Rango 1 = +/- 4.096V
GAIN = 1
while True:
<tab>valor = adc.read_adc(2, gain=GAIN)
<tab>voltaje = (valor * 0.125)/1000
<tab>print('voltios = '), voltaje
<tab>time.sleep(2)
--------------------------------------
<tab> = 1 salto de tabulador
Si giro el potenciómetro podemos ver que el voltage en la entrada de A2 cambia:
El ADS1115 es de 16 bits, pero uno de ellos se usa para el signo, positivo o negativo.
Siendo entonces el valor máximo de 32767.
En el ejemplo anterior he usado el rango 1 que equivale a +/- 4.096 Volts. Significa esto que si divido 4,096V entre 32767 obtengo que cada bit = 0,125mV. De aquí que:
voltaje = (valor * 0.125)/1000
Para el tiempo de muestreo, al bucle se repite cada x segundos fijados en la última instrucción:
time.sleep(2) # en este caso 2 segundos, también se pueden poner fracciones de segundo, p.e.: (0.5) para medio segundo
....sigo investigando
- 09/06/2016, 12:02 #37
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Creo que es demasiado optimista pensar que la resolución (10 bits o 16 bits) se corresponde directamente a la exactitud de la medida (lógicamente claro que tiene relación en los ADC), pero de hecho lo normal es medir varias veces y calcular la media para mejorar la exactitud de la medida
En un sensor de tipo hall no he chequeado cual es la repetitividad de la medida, pero lo normal es que tengas una dispersión de valores ante un entorno controlado, ¿has hecho pruebas a 1A, 5A ,10A, ... para ver la exactitud de la medida que te da el ACS712?
En mi caso dado que trato señales muy pequeñas (Shunt 500A 50mV) y el circuito no es muy profesional (protoboard, no cable apantallado, etc) no tengo una medida muy exacta, pero para mi necesidad es suficiente para tener controlada la intensidad de entra/sale de la batería
- 09/06/2016, 12:08 #38el_cobarde Invitado
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Si, claro, la exactitud de la medida será aún peor de lo estimado, pero lógicamente haré lo que dices:
Mido 10 o 20 veces (sobra tiempo para medir ) y calculo la mediana. La mediana es mejor que la media aritmética, en este caso, porque los valores extremos no contribuyen.
Cojiendo la mediana espero funcionar bien mi algoritmo. Ya veremos ...
- 09/06/2016, 12:22 #39
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Eso esta bien....y es entretenido
Medir el voltaje de la batería con el ADS1115 es un poco matar pulgas a cañonazos dado que la resolución que tienes es bastante mayor a la necesidad, como he comentado yo solo lo uso para medir Intensidades a través de shunt, (un canal diferencial para I_bateria y el otro para I_Placa)
En tu caso veo que la libreria del Raspberry te "libera" de meterte en la tripas del ADS1115 como hice yo dado que, en duinomite, no tenia librería (de todas formas vistes por el código que puse que no fue un arco de iglesia)
No obstante siempre es bueno tener a mano el Datasheet para ver como funciona y conocer algunos parámetros (Impedancia de entrada en función de resolución, etc)
Como he comentado, a mi me interesa disparar inicialmente el conversor y después (tras hacer el micro otras cosas) leer el valor
¿Tiene la librería esta posibilidad?
¿Mediste el tiempo de ejecución de las sentencias adc.read....?
Otro tema...tienes ya claro como "pintar" la forma de la señal medida, para mi es bastante útil ver la señal en pantalla de una forma gráficaÚltima edición por Mleon; 09/06/2016 a las 12:39
- 09/06/2016, 13:31 #40
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Dame tiempo, hace más de 25 años que acabé los estudios de FP2 electrónica. Y desde entonces rara vez he cogido el soldador. Jajaja.
Supongo que tu tienes destinado el duinomite exclusivamente a esta tarea, en mi caso la Raspberry la uso para algunas cosas más, pero principalmente como centro multimedia y cliente bittorrent por el consumo ridículo que tiene. Es decir, ni la CPU ni la RAM van sobradas.
Sobre tus preguntas:
- No entiendo a que te refieres con disparar el conversor ¿¿¿??? y después leer el valor. En mi caso la lectura (mV del shunt) es continua. Está (estará) dentro de un bucle. Lo que puedo hacer es comparar el valor obtenido con X, y si es mayor, menor o igual realizar alguna otra función. La comparación se realizaría también dentro del bucle.
- No se como medir el tiempo de ejecución de las sentencias adc.read_xxxx.
¿ Las gráficas las tienes siempre activas ? ¿ O las generas a partir de algún archivo? Te lo digo, porque ya he empezado a mirar como almacenar toda la información generada con la librería import os.path. Una vez que consiga almacenar los datos, ya miraría como generar gráficas. Aunque podría importar/leer el archivo y generarlos en mi propio escritorio. Quizás con algún programa para Win10.
- 09/06/2016, 15:08 #41
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Intento aclarar: (y a darte caña que yo hace mas que tu que termine mis estudios)
Un conversor ADC tarda un tiempo en realizar la medida, por eso, si quieres optimizar el programa SW, puedes darle una instrucción para que inicie la conversión y luego darle otra para que te de la medida
En tu caso la sentencia adc.read... le dira al ADS115 que inicie la conversión y esperara a que acabe el ADC para leer el valor
Si se quiere la máxima exactitud en la medida hay que poner el ADS1115 en el mínimo de muestras por segundo (8 muestras por segundo) lo que equivale a que tarda unos 125ms en realizar la conversión (en mi caso prefiero no estar esperando esos 125ms y que el micro haga otras cosas mientras se produce la conversión...que 125ms es mucho tiempo para un micro)
Por defecto el ADS1115 trabaja a 128 muestras por sg
Por eso te pedía ver el tiempo de ejecución de la sentencia adc.read.....
La forma de hacer esto es fácil....debes tener en Python una función que te de un valor del tiempo en ms (TIMER o algo así)
.....
I=Timer
adc.read..
J=Timer
Print (J-I)
.....
La gráfica en la pantalla VGA conectada al duinomite esta siempre pintando la señal de Voltios Batería e Intensidad Batería y Placa (cada 1,5 sg añade 1 pixel a cada curva)
Si te fijas en la foto de la gráfica (casi al final de la pantalla) hay un hueco en la gráfica que es por donde va pintando cada 1,5sg el valor que se mide (lógicamente cuando llega al final de la pantalla sigue por el principio)
Esto permite ver en tiempo real lo que esta pasando en un periodo de unos minutos (X pixel resolución pantalla * 1,5 sg/pixel)
Después lógicamente y ya "OFF-LINE" paso al PC los datos guardados en la SD y puedo hacer las gráficas "bonitas" del dia, semana, etc de los parámetros que quiera (SOC%,Vbat,....), y tener tablas resumen (Kwh/Dia/Hora, etc) que, como he comentado, en mi caso lo hago simplemente con Microsoft Access
PD: Yo para un tema de este tipo recomendaría tener un HW dedicado básicamente en exclusiva (arduino, duinomite, raspberry,...)
Como he comentado un duinomite anda por los 25€, el arduino bastante menos,....y, por tanto, no me arriesgo a que se me enciendan las luces o el termo fuera de control porque se "cuelgue" el HW por culpa de otro SW
PD2: Tengo varias peticiones de "comprar" este brico ya hecho
Como les he comentado no tengo intención de vender sino de compartir, por lo que si alguien se apunta a diseñar/hacer un circuito impreso (por eso de que es mejor que una protoboard) y coordinar el tema........ comparto con él los esquemas eléctricos/SW/etc y se hace una lista de interesados para hacer una compra colectivaÚltima edición por Mleon; 09/06/2016 a las 15:43
- 09/06/2016, 17:55 #42
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
A ver si te vale esto:
He añadido la primera y tercera línea a lo que ya tenía.
t0=time.time()
valor = adc.read_adc(2, gain=GAIN)
print time.time() - t0, "seconds process time"
Estaría bien que pasarás todo lo que ya tienes a una placa. Me parece algo cojonudo lo que tienes montado. Yo voy a seguir con la RPi y si tengo que comprar otra, pues la compro. Ahora ya las hay con 1GB de memoria RAM (la mía de es 512MB).
Voy a ponerme con lo de grabar los datos.
- - - - - - - - - - - - - - - - - - -
Ya he conseguido generar un archivo donde guarda los valores cada 2 segundos (puedo cambiar el tiempo, ya lo vimos antes). Me faltaría el crear un archivo nuevo cada 24h.
Estoy pensando que en vez de generar la gráfica directamente a pantalla (ni idea de como hacerlo, y en mi caso a la RPi accedo por SSH, no le tengo puesto ni monitor ni teclado), podría generar la gráfica en el propio servidor web. De este modo podría verla desde cualquier parte.
- 09/06/2016, 18:43 #43
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
[QUOTE=nikitto;314060]A ver si te vale esto:
/QUOTE]
Ok, perfecto, veo que tarda unos 10,5ms en leer el valor, si pensamos que el ADC esta configurado para la frecuencia de muestreo por defecto (128 muestras por sg) seria 7,5ms en la conversion + algunos ms mas estarán en intrucciones de la libreria que has cargado o en el propio "print"
Como he dicho antes, yo tengo el ADS1115 puesto a la mínima frecuencia de muestreo (8 muestras/sg) para mejorar la exactitud de la medida
Cuando ya tengas dominado el tema, investigaremos un poco mas en la librería que importas para ver que opciones se tienen
Yo hago que el SW genere un archivo nuevo cada mes, no cada día, el formato del nombre que le pongo es muy poco imaginativo (AAAAMM.txt) siendo AAAA el año y MM el mes
Lógicamente cada día, al comienzo, pongo a cero algunos valores de variables (KwH generados, etc)
En tu caso me parece muy buena idea que hagas un servidor web donde se pongan los datos que se quieren ver (SOC%, Voltios, Intensidad, estado de los reles, gráficos....),y así tenerlo disponible por internet, en el movil, etc , yo con el duinomite no puedo hacerlo, solo tengo una pantalla monocromo VGA (que tampoco es poco) y lo controlo a distancia via temviewer si conecto el duinomite a un PC por USB....... por eso te comentaba que el "salto" a una plataforma tipo raspberry me parecía una muy buena alternativa a lo que tengo implementado
Por cierto....¿que consumo tiene el Raspberry?......el duinomite consume unos 150mA a 5V luego menos de 1w
Sinceramente, yo al menos, no he visto producto comercial que haga algo parecido, y mucho menos por el "escaso" importe económico y el grado de personalización/ampliación que le estamos dandoÚltima edición por Mleon; 09/06/2016 a las 19:24
- 09/06/2016, 19:12 #44
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Entonces ¿el tiempo de respuesta te parece correcto? Yo creo que 10,5 ms está superbien, comparados con esos 125 que comentabas.
Ejemplo del nombre de archivo que creo:
Datos_2016-Jun-09__17_39_26.txt #imaginación a tope, jajaja
Esperate que voy a rizar el rizo. En vez de seguir escribiendo en un archivo, miraré de crear una base de datos con mysql y meteré allí los valores. Luego me será más fácil importarlos con PHP para su uso en la web.
- 09/06/2016, 19:34 #45
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
El valor de 10,5 es coherente con la velocidad de muestreo,....yo también lo puedo conseguir si pongo la frecuencia de muestreo a 128 muestras/sg en lugar de 8 muestras/sg, pero entonces la exactitud de la medida es peor, piensa que yo tengo un shunt de 500A 50mv luego 1A son solo 0,1mV, por eso prefiero complicar un poco el SW (disparado primero en conversor...hacer otras cosas....leer el dato) poniendo el ADS1115 a 8 muestras/sg
Como he comentado yo utilizo para el procesamiento posterior una base de datos (Ms-Access), en el duinomite no me puedo plantear tener una BD, por lo que simplemente hago ficheros de texto cada mes
Lógicamente con Raspberry todos estos temas son planteables y abordables..........veo que estas "enchufado"
- 09/06/2016, 22:34 #46
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Una imagen vale más que mil palabras.
Por ahora sólo guardo el voltaje del canal 2 (A2). Lógicamente podemos ampliar la tabla con más valores, p.e. hora de la medida; crear más tablas, ... Un sinfín de posibilidades.
A ver si este fin de semana puedo meterle mano al PHP para reproducir las gráficas en el servidor web Apache.
Pongo las líneas de código para acceso y escritura a la base de datos (que previamente he creado):
import MySQLdb
db = MySQLdb.connect(host = "localhost", user = "usuario", passwd = "contraseña", db = "fv")
cur = db.cursor()
...
<tab>try:
<tab><tab>cur.execute("""INSERT INTO fv.Valores(Voltaje_A2) VALUES(%s)""",(voltaje))
<tab><tab>db.commit()
<tab>except:
<tab><tab>db.rollback()
cur.close()
db.close()
---------------
- 09/06/2016, 23:12 #47
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Me alegra ser catalizador de esta evolucion
Pronto enganchamos a el_cobarde y controlamos los excedentes por wifi
Evidentemente poner una Raspberry te abre el abanico de posibilidades (programacion concurrente, conectividad, etc...)
Me alegra que sigas....lo normal es que definas una Base de datos de varios campos (fecha, hora, Vbat, Ibat, Iplaca, Vcelda1, Vcelda2.....SOC%.....Rele1, Rele2,.... Temp1,.... ) siempre es mejor pensar en parametrizar todo lo posible y despues usarlo o no dependiendo de las necesidades especificas
En mi caso tengo 2 tablas de datos
- una de los datos cada 1,5sg
- otra de un resumen diario
Adicionalmente tengo otra tabla con los datos de parametrizacion de on y off de cada relePVControl+ (web espejo a la real cada 5'...se puede trastear)
Manual Instalación desde Imagen SD
Manual Instalación Reles Wifi
Algo de Funcionalidad (ya tiene control excedentes via wifi, etc...)#743
- 10/06/2016, 07:58 #48el_cobarde Invitado
- 10/06/2016, 20:46 #49
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Mientras me pongo con el PHP. Tengo algunas dudas.
- Ibat e Iplaca, los valores los tomas con 2 shunt. OK. Usarás un ADS1115 sólo para esto.
- El Vbat ? Con otro ADS1115 ?
- Vcelda1, 2, n. Cada una de las celdas de la batería ?
Se me olvidó comprar el sensor te temperatura
- 10/06/2016, 20:57 #50
Re: Control exhaustivo ciclo de carga/SOC/Cargas/etc
Explico
Ibat e Iplaca con 2 shunts y ADS1115 en modo diferencial
Vbat utilizando una entrada analogica del duinomite (en arduino seria igual), la raspberry no tiene entradas analogicas por lo que puedes usar una entrada de otro ADS1115 aunque te sobra precision u otro ADC mas barato
Vcelda1,....si son cada una de las celdas de 2 voltios, yo no utilizo una entrada analogica para cada una sino solo una con un multiplexor de 16 canales y asi tengo 16 entradas analogicas
..PVControl+ (web espejo a la real cada 5'...se puede trastear)
Manual Instalación desde Imagen SD
Manual Instalación Reles Wifi
Algo de Funcionalidad (ya tiene control excedentes via wifi, etc...)#743