La Taberna del Puerto Seguros embarcacione
"Se navega por los astros, por la mar, por la tierra, por las gentes, por los sentimientos...Se navega." Altair
VHF: Canal 77
Regresar   La Taberna del Puerto > Foro > Foros Náuticos > Foro Náutico Deportivo

Avisos

Responder
 
Herramientas Estilo
  #1  
Antiguo 07-05-2012, 00:40
Avatar de jiauka
jiauka jiauka esta desconectado
Hermano de la costa
 
Registrado: 01-10-2010
Mensajes: 10,511
Agradecimientos que ha otorgado: 3,185
Recibió 5,724 Agradecimientos en 3,150 Mensajes
Sexo:
Predeterminado Simulador de corredera usando 1 GPS

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


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.
Citar y responder
41 Cofrades agradecieron a jiauka este mensaje:
adri_cubs (31-05-2018), Akakus (14-05-2012), alarones (11-05-2012), alcapar (16-08-2019), Alux (16-09-2019), arcanos (25-04-2016), BlueMoon (14-05-2013), Camelot (03-07-2016), Capicua (05-04-2013), Capitanlanmar (27-01-2014), Chemaximus (14-09-2019), corsariomad (25-12-2014), duendevelas (10-08-2013), genoves (01-12-2014), Islanautica (14-05-2012), iven (27-07-2015), Jarcio (24-09-2014), jesmal (31-07-2018), JMPUIG (19-07-2013), Jony-- (07-08-2013), Juan de Nova (03-12-2017), Juanitu (09-10-2012), Mariñel (30-09-2014), Mescalino (10-10-2012), Nick (14-05-2012), nombrote (04-09-2018), olaje (09-10-2012), PANTU289 (25-05-2018), pato (09-10-2012), PEDRO >K (31-08-2016), Pipika (08-09-2019), RASTABAN (21-07-2013), Rebellin (20-08-2014), Rony (10-05-2012), Rotito (04-10-2016), Tabeirón Coruña (31-12-2021), tarifafun (07-04-2013), teteluis (25-09-2015), tio_ambeto (01-12-2017), topovespa (07-08-2013), Ventoleras (11-05-2012)
  #2  
Antiguo 07-05-2012, 09:54
Avatar de Clapton
Clapton Clapton esta desconectado
Capitán pirata
 
Registrado: 11-03-2009
Mensajes: 774
Agradecimientos que ha otorgado: 1,070
Recibió 222 Agradecimientos en 175 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

Hola Jiauka, buen invento, ¿entonces con este receptor y el driver en C puedes simular la corredera y conectarlo al equipo de viento?

Yo tengo una aguja de viento a la que al no conectar corredera no tengo viento real. Llamé a Simrad para preguntarles si podía hacerlo con la salida NMEA del GPS y me dijeron no, tiene que ser con corredera, el problema técnico (no me lo explicaron en detalle), tenia que ver con velocidad de transferencia o sincronismo.

Me ofrezco de conejillo de indias para probarlo.

Citar y responder
Los siguientes cofrades agradecieron este mensaje a Clapton
Pasaba (05-10-2016)
  #3  
Antiguo 07-05-2012, 10:28
Avatar de jiauka
jiauka jiauka esta desconectado
Hermano de la costa
 
Registrado: 01-10-2010
Mensajes: 10,511
Agradecimientos que ha otorgado: 3,185
Recibió 5,724 Agradecimientos en 3,150 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

Si estás por barcelona, lo probamos
Citar y responder
Los siguientes cofrades agradecieron este mensaje a jiauka
Ventoleras (11-05-2012)
  #4  
Antiguo 07-05-2012, 11:26
Avatar de Clapton
Clapton Clapton esta desconectado
Capitán pirata
 
Registrado: 11-03-2009
Mensajes: 774
Agradecimientos que ha otorgado: 1,070
Recibió 222 Agradecimientos en 175 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

No he trabajado nunca a bajo nivel, (PLC's, EPROM's, etc), pero de rascar código de todo un poco llevo muchas horas de vuelo, (y me sigue gustando).

Se ve que ya tienes el engendro sino hecho casi hecho, la verdad es que no se de que te podría ayudar, curiosidad en cambio mucha.

Te mando un MP Jaume, gracias.

Citar y responder
  #5  
Antiguo 07-05-2012, 11:30
Avatar de jiauka
jiauka jiauka esta desconectado
Hermano de la costa
 
Registrado: 01-10-2010
Mensajes: 10,511
Agradecimientos que ha otorgado: 3,185
Recibió 5,724 Agradecimientos en 3,150 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

El engendro está hecho y funcionando en tierra, falta probarlo en 1 barco, pero seguro que va.
Citar y responder
  #6  
Antiguo 10-05-2012, 12:57
Avatar de LoboBlanco
LoboBlanco LoboBlanco esta desconectado
Pirata
 
Registrado: 07-12-2006
Edad: 62
Mensajes: 160
Agradecimientos que ha otorgado: 78
Recibió 27 Agradecimientos en 19 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

Jiauka : Me parece muy interesante. A mi por lo menos me gustaría ver ese esquema. Y también saber dónde localizaste el sensor de Gps y cuanto te costo

Gracias
Citar y responder
  #7  
Antiguo 10-10-2012, 14:07
Avatar de 0tilio
0tilio 0tilio esta desconectado
Corsario
 
Registrado: 27-10-2006
Localización: Mar de Alborán
Edad: 66
Mensajes: 1,304
Agradecimientos que ha otorgado: 3
Recibió 200 Agradecimientos en 153 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

Cita:
Originalmente publicado por jiauka Ver mensaje
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


y 1 poco de programación en C algo cutre.
[code]

..........................................

Si hay alguien interesado en esquema, etc... para hacerse 1 que me lo diga y miro de pasarlo a limpio.
Al contrario, mucho mejor olvidarse de la corriente y usar SOG si quieres tener datos exactos del viento real.
¿Y los Raymarine tragan esos datos tal cual, sin Seatalk de por medio?
Gran invento, lo tengo que probar.
__________________
FSM, Ramén!!!
Citar y responder
  #8  
Antiguo 10-10-2012, 14:25
Avatar de Nuba
Nuba Nuba esta desconectado
Capitán pirata
 
Registrado: 06-11-2006
Localización: pequeña que no sé mucho... ;)
Edad: 55
Mensajes: 658
Agradecimientos que ha otorgado: 250
Recibió 388 Agradecimientos en 122 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

Yo saqué numerito para la cola hace tiempo... a ver si lo encuentro en algún sitio
__________________

2010- Jouet 22 "Zakkai"
2011~ Furia 28 "Cocoliso"
2013
~ Anbemar, la casa-barco más guay del mundo mundial!!!
~~~~~~~~~
Citar y responder
Los siguientes cofrades agradecieron este mensaje a Nuba
Thor_Valencia (31-05-2018)
  #9  
Antiguo 11-03-2013, 09:15
Avatar de lidiana
lidiana lidiana esta desconectado
Corsario
 
Registrado: 28-01-2010
Localización: Costa Dorada
Edad: 50
Mensajes: 1,348
Agradecimientos que ha otorgado: 1,444
Recibió 757 Agradecimientos en 301 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

Por fin tengo el invento funcionando
Por si alguien se anima a intentarlo, os cuento mi experiencia.
El primer problema fué que el arduino nano que venden en el deal extreme no trae programado el bootloader, por lo que no hay manera de programarlo.
Me volví loco intentando programar el bootloader, pero al final desistí, menos mal que el cofrade Jiauka , me lo programó.
Una vez programado seguía sin funcionar...
Pues nada me instalé el software de atmel atmel studio 6, y compilé el programa. Conseguí un software para (avrprogram) para grabar el .hex
y lo programé, pero seguía sin funcioanr .
Entonces gracias al soporte del Jiauka, encontramos el problema. El esquema que puso Jiauka lusaba el gps EM406, pero el que se compra en el deal extream es el modelo EM411, y lleva un conexionado diferente.

Total que del esquema que teneis hay que intercambiar los pines tx y rx del gps al arduino. En el GPS EM411 el Tx es el pin3 que va a la pata d2 del arduino y ya funciona!!!

Conclussiones, si quereis montar este fabuloso invento os aconsejo:
- Comprar el arduino nano oficial, que ya viene con el bootloader.
- Intercambiar los pines d2 y d3 del arduino en el esquema

Quiero agradecer a Jiauka la paciencia que ha tenido y la ayuda que me ha prestado !

Aquí os dejo un video de ayer con la corredera funcionando por fin
__________________
¿Eres Furioso?
Únete a nuestro club:
http://www.clubfuria.com

Citar y responder
Los siguientes cofrades agradecieron este mensaje a lidiana
pil pil (12-11-2015)
  #10  
Antiguo 11-03-2013, 10:01
Avatar de Capitán Hake
Capitán Hake Capitán Hake esta desconectado
Pirata
 
Registrado: 21-02-2010
Localización: Garraf
Mensajes: 207
Agradecimientos que ha otorgado: 79
Recibió 87 Agradecimientos en 55 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

Nunca le agradeceré lo suficiente al Cofrade Jiauka su "invento" Funciona de maravilla y, yo personalmente, le saco mas partido a esta información (SOG) que a la de la corredera.
Citar y responder
  #11  
Antiguo 11-03-2013, 12:45
Avatar de vertijean
vertijean vertijean esta desconectado
Abanderador
 
Registrado: 03-02-2009
Localización: mediteraneo
Edad: 52
Mensajes: 6,716
Agradecimientos que ha otorgado: 821
Recibió 1,540 Agradecimientos en 1,036 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

Me podies fabricar una ?
Citar y responder
  #12  
Antiguo 11-03-2013, 14:26
Avatar de skovela
skovela skovela esta desconectado
Corsario
 
Registrado: 29-10-2007
Localización: Alrededores de Valencia
Edad: 60
Mensajes: 1,153
Agradecimientos que ha otorgado: 160
Recibió 406 Agradecimientos en 275 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

Cita:
Originalmente publicado por lidiana Ver mensaje
Por fin tengo el invento funcionando
Por si alguien se anima a intentarlo, os cuento mi experiencia.
El primer problema fué que el arduino nano que venden en el deal extreme no trae programado el bootloader, por lo que no hay manera de programarlo.
Me volví loco intentando programar el bootloader, pero al final desistí, menos mal que el cofrade Jiauka , me lo programó.
Una vez programado seguía sin funcionar...
Pues nada me instalé el software de atmel atmel studio 6, y compilé el programa. Conseguí un software para (avrprogram) para grabar el .hex
y lo programé, pero seguía sin funcioanr .
Entonces gracias al soporte del Jiauka, encontramos el problema. El esquema que puso Jiauka lusaba el gps EM406, pero el que se compra en el deal extream es el modelo EM411, y lleva un conexionado diferente.

Total que del esquema que teneis hay que intercambiar los pines tx y rx del gps al arduino. En el GPS EM411 el Tx es el pin3 que va a la pata d2 del arduino y ya funciona!!!

Conclussiones, si quereis montar este fabuloso invento os aconsejo:
- Comprar el arduino nano oficial, que ya viene con el bootloader.
- Intercambiar los pines d2 y d3 del arduino en el esquema

Quiero agradecer a Jiauka la paciencia que ha tenido y la ayuda que me ha prestado !

Aquí os dejo un video de ayer con la corredera funcionando por fin

¿Podeis detallar un poquito mejor eso del bootloader? Yo compré los chismes en DX e hice el montaje (revisaré los pines que mencionas), pero luego no fui capaz de programarlo (igual sería eso del bootloader entre otras cosas) y lo he dejado aparcado también en parte por falta de tiempo y porque ya estoy usando señal SOG del GPS de a bordo que la electronica la puede usar para el VMG, y no me es muy necesario, pero me vendría bien terminarlo.

