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

Ветроэнергетика и альтернативная энергетика. (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. Статистика по отдаче ветряка за некий период времени (определяется размером таблицы)

vitalkalm 21.12.2012 15:26

Вложений: 1
Спасибо на счет таймера.
Сегодня почитал, что еще можно использовать асинхронный таймер с часовым кварцем. Таймер тоже будет переполняться каждую секунду, не зависимо от частоты основного кварца процессора.
Пока вот, что есть (во вложении исходник на BASCOM-е и проект в Proteus). Алгоритм следит за изменением длительности импульсов на одной из фаз и изменяет скважность общего ШИМ-а, который я дальше пытаюсь раскидать на аккумулятор, на потребители и балласт.
Дмаю, что было-бы правильным производить вычисление и распределение ШИМ-ов не выходя из прерывания определения длительности импульса.


'********Акселерометр и задача длительности импульса общего ШИМ ****************
If U_r_gen < 10 Then
Pwm_main = 0
Else
If Period <= Period_old Then
If Pwm_main < 255 Then Incr Pwm_main
Else
If Pwm_main > 0 Then Decr Pwm_main
End If
End If

'************************Подпрограмма общета ШИМ-ов*****************************
I_set_and_nagruzka = I_set_akb + I_r_nagruzka
If U_r_akb > U_set_akb Then
If Pwm_ball < Pwm_main Then Incr Pwm_ball
End If
If U_r_akb <= U_set_akb And I_r_akb > I_set_and_nagruzka Then
If Pwm_ball < Pwm_main Then Incr Pwm_ball
End If
If U_r_akb <= U_set_akb And I_r_akb <= I_set_and_nagruzka Then
If Pwm_ball > 0 Then Decr Pwm_ball
End If
Pwm_akb_and_nagruzka = Pwm_main - Pwm_ball
Pwm0 = Pwm_akb_and_nagruzka
Pwm2 = Pwm_ball

BenGunn 21.12.2012 15:56

vitalkalm, если вы и так собираетесь измерять мощность, попробуйте вместо периода сравнивать мощность на нагрузке. Это должно повысить эффектность контроллера.
Только алгоритм немного изменится. Возможны синтаксические ошибки, так этого ЯП я не знаю, но думаю суть понятна.

If U_r_gen < 10 Then
Pwm_main = 0
Else
If Power <= Power_old Then Flag = -Flag
End If
If (Flag = 1) and(Pwm_main < 255) Then Incr Pwm_main
End If
If (Flag = -1)and(Pwm_main > 0) Then Decr Pwm_main
End If

Power - текущая мощность
Power_old - мощность, которая была
Flag - переменная, которая показывает, что мы делали на предыдущем шаге
Общая идея такая. Если наше предыдущее действие(увеличение или уменьшение скважности ШИМ) привело к уменьшению мощности, то делаем противоположное действие, а если мощность увеличилась, то продолжаем делать то, что и делали.

vitalkalm 21.12.2012 16:16

Цитата:

Сообщение от BenGunn (Сообщение 28548)
vitalkalm, если вы и так собираетесь измерять мощность, попробуйте вместо периода сравнивать мощность на нагрузке. Это должно повысить эффектность контроллера.

Дело в том, что я опасаюсь за быстродействие контроллера. Для пересчета мощности необходимы операции умножения, а для вычисления периода - нет. Хотя с другой стороны отпадает необходимость в остановке главного цикла для выполнения прерывания измерения периода импульса.
Можно и ШИМ-ы выражать в зависимости от мощностей, но тоже нужно много умножать, что не желательно делать в середине прерывания.
Я на распутье...

vitalkalm 21.12.2012 16:35

Вложений: 1
Вот, переделал на сравнение мощностей. Все красиво, Proteus сильно тормозит при симулировании. Надо смотреть в железе. Пока бьюсь над подсчетом кВт*часов.

BenGunn 21.12.2012 16:44

vitalkalm, перепишете алгоритм изменения скважности, на тот, который я написал выше. Иначе в некоторых случаях контроллер будет менять скважности неправильно.

vitalkalm 21.12.2012 17:43

Вложений: 1
Цитата:

Сообщение от BenGunn (Сообщение 28551)
vitalkalm, перепишете алгоритм изменения скважности, на тот, который я написал выше. Иначе в некоторых случаях контроллер будет менять скважности неправильно.

Переписал и запихал все назад п обработчик прерывания. Все ОК.

Может подпрограму вычисления мощности тудаже засунуть?

Где-то видел способ измерения длительных импульсов без применения таймеров, а то много стоит процессор на прерывании.

Александр 21.12.2012 22:44

vitalkalm, на прерывании процессор не стоит. Оно, прерывание, для того и существует, чтобы не тормозить процессор. Весь вопрос в том, как оно использовано. Обработчик прерывания должен быть максимально коротким и не содержать ничего лишнего, кроме измерения длительности. Всё остальное должно делаться за пределами прерывания - все вычисления, изменение длительности ШИМ и т.д. Иначе есть риск превратить МК в улитку. Во время прерывания МК нельзя заставлять ожидать прихода чего-то там.

vitalkalm 21.12.2012 23:24

Цитата:

Сообщение от Александр (Сообщение 28566)
vitalkalm, на прерывании процессор не стоит. Оно, прерывание, для того и существует, чтобы не тормозить процессор. Весь вопрос в том, как оно использовано. Обработчик прерывания должен быть максимально коротким и не содержать ничего лишнего, кроме измерения длительности. Всё остальное должно делаться за пределами прерывания - все вычисления, изменение длительности ШИМ и т.д. Иначе есть риск превратить МК в улитку. Во время прерывания МК нельзя заставлять ожидать прихода чего-то там.

Вразумил. Выброшу из прерывания все лишнее. Бьюсь над меню настроек: Изменить количество импульсов на оборот, Максимальное напряжение Аккумуляторов, ограничение тока заряда. Может еще кто что предложит..

Александр 21.12.2012 23:46

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

Dim P As Word ' переменная для длительности импульса
Bitwait Pinc.4 , Set 'ждём, пока бит 4 порта С станет 1.
Pulsein P , Pinc , 4 , 1 'длительность импульса фронт - спад

Очень рекомендую снабжать текст программы подробными комментариями. Это очень пригодится в дальнейшем. И это является хорошим тоном в программировании. Кто-то из великих мира компьютеров когда-то давно сказал так: "Отсутствие комментариев в программе является достаточным основанием для увольнения программиста."

vitalkalm 22.12.2012 00:26

Цитата:

Сообщение от Александр (Сообщение 28572)
...Очень рекомендую снабжать текст программы подробными комментариями. Это очень пригодится в дальнейшем. И это является хорошим тоном в программировании. Кто-то из великих мира компьютеров когда-то давно сказал так: "Отсутствие комментариев в программе является достаточным основанием для увольнения программиста."

Очень согласен...

vitalkalm 22.12.2012 20:27

Вложений: 1
Вот, с обши-и-ирными комментариями. Кто-то вдруг захочет разобраться. Комменты вставлял в блокноте, т.к. на работе нету BASCOM-а.
Тут разбираюсь с асинхронным таймером.
Нужно взять с него сигнал для считывания с АЦП данных по генератору с последующим подсчетом мгновенной, секундной мощности генератора, чтобы потом считать мощность в кВт*часах. Пока не дошло как. Но если дойдет, или подскажет кто, то можно будет писать в EEPROM мощность по часам, дням, месяцам. Плюс имеем на ЖКИ текущее время.
Вот так оно выглядит
Синтаксис:
CONFIG CLOCK = SOFT | USER
SOFT - используется для самостоятельной реализации часов, на основе асинхронного таймера.
USER - используется для реализации часов, на основе микросхем RTC.






Разумеется, это только с виду одна команда. На самом же деле эта команда делает многое. А именно:
1. Автоматически создает переменные _sec , _min , _hour, _day , _month , _year.
2. Выставляет бит AS2 регистра ASSR, разрешающий асинхронный режим работы таймера / счетчикаT2.
3. Выставляет прескалер 128, для таймера / счетчика T2 (регистр TCCR2).
4. Выставляет бит TOIE2 регистра TIMSK, разрешающий работу прерывания по переполнению таймера / счетчика T2.
5. Выполняет обработку прерывания по переполнению, увеличивая значения секунд, минут и часов.

vitalkalm 21.01.2013 04:06

Вложений: 1
Мои последние наработки. Особенности:
- 2-й таймер завел в асинхронном режиме. В основном экране теперь отображается еще текущее время.
- подсчет частоты оборотов организовал с помощью команды Pulsein, без применения таймера.
- перебросил ШИМ на 1-й таймер, развел во времени моменты включения ШИМ-ов Аккумулятора и балласта, теперь они включаются в разное время, не мешая друг другу.
- добавил меню настроек основных параметров, вход в меню происходит при длительном нажатии первой кнопки (кнопка "О.К."):
- напряжения начала отбора мощности
- напряжение аккумулятора, при котором считается, что он уже заряжен
- максимальный ток зарядки, зависящий от емкости аккумулятора
- количество импульсов с одной фазы на один оборот генератора
- отключение функции MPPT, при этом генератор грузится на полную, но программа по-прежнему раскидывает мощность по потребителям с приоритетом на аккумулятор.
- настройка текущего времени и даты
- организовал запись статистики в EEPROM контроллера. Памяти хватило за глаза (не закончено)
- добавил меню статистики по минутам, часам, суткам, месяцам и годам (не закончено). Вход в меню статистики выполняется коротким нажатием на кнопку О.К. Можно погулять по статистике вверх-вниз и, если нужно, посмотреть, что творилось за полследний час, сутки, месяц или год
Во вложении кекс, бин и проект Протеуса.

Не доконца организована работа со статистикой. Пока, что затык с математикой...
Дальше разработка упирается в железо. Думаю, в качестве комутаторов нагрузок использовать драйвера HCPL-3120 и полевики по-мощнее (или IGBT). Для HCPL надо лепить блок питания +18В и -5В, для каждого драйвера свой. Усилители для токовых шунтов на операционниках.

DJ_Grom 21.01.2013 06:40

Вложений: 1
Цитата:

Сообщение от vitalkalm (Сообщение 29267)
Думаю, в качестве комутаторов нагрузок использовать драйвера HCPL-3120 и полевики по-мощнее (или IGBT).

А не проще IR21хх серию с оптронами шустрыми использовать? Или не любишь рассыпуху?
Например http://www.datasheetdir.com/IR2010+MOSFET-Drivers, тогда и полевиков можно навешивать столько, сколько надо, он вытянет очень много, если частоты заоблачные не ставить, а лучше 2110, напряжение выше. Или тут выбрать http://www.compitech.ru/html.cgi/arh...03/stat_22.htm.

vitalkalm 21.01.2013 13:06

Да мне одинаково, хоть на рассыпухе, хоть как.
У нас цены:
IR2110 - 12 гривен + оптопара 2-3 гривны.
HCPL-3120 - 15 гривен.

vitalkalm 17.02.2013 17:22

Вложений: 3
Обнеовление программы и схемы. Теперь время считает DS1307, а статистика пишется в 24LC08.

Частично собраны периферийные компоненты. Готов блок питания драйверов и вытравлены платы драйверов и формирователей сигналов для конроллера.
Схемы формирователей - на LM358, преобразователь блока питания на TL494, драйверы на HPLC. Схемы не привожу - все по классике. Но если нужно будет, то нарисую.

Tema0 18.02.2013 09:01

Использовать 4 порта на 4 кнопки это БАРСТВО :-) потом портов для дальнейшего расширения функционала не хватит.
сделай матрицу 2х2 и двумя портами ее читай

