Advertisement
MX_Master

Step Motor Calculator, v1.1

Oct 28th, 2015
456
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
HTML 5 11.18 KB | None | 0 0
  1. <!DOCTYPE HTML>
  2. <html>
  3.     <head>
  4.         <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5.         <title>Step Motor Calculator</title>
  6.         <meta name="Description" content="Step Motor Calculator" />
  7.         <meta name="Keywords" content="Step, Motor, Calculator" />
  8.     </head>
  9.  
  10.     <body>
  11.         <h3>Расчёт максимальной рабочей скорости шагового мотора</h3>
  12.  
  13.         <table border="0" onkeypress="update()" onclick="update()" oninput="update()" >
  14.             <tr>
  15.                 <td>1. Напряжение питания драйвера</td>
  16.                 <td>
  17.                     <input id="input_voltage" type="text" size="5" value="24" /> В
  18.                 </td>
  19.             </tr>
  20.             <tr>
  21.                 <td>2. Индуктивность обмотки (половины обмотки)</td>
  22.                 <td>
  23.                     <input id="input_inductance" type="text" size="5" value="3.5" /> мГн
  24.                 </td>
  25.             </tr>
  26.             <tr>
  27.                 <td>3. Сопротивление обмотки (половины обмотки)</td>
  28.                 <td>
  29.                     <input id="input_resistance" type="text" size="5" value="0.5" /> Ом
  30.                 </td>
  31.             </tr>
  32.             <tr>
  33.                 <td>4. Рабочий ток обмотки RMS (половины обмотки)</td>
  34.                 <td>
  35.                     <input id="input_current" type="text" size="5" value="3" /> А
  36.                 </td>
  37.             </tr>
  38.             <tr>
  39.                 <td>5. Полных шагов на 1 оборот мотора</td>
  40.                 <td>
  41.                     <input id="input_steps" type="text" size="5" value="200" /> шагов
  42.                 </td>
  43.             </tr>
  44.             <tr>
  45.                 <td colspan=2>
  46.                     6. Подключение обмоток<br />
  47.                    
  48.                     <input id="wiring1" name="input_wiring" type="radio" checked />
  49.                     <label for="wiring1">4-х выводной мотор.</label><br />
  50.  
  51.                     <input id="wiring2" name="input_wiring" type="radio" />
  52.                     <label for="wiring2">6-ти выводной мотор. Включение одного плеча каждой обмотки.</label><br />
  53.  
  54.                     <input id="wiring3" name="input_wiring" type="radio" />
  55.                     <label for="wiring3">6-ти выводной мотор. Последовательное включение.</label><br />
  56.  
  57.                     <input id="wiring4" name="input_wiring" type="radio" />
  58.                     <label for="wiring4">8-ми выводной мотор. Включение одного плеча каждой обмотки.</label><br />
  59.  
  60.                     <input id="wiring5" name="input_wiring" type="radio" />
  61.                     <label for="wiring5">8-ми выводной мотор. Последовательное включение.</label><br />
  62.  
  63.                     <input id="wiring6" name="input_wiring" type="radio" />
  64.                     <label for="wiring6">8-ми выводной мотор. Параллельное включение.</label><br />
  65.                 </td>
  66.             </tr>
  67.             <tr>
  68.                 <td colspan="2">&nbsp;</td>
  69.             </tr>
  70.             <tr>
  71.                 <td>Итоговая (расчетная) индуктивность:</td>
  72.                 <td>
  73.                     <strong>
  74.                         <span id="output_inductance">0</span> мГн
  75.                     </strong>
  76.                 </td>
  77.             </tr>
  78.             <tr>
  79.                 <td>Итоговое (расчетное) сопротивление:</td>
  80.                 <td>
  81.                     <strong>
  82.                         <span id="output_resistance">0</span> Ом
  83.                     </strong>
  84.                 </td>
  85.             </tr>
  86.             <tr>
  87.                 <td>Ток, задаваемый на драйвере (расчётный):</td>
  88.                 <td>
  89.                     <strong>
  90.                         RMS <span id="output_current">0.00</span> /
  91.                         PEAK <span id="output_peak_current">0.00</span> А
  92.                     </strong>
  93.                 </td>
  94.             </tr>
  95.             <tr>
  96.                 <td colspan="2">&nbsp;</td>
  97.             </tr>
  98.             <tr>
  99.                 <td>
  100.                     <strong>Максимальная рабочая скорость:</strong>
  101.                 </td>
  102.                 <td>
  103.                     <strong>
  104.                         <span id="output_speed">0</span> об/мин
  105.                     </strong>
  106.                 </td>
  107.             </tr>
  108.             <tr>
  109.                 <td colspan="2" style="font-size:70%">
  110.                     Скорость, при которой драйвер способен поддерживать требуемый ток в обмотках мотора
  111.                 </td>
  112.             </tr>
  113.             <tr>
  114.                 <td colspan="2">&nbsp;</td>
  115.             </tr>
  116.             <tr>
  117.                 <td>7. Линейное перемещение за 1 оборот мотора</td>
  118.                 <td>
  119.                     <input id="input_revolution_distance" type="text" size="5" value="5" /> мм
  120.                 </td>
  121.             </tr>
  122.             <tr>
  123.                 <td>
  124.                     <strong>Скорость линейного перемещения:</strong>
  125.                 </td>
  126.                 <td>
  127.                     <strong>
  128.                         <span id="output_feedrate">0</span> мм/мин
  129.                     </strong>
  130.                 </td>
  131.             </tr>
  132.         </table>
  133.  
  134.         <!-- ЛОГИКА -->
  135.         <script type="text/javascript">
  136.             // HTML элементы для выводных данных
  137.             var
  138.                 input_voltage               = document.getElementById("input_voltage"),
  139.                 input_inductance            = document.getElementById("input_inductance"),
  140.                 input_resistance            = document.getElementById("input_resistance"),
  141.                 input_current               = document.getElementById("input_current"),
  142.                 input_steps                 = document.getElementById("input_steps"),
  143.                 input_wiring                = document.getElementsByName("input_wiring")[0],
  144.                 input_revolution_distance   = document.getElementById("input_revolution_distance"),
  145.  
  146.                 output_inductance           = document.getElementById("output_inductance"),
  147.                 output_resistance           = document.getElementById("output_resistance"),
  148.                 output_current              = document.getElementById("output_current"),
  149.                 output_peak_current         = document.getElementById("output_peak_current"),
  150.                 output_speed                = document.getElementById("output_speed"),
  151.                 output_feedrate             = document.getElementById("output_feedrate");
  152.            
  153.             // безопасный перевод в число
  154.             function n ( value )
  155.             {
  156.                 var out = String(value);                    // в строку
  157.                 out = out.replace( /[^0-9.,]+/igm, "" );    // оставить только 0-9., символы
  158.                 out = out.replace( /[,.]+/igm, "." );       // заменить , на .
  159.                 out = Number(out);                          // в число
  160.                 return isNaN(out) ? 1 : out;                // вернём 1, если не число ИЛИ вернём число
  161.             }
  162.            
  163.             // обновление выходных данных
  164.             function update()
  165.             {
  166.                 // для вывода
  167.                 var
  168.                     out_inductance      = n(input_inductance.value),
  169.                     out_resistance      = n(input_resistance.value),
  170.                     out_current         = n(input_current.value),
  171.                     out_peak_current    = 0,
  172.                     out_speed           = 0,
  173.                     out_feedrate        = 0,
  174.                     out_voltage         = n(input_voltage.value),
  175.                     out_steps           = n(input_steps.value);
  176.                
  177.                 // для расчётов
  178.                 var
  179.                     L = out_inductance / 1000,
  180.                     R = out_resistance,
  181.                     I = out_current,
  182.                     U = out_voltage;
  183.  
  184.                 // расчёт скорости
  185.                 out_speed = Math.min(
  186.                     60 * U / (L*I * Math.PI/2 * out_steps),
  187.                     60 * (U - I*R) / (L*I * out_steps)
  188.                 );
  189.                
  190.                 // 6-ти выводной мотор. Последовательное включение
  191.                 // 8-ми выводной мотор. Последовательное включение
  192.                 if ( wiring3.checked || wiring5.checked )
  193.                 {
  194.                     // перерасчёт скорости с учётом L*4 и R*2
  195.                     out_speed = Math.min(
  196.                         60 * U / ((L*4)*I * Math.PI/2 * out_steps),
  197.                         60 * (U - I*(R*2)) / ((L*4)*I * out_steps)
  198.                     );
  199.  
  200.                     out_inductance  = out_inductance * 4;
  201.                     out_resistance  = out_resistance * 2;
  202.                     out_current     = out_current / Math.sqrt(2);
  203.                 }
  204.  
  205.                 // 8-ми выводной мотор. Параллельное включение
  206.                 if ( wiring6.checked )
  207.                 {
  208.                     // перерасчёт скорости с учётом R/2
  209.                     out_speed = Math.min(
  210.                         60 * U / (L*I * Math.PI/2 * out_steps),
  211.                         60 * (U - I*(R/2)) / (L*I * out_steps)
  212.                     );
  213.  
  214.                     out_resistance  = out_resistance / 2;
  215.                     out_current     = out_current * Math.sqrt(2);
  216.                 }
  217.  
  218.                 out_peak_current    = out_current * Math.sqrt(2);
  219.                 out_speed           = out_speed < 0 ? 0 : out_speed;
  220.                out_feedrate        = out_speed * n(input_revolution_distance.value);
  221.                
  222.                // обновляем выходные данные
  223.                output_inductance.innerHTML     = String( out_inductance );
  224.                output_resistance.innerHTML     = String( out_resistance );
  225.                output_current.innerHTML        = String( out_current.toFixed(2) );
  226.                output_peak_current.innerHTML   = String( out_peak_current.toFixed(2) );
  227.                output_speed.innerHTML          = String( out_speed.toFixed(2) );
  228.                output_feedrate.innerHTML       = String( out_feedrate.toFixed(2) );
  229.            }
  230.            
  231.            update(); // первоначальный расчет выводных данных
  232.        </script>
  233.     </body>
  234. </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement