Programmieren – die besten Beiträge

Stimmt diese Planetenlaufbahn-Approximation?

Heyy ich versuche seit einiger Zeit mit Python eine Animation für die Laufbahn von der Erde zu erstellen, aber ich wundere mich, ob mein Ansatz stimmt. 🤔

Ich will ein Python Programm erstellen, wo ich den Exponenten des Radius im Gravitationsgesetz ändern und somit neue Umlaufbahnen zeichnen kann. Dabei stütze ich mich auf die Formel: F = G * (m1 * m2)/r^x. Ich bin mir nicht sicher, ob mein Programm korrekte Laufbahnen zeichnet, da ich nicht sonderlich gut in Physik bin. Der Grundgedanke kann ich nachvollziehen: Bei abnehmender Kraft, wird die Umlaufbahn grösser. Aber ist es normal, dass die Umlaufbahn der Erde bei einer kleinen Exponenten-Änderung von 2 auf 2.02 so viel grösser wird? Falls ja, warum ist das so?

Danke im Voraus für eure Hilfe! 😊

LG Leonie

Ein Quadrat entspricht hier einer astronomischen Einheit.

Hier ist mein Programm:

Ich verwende für meine Animation pygame.

import pygame
import sys
import math

Das sind die Konstanten, die ich verwende und die Startwerte:

G = 6.67430e-11
M_SUN = 1.989e30 
M_EARTH = 5.972e24
AU = 1.496e11
TIME_STEP = 43200
x = AU
y = 0
vx = 0
vy = 29780
exp_r = float(input"Exponent:"))

Die Erstellung des Fensters:

pygame.init()
WIDTH, HEIGHT = 800, 800
SCALE = WIDTH / (20 * AU)  # Maßstab für die Darstellung
screen = pygame.display.set_mode((WIDTH, HEIGHT))
clock = pygame.time.Clock()

Mit RK4 approximiere ich die Laufbahn der Erde. Hier sind die Funktionen:

def runge_kutta4(t, state, dt):
    k1 = deriv(t, state)
    k2 = deriv(t + 0.5 * dt, [state[i] + 0.5 * dt * k1[i] for i in range(4)])
    k3 = deriv(t + 0.5 * dt, [state[i] + 0.5 * dt * k2[i] for i in range(4)])
    k4 = deriv(t + dt, [state[i] + dt * k3[i] for i in range(4)])
    return [state[i] + (dt / 6) * (k1[i] + 2 * k2[i] + 2 * k3[i] + k4[i]) for i in range(4)]

def draw_grid():
    grid_size = AU * SCALE
    half_width = WIDTH // 2
    half_height = HEIGHT // 2
 
    for i in range(-19, 20):
        x_pos = int(half_width + i * grid_size)
        pygame.draw.line(screen, (50, 50, 50), (x_pos, 0), (x_pos, HEIGHT))
 
    for i in range(-19, 20):
        y_pos = int(half_height + i * grid_size)
        pygame.draw.line(screen, (50, 50, 50), (0, y_pos), (WIDTH, y_pos))

Hauptschleife:

running = True
t = 0
earth_path = []


