Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту

Электроника - это просто Теоретические и практические вопросы для начинающих электронщиков.

 
Опции темы
Непрочитано 28.05.2009, 01:12  
NOPROBLEM
Почётный гражданин KAZUS.RU
 
Аватар для NOPROBLEM
 
Регистрация: 11.07.2006
Адрес: Москва, Тушино
Сообщений: 3,709
Сказал спасибо: 793
Сказали Спасибо 994 раз(а) в 552 сообщении(ях)
NOPROBLEM на пути к лучшему
По умолчанию

Ну вот, я уже дома и даже поужинал. Программу писать уже поздно, а вот отчитаться о тех мыслей, что в голову по поводу пришли в самый раз Тем более, что ИМХО все из здесь присутствующих поняли, что надо уважаемому saha74. Я это понял таким образом. Есть у него источник сигнала, размахом от 0 до 1 вольта. Причем он вполне может быть представлен отсчетами с периодом 1с. Ему надо преобразовать его в другой, который представляет собой скользящее среднее с апертурой в 5 минут от исходного с возможно меньшими искажениями. Вполне понятно, что обычная RC цепь для этого не годится. Да и вообще, аналоговая схемотехника при таких временах не применима.
1. Аппаратная часть. Я погорячился, сказав, что на выходе можно обойтись пассивной RC цепью для сглаживания ШИМ в постоянное напряжение. Точнее все было бы нормально, если сделать тактовую 8мГц с соответствующей ей частотой ШИМа. Но в этом случае схема будет кушать не стесняясь и ей потребуется источник, защита от наводок, в общем не наш путь. Наш (ИМХО) таков. Запускаем процессор на 32кГц, он ест при этом 8мкА, берем сдвоенный МСР6042, который кушает 0.6 мкА и делаем на первом активный Саллен второго порядка, а на втором - развязку для нагрузки, поскольку при таких токах любая нагрузка посадит резистивный делитель схемы. Все это можно питать от двух ААА в течении года с лишним, так что даже выключать не надо будет! Саморазряд больше! Напряжение питания от 2,5 до 3 Вольт можно не стабилизировать. По входу будет задействовано менее половины питания, но это не страшно, усреднение слишком велико, чтобы волноваться об этом. По выходу хуже. Там усреднение только превышением постоянной времени фильтра над частотой смены ШИМа, а это 1с. Так что для сохранения дискрета изменения выходного сигнала надо ШИМ почти на весь диапазон делать, а потом делить выходное напряжение перед повторителем так, чтобы максимум 1 Вольт был. Соответственно это должно быть скомпенсировано программным умножением результата. А поскольку питающее напряжение является опорным для АЦП и максимальным для ШИМ, его колебания не скажутся на соответствии входного и выходного напряжений. Вся эта требуха легко в 100рэ укладывается.
2. Программная часть. В прерываниях формирование флага каждую секунду. В основной программе по пришествии флага снятие данных с АЦП, расчет среднего и изменение заполнения ШИМА.
Расчет среднего. Первые пять минут просто добавляем к сумме, делим ее на количество измерений и отправляем на ШИМ. Это для того, чтобы не ждать 5 минут первых результатов
Потом надо все время к результату суммировать деленную на 300 разность нового отсчета и того, который был 300 отсчетов тому назад. Но для этого надо иметь буфер в 300 ячеек. Сейчас это не модно. Вместо старого отсчет можно взять среднее из апертуры, то есть прошлое скользящее среднее. Максимальная ошибка при этом получится менее 0,3%, да и то она всегда будет в сторону, уменьшающую броски результата Получается инерционное звено с постоянной времени в 5 минут, то есть аналог RC.
Вот такие мысли. Вроде все правильно, логично, выполнимо и не обременительно. Завтра посмотрю, что люди скажут и набросаю схему и программку, если не будет чего серьезного против
Реклама:
__________________
От ложного знания к истинному незнанию!
NOPROBLEM вне форума  
Непрочитано 28.05.2009, 13:54  
vouk
Почётный гражданин KAZUS.RU
 
Регистрация: 12.12.2006
Адрес: Минск, Беларусь
Сообщений: 1,247
Сказал спасибо: 98
Сказали Спасибо 78 раз(а) в 55 сообщении(ях)
vouk на пути к лучшему
По умолчанию

