Fahrradleistung berechnet

Steigung, Rollwiderstand und Windwiderstand sind die Krafte die der Geschwindigkkeit entgegenwirken. Wie stark das jeweils ist lässt sich mit gnuplot berechnen und visualisieren.

Ergebnisse als Graphen

Skript Download

#!/usr/bin/bash
# Berechnung der Antriebsleistung eines Fahrrades
# getrennt nach den Einzelkomponenten Steigung, Luftwiderstand, Rollreibung.
# (c) 2015, Joachim Schwender
#
BN='fahrrad_leistung'
PDF=BN.'.pdf'
set decimalsign locale;
set decimal ",";
dt = 0.001;       # Die Schrittweiter für die Berechnung [s]
m_fahrrad = 24.0;   # Masse des Fahhrades
m_fahrer = 84.0;    # Masse des Fahrers
Ages = 0.7;  # Gesamtfläche des Fahrers + Fahrrad, was sehr schwierig zu ermitteln ist,
             #  0.5 entspricht Rennrad, in Aufrechter Position eher 0.7
cw = 0.5;    # 0.5 entspricht Rennrad
cr = 0.007;  # 0.004 entspricht einem optimal laufenden Rennrad, 
             # 0,01 bei einfachen Reifen, biz zu 0.0002 bei schmalen Hochdruckreifen
v_wind = 2;
Steigung = 0.01;
SteigWinkel(Steigung) = atan(Steigung);
# ------ Konstanten ------
dichte_luft = 1.234;    # Dichte der Luft [kg/m³]
g = 9.81;               # Erdbeschleunigung
#------------------------
P_wind(v,cwx) = cwx * Ages * dichte_luft/2 * (v + v_wind)**2.0 * v;
P_roll(v,Steigung,m_fahrrad,m_fahrer) = v * g * (m_fahrrad + m_fahrer) * cr * cos(SteigWinkel(Steigung));
P_steig(v,Steigung,m_fahrrad,m_fahrer) = v * g * (m_fahrrad + m_fahrer) * sin(SteigWinkel(Steigung));
# Farbe der Kurve repräsentiert die Geschwindigkeit
set palette defined (0 'blue', 0.5 'red', 1 'yellow')
set style line 40 lc palette
set style line 51 lc rgb 'blue' dt 3 lt 1
set style line 52 lc rgb 'green'  dt 3 lt 1

set size 0.95,0.88
set origin 0.03,0.06
set terminal pdf size 29.7cm,21.0cm
set output PDF
set ylabel "Leistung in W"
set xlabel "v in m/s"
set x2label "v in km/h"
set label "Die Antriebsleistung beim Fahrrad" font ",26" textcolor rgb 'red' at 2,833
set label sprintf("Beispiel mit Fläche=%1.1f m^2, c_r=%1.4f, m_{Rad}=%1.0f kg",Ages,cr,m_fahrrad) \
      font ",12" at 2,793
set xrange [0:50/3.6]
set yrange [0:700]
set xtics 10/3.6
set mxtics 2
set mytics 10
set grid xtics ytics mxtics mytics ls 51, ls 52
set key left
set samples 26
set format x "%2.1f"
#
set multiplot layout 1,3
set origin 0.03,0.03
set size 0.3,0.85
set x2tics('0' 0, '10' 2.77, '20' 5.55 , '30' 8.33 , '40' 11.11, '50' 13.888)
#
set title "Steigung" font ",16" textcolor rgb 'red' 
plot for [i=1:5] Steigung=i*0.01 \
    P_steig(x,Steigung,m_fahrrad,m_fahrer) with lines lw 2 title sprintf("%d %%",i),\
    250 with lines title "ges. Limit"
unset label
#
set title "Luftwiderstand" font ",16" textcolor rgb 'red' 
set origin 0.33,0.03
set size 0.33,0.85
set key top center
plot for [i=0:4]  CW=0.30+i*0.1 \
    P_wind(x,CW) title sprintf("cw=%0.1f",CW) dt 4 lw 2,\
    250 with lines title "ges. Limit"
#
set title "Rollreibung" font ",16" textcolor rgb 'red' 
set origin 0.66,0.03
set size 0.3,0.85
set key center left
plot for [i=0:5] m=70+i*5 \
    P_roll(x,Steigung,m_fahrrad,m) with lines lw 2 title sprintf("%d kg Fahrer", m),\
    250 with lines title "ges. Limit"
#
load 'opensource_logo.inc'
unset multiplot
# reset everything and then restore, because the logo.inc changes most settings
reset
set decimalsign locale;
set decimal ",";
set format x "%2.1f"
set size 0.95,0.88
set origin 0.03,0.06
set xlabel "v in m/s"
set x2label "v in km/h"
# Farbe der Kurve repräsentiert die Geschwindigkeit
set palette defined (0 'blue', 0.5 'red', 1 'yellow')
set style line 40 lc palette
set style line 51 lc rgb 'blue' dt 3 lt 1
set style line 52 lc rgb 'green'  dt 3 lt 1
set key top center
set multiplot
set autoscale
set xtics 10/3.6
set ytics 50
set x2tics('0' 0, '10' 2.77, '20' 5.55 , '30' 8.33 , '40' 11.11, '50' 13.888)
set mxtics 5
set mytics 5
set grid xtics ytics mxtics mytics ls 51, ls 52
set title "Rollreibung und Luftwiderstand in der Ebene" font ",26" textcolor rgb 'red'
set xrange [0:25/3.6]
plot for [i=0:5] m=70+i*5 P_roll(x,Steigung,m_fahrrad,m) title sprintf("%d kg Fahrer", m), \
     for [i=0:4]  CW=0.30+i*0.1  P_wind(x,CW) dt 4  title sprintf("cw=%0.1f",CW)
#     for [i=1:5] Steigung=i*0.01  P_steig(x,Steigung,m_fahrrad,m_fahrer) \
#    with lines lw 2 title sprintf("Steigung %d %%",i)

load 'opensource_logo.inc'
unset multiplot