VHF: Canal 77
"Se navega por los astros, por la mar, por la tierra, por las gentes, por los sentimientos...Se navega." — Altair

Anuncio

Colapsar

NORMAS DEL FORO: OBLIGATORIA SU LECTURA

Hola cofrade, has recalado en la Taberna del Puerto, algo más que un foro náutico. Eres bienvenido, participa, aprende y enséñanos; de eso se trata, de enriquecernos todos en nuestros conocimientos, y sobre todo de pasar un buen rato. No entres si vienes buscando conflictos, polémicas o cualquier otro fin que no sean los anteriormente descritos. Tenemos algunas normas y es obligatorio que las leas antes de empezar.

1/ Este es un foro náutico y aunque se permite hablar de otros temas, se ruega contención en el uso de los mismos, para ello existe un foro específico.

2/ Usa títulos claros y que describan el contenido del tema. De este modo será más fácil encontrarlos en el buscador para posteriores consultas además de que facilitas el trabajo de los que te vayan a responder. Títulos ambiguos como “ayuda”, “tengo un problema”, etc... no colaboran a este fin. Inserta tú tema en el foro adecuado, mira antes de lanzarlo por si alguien poco antes que tú ha puesto lo mismo; si es así no crees un tema nuevo, contesta al otro. Usa el buscador, es una gran herramienta. No escribas todo el texto con mayúsculas, se interpreta como que estás gritando. Todo esto facilita enormemente el trabajo de los que curramos aquí.

3/ No se permite el "spam" ni la publicidad de empresas o de actividades que conlleven lucro. Tampoco solicitud de ofertas de empresas o profesionales salvo en los foros de anuncios de compra-venta.

4/ No uses el foro como un chat salvo en aquellos temas habilitados a tal efecto, los cuales periódicamente serán eliminados. Las contestaciones reiterativas y/o automáticas, haciendo uso del sistema copi-pegui o cualquier otro no están permitidas.

5/ Respeta a los demás y a sus opiniones si quieres que las tuyas sean respetadas. Los insultos, la agresividad, el mal gusto y la mala educación no están permitidas en este foro. Aquí venimos a divertirnos, no a pelearnos. Se prohíbe insultar, ser agresivo, maleducado, soez, no respetar a los demás, intentar imponer nuestras ideas, empezar o dar pie a que empiecen peleas o trifulcas. Se exige orden y delicadeza a la hora de tratar ciertos asuntos, como por ejemplo, en lo que a la ortografía se refiere. Serán considerados como insultos y faltas de respeto el calificar a los Moderadores y/o Administradores como censores, dictadores, que coartan la libertad de expresión, que aplican un doble rasero, y expresiones similares.

6/ Nos gusta conocer con quién hablamos, así que, una pequeña presentación en el foro correspondiente que existe para tal fin siempre será bien recibida. No obstante, si alguien decide no presentarse, los demás usuarios se abstendran de reclamar dicha presentación y/o realizar crítica o petición alguna.

7/ Los temas políticos o que induzcan a la polémica innecesaria, mejor los dejas para otros foros de los muchos que hay para ello en la red. Se prohíbe hablar de política, de política económica, de política social, de nacionalismos, de antinacionalismos, de diferencias idiomáticas, de banderas nacionales, de exaltaciones patrióticas, de hechos diferenciales, de religión, de anti-religíon, de toros y del maltrato animal, y en general de todos los temas que se sabe de antemano van a ser polémicos y mucho más si no son náuticos. No contestes a estos temas o mensajes, informa a los administradores. No se tolerarán actitudes racistas, xenófobas, sexistas, denigrantes hacia otros colectivos o para con los demás, totalitarias o extremistas sean del signo que sea.

8/ El reenvío de mensajes que hayan sido modificados, o bien el envío de otros mensajes que muestren su descontento con esta modificación, pueden conducir al bloqueo de la cuenta. Esto también sucederá cuando un usuario insista en retomar algún tema o continuar sobre una conducta de la que se le ha alertado. En casos de que la mala conducta de un usuario continúe, se podrá proceder a su expulsión definitiva.

