Ветроэнергетика и альтернативная энергетика.

Ветроэнергетика и альтернативная энергетика. (http://windpower-russia.ru/index.php)
-   Электроника (http://windpower-russia.ru/forumdisplay.php?f=9)
-   -   MPPT контроллер для ветра (http://windpower-russia.ru/showthread.php?t=232)

Александр 19.11.2012 21:11

Микроконтроллер может очень сложные программы выполнять. Дай Бог нам их написать.
По поводу лёгких винтов. Тут есть проблема: если винт слишком лёгкий, то механическая прочность его может оказаться недостаточной. Я не могу сказать, что у меня винт лёгкий, однако при усилении ветра от пяти до десяти метров в секунду он разгоняется очень быстро. Где-то примерно за секунду. И чтобы успевать за ним, мне пришлось проводить замеры знака ускорения в каждой положительной полуволне напряжения с генератора, а в отрицательной полуволне проводить коррекцию нагрузки.
Если ветряк попадает в точку равенства мощностей, контроллер не даёт ему там застрять. Он его оттуда сталкивает. Поскольку он знает, что если скорость растёт либо стабильна, то нужно увеличить нагрузку. И делать это до тех пор, пока скорость не начнёт снижаться. В идеале должно получаться, что контроллер балансирует на восходящей ветви перед самой вершинкой. По реальным наблюдениям что-то в этом духе происходит.

BenGunn 19.11.2012 21:38

Цитата:

Сообщение от Александр (Сообщение 27505)
Микроконтроллер может очень сложные программы выполнять. Дай Бог нам их написать.

А на каком языке надо писать программы?

Цитата:

Сообщение от Александр (Сообщение 27505)
По поводу лёгких винтов. Тут есть проблема: если винт слишком лёгкий, то механическая прочность его может оказаться недостаточной. Я не могу сказать, что у меня винт лёгкий, однако при усилении ветра от пяти до десяти метров в секунду он разгоняется очень быстро. Где-то примерно за секунду. И чтобы успевать за ним, мне пришлось проводить замеры знака ускорения в каждой положительной полуволне напряжения с генератора, а в отрицательной полуволне проводить коррекцию нагрузки.

По мне, такой скорости реакции вполне достаточно. Главное поймать ветряк в нужном месте.

Цитата:

Сообщение от Александр (Сообщение 27505)
Если ветряк попадает в точку равенства мощностей, контроллер не даёт ему там застрять. Он его оттуда сталкивает. Поскольку он знает, что если скорость растёт либо стабильна, то нужно увеличить нагрузку. И делать это до тех пор, пока скорость не начнёт снижаться. В идеале должно получаться, что контроллер балансирует на восходящей ветви перед самой вершинкой. По реальным наблюдениям что-то в этом духе происходит.

Александр, а можете поподробнее рассказать о своем алгоритме. У вас нагрузка меняется всегда с постоянным шагом или с переменным?

Александр 19.11.2012 23:02

BenGunn, Большинство пишет программы на СИ, некоторые - на Ассемблере. Кому что ближе и понятнее. Для различных МК могут быть и ещё какие-нибудь дополнительные языки. Я вообще, смеха ради, решил попробовать Bascom AVR, на нём и сделал прогу для МК.
Шаг изменения остаётся неизменным. Пока сделал так. Однако меняется скорость реагирования. Она всегда синхронна с частотой генератора, поэтому чем выше частота, тем быстрее происходит реагирование.
Алгоритм составлен из нескольких модулей:
-измеритель длительности импульса
-акселерометр
-граничные условия.
И ряда подпрограмм:
-управление повышением мощности
-управление снижением мощности
-вывод на дисплей нужных параметров
-вычисление скорости вращения винта в RPM.
В измерительном модуле в самом начале производится запись предыдущего результата измерений. (Он потребуется акселерометру в дальнейшем.) Затем МК ожидает прихода единички на измерительном входе, а когда она появляется, начинает отсчёт времени, прекращая его при появлении нуля. Теперь мы получили значение длительности импульса. И программа переходит в модуль акселерометра. Там сравнивается предыдущий результат с самым последним измерением, на основании чего МК делает вывод о том, чем занят в данное время винт. Если скорость винта растёт, либо стабильна, МК исполняет п/п управления повышением мощности, делая один шаг, после чего возвращается туда, откуда была вызвана, то есть, в акселерометр. Если же в акселерометре определилось, что скорость падает, то следует переход к п/п управления снижением мощности, там делается шаг назад, после чего идёт проверять граничные условия. Там проверяется, не слишком ли мала скорость винта, и если она ниже установленной, то нагрузку следует снять совсем. Это делается для того, чтобы винт не останавливался при запредельно малом ветре. У меня это соответствует примерно двум метрам в секунду. Параметр можно установить любой - по вкусу. Кроме того, в граничных условиях может содержаться информация о подключении второго канала ШИМ, если скорость вращения винта это позволяет. (У меня пока он не задействован). По завершении модуля граничных условий МК возвращается к началу цикла, тут же переписывает ячейку предыдущего результата и снова измеряет импульс. И так всё время по кольцу... Время от времени МК выкидывает на дисплей данные о скорости вращения и величину длительности импульса.

BenGunn 20.11.2012 00:34

Александр, я все равно не понимаю один момент в вашем алгоритме. Если скорость винта стабильна, то мы нагружаем его. Он начинает тормозить, контроллер это замечает и уменьшает нагрузку. Винт опять раскручивается и т.д. В чем смысл?

Александр 20.11.2012 01:48

Здесь две причины. Первая обусловлена тем, чтобы не дать системе стабилизироваться. Система всё время должна находиться в поиске, иначе может произойти стабилизация на произвольном участке кривой винта. Если же система раскачивается, то хочет она того, или нет, но ей придётся отыскать точку наибольшей мощности. Вторая причина, это ВРШ. Здесь есть одна особенность. Когда винт стабилизировался аэродинамически, мы должны продолжать наращивать мощность на нём, отслеживая момент, когда скорость винта начнёт снижаться. Это и будет точка максимума. И для разной скорости ветра при одних и тех же оборотах винта она будет существенно отличаться. При условии, что генератор позволяет это. Мой как раз позволяет.

Цитата:

Сообщение от BenGunn (Сообщение 27519)
Винт опять раскручивается и т.д.

Пусть это никого не смущает. Контроллер замечает малейшее изменение скорости, отличие в длительности импульса в несколько микросекунд уже приводит к изменениям. На глаз это даже не заметно. Когда я только начинал над этим алгоритмом работать, я аккуратно нарисовал его на бумаге, много думал над возможными ошибками, проигрывая возможные ситуации. Вышло довольно сложно и монстрообразно. Затем сел и написал такую же монстрообразную программу в точном соответствии с моими идеями...
...И программа работала коряво. Тогда я немного подумал, выкинул из неё всё, что там было, после чего она заработала. А затем расставил вокруг себя кучу приборов для измерения ветра, мощности и скорости вращения (тахометр в МК я встроил несколько позднее, когда мой электромеханический тахометр, подключенный к ветряку, благополучно дал дуба) и начал отладку программы. После сотой с чем-то там версии всё заработало, как мне было нужно. Или почти так, как мне было нужно. Из чего я сделал вывод, что при аналитическом решении задачи у нас недостаточно данных - мы не знаем реальную динамику винта, которая обусловлена не только его инерционными свойствами, но и взаимодействием с реальным ветром, которое, к сожалению, достоверно нельзя смоделировать, только очень приблизительно и только с целой кучей допущений.
Отчасти мне самому было интересно попытаться реализовать алгоритм поиска точки максимума наиболее простыми средствами и я не вижу особых ограничений на то, как это можно достигать. Поэтому и решил попробовать завязать нагрузку непосредственно на винт. Поскольку именно он всё определяет, а мощность генератора - вещь вторичная. Собственно, генератор - это согласующее звено между винтом и нагрузкой. Посредник, так сказать. Ну и не хотелось связываться с измерительными примочками. Если напряжение ещё получается нормально и простыми способами измерить с помощью контроллера, то датчик тока довольно-таки дорогой.

cheese 20.11.2012 07:23

Александр, Вы собираетесь как то продвигать контроллер в массы?

BenGunn 20.11.2012 08:30

Александр, спасибо вам за подробные ответы.
Цитата:

Сообщение от Александр (Сообщение 27522)
Контроллер замечает малейшее изменение скорости, отличие в длительности импульса в несколько микросекунд уже приводит к изменениям.

Я примерно так и подумал, что засчет неодинаковости торможения и раскрутки точка постепенно будет смещаться.

Цитата:

Сообщение от Александр (Сообщение 27522)
Ну и не хотелось связываться с измерительными примочками. Если напряжение ещё получается нормально и простыми способами измерить с помощью контроллера, то датчик тока довольно-таки дорогой.

Т.е. с измерением мощности на нагрузке могут возникнуть проблемы?

Александр 20.11.2012 20:30

Цитата:

Сообщение от BenGunn (Сообщение 27531)
Я примерно так и подумал, что засчет неодинаковости торможения и раскрутки точка постепенно будет смещаться.

Да, я тоже так считаю.

Цитата:

Сообщение от BenGunn (Сообщение 27531)
Т.е. с измерением мощности на нагрузке могут возникнуть проблемы?

Особых проблем нет, покупаем дорогостоящий сенсор тока, затем пишем подпрограмму чтения данных с этого сенсора, затем паяем схему для измерителя напряжения пишем п/п измерения напряжения, затем пишем арифметику, которая всем этим будет пользоваться, после чего начинаем возиться уже с самим алгоритмом поиска максимума... В принципе, ничего особо страшного, возни только намного больше.:)

Цитата:

Сообщение от cheese (Сообщение 27530)
Александр, Вы собираетесь как то продвигать контроллер в массы?

Пока рановато. Он ещё сыроват.

vitalkalm 20.12.2012 05:52

Доброго здоровья! Повторил в BASCOM-е алгоритм Александра - нахождение максимума в зависимости от оборотов. При моделировании в Протеусе све пашет как надо. Но дальше затык. Не могу понять каким образом выщитать мощность, которую отдавать в балласт.
И как подсчитать мощность в КВт*часах? Прийдется цеплять внешние часики от Dallas?

Tema0 20.12.2012 10:25

Цитата:

Сообщение от Александр (Сообщение 27624)
.......Особых проблем нет, покупаем дорогостоящий сенсор тока,

не.. покупаем недорогой измерительный шунт под нужный ток и измеряем падение напряжения на нем.

Добавлено через 1 минуту
Цитата:

Сообщение от vitalkalm (Сообщение 28498)
..............
И как подсчитать мощность в КВт*часах? Прийдется цеплять внешние часики от Dallas?

можно задействовать внутренний таймер контроллера для этих целей.
выставляете его на 1 сек. и по сработка снимаете денные с шунта и с канала АЦП следящего за напряжением
перемножаете это и кладете в ячейку Х1
при следующей сработке таймера снова проделываете эту операцию и усредняете значение из ячейки Х1 с вновь полученным значением.
делаете это в цикле 3600 раз..
после окончания цикла сбрасываете значение из ячейки Х1 в организованную в памяти таблицу мощностей ( это у вас и будет мощность в час) меняете у этой таблицы адрес на след ячейку, сбрасываете в ноль значение Х1 и снова запускаете цикл...

в результате у вас будет
1. мгновенная секундная мощность
2. средняя мощность в текущем часе
3. Статистика по отдаче ветряка за некий период времени (определяется размером таблицы)


Часовой пояс GMT +4, время: 11:46.

Powered by vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 2010 Windpower Russia