Сообщение от NOPROBLEM
...................
2. Программная часть.
.....Потом надо все время к результату суммировать деленную на 300 разность нового отсчета и того, который был 300 отсчетов тому назад. Но для этого надо иметь буфер в 300 ячеек. Сейчас это не модно. Вместо старого отсчет можно взять среднее из апертуры, то есть прошлое скользящее среднее. Максимальная ошибка при этом получится менее 0,3%, да и то она всегда будет в сторону, уменьшающую броски результата Получается инерционное звено с постоянной времени в 5 минут, то есть аналог RC...
Теоретически - это хуже. Усредняя все 300 точек Вы бы имели идеальное интегрирующее звено (на 300 с), именно оно дает нулевую статическую ошибку регулирования, потому что накапливает ее (для исправления). А так Вы будете иметь отклик на скачок возмущающего воздействия, как у RC , которая накапливает, но тут же начинает "забывать" старое Это то, о чем так скромно говорил Falconist.
Практически - это может не иметь большого значения, хотя отклик регулятора (возвращающее воздействие) будет несколько меньше (но не на 0.3%, разница же накопится). Действительно, складывать два числа гораздо проще, чем 300 тем более, что "это теперь не модно"
Но дело может быть не просто в "моде". Не исключено, что такой отклик регулятора даст преимущество в устоичивости в случае импульсных возмущений. Если говорить "на пальцах", то : зачем учитывать скачки которые происходили 5 мин назад и на которые уже давно отреагировано ( пусть и не максимально точно)? Кто старое помянет, тому.. сами знаете что
Так что прошу считать это не возражением, а комментарием
vouk вне форума  
Непрочитано 28.05.2009, 14:24  
vouk
Почётный гражданин KAZUS.RU
 
Регистрация: 12.12.2006
Адрес: Минск, Беларусь
Сообщений: 1,247
Сказал спасибо: 98
Сказали Спасибо 78 раз(а) в 55 сообщении(ях)
vouk на пути к лучшему
По умолчанию

А вообще-то все это действительно относится к настройкам ПИД-регулятора и все это хорошо изучено. Вот попалсь книжка по теории регулирования с интерактивными рисунками:
http://twtmas.mpei.ac.ru/mas/Workshe...ach/index.html
в Маткаде,( причем самого Маткада можно, вроде, и не иметь). Подставляешь в окошки свои параметры и получаешь графики переходных процессов.. Там и устойчивость, и все, что надо.
Но это для специалистов, конечно..
vouk вне форума  
Непрочитано 28.05.2009, 14:43  
NOPROBLEM
Почётный гражданин KAZUS.RU
 
Аватар для NOPROBLEM
 
Регистрация: 11.07.2006
Адрес: Москва, Тушино
Сообщений: 3,709
Сказал спасибо: 793
Сказали Спасибо 994 раз(а) в 552 сообщении(ях)
NOPROBLEM на пути к лучшему
По умолчанию

Сообщение от vouk
Теоретически - это хуже. Усредняя все 300 точек Вы бы имели идеальное интегрирующее звено (на 300 с), именно оно дает нулевую статическую ошибку регулирования, потому что накапливает ее (для исправления). А так Вы будете иметь отклик на скачок возмущающего воздействия, как у RC , которая накапливает, но тут же начинает "забывать" старое Это то, о чем так скромно говорил Falconist.
Прежде чем говорить, что лучше, а что хуже, надо знать точную постановку задачи. Хотя уважаемый saha74 и говорил об интегрировании, не думаю, что он имел в виду такие тонкие различия.
Цитата:
Практически - это может не иметь большого значения, хотя отклик регулятора (возвращающее воздействие) будет несколько меньше. Действительно, складывать два числа гораздо проще, чем 300 тем более, что "это теперь не модно"
Складывать надо было бы не 300, а по прежнему 2 числа, только первое из них надо хранить все 5 минут, а для этого иметь буфер (FIDO, а не стек LIFO) на 300 значений (число неприлично не круглое для буфера). Правда за упрощение придется заплатить. Раз возникшая ошибка при этом способе вычисления не будет устранена никогда и сохранится навечно, складываясь с другими, если они также появятся. В то время как при 300 суммированиях она исчезнет при следующем вычислении.
Что же касается моды, то я к ней, как к явлению объективному в среде технарей отношусь с большим почтением. Технари не склонны к любым новинкам относиться с телячьим восторгом, скорее наблюдается повышенный скептицизм. А уж истинную популярность приобретают действительно полезные приемы.
Цитата:
Если говорить "на пальцах", то : зачем учитывать скачки которые происходили 5 мин назад и на которые уже давно отреагировано ( пусть и не максимально точно)?
Тут может быть полезна и другая трактовка. Флуктуации каждого индивидуального отсчета вносит скачки в оценку. Эти скачки могут иметь какой-то смысл, а могут и не иметь. Если они его имеют, то их надо фиксировать другими методами, более разумными, нежели остаточные флуктуации оценки скользящего среднего. А если не имеют, то надо их "размазать" по апертуре, сделав все веса разными, с огибающей, приближенной к отклику желаемой частотной характеристики. Равномерное сглаживание имеет частотную характеристику вида Sin(x)/x, что несколько хуже гладкой характеристики инерционного фильтра, полученного самым простым методом А для недлинных последовательностей (не более 30, там ведь не только сложения, но и умножения нужны) я формировал неравномерное сглаживание и имел максимально приближенную к прямоугольной частотную характеристику, что заметно улучшало регулирование. А процессору, обычно все равно нечем заняться в ожидании очередного отсчета
__________________
От ложного знания к истинному незнанию!
NOPROBLEM вне форума  
Непрочитано 28.05.2009, 16:50  
vouk
Почётный гражданин KAZUS.RU
 
