Микроконтролери и електроника
http://mcu-bg.com/mcu_site/

Алгоритъм на Bresenham - управление на SSR
http://mcu-bg.com/mcu_site/viewtopic.php?f=7&t=7014
Страница 1 от 3

Автор:  Infinity [ Сря Юли 29, 2009 1:05 am ]
Заглавие:  Алгоритъм на Bresenham - управление на SSR

Става въпрос за управление на активен товар на 220V/50Hz.В основата на принципа на управление стои следното - товарът се управлява с zero-crossing,като с помощта на алгоритъма на Bresenham се определя такова разпределение и продължителност на периодите on/off на симистора/тиристори/,че се постига степенно регулиране на мощността върху товара,с определена резолюция,нещо като PWM и най-важното - с равномерно рапределение на on_полупериодите и off_полупериодите.Някой правил ли е такова нещо,ако имате идеи как да стане практически най-лесно - споделете.Мерси!

Автор:  woody [ Сря Юли 29, 2009 9:26 am ]
Заглавие: 

Какво точно ще ти помогне Брезенхам в случая? :D

Генерирането на импулси за отпушване на силовия елемент е елементарно - имаш минимален и максимален ъгъл на отпушване (както и минимална ширина на импулса), избираш си какъв точно ъгъл искаш в момента. Синхронизираш по zero-crossing на фазата. Ако търсиш линеаризация на мощността си правиш таблица. И гледаш положителните и отрицателните полупериоди да са симетрични.

Автор:  ДедоБоре [ Сря Юли 29, 2009 1:33 pm ]
Заглавие: 

уди,
човека иска да работи само с цели полупериоди и да апроксимира кривата на желаната мощност към реалната/моментна като закръглява на цял (полу)период.
а защо с брезенхам? сигурно някой болен асистентски мозък го иска за курсова задача...

Автор:  tgi [ Сря Юли 29, 2009 1:48 pm ]
Заглавие: 

Не знам какъв е тоя Брезенхам, ама с триаци/тиристори хем zero crossing, хем фазово управление
очевидно не става.

Аналогичният случай в наше село беше преди 15-ина години, когато правих един 0 до 5 kV
модул за първия нюкман; обратната връзка отиваше във вид на 0 до 5 волта на един ADC
вход на HC11, един PWM изход щракаше ключа в първичната намотка (flyback convertor,
очевидно).

Та аналогичното в случая дойде от там, че разделителната способност на PWM-а беше
0.5 микросекунди; много повече, отколкото трябваше за плавно регулиране.

Какво направих - ами Брезенхам не Брезенхам (не съм го ни чувал, ни виждал тоя :-) ), дефинирах
един втори период, примерно 20 пъти колкото тоя на PWM-то (EEPROM програмируемо, както беше
и честотата на PWM-а), и почнах двете съседни стойности да ги задавам в рамките на този период,
от 1 на 20 за по-малката до 20 на 20 за същата.
Работят и до ден днешен.

Много други варианти за това zero-crossing не виждам - вариращ брой пуснати полупериоди за даден
интервал от време на колкото е възможно по-равни интервали вътре в рамките на периода,
какво друго може да направи човек.

Автор:  Wise [ Сря Юли 29, 2009 2:01 pm ]
Заглавие: 

На мен ми се струва смислен въпроса. Примерно - правиш си 5 секунди такт.
Това са около 1 байт синусоиди. За този период пускаш САМО ЦЕЛИ такива - от 0 до 249.
И искаш да са разпределени равномерно, за някакъв дълъг период - не 5 накуп и после 244 - нулеви.
Та ако знаеш големия период и запълването в малкия - да ги пръснеш подходящо.
/не съм нищичко чел за подобни методи - просто ми се струва приемливо/
Но пък времето е толкова голямо, че можеш всякакви сметки да правиш.

Автор:  ДедоБоре [ Сря Юли 29, 2009 2:38 pm ]
Заглавие: 

не се излагайте... :oops:
http://en.wikipedia.org/wiki/Bresenham's_line_algorithm