9/ Todos los temas y/o mensajes que fomenten la piratería sobre cualquier software u otro material protegido, o informen de cómo o dónde llevarla a cabo serán retirados inmediatamente del foro. No obstante, y debido a la imposibilidad por parte de los administrador de controlar todos los temas y mensajes , si alguien detecta cualquier incidencia de este tipo ruego lo comunique de forma inmediata a la administración, especificando el enlace al tema para poder ser retirado.

10/ Se prohíbe la reproducción total o parcial de textos u otros medios sujetos a Copyright y/o pertenecientes a otras webs, foros, etc... Sin embargo si que se podrán insertar enlaces a los mismos, pero siempre haciendo referencia a la página propietaria.

11/ La Taberna es un foro en lengua castellana o español, pero cada uno es libre de expresarse como quiera, allá él si la mayoría no lo entiende. Los usuarios se abstendrán de hacer ningún comentario indicando al que escribe en otra lengua su pertinencia o no. Tampoco se tolerará el uso del idioma como arma reivindicativa de ningún tipo.

12/ No se permiten insultos ni difamaciones a empresas, profesionales o particulares. Tampoco acusaciones de ningún tipo, que no estén probadas o demostradas judicialmente o por lo medios legales adecuados. Este no es un medio para presentar denuncias, para ello, existen los juzgados, consumo, etc...

13/ No se permite la inserción de hilos o mensajes con el fin de generar exclusivamente tráfico a otras web o canales, bien sea mediante enlaces, mediante árticulos, ficheros o datos parciales, o por cualquier otro método.

14/ Cualquier incumplimiento de estas normas, puede ser motivo de amonestación y/o expulsión del autor, de borrado o cierre de temas o mensajes, o de cualquier otra medida que la administración decida para intentar hacer que éstas sean cumplidas. Los temas pueden ser movidos o unidos sin previo aviso a criterio de los administradores.

15/ Si estás de acuerdo con ellas este es tú sitio; si no te gustan, no te apetece cumplirlas, las consideras restrictivas, censoras o que coartan tu libertad de expresión, no entres, no intervengas, y no te quejes cuando te sean aplicadas las medias correctoras adecuadas. No luches por cambiarlas a tu conveniencia, no puedes.

16/ Baja Voluntaria del foro.

Ni éste ni ningún otro Foro tiene previsto un sistema de Bajas voluntarias y automáticas. Simplemente con dejar de participar en él, y editar el Perfil de usuario para que dejen de aparecer los datos que crean no deben verse es sufiente.

No obstante, si alguien quiere que se le borre su cuenta, deberá enviar un e-mail desde el enlace "contáctanos" que se encuentra en la parte inferior del foro usando el e-mail con el que está registrado en la Taberna ya que es la única forma de comprobar la autenticidad del que se quiere dar de baja.
Así se evita que alguien pueda coger los datos de tu cuenta y pedir que se borre la misma.

Por otro lado advertir que los mensajes del usuario aparecerán, una vez borrada la cuenta, como realizados por un "invitado" ya que las intervenciones en un Foro público, son públicas. Es decir, desde el momento en que se publican dejan de pertenecer al usuario. Por otro lado, como siempre hay contestaciones a los mensajes, si algunos son borrados, el hilo deja de tener sentido.

En cualquier caso, si existe algún o algunos mensajes en el que aparezcan datos personales que el usuario no quiere que sigan apareciendo, ANTES de pedir la baja, podrá reportarnos estos mensajes, usando la opción "reportar mensajes" y nosotros eliminaremos esos datos personales.

Se entiende que una vez borrada la cuenta, esta acción es irreversible, con lo cual no se podrá volver atrás.


Estas normas pueden ser modificadas sin previo aviso, por lo que se recomienda consultarlas regularmente...



Bueno, y eso es todo, pasa, busca asiento por donde puedas y pide lo que guste...
Ver más
Ver menos