Регистрация: 12.12.2006
Адрес: Минск, Беларусь
Сообщений: 1,247
Сказал спасибо: 98
Сказали Спасибо 78 раз(а) в 55 сообщении(ях)
vouk на пути к лучшему
По умолчанию

NOPROBLEM:
Цитата:
...Правда за упрощение придется заплатить. Раз возникшая ошибка при этом способе вычисления не будет устранена никогда и сохранится навечно, складываясь с другими, если они также появятся. В то время как при 300 суммированиях она исчезнет при следующем вычислении...
Это настораживает Не означает ли это, что посчитанное таким "цепочечным" образом среднее будет постепенно "дрейфовать" относительно истинного значения и в конце концов перестанет отражать какую-либо объективную реальность? 8O Это нуждается в осмыслении
vouk вне форума  
Непрочитано 28.05.2009, 17:16  
NOPROBLEM
Почётный гражданин KAZUS.RU
 
Аватар для NOPROBLEM
 
Регистрация: 11.07.2006
Адрес: Москва, Тушино
Сообщений: 3,709
Сказал спасибо: 793
Сказали Спасибо 994 раз(а) в 552 сообщении(ях)
NOPROBLEM на пути к лучшему
По умолчанию

Сообщение от vouk
NOPROBLEM:
Цитата:
...Правда за упрощение придется заплатить. Раз возникшая ошибка при этом способе вычисления не будет устранена никогда и сохранится навечно, складываясь с другими, если они также появятся. В то время как при 300 суммированиях она исчезнет при следующем вычислении...
Это настораживает Не означает ли это, что посчитанное таким "цепочечным" образом среднее будет постепенно "дрейфовать" относительно истинного значения и в конце концов перестанет отражать какую-либо объективную реальность? 8O Это нуждается в осмыслении
Именно так! Если при вычислении произошел сбой, и результат получился ошибочным, то следующее вычисление будет использовать его как истинное, и все последующие также
А вот инерционное сглаживание постепенно теряет эту ошибку за счет того, что среднее значение (содержащее эту ошибку) каждый раз, хоть и в малой степени вычитается из результата и заменяется очередным измерением.
Поэтому рекурсивное вычисление скользящего среднего должно начинаться с "честного" его вычисления по всем измеренным значениям. В то время как при вычислении сглаживания о такой "ерунде" даже и не вспоминают, справедливо полагая, что вне зависимости от начальных условий через некоторое время результат будет достаточно близок к среднему.
__________________
От ложного знания к истинному незнанию!
NOPROBLEM вне форума  
Непрочитано 28.05.2009, 17:22  
NOPROBLEM
Почётный гражданин KAZUS.RU
 
Аватар для NOPROBLEM
 
Регистрация: 11.07.2006
Адрес: Москва, Тушино
Сообщений: 3,709
Сказал спасибо: 793
Сказали Спасибо 994 раз(а) в 552 сообщении(ях)
NOPROBLEM на пути к лучшему
По умолчанию

Вот схемка, приступаю к программе

-- Прилагается рисунок: --

__________________
От ложного знания к истинному незнанию!
NOPROBLEM вне форума  
Непрочитано 28.05.2009, 17:47  
vouk
Почётный гражданин KAZUS.RU
 
Регистрация: 12.12.2006
Адрес: Минск, Беларусь
Сообщений: 1,247
Сказал спасибо: 98
Сказали Спасибо 78 раз(а) в 55 сообщении(ях)
vouk на пути к лучшему
По умолчанию