или одним портом АЦП. подключив кнопки через делитель напряжения

Саня77 18.02.2013 19:50

http://www.aliexpress.com/store/prod...748779257.html
Тоже МРРТ.

vitalkalm 19.02.2013 22:21

Цитата:

Сообщение от Tema0 (Сообщение 30165)
Использовать 4 порта на 4 кнопки это БАРСТВО :-) потом портов для дальнейшего расширения функционала не хватит.
сделай матрицу 2х2 и двумя портами ее читай

или одним портом АЦП. подключив кнопки через делитель напряжения

Об АЦП забыл совсем, вкусный вариант.

vitalkalm 20.02.2013 00:14

Вложений: 1
Вот, в принципе, работает, но программа занимает на 2% больше памяти.

Tema0 20.02.2013 01:08

да возьми два порта...
смотри.. у тебя опрос кнопок идет только по аппаратному прерыванию, которое формируется самими кнопками через четыре диода...
значит ситуация когда все кнопки отпущены не может вызвать прерывание...
тогда
1 кнопка идет только на прерывание и к порту ее не подключаем и диод тоже не нужен
2,3,4 кнопки через матрицу из двух диодов формируют на двух портах варианты 00,01,10 и так же как у тебя через диоды вызывают прерывание.
если при прерывании возник вариант 11 значит эти три кнопки отпущены а нажата первая кнопка...
понятно или нарисовать?
схема больше на 1 диод, но 2 бита на порту ты освободишь под датчики которых тебе вешать еще дофига, судя по письменам на жки

vitalkalm 20.02.2013 01:53

Вложений: 1
Спасибо большое за пояснения. Рисовать не нужно, я сам, во вложении, так?
А "Письмена" на жки отображают считаную и обработанную информацию с уже имеющихся датчиков. Пока портов хватает, я, вон, от скуки светодиодов даже навешал, а ведь они информативности не добавили. Ну а память вот на пределе...

Tema0 20.02.2013 09:11

Да, так.
Ты в железе уже реализовал? может есть смысл перескочить на атмегу328, там внутрисистемной памяти в 2 раза больше.
И еще один плюс. у328 атмеги внутренний источник опорного напряжения можно на 1,1В запрограмить.
это удобно если используешь датчики тока, у них выходное напряжение 0...1В.
а еще там индикатор можно повесить на шину I2C, на неё же повесить память для сбора статистики,и с часами работать через эту же шину. Сильно упростит схемотехнику.
а отладку делать подключив комп через ком->USB порт и вываливая информацию отладочную в терминале,


твой визуал сожрет все ресурсы, 16 атмега думаю маловата
мне вот такие сборки приглянулись для опытов.

vitalkalm 20.02.2013 17:15

Да, вкусная сборка. В любом случае надо в железе котроллер делать, хоть на 16 меге. А потом можно и дальше развиваться. Кстате на I2C экранчик можно и на 16 привинтить. Из железа есть только периферия. Нужно еще преобрести ЖК 20*4, перу полевиков, микросхемы драйверов и, собственно, мегу16. Для датчиков тока пока думаю использовать обычные шунты с операционниками, а то интегральные пока дороговаты...

