TCL/TK Script zur Antriebsauslegung

Hallo,

ich hab in tcl/tk ein Script zur Antriebsberechnung geschrieben. Grundlage der Propellerberechnung ist das Dokument
Standschub von Helmut Schenk. Das Script berechnet den Strom, Drehzahl und Wirkungsgrad vom Motor. Zur Berechnung
müssen die Motordaten Kv [rpm/V], Leerlaufstrom Io und Wicklungswiderstand R angegeben werden.
Grundlage der Motorberechnung ist mein Dokument DC Motor Formulas. Mit dem Script kann man schnell mal
eine Motor-Prop Konfiguration berechnen.

Zur Ausführung de Scriptes wird die Installation von tcl/tk benötigt.

Motcalc.jpg


http://www.rc-network.de/magazin/artikel_02/art_02-0037/Standschub.pdf
https://www.tcl.tk/

Viele Grüsse
Micha

Code:
# Michael Schulz 01.03.2013

proc calculate {} {
  global R U Kv Dz Hz Io im ueb etha W n Cells vp fp Prop Accu Ri
  
  set etag 0.95
  set Raccu [expr $Ri*1.0*$Cells] 
  set H [expr $Hz*2.54/100.0] 
  set D [expr $Dz*2.54/100.0] 
  set Ke [expr $Kv*1.0]
  
  if {($ueb == 1)} {set etag 1.0}
  
  if {($Accu == "LiPo_Full")} {set ucell 4.14}
  if {($Accu == "LiPo")} {set ucell 3.80}
  if {($Accu == "LiIo")} {set ucell 3.70}
  if {($Accu == "LiFePo")} {set ucell 3.3}
  #if {($Accu == "NiCd")} {set ucell 1.15}
  set U [expr $Cells * $ucell]
                     
  set Rg [expr $R*0.00124 + 0.01 + $Raccu*0.001]
  
  if {($Prop == "APC")} {set Cp [expr 0.0856*($H/$D) - 0.0091]}
  if {($Prop == "AERONOUT-CAM")} {set Cp [expr 0.0833*($H/$D) - 0.0116]}
  if {($Prop == "Speed-Prop")} {set Cp [expr 0.116*pow(($H/$D),2)- 0.066*($H/$D) + 0.0467]}
  set n100 [expr 60.0*pow((100.0/($Cp*pow($D,5)*1.225)),0.333)]
  set RPM1 [expr -1/200.0*pow($ueb,3)*pow($n100,3)*$etag]
  set RPM2 [expr pow((pow($ueb,3)*pow($n100,3)*$etag+400*pow($Ke,3)*$Rg*$U-400*pow($Ke,3)*pow($Rg,2)*$Io),0.5)/pow($Ke,2)/$Rg/pow($ueb,1.5)/pow($n100,1.5)/pow($etag,0.5)]
  set RPM3 [expr (1/pow($Ke,2)/$Rg-$RPM2)]
  set RPMa [expr $RPM3*$RPM1/$ueb]
  
  set RPMa [format %1.0f $RPMa]
  $n delete 0 100 
  $n insert 0 $RPMa
  
  set Pw [expr pow($RPMa/$n100,3)*100.0] 
  set Pw [format %1.0f $Pw]
  $W delete 0 100 
  $W insert 0 $Pw
 
  set Im [expr ( $Kv*$U-$RPMa*$ueb)/$Kv/$Rg]
  set Im [format %1.1f $Im]
  $im delete 0 100 
  $im insert 0 $Im
  
  set Uk [expr $U-(($Raccu*0.001+0.01)*$Im)]
 
  set etam [expr $Pw/$Uk/$Im*100.0] 
  set etam [format %1.0f $etam]
  $etha delete 0 100 ; # 
  $etha insert 0 $etam 
  
  set Vp [expr $H*$RPMa/60.0]
  set Vp [format %1.1f $Vp]
  $vp delete 0 100 ; # 
  $vp insert 0 $Vp 
  
  set F [expr 0.785 * pow($D,2)]
  set S1 [expr 0.55*$Pw]
  set S2 [expr pow($S1,2)]
  set S3 [expr (2 * 1.225 * $F * $S2)]
  set Fp [expr pow($S3,0.333)/9.81]
  set Fp [format %1.2f $Fp]
  $fp delete 0 100 ; # 
  $fp insert 0 $Fp 
  
  set nop [expr $Ke*$U*0.625/$ueb]
  
  if {$RPMa < $nop} {tk_messageBox -icon error -message \
                    "Motor is overloaded!
                     \nUse Motor with lower Kv, or prop wth less diameter/pitch."}
                     
  set SD [expr $H/$D]
  
  if {($SD >= 0.9) & ($Prop != "Speed-Prop")} {tk_messageBox -icon error -message "Use Prop Style -> Speed Prop !"}                   
}

proc gui {} {
      global R U Io Kv Dz Sz im ueb etha W n Cells vp fp Prop Accu Ri
      wm minsize . 300 330
      wm title . "MotCalc V6.0  M.Schulz"
           
      set a [labelframe .a -bd 3]
        
        set m1 [frame .a.m1]
        set f0 [frame $m1.f0]
          set lf0 [label $f0.lf0 -text "Prop Style: " -font {Arial 10 bold }]
          tk_optionMenu $f0.1 Prop AERONOUT-CAM APC Speed-Prop
          pack $lf0 -side left
          pack $f0.1 -side right
        pack $f0 
       pack $m1 -fill x -pady 6     
      
        set a1 [frame $a.a1] 
          set al [label $a1.l -text {Prop diameter [in] } -font {Arial 10 }] 
          set ae1 [entry $a1.e -width 6 -justify right -textvariable Dz -font {Arial 10 }]
          pack $al -side left
          pack $ae1 -side right
        pack $a1  -fill x -pady 6
    
        set a2 [frame $a.a2]
           set al [label $a2.l -text {Prop pitch [in] } -font {Arial 10 }] 
           set ae2 [entry $a2.e -width 6 -justify right -textvariable Hz -font {Arial 10 }]
           pack $al -side left
           pack $ae2 -side right
        pack $a2 -fill x -pady 6
        
        set m2 [frame .a.m2]
        set f2 [frame $m2.f2]
          set lf2 [label $f2.lf2 -text "Accu Type: " -font {Arial 10 bold }]
          tk_optionMenu $f2.1 Accu LiPo_Full LiPo LiIo LiFePo 
          pack $lf2 -side left
          pack $f2.1 -side right
        pack $f2 
       pack $m2 -fill x -pady 6  
        
        set m3 [frame .a.m3]
        set f3 [frame $m3.f3]
          set lf3 [label $f3.lf3 -text {Ri/Cell [mOhm]: } -font {Arial 10 bold}]
          tk_optionMenu $f3.1 Ri 5 7 10 15 20 30 40 50
          pack $lf3 -side left
          pack $f3.1 -side right
        pack $f3 
       pack $m3 -fill x -pady 6
        
        set m [frame .a.m]
        set f1 [frame $m.f1]
          set lf1 [label $f1.lf1 -text "Cells: " -font {Arial 10 bold}]
          tk_optionMenu $f1.1 Cells 1 2 3 4 5 6 7 8 9 10 11 12 13
          pack $lf1 -side left
          pack $f1.1 -side right
        pack $f1 
       pack $m -fill x -pady 6
        
        set a5 [frame $a.a5]
          set al [label $a5.l -text {Motor Kv [rpm/V] } -font {Arial 10 }] 
          set ae5 [entry $a5.e -width 6 -justify right -textvariable Kv -font {Arial 10 }]
          pack $al -side left
          pack $ae5 -side right
        pack $a5 -fill x -pady 6 
        
        set a6 [frame $a.a6]
          set al [label $a6.l -text {Motor R [mOhm] } -font {Arial 10 }] 
          set ae6 [entry $a6.e -width 6 -justify right -textvariable R -font {Arial 10 }]
          pack $al -side left
          pack $ae6 -side right
        pack $a6 -fill x -pady 6 
        
        set a7 [frame $a.a7]
          set al [label $a7.l -text {Io [A] } -font {Arial 10 }] 
          set ae7 [entry $a7.e -width 6 -justify right -textvariable Io -font {Arial 10 }]
          pack $al -side left
          pack $ae7 -side right
        pack $a7 -fill x -pady 6
        
        set a8 [frame $a.a8]
          set al [label $a8.l -text {Gearbox ratio [-] } -font {Arial 10 }] 
          set ae8 [entry $a8.e -width 6 -justify right -textvariable ueb -font {Arial 10 }]
          pack $al -side left
          pack $ae8 -side right
        pack $a8 -fill x -pady 6          
      pack $a -fill y -pady 10
   
      set b [labelframe .b -bd 2 -relief solid]
        set b1 [frame $b.b1] 
          set bl [label $b1.l -text {Motor current [A] } -font {Arial 10 }] 
          set im [entry $b1.e -width 6 -justify right -font {Arial 10 }]
          pack $bl -side left
          pack $im -side right
        pack $b1  -fill x -pady 6
        
        set b2 [frame $b.b2] 
          set bl [label $b2.l -text {Shaft power [W] } -font {Arial 10 }] 
          set W [entry $b2.e -width 6 -justify right -font {Arial 10 }]
          pack $bl -side left
          pack $W -side right
        pack $b2  -fill x -pady 6
        
        set b3 [frame $b.b3] 
          set bl [label $b3.l -text {Motor efficiency [%]} -font {Arial 10 }] 
          set etha [entry $b3.e -width 6 -justify right -font {Arial 10 }]
          pack $bl -side left
          pack $etha -side right
        pack $b3  -fill x -pady 6
        
        set b4 [frame $b.b4] 
          set bl [label $b4.l -text {Shaft speed [rpm]} -font {Arial 10 }] 
          set n [entry $b4.e -width 6 -justify right -font {Arial 10}]
          pack $bl -side left
          pack $n -side right
        pack $b4  -fill x -pady 6
        
        set b5 [frame $b.b5] 
          set bl [label $b5.l -text {Pitch speed [m/s]} -font {Arial 10 }] 
          set vp [entry $b5.e -width 6 -justify right -font {Arial 10}]
          pack $bl -side left
          pack $vp -side right
        pack $b5  -fill x -pady 6
        
        set b6 [frame $b.b6] 
          set bl [label $b6.l -text {Static thrust [kg]} -font {Arial 10 }] 
          set fp [entry $b6.e -width 6 -justify right -font {Arial 10 }]
          pack $bl -side left
          pack $fp -side right
        pack $b6  -fill x -pady 6
                     
      pack $b -fill y -pady 10    
    
      set bu [labelframe .bu -relief solid] 
        button $bu.1 -text "Calc" -command {calculate} -font {Arial 10 bold } -bd 3
        pack $bu.1 
      pack $bu
       
}      

########################## Main ###############################################  
set ignore [catch {eval {wm iconbitmap . -default [file join Propeller.ico]}}]
global Dz Hz R U ke ueb Io Cells Ri
set U 11.1; set Io 1.2; set R 33; set Kv 2600; set ueb 4.4; set Dz 14; set Hz 8; set Cells 3; set Ri 10
gui
 

Anhänge

  • Calc of loaded motor rpm.pdf
    60,1 KB · Aufrufe: 163
  • DC Motor Formulas_1.4.pdf
    41,6 KB · Aufrufe: 167
Ansicht hell / dunkel umschalten
Oben Unten