![]() |
|
|
|
| VHF: Canal 77 |    | ![]() |
![]() |
![]() |
![]() |
![]() |
|
|
|
#1
|
||||
|
||||
|
Cita:
Asi si |
|
#2
|
||||
|
||||
|
https://drive.google.com/file/d/1tnN...ew?usp=sharing
Este es mi esquema, no se si habre sabido explicarlo, pero bueno, ahi va
__________________
www.kailoa.blogspot.es[/url] ESP-9429 MMSI POL 261000281 - Call Sign SPA2244 Socio Fundador de ANAVRE |
|
#3
|
||||
|
||||
|
__________________
www.kailoa.blogspot.es[/url] ESP-9429 MMSI POL 261000281 - Call Sign SPA2244 Socio Fundador de ANAVRE |
|
#4
|
||||
|
||||
|
// Monitor D2-55 flujo de agua salada y cotrol de conmutacion de carga entre bancos de bateria, panel solar.
#include <LiquidCrystal.h> //Inclui a biblioteca do LCD int contaPulso; //Variável para a quantidade de pulsos int i=0; //Variável para contagem de tiempo float V1; float V2; float V3; float vazao; //Variável para armazenar o valor em L/min float media=0; //Variável para tirar a média a cada 1 minuto float litros; unsigned long pulsos_Acumulados = 0; // Variable que almacena el número de pulsos acumulados del sensor de fluxo const int Rele1 = 13; // cria uma constante com o numero do pino LED/alarma const int Rele2 = 10; // Comando rele carga bateria motor const int Rele3 = 10; // Comando rele carga bateria Thruster LiquidCrystal lcd(12, 11, 5, 4, 3, 8); // Pinos para se comunicar com o LCD *** Quidado el pino 2 mormalmente utilizado fue substituido por el 8 para ser utilizado con la rutina de interrupcion // Rutina de servicio de la interrupción (ISR) void incepulso() { contaPulso++; // Incrementa en una unidad el número de pulsos } void setup() { // definiciones funcion de los pinos para comandos de rele e interrupcion para conteo de pulsos del sensor de flujo pinMode(Rele1, OUTPUT); // declara o pino do led como saída digitalWrite(Rele1, LOW); // desliga o led pino 13/alarma Serial.begin(9600); //Inicia a serial com um baud rate de 9600 pinMode(Rele2, OUTPUT); // declara o pino do led como saída digitalWrite(Rele2, LOW); // desliga o led pino 13/alarma pinMode(Rele3, OUTPUT); // declara o pino do led como saída digitalWrite(Rele3, LOW); // desliga o led pino 13/alarma pinMode(2, INPUT); attachInterrupt(0, incepulso, RISING); ; //Configura o pino 2(Interrupção 0) para trabalhar como interrupção Serial.println("\n\nInicio\n\n"); //Imprime Inicio na serial } void loop () { contaPulso = 0; //Zera a variável para contar os giros por segundos sei(); //Habilita interrupção delay (1000); //Aguarda 1 segundo cli(); //Desabilita interrupção vazao = contaPulso / 5.5; //Converte para L/min 5.5 es el factor de conversion del sensor/ podrián solo ser utilizados los pulsos media=media+vazao; //Soma a vazão para o calculo da media pulsos_Acumulados += contaPulso; // Número de pulsos acumulados litros = pulsos_Acumulados * 1.0/348; // formula para calculo de los litros acumulados 5.5x60, solo para tener referencias i++; if (media < 1 ) // Valor para acionamiento de la alarma, fue colocado 1 para teste *** este valor será determinado una vez instaldo en el motor y segun cada motor** { digitalWrite(Rele1, HIGH); // Acciona la alarma y el LEd de la puerta 13 } else { digitalWrite(Rele1, LOW); // Desliga la alarma y el led de la puerta 13 } // calculo de tesnsiones y comparación entre bancos de baterias V1=analogRead (A0); // Lee la tesion del pino analogico 0 V2=analogRead (A1); // Lee la tesion del pino analogico 1 V3=analogRead (A2); // Lee la tesion del pino analogico 2 V1=(V1*19.9)/1023;// convierte lecturas en tension (observacion 20 conversor lectura hay que hacer divisor de tension rsistivo 4 a 1 ) V2=(V2*19.9)/1023;// convierte lecturas en tension (observacion 20 conversor lectura hay que hacer divisor de tension resistivo 4 a 1 ) V3=(V3*19.9)/1023;// convierte lecturas en tension (observacion 20 conversor lectura hay que hacer divisor de tension resistivo 4 a 1 ) if (V1 > 14.2)// valor de tension de las baterias e servicio para considerar derivasion de tension para motor y thruster { if (V2 <12.4) // Valor de tensión referencia para activar carga de bateria (12.5V) (baterias motor acido) { digitalWrite(Rele2, HIGH); // Acciona rele carga baterias motor } else { digitalWrite(Rele2, LOW); // Desliga rele Carga de baterias motor } } { if (V1 > 14.2)// valor de tension de las baterias e servicio para considerar derivasion de tension para motor y thruster { if (V3 < 12.4 ) // Valor de tensión referencia para activar carga de bateria (12.4V) (baterias thruster acido) { digitalWrite(Rele3, HIGH); // Acciona rele carga baterias thruster } else { digitalWrite(Rele3, LOW); // Desliga rele carga baterias thruster } } } //Condicion para apagado de distribucion de carga { if (V1 <13.4)// condicion de tension de las baterias e servicio para considerar derivasion de tension para motor y bou thruster { digitalWrite(Rele2, LOW); // Desliga rele carga baterias servicio digitalWrite(Rele3, LOW); // Desliga rele carga baterias thruster } } { if (V2>12.3)// condicion en que no entra carga baterias motor digitalWrite(Rele2, LOW); // Desliga rele carga baterias motor } { if (V3>12.2)// condicion en que no entra carga baterias thruster digitalWrite(Rele3, LOW); // Desliga rele carga baterias thruster } { } { // comunicacion monitor serial (sera futuramente eliminado) Serial.print(vazao); //Imprime na serial o valor da vazão Serial.print(" L/min - "); //Imprime L/min Serial.print(i); //Imprime a contagem i (segundos) Serial.println("s"); //Imprime s indicando que está em segundos // Configuración parametros display lcd.begin(16, 2); //Inicia o LCD com dimensões 16x2(Colunas x Linhas) lcd.setCursor(0, 0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD lcd.print(vazao); //Escreve no LCD "vazao!" lcd.setCursor(5, 0); //Posiciona o cursor na primeira coluna(0) e na segunda linha(1) do LCD lcd.print("L/min"); //Escreve no LCD "Litros por minuto" lcd.setCursor(13,0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD lcd.print(i); lcd.setCursor(14, 0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD lcd.print("s"); lcd.setCursor(0, 1); //Posiciona o cursor na primeira coluna(0) e na segunda linha(1) do LCD lcd.print(V1);// escrive la tensión baterias servicio lcd.setCursor(6, 1); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD lcd.print(V2); //escrive la tensión baterias motor lcd.setCursor(12, 1); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD lcd.print(V3); //escrive la tensión baterias thruster //lcd.print("Litros Acumulados") if(i==10) // tiempo de espera para sacar media 10 segundos { media = media/10; //Tira a media dividindo por 10 segundos podria ser 60 par un minuto Serial.print("\nMedia por minuto = "); //Imprime a frase Media por minuto = Serial.print(media); //Imprime o valor da media Serial.println(" L/min - "); //Imprime L/min Serial.println("\n\nInicio\n\n"); //Imprime Inicio indicando que a contagem iniciou media = 0; //Zera a variável media para uma nova contagem// i=0; //Zera a variável i para uma nova contagem } } }
__________________
MMSI 205801910 Call OR8019Ham Call CX6AAT , PY2ZP ,PW2A
|
|
#5
|
||||
|
||||
|
Roda en en un arduino, nano o uno y te conmuta la carga entre los bancos de bateria.
// Monitor D2-55 flujo de agua salada y cotrol de conmutacion de carga entre bancos de bateria, panel solar. #include <LiquidCrystal.h> //Inclui a biblioteca do LCD int contaPulso; //Variável para a quantidade de pulsos int i=0; //Variável para contagem de tiempo float V1; float V2; float V3; float vazao; //Variável para armazenar o valor em L/min float media=0; //Variável para tirar a média a cada 1 minuto float litros; unsigned long pulsos_Acumulados = 0; // Variable que almacena el número de pulsos acumulados del sensor de fluxo const int Rele1 = 13; // cria uma constante com o numero do pino LED/alarma const int Rele2 = 10; // Comando rele carga bateria motor const int Rele3 = 10; // Comando rele carga bateria Thruster LiquidCrystal lcd(12, 11, 5, 4, 3, 8); // Pinos para se comunicar com o LCD *** Quidado el pino 2 mormalmente utilizado fue substituido por el 8 para ser utilizado con la rutina de interrupcion // Rutina de servicio de la interrupción (ISR) void incepulso() { contaPulso++; // Incrementa en una unidad el número de pulsos } void setup() { // definiciones funcion de los pinos para comandos de rele e interrupcion para conteo de pulsos del sensor de flujo pinMode(Rele1, OUTPUT); // declara o pino do led como saída digitalWrite(Rele1, LOW); // desliga o led pino 13/alarma Serial.begin(9600); //Inicia a serial com um baud rate de 9600 pinMode(Rele2, OUTPUT); // declara o pino do led como saída digitalWrite(Rele2, LOW); // desliga o led pino 13/alarma pinMode(Rele3, OUTPUT); // declara o pino do led como saída digitalWrite(Rele3, LOW); // desliga o led pino 13/alarma pinMode(2, INPUT); attachInterrupt(0, incepulso, RISING); ; //Configura o pino 2(Interrupção 0) para trabalhar como interrupção Serial.println("\n\nInicio\n\n"); //Imprime Inicio na serial } void loop () { contaPulso = 0; //Zera a variável para contar os giros por segundos sei(); //Habilita interrupção delay (1000); //Aguarda 1 segundo cli(); //Desabilita interrupção vazao = contaPulso / 5.5; //Converte para L/min 5.5 es el factor de conversion del sensor/ podrián solo ser utilizados los pulsos media=media+vazao; //Soma a vazão para o calculo da media pulsos_Acumulados += contaPulso; // Número de pulsos acumulados litros = pulsos_Acumulados * 1.0/348; // formula para calculo de los litros acumulados 5.5x60, solo para tener referencias i++; if (media < 1 ) // Valor para acionamiento de la alarma, fue colocado 1 para teste *** este valor será determinado una vez instaldo en el motor y segun cada motor** { digitalWrite(Rele1, HIGH); // Acciona la alarma y el LEd de la puerta 13 } else { digitalWrite(Rele1, LOW); // Desliga la alarma y el led de la puerta 13 } // calculo de tesnsiones y comparación entre bancos de baterias V1=analogRead (A0); // Lee la tesion del pino analogico 0 V2=analogRead (A1); // Lee la tesion del pino analogico 1 V3=analogRead (A2); // Lee la tesion del pino analogico 2 V1=(V1*19.9)/1023;// convierte lecturas en tension (observacion 20 conversor lectura hay que hacer divisor de tension rsistivo 4 a 1 ) V2=(V2*19.9)/1023;// convierte lecturas en tension (observacion 20 conversor lectura hay que hacer divisor de tension resistivo 4 a 1 ) V3=(V3*19.9)/1023;// convierte lecturas en tension (observacion 20 conversor lectura hay que hacer divisor de tension resistivo 4 a 1 ) if (V1 > 14.2)// valor de tension de las baterias e servicio para considerar derivasion de tension para motor y thruster { if (V2 <12.4) // Valor de tensión referencia para activar carga de bateria (12.5V) (baterias motor acido) { digitalWrite(Rele2, HIGH); // Acciona rele carga baterias motor } else { digitalWrite(Rele2, LOW); // Desliga rele Carga de baterias motor } } { if (V1 > 14.2)// valor de tension de las baterias e servicio para considerar derivasion de tension para motor y thruster { if (V3 < 12.4 ) // Valor de tensión referencia para activar carga de bateria (12.4V) (baterias thruster acido) { digitalWrite(Rele3, HIGH); // Acciona rele carga baterias thruster } else { digitalWrite(Rele3, LOW); // Desliga rele carga baterias thruster } } } //Condicion para apagado de distribucion de carga { if (V1 <13.4)// condicion de tension de las baterias e servicio para considerar derivasion de tension para motor y bou thruster { digitalWrite(Rele2, LOW); // Desliga rele carga baterias servicio digitalWrite(Rele3, LOW); // Desliga rele carga baterias thruster } } { if (V2>12.3)// condicion en que no entra carga baterias motor digitalWrite(Rele2, LOW); // Desliga rele carga baterias motor } { if (V3>12.2)// condicion en que no entra carga baterias thruster digitalWrite(Rele3, LOW); // Desliga rele carga baterias thruster } { } { // comunicacion monitor serial (sera futuramente eliminado) Serial.print(vazao); //Imprime na serial o valor da vazão Serial.print(" L/min - "); //Imprime L/min Serial.print(i); //Imprime a contagem i (segundos) Serial.println("s"); //Imprime s indicando que está em segundos // Configuración parametros display lcd.begin(16, 2); //Inicia o LCD com dimensões 16x2(Colunas x Linhas) lcd.setCursor(0, 0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD lcd.print(vazao); //Escreve no LCD "vazao!" lcd.setCursor(5, 0); //Posiciona o cursor na primeira coluna(0) e na segunda linha(1) do LCD lcd.print("L/min"); //Escreve no LCD "Litros por minuto" lcd.setCursor(13,0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD lcd.print(i); lcd.setCursor(14, 0); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD lcd.print("s"); lcd.setCursor(0, 1); //Posiciona o cursor na primeira coluna(0) e na segunda linha(1) do LCD lcd.print(V1);// escrive la tensión baterias servicio lcd.setCursor(6, 1); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD lcd.print(V2); //escrive la tensión baterias motor lcd.setCursor(12, 1); //Posiciona o cursor na primeira coluna(0) e na primeira linha(0) do LCD lcd.print(V3); //escrive la tensión baterias thruster //lcd.print("Litros Acumulados") if(i==10) // tiempo de espera para sacar media 10 segundos { media = media/10; //Tira a media dividindo por 10 segundos podria ser 60 par un minuto Serial.print("\nMedia por minuto = "); //Imprime a frase Media por minuto = Serial.print(media); //Imprime o valor da media Serial.println(" L/min - "); //Imprime L/min Serial.println("\n\nInicio\n\n"); //Imprime Inicio indicando que a contagem iniciou media = 0; //Zera a variável media para uma nova contagem// i=0; //Zera a variável i para uma nova contagem } } }
__________________
MMSI 205801910 Call OR8019Ham Call CX6AAT , PY2ZP ,PW2A
|
|
#6
|
||||
|
||||
|
Pongo el link de mi blog donde se puede ver el esquema básico que he subido, no lo pongo aquí por que se borra la foto...
http://soltaramarras1.blogspot.it/20...on-placas.html Esquema eléctrico básico, con Placas solares, generador eólico y controlador de baterías Nasa BM1 Esquema eléctrico básico, con Placas solares, generador eólico y controlador de baterías Nasa BM1 No pretendo con este esquema sentar cátedra o dogma de fe, es sencillamente una ayuda para quien busque un esquema básico a seguir si se ve con ánimos, son necesarios unos conocimientos básicos y no aconsejo seguirlo si no se entiende por completo ya que la interpretación libre de algún elemento puede ser catastrófico, sobre todo en lo que refiere a protecciones y secciones de los conductores. Referente a la conexión directa del controlador de baterías NASA BM1, diré que dado que las placas darán servicio permanente a las baterías de servicios, siempre estará conectado. quien quiera dejarlo apagado deberá alimentarlo después del seccionador de baterías. Referente al puente de diodos, diré que no conecto las placas y el eólico al IN del puente por que muchos modelos no dejaran leer al controlador la tensión de baterías. Esta conexión es para no utilizar el cable de control del puente y que sea mas sencillo, ademas hay muchos modelos que no llevan esa conexión. Este esquema va dirigido sobre todo a los que quieran iniciar o ampliar la instalación de su barco, es modificable, es ampliable y mejorable seguro. No es el esquema de nuestro barco ya que la instalación eléctrica abordo es muy compleja dado que todo esta automatizado. |
| 3 Cofrades agradecieron a Marcos Montesier este mensaje: | ||
|
#7
|
||||
|
||||
![]() Pero tal y como lo pones en este esquema,el eolico,las placas y el cargador,solo cargaran la bateria de motor si pones esta en paralelo con las de servicios usando lo que llamas seccionador paralelo no? Saludos.
__________________
|
|
#8
|
||||
|
||||
|
Cita:
No. y como me dice que no solo puedo decir no, por qu el texto es corto, dire no y no ![]() |
| Los siguientes cofrades agradecieron este mensaje a Marcos Montesier | ||
magallanesXIX (01-12-2017) | ||
![]() |
Ver todos los foros en uno |
| Herramientas | |
| Estilo | |
|
|