serg156 15.04.2013 18:08

Добрый день! Почитал форум, очевидно, что тут собрались настоящие энтузиасты альтернативной энергетики, которые проделали на голом энтузиазме, то есть даром очень большой объём работы, в чём вам всем честь и хвала. И я тоже хочу внести свою скромную лепту в ваш титанический труд. Начну с простой вещи. Я по каналу "Дискавери" смотрел фильм про ветряные установки , установленные на побережье Северного моря, установки промышленные , на десятки мегават, и там особо много внимания было уделено оптимизации работы ветрогенератора. Не буду утомлять пересказом фильма, отмечу только главный момент, который отсутствует в наших расчётах. В фильме рассказывалось, что на каждый ветрогенератор делалась его оптимальная нагрузочная характеристика для отбора максимального количества энергии. У них регулировалось частота вращения ветряка в зависимости от набегающей на него скорости ветра. Для этого на каждом ветряке стоял ещё один измерительный маленький ветрячёк, типа метерологического, и по его данным регулировали нагрузку на генератор, то есть вгоняли работу ветряка в оптимальный. Например, по расчётам или эксперементально определили, что при скорости ветра 10 м/с максимум генерируемой мощности будет при 300х оборотах в минуту, а на данный момент ветряк делает 350 оборотов, электроника подключает дополнительную нагрузку, и ветряк замедляет обороты до 280 в минуту, электроника видит, что ветряк перегружен, обороты меньше оптимальных и снимает часть нагрузки с ветряка, позволяя ему набрать обороты до оптимальных 300. Ещё раз повторюсь, что вся регулировка напрямую завязана на скорость ветра, которую меряет в режиме он лайн ещё один маленький метерологический ветрячёк. Имхо, без замера ветра у нас нету привязки к подводимой ветряной мощности, которая является переменной функцией во времени, и регулируемой нами переменной нагрузкой. Без учёта этих параметров говорить о работе ветрогенератора в режиме максимальной мощности невозможно!