Simulador de corredera usando 1 GPS

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • Bricobarco 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



    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.

  • #2
    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.

    Comentario


    • #3
      Re: Simulador de corredera usando 1 GPS

      Si estás por barcelona, lo probamos

      Comentario


      • #4
        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.

        Comentario


        • #5
          Re: Simulador de corredera usando 1 GPS

          El engendro está hecho y funcionando en tierra, falta probarlo en 1 barco, pero seguro que va.

          Comentario


          • #6
            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

            Comentario


            • #7
              Re: Simulador de corredera usando 1 GPS

              Adjunto el esquema y el codigo fuente, no tiene mucho secreto, el GPS y el modulo están comprado en dealextreme:





              En los adjuntos está el esquema y el codigo fuente del software para el AVR studio 5.1

              Y unas fotos del invento.





              Editado por última vez por jiauka; 22/02/2015, 18:57:46.

              Comentario


              • #8
                Re: Simulador de corredera usando 1 GPS

                Yo quiero uno ! Te mando un privado y me dices el precio, si me lo quieres hacer.

                El final de las correderas con caracolillo !

                Comentario


                • #9
                  Re: Simulador de corredera usando 1 GPS

                  Mandame el precio por MP

                  Comentario


                  • #10
                    Re: Simulador de corredera usando 1 GPS

                    Muchas gracias Jiauka, está genial

                    ¿Que utilizas como pantalla?

                    Comentario


                    • #11
                      Re: Simulador de corredera usando 1 GPS

                      Originalmente publicado por LoboBlanco Ver Mensaje

                      ¿Que utilizas como pantalla?
                      Como pantalla, la que lleves en el barco, yo uso 1 SIMRAD IS12 combi, aunque lo he porbado en 1 NAVMAN 100 y en raymarine ST40 y ST60 y funciona en todos ellos.


                      Lo que hace mi "invento" es sustituir el SENSOR de la corredera, el típico que siempre está sucio y no funciona.

                      Comentario


                      • #12
                        Re: Simulador de corredera usando 1 GPS

                        El invento me parece muy interesante, me pregunto si los valores que da el gps y salen en pantalla cambian muy rapidamente, en nuestro caso tomamos datos de una antena gps y salen en la radio y en el pc a traves del opencn, resulta que los valores sog oscilan a toda marcha y no hay forma de quedarse con un resultado mas o menos estable de velocidad.
                        Salud

                        Comentario


                        • #13
                          Re: Simulador de corredera usando 1 GPS

                          Buen trabajo


                          Electrónica marina y accesorios náuticos, al mejor precio - info@islanautica.es - 956 941 222 - El tfno. no está disponible las 24h, el email si.

                          Comentario


                          • #14
                            Re: Simulador de corredera usando 1 GPS

                            Originalmente publicado por macroll Ver Mensaje
                            El invento me parece muy interesante, me pregunto si los valores que da el gps y salen en pantalla cambian muy rapidamente, en nuestro caso tomamos datos de una antena gps y salen en la radio y en el pc a traves del opencn, resulta que los valores sog oscilan a toda marcha y no hay forma de quedarse con un resultado mas o menos estable de velocidad.
                            Salud
                            En los que he probado cambia suave, de todas formas es muy sencillo hacer una interpolación de avrios valores o 1 pequeño filtro FIR por software. También depende del módulo GPS usado, algunos filtran mejor que otros las pequeñas variaciones.

                            Y si usas opencpn, en "toolbox settings" tienes la opción de filtrar los datos del GPS para que no sean tan erráticos.

                            fuente:

                            404 Please update your bookmarks and return to the home page.


                            "Filter NMEA Course and Speed Data:
                            Providing a rolling average of COG/SOG, with configurable sampling period. This feature is useful, for example, if you find that course and speed from the gps is varying erratically due to the sea state. The Dashboard plugin is not affected by this setting - COG and SOG are updated about once per second."

                            Comentario


                            • #15
                              Re: Simulador de corredera usando 1 GPS

                              Hola Jiauka, ojala me fuera bien a mi este invento ...

                              Para la corredera no tengo problemas porque yo sí tengo agujero en el casco y sacandola cuando no navego la mantengo en buen estado.

                              Mi problema es que mi lector de viento solo me da el aparente. Tengo un SIMRAD IS15 que para calcular el viento real necesita que le lleguen velocidad y rumbo en formato NMEA 0813.

                              Yo había pensado sacar esos datos de la antena activa GPS que tengo para la DSC de la radio y conectado al IS15 vía cable ROBLINK de SIMRAD.

                              ¿Tu crees que me puede funcionar?

                              Te enviaría el manual del IS15 pero no puedo subir al foro ficheros pdf > 200 KB's.

                              Unas

                              Comentario

                              Trabajando...
                              X