то верно, че съвременната тенденция на решаване на проблемите е силова (МИПС-ве, а не алгоритми), ама...
някак си не мога да приема да рендваш тексели, без да си наясно с пикселите

а дали ще с брезенхам или с питагоровата теорема ми се вижда еднакво отвлечено като постановка.
но ако даскала е казал брезенхам - тогава трябва да е с брезенхам (ако целта е заверка)

Автор:  tgi [ Сря Юли 29, 2009 3:00 pm ]
Заглавие: 

Ми не бях го чел, не го прочетох цялото и сега.

Но преди 20-ина и кусур години, когато писах първите си графични
библиотеки, нямах проблем как да ги направя - то и няма повече от един разумен
начин. И сегашните в DPS-а - последно ги правих за power architecture преди няколко
години - са все така правени.
Времето да измисля алгоритъма, което съм похарчил общо за всичките графични библиотеки,
дето съм писал, май е по-малко от времето, което би ми отнело да прочета статията в
wikipedia...
Знанията по елементарна геометрия са повече от достатъчни за да бъде тоя алгоритъм
очевиден за всеки, комуто потрябва - и без да е чувал името (аз не бях го чувал досега).

Автор:  [ Сря Юли 29, 2009 4:08 pm ]
Заглавие: 

Някой май не е внимавал в часа по компютърна графика 8)

Автор:  woody [ Сря Юли 29, 2009 4:47 pm ]
Заглавие: 

ДедоБоре написа:
уди,
човека иска да работи само с цели полупериоди и да апроксимира кривата на желаната мощност към реалната/моментна като закръглява на цял (полу)период.
а защо с брезенхам? сигурно някой болен асистентски мозък го иска за курсова задача...


Определено имам проблем да декодирам заданието. :) Чак след твоята подсказка почнах да виждам някакви паралели в написаното от Infinity че става въпрос за цели (полу)периоди. Но пак не мога да го разбера докрай, тъй като има и "продължителност на периодите". 8O

Освен това, не е ли класическото регулиране по ъгъл на положителна и отрицателна полувълна най-доброто и за мрежата и за консуматора? Захранване с прескочени полупериоди ми се чини малко безумие. :roll: Или има изследвания в тая област които изтъкват предимства??


@Infinity - ако целта (на курсовата ти работа?) е да направиш интерполатор, няма дори нужда да споменаваш за 220V/50Hz и полупериоди. Дори един прост фазов акумулатор ще ти свърши работа.

Автор:  tgi [ Сря Юли 29, 2009 5:42 pm ]
Заглавие: 

¶ написа:
Някой май не е внимавал в часа по компютърна графика 8)


Не съм аз - никога не съм посещавал такива часове. Формалното ми образование не включва
техниката, която правя последните 20 и кусур години :) .

Което не значи, че винаги съм внимавал във всички часове, които съм имал, де.
Но май ме бива много в това да приема тая част от знанието на някого, с когото комуникирам,
която нямам - knowledge vampire и половина съм... :-)

Автор:  tgi [ Сря Юли 29, 2009 6:35 pm ]
Заглавие: 

woody написа:
...
Освен това, не е ли класическото регулиране по ъгъл на положителна и отрицателна полувълна най-доброто и за мрежата и за консуматора? Захранване с прескочени полупериоди ми се чини малко безумие. :roll: Или има изследвания в тая област които изтъкват предимства??
...


За класика класика е фазовото регулиране, но zero crossing - включване на товара в момента, когато
напрежението е 0 волта - предполага цели полупериоди, триаците и тиристорите можеш само да ги
включваш през гейта, изключват, когато токът през тях стане 0 (т.е. трябва да чакаш до края на полупериода).

Предимството е, че генерират по-малки смущения - по-малък "inrush current".

Автор:  bongo_x2 [ Сря Юли 29, 2009 7:19 pm ]
Заглавие: 