Unas
Citar y responder
  #13  
Antiguo 11-03-2013, 15:14
Avatar de lidiana
lidiana lidiana esta desconectado
Corsario
 
Registrado: 28-01-2010
Localización: Costa Dorada
Edad: 50
Mensajes: 1,348
Agradecimientos que ha otorgado: 1,444
Recibió 757 Agradecimientos en 301 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

Cita:
Originalmente publicado por skovela Ver mensaje
¿Podeis detallar un poquito mejor eso del bootloader? Yo compré los chismes en DX e hice el montaje (revisaré los pines que mencionas), pero luego no fui capaz de programarlo (igual sería eso del bootloader entre otras cosas) y lo he dejado aparcado también en parte por falta de tiempo y porque ya estoy usando señal SOG del GPS de a bordo que la electronica la puede usar para el VMG, y no me es muy necesario, pero me vendría bien terminarlo.

Unas
Es fácil saber si tiene o no el bootloader. Bajate el software de la pagina de arduino y intenta cargar el ejemplo de blink. Si se pone a parpadear el led es que todo esta ok. Si te da error al intentar cargar algún ejemplo es que le falta el bootloader.
¿tienes instalado el driver de ftdi? ¿al conectar el arduino al pc te sale un puerto serie USB com3 o com5?
__________________
¿Eres Furioso?
Únete a nuestro club:
http://www.clubfuria.com

Citar y responder
  #14  
Antiguo 06-04-2013, 17:08
Avatar de ULISES
ULISES ULISES esta desconectado
Corsario
 
Registrado: 30-10-2006
Localización: costa mediterranea
Edad: 75
Mensajes: 1,475
Agradecimientos que ha otorgado: 1,030
Recibió 423 Agradecimientos en 308 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS


A mi me sigue gustando mas la corredera no solo para saber la velocidad ya que el GPS te la dice tambien y mas fiable.
Ni por tener en el equipo de viento el real y el aparente.....
La corredera sirve tambien para valorar mejor las corrientes y su influencia en la navegacion......mediante la comparacion entre Corredera y Gps podemos decidir que bordo tomar respecto a la corriente imperante.
Corredera ..........SI
GPS /PLOTER ......TAMBIEN
__________________
"Los barcos estan mas seguros en el puerto,
Pero no es para esto que se construyeron los barcos"
Paulo Coelho.
Citar y responder
  #15  
Antiguo 06-04-2013, 18:54
Avatar de jiauka
jiauka jiauka esta desconectado
Hermano de la costa
 
Registrado: 01-10-2010
Mensajes: 10,511
Agradecimientos que ha otorgado: 3,185
Recibió 5,724 Agradecimientos en 3,150 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

Cita:
Originalmente publicado por ULISES Ver mensaje
La corredera sirve tambien para valorar mejor las corrientes y su influencia en la navegacion......mediante la comparacion entre Corredera y Gps podemos decidir que bordo tomar respecto a la corriente imperante.
Corredera ..........SI
GPS /PLOTER ......TAMBIEN
Totalmente de acuerdo, ya lo dije en el primer post.

Cita:
Originalmente publicado por jiauka Ver mensaje
Hola:.....
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.

Es simplemente 1 solución para aquellos que no queremos agujeros en el casco o no queremos demontar/limpiar la corredera cada tanto.

A mi me encataría llevar 1 corredora ultrasónica puesta en popa, en el timón o algún lugar que no me obligue a poner 1 pasacascos, pero no la he encontrado ni tengo ganas de adaptar 1 carísima sonda ultrasónica de momento.
Citar y responder
  #16  
Antiguo 06-04-2013, 21:00
Avatar de beta4
beta4 beta4 esta desconectado
Hermano de la costa
 
Registrado: 01-11-2010
Mensajes: 2,118
Agradecimientos que ha otorgado: 49
Recibió 644 Agradecimientos en 473 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

