Страница 1 из 1
Алгоритм Брезенхема - вопрос по практической реализации.
Добавлено: Ср мар 10, 2010 20:27:52
edds
Каким образом реализуеться алгоритм Брезенхема в микроконтроллерных регуляторах мощности (практически)? Это что, какая то формула ? В инете практически вся теория по этому вопросу сводиться к построению отрезков и окружностей, либо это уже готовые решения без всяких подробностей.
Добавлено: Ср мар 10, 2010 21:01:23
Сэр Мурр
Добавлено: Ср мар 10, 2010 22:41:42
edds
""
http://hardsign.hardsign.com/prog/6 ""
информация опять же сводиться к рисованию отрезка и окружности, каким образом это может быть связано с равномерным распределением импульсов внутри определённого временного интервала ?
Добавлено: Ср мар 10, 2010 23:18:25
Twilo
а какое отношение рисование отрезков имеет к регулировке мощности? я не знаю.
нужно определять момент перехода синусоиды через "ноль" и в этот (почти в этот, т.к. симистор/тиристор при "нуле" не включится) момент включать симистор, отключится он сам при переходе через "ноль". Пропускаем определенное число периодов, например 4, остальные например 6 симистор открываем, тогда у нас будет 60% мощности, но не для каждой нагрузки подходит такой алгоритм
http://radiokot.ru/konkurs/44/ тут все подробно описано
Добавлено: Ср мар 10, 2010 23:42:46
maglev
Отношение есть. Рисование отрезков на растровом устройстве - попытка максимально точно определить, зажигать или нет точки, чтобы получить ровную линию, используя целочисленную арифметику, без деления и умножения. Регулирование мощности таким методом, по аналогии, пропускать или нет данный период сетевого тока в нагрузку.
Практически так:
* есть две глобальные переменные:
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
_симистор_не_открывать_; // весь период
Всё, собственно.
Добавлено: Ср мар 10, 2010 23:59:23
edds
То что надо, Maglev . Это именно то что я искал. Спасибо.
Всё, тему можно закрывать
Добавлено: Чт мар 11, 2010 01:06:52
avreal
Re: Алгоритм Брезенхема - вопрос по практической реализации.
Добавлено: Пн мар 29, 2010 18:40:02
edds
собрал регулятор..... проблема . 66 и 88 процентов мощности пропускают 100% мощности. Где то в этом алгорите есть зяба . ???? Подскажите???