Оглавление:
- Шаг 1. Справочная информация
- Шаг 2: входные данные
- Шаг 3: Результат
- Шаг 4: понимание вашего результата
- Шаг 5: больше проектов
- Шаг 6: Исходный код
Видео: Как достичь любого сопротивления / емкости, используя уже имеющиеся у вас компоненты !: 6 шагов
2024 Автор: John Day | [email protected]. Последнее изменение: 2024-01-30 11:47
Это не просто еще один калькулятор последовательного / параллельного эквивалентного сопротивления! Эта программа вычисляет, как комбинировать резисторы / конденсаторы, которые вам нужны в настоящее время, чтобы достичь требуемого значения сопротивления / емкости, которое вам нужно.
Вам когда-нибудь требовался определенный резистор или конденсатор, которого у вас нет или которого не существует? Не бойся! Вероятно, вы можете получить это конкретное значение сопротивления или емкости, используя компоненты, которые у вас уже есть. Вместо решения огромной многомерной задачи оптимизации с миллионами различных комбинаций используйте эту программу!
Просто выберите резистор или конденсатор, введите целевое значение, введите максимальное количество компонентов, которые вы хотите использовать, введите список значений компонентов, которые у вас есть, и нажмите рассчитать! Программа подскажет, какие компоненты использовать и как их соединить для достижения целевого значения.
Чтобы опробовать калькулятор, посетите это веб-приложение.
Чтобы просмотреть исходный код, посетите этот репозиторий Github.
Пожалуйста, дайте мне знать, если у вас есть предложения по дальнейшему повышению удобства использования этого инструмента дизайна!
Шаг 1. Справочная информация
Это веб-приложение было разработано по необходимости. Я создаю много различных схем, для которых требуется особый резистор или конденсатор. Часто у меня нет резистора или конденсатора с таким номиналом. Иногда они даже не делают компонент с такой уникальной ценностью! Вместо того, чтобы отказываться или соглашаться на что-то менее чем идеальное, я решил написать программу, которая просматривала бы все возможные комбинации резисторов (все возможные значения, независимо от того, включены ли они последовательно или параллельно) и возвращала лучшую комбинацию.
При разработке схемы для моего органа в рамках моего обучающего проекта «Битва оркестров» мне пришлось вручную рассчитать наилучшую комбинацию конденсаторов для достижения определенной частоты. Этот процесс был невероятно утомительным, и в конце концов я просто сдался и выбрал комбинации конденсаторов, которые давали любую слышимую частоту. Теперь с помощью этого веб-приложения я могу настроить свой орган на определенную частоту и настроить его на ноты на клавиатуре! Приведенное ниже уравнение используется для расчета конкретной частоты и обсуждается в другом проекте Instructables.
f = 1 / (0,693 × C × (R1 + 2 × R2))
Используя это уравнение, где R1 = 100 кОм и R2 = 10 кОм, я вычислил, что конденсатор 27,33 нФ будет воспроизводить ноту A4 (частота 440 Гц). Используя свою программу, я смог вычислить эквивалентное значение емкости в пределах 0,001 нФ (намного меньше, чем допуск для стандартного конденсатора), которое я могу создать, используя конденсаторы, которые у меня уже были. Полученный результат и конфигурация описаны ниже. Теперь я могу более эффективно и действенно настраивать свой орган на точные частоты стандартных нот. Хотел бы я сделать это с самого начала. Моя демо-песня для органа, наверное, звучала бы намного лучше.
Ближайшее значение: 27,329 нФ Разница: 0,001 нФКонфигурация конденсатора: C0 = 0,068 нФ || C1 = 30 нФ + C2 = 300 нФ
Уравнения эквивалентности конденсатора резистора
Для справки ниже приведены уравнения эквивалентности для объединения резисторов и конденсаторов в цепи.
- Последовательные резисторы (R1 + R2): Req = R1 + R2
- Резисторы, включенные параллельно (R1 || R2): Req = 1 / (1 / R1 + 1 / R2)
- Конденсаторы последовательно (C1 + C2): Ceq = 1 / (1 / C1 + 1 / C2)
- Конденсаторы, включенные параллельно (C1 || C2): Ceq = C1 + C2
Шаг 2: входные данные
Вам нужно будет предоставить 4 входа:
- Независимо от того, рассчитываете ли вы значение для резистора или конденсатора.
- Целевое значение сопротивления или емкости и единицы измерения.
- Максимальное количество компонентов, которые вы хотели бы использовать для достижения целевого значения (т.е. я не хотел бы использовать более 3 резисторов для достижения моего целевого значения сопротивления).
- Список номиналов резисторов / конденсаторов, которые у вас есть. Эти значения должны быть в тех же единицах, что и ваше целевое значение (т.е. если ваше целевое значение было 110 нФ, все ваши значения должны быть указаны в нФ).
Шаг 3: Результат
Вы получите 3 вывода для своего результата:
- Ближайшее значение - ближайшее значение сопротивления / емкости, которое вы смогли достичь с вашими параметрами.
- Разница - насколько далеко ваше ближайшее значение было от целевого значения.
- Конфигурация резистора / конденсатора - список номиналов используемых резисторов / конденсаторов и их конфигурация.
Шаг 4: понимание вашего результата
В выходных данных конфигурации используются стандартные обозначения. «+» означает, что компоненты расположены последовательно, а «||» означает, что компоненты работают параллельно. Операторы имеют равный приоритет и ассоциативны слева направо, что означает, что вы группируете термины вместе, начиная слева и двигаясь вправо.
Например, посмотрите на следующий результат:
Конфигурация резистора: R0 = 15 Ом + R1 = 470 Ом || R2 = 3300 Ом + R3 = 15000 Ом
Если вы будете следовать приведенным выше рекомендациям, вы увидите, что это эквивалентно следующему уравнению и изображению выше.
((R0 + R1) || R2) + R3
Шаг 5: больше проектов
Чтобы увидеть больше проектов, посетите мои страницы:
- https://dargen.io/
- https://github.com/mjdargen
- https://www.instructables.com/member/mjdargen/
Шаг 6: Исходный код
Чтобы просмотреть исходный код, посетите этот репозиторий Github или просмотрите приведенный ниже код JavaScript.
/* --------------------------------------------------------------- */
/ * скрипт калькулятора r / c * / / * --------------------------------------- ------------------------- * / var closest_val; // ближайшее на данный момент значение var closest_diff = 1000000.00; // различие val и target var closest = ; // массив, детализирующий значения компонентов var ser_par_config = ; // подробный массив последовательный / параллельный var outputStr = ""; function CalculatorClick () {// очищаем глобальные значения для каждого нового клика closest_val = 0; closest_diff = 1000000.00; ближайший = ; ser_par_config = ; var resultDisplay = document.getElementById ("resultRow"); var exampleDisplay = document.getElementById ("exampleRow"); var calcOutput = document.getElementById ("calcOutput"); var targetTextObj = document.getElementById ('targetText'); var numCompTextObj = document.getElementById ('numCompText'); var compValsTextObj = document.getElementById ('compValsText'); var target = parseFloat (targetTextObj.value); var numComp = parseInt (numCompTextObj.value); var compValsStr = compValsTextObj.value; var compVals = ; compVals [0] = ""; var i = 0; var errFlag = 0; // ошибка при синтаксическом анализе целевого значения if (isNaN (target)) {outputStr = "Error check 'Target Value' input!"} // ошибка при синтаксическом анализе количества компонентов else if (isNaN (numComp)) {outputStr = "Error check 'Number of Components' input! "} // иначе, если нет ошибки в target или numComp else if (! IsNaN (target) &&! IsNaN (numComp)) {while (compValsStr.indexOf (", ")! = -1) {var запятая = compValsStr.indexOf (","); var newInt = parseFloat (compValsStr.substring (0, запятая)); // ошибка при разборе списка значений компонентов, установить флаг if (isNaN (newInt)) {errFlag = 1; перерыв; } compValsStr = compValsStr.substring (запятая + 1, compValsStr.length); compVals = newInt; i ++; } var newInt = parseFloat (compValsStr); // ошибка при разборе списка значений компонентов, установить флаг if (isNaN (newInt)) {errFlag = 1; } compVals = newInt; если (errFlag == 0) {если (document.getElementById ("resRadio"). проверено) {резистор (цель, numComp, compVals); } else if (document.getElementById ("capRadio"). checked) {конденсатор (цель, numComp, compVals); }} // ошибка при синтаксическом анализе списка значений компонентов else {outputStr = "Ошибка проверки 'input Список значений компонентов'!"}} calcOutput.innerHTML = outputStr; resultDisplay.style.display = "блок"; exampleDisplay.style.display = "гибкий"; // прокрутите вниз до результата window.scrollTo (0, exampleDisplay.scrollHeight); } / * Извлекает и распечатывает наилучшую конфигурацию резистора * target - целевое значение сопротивления * numComp - общее количество резисторов, разрешенных для использования для достижения целевого значения * compVals - массив значений резисторов * / функция resistor (target, numComp, compVals) { // длина значений сопротивления var num_res = compVals.length; // проходим все возможное количество компонентов для (var i = 1; i <= numComp; i ++) {var data = ; resCombination (compVals, num_res, i, 0, data, target); } var units = document.getElementById ("selected_unit"). value; // вывод результатов outputStr = "Ближайшее значение:" + closest_val.toFixed (3) + "" + units + ""; outputStr + = "Разница:" + closest_diff.toFixed (3) + "" + единицы + ""; outputStr + = "Конфигурация резистора:"; for (var i = 0; i <numComp; i ++) {if (i <closest.length) {outputStr + = "R" + i + "=" + closest + "" + units + ""; если (я + 1 <ближайшая длина) {если (ser_par_config [я + 1]) outputStr + = "||"; иначе outputStr + = "+"; }} еще перерыв; }} / * Вычисляет лучшую комбинацию резисторов для достижения целевого значения. * res - входной массив значений резисторов * num_res - размер входного массива значений резисторов * num_comb - количество разрешенных резисторов * index - индекс гребенки * comb - массив текущей комбинации * target - целевое значение * Без возвращаемого значения - передает текущую лучшую комбинацию в глобальные значения * / function resCombination (res, num_res, num_comb, index, comb, target) {// текущая комбинация завершена if (index == num_comb) {var ser_par_size = Math.pow (2, число_комб); // 2 ^ (количество компонентов) var ser_par = ; // массив bool, определяющий последовательный или параллельный ряд для каждого компонента var calc; // вычисляем эквивалентное значение сопротивления // перебираем все возможные последовательные / параллельные конфигурации текущей комбинации для (var j = 0; j
Рекомендуемые:
Как собрать игровой или простой компьютер (все компоненты): 13 шагов
Как собрать игровой или простой компьютер (все компоненты): Итак, вы хотите знать, как собрать компьютер? В этих инструкциях я научу вас, как собрать простой настольный компьютер. Вот необходимые детали: Материнская плата корпуса ПК (убедитесь, что это PGA, если AMD, и LGA, если Intel) Корпус кулера процессора Вентиляторы Pow
Как организовать электронные компоненты: 7 шагов
Как организовать электронные компоненты: в этом DIY-органайзере я собираюсь показать, как я превратил свой беспорядочный стол в чистый, организовав электронные компоненты
Как сделать измеритель сопротивления Arduino: 5 шагов (с изображениями)
Как сделать измеритель сопротивления Arduino: нам сложно читать цветовую кодировку резисторов, чтобы определить их сопротивление. Чтобы преодолеть трудности с нахождением значения сопротивления, мы собираемся построить простой измеритель сопротивления с использованием Arduino. Основной принцип этого проекта - V
Как безопасно извлечь электронные компоненты из припоя для повторного использования: 9 шагов (с изображениями)
Как безопасно удалить электронные компоненты для повторного использования: Привет! Я фанат электроники, поэтому мне нравится играть с различными электронными компонентами в своих проектах. Однако у меня не всегда могут быть компоненты, необходимые для выполнения моей работы. Иногда проще достать нужные мне компоненты из старой электроники
Сделайте потрясающий флэш-накопитель без футляра, я уже упоминал, что он водостойкий ?: 13 шагов
Сделайте потрясающий флэш-накопитель без футляра, я уже говорил, что он водостойкий ?: Узнайте, как использовать некоторые общедоступные материалы, которые, вероятно, есть у вас дома, для создания потрясающего без футляра флеш-накопителя