TorpedoBruno Piloto automático
CeroLab, Zona de pruebas - Inventos Varios de electónica y robótica

Un piloto automático?
Volver

GPS Garmin III

Bien..., la idea es recojer los datos que envia el GPS por el protocolo NMEA y leerlos via serie desde un micro Basic Stamp2.
El protocolo NMEA, envia un montón de datos, la idea es esperar en un bucle a que llegue lo que nos interesa, en la sentencia encabezada como $GPRMC, Sacamos el Rumbo a WP y de $GPRMB el rumbo real.
Desde el micro, leer los datos de rumbo y el rumbo deseado, al restarlos sabemos los grados que hay que ganar o perder del rumbo actual para llegar al deseado.

La movida es añadirle un servo que controle el timón o un actuador para corregir mecanicamente el rumbo.


Enviame un e-Mail si te surge cualquier duda!
Saludos, Bruno



HARDWARE:

  • Gps, un Garmin III con un WP activado y el protocolo NMEA a 4800 baudios
  • El Basic Stamp 2 en una placa de prototipo.El Gps está conectado via serie a la entrada de programación del BS2, para el micro, este puerto es el pin 16
  • Para alimentar el GPS me he montado esta caja con la que monitorizar el envio y recepción de datos del GPS por RS-232C (leds+resistencia conectados a saco en TX y RX), con esto consigues ver si se están enviando / recibiendo datos

  • Montaje general, los 2 leds de la placa, uno monitoriza la entrada de datos y el otro la entrada de corriente
  • Invento conectado y funcionando

  • Para el montaje del servo, esta vez sin trucarlo, es necesario un condensador de unos 3300Mf., pues al ponerlo en marcha su consumo puede hacer que se resetee el micro.

SOFTWARE:

'***************************************************************************
'** DEBUG NMEA 2 - Muestra el desvio de rumbo en DEBUG -
'**
'** SOFT:
'** Sacamos la info de trac de la sentencia $GPRMC que envia el GPS
'** Sacamos la info de Rumbo a WP de la sentencia $GPRMB que envia el GPS
'** Configuramos la entrada, 16572 es N81 a 4800 baud
'**
'** HARD:
'** PIN 0 = LED (Con una Resistencia de 22K)
'** PIN 2 = LED (Con una Resistencia de 22K)
'** PIN 15 = TX del GPSIII (Con una Resistencia de 22K)
'** Vss = GND del GPSIII
'****************************************************************************

tr1 var word 'Rumbo actual
wp1 var word 'Rumbo hacia el WP destino
low 0 'ENCIENDO LED en 0
OUTPUT 2 'Led amarillo en P2, para monitorizar cuando se recibe el rumbo

DEBUG CR,"Ahi vamos!"

Bucle:
DEBUG CR

serin 15\2, 16572, [wait("GPRMC,"),wait(","),wait(","),wait(","),wait(","),wait(","), wait(","),wait(","),dec tr1]
serin 15, 16572, [wait("GPRMB,"),wait(","),wait(","),wait(","),wait(","),wait(","), wait(","),wait(","),wait(","),wait(","),wait(","), dec wp1]
DEBUG CR,"Rumbo = ",DEC tr1
DEBUG CR,"wp1 = ",DEC wp1

IF wp1 < tr1 THEN Derecha 'A la izquierda
DEBUG CR,"wp1 > tr1 "
DEBUG CR,"Derecha ",DEC tr1-wp1,"º"
goto Bucle

Derecha: 'A la Derecha
DEBUG CR,"wp1 < tr1 "
DEBUG CR,"Izquierda ",DEC tr1-wp1,"º"
goto Bucle


Saludos, Bruno Barangé.
Contacta conmigo:
Formulario - bruno.akun@gmail.com

IP's