|
Meritev 18.01.2008 konstante prestava korak/sekOS 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=cpp #define AZIMUT_KORAK 0.05683464 #define VISINA_KORAK 0.07325568 odstopanje od linearnostiodstopanje 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, pozicioniranjeNastavitve konstant =cpp /* 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=cpp 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 |
© Copyright 2004-2022 B.Dintinjana |
Univerza v Ljubljani, F M F
Pot na Golovec 25 1000 Ljubljana, Slovenija |