Saludos cofrades.

La idea me parece magnifica.

No si se lo tengo claro, este equipo lo que mide es la velocidad sobre el fondo .

No la velocidad sobre el agua .

Que en el fondo no sustituye a la corredera.

O estoy equivocado.


Triodo
Citar y responder
  #17  
Antiguo 29-09-2015, 08:13
Avatar de North Side
North Side North Side esta desconectado
Hermano de la costa
 
Registrado: 11-08-2013
Edad: 49
Mensajes: 2,118
Agradecimientos que ha otorgado: 887
Recibió 1,091 Agradecimientos en 550 Mensajes
Sexo:
Predeterminado Simulador de corredera usando 1 GPS

Cita:
Originalmente publicado por jiauka Ver mensaje
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


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 jiauka. Te he puesto un privado también, pero parece que no te llega o tienes la entrada llena. Me puedes orientar sobre esto:

Buenas, estoy intentando programar el Arduino con el Atmel Studio 6.2 pero no hay manera de compilar el código, me devuelve un error tal que así:

Código:
unrecognized command line option '-Wl'


¿Alguien sería tan amable de decirme que estoy haciendo mal?



Muchas gracias y un saludo
Citar y responder
  #18  
Antiguo 20-02-2016, 17:25
Avatar de jmbfri
jmbfri jmbfri esta desconectado
Pirata pata palo
 
Registrado: 06-09-2015
Edad: 47
Mensajes: 312
Agradecimientos que ha otorgado: 84
Recibió 144 Agradecimientos en 74 Mensajes
Sexo:
Predeterminado Simulador de corredera usando 1 GPS

Este este esquema es válido para el st60 raymarine?



Enviado desde mi iPhone utilizando Tapatalk
Citar y responder
  #19  
Antiguo 20-02-2016, 22:49
Avatar de jiauka
jiauka jiauka esta desconectado
Hermano de la costa
 
Registrado: 01-10-2010
Mensajes: 10,511
Agradecimientos que ha otorgado: 3,185
Recibió 5,724 Agradecimientos en 3,150 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

Cita:
Originalmente publicado por jmbfri Ver mensaje
Este este esquema es válido para el st60 raymarine?



Enviado desde mi iPhone utilizando Tapatalk
creo que sí, pero si puedes envia la foto con más resolución, se ve muy pequeña.
Citar y responder
  #20  
Antiguo 20-02-2016, 22:53
Avatar de jmbfri
jmbfri jmbfri esta desconectado
Pirata pata palo
 
Registrado: 06-09-2015
Edad: 47
Mensajes: 312
Agradecimientos que ha otorgado: 84
Recibió 144 Agradecimientos en 74 Mensajes
Sexo:
Predeterminado Simulador de corredera usando 1 GPS



Espero que se vea mejor


Enviado desde mi iPad con Tapatalk
Citar y responder
  #21  
Antiguo 21-02-2016, 09:30
Avatar de Jarcio
Jarcio Jarcio esta desconectado
Pirata pata palo
 
Registrado: 27-09-2009
Edad: 59
Mensajes: 421
Agradecimientos que ha otorgado: 89
Recibió 89 Agradecimientos en 48 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

Cita:
Originalmente publicado por jmbfri Ver mensaje


Espero que se vea mejor


Enviado desde mi iPad con Tapatalk
Hola.

Este es el esquema que adjunté en el post #88 de este hilo (siento que esté hecho a lápiz, un poco cutre, la verdad, pero creo que se entiende bien ).

Comentar que el módulo GPS EM-411 que tengo montado tiene esos colores, pero hay otra versión que tiene todos los cables grises excepto uno negro. Creo que el negro coincide en los dos modelos y orden es el mismo aunque sean todos grises.

Salud y suerte con el tema
Citar y responder
  #22  
Antiguo 21-02-2016, 09:41
Avatar de jmbfri
jmbfri jmbfri esta desconectado
Pirata pata palo
 
