Алгоритм Брезенхема - вопрос по практической реализации.
Каким образом реализуеться алгоритм Брезенхема в микроконтроллерных регуляторах мощности (практически)? Это что, какая то формула ? В инете практически вся теория по этому вопросу сводиться к построению отрезков и окружностей, либо это уже готовые решения без всяких подробностей.
- Реклама
"" http://hardsign.hardsign.com/prog/6 ""
информация опять же сводиться к рисованию отрезка и окружности, каким образом это может быть связано с равномерным распределением импульсов внутри определённого временного интервала ?
информация опять же сводиться к рисованию отрезка и окружности, каким образом это может быть связано с равномерным распределением импульсов внутри определённого временного интервала ?
а какое отношение рисование отрезков имеет к регулировке мощности? я не знаю.
нужно определять момент перехода синусоиды через "ноль" и в этот (почти в этот, т.к. симистор/тиристор при "нуле" не включится) момент включать симистор, отключится он сам при переходе через "ноль". Пропускаем определенное число периодов, например 4, остальные например 6 симистор открываем, тогда у нас будет 60% мощности, но не для каждой нагрузки подходит такой алгоритм
http://radiokot.ru/konkurs/44/ тут все подробно описано
нужно определять момент перехода синусоиды через "ноль" и в этот (почти в этот, т.к. симистор/тиристор при "нуле" не включится) момент включать симистор, отключится он сам при переходе через "ноль". Пропускаем определенное число периодов, например 4, остальные например 6 симистор открываем, тогда у нас будет 60% мощности, но не для каждой нагрузки подходит такой алгоритм
http://radiokot.ru/konkurs/44/ тут все подробно описано
Отношение есть. Рисование отрезков на растровом устройстве - попытка максимально точно определить, зажигать или нет точки, чтобы получить ровную линию, используя целочисленную арифметику, без деления и умножения. Регулирование мощности таким методом, по аналогии, пропускать или нет данный период сетевого тока в нагрузку.
Практически так:
* есть две глобальные переменные:
regValue - то, что хотим получить, пусть будет в интервале [0..99];
regError - накопление ошибки, это придумал Брезенхем.
* когда выяснилось, какую мощность хотим передать в нагрузку (пусть будет 20 из интервала [0..99]):
regValue = 20;
regError = 50;
Устанавливаем regError = 99/2, середина интервала. Это нужно делать каждый раз при изменении regValue;
* в начале каждого полного периода сетевого напряжения делаем:
regError = regError - regValue;
if (regError < 0) {
regError = regError + 99; // максимальное значение
_симистор_открыть_; // на весь период
} else
_симистор_не_открывать_; // весь период
Всё, собственно.
Практически так:
* есть две глобальные переменные:
regValue - то, что хотим получить, пусть будет в интервале [0..99];
regError - накопление ошибки, это придумал Брезенхем.
* когда выяснилось, какую мощность хотим передать в нагрузку (пусть будет 20 из интервала [0..99]):
regValue = 20;
regError = 50;
Устанавливаем regError = 99/2, середина интервала. Это нужно делать каждый раз при изменении regValue;
* в начале каждого полного периода сетевого напряжения делаем:
regError = regError - regValue;
if (regError < 0) {
regError = regError + 99; // максимальное значение
_симистор_открыть_; // на весь период
} else
_симистор_не_открывать_; // весь период
Всё, собственно.
Последний раз редактировалось maglev Чт фев 09, 2012 21:28:26, всего редактировалось 1 раз.
- Реклама
Тут ещё посмотрите http://www.telesys.ru/electronics/projects.php?do=p022
Лень в виде мании величия: «ты гений, зачем стараться?». В виде комплекса: «всё равно не выйдет, зачем упираться?». Как логика: «если достаточно, зачем знать и уметь больше?». Цель одна: остановить. Не любит тепло работающих мышц и шум работающего мозга.
собрал регулятор..... проблема . 66 и 88 процентов мощности пропускают 100% мощности. Где то в этом алгорите есть зяба . ???? Подскажите???
- Вложения
-
- Q.c
- (4.21 КБ) 1238 скачиваний


