Liste der Anhänge anzeigen (Anzahl: 2)
Hi,
saubere Arbeit die Ihr bis jetzt geleistet habt.
Ich habe jetzt das Software - Monowheel halbwegs zum fahren gebracht.
Hier ein screenschot des Programms. Rechts kann man mehrere Parameter frei wählen. Der Masstab oben ist in Meter. Unten rechts sieht man die Stellung des Monowheel von hinten. Gesteuert wird mit der Maus. Pendel:Rechts- Links. Beschleunigung: vor-zurück. Die gefahrene Zeit in sec wird angezeigt. Das Tempo kann man an die Rechnergeschwindigkeit anpassen.
Einfach ist es für mich nicht längere Zeit monowheel zu fahren. Die Wirkung der Pendel ist relativ komplex und stark, da Impus und Schwerpunktsverlagerung entgegengesetzt wirken. Wobei der Effekt durch den Impuls kräftiger ist. Es kommt leicht zu einem Hin - und Herpendeln, was aber durch passende Pendelausschläge wieder gedämpft werden kann. Man braucht ein Feld von mindestens 10 m. Aufrichten mit Beschleunigen funktioniert.
Nicht berücksichtigt ist das Vor- und Zurückpendel des Innenteils bei Beschleunigen oder Abbremsen.
Hier der gesamte VB6- Code
Code:
Dim MotorDrehm, Antrieb, J, Mg, Hs, w, wneu, wkr, wkrneu, phi, phineu, Hp, Mp, Mrad, r, alpha, alphaneu, D, alphapunkt, alphapunktneu, n, t, g, pi, X, xneu, Y, yneu, v, Xmaus, Ymaus, Meter, Pendelausschlag, Pendelausschlagneu
Dim F1, F2, F3, F4
Private Sub Form_Load()
Mg = 4: Mrad = 1: Mp = 0.1: r = 0.3: Hs = 0.2: alpha = 0: Hp = 0.4: D = 0.1: g = 10
wkr = 0: v = 1.5: n = 1000: g = 10: MotorDrehm = 0.3: Meter = 100
pi = 3.1415926535
Label1 = "Zeitfaktor:" & vbCrLf & "Gesamtmasse (kg):" & vbCrLf & "Masse Reifen (kg):" & vbCrLf & "Radius Reifen (m):" & vbCrLf & "Höhe Schwerpunkt (m):" & vbCrLf & "Höhe Pendel (m):" & vbCrLf & "Masse Pendel (kg):" & vbCrLf & "Länge Pendel (m):" & vbCrLf & "Geschwindigkeit (m/s):" & vbCrLf & "MotorDrehmoment Nm:" & vbCrLf & "Massstab"
Text2 = n: Text3 = Mg: Text4 = Mrad: Text5 = r: Text6 = Hs: Text7 = Hp: Text8 = Mp: Text9 = D: Text10 = v: Text11 = MotorDrehm: Text13 = Meter
Command1.Caption = "Start"
Form1.Show
End Sub
Sub berechnen()
On Error Resume Next
J = Mrad * r ^ 2
Do
DoEvents
'Berechnungen nach der Formel d/dt (delta L/deltaqi) = deltaL/deltaqi
'als erstes von qi = alpha
AbLalpha = AblLalpha(w, wkr, alpha, alphapunkt)
dif = (AblLalphapunkt(w, wkr, alpha, alphapunkt + 0.0001) - AblLalphapunkt(w, wkr, alpha, alphapunkt)) * 10000
alphapunktpunkt = AbLalpha / dif
' qi = w und qi = wkr hängen voneinander ab und werden durch Iteration bestimmt
wkrpunkt = 1: wpunkt = 1
For i = 1 To 10
DoEvents
dif1 = AblLw(w + wpunkt * 0.0001, wkr + wkrpunkt * 0.0001, alpha + alphapunkt * 0.0001, alphapunkt + alphapunktpunkt * 0.0001) - AblLw(w, wkr, alpha, alphapunkt)
dif2 = AblLw(w + wpunkt * 0.0002, wkr + wkrpunkt * 0.0001, alpha + alphapunkt * 0.0001, alphapunkt + alphapunktpunkt * 0.0001) - AblLw(w, wkr, alpha, alphapunkt)
wpunkt = wpunkt - wpunkt / (dif2 - dif1) * dif1
dif3 = AblLwkr(w + wpunkt * 0.0001, wkr + wkrpunkt * 0.0001, alpha + alphapunkt * 0.0001, alphapunkt + alphapunktpunkt * 0.0001) - AblLwkr(w, wkr, alpha, alphapunkt)
dif4 = AblLwkr(w + wpunkt * 0.0001, wkr + wkrpunkt * 0.0002, alpha + alphapunkt * 0.0001, alphapunkt + alphapunktpunkt * 0.0001) - AblLwkr(w, wkr, alpha, alphapunkt)
wkrpunkt = wkrpunkt - wkrpunkt / (dif4 - dif3) * dif3
Next
'Aktualisieren der Werte nach Berechnung
wpunkt = wpunkt + Antrieb / J 'Einfluss Motor
wneu = w + wpunkt / n
wkrneu = wkr + wkrpunkt / n
'alphapunktpunkt = alphapunktpunkt + Pendelausschlagneu * Mp * Cos(alpha) / Mg / Hs ^ 2 ' Einfluss Pendel durch Schwerpunktverlagerung
alphapunktneu = alphapunkt + alphapunktpunkt / n
alphapunktneu = alphapunktneu - (Pendelausschlagneu - Pendelausschlag) * n * Mp * Hp / Mg / Hs ^ 2 ' Einfluss Pendel durch Impuls
alphaneu = alpha + alphapunktneu / n
v = wneu * r
phineu = phi + wkrneu / n
xneu = X + v * Sin(phineu) / n: yneu = Y + v * Cos(phineu) / n:
zeichnen
alphapunkt = alphapunktneu: alpha = alphaneu: w = wneu: wkr = wkrneu: phi = phineu: X = xneu: Y = yneu: Pendelausschlag = Pendelausschlagneu
If alpha > pi / 2 Or alpha < -pi / 2 Then Command1.Caption = "Start"
If Command1.Caption = "Start" Then Exit Sub
DoEvents
Loop
End Sub
Function L(w, wkr, alpha, alphapunkt) 'Lagrange-Funktion
DoEvents
L = 1 / 2 * Mg * (w * r - wkr * Hs * Sin(alpha)) ^ 2 'kinetische Energie durch Vorwärtsbewegung
L = L + 1 / 2 * J * w ^ 2 'kinetische Energie durch Raddrehung
L = L + 1 / 2 * Mg * Hs ^ 2 * alphapunkt ^ 2 'kinetische Energie durch Kippen
L = L + 1 / 2 * Mrad * r ^ 2 * (1 + Sin(alpha) * Sin(alpha)) * wkr ^ 2 'kinetische Energie durch Raddrehung um Hochachse
L = L - Mg * Hs * g * Cos(alpha) 'potentielle Energie
End Function
Function AblLw(w, wkr, alpha, alphapunkt) 'partielle Ableitung der Lagrange -Funktion nach w
AblLw = L(w + 0.0001, wkr, alpha, alphapunkt) - L(w, wkr, alpha, alphapunkt)
AblLw = AblLw * 10000
End Function
Function AblLwkr(w, wkr, alpha, alphapunkt) 'partielle Ableitung der Lagrange -Funktion nach wkr
AblLwkr = L(w, wkr + 0.0001, alpha, alphapunkt) - L(w, wkr, alpha, alphapunkt)
AblLwkr = AblLwkr * 10000
End Function
Function AblLalpha(w, wkr, alpha, alphapunkt) 'partielle Ableitung der Lagrange -Funktion nach alpha
AblLalpha = L(w, wkr, alpha + 0.0001, alphapunkt) - L(w, wkr, alpha, alphapunkt)
AblLalpha = AblLalpha * 10000
End Function
Function AblLalphapunkt(w, wkr, alpha, alphapunkt) 'partielle Ableitung der Lagrange -Funktion nach alphapunkt
AblLalphapunkt = L(w, wkr, alpha, alphapunkt + 0.0001) - L(w, wkr, alpha, alphapunkt)
AblLalphapunkt = AblLalphapunkt * 10000
End Function
Sub Formeln()
'w = v / r
'J = Mrad * r ^ 2
'vs = v - wkr * Hs * Sin(alpha)
'vs = w * r - wkr * Hs * Sin(alpha)
'E = 1 / 2 * Mg * vs ^ 2
'E = 1 / 2 * Mg * (w * r - wkr * Hs * Sin(alpha)) ^ 2
'E = E + 1 / 2 * J * w ^ 2
'E = E + 1 / 2 * Mg * Hs ^ 2 * alphapunkt ^ 2
'E = E + 1 / 2 * J * (1 + Sin(alpha) * Sin(alpha)) * wkr ^ 2
'P = Mg * Hs * g * Cos(alpha)
'L = E - P
'd/dt (delta L/deltaqi) = deltaL/deltaqi
End Sub
Private Sub Command1_Click()
If Command1.Caption = "Stop" Then
Command1.Caption = "Start"
Else
Command1.Caption = "Stop"
t = 1: w = 0: wkr = 0: alpha = 0: alphapunkt = 0: X = 0: Y = 0: phi = 0
n = Text2: Mg = Text3: Mrad = Text4: r = Text5: Hs = Text6: Hp = Text7: Mp = Text8: D = Text9: v = Text10: MotorDrehm = Text11: Meter = Text13
w = v / r
Picture1.Cls
For i = 1 To 300
Picture1.Line (Meter * i, 1)-(Meter * i, 100)
Next
berechnen
End If
End Sub
Sub zeichnen()
t = t + 1
Picture1.Line (3000 - Meter * X, 3000 - Meter * Y)-(3000 - Meter * xneu, 3000 - Meter * yneu)
Picture2.Cls
Picture2.Line (700, 700)-(700 - 500 * Sin(alpha), 700 - 500 * Cos(alpha))
Text1 = "Sec: " & t / n
Picture1.Refresh
Text12 = "Geschw.: " & Format(v, "##.###"): Text12.Refresh
End Sub
Private Sub Command1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Command1.Caption = "Start" Then Xmaus = X: Ymaus = Y
D1 = X - Xmaus: D2 = Ymaus - Y
If D2 >= 600 Then D2 = 600
If D2 <= -600 Then D2 = -600
If D1 >= 300 Then D1 = 300
If D1 <= -300 Then D1 = -300
Pendelausschlagneu = -D1 / 300 * D
Antrieb = MotorDrehm * D2 / 600
Picture3.Cls
Picture3.Circle (700 + D1, 700 - D2), 50
End Sub
Die Berechnunger erfolgen mit dem Lagrange-Formalismus. Wer sich damit auskennt, den möchte ich bitten darüber zu sehen. Fehler sind natürlich nicht auszuschließen. Insb. bin ich mir nicht sicher ob ich die Pendel halbwegs richtig eingebunden habe. Abgesehen von den Pendel bin ich mir ziemlich sicher, dass die Berechnungen realistisch sind.
Leider kann ich keine zip-Dateien erstellen. Natürlich möchte ich Euch bei Interesse das Programm zur Verfügung stellen. Wem kann ich vielleicht den PaketOrdner mailen, damit er Sie als zip - Datei ins Internet stellt ??
Vielleicht kann man doch die Eigenschaften des Monowheel gut vorhersagen und gleich bei der ersten Probefahrt richtig loslegen.
Der A370 hat das erste Mal ja schließlich auch ohne Stützräder abgehoben.
In Zeitlupe zu fahren ist relativ einfach. Da kann man schnell mit den Pendel regieren. In Echtzeit (bei mir Zeitfaktor 200) bin ich, insb. wenn ich aus dem Stand losfahren will zu langsam mit meinen Reaktionen. In Zeitlupe ist aber die Simulation genauer, da die zeitl. Auflösung ja höher ist. Das Aufschaukeln zu Pendelbewegungen ist in Zeitlupe geringer und somit wohl z.Tl. durch die Simulation bedingt und in der Realität hoffentlich geringer.
Christian
Liste der Anhänge anzeigen (Anzahl: 3)
hi,
gestern habe ich mal ein wenig gemessen und gewogen.
Wo nun so viel gerechnet wird :idea: :mrgreen: , wäre es evtl. interessant etwas genauere Daten zu haben.
Ihr könnt euch ein Paket mit bemaßten Fotos und zwei kleinen Videos bezüglich der Pendelgewichte runterladen:
http://rapidshare.com/files/83931576/Mit_Masse.rar.html
Einen Pendelversuch mit 2000mm Gesamtlänge habe ich ebenfalls durchgeführt. Die Tabelle ist im "Paket-Text" dabei.
Zu jedem Foto gibt es eine kurze Erklärung.
liebe Grüße,
Klingon77
Nachtrag: ganz vergessen... #-o
wäre es möglich, daß jemand aus der "Mathe-Fraktion" die benötigte Antriebsleistung unserer beiden Getriebemotoren errechnen kann?
Für die Drehzahl habe ich ein Tool geschrieben (Anhang).
Was die benötigte Leistung betrifft bin ich da nicht mehr so sicher.
In den "Maßbildern" habe ich versucht den Schwerpunkt des Mono-Wheels zu ermitteln (mit Pendelgewicht oben und unten).
Prinzipiell erreicht das Mono-Wheel die größte Beschleunigung/Verzögerung, wenn der innere Rahmen um 90 Grad verdreht ist (der Akku also senkrecht steht). Mehr geht nicht.
Nun bräuchten wir die entsprechende Motorleistung bei zwei geplanten Getriebemotoren.
Als System-Wirkungsgrad könnten wir von ca. 50% ausgehen. Damit sollten wir wohl auf der sicheren Seite stehen.
Nochmals Dank an die Mathe - Asse \:D/
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
Zitat:
Zitat von Christian H
Der Akku ist ja 9,3 cm hoch und die Unterfläche des Akkus 8,7 cm vom Boden entfernt. Der Schwerpunkt des Akkus ist damit 25 cm -8,7cm - 4,6 cm als etwa 12 cm von der Radachse entfernt.
Ich denke nicht das wir mit dem Schwerpunkt des Akkus rechnen sollten sondern eher mit dem Schwerpunkt des gesamten Innenlebens und auch nicht nur mit der Masse des Akkus sondern mit der Masse des Innenlebens.
Der Schwerpunkt des Innenlebens ist (nach Bild 08 ) 116 mm von der Unterseite der Akkuhalterung entfernt und die Unterseite des Akkus bei montiertem Fahrrad-Rad (siehe Bild 11) 84 mm vom Boden entfernt. Heißt der Schwerpunkt des Innenlebens ist 200 mm über Boden oder ((500/2 - 200)/2) ca. 50 mm vom Mittelpunkt des Bots entfernt.
Das Gewicht des Innelebens ist 10,5 Kg (Gesamtmasse Bot, Bild 14) minus aufgerundet 1,5 Kg des Rades (Bild 02). Macht 9 Kg für das Innenleben.
Wenn ich das zusammenrechne (9*10*0,05) komm ich auf 4,5Nm. Diese 4,5Nm kommen also an der gedachten großes-Rad-Achse zustande wenn das Innenleben voll ausgelenkt wird.
Und ab dann weiß ich nicht weiter. Jetzt müsste man (glaube ich) irgendwie die Untersetzungen (Zahnriemen und kl.-gr. Rad) und den Drehmomentveränderung bei dem übergang von Zahnriemen zu Laufrolle mit einberechnen (was ich auch mal versucht habe) aber ich komm da auf keine sinnvollen Ergebnisse.
@Christian: Ich stell mal ne Excel von mir rein mit anderen Werten und schon ein paar Rechnungen. Kannst du mit diesen Werten nochmal rechnen?
Da ich ja immer die Kosten im Blick habe(n muss) und mir keinen Motortreiber für zweistellige Amperezahlen kaufen möchte würde ich den Nennstrom des Motors mal auf 4A festlegen wollen. Das sollte bei 12V, 75% Wirkungsgrad und 2 Antriebsmotoren immernoch ca. 65-70W auf die Motorwellen bringen. Zu viel Leistung ist eh nicht (oder nur schwer) kontrollierbar.
Außerdem sollte das Untersetzungsverhältnis der Zahnriemen nicht so groß werden (max. 1:4), nicht weil es nicht funktionieren würde sondern weil dann die Zahnscheiben (wie nennt man die richtig?) sehr groß werden würden und das der Optik nicht sehr gut tut. \:D/
Danke für eure Hilfe,
Gruß
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo zusammen,
ich lese noch immer sehr interressiert mit.
Euer Projekt Klingon77, ist einfach "umwerfend".
Im Einrad-Simulator habe ich zumindest erst einmal das Ziel von oberallgeier erledigt. Na gut, eigentlich war es mein Sohn.
Gruß Christof