Buenas tardes.
Desde varios días estoy intentando realizar la calibración del potenciómetro en el programa k3ng para correcta visualización de la posición. Mediante comandos O y F usando puerto serie intento que el programa graba los valores de la posición. Pero por mucho que intento no hay manera. Así que pido colegas que han trabajado con ese programa que me ayuden y explican como puedo hacerlo. Todo el procedimiento. También me gustaría saber que hace el comando Q? Tengo manual pero no me viene.
Gracias y un saludo
EC4AGT
Wojtek
73
Wojyek, en el fichero rotator_settings.h tienes los comandos básicos,
/*
Use these commands to change the azimuth starting point and rotation capability if you have already ran the code one which would have
initialized the EEPROM:
\Ix[x][x] - set az starting point
\I - display the current az starting point
\Jx[x][x] - set az rotation capability
\J - display the current az rotation capability
\Q - Save settings in the EEPROM and restart
*/
Como ves \Q (con contrabarra -AltGr+1) sirve para guardar parámetros actuales en la EEPROM. Para manejar los comandos, debes tener asegurada la comunicación con el monitor del IDE a través de puerto serie.
Como te he explicado, la orientación se calcula por la tensión que indica a la salida del potenciómetro del rotor.
La rotación completa que pueden ser 360º o 450º con sobregiro (overlap) es proporcional a la tensión máxima - mínima, teniendo en cuenta que hay una tensión mínima al inicio de la rotación, con el rotor completamente girado a la izquierda en sentido contrario a las agujas del reloj (CCW) y la tensión máxima (que no puede ser superior a 5V) con el rotor totalmente girado en el sentido de las agujas del reloj (CW).
Ejemplo: la tensión mínima con el rotor girado totalmente CCW = 1.45V, y la tensión máxima con el rotor girado totalmente CW = 3.67V y la rotación máxima es de 360º, en este caso el rango tensión es de 2,22V, lo que cada grado de giro le corresponden 6mV.
Como el programa de K3NG sirve para muchos rotores, los parámetros para el cálculo se almacenan en la EEPROM, cada vez que se inicia el programa, las variables de cálculo toman los valores almacenados en la EEPROM, tensión mínima, tensión máxima, máximo giro (360º o 450º) y punto inicial (0º o 180º). Si estos valores no se corresponden con los reales el cálculo de orientación dará errores.
Los parámetros se pueden definir en el archivo rotator_settings.h, pero a veces no se guardan en la EEPROM y se pueden modificar mediante comandos con el monitor serie del IDE. \I180 indica que el punto de inicio es 180º, \J360 indica que la rotación máxima es 360º. \I <Enter> nos informa el punto de inicio y \J <Enter> nos informa en el monitor serie la capacidad de giro asignada.
Para introducir los datos hay que teclear el comando en la línea de entrada de comandos del monitor serie en el IDE y después pulsar <Enter> Normalmente al pulsar <Enter> se graban en la EPROM, pero no siempre, así que el comando \Q fuerza la grabación los parámetros actuales en la EEPROM. Que yo sepa, el programa no dispone de un comando que borre los datos de la EEPROM.
Para ajustar el giro del rotor hay que seguir los pasos:
Girar el rotor totalmente en sentido contrario a la agujas del reloj (izquierda, CCW)
Introducir en la línea de entrada de datos del monitor serie de la IDE el comando O (sin barra)
Pulsar la tecla <Enter> (el programa lee la tensión actual y la asocia al inicio del giro).
A continuación girar el rotor totalmente en sentido de las agujas del reloj (derecha, CW)
Introducir en la línea de entrada de datos del monitor serie de la IDE el comando F (sin barra)
Pulsar la tecla <Enter> (el programa lee la tensión actual y la asocia al final del giro).
Normalmente, haciendo esto funciona, pero si no funciona, el primer paso es averiguar cuáles son los parámetros que tiene almacenados el programa en la EEPROM. Para esto, es necesario liberar el Debugger que lee la EEPROM y saca los datos en la ventana del monitor serie del IDE. También es necesario liberar (descomentar) la línea: (en al archivo rotator_debug_log_activation.h)
#define DEBUG_EEPROM
con la activación del debugger en ON
#define DEFAULT_DEBUG_STATE 1
Para esto debes estar utilizando una placa MEGA ya que UNO y NANO carecen de memoria suficiente.
Es complicado, es cierto, pero no hay otra forma.
La cultura del esfuerzo se cultiva desde la motivación, no mediante el castigo como algunos quisieran.
http://www.enioea2hw.wordpress.com
73, Enio
Hola
Gracias Enio
Mañana probaré calibrar de nuevo
Saludos y buenas noches
EC4AGT
Wojtek
73
K3NG utiliza para calibrar los mismos comandos que Yaesu G-232
O (Offset calibration)
F (Azimuth Full scale calibration)
https://github.com/k3ng/k3ng_rotator_controller/wiki/820-Command-Reference
Además, cuando ejecutas cada comando en la ventana de salida del monitor serie del IDE te indica que tienes que llevar CCW (O) o CW (F) el rotor para calibrar. Este proceso si se ejecuta correctamente funciona siempre.
En cuanto a los cuelgues del monitor serie pueden ocurrir si la memoria del microprocesador no es suficiente o por un fallo en la conexión serie o por el mismo cable USB, pero a mí nunca me ha ocurrido utilizando la MEGA.
Si el proceso no funciona, como con cualquier programa experimental, es necesario ejecutar un depurador para conocer el valor de las variables que intervienen, sobre todo los parámetros almacenados en la EEPROM.
La cultura del esfuerzo se cultiva desde la motivación, no mediante el castigo como algunos quisieran.
http://www.enioea2hw.wordpress.com
73, Enio
Buenas tardes
Por fin he solucionado el problema de cuelgue del puerto. He visto en un ordenador nuevo que tengo con el Windows 10 que al mandar comandos O o F el puerto no falla. Así que en el ordenador viejo he cambiado el sistema a Windows 10 32 bits.( gracias a Papa Noel que me ha traído un disco ssd nuevo , jeje ) . Ahora , haciendo las pruebas funciona. Lo que quiero hacer es programar que el inicio será en 0º y máx. giro a 360 o 370º.
Al dar comando \I me aparece que la posición de Start esta en 180º y al dar comando \J me dice que el giro máx. esta en 450º sin embargo debido que tengo una limitación mecánica a unos 360 o 370º no hace falta que este valor estará programado a 450º.
Por otro lado he activado
#define DEBUG_EEPROM
#define DEFAULT_DEBUG_STATE 1
Que puedo ver con esto activado ?
Saludos y muchas gracias
EC4AGT
Wojtek
73
Buenas noches de nuevo
Ya he visto que ocurre cuando se activa estas lineas
#define DEBUG_EEPROM
#define DEFAULT_DEBUG_STATE 1
Pero el problema tengo en encontrar estas lineas :
#define AZIMUTH_ROTATION_CAPABILITY_DEFAULT 450
#define AZIMUT_STARTING_POINT_DEFAULT 180
en la carpeta rotator_settings.h no aparecen sin embargo al dar comando \I y \J dice 180º y 450º
Estas líneas son las que tengo en mi programa :
rotator_settings.h
#define AZIMUTH_STARTING_POINT_EEPROM_INITIALIZE 180 // the starting point in degrees of the azimuthal rotator - only used for initializing EEPROM the first time the code is run
#define AZIMUTH_ROTATION_CAPABILITY_EEPROM_INITIALIZE 450 // the default rotation capability of the rotator in degrees - only used for initializing EEPROM the first time the code is run
pero no aparecen por ningún sitio las otras
Lo que he encontrado son estos comandos pero no se como escribir para que se graban en la eprom
\Ix[x][x] - set az starting point
\Jx[x][x] - set az rotation capability
Escribi
\I[0] y luego \I1[8][0] al dar enter ahora me sale
Azimuth starting point is -10143
Saludos y gracias
EC4AGT
Wojtek
73
QDURE - https://qsl.ure.es
Imprime y confirma tus QSL en tan solo tres click.
Nunca fue tan fácil y cómodo
el confirmar tus contactos.
TIENDA ONLINE URE
Publicaciones, mapas, polos, camisetas, gorras, tazas, forros polares y mucho más...
WEBCLUSTER EA4URE
Conoce el nuevo WebCluster de URE, ahora con nuevos filtros e información y compatible con GDURE