Berechnung eine Winkels in Teilbereich eines Winkels (Servotechnik)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
kiaralle
User
Beiträge: 217
Registriert: Donnerstag 19. August 2021, 19:11

Hallo,
ich bin aktuell an der Berechnung eines Winkels angelangt.

Gegeben sind folgende Dinge:

Polpaare = 4
Mechanischer Winkel 360° mit einer inkrementellen Auflösung von 2048.
Der aktuelle mechanische Winkel, zum Beispiel 88°
Der mechnanische Winkel wird durch die Polpaare geteilt. Wir erhalten 90,180,270,360

Die bereiche innerhal der 4 Winkel, ist der elektrische Winkel, entsprechen dann wieder 360°. Hört sich jetzt für Fachfremde komisch an, ist aber so. :D

Der aktuell mech. Winkel von 88° liegt ja im ersten Teilbereich 0-90° und man kann jetzt den elektrischen Winkel umrechen.
Beim mech. Winkel von 185° liegt der elekt. Winkel im dritten mech. Winkelbereich von 180-270°

Gibt es eine Funktion mit der ich das einfach berechnen kann?

Hatte jetzt an die Möglichkeit eines Anfängers gedacht, dies mit while ... zu lösen.

in etwa so, noch nicht fertig geprüft:

Code: Alles auswählen

import math

multiturn= 32768
polpaare=4
multiturn_position = 32768*0.125 #

multiturnteilbereich = multiturn/polpaare
multiturnteilbereich_modf = math.modf(multiturn_position / multiturnteilbereich)

print ("multiturnteilbereich",multiturnteilbereich_modf)
d = round(multiturnteilbereich_modf[1]/polpaare,0)
print("d",d)
i=0
test=multiturn_position
rest=360/multiturnteilbereich*multiturnteilbereich_modf[0]

while i < multiturnteilbereich_modf[1]:
    i=i+1
    test=test-multiturnteilbereich

    print(rest)

print("ele. Winkel: ",(360/multiturnteilbereich*test)+rest) 
    




Bild
Sirius3
User
Beiträge: 18427
Registriert: Sonntag 21. Oktober 2012, 17:20

Deine Erklärung hat mit dem Code wenig zu tun. Warum taucht im Code 32768 und 1/8 auf?
Was Du suchst, ist einfach nur divmod.

Code: Alles auswählen

>>> divmod(88 * 4, 360)
(0, 352)
>>> divmod(185 * 4, 360)
(2, 20)
Damit erhälst Du den Winkelbereich und den elektrischen Winkel.
Antworten