Aviso

El foro está en modo de sólo lectura.

Cargador 24v DC-DC Con Arduino y pantalla Nextion

Más
6 años 2 meses antes - 6 años 2 meses antes #1164 por Maxspert
Tenia que leer antes con el serial para ver los numeros que me da,gracias por decirmelo.La verdad que fluctua bastante a 25V va entre 812 y 827 y a 26V 855 y 864.

Pero aun que lleva int baterias=map(voltimetro,810,865,0,100); me sigue dabdo mas de 100% y creo que es por que la entrada es capaz de leer mas de 865 aun que le decimos que marque un maximo de 100.Pero si por alguna razon la entrada lee mas de 865 entonces si ensena las de 100 y por esa razon la lectura no es muy precisa
Última Edición: 6 años 2 meses antes por Maxspert.
Más
6 años 2 meses antes #1165 por Jose Luis
Fluctua mucho, que resistencias le has puesto de dividor de tensión?
Más
6 años 2 meses antes - 6 años 2 meses antes #1166 por Maxspert
Pues igual que el dibujo que me hiciste al principio,le puse 1k+10K en serie y una de 2.2K.

Lo raro es que haga lo que haga si bajo de 25v en la pantalla me sale numeros con -15 si me paso de 26V me sale mas del 100%.Intente ponerle un maximo y mnimo pero aun no lo consegui.
la verdad tiene logica la linea y lo que me pasa a la pantalla.

int baterias=map(voltimetro,823,860,0,100);

823 segnifica 0 si baja de 823 sigue leyndolo y me manda numeros con -
860 segnifica 100 si sube mas de 860 me da mas de 100%

si le pongo un minimo y maximo como en el ejemplo de abajo me dice que :'inicializarTiempoTemporizacion' was not declared in this scope
asi que estoy un poco en blanco (como siempre):)))

#include <SoftwareSerial.h>
#include <Nextion.h>
#define RxD 10
#define TxD 11

SoftwareSerial nextion(RxD, TxD);
Nextion myNextion(nextion, 9600);
int ssr = 2;
int ledStatus = 13;
int tensionBaterias = A0;
int Voltimetro;
int Min = 826;
int Max = 860;
int Deseado_Min = 0;
int Deseado_Max = 100;

unsigned long previousMillis = 0;
unsigned long interval = 1000;//20000;
//unsigned int temporizacionSegundos=120;
unsigned int contadorTotalSegundos=0;

unsigned int contadorSegundos=0;
unsigned int contadorMinutos=0;
unsigned int tiempoMinutos=1;//20;
unsigned int tiempoSegundos=00;
unsigned int faltanSegundos=tiempoSegundos;
unsigned int faltanMinutos=tiempoMinutos;
unsigned int finTemporizacion = (tiempoMinutos *60)+tiempoSegundos;

char buffer [10];
char auxBuffer [10];

unsigned int tiempoCiclos = 1000;
boolean flagSegundos = true;
boolean flagMinutos = true;
void setup()

{
pinMode(ledStatus, OUTPUT);
pinMode(ssr, OUTPUT);
digitalWrite(ledStatus, LOW);
digitalWrite(ssr,LOW);
Serial.begin(9600);
myNextion.init();



//myNextion.sendCommand("page 1");
inicializarTiempoTemporizacion ();
//Serial.println(finTemporizacion);

}

