Astronomska skupina Fakultete za matematiko in fizilo Univerze v Ljubljani
Teleskop Vega

Meritev 18.01.2008 konstante prestava korak/sek

 OS visina
 HP frekvenca f=1000Hz, semplano na gps triger 
 mikrosteping 4000 koraki/obrat

 fit  [*:*][*:*]  a*x+b  '/home/vega/vega_mem-meritevv.log' using 1:4 via a,b 	   
  a*3600/1000 = 0.0733662
                0.07325568
                0.0732564

 meritev:
 a = 0.0203795 +/- 6.911e-08    (0.0003391%)
 a = 0.0203488 +/- 4.001e-08    (0.0001966%)
 a = 0.020349  +/- 5.255e-08  

 OS azimut
 mikrosteping 4000 koraki/obrat

 fit [100:*][*:*]  a*x+b  '/home/vega/vega_mem-meriteva.log' using 1:3 via a,b  

 a = 0.0157859  +/- 1.146e-08    (7.261e-05%)

Nove konstante

#define	AZIMUT_KORAK	0.05683464
#define VISINA_KORAK    0.07325568

odstopanje od linearnosti

odstopanje od linearnosti, visinska os: v locnih sekundah, na x osi je visina v [koraki/1000]

odstopanje od linearnosti, azimutna os: v locnih sekundah, na x osi je azimut v [koraki/1000]

Preizkus servo sistema, pozicioniranje

Nastavitve konstant

/* teleskop */
#define	AZIMUT_KORAK	0.113664   // +/- 5.317e-07 korak v locnih sekundah
#define VISINA_KORAK	0.143239   // +/- 4.77e-06
#define TAU_A		   103     // konstanta za servo popravek
#define TAU_H		   103     // isto za visino
#define BETA_A		  0.93     // konstanta za servo popravek
#define BETA_H		  0.93     // za premik 0.93,103 kriticno duseno za premik
#define MAXFREQ		64000	   // najvecja dovoljena frekvenca motorjev cca 2st/s
#define MAX_FREQ_INC	130.0      // najvecji inkrement v frekvenci v 20ms

Preizkus servo sistema AZIMUT premik azimut 200->160->270->90 stopinj

Y os v stopinjah, X je cas v sekundah.

Servo algoritem

void Tservo::get_coo()
{
        /* preberem kote */
        A_now = encoderAzimut->dCurrentValue;
        H_now = encoderVisina->dCurrentValue;
        ...
        /* izracunam razliko */
        A_delta = A_now - A_target;
        H_delta = H_now - H_target;
        A_error = A_error*BETA_A + A_delta;    // akumulirana napaka v stopinjah
        H_error = H_error*BETA_H + H_delta;
        ....
}
void Tservo::update_servo()
{
        /* servo algoritem za teleskop */
        if(is_servo==1){
                /* sledenje servo povratna vez, obicano */
                H_frek = H_pika - H_error * SEC_PER_DEG / VISINA_KORAK / TAU_H;
                A_frek = A_pika - A_error * SEC_PER_DEG / AZIMUT_KORAK / TAU_A;
        }
        else {
                /* sledenje brez servo, za kontrolo */
                H_frek = H_pika ;
                A_frek = A_pika ;
        }
        /* sestavi in odposlje komande */
        kon->SetFreq(VISINA,H_frek);
        kon->SetFreq(AZIMUT,A_frek);
        ...
        kon->mic->send_all();
}
bd
Zadnja sprememba 18.04.2008 11:26 CEST
© Copyright 2004
B.Dintinjana
Univerza v Ljubljani, F M F
Pot na Golovec 25
1000 Ljubljana, Slovenija