AZ antennenrotor-strategie wenn ein sat vorbeifliegt

OP #7066097
Lesenswert?

Mein AZ rotor dreht von der stateliten position 179 grad bis zur 
position 181 grad eine ganze 358 grad runde in die andere richtung. Weil 
181 grad zu -179 grad umgerechnet wird. Weil eben atan2 so funktioniert. 
Natürlich macht er es meist genau dann wenn der sat daten sendet. Diese 
verliert man dann.

Ich kann die ansteuerung so machen dass anstatt -180 bis +180 einfach 
-270 bis +270 verwendet wird. Dann brauch ich aber eine vernünftige 
strategie, weil das berechnungsmodul liefert nur -180 bis +180.

Wie machen?
Gast #7066191
Lesenswert?

Nur aus Interesse und zum Verständnis: Welcher Sat überstreicht 360° 
über dem Horizont?

Das schafft ja selbst die Sonne nur für ein paar Tage im Jahr an wenigen 
Orten.

Leg den 360°-Punkt nach Norden.
Gast #7066203
Lesenswert?

Sebastion B. schrieb:
> Wie machen?

Ist doch nicht schwer:

 - Merke Dir die alte Rotor-Ist-Position.
 - Berechne die neue Soll-Position.
 - Berechne für die neue Position einmal +360° und -360°
 - Nun hast Du drei neue Kandidaten:
   Original, Original plus 360, Original minus 360
 - Lösche von den Kandidaten alle, die der Rotor nicht anfahren
   kann oder darf.
 - Wähle die Position aus der verbliebenen Liste mit dem
   kürzestem Weg. [ Weg = Absolutwert(Soll - Ist) ]
 - Fahr den Rotor dort hin.

Das kann man natürlich kompakter Umsetzen; aber das ist das Prinzip.
OP #7066539
Lesenswert?

1
void writeServo(float azangle) 
2
{
3
  if (azangle >  180.0) azangle -= 360.0; //make -180 to 180
4
  if (azangle < -180.0) azangle += 360.0; //make -180 to 180
5
      
6
  float azplus  = azangle + 360.0;
7
  float azminus = azangle - 360.0;
8
  
9
  float diff      = azangle - oldazangle;
10
  float diffplus  = azplus  - oldazangle;
11
  float diffminus = azminus - oldazangle;
12

13
  float smallest = abs(diff);
14
  float newaz = azangle;
15
  if (abs(azplus) < maxangle)
16
    if (abs(diffplus)  < smallest) 
17
    {
18
      smallest = diffplus;
19
      newaz = azplus;
20
    }
21
  if (abs(azminus) < maxangle)
22
    if (abs(diffminus) < smallest) 
23
    {
24
      smallest = diffminus;
25
      newaz = azminus;
26
    }
27
  
28
  Log::console(PSTR("az: %.0f, az+: %.0f, az-: %.0f, oaz %.0f, diff %.0f, smallest %.0f, newaz %.0f"), azangle, azplus, azminus, oldazangle, diff, smallest, newaz);  
29

30
  oldazangle = newaz;
31
  
32
  // 1.8deg/step, 200 steps/rev
33
  sollpos = newaz*0.5555;
34
}
Gast #7066588
Lesenswert?

HAM schrieb:
> Nur aus Interesse und zum Verständnis: Welcher Sat überstreicht 360°
> über dem Horizont?

Nee, das denkst du falsch. Bei LEO Satelliten hat man es immer, daß sie 
irgendwo am Horizont auftauchen, die Elevation immer größer wird bis sie 
einem mehr oder weniger über den Kopf fliegen, um dann am 
entgegengesetzten Azimut mit immer kleinerer Elevation weiter zu 
fliegen, bis sie wieder unter den Horizont tauchen. Im Prinzip hat man 
es immer mit einer Drehung im Azimut von 180° zu tun, die aber nicht 
gleichmäßig verläuft, sondern z.B. bei direktem Überflug mitten im 
Kulminationspunkt von Azimut zu -Azimut wechselt. So schnell dreht kein 
Antennenrotor die Antenne herum.

Es ist dabei bloß so, daß so eine Antenne auch Kabel hat zwischen der 
eigentlichen Antenne und den unbeweglichen Teilen. Und diese Kabel 
verhindern, daß man die Antenne beliebig herumdrehen kann.

Rein theoretisch wäre das zu lösen, wenn die Drehmechanik neben dem 
Azimut die Elevation größer als 90° machen könnte und obendrein noch ein 
Rollwinkel quer zur Elevation eingestellt werden könnte. Dann könnte man 
allein mit Elevation und Rollwinkel die Satellitenbahn abfahren. Aber so 
eine Mechanik hab ich noch nicht gesehen.

Ganz generell: es kommt auf die mechanische Konstruktion an, ob das 
Problem lösbar ist. Ansonsten wäre ggf. eine zweite Antenne billiger, 
die während des Drehens den Empfang übernimmt.

W.S.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren