Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <!DOCTYPE HTML>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
- <title>Step Motor Calculator</title>
- <meta name="Description" content="Step Motor Calculator" />
- <meta name="Keywords" content="Step, Motor, Calculator" />
- </head>
- <body>
- <h3>Расчёт максимальной рабочей скорости шагового мотора</h3>
- <table border="0" onkeypress="update()" onclick="update()" oninput="update()" >
- <tr>
- <td>1. Напряжение питания драйвера</td>
- <td>
- <input id="input_voltage" type="text" size="5" value="24" /> В
- </td>
- </tr>
- <tr>
- <td>2. Индуктивность обмотки (половины обмотки)</td>
- <td>
- <input id="input_inductance" type="text" size="5" value="3.5" /> мГн
- </td>
- </tr>
- <tr>
- <td>3. Сопротивление обмотки (половины обмотки)</td>
- <td>
- <input id="input_resistance" type="text" size="5" value="0.5" /> Ом
- </td>
- </tr>
- <tr>
- <td>4. Рабочий ток обмотки RMS (половины обмотки)</td>
- <td>
- <input id="input_current" type="text" size="5" value="3" /> А
- </td>
- </tr>
- <tr>
- <td>5. Полных шагов на 1 оборот мотора</td>
- <td>
- <input id="input_steps" type="text" size="5" value="200" /> шагов
- </td>
- </tr>
- <tr>
- <td colspan=2>
- 6. Подключение обмоток<br />
- <input id="wiring1" name="input_wiring" type="radio" checked />
- <label for="wiring1">4-х выводной мотор.</label><br />
- <input id="wiring2" name="input_wiring" type="radio" />
- <label for="wiring2">6-ти выводной мотор. Включение одного плеча каждой обмотки.</label><br />
- <input id="wiring3" name="input_wiring" type="radio" />
- <label for="wiring3">6-ти выводной мотор. Последовательное включение.</label><br />
- <input id="wiring4" name="input_wiring" type="radio" />
- <label for="wiring4">8-ми выводной мотор. Включение одного плеча каждой обмотки.</label><br />
- <input id="wiring5" name="input_wiring" type="radio" />
- <label for="wiring5">8-ми выводной мотор. Последовательное включение.</label><br />
- <input id="wiring6" name="input_wiring" type="radio" />
- <label for="wiring6">8-ми выводной мотор. Параллельное включение.</label><br />
- </td>
- </tr>
- <tr>
- <td colspan="2"> </td>
- </tr>
- <tr>
- <td>Итоговая (расчетная) индуктивность:</td>
- <td>
- <strong>
- <span id="output_inductance">0</span> мГн
- </strong>
- </td>
- </tr>
- <tr>
- <td>Итоговое (расчетное) сопротивление:</td>
- <td>
- <strong>
- <span id="output_resistance">0</span> Ом
- </strong>
- </td>
- </tr>
- <tr>
- <td>Ток, задаваемый на драйвере (расчётный):</td>
- <td>
- <strong>
- RMS <span id="output_current">0.00</span> /
- PEAK <span id="output_peak_current">0.00</span> А
- </strong>
- </td>
- </tr>
- <tr>
- <td colspan="2"> </td>
- </tr>
- <tr>
- <td>
- <strong>Максимальная рабочая скорость:</strong>
- </td>
- <td>
- <strong>
- <span id="output_speed">0</span> об/мин
- </strong>
- </td>
- </tr>
- <tr>
- <td colspan="2" style="font-size:70%">
- Скорость, при которой драйвер способен поддерживать требуемый ток в обмотках мотора
- </td>
- </tr>
- <tr>
- <td colspan="2"> </td>
- </tr>
- <tr>
- <td>7. Линейное перемещение за 1 оборот мотора</td>
- <td>
- <input id="input_revolution_distance" type="text" size="5" value="5" /> мм
- </td>
- </tr>
- <tr>
- <td>
- <strong>Скорость линейного перемещения:</strong>
- </td>
- <td>
- <strong>
- <span id="output_feedrate">0</span> мм/мин
- </strong>
- </td>
- </tr>
- </table>
- <!-- ЛОГИКА -->
- <script type="text/javascript">
- // HTML элементы для выводных данных
- var
- input_voltage = document.getElementById("input_voltage"),
- input_inductance = document.getElementById("input_inductance"),
- input_resistance = document.getElementById("input_resistance"),
- input_current = document.getElementById("input_current"),
- input_steps = document.getElementById("input_steps"),
- input_wiring = document.getElementsByName("input_wiring")[0],
- input_revolution_distance = document.getElementById("input_revolution_distance"),
- output_inductance = document.getElementById("output_inductance"),
- output_resistance = document.getElementById("output_resistance"),
- output_current = document.getElementById("output_current"),
- output_peak_current = document.getElementById("output_peak_current"),
- output_speed = document.getElementById("output_speed"),
- output_feedrate = document.getElementById("output_feedrate");
- // безопасный перевод в число
- function n ( value )
- {
- var out = String(value); // в строку
- out = out.replace( /[^0-9.,]+/igm, "" ); // оставить только 0-9., символы
- out = out.replace( /[,.]+/igm, "." ); // заменить , на .
- out = Number(out); // в число
- return isNaN(out) ? 1 : out; // вернём 1, если не число ИЛИ вернём число
- }
- // обновление выходных данных
- function update()
- {
- // для вывода
- var
- out_inductance = n(input_inductance.value),
- out_resistance = n(input_resistance.value),
- out_current = n(input_current.value),
- out_peak_current = 0,
- out_speed = 0,
- out_feedrate = 0,
- out_voltage = n(input_voltage.value),
- out_steps = n(input_steps.value);
- // для расчётов
- var
- L = out_inductance / 1000,
- R = out_resistance,
- I = out_current,
- U = out_voltage;
- // расчёт скорости
- out_speed = Math.min(
- 60 * U / (L*I * Math.PI/2 * out_steps),
- 60 * (U - I*R) / (L*I * out_steps)
- );
- // 6-ти выводной мотор. Последовательное включение
- // 8-ми выводной мотор. Последовательное включение
- if ( wiring3.checked || wiring5.checked )
- {
- // перерасчёт скорости с учётом L*4 и R*2
- out_speed = Math.min(
- 60 * U / ((L*4)*I * Math.PI/2 * out_steps),
- 60 * (U - I*(R*2)) / ((L*4)*I * out_steps)
- );
- out_inductance = out_inductance * 4;
- out_resistance = out_resistance * 2;
- out_current = out_current / Math.sqrt(2);
- }
- // 8-ми выводной мотор. Параллельное включение
- if ( wiring6.checked )
- {
- // перерасчёт скорости с учётом R/2
- out_speed = Math.min(
- 60 * U / (L*I * Math.PI/2 * out_steps),
- 60 * (U - I*(R/2)) / (L*I * out_steps)
- );
- out_resistance = out_resistance / 2;
- out_current = out_current * Math.sqrt(2);
- }
- out_peak_current = out_current * Math.sqrt(2);
- out_speed = out_speed < 0 ? 0 : out_speed;
- out_feedrate = out_speed * n(input_revolution_distance.value);
- // обновляем выходные данные
- output_inductance.innerHTML = String( out_inductance );
- output_resistance.innerHTML = String( out_resistance );
- output_current.innerHTML = String( out_current.toFixed(2) );
- output_peak_current.innerHTML = String( out_peak_current.toFixed(2) );
- output_speed.innerHTML = String( out_speed.toFixed(2) );
- output_feedrate.innerHTML = String( out_feedrate.toFixed(2) );
- }
- update(); // первоначальный расчет выводных данных
- </script>
- </body>
- </html>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement