La Taberna del Puerto

La Taberna del Puerto (https://foro.latabernadelpuerto.com/index.php)
-   Foro Náutico Deportivo (https://foro.latabernadelpuerto.com/forumdisplay.php?f=2)
-   -   Bricobarco Simulador de corredera usando 1 GPS (https://foro.latabernadelpuerto.com/showthread.php?t=90073)

Aitonos 29-04-2020 01:21

Respuesta: Simulador de corredera usando 1 GPS
 
Muy interesante el hilo, me lo he leido también entero;



¿Alguien sabe si en OPENCPN tenemos ya la señal de velocidad de GPS ¿se puede hacer lanzarlo en salida como un valor NMEA0183 para usarla en el medidor de viento y tener el aparente?


En sí el OpenCPM traduce directamente la señal GPS a NMEA0183 ; pero ¿hay que sacarlo por un conector USB - RS422 como este?


https://www.amazon.com/gp/product/B0...5R5067ZO&psc=1



A ver si alguien sabe del tema. :brindis:

Gracias

ScubaEdu 13-05-2020 17:33

Re: Simulador de corredera usando 1 GPS
 
1 Archivo(s) adjunto(s)
Buenos días cofrades,

A ver si alguien me puede echar un cable. He aprovechado estos días de confinamiento y tengo un prototipo de corredera GPS para un Autohelm Tridata. A la hora de intentar conectarlo al barco he visto que tiene un conector de 5 pin que no localizo. No quería cortarlo por no tocar el Tridata y porque no estoy seguro de que mi prototipo funcione. ¿Alguien ha localizado el conector? ¿Como lo habéis resuelto?

Gracias

:brindis::brindis:

Tartessos 18-05-2020 12:38

Re: Simulador de corredera usando 1 GPS
 
1 Archivo(s) adjunto(s)
Cita:

Originalmente publicado por ScubaEdu (Mensaje 2250544)
Buenos días cofrades,

A ver si alguien me puede echar un cable. He aprovechado estos días de confinamiento y tengo un prototipo de corredera GPS para un Autohelm Tridata. A la hora de intentar conectarlo al barco he visto que tiene un conector de 5 pin que no localizo. No quería cortarlo por no tocar el Tridata y porque no estoy seguro de que mi prototipo funcione. ¿Alguien ha localizado el conector? ¿Como lo habéis resuelto?

Gracias

:brindis::brindis:

Hola ScubaEdu,
Yo me encuentro en una situación parecida pero espero resolverlo de la manera que te cuento a continuación.
Parto de un Autohelm Tridata ST50, con conector de 5 pines para la corredera, tal como se indica en el manual del Autohelm ST50 que adjunto. Además tengo el prototipo de nuestro compañero Masivas, con GPS incorporado, por lo que entiendo que la situación de partida es igual o muy similar a la tuya.
En el tridata Raymarine i50, que asumo es una evolución del Autohelm ST50, modificaron el conexionado de los transductores, sustituyendo los conectores de 5 y 3 pines por conectores independientes para cada cable, como se indica en la pág, 21 del manual del i50 siguiente:
https://www.azimutmarine.es/docs/man...RAY_i50_ES.pdf
En ese manual indica que la señal de velocidad va únicamente por el cable verde.
Lo que yo pretendo hacer, cuando me dejen desplazarme hasta mi barquito :velero::pirata::pirata:, es abrir el cable que viene de la corredera y que finaliza en el conector de 5 pines, asumo que interiormente tendrá 5 cables con los colores del i50, por lo que procederé a cortar el cable verde y conectar la señal de velocidad que proporciona el prototipo con GPS.
Espero que te sirva de ayuda para resolverlo, si lo llevas a cabo, te agradecería comentases el resultado. Gracias y una ronda para todos.:brindis:

ScubaEdu 18-05-2020 17:41

Re: Simulador de corredera usando 1 GPS
 
Cofrade,

Gracias por tu comentario. Con los manuales habia llegado a la misma conclusion que tu. El tema es que no queria cortar el cable actual. Queria hacer una instalacion limpia por si al final hago marcha atras. El problema es que no encuentro un conector parecido ni a tiros.

Muchas gracias
:brindis:

masivas 29-06-2020 10:32

Re: Simulador de corredera usando 1 GPS
 
Hola

Habéis mirado en RS-ONLINE?

https://es.rs-online.com/web/c/conectores/

Tienen un surtido brutal.

Saludos.

Aitonos 19-10-2020 00:12

Re: Simulador de corredera usando 1 GPS
 
Cita:

Originalmente publicado por ScubaEdu (Mensaje 2250544)
Buenos días cofrades,

A ver si alguien me puede echar un cable. He aprovechado estos días de confinamiento y tengo un prototipo de corredera GPS para un Autohelm Tridata. A la hora de intentar conectarlo al barco he visto que tiene un conector de 5 pin que no localizo. No quería cortarlo por no tocar el Tridata y porque no estoy seguro de que mi prototipo funcione. ¿Alguien ha localizado el conector? ¿Como lo habéis resuelto?

Gracias

:brindis::brindis:

Una pregunta, ¿qué prototipo usaste de GPS/Corredera? ¿El hecho con una placa arduino o algo más sencillo?
:brindis:

ScubaEdu 28-10-2020 12:33

Re: Simulador de corredera usando 1 GPS
 
Cita:

Originalmente publicado por Aitonos (Mensaje 2278979)
Una pregunta, ¿qué prototipo usaste de GPS/Corredera? ¿El hecho con una placa arduino o algo más sencillo?
:brindis:

Lo intente con Arduino pero lo tengo sin probar por no haber resuelto el tema del conector.

alcapar 28-10-2020 21:31

Re: Simulador de corredera usando 1 GPS
 
Cita:

Originalmente publicado por ScubaEdu (Mensaje 2280364)
Lo intente con Arduino pero lo tengo sin probar por no haber resuelto el tema del conector.

Yo lo he hecho con un Arduino, el software lo he programado de forma muy simolifificada y me funciona muy bien. Es cierto que a veces se desacompasa un poco respecto a la velocidad de GPS pero el 90% del tiempo va perfecto.

Si alguien necesita el software lo pongo aquí.

Tb lo he modificado para usar un ESP32, este tiene dos núcleos, uno lo uso para generar los pulsos y el otro para obtener lectura del GPS y generar la consigna. Esta versión no la he probado todavía.

:brindis:

skovela 29-10-2020 20:35

Re: Simulador de corredera usando 1 GPS
 
Cita:

Originalmente publicado por alcapar (Mensaje 2280450)
Yo lo he hecho con un Arduino, el software lo he programado de forma muy simolifificada y me funciona muy bien. Es cierto que a veces se desacompasa un poco respecto a la velocidad de GPS pero el 90% del tiempo va perfecto.

Si alguien necesita el software lo pongo aquí.

Tb lo he modificado para usar un ESP32, este tiene dos núcleos, uno lo uso para generar los pulsos y el otro para obtener lectura del GPS y generar la consigna. Esta versión no la he probado todavía.

:brindis:

Si puedes poner el software te lo agradecería mucho, me tire un tiempo peleando e incluso con la ayuda del autor del original no pude con él. Hice un primero hace años que funcionó muy bien pero que se fue con el barco cuando lo vendí. Con los nuevos GPS y/o placas ya no he sido capaz. En fin que si lo pones aqui me enredo de nuevo que aun tengo un par de arduinos por aquí sin darles uso.

Gracias por anticipado

Unas :brindis::brindis::brindis:

alcapar 30-10-2020 23:54

Re: Simulador de corredera usando 1 GPS
 
Cita:

Originalmente publicado por skovela (Mensaje 2280556)
Si puedes poner el software te lo agradecería mucho, me tire un tiempo peleando e incluso con la ayuda del autor del original no pude con él. Hice un primero hace años que funcionó muy bien pero que se fue con el barco cuando lo vendí. Con los nuevos GPS y/o placas ya no he sido capaz. En fin que si lo pones aqui me enredo de nuevo que aun tengo un par de arduinos por aquí sin darles uso.

Gracias por anticipado

Unas :brindis::brindis::brindis:

Cuenta con ello, el lunes cuando regrese a casa lo subo.

:brindis:

Aitonos 31-10-2020 00:16

Respuesta: Simulador de corredera usando 1 GPS
 
¡Muchas gracias!

Tartessos 02-11-2020 18:10

Re: Simulador de corredera usando 1 GPS
 
Cita:

Originalmente publicado por ScubaEdu (Mensaje 2250544)
Buenos días cofrades,

A ver si alguien me puede echar un cable. He aprovechado estos días de confinamiento y tengo un prototipo de corredera GPS para un Autohelm Tridata. A la hora de intentar conectarlo al barco he visto que tiene un conector de 5 pin que no localizo. No quería cortarlo por no tocar el Tridata y porque no estoy seguro de que mi prototipo funcione. ¿Alguien ha localizado el conector? ¿Como lo habéis resuelto?

Gracias

:brindis::brindis:

Hola de nuevo ScubaEdu, solo es para confirmarte que a mí me ha funcionado perfectamente la conexión de la placa arduino (que me facilitó ya programada el cofrade Masivas) con mi Autohelm Tridata ST50, solo abrí el cable negro que viene de la corredera y sustituí el cable interior de color verde por la salida de la placa arduino. Tienes que tener mucho cuidado porque los cables interiores del cable negro original son muy finos.
Suerte :brindis::velero::pirata:

alcapar 05-11-2020 07:05

Re: Simulador de corredera usando 1 GPS
 
1 Archivo(s) adjunto(s)
Adjunto el código, funciona bastante bien aunque lo he modificado para un ESP32, aún no probado. Recomiendo calibrar la corredera a 5 nudos.

Cualquier duda aquí estoy. Si veis posible mejoras, por favor compartir por aquí.

:brindis::brindis:

skovela 05-11-2020 08:34

Re: Simulador de corredera usando 1 GPS
 
Muchas gracias Alcapar. Lo probaré a ver si puedo rescatar mi vieja pantalla Navman.

:brindis::brindis:

skovela 12-11-2020 15:41

Re: Simulador de corredera usando 1 GPS
 
Hice el montaje con el programa de Alcapar en una protoboard y parecía funcionar. :pirata::pirata:

Ahora lo he trasladado a una placa nueva para soldar las resistencias y transistor de salida y ya no logro que la corredera marque. Estoy ya un poco desesperado. Si no es abusar de tu confianza Alcapar puedes confirmar si el esquema que usas es el mismo que en su día posteo jiauka.

Gracias y unas :brindis::brindis:

alcapar 12-11-2020 21:05

Re: Simulador de corredera usando 1 GPS
 
He usado el esquema del mensaje 100 de este post.

Comprueba las soldaduras y que el cable que lleva la señal desde nuestro montaje al display es el correcto.

:brindis:

skovela 12-11-2020 21:57

Re: Simulador de corredera usando 1 GPS
 
De acuerdo, gracias. Es lo que estaba usando. Seguiré en el intento .


:brindis::brindis:

skovela 13-11-2020 21:02

Re: Simulador de corredera usando 1 GPS
 
Bueno todo repasado y parece que vuelve a funcionar :pirata::pirata:, el domingo lo probaré en el barco.

Unas :brindis::brindis:

ScubaEdu 14-11-2020 20:11

Re: Simulador de corredera usando 1 GPS
 
Cita:

Originalmente publicado por Tartessos (Mensaje 2281158)
Hola de nuevo ScubaEdu, solo es para confirmarte que a mí me ha funcionado perfectamente la conexión de la placa arduino (que me facilitó ya programada el cofrade Masivas) con mi Autohelm Tridata ST50, solo abrí el cable negro que viene de la corredera y sustituí el cable interior de color verde por la salida de la placa arduino. Tienes que tener mucho cuidado porque los cables interiores del cable negro original son muy finos.
Suerte :brindis::velero::pirata:

Tartessos. Muchas Gracias. Hoy me he decidido y lo he hecho. Mi sorpresa es que el cable rojo lleva 5v y no 12v como esperaba. El Arduino Nano no le gusta mucho que lo alimentes por debajo de 6,5 voltios y sospecho de de vez en cuando se reinicia. ¿Tu has utilizado para alimentarlo el cable rojo y la camisa del cable de la corredera o lo has alimentado de otra forma?

Luego me tocará calibrarlo porque me parece que mide en exceso pero eso ya lo haré en la siguiente fase.

:brindis::brindis:

ScubaEdu 15-11-2020 19:02

Re: Simulador de corredera usando 1 GPS
 
Hoy lo he probado y:
Efectivamente el ST50 va a 5V no a 12
No tiene suficiente intensidad para alimentar el Arduino NANO y el GPS.
Modifico para alimentar el VIN del Ardunino con 12V y va mucho mejor. Me empeñaba en alimentarlo con el cable Rojo del ST50 y no tenia fuerza.
Estoy calibrando. De momento
No va mal a 17.000 p/nm* (4.8 Hz per knot) aunque creo que para velocidades muy bajas tendré que bajar un poco. El numero de pulsos 16.500 o algo así.

Gracias a todos

Tartessos 16-11-2020 08:36

Re: Simulador de corredera usando 1 GPS
 
Cita:

Originalmente publicado por ScubaEdu (Mensaje 2283775)
Hoy lo he probado y:
Efectivamente el ST50 va a 5V no a 12
No tiene suficiente intensidad para alimentar el Arduino NANO y el GPS.
Modifico para alimentar el VIN del Ardunino con 12V y va mucho mejor. Me empeñaba en alimentarlo con el cable Rojo del ST50 y no tenia fuerza.
Estoy calibrando. De momento
No va mal a 17.000 p/nm* (4.8 Hz per knot) aunque creo que para velocidades muy bajas tendré que bajar un poco. El numero de pulsos 16.500 o algo así.

Gracias a todos

Estupendo ScubaEdu, te podía haber advertido desde el primer momento porque di los mismos pasos que tú, naturalmente me tuve que buscar 12v de otro lugar.
Perdona que no te respondiera antes pero es que no me conecto a la taberna muy a menudo.
:brindis::brindis::cid5::cid5:

Leeway 16-11-2020 19:28

Re: Simulador de corredera usando 1 GPS
 
Perdón por atreverme a opinar pero, si los 5 volts están regulados (como es de suponer) podrían alimentar el arduino nano, no a través de Vin (entrada de alimentación externa) sino por el pin 4 (5v) o, mas fácil, directamente con un cable USB a su entrada.


https://i0.wp.com/descubrearduino.co...nout.jpg?ssl=1


Yo de momento solo he usado el Arduino uno y claro, si lo alimentas con 5 volts por la entrada de Vin no es suficiente porque pasa por el regulador interno y hay caída de tensión.


:brindis:

ScubaEdu 18-11-2020 23:16

Re: Simulador de corredera usando 1 GPS
 
Hoy he pensado en meter a la entrada de 12v un buck converter. Concretamente un dc dc mini360 MP2307.
No llega a un euro y me baja un poco la tension que con el motor en marcha llega a unos 14v. En teoria el arduino soporta picos de 20v pero mejor protegerlo. Durara mas.

Leeway 19-11-2020 11:55

Re: Simulador de corredera usando 1 GPS
 
Cita:

Originalmente publicado por ScubaEdu (Mensaje 2284453)
Hoy he pensado en meter a la entrada de 12v un buck converter. Concretamente un dc dc mini360 MP2307.
No llega a un euro y me baja un poco la tension que con el motor en marcha llega a unos 14v. En teoria el arduino soporta picos de 20v pero mejor protegerlo. Durara mas.

Y un 7809 con un disipador?

ScubaEdu 19-11-2020 20:45

Re: Simulador de corredera usando 1 GPS
 
Cita:

Originalmente publicado por Leeway (Mensaje 2284520)
Y un 7809 con un disipador?

Pues lo estuve pensando pero en teoria se calienta mucho mas y es menos eficiente ¿Por qué lo prefieres?

http://https://m.youtube.com/watch?v=giGRrODKJSE

Leeway 19-11-2020 21:30

Re: Simulador de corredera usando 1 GPS
 
Cita:

Originalmente publicado por ScubaEdu (Mensaje 2284652)
Pues lo estuve pensando pero en teoria se calienta mucho mas y es menos eficiente ¿Por qué lo prefieres?

http://https://m.youtube.com/watch?v=giGRrODKJSE

Pues el vídeo es muy interesante. Pero yo lo decía porque lo he hecho así en algunos montajes y porque creía que el Arduino también monta un 7805 , pero desde luego puede que sea mejor tu opción.
Gracias

skovela 20-11-2020 14:52

Re: Simulador de corredera usando 1 GPS
 
Bueno, ya he probado el programa de Alcapar y me marca velocidades muy bajas, aproximadamente de la mitad de lo que debería. Modificaré la calibración de la corredera pero me parece mucha diferencia para que sea sólo un desajuste de calibración. Seguiremos ...

Unas :brindis:

alcapar 21-11-2020 15:24

Re: Simulador de corredera usando 1 GPS
 
Cita:

Originalmente publicado por skovela (Mensaje 2284770)
Bueno, ya he probado el programa de Alcapar y me marca velocidades muy bajas, aproximadamente de la mitad de lo que debería. Modificaré la calibración de la corredera pero me parece mucha diferencia para que sea sólo un desajuste de calibración. Seguiremos ...

Unas :brindis:

Lo que marca no es importante, calibra con el GPS, o cambia la relación de pulsos en el sketch. Una vez ajustes para 5 nudos irá bien.

:brindis:

ScubaEdu 22-11-2020 09:26

Re: Simulador de corredera usando 1 GPS
 
Ve poniendo valores fijos a la velocidad en el programa de arduino en lugar del del GPS y con esos valores miras lo que pone en el display y ajustas el invento. Yo lo hice con pasos de medio en medio nudo y se me ha quedado perfecto. Asi ademas no mezclas error de GPS con ajuste de la corredera.

Luego ya vuelves al programa original.

Ah! Te a importante el GPS que uses. Yo el primero tenia mucho error a velocidades bajas. Me compre otro que ademas era GNSS y ahora perfecto.

skovela 22-11-2020 11:15

Re: Simulador de corredera usando 1 GPS
 
Cita:

Originalmente publicado por ScubaEdu (Mensaje 2285050)
Ve poniendo valores fijos a la velocidad en el programa de arduino en lugar del del GPS y con esos valores miras lo que pone en el display y ajustas el invento. Yo lo hice con pasos de medio en medio nudo y se me ha quedado perfecto. Asi ademas no mezclas error de GPS con ajuste de la corredera.

Luego ya vuelves al programa original.

Ah! Te a importante el GPS que uses. Yo el primero tenia mucho error a velocidades bajas. Me compre otro que ademas era GNSS y ahora perfecto.




Buena idea lo de la velocidad fija. Y lo mejor es que no hace falta irse a pasear para probar :gracias::gracias:. Lo intentaré.



Tengo tres GPS, un NEO 6M, otro NEO7M y un VKEL pero creo que todos comparten el chip de ublox y me da que ninguno tiene GNSS, de todas forma en el primer montaje que hice allá por 2013 con la instrucción original del cofrade Jiauka iba perfecto y la precisión era muy buena incluso a baja velocidad (era el chip que indicaba él al principio de este hilo). Por cierto ... ¿usais un divisor de tensión o un convertidor lógico 3,3v -5v. para conectar el GPS al arduino? o conectais directamente el Tx y Rx del GPS a las patas 2 y 3 del Arduino? lo digo porque ya he leido de todo. Parece que no afecta en principio pero no sé si a la larga se pueden romper cosas aunque aumenta el lío de conexiones y cables.


Unas :brindis::brindis::brindis::brindis:

skovela 24-11-2020 18:18

Re: Simulador de corredera usando 1 GPS
 
Cita:

Originalmente publicado por ScubaEdu (Mensaje 2285050)
... Ve poniendo valores fijos a la velocidad en el programa de arduino en lugar del del GPS y con esos valores miras lo que pone en el display y ajustas el invento. Yo lo hice con pasos de medio en medio nudo y se me ha quedado perfecto. Asi ademas no mezclas error de GPS con ajuste de la corredera ...

.


Bueno ... lo he probado y me oscila mucho la velocidad, he puesto 4.5 como velocidad fija dejando el resto de operaciones del GPS en el bucle , pero oscila en la pantalla desde 4.3 hasta 5.0 de forma continua, no se está quieta ni dos segundos. He variado el pulso un poco arriba y abajo y esa oscilación sigue igual. Si quito del bucle las todas operaciones del GPS , entonces si que se queda fija fija a 4.5 una vez ajustada la corredera ahí. No tengo mucha idea de esto pero da la impresión que la adquisición de datos del GPS distorsiona el tiempo del bucle con la consiguiente variación de pulsos por segundo. Seguiremos estudiando e intentando entender todo esto. Gracias de nuevo.


Unas :brindis::brindis:

skovela 26-11-2020 19:52

Re: Simulador de corredera usando 1 GPS
 
Hoy he cambiado la librería del GPS por la plus, he quitado las líneas referentes a latitud longitud y la oscilación a que hacía referencia en el anterior mensaje ha bajado a 0,1 nudos y todo parece mas estable


El código de Alcapar quedaría así



Cita:

#include <SoftwareSerial.h>
#include <TinyGPS++.h>

TinyGPSPlus gps;
SoftwareSerial ss(2, 3);

float velocidad = 0.0;
float frecuencia = 0;
int intervalo = 0;
float semiciclo = 0;
unsigned long tiempo = 0;
void setup()
{
Serial.begin(115200);
pinMode(9, OUTPUT);
digitalWrite(9, HIGH);
ss.begin(9600);
}

void loop()
{
while (ss.available() > 0)
gps.encode(ss.read());
if (gps.speed.isUpdated()){

velocidad = gps.speed.knots();
frecuencia = 4.8 * velocidad;
tiempo = millis();
if (velocidad != 0) {
while ((millis() - tiempo) <= 2000) {
semiciclo = 500 / frecuencia;
intervalo = round(semiciclo);
digitalWrite(9, LOW);
delay(intervalo);
digitalWrite(9, HIGH);
delay(intervalo);
}
}
else
{
digitalWrite(9, HIGH);
}
}
else {
digitalWrite(9, HIGH);
}

}



A ver si lo pruebo de forma real ...


Unas :brindis::brindis::brindis:

piratadragut1971 27-01-2021 10:05

Re: Simulador de corredera usando 1 GPS
 
Cita:

Originalmente publicado por jiauka (Mensaje 1287556)
Hola:

Hace días que tenía pendiente 1 pequeño brico para sustituir el típico sensor airmar analógico que llevan muchos veleros (el típico con el cable de masa, rojo y verde). Lo que hace es simular los impulsos en función de la velocidad GPS (SOG), ya sé que no es muy ortodoxo, ya que no tiene en cuenta la corriente, pero no tengo ningún agujero en el casco y no quiero hacerlo.

He usado 1 placa de desarrollo arduino

http://arduino.cc/en/Main/ArduinoBoardNano

1 sensor GPS NMEA0183

http://www.hvwtech.com/products/921/...-00465-300.jpg
y 1 poco de programación en C algo cutre.
Código:

 

#define F_CPU 16000000L
#include <avr/io.h>
#include <avr/interrupt.h>
#include <util/delay.h>    // including the avr delay lib
#include "led.h"            // Header file for led
#include "usart.h"            // Header for Serial communication
#include "SoftwareSerial.h"

#define MYDEBUG(x)

// OBJECT CREATION
LED led1(0x05,5);            // Creates an object called led1 connected to PortB.5 (0x05 is the Special function register for PORTB)
LED output(0x0b,4);  //PPRTD, bit 4

SoftwareSerial mySerial(2, 3,false);
#include <avr/io.h>
#include <avr/interrupt.h>

#define FOSC F_CPU // Clock Speed
#define BAUD 115200      // Baud Rate
#define MYUBRR (((((FOSC * 10) / (16L * BAUD)) + 5) / 10) - 1)

// NMEA setences
#define NMEA_DISABLE_CGA "PSRF103,00,00,00,01"
#define NMEA_DISABLE_GLL "PSRF103,01,00,00,01"
#define NMEA_DISABLE_GSA "PSRF103,02,00,00,01"
#define NMEA_DISABLE_GSV "PSRF103,03,00,00,01"
#define NMEA_DISABLE_RMC "PSRF103,04,00,00,01"
#define NMEA_DISABLE_VTG "PSRF103,05,00,00,01"
#define NMEA_ENABLE_VTG_1HZ "PSRF103,05,00,05,01"
#define NMEA_QUERY_VTG "PSRF103,05,01,01,01"

char nmea_data[128];
char setnyb(unsigned char c)
{
  if(c<9) return c+'0';
  else return c-10+'A';
}

void send_nmea(const char *datagram) {
    int i;
    char *p=(char*)datagram;
    unsigned char checksum=0;
    i=0;
    nmea_data[i++]='$';
    while(*p) {
        nmea_data[i]=*p++;
        checksum=checksum^nmea_data[i];
        i++;
    }
    nmea_data[i++]='*';
    nmea_data[i++]=setnyb((checksum >> 4) &0x0f);
    nmea_data[i++]=setnyb(checksum &0x0f);
    nmea_data[i]=0x00;
    mySerial.println((const String &)nmea_data);
   
}
#define STAT_NMEA_NONE 0
#define STAT_NMEA_HEADER 1
#define STAT_NMEA_DATA 2
       
//    VTG-Course Over Ground and Ground Speed
//$GPVTG,309.62,T,,M,0.13,N,0.2,K
char nmea_header[5];
char nmea_field[32];   
int knots=1450,dotpos,tknots=10;

int int_counter = 0;
volatile int second = 0;
int oldSecond = 0;
long starttime = 0;
int on=0;
/* Timer2 reload value, globally available */ 
unsigned int tcnt2; 
 
// Aruino runs at 16 Mhz, so we have 1000 Overflows per second...
// 1/ ((16000000 / 64) / 256) = 1 / 1000
ISR(TIMER2_OVF_vect) {
      /* Reload the timer */ 
      TCNT2 = tcnt2; 
    int_counter++;
    if(tknots > 0 ) {
          if (int_counter >= tknots) {
            if(on) {
                led1.on();
                output.on();
                on=0;
            }
              else {
                  led1.off();
                output.off();
                on=1;
            }
            int_counter = 0;
        }
    }
};
 
 void timer_setup() { 
 
  TIMSK2 &= ~(1<<TOIE2); 
 
  /* Configure timer2 in normal mode (pure counting, no PWM etc.) */ 
  TCCR2A &= ~((1<<WGM21) | (1<<WGM20)); 
  TCCR2B &= ~(1<<WGM22); 
 
  /* Select clock source: internal I/O clock */ 
  ASSR &= ~(1<<AS2); 
 
  /* Disable Compare Match A interrupt enable (only want overflow) */ 
  TIMSK2 &= ~(1<<OCIE2A); 
 
  /* Now configure the prescaler to CPU clock divided by 128 */ 
  TCCR2B |= (1<<CS22)  | (1<<CS20); // Set bits 
  TCCR2B &= ~(1<<CS21);            // Clear bit 
 
  /* We need to calculate a proper value to load the timer counter.
  * The following loads the value 131 into the Timer 2 counter register
  * The math behind this is:
  * (CPU frequency) / (prescaler value) = 125000 Hz = 8us.
  * (desired period) / 8us = 125.
  * MAX(uint8) + 1 - 125 = 131;
  */ 
  /* Save value globally for later reload in ISR */ 
  tcnt2 = 131; 
 
  /* Finally load end enable the timer */ 
  TCNT2 = tcnt2; 
  TIMSK2 |= (1<<TOIE2); 


int main(void)
{
    char c,*p;
    unsigned char stat=STAT_NMEA_NONE;
    int i,head_counter,nmea_field_counter,nmea_field_data_counter;
    // INITIALIZATIONS
    DDRB = 0b00100000;    //B5 output: board LED
    USART_Init(MYUBRR); // Initializes the serial communication

    mySerial.begin(4800);
    mySerial.listen();
    tknots=10000/knots;
    timer_setup();
    _delay_ms(1000);
    sei();
    send_nmea(NMEA_DISABLE_CGA);
    send_nmea(NMEA_DISABLE_GLL);
    send_nmea(NMEA_DISABLE_GSA);
    send_nmea(NMEA_DISABLE_GSV);
    send_nmea(NMEA_DISABLE_RMC);
    send_nmea(NMEA_DISABLE_VTG);
    send_nmea(NMEA_ENABLE_VTG_1HZ);
    while(1)
    {
        sei();
       
        if (mySerial.available()) {
            c=mySerial.read();
            MYDEBUG(USART_Sendbyte(c));
            if( c < 0x20) {
                stat=STAT_NMEA_NONE;
            }
            if( c == 0x0a) {
                _delay_ms(100);
                send_nmea(NMEA_QUERY_VTG);
            }
            switch (stat) {

                case STAT_NMEA_HEADER:
                    if(head_counter < 5 ) {
                        nmea_header[head_counter++] = c;
                        if(head_counter==5) {
                            if(strncmp(nmea_header,"GPVTG",5) ==0) {
                                MYDEBUG(USART_Send_string("GPVTG\r\n"));
                                stat=STAT_NMEA_DATA;
                                nmea_field_counter=0;
                                head_counter=0;
                            } else {
                                stat=STAT_NMEA_NONE;
                            }                           
                        }
                    } else {
                        stat=STAT_NMEA_NONE;
                    }                           
           
                break;
                case STAT_NMEA_DATA:
                    if(c == ',') {
                        if(nmea_field_counter==5) {
                            p=nmea_field;
                            dotpos=0;
                            knots=0;
                            while(*p) {
                                if(*p >= '0' && *p <= '9') {
                                    knots=knots*10+*p-'0';
                                }
                                p++;
                            }
                            sprintf(nmea_field,"\r\nspeed=%d\n\r",knots);
                            USART_Send_string(nmea_field);
                            if(knots>0)
                                tknots=10000/knots;
                            else
                                tknots=0;
                        }                           
   
                        nmea_field_counter++;
                        nmea_field_data_counter=0;
                        nmea_field[0]=0;
                    }
                    if(nmea_field_counter==5) {
                        nmea_field[nmea_field_data_counter++]=c;
                        nmea_field[nmea_field_data_counter]=0;
                    }
                    break;
                case STAT_NMEA_NONE:
                default:
                    if(c=='$') {
                        stat=STAT_NMEA_HEADER;
                        head_counter=0;
                    }
                break;
            }
        }
    }
}

Si hay alguien interesado en esquema, etc... para hacerse 1 que me lo diga y miro de pasarlo a limpio.

Hola, estaría interesado en el esquema de conexiones. Gracias

PEDRO >K 27-01-2021 11:00

Re: Simulador de corredera usando 1 GPS
 
Hola cofrade, yo también estaría interesado.
Muchas gracias

ScubaEdu 08-02-2021 22:43

Re: Simulador de corredera usando 1 GPS
 
Cita:

Originalmente publicado por PEDRO >K (Mensaje 2299220)
Hola cofrade, yo también estaría interesado.
Muchas gracias

¿Habeis visto el mensaje #95 o el #100?
¿Que esquema es el que os falta?

:nosabo:

christian b 17-02-2025 06:29

Re: Simulador de corredera usando 1 GPS
 
Buenos días
Soy Christian y me pongo en contacto con vosotros para comentarlos el tema de un ST40 bidata que lo tengo en mi barco pero que no tiene corredera, No se como solucionar este inconveniente .Como soy un ignorante en programacion os ruego que me hechais una mano para solucionar este problema,
Una cervesa de antemano

ROyOR 17-02-2025 07:17

Respuesta: Re: Simulador de corredera usando 1 GPS
 
Buenos dias christian b y bienvenido a la Taberna. Al igual que en cualquier taberna, cuando se entra por primera vez, hay que saludar y presentarse para que asi sepámoslos con quien estamos hablando, contándonos si tienes barco, donde sueles navegar, ....

Date una vuelta por el buscador, tienes hilos abierto sobre tu instrumentación.

Mira ESTE por si te puede ayudar.

Saludos
Rafa

Seehund 14-03-2025 21:02

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;
}

Seehund 18-03-2025 12:02

Re: Simulador de corredera usando 1 GPS
 
Ya he conseguido compilar el codigo con AVR Studio. En cuanto pueda lo pruebo en el barco y confirmo que funciona bien por debajo de 3 nudos.

jiauka 18-03-2025 12:56

Re: Simulador de corredera usando 1 GPS
 
Buenas

La verdad nomeacuerdo, pero hice como 20 y nadie se quejó.

Los AVR están bastante obsoletos, losúltimos que he hechgo he usado 1 ESP32, si hay interes pongo el código


Todas las horas son GMT +1. La hora es 04:21.

Powered by vBulletin® Version 3.7.0
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
© La Taberna del Puerto