983 15.04.2013 18:22

serg156, этот подход здесь на форуме то же обсуждался, он не отброшен в мусорный ящик.
Но имеется возможность приблжаться к оптимуму и без дополнртельного измерителя ветра, так как сам ветряк тоже таковым является.
А смысл этого подхода в том, что устройство не привязано по параметрам к отдельно взятому конкретному ветряку, но может работать с любым.
С уть такого регулирования в том, чтоб постоянно изменяя отбор на небольшую величину определять, в нужном направлении было сделано изменение и в зависимоти от этого продолжать изменение в том же направлении, либо в обратном.
Сложность етого подхода в том, что нельзя просто тупо вытягивать мощу с ветряка, так как при этом на самом деле вытягивается моща не только ветра, но и инерции ветроколеса, рмультипликатора и генератора.
Вот эту инерцию и придётся учитывать, чтоб не обманываться инерцией.

Александр 15.04.2013 23:23

Практическая попытка использовать дополнительный измеритель скорости ветра была сделана Серкатом на его ветряке. И он от неё отказался, поскольку показания анемометра абсолютно неадекватны. Эта неадекватность усугубляется особо, если ветряк снабжён винтом регулируемого шага. Допускаю, что на ветряках мегаваттного класса это как-то можно учитывать, что и делается, иначе наличие анемометра на ветряке не объяснить. У них практически не работает центральная зона винта диаметром почти два десятка метров. В наших же мелких ветряках мёртвая зона составляет весьма небольшую величину. Скорость ветра начинает снижаться ещё на подходе к винту и это снижение уже заметно на расстоянии перед винтом, равном его диаметру. А в плоскости ветроколеса оно уже составляет 1/3 от скорости ветра. Это при условии, что коэффициент нагрузки на ветроколесо равен 0,888 (что является оптимальным для максимального отбора энергии потока). Это подразумевает, что ветряк работает на оптимальную нагрузку при данной скорости ветра. Если изменится либо нагрузка, либо скорость ветра, коэффициент торможения станет другим и вся ветровая картина как на самом ветряке, так и на его анемометре - изменится. По этой причине приходится отказываться от прямого измерения скорости ветра и пользоваться другими, намного более сложными методами. В этом и заключается основная проблема при построении системы, оптимизирующей работу ветряка.

983 15.04.2013 23:40

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

А ничё так бредовая идейка ?

Сергей 16.04.2013 05:12

Цитата:

Сообщение от 983 (Сообщение 31899)
А ничё так бредовая идейка ?

М-да...
Несёт тебя не по детски:wacko2:...

serg156 16.04.2013 13:03

Цитата:

Сообщение от 983 (Сообщение 31885)
serg156, этот подход здесь на форуме то же обсуждался, он не отброшен в мусорный ящик.
Но имеется возможность приблжаться к оптимуму и без дополнртельного измерителя ветра, так как сам ветряк тоже таковым является.

Согласен, что ветряк сам является измерителем скорости ветра, вот только он даёт очень сильную погрешность, что имхо , не позволяет его использовать как источник данных для оптимизации отдачи энергии. Меняющаяся при оптимизации нагрузка на генератор влияет на обороты, и мы получаем уже другую силу ветра, о которой мы можем судить только по числу оборотов ветряка. Можно вытащить силу ветра как функцию от получаемой мгновенной мощности и текущих мгновенных оборотов, но для этого как минимум надо ставить датчик оборотов, иметь полученную на практике модель работы на динамической нагрузке с оптимальным числом оборотов, и устройство поддержания заданных оптимальных оборотов. Пока что очень мало мне попадалось квалифицированных расчётов на эту тему, да и получение функции с последующим её математическим программированием в пик контроллер задача для профессиональных инженеров электронщиков.

Цитата:

