Arduino Forum

International => Español => Hardware => Topic started by: maxid on Apr 11, 2016, 10:31 pm

Title: ¿Sensor para controlador de rotor de antenas?
Post by: maxid on Apr 11, 2016, 10:31 pm
Tengo un rotor de antenas (soy radio aficionado) y este me lo regalaron sin controlador. Hice el transformador para controlar el giro, pero es una loteria saber donde apunta.

Tengo varias opciones como un pequeño voltimetro o con arduino y un display controlar la posicion luego por pc.

Pero mi pregunta es que sensor coloco. La mayoria ponen un protenciometro multivueltas, pero generalmente hay una distancia de 20mtrs desde la parte superior de torre al equipo.

¿Sirve? ¿o es mejor colocar otra cosa mas eficiente??
Title: Re: Sensor para controlador de rotor de antenas
Post by: surbyte on Apr 11, 2016, 10:46 pm
El rotor esta a 20 mts? 

Title: Re: Sensor para controlador de rotor de antenas ?
Post by: maxid on Apr 12, 2016, 03:37 am
No a 20, pero una torre de 12mts + la distancia al rack suman.
En mi anterior casa tenia 25mtrs de coaxial de antena a equipo.
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: maxid on Apr 12, 2016, 03:50 am
Pensaba un rs485 con un attiny y mandar la lectura y otro arduino abajo en el display.
Pero no se el ruido que tendré ahi adentro. Un motor a 24vca
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: surbyte on Apr 12, 2016, 04:30 am
A ver tiremos ideas entre todos:
Potenciómetro no me gusta pero si no hay otra cosa...
Encoder: puede ser una interesante opción si puedes establecer una referencia de lo contrario no tienes donde ubicar el inicio.
Brújula electrónica podría ser una buena alternativa, no?
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: maxid on Apr 12, 2016, 10:26 pm
A ver tiremos ideas entre todos:
Potenciómetro no me gusta pero si no hay otra cosa...
Encoder: puede ser una interesante opción si puedes establecer una referencia de lo contrario no tienes donde ubicar el inicio.
Brújula electrónica podría ser una buena alternativa, no?