while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False

    state = [x, y, vx, vy]
    x, y, vx, vy = runge_kutta4(t, state, TIME_STEP)
    t += TIME_STEP

    draw_x = int(WIDTH / 2 + x * SCALE)
    draw_y = int(HEIGHT / 2 + y * SCALE)
    earth_path.append((draw_x, draw_y))

    screen.fill((0, 0, 0))
    draw_grid()
    pygame.draw.circle(screen, (255, 255, 0), (WIDTH // 2, HEIGHT // 2), 20)
    pygame.draw.circle(screen, (0, 0, 255), (draw_x, draw_y), 5)

    for px, py in earth_path:
        pygame.draw.circle(screen, (0, 255, 0), (px, py), 1)

    pygame.display.flip()
    clock.tick(60)

pygame.quit()
sys.exit()
Bild zum Beitrag
Erde, Schule, Mathematik, programmieren, Astronomie, Code, Gravitation, Informatik, Physik, Programmiersprache, Python, Universität, Approximation, Gravitationskraft, Newtonsche Gesetze, Pygame, Gravitationsgesetz

DC Motor Treiber funktioniert nicht.?

Moin,

habe für ein Projekt, was ein Ferngesteuertes Auto involviert, einen DC Motor besorgt, den ich mit nem Arduino Uno programmieren wollte. Habe es mit zwei verschiedenen Treibern probiert, jedoch hat leider nichts geklappt. Egal welche Verbindung und welchen Code ich ausprobiert habe, der Motor hat sich nicht bewegt. Kaputt kann er jedoch allerdings nicht sein, wenn ich ihn direkt an den Akku den ich verwenden werde anschließe, dann dreht er sich. Die Treiber sowie der Arduino sind auch in Ordnung. Hat jemand Tipps bzw. wüsste was ich falsch mache?

Den Motor und die Treiber die ich ausprobiert habe findet ihr jeweils als Link unten.

Danke für die Antworten

Motor:

https://www.amazon.de/greartisan-Elektrische-Reduzierung-zentrisch-Durchmesser/dp/B072R5G5GR/ref=sr_1_7?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=U76NQGGOTCA5&dib=eyJ2IjoiMSJ9.Nn9ca6WnUxhBZaG6uyIuMOQd8us6GGk_SKYUQ8-pylYjFLAJC2GM8rj3KLGxwkXv0OlJw6u3uhfo5F9dap9_EA09tRPFJxa4ATV5DL_vU0aRtONnshrnaP5xxpXWUKzY9MBxi5VP6BRMzqyAjwrjhjW1kG_Ze_dGCwKwN2iAxW17R4BxCkQWkF8xFg6zHpGEKZab9Cc8h6Caqd09GftdwUtp1gBDFNxkwXI2SAkFLP9-OTGzU7ROQmXREvTSF3W3zvvcKLj3hxLX4GKASuivSlEJe_QmV0C945X8Ok2Wh6PW8AKjkjAmw7iImNSJiQDOVgFLPQEYX-iiS5pTRcSTMKJphLEgz03e0TH6yvaiVzCxgOcIMioS1DQf3LZraHo9RUTkuLiAMH08jBFb8bGNnRkdgmShf_uyqLm8fWMFTXGVwB6iqFXGQYOnsVTyTiWz.GVpdtfKctYa1yDZjYrJhq9xqMEdna86Fwl3B4zu0kOo&dib_tag=se&keywords=12v%2Bdc%2Bmotor%2Bartisan&qid=1741720756&sprefix=12v%2Bdc%2Bmotor%2Bartisan%2Caps%2C85&sr=8-7&th=1

Treiber 1:

https://www.amazon.de/BTS7960-Driver-Dealikee-Arduino-Current/dp/B09FLB44TV/ref=sr_1_7?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=1YXOOXUQWIIXU&dib=eyJ2IjoiMSJ9.JU0S-u8ULi6ziih5WS752XxZJDyiJAaWfxpt3o_xQUJUEXeKZCYrhWJsH0cl_h1hUbzxwXWVqCcEViRNUO9Yir6_TvKQ9onbDn1Q9EP5Xsv29_kspVgxQUgQjsSgaUB5fk9dKdhnQa7iE60zPs_lgAtS8nHm55spg8xp9DI4Tk48_Y6MvDah2CujcRZK5grUUi6ZZpOD2YSe5uRywcbrg51HtoHgZfyut2vLcC96l4PIUsDn_kVRF4VByXiqwqEKD_McY4wbvefo05imLH7mZTmP6n_-jD6rrhdIixYpZTWAuzvZz9yKe6snngMfrBg9rAHy_6ymIFF7V66WfwMiA1kVuezOBd-wLrhn2dIJ3YxO1RknmuDuqvOzoVc85DN9L8TeutJJc5h0Qymb_WUJxCsUC3DPKa_H3MMc-n4yezxJpxOZ72zfdohmypBQB3RW.orwkKJavl0-FJ0OebjFfqrOpXTkGPNTHB9EZSBRcyno&dib_tag=se&keywords=motor+treiber+ln&qid=1741720777&sprefix=motor+treiber+ln%2Caps%2C91&sr=8-7

Treiber 2:

https://www.amazon.de/HOMSFOU-Schrittmotortreiber-Motortreiberchip-Servomotortreiberplatine-Controllerplatine/dp/B0CRHZM8XV/ref=sr_1_3?__mk_de_DE=%C3%85M%C3%85%C5%BD%C3%95%C3%91&crid=1YXOOXUQWIIXU&dib=eyJ2IjoiMSJ9.JU0S-u8ULi6ziih5WS752XxZJDyiJAaWfxpt3o_xQUJUEXeKZCYrhWJsH0cl_h1hUbzxwXWVqCcEViRNUO9Yir6_TvKQ9onbDn1Q9EP5Xsv29_kspVgxQUgQjsSgaUB5fk9dKdhnQa7iE60zPs_lgAtS8nHm55spg8xp9DI4Tk48_Y6MvDah2CujcRZK5grUUi6ZZpOD2YSe5uRywcbrg51HtoHgZfyut2vLcC96l4PIUsDn_kVRF4VByXiqwqEKD_McY4wbvefo05imLH7mZTmP6n_-jD6rrhdIixYpZTWAuzvZz9yKe6snngMfrBg9rAHy_6ymIFF7V66WfwMiA1kVuezOBd-wLrhn2dIJ3YxO1RknmuDuqvOzoVc85DN9L8TeutJJc5h0Qymb_WUJxCsUC3DPKa_H3MMc-n4yezxJpxOZ72zfdohmypBQB3RW.orwkKJavl0-FJ0OebjFfqrOpXTkGPNTHB9EZSBRcyno&dib_tag=se&keywords=motor%2Btreiber%2Bln&qid=1741720777&sprefix=motor%2Btreiber%2Bln%2Caps%2C91&sr=8-3&th=1

PC, Computer, Technik, bauen, programmieren, Arduino, Code, Handwerker, Mechanik, RC, Robotik

Meistgelesene Beiträge zum Thema Programmieren