Registrado: 06-09-2015
Edad: 47
Mensajes: 312
Agradecimientos que ha otorgado: 84
Recibió 144 Agradecimientos en 74 Mensajes
Sexo:
Predeterminado Simulador de corredera usando 1 GPS

Cita:
Originalmente publicado por Jarcio Ver mensaje
Hola.

Este es el esquema que adjunté en el post #88 de este hilo (siento que esté hecho a lápiz, un poco cutre, la verdad, pero creo que se entiende bien ).

Comentar que el módulo GPS EM-411 que tengo montado tiene esos colores, pero hay otra versión que tiene todos los cables grises excepto uno negro. Creo que el negro coincide en los dos modelos y orden es el mismo aunque sean todos grises.

Salud y suerte con el tema

Exactamente, de ahí cogí el esquema. El módulo lo tengo pedido pero no me ha llegado, hasta que no lo tenga no sabré que versión de cables trae. Como llevas el proyecto, lo tienes ya funcionando?


Enviado desde mi iPhone utilizando Tapatalk
Citar y responder
  #23  
Antiguo 21-02-2016, 11:21
Avatar de Jarcio
Jarcio Jarcio esta desconectado
Pirata pata palo
 
Registrado: 27-09-2009
Edad: 59
Mensajes: 421
Agradecimientos que ha otorgado: 89
Recibió 89 Agradecimientos en 48 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

Cita:
Originalmente publicado por jmbfri Ver mensaje
Exactamente, de ahí cogí el esquema. El módulo lo tengo pedido pero no me ha llegado, hasta que no lo tenga no sabré que versión de cables trae. Como llevas el proyecto, lo tienes ya funcionando?


Enviado desde mi iPhone utilizando Tapatalk
Siiiiiiiiiiiiiiiiiiiiiiiiiiiii, funcionando a tope con un ST40. Gracias a Jiauka, que en un momento de atasco me ayudó a sacarlo adelante .

Salud
Citar y responder
  #24  
Antiguo 12-04-2016, 23:55
Avatar de masivas
masivas masivas esta desconectado
Piratilla
 
Registrado: 15-03-2010
Edad: 54
Mensajes: 60
Agradecimientos que ha otorgado: 9
Recibió 24 Agradecimientos en 12 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

Buenas noches a todos

Por favor jiauka, podrias volver a subir los ficheros con el codigo, porque en el primer mensaje aparece el codigo, pero no se si esta completo.

Si tu o alguien lo tiene migrado al arduino ide, pues mejor.

Yo tengo algo escrito en el arduino ide que me saca la velocidad en nudos y lo que quiero, es saber como mandarle por un pin (9) la info a la corredera, y eso no me acaba de quedar claro en el codigo que hay publicado.

En fin nose si alguien me puede arrojar luz, muchas gracias.
Citar y responder
Los siguientes cofrades agradecieron este mensaje a masivas
ManelvallsVila (12-04-2016)
  #25  
Antiguo 04-10-2016, 19:23
Avatar de wostem
wostem wostem esta desconectado
Piratilla
 
Registrado: 09-12-2006
Localización: Barcelona /Costa Brava
Edad: 60
Mensajes: 97
Agradecimientos que ha otorgado: 51
Recibió 19 Agradecimientos en 16 Mensajes
Sexo:
Predeterminado Re: Simulador de corredera usando 1 GPS

En www.arduino.org te bajas el programa, facil de utilizar, yo lo hice antes de verano y funciona ! Los drivers me volvieron loco...

Enviado desde mi SM-T311 mediante Tapatalk
Citar y responder
Los siguientes cofrades agradecieron este mensaje a wostem
jibaro (04-10-2016)
Responder Ver todos los foros en uno

Seguros embarcacione


Reglas del foro
No puedes crear discusiones
No puedes responder a mensajes
No puedes editar tus adjuntos
No puedes editar tus mensajes

BB code está activado
Emoticonos está activado
El código [IMG] está activado
El código HTML está desactivado
Ir a


Todas las horas son GMT +1. La hora es 16:58.


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