Sabes que lo de la brujula lo vi hecho por un español  (https://qlfecv.wordpress.com/2013/03/06/sistema-rotacion-de-antena-economico/) incluso bluetooth y me parecio bueno. Incluso mas barato que en Pote multivuelta que sale hoy $500

Por otro lado tengo un engranaje que movia una leva en el segundo engranaje. 48 dientes y 16 dientes. Ahi se le puede colocar un hall. Pero requiere de tener volver a un punto conocido cada vez que lo enciendes.

Tengo algo de espacio para un pote y una placa de 7x7cm dentro de la carcasa, sino fuera
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: maxid on Apr 12, 2016, 10:36 pm
no se como se comporta la brujula con el metal cerca y los 100W de RF entre 3 y 30 Mhz o 144 a 450 Mhz
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: surbyte on Apr 13, 2016, 12:52 am
Buen tema!!! el que planteas, como se comporta en ese ambiente de alta interferencia electromagnética.
Supongo que mal.
no lo habia visto de ese modo.
Si tiens la rueda dentada tambien puedes usar un enconder aunque si entra tierra va a fallar.
Lo mismo creo que pasará con el potenciometro.
Debe haber alguna opción mas segura.
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: PeterKantTropus on Apr 13, 2016, 01:20 am
Que precisión angular necesitas?  Cualquier encoder industrial tiene un canal "Z" que determina el punto de una revolución . Con las ruedas dentadas se utiliza un diente más ancho o angosto para determinar el cero. Claro que esto te sirve si estamos hablando de grados.
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: maxid on Apr 13, 2016, 02:03 am
Como preciso no es nada loco 2 o 3 grados no cambia mucho en este tipo de antenas. Si fuera rebote lunar o meteoros o seguimiento satelital seguro que si.
En cuanto a hermeticidad el pote es ip65 el rotor tiene grasa como para lubricar los ejes. No es gran cosa. Es como un campana. Agua no entra. Pongo una foto lo mas parecido al que tengo
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: GO_zalo on Apr 13, 2016, 07:27 pm
aqui hay cosas que no entiendo:

- Un potenciometor 500$? estamos hablando de US$?? estamos locos?
- Encoder: no hay que volver a la posición inicial, existen los encoders absolutos que si son algo caros (150€)
- Señal a 20-30 metros facil: comunicación 4-20ma

Si lo haces con un potenciometro + señal 4-20ma puedes usar este convertidor (http://www.krenel.com/pdf/02a-%20Convertidor%20Posici%F3n%20-%20Potenci%F3metro%20(salida%200-10V,%204-20mA).pdf) (80€) o uno similar ya hecho o hacerlo tu


Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: maxid on Apr 13, 2016, 10:25 pm
aqui hay cosas que no entiendo:

- Un potenciometor 500$? estamos hablando de US$?? estamos locos?
- Encoder: no hay que volver a la posición inicial, existen los encoders absolutos que si son algo caros (150€)
- Señal a 20-30 metros facil: comunicación 4-20ma

Si lo haces con un potenciometro + señal 4-20ma puedes usar este convertidor (http://www.krenel.com/pdf/02a-%20Convertidor%20Posici%F3n%20-%20Potenci%F3metro%20(salida%200-10V,%204-20mA).pdf) (80€) o uno similar ya hecho o hacerlo tu



No son $ Argentinos algo de 30U$.
Pero un encoder de 150€ me parece una locura peor. jijiji

Ya me compre un magnetometro voy a probarlo como se comporta poniendolo cerca de la antena
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: surbyte on Apr 14, 2016, 01:58 pm
bueno,yo te averigüé esto.
El HMC6352 es un sensor que puede servirte, sus especificaciones  (https://www.sparkfun.com/datasheets/Components/HMC6352.pdf)dicen soportar hasta 10.000 Gauss o sea que en presencia de fuernte campos magnéticos aún trabaja correctamente. 
Creo que tenemos un punto de partida.

Rescato lo que esta relacionado solamente: 

- Sensor Can Be Used in Strong Magnetic Field Environments
Max. Exposed Field: 10000 gauss No permanent damage and set/reset function restores performance.
 
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: GO_zalo on Apr 14, 2016, 05:38 pm
una cosa es que no se estropee y otra muy diferente es que siga indicando el norte
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: surbyte on Apr 14, 2016, 07:06 pm
Sensor Can Be Used in Strong Magnetic Field Environments 
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: GO_zalo on Apr 14, 2016, 07:16 pm
puede ser usado en ambientes fuertemente magneticos, lo que no dice es que siga indicando el norte, sino que apuntara al campo magnetico fuerte, a diferencia de los que no lo soportan, este en retirar el campo magnetico fuerte vuelve a apuntar al norte, los otros se quedan magnetizados en dirección al campo fuerte y el terrestre no es lo bastante fuerte para quitar ese magnetismo remanente

es como si acercamos un iman a brújula normal de aguja, a la mierda la brújula ya la puedes tirar
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: maxid on Apr 14, 2016, 10:06 pm
bueno,yo te averigüé esto.
El HMC6352 es un sensor que puede servirte, sus especificaciones  (https://www.sparkfun.com/datasheets/Components/HMC6352.pdf)dicen soportar hasta 10.000 Gauss o sea que en presencia de fuernte campos magnéticos aún trabaja correctamente.
Creo que tenemos un punto de partida.

Rescato lo que esta relacionado solamente:

- Sensor Can Be Used in Strong Magnetic Field Environments
Max. Exposed Field: 10000 gauss No permanent damage and set/reset function restores performance.
 
por aca conseguí el HMC5883L, pero me saltó un error nuevo


cuando pongo la libreria Wire.h me da esto

Code: [Select]
Library can't use both 'src' and 'utility' folders. Double check C:\Program Files (x86)\Arduino\hardware\arduino\avr\libraries\Wire

Error compiling for board Arduino/Genuino Uno.


parece que es un bug
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: surbyte on Apr 15, 2016, 12:44 am
Sigamos con el debate... a ver como interpretas esto Go_zalo, ahora nos movemos al HMC5883L.

Hoja de datos del HMC5883L (https://www.adafruit.com/datasheets/HMC5883L_3-Axis_Digital_Compass_IC.pdf)

Sensors Can Be Used in Strong Magnetic Field Environments with a 1° to 2° Degree Compass Heading Accuracy

Parece ser que la brújula inicialmente se desvía pero si efectúas la autocalibración que ocurrre durante el power up (encendido) compensa el campo magnetíco externo presente y vuelve a indicar bien.
Digo parece porque no tengo un magnetómetro y no puedo probarlo.
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: ratpenat on Apr 15, 2016, 01:43 am
Buenas noches (aquí).

Una idea: un giroscopio de estado sólido como: ÉSTE (http://www.dx.com/es/p/gy-50-l3g4200d-3-axis-digital-gyro-sensor-module-for-arduino-148731#.VxApblSLRI0) es barato, lleva incorporada la comunicación serie y le sobran dos ejes.

Saludos
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: PeterKantTropus on Apr 15, 2016, 02:01 am
Es necesario girar la antena energizada? porque en ese caso no importa donde apunte en funcionamiento de la antena.
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: maxid on Apr 15, 2016, 07:45 pm
Bueno, ya tengo el prototipo uso el magnetometro y comunicacion 1 hilo con la llibreria PJON (https://github.com/gioblu/PJON)

@SurByte en los ejemplos que vi hacen correccion por declinacion segun la zona geografica.

@PeterKantTropus no es necesario mover mientras se transmite, en mi caso. digo en mi caso porque si fuera una comunicacion satelital debes seguir la orbita y en ese caso no andaria o no se todavia.
En fin ese será otro proyecto.
Se me ocurre tambien poner una salida para alimentarlo solo cuando va a efectuar el movimiento. Porque la parte logica si va a estar protegida de la radiación

Aca el video (https://youtu.be/UtZoIAoqQns)

Mañana voy a colcar el prototipo a unos 50 cm de la antena para ver como se comportan la comunicacion y el magnetometro. Me queda averiguar como distribuye la tension y corriente la antena que tengo ahora para ver donde es mas probable la falla.


Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: surbyte on Apr 15, 2016, 08:11 pm

Quote
@SurByte en los ejemplos que vi hacen correccion por declinacion segun la zona geografica.
Correccion por declinación es una cosa.
Y que no marque el norte por la presencia de un campo fuerte es otra.
El manual me parece que dice que no se ve afectado por campos fuertes pero si le pones un campo fuerte yo coincido con Go_zalo que va a marcar mal, y entonces lo reinicias y se autocalibra con precisión 1 o 2 grados como dice la hoja de datos.
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: maxid on Apr 21, 2016, 05:18 pm
Correccion por declinación es una cosa.
Y que no marque el norte por la presencia de un campo fuerte es otra.
El manual me parece que dice que no se ve afectado por campos fuertes pero si le pones un campo fuerte yo coincido con Go_zalo que va a marcar mal, y entonces lo reinicias y se autocalibra con precisión 1 o 2 grados como dice la hoja de datos.
Ahora que volvió el sol voy a retomar las pruebas. pero hasta el momento no logro que marque el norte bien. Y por lo que lei soporta campos fuertes.

encontre una libreria que hace una calibracion  (http://hobbylogs.me.pn/?p=17) importante.
la de Adafruit no me convence del todo
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: surbyte on Apr 21, 2016, 09:56 pm
Quote
Ahora que volvió el sol voy a retomar las pruebas. pero hasta el momento no logro que marque el norte bien. Y por lo que lei soporta campos fuertes.
No logras que marque en presencia de campo o sea con antena activa o desactivada?
Que buen aporte el enlace de la calibración.
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: maxid on Apr 22, 2016, 04:30 pm
No logras que marque en presencia de campo o sea con antena activa o desactivada?
Que buen aporte el enlace de la calibración.
si marca pero es muy erratico la lectura en general. Ese sensor tiene un "defecto" que ante cuanquier inclinacion cabia la letura magnetica y hay que compensarlo.

Si lo pongo boca abajo me marca el norte bien y mal el sur y si lo pongo normal el norte me da cerca del oeste y bien el sur. Muy loco como funciona.

Estoy pensando usar un hall por pulsos o el potenciometro que no encuentro engranaje para tomar el giro de la corona.
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: surbyte on Apr 22, 2016, 04:48 pm
Vamos por partes.
Cuando lo tienes en tu mesa de trabajo marca bien? Y cuando lo llevas al sitio de medicion, ahi falla?
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: maxid on Apr 22, 2016, 06:52 pm
Vamos por partes.
Cuando lo tienes en tu mesa de trabajo marca bien? Y cuando lo llevas al sitio de medicion, ahi falla?
aca en mi trabajo lo pongo y marca bien.
En mi casa a unos 20km como el diablo!!

este es el codigo que uso, no se si la estoy pifiando en algo

Transmisor

Code: [Select]
#include <PJON.h>
#include <Wire.h>
#include <Adafruit_Sensor.h>
#include <Adafruit_HMC5883_U.h>


// network(Arduino pin used, selected device id)
PJON network(3, 45);
Adafruit_HMC5883_Unified mag = Adafruit_HMC5883_Unified(12345);


void setup() {

  //pinMode(A0,INPUT);
  Serial.begin(115200);
  network.set_error(error_handler);

  Serial.println("Magnetometro HMC5883 Test");
  Serial.println("");
 
  /* Inicializamos el sensor */
  if(!mag.begin())
  {
    // Si hay algun problema con el HMC5883 sale el aviso de que revise las conexiones
    Serial.println("Ooops, no se ha detectado el HMC5883 ... revisa las conexiones!");
    while(1);
  }
 
  // Muesta la información básica del sensor
  displaySensorDetails();
}

void error_handler(uint8_t code, uint8_t data) {
  if(code == CONNECTION_LOST) {
    Serial.print("Connection lost with device id ");
    Serial.println(data);
  }
}

void displaySensorDetails(void)
{
  sensor_t sensor;
  mag.getSensor(&sensor);
  Serial.println("------------------------------------");
  Serial.print  ("Sensor:       "); Serial.println(sensor.name);
  Serial.print  ("Driver Ver:   "); Serial.println(sensor.version);
  Serial.print  ("ID unica:    "); Serial.println(sensor.sensor_id);
  Serial.print  ("Valor Maximo:    "); Serial.print(sensor.max_value); Serial.println(" uT");
  Serial.print  ("Valor Minimo:    "); Serial.print(sensor.min_value); Serial.println(" uT");
  Serial.print  ("Resolucion:   "); Serial.print(sensor.resolution); Serial.println(" uT"); 
  Serial.println("------------------------------------");
  Serial.println("");
  delay(500);
 
}


unsigned long time = millis();

void loop() {

  if(millis() - time > 1000)
  {
    time = millis();
    //int temperature = analogRead(A0);

// Hacemos que el sensor tome una nueva muestra
  sensors_event_t event;
  mag.getEvent(&event);
 
  /*
     Sostenga el módulo de manera que Z está señalando arriba y se pueda medir con el título X e Y
     Calcular la medida cuando el magnetómetro esté nivelado, y luego corregir los signos de eje
  */
 
  float muestra = atan2(event.magnetic.y, event.magnetic.x);
 
  /* Una vez tengamos la muestra tomada, a continuación debemos agregar el "ángulo de declinación"
    el ángulo de declinación es el "error" del campo magnético en su ubicación.
  Puedes encontrar el tuyo aquí: http://www.magnetic-declination.com/
   Si no encuentras tu ángulo de declinación, comenta las dos línias siguientes, la brújula estará 
  ligeramente desviada*/
 
  float declinacionAngulo = -0.091338935; //5 grados=0,0872665 14 min= 0,004072435
  muestra += declinacionAngulo;
 
  // corrige los valores negativos
  if(muestra < 0)
    muestra += 2*PI;
   
  // Comprueba si hay error debido a la adición de la declinación.
  if(muestra > 2*PI)
    muestra -= 2*PI;
   
  // Convierte los radianes a grados
  int muestraangulo = muestra * 180/M_PI;
    //Send a "T", break the int in two bytes
    char analogvalue=map(analogRead(A0),0,1023,0,255);
    char content[3] = {'G', muestraangulo >> 8, muestraangulo & 0xFF};
    network.send(44, content, 3);

    MostrarPosicion(muestraangulo);
    //Serial.print("Analog:");
    //Serial.println(analogvalue,DEC);
 
  }

  network.update();
}


void MostrarPosicion(int muestraangulo)
{
 if (muestraangulo > 350)
  {
      Serial.print("N      ");
      Serial.println(muestraangulo);
  }
 
  if (muestraangulo <= 15)
  {
    Serial.print("N      ");
    Serial.println(muestraangulo);
  }
  if (muestraangulo > 15 && muestraangulo <= 75)
  {
    Serial.print("NE    ");
    Serial.println(muestraangulo);
  }
 
  if (muestraangulo > 75 && muestraangulo <= 105)
  {
    Serial.print("E      ");
    Serial.println(muestraangulo);
  }
 
   if (muestraangulo > 105 && muestraangulo <= 165){
    Serial.print("SE    ");
    Serial.println(muestraangulo);
  }
 
  if(muestraangulo > 165 && muestraangulo <= 195){
    Serial.print ("S    ");
    Serial.println(muestraangulo);
   
  }
 
  if(muestraangulo > 195 && muestraangulo <= 255){
    Serial.print ("SW    ");
    Serial.println(muestraangulo);
  }
 
  if(muestraangulo > 255 && muestraangulo <= 285)
  {
    Serial.print ("W    ");
    Serial.println(muestraangulo);
  }
 
  if(muestraangulo > 285 && muestraangulo <= 350)
  {
    Serial.print ("NW    ");
    Serial.println(muestraangulo);
 
  } 

}


Receptor

Code: [Select]

#include <LiquidCrystal.h>
#include <PJON.h>

// network(Arduino pin used, selected device id)
PJON network(3, 44);
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);           // select the pins used on the LCD panel
 
void setup(){
   Serial.begin(115200);
   network.set_receiver(receiver_function);
   lcd.begin(16, 2);               // start the library
   lcd.setCursor(0,0);             // set the LCD cursor   position
   lcd.print("TIME:");  // print a simple message on the LCD
   lcd.setCursor(0,1);             // set the LCD cursor   position
   lcd.print("POSITION:");  // print a simple message on the LCD
}
 
void loop()
{
   network.receive(1000);
   lcd.setCursor(7,0);             // move cursor to second line "1" and 9 spaces over
   lcd.print(millis()/1000);       // display seconds elapsed since power-up
   lcd.setCursor(0,1);             // move to the begining of the second line
}


void MostrarPosicion(int muestraangulo)
{
  lcd.setCursor(10,1);             // set the LCD cursor   position
  if (muestraangulo > 350)
      lcd.print("N     ");
 
  if (muestraangulo <= 15 )
      lcd.print("N     ");

  if (muestraangulo > 15 && muestraangulo <= 75)
      lcd.print("NE    ");
 
  if (muestraangulo > 75 && muestraangulo <= 105)
     lcd.print("E     ");
 
  if (muestraangulo > 105 && muestraangulo <= 165)
     lcd.print("SE    ");
 
  if(muestraangulo > 165 && muestraangulo <= 195)
    lcd.print ("S     ");
 
  if(muestraangulo > 195 && muestraangulo <= 255)
    lcd.print ("SW    ");
 
  if(muestraangulo > 255 && muestraangulo <= 285)
    lcd.print ("W     ");
 
  if(muestraangulo > 285 && muestraangulo <= 350)
    lcd.print ("NW    ");
 
  lcd.setCursor(13,1);
  lcd.print(muestraangulo);

}

void MostarAnalog(byte a)
{
  lcd.setCursor(13,0);
  lcd.print("   ");
  lcd.print(a,DEC);
 
}


void receiver_function(uint8_t length, uint8_t *payload) {
 if((char)payload[0] == 'G')
 {
    int v= payload[1] << 8 | payload[2] & 0xFF;
   // byte a= payload[3];
    //MostarAnalog(a);
    MostrarPosicion( v );
    // Get back the original integer from the 2 separate bytes
    Serial.println(payload[1]);
 }

}

Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: surbyte on Apr 22, 2016, 08:28 pm
Y ese PJON que usás por donde transmite? 1 cable?
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: maxid on Apr 22, 2016, 10:37 pm
Si anda genial, hasta 30 mtrs aprox. Estoy colaborando con ellos.
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: maxid on Jun 08, 2016, 05:51 pm
Visto que no me convence el modo en que funciona el magnetometro, voy por el camino de la lectura de pulsos. Tambien porque la coloacion de un potenciometro es asi imposible por el poco espacio interno y el acople a la corona es muy dificil.

Tengo un engranaje que lo puedo ubicar en la segundo engranaje que me da 4 pulsos por vuelta del primer engranaje, o mas abajo que da menos pulsos.

Tengo un efecto hall para probar.

Proximamente etré poniendo avances
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: surbyte on Jun 08, 2016, 07:42 pm
Y cual será tu referencia?
Title: Re: ¿Sensor para controlador de rotor de antenas?
Post by: maxid on Jun 15, 2016, 06:10 pm
Y cual será tu referencia?
Como referencia, al iniciar debo ir hasta un extremo FK, Para calibrar ir de extremo a extremo contando todos los pulsos para tener la escala pulsos por grados