Сообщение от NOPROBLEM
Сообщение от vouk
NOPROBLEM:
Цитата:
...Правда за упрощение придется заплатить. Раз возникшая ошибка при этом способе вычисления не будет устранена никогда и сохранится навечно, складываясь с другими, если они также появятся. В то время как при 300 суммированиях она исчезнет при следующем вычислении...
Это настораживает Не означает ли это, что посчитанное таким "цепочечным" образом среднее будет постепенно "дрейфовать" относительно истинного значения и в конце концов перестанет отражать какую-либо объективную реальность? 8O Это нуждается в осмыслении
Именно так! Если при вычислении произошел сбой, и результат получился ошибочным, то следующее вычисление будет использовать его как истинное, и все последующие также
А вот инерционное сглаживание постепенно теряет эту ошибку за счет того, что среднее значение (содержащее эту ошибку) каждый раз, хоть и в малой степени вычитается из результата и заменяется очередным измерением.
Поэтому рекурсивное вычисление скользящего среднего должно начинаться с "честного" его вычисления по всем измеренным значениям. В то время как при вычислении сглаживания о такой "ерунде" даже и не вспоминают, справедливо полагая, что вне зависимости от начальных условий через некоторое время результат будет достаточно близок к среднему.
Так ведь Вы, как я понял,рекурсивное вычисление и собираетесь использовать?
Дело же не только в возможном сбое, каждое 8-разрядное вычисление дает приличную ошибку. Я понял, что Ваш алгоритм такой: Хсредн.новое = (Хi + Xсредн.предыдущ.*299)/300. Или как?
vouk вне форума  
Непрочитано 28.05.2009, 18:00  
NOPROBLEM
Почётный гражданин KAZUS.RU
 
Аватар для NOPROBLEM
 
Регистрация: 11.07.2006
Адрес: Москва, Тушино
Сообщений: 3,709
Сказал спасибо: 793
Сказали Спасибо 994 раз(а) в 552 сообщении(ях)
NOPROBLEM на пути к лучшему
По умолчанию

Сообщение от vouk
Сообщение от NOPROBLEM
Поэтому рекурсивное вычисление скользящего среднего должно начинаться с "честного" его вычисления по всем измеренным значениям. В то время как при вычислении сглаживания о такой "ерунде" даже и не вспоминают, справедливо полагая, что вне зависимости от начальных условий через некоторое время результат будет достаточно близок к среднему.
Так ведь Вы, как я понял,рекурсивное вычисление и собираетесь использовать?
Дело же не только в возможном сбое, каждое 8-разрядное вычисление дает приличную ошибку. Я понял, что Ваш алгоритм такой: Хсредн.новое = (Хi + Xсредн.предыдущ.*299)/300. Или как?
Совершенно верно! В этом случае ошибка также (и от сбоя и от округления) сохраняется достаточно долго, но не вечно. А вот в рекурсивном алгоритме скользящего среднего:
Хсредн.новое = Xсредн.предыдущ. + (Хi - X(i-300))/300. эта ошибка будет храниться вечно.
А вот ошибок округления ИМХО боятся не стоит, они центрированы и при накоплении взаимно уничтожаются.
Кстати, очень большое значение имеет то, как считать. Например А=(А/300)*299 вообще не посчитается, А=А*299/300 если и посчитается, то даст приличную ошибку. В то время, как А=А-А/300 не вызовет существенных затруднений Разве что, если бы вместо 300 было 256, то объем вычислений сократился бы в десятки раз
__________________
От ложного знания к истинному незнанию!
NOPROBLEM вне форума  
Непрочитано 30.05.2009, 15:17  
NOPROBLEM
Почётный гражданин KAZUS.RU
 
Аватар для NOPROBLEM
 
Регистрация: 11.07.2006
Адрес: Москва, Тушино
Сообщений: 3,709
Сказал спасибо: 793
Сказали Спасибо 994 раз(а) в 552 сообщении(ях)
NOPROBLEM на пути к лучшему
По умолчанию

Ну вот, отладил программку. К сожалению, это заняло чуть более получаса В основном из за того, что результат суммирования значений не умещается в интеджер и пришлось еще один байт пристраивать. В результате округлений ошибка иногда достигает единицы выходного значения (0,5%). И еще одна трабла, файл не желает компилироваться, поэтому пока ни ХЕКС ни КОФФ не выкладываю. Пробую разобраться самостоятельно, без МатриксМультиМедиа. У меня хоть и лецензионный ФС, но поддержка у них в викенд не работает

Прикрепленный файл: 4870739.zip
__________________
От ложного знания к истинному незнанию!
NOPROBLEM вне форума  
 

Закладки
Опции темы

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

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

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

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Триггер на несколько секунд rewacom Электроника средств транспорта 9 30.06.2009 11:47
Надо с 12 вольт сделать 40 вольт!! AlexorLife Электроника средств транспорта 8 17.04.2009 21:59
Таймер на 0-30 секунд дискретностью 0,1 секунд barbuss Микроконтроллеры, АЦП, память и т.д 14 15.05.2008 01:10
Надо с 12 вольт сделать 40 вольт!! AlexorLife Источники питания и свет 29 20.03.2008 19:32


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


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