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

Вернуться   Ветроэнергетика и альтернативная энергетика. > Технический раздел > Электроника

Электроника схемы, устройства, справочники и т.п.

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
Старый 21.12.2012, 15:26   #171
vitalkalm
VIP
 
Регистрация: 22.06.2011
Адрес: 123
Сообщений: 19
Вес репутации: 0
vitalkalm на пути к лучшему
По умолчанию

Спасибо на счет таймера.
Сегодня почитал, что еще можно использовать асинхронный таймер с часовым кварцем. Таймер тоже будет переполняться каждую секунду, не зависимо от частоты основного кварца процессора.
Пока вот, что есть (во вложении исходник на 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
Вложения
Тип файла: rar Мой MPPT.rar (61.3 Кб, 422 просмотров)
vitalkalm вне форума   Ответить с цитированием
Старый 21.12.2012, 15:56   #172
BenGunn
VIP
 
Регистрация: 16.05.2012
Адрес: Пермь
Сообщений: 641
Вес репутации: 12
BenGunn на пути к лучшему
По умолчанию

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 - переменная, которая показывает, что мы делали на предыдущем шаге
Общая идея такая. Если наше предыдущее действие(увеличение или уменьшение скважности ШИМ) привело к уменьшению мощности, то делаем противоположное действие, а если мощность увеличилась, то продолжаем делать то, что и делали.

Последний раз редактировалось BenGunn; 21.12.2012 в 16:19.
BenGunn вне форума   Ответить с цитированием
Старый 21.12.2012, 16:16   #173
vitalkalm
VIP
 
Регистрация: 22.06.2011
Адрес: 123
Сообщений: 19
Вес репутации: 0
vitalkalm на пути к лучшему
По умолчанию

Цитата:
Сообщение от BenGunn Посмотреть сообщение
vitalkalm, если вы и так собираетесь измерять мощность, попробуйте вместо периода сравнивать мощность на нагрузке. Это должно повысить эффектность контроллера.
Дело в том, что я опасаюсь за быстродействие контроллера. Для пересчета мощности необходимы операции умножения, а для вычисления периода - нет. Хотя с другой стороны отпадает необходимость в остановке главного цикла для выполнения прерывания измерения периода импульса.
Можно и ШИМ-ы выражать в зависимости от мощностей, но тоже нужно много умножать, что не желательно делать в середине прерывания.
Я на распутье...
vitalkalm вне форума   Ответить с цитированием
Старый 21.12.2012, 16:35   #174
vitalkalm
VIP
 
Регистрация: 22.06.2011
Адрес: 123
Сообщений: 19
Вес репутации: 0
vitalkalm на пути к лучшему
По умолчанию

Вот, переделал на сравнение мощностей. Все красиво, Proteus сильно тормозит при симулировании. Надо смотреть в железе. Пока бьюсь над подсчетом кВт*часов.
Вложения
Тип файла: rar Сравнение мощностей.rar (2.8 Кб, 382 просмотров)

Последний раз редактировалось vitalkalm; 21.12.2012 в 17:06. Причина: Перепроверил симуляцию.
vitalkalm вне форума   Ответить с цитированием
Старый 21.12.2012, 16:44   #175
BenGunn
VIP
 
Регистрация: 16.05.2012
Адрес: Пермь
Сообщений: 641
Вес репутации: 12
BenGunn на пути к лучшему
По умолчанию

vitalkalm, перепишете алгоритм изменения скважности, на тот, который я написал выше. Иначе в некоторых случаях контроллер будет менять скважности неправильно.
BenGunn вне форума   Ответить с цитированием
Старый 21.12.2012, 17:43   #176
vitalkalm
VIP
 
Регистрация: 22.06.2011
Адрес: 123
Сообщений: 19
Вес репутации: 0
vitalkalm на пути к лучшему
По умолчанию

Цитата:
Сообщение от BenGunn Посмотреть сообщение
vitalkalm, перепишете алгоритм изменения скважности, на тот, который я написал выше. Иначе в некоторых случаях контроллер будет менять скважности неправильно.
Переписал и запихал все назад п обработчик прерывания. Все ОК.

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

Где-то видел способ измерения длительных импульсов без применения таймеров, а то много стоит процессор на прерывании.
Вложения
Тип файла: rar Сравнение мощностей2.rar (2.9 Кб, 353 просмотров)
vitalkalm вне форума   Ответить с цитированием
Старый 21.12.2012, 22:44   #177
Александр
Администратор
 
Аватар для Александр
 
Регистрация: 25.02.2010
Адрес: Латвия, Сигулда
Сообщений: 820
Вес репутации: 10
Александр на пути к лучшему
По умолчанию

vitalkalm, на прерывании процессор не стоит. Оно, прерывание, для того и существует, чтобы не тормозить процессор. Весь вопрос в том, как оно использовано. Обработчик прерывания должен быть максимально коротким и не содержать ничего лишнего, кроме измерения длительности. Всё остальное должно делаться за пределами прерывания - все вычисления, изменение длительности ШИМ и т.д. Иначе есть риск превратить МК в улитку. Во время прерывания МК нельзя заставлять ожидать прихода чего-то там.
Александр вне форума   Ответить с цитированием
Старый 21.12.2012, 23:24   #178
vitalkalm
VIP
 
Регистрация: 22.06.2011
Адрес: 123
Сообщений: 19
Вес репутации: 0
vitalkalm на пути к лучшему
По умолчанию

Цитата:
Сообщение от Александр Посмотреть сообщение
vitalkalm, на прерывании процессор не стоит. Оно, прерывание, для того и существует, чтобы не тормозить процессор. Весь вопрос в том, как оно использовано. Обработчик прерывания должен быть максимально коротким и не содержать ничего лишнего, кроме измерения длительности. Всё остальное должно делаться за пределами прерывания - все вычисления, изменение длительности ШИМ и т.д. Иначе есть риск превратить МК в улитку. Во время прерывания МК нельзя заставлять ожидать прихода чего-то там.
Вразумил. Выброшу из прерывания все лишнее. Бьюсь над меню настроек: Изменить количество импульсов на оборот, Максимальное напряжение Аккумуляторов, ограничение тока заряда. Может еще кто что предложит..
vitalkalm вне форума   Ответить с цитированием
Старый 21.12.2012, 23:46   #179
Александр
Администратор
 
Аватар для Александр
 
Регистрация: 25.02.2010
Адрес: Латвия, Сигулда
Сообщений: 820
Вес репутации: 10
Александр на пути к лучшему
По умолчанию

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

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

Очень рекомендую снабжать текст программы подробными комментариями. Это очень пригодится в дальнейшем. И это является хорошим тоном в программировании. Кто-то из великих мира компьютеров когда-то давно сказал так: "Отсутствие комментариев в программе является достаточным основанием для увольнения программиста."
Александр вне форума   Ответить с цитированием
Старый 22.12.2012, 00:26   #180
vitalkalm
VIP
 
Регистрация: 22.06.2011
Адрес: 123
Сообщений: 19
Вес репутации: 0
vitalkalm на пути к лучшему
По умолчанию

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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Вкл.

Быстрый переход

Яндекс.Метрика Рейтинг@Mail.ru Индекс цитирования
Flag Counter

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


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