void loop()
{
int voltimetro = analogRead(tensionBaterias);
int Voltimetro = map(voltimetro, Min , Max, Deseado_Min, Deseado_Max);
Serial.begin(9600);
Serial.println(Voltimetro);
{

long int map baterias=map(Deseado_Min, Deseado_Max);}
Serial.begin(9600);
Serial.println(voltimetro);
int puestaMarcha=myNextion.getComponentValue("Home.bt0");
//myNextion.setComponentValue("Home.n0",baterias);
//myNextion.setComponentValue("Home.j0",baterias);


if (puestaMarcha == true&&(contadorTotalSegundos < finTemporizacion)) // Dos posibilidades de parada, boton off o tiempo mayor que segundos.


{
digitalWrite(ssr, HIGH);
digitalWrite(ledStatus, HIGH);

if (flagMinutos) {
contadorMinutos++; // Resta un minuto y empieza a temporizar
flagMinutos = false; // Activa un flag ya que no hay que volver a restar de esta forma.
}

if (flagSegundos) { // Solo tiene que guardar el valor en el primer ciclo, sino se actualziaria en cada ciclo.
previousMillis = millis();
flagSegundos = false;
}
if (millis() - previousMillis > tiempoCiclos) { // Aqui calculamos un segundo y se lo suma a la variable contadorSegundos.
contadorTotalSegundos++;

hh_mm();
Serial.println(contadorTotalSegundos); // Si activas el monitor serial veras como van subiendo los segundos.
previousMillis = millis();
}

}
else {

digitalWrite(ssr, LOW);
digitalWrite(ledStatus, LOW);

flagSegundos = true;
flagMinutos = true;

myNextion.setComponentValue("Home.bt0",0); // No tengo claro que funcione, la intencion es que ponga a 0 el bt0.
delay(185);
inicializarTiempoTemporizacion ();
contadorSegundos=0;
contadorTotalSegundos=0;
contadorMinutos=0;
}
}

void hh_mm(){


contadorSegundos++;
if (contadorSegundos > 59) {
contadorMinutos++;
contadorSegundos=0;

}

faltanMinutos = tiempoMinutos - contadorMinutos;
if (contadorSegundos == 0) faltanSegundos=0; else faltanSegundos = 60 - contadorSegundos; // Para que muestre 00 en vez de 60 en los segundos.
// Maquetamos para que salga en un string HH:SS
memset(buffer, 0, sizeof(buffer));
memset(auxBuffer, 0, sizeof(auxBuffer));
if (contadorSegundos == 0) itoa(faltanMinutos +1 , buffer, 10); else itoa(faltanMinutos, buffer, 10);
if (faltanSegundos < 10) strcat(buffer, ":0");else strcat(buffer, ":");
itoa(faltanSegundos, auxBuffer, 10);
strcat(buffer, auxBuffer);
Serial.println(buffer);
myNextion.setComponentText("Home.t1",buffer);

}

void inicializarTiempoTemporizacion () {
// Mostramos HH:SS cargando los datos de las variables de inicio.
memset(buffer, 0, sizeof(buffer));
memset(auxBuffer, 0, sizeof(auxBuffer));
itoa(tiempoMinutos, buffer, 10);
if (tiempoSegundos < 10) strcat(buffer, ":0");else strcat(buffer, ":");
itoa(tiempoSegundos, auxBuffer, 10);
strcat(buffer, auxBuffer);
myNextion.setComponentText("Home.t1",buffer);
}
Última Edición: 6 años 2 meses antes por Maxspert.
Más
6 años 2 meses antes #1167 por Jose Luis
No te compliques mapeando para el maximo y el minimo.
Despues de esta linea: nt Voltimetro = map(voltimetro, Min , Max, Deseado_Min, Deseado_Max);

If (voltimetro > valor_maximo_que_quieras) voltimetro=el_maximo_que_desees;
if(voltimetro < valor_minimo_que_quieras) voltimetro =el_minimo_que_desees;

Con esas dos lineas nunca dejara que suba de un valor ni que baje de otro.
Más
6 años 2 meses antes #1168 por Maxspert
Buenos dias Jose "So far so good":)),con estas dos lineas que me enviaste esta manana me doy por contento,el primer prototipo esta listo de "Software" y lo unico que me falta es montarlo todo,y si todo va bien el Sabado lo montare en el primer camion para hacerle el real test.Lo unico que me falta son unos conectorer tipo Anderson de 50A que sin darme cuenta no los pedi a tiempo y no estoy seguro si llegaran antes del Sabado,pero si es este el caso dejare todo preparado a faltaa de los conectores.Cuando tenga la unidad lista para montarla en el camion,hare unas fotos,y por supuesto despues de montarla hare lo mismo.quiero darte las gracias para tu ayuda,practicamete sin ti, me habia llevado un ano completar el proyecto.Estoy muy ancioso por probarlo en vida real y a ver como se comporta y recivir el feedback del colega camionero>:))
Más
6 años 2 meses antes #1169 por Maxspert
Bueno,aqui van unas fotos con el dispositivo preparado para montar,espero que os guste:)
Adjuntos:
Tiempo de carga de la página: 0.142 segundos
Gracias a Foro Kunena