Discusión: Bricobarco Simulador de corredera usando 1 GPS
Ver mensaje
  #6  
Antiguo 14-03-2025, 21:02
Avatar de Seehund
Seehund Seehund esta desconectado
Piratilla
 
Registrado: 12-04-2018
Localización: Huelva
Edad: 50
Mensajes: 37
Agradecimientos que ha otorgado: 17
Recibió 36 Agradecimientos en 12 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

El codigo publicado por Jiauka en la pagina 4, post numero 100 creo que esta mal.

Parace que dependiendo si la velocidad esta por debajo o por encima de 3 nudos utiliza un prescale de 64 o 256. (64x4=256)

Pero luego los K_NOT_FACTOR que utiliiza son 2626000 y 164125 (164125x4 no es 2626000)

Osea los prescale son multiplos de 4 pero los knot_factor no son multiplos de 4.

El valor correcto para KNOT_FACTOR_L creo que seria 656500

Detecte el fallo porque el invento me da velocidades muy bajas por debajo de los 3 nudos y funciona bien por encima de los 3 nudos.

No se si Jiauka sigue por el foro y puede darle un vistazo al codigo y confimar esto.

Lo que me extraña es que el codigo se publico en 2016 y nadie haya notado el error. Porque ya digo que no marca bien velocidad por debajo de 3 nudos.

Copio aqui debajo el trozo de codigo afectado

#define KNOT_FACTOR_H 2626000L
#define KNOT_FACTOR_L 164125L
#define KNOT_LOWER_THRESHOLD 300L //below 3 knots
#define KNOT_UPPER_THRESHOLD 500L //over 5 knots

void pwm_set(long OCRValue)
{
OCR1A = OCRValue; // set the counter
}

void pwm_start(int high_low)
{
if(high_low)
TCCR1B = _BV(WGM12)|_BV(CS11)|_BV(CS10); // // CTC mode - 64 prescale
else
TCCR1B = _BV(WGM12)|_BV(CS12)|_BV(CS10); // // CTC mode - 256 prescale
TCCR1A = _BV(COM1A0); // // Toggle mode 0C1A
pwm_high=high_low;
}
Citar y responder