Сообщение от 983 (Сообщение 31885)
serg156
А смысл этого подхода в том, что устройство не привязано по параметрам к отдельно взятому конкретному ветряку, но может работать с любым.
С уть такого регулирования в том, чтоб постоянно изменяя отбор на небольшую величину определять, в нужном направлении было сделано изменение и в зависимоти от этого продолжать изменение в том же направлении, либо в обратном.
Сложность етого подхода в том, что нельзя просто тупо вытягивать мощу с ветряка, так как при этом на самом деле вытягивается моща не только ветра, но и инерции ветроколеса, рмультипликатора и генератора.
Вот эту инерцию и придётся учитывать, чтоб не обманываться инерцией.

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

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

Сообщение от Александр (Сообщение 31898)
Практическая попытка использовать дополнительный измеритель скорости ветра была сделана Серкатом на его ветряке. И он от неё отказался, поскольку показания анемометра абсолютно неадекватны.

А можно сылочку на его опыты? Очень хочется изучить его опыт. Как то странно звучит заявление об неадекватности анемометра. На всех метеостанциях они используются уже очень давно, и как то не замечено жалоб на их работу.
Цитата:

Сообщение от Александр (Сообщение 31898)
Эта неадекватность усугубляется особо, если ветряк снабжён винтом регулируемого шага. Допускаю, что на ветряках мегаваттного класса это как-то можно учитывать, что и делается, иначе наличие анемометра на ветряке не объяснить. У них практически не работает центральная зона винта диаметром почти два десятка метров. В наших же мелких ветряках мёртвая зона составляет весьма небольшую величину. Скорость ветра начинает снижаться ещё на подходе к винту и это снижение уже заметно на расстоянии перед винтом, равном его диаметру.

А что мешает разместить анемометр ниже на 1-2 метра от нижнего края лопасти на мачте? Имхо, не так сильно будет меняться ветер на 2 метра вниз. Даже если в плоскости ветряка оно составляет уже 1/3 , то насколько нам это важно? Имхо, нам для расчётов нужна только динамика изменения ветра, на три можно без проблем умножить программно в пик контроллере.

Цитата:

Сообщение от Александр (Сообщение 31898)
А в плоскости ветроколеса оно уже составляет 1/3 от скорости ветра. Это при условии, что коэффициент нагрузки на ветроколесо равен 0,888 (что является оптимальным для максимального отбора энергии потока). Это подразумевает, что ветряк работает на оптимальную нагрузку при данной скорости ветра. Если изменится либо нагрузка, либо скорость ветра, коэффициент торможения станет другим и вся ветровая картина как на самом ветряке, так и на его анемометре - изменится. По этой причине приходится отказываться от прямого измерения скорости ветра и пользоваться другими, намного более сложными методами. В этом и заключается основная проблема при построении системы, оптимизирующей работу ветряка.

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

983 16.04.2013 13:03

Цитата:

Сообщение от serg156 (Сообщение 31914)
Можно вытащить силу ветра как функцию от получаемой мгновенной мощности и текущих мгновенных оборотов, но для этого как минимум надо ставить датчик оборотов,

что что, а уж датчиком оборотов сам ветряк и является ( если только в качестве генератора не исполбзуется коллекторная машынка постоянного тока)
Цитата:

Сообщение от serg156 (Сообщение 31914)
Очень интересно посмотреть на математическую формулу и алгоритм, который вы применяете для определения точки максимальной мощности, и принцип устройства, которое может так забирать с ветряка мощность. Кроме шима и коммутации обмоток, ничего на первый взгляд не приходит на ум.

У меня нет никакой, формулы, нет алгоритма, это всё есть у тех, кто этим вопросом занимается уже давно.
У меня есть уверенность, что это всё реально возможно, так же есть уверенность, что тем, у кого уже есть намётки или рабочие прототипы, придётся ещё хорошенько повкалывать для того, чтоб получить адекватность и стабильность работы алгоритма.
Да, ступенчатые коробки передач и такое же переключение обмоток отваливаются сразу, вариатор отваливается из за его низких КПД и долговечности.
Остаётся ШИМ и ЧИМ! -- наши надежды и опоры ! http://hippydom.forum24.ru/gif/smk/sm146.gif


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

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