А бе тя задачката е ясна макар и тъпа:
За време равно на N периода на мрежата (пиксели по X) мощността трябва от степен A да стане на степен B които са цели числа напр. от 0 до 100, т.е. пикселите по Y. Тук господин Б. си казва тежката дума: през първите n1 периода мощността трябва да е p1, после за n2 периода мощността трябва да е p2 и т.н. докато се запълни времевия интервал N.
Следва да се определи за колко периода тиристорът да е отпушен и за колко запушен и те да се поразхвърлят що-годе равномерно. И тук идва голямото омазване: заради нееднаквостта на малките n не могат да се ползват готови таблици, и представете си че господин Б. е казал, че за 2-а мрежови периода мощността трябва да е 1/5 от максималната...
Това само некадърник с летен грип и след голям запой ще да го е замислил :D

Автор:  Infinity [ Чет Юли 30, 2009 2:16 am ]
Заглавие: 

Цитат:
сигурно някой болен асистентски мозък го иска за курсова задача...
- в този случай болният мозък съм аз :D .Не става въпрос за курсова задача или нещо подобно.Става въпрос за чисто практическо реализиране на управление на мощен нагревател.Идеята за това я видях от някакъв руски проект,регулатор на мощност с тиристори и Bresenham алгоритъм.Регулатора също така поддържа и зададената му мощност/напрежение върху товара/ при промяна на захранващото напрежение,чрез обратна връзка по напрежение от товара.Ако товарът се регулираше фазово нещата са много по-лесни,но тук случаят не е такъв.Най-малката единица тук е полупериода.


Общо взето това са идеите:
Цитат:
Примерно - правиш си 5 секунди такт.
Това са около 1 байт синусоиди. За този период пускаш САМО ЦЕЛИ такива - от 0 до 249.
И искаш да са разпределени равномерно, за някакъв дълъг период - не 5 накуп и после 244 - нулеви.
Та ако знаеш големия период и запълването в малкия - да ги пръснеш подходящо.
/не съм нищичко чел за подобни методи - просто ми се струва приемливо/

Цитат:
За време равно на N периода на мрежата (пиксели по X) мощността трябва от степен A да стане на степен B които са цели числа напр. от 0 до 100, т.е. пикселите по Y. Тук господин Б. си казва тежката дума: през първите n1 периода мощността трябва да е p1, после за n2 периода мощността трябва да е p2 и т.н. докато се запълни времевия интервал N.
Следва да се определи за колко периода тиристорът да е отпушен и за колко запушен и те да се поразхвърлят що-годе равномерно. И тук идва голямото омазване: заради нееднаквостта на малките n не могат да се ползват готови таблици, и представете си че господин Б. е казал, че за 2-а мрежови периода мощността трябва да е 1/5 от максималната...
Това само некадърник с летен грип и след голям запой ще да го е замислил :D
- а бе май руснак ще да е :D

Автор:  tgi [ Чет Юли 30, 2009 5:22 am ]
Заглавие: 

Добре де, не е ли очевидно.
Ако представиш интервала, който искаш да запълваш с управляван брой периоди,
като X, където X е дължината на тоя период в брой полупериоди на 50 Hzсинусоидата,
като Y можеш да представиш броя на пуснатите полупериоди.
Ако чертаеш линията, както се чертае по т.нар. Брезенхам (както всеки нормален
човек чертае линии по растер), при всяко минаване на нов, по-висок ред по Y
пускаш един полупериод.
Това е всичко. Нищо перверзно или сложно.

Автор:  smtp [ Чет Юли 30, 2009 9:06 am ]
Заглавие: 

tgi написа:
Добре де, не е ли очевидно.
Ако представиш интервала, който искаш да запълваш с управляван брой периоди,
като X, където X е дължината на тоя период в брой полупериоди на 50 Hzсинусоидата,
като Y можеш да представиш броя на пуснатите полупериоди.
Ако чертаеш линията, както се чертае по т.нар. Брезенхам (както всеки нормален
човек чертае линии по растер), при всяко минаване на нов, по-висок ред по Y
пускаш един полупериод.
Това е всичко. Нищо перверзно или сложно.


даже бонго е схванал същността на проблема ... а ти не :)

Страница 1 от 3 Часовете са според зоната UTC + 2 часа [ DST ]
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/