|
Описание: Можно ли сделать дом теплоаккумулятором. Как измерять скорость ветра |
|
|
Константин
Основоположник
Откуда: деревня в рег.№33
Покинул форум
|
|
|
|
старый пишет:
а чтобы сесть с гостями за стол, надо выпить- "сим-сим, откройся!", |
Ну дядя... тут и закрывать незачем... Вон у меня на аватаре - это я на кухне сижу.. Все кто приходят - нижняя челюсть до пола - "ну ни хрена у тебя бар... во всю стенку... ". Я - "ребята, год в "автономке" запросто продержусь.. А там и новый урожай..."
Чего там прятать? Всего то литров 300 всякого разного...
|
|
В начало |
Всего записей: 13871 Дата рег-ции: Янв. 2008 Отправлено: 25 Февраля, 2010 - 19:40:55 |
|
старый
постоянная прописка
Откуда: Нижний Новгород
Покинул форум
|
|
|
|
Поздно, бар готов. Опять же, рюмки-стаканы не пылятся. |
|
В начало |
Всего записей: 170 Дата рег-ции: Дек. 2009 Отправлено: 25 Февраля, 2010 - 19:56:27 |
|
Гость
Прекратил участие в работе форума
|
|
|
|
Константин пишет:
По сути - нужен примитивный регистратор - сепаратор количества импульсов...
Вот не нашелся человек, который ... сделал бы такую феньку... |
Константин, в принципе не вижу препятствий, кроме лени... и иногда занятости- но это у меня непериодически бывает...
AVRок у меня дома много- как-то прикупил кучку- так было дешевле.
Программатор есть, система программирования установлена...
Сформулируйте задачу, решим совместно...
Так лучше в том плане, что сам будешь лениться- а так все-таки обещал товарищу...
Но за Вами источник импульсов и все "тарировки". Ну и первоначальное ТЗ (согласуем).
Про деньги не говорим. Развлекаемся.
|
|
В начало |
Отправлено: 04 Марта, 2010 - 14:26:54 |
|
Константин
Основоположник
Откуда: деревня в рег.№33
Покинул форум
|
|
|
|
Burrdozel пишет:
Сформулируйте задачу, решим совместно... |
Уф... уже устал, но ладно, "сформулирую" еще раз, 27-й...
Анемометр представляет собой шаговый моторчик, который генерит синусоиду.
Частота как то зависит от скорости ветра (не факт, что линейно...), но как то зависит. быстрее ветер - больше частота...
Мы ее можем сделать меандром или прямоугольным потоком с какой то скважностью, поделить и пр...
Это уже как бы НЕ задача микроконтроллера...
Задача МК такая...
На его вход поступают импульсы прямоугольные переменной частоты.
МК имеет 15-20-30 ячеек памяти (счетчиков) , желательно 3-х байтных.
МК подсчитывает число импульсов за 3-5 секунд (каждые 3-5 секунд) и в соответствии с полученным числом делает инкремент соответствующего счетчика.
Например: разбиваем "диапазоны" счетчиков через 50 (условно).
т.е. 0-50-100-150-200-...... 950-1000
1) от 0 до 50
2) 51 - 100
3) 101 - 150
4) 151 - 200
5) 201 - 250
....
20) 951 - 1000
Если мы за время замера (3-5 сек) насчитали 183 импульса, то счетчик №4 делает операцию: Содержимое = содержимое + 1
Т.е. инкремент счетчика...
Ну и соответственно, мы должны иметь возможность увидеть возможность состояния счетчиков (индикатор или слив на комп).
Вот собственно и все...
Burrdozel пишет:
Но за Вами источник импульсов и все "тарировки". |
Естественно... Но поскольку моторчики как правило "случайные" и могут за 1 оборот генерить и 50 импульсов и 250... И пропеллеры тоже всякие могут быть, с разной быстроходностью и пр.
А заморачиваться с делителями не хочется, разве что в особом положении...
То проще наверное "делить" путем предустановки времени отсчета.
Т.е. "медленные моторчики пусть считают каждые 10 секунд, а быстрые - по 1 (или 2-3-5...) Это и будет, собственно делитель частоты.
Ну а потом уже обработка результатов на основе тарировки - это дело особое. Главное получить эту самую гистограмму расклада ветра по "счетчикам". А уж после на основе тарировки - станет ясно, какие ветра и скоько дуют.
Да, для тарировки желателен режим режим непосредственного показа числа импульсов. Т.е. тоже самое время отсчета, но показывалось, сколько импульсов за этот период насчиталось...
|
|
В начало |
Всего записей: 13871 Дата рег-ции: Янв. 2008 Отправлено: 04 Марта, 2010 - 15:40:13 |
|
Гость
Прекратил участие в работе форума
|
|
|
|
Все это больше похоже на ответ, чем на задачу
К ТЗ в моем понимании относится только последняя фраза.
Давайте копать в этом направлении. Что Вы хотите видеть, какой функциональностью должен обладать "приборчик".
Кстати, синусоида или меандр - думаю, все равно. Лишь бы дребезга не было. |
|
В начало |
Отправлено: 04 Марта, 2010 - 17:32:44 |
|
Константин
Основоположник
Откуда: деревня в рег.№33
Покинул форум
|
|
|
|
Burrdozel пишет:
Все это больше похоже на ответ, чем на задачу |
Я написал "что нам надо".
А надо считать количество импульсов за некоторое время и "двигать костяшку" на нужной проволочке, чей номер совпал номером диапазона, куда попало полученное при измерении число.
Блок-схема программы выглядет так (лень рисовать, напишу словами)
0. Задать время отсчета (в секундах или мс...)
(т.е. время, в течении которого будут считаться импульсы каждый отсчет)
1. Начало отсчета времени
Считаем импульсы на входе. (как там на МК это сделано - не знаю, циклом или какая то фишка есть...)
Выводим их число на индикатор
Конец времени...
2. Число импульсов больше 50?
Нет - Яч.Пам. №1= ЯП№1+1 и на п. 1
Да - идем дальше
3. Число импульсов больше 100?
Нет - Яч. Пам. №2 = ЯП№2+1 и на п. 1
Да - идем дальше
.......
21. Число импульсов больше 1000
Нет - ЯП№20 = ЯП№20 + 1 и на п. 1
Да - Тут мы никогда не будем...
(поскольку мы берем скорости ветра с охрененым запасом, дальше 15-го сравнения не пройдет никогда - скорее разрушится анемометр).
Ну, естественно обнуление и вывод по очереди всех счетчиков по команде или кнопке... и пр радости.
Но все примитивно... Больше сервиса - больше ошибок...
|
|
В начало |
Всего записей: 13871 Дата рег-ции: Янв. 2008 Отправлено: 04 Марта, 2010 - 19:19:31 |
|
Olegus
постоянная прописка
Откуда: Москва
Покинул форум
|
|
|
|
Я тут потихоньку тоже начал заниматься анемометром. Набросал алгоритмы и завтра забираю в чип и дипе все детальки (даже корпус модный заказал ). Нарисовались некоторые технические сложности, но пока все решаемые.
Действительно, ячейки для сумм должны быть трехбайтные и с учетом всяких констант памяти ПЗУ PICа не хватает. Пришлось вводить внешнюю ПЗУ.
Ячейки для памяти количества импульсов за 5 сек думаю хватит 2 байтов (65535 импульсов).
На работе валялся старый матричный принтер - вытащил из него 2 шаговых двигателя - попробую покрутить их посмотреть что там осциллограф покажет. |
|
В начало |
Всего записей: 197 Дата рег-ции: Дек. 2009 Отправлено: 05 Марта, 2010 - 02:26:09 |
|
Константин
Основоположник
Откуда: деревня в рег.№33
Покинул форум
|
|
|
|
Olegus пишет:
ячейки для сумм должны быть трехбайтные и с учетом всяких констант памяти ПЗУ PICа не хватает. |
Как много не хватает?
Если замер делать с усреднением 5 секунд, то 2-х байтной ячейки хватит
на 90 часов, если писать только в 1 ячейку. Но поскольку ветер "пляшет" - реально м.б. часов 200 (таких устойчивых ровных ветров у нас нет...)
Если увеличить усреднение до 10 сек. То соответственно и время накопления увеличится до 400-500 часов.
На заведомо известные средние ветра (3-5 м) можно сделать 3-х байтные...
Конечно внешняя ПЗУ решает все проблемы. Копить может годы...
Olegus пишет:
за 5 сек думаю хватит 2 байтов |
Не хватит... За час 3600/5 = 720 замеров. 2 байта - 91 час всего... А 3 байта - уже 23300 (уже 3 месяца...).
Хотя, конечно если снимать показания хотя бы раз в неделю - то хватит и 2...
Вообще говоря, 20 - это с офигенным запасом взято, на случай штормов, когда крыши сносит.
Реально - достаточно 10-15...
Во-первых - совсем слабые ветра (до 3 м/с) нас не интересуют. Они не несут энергии сколь-нибудь значимой и даже ветряк не стронут. Это считается штилем.
Ветра сильнее 15 метров - надо прятаться... Даже 10-12 - редко-редко...
Поэтому если штатной памяти не хватает "чуть-чуть", то можно скорректировать ТЗ...
Olegus пишет:
что там осциллограф покажет. |
Синусоиду...
|
|
В начало |
Всего записей: 13871 Дата рег-ции: Янв. 2008 Отправлено: 05 Марта, 2010 - 10:16:24 |
|
Olegus
постоянная прописка
Откуда: Москва
Покинул форум
|
|
|
|
Техзадание менять не нужно. Использовать внешнюю ПЗУ все равно придется.
У PICa 65 байт ПЗУ. А у нас на каждую скорость нужно хранить:
1. Значение скорости - 1 байт (00,0 - 25,5),
2. Количество импульсов за 5 сек - 2 байта (0-65535)
3. Итоговая сумма (по максимуму +1 за каждые 5 сек) - 3 байта (0-16.7 млн)
Итого: 6*15=90 байт.
Я уже купил внешнюю ПЗУ 2048 байт (протокол I2C) - 30 руб., так что это не очень обременительно, да и усложнение программы небольшое.
|
|
В начало |
Всего записей: 197 Дата рег-ции: Дек. 2009 Отправлено: 05 Марта, 2010 - 17:42:10 |
|
Константин
Основоположник
Откуда: деревня в рег.№33
Покинул форум
|
|
|
|
Olegus пишет:
тогда оно конешно...
Тогда лучше уж по 4 байта на каждую скорость... 1 байт - значение и 3 - счетчик.
|
|
В начало |
Всего записей: 13871 Дата рег-ции: Янв. 2008 Отправлено: 05 Марта, 2010 - 17:45:29 |
|
Гость
Прекратил участие в работе форума
|
|
|
|
Ну примерно все правильно...
Только есть все-таки принципиальные моменты (не отраженные в ТЗ)
1. Отсчеты времени штиля тоже надо считать. Иначе не получите достоверную картину распределения ветра при обработке сведений. Ну или надо будет обрабатывать врукопашную: считать общее количество учтенных интервалов, общее затраченное время выразить в 5-сек интервалах (по журналу, который велся параллельно неленивым Константином), вычитать первое из второго, с некоторой долей вероятности считать это время как время штиля.
Ну или, как вариант:
2. Иметь реальное время в системе- с датой, временем и записывать (суммировать) длительность периодов (хотя бы в количестве тех же 5-секундных интервалов), когда был штиль.
Остальное понятно-
Константин пишет:
Больше сервиса - больше ошибок... |
Но Вы должны написать в ТЗ самое главное: что Вы захотите просматривать текущие значения, не останавливая измерений.
(Добавление)
Olegus пишет:
1. Значение скорости - 1 байт (00,0 - 25,5), |
А это зачем? Вы что, не знаете, в какой карман деньги кладете? Тем более что сама цифра не имеет вообще никакого значения, она очень условная.
Olegus пишет:
2. Количество импульсов за 5 сек - 2 байта (0-65535) |
И это не надо в каждой записи. Это же просто цифра, которая превращается в инкремент того или другого счетчика (одного из 21). Она одна, общая для всех.
3 байта- это максимальное число 16.777.215.
За год будет 5-секундных интервалов
12*60*24*365=6.307.200
В каждые три байта помещается весь период наблюдений за год. С запасом.
Итого надо 3*21 = 63 байта на ВСЮ информацию, включая штиль, и если крайне необходимо использовать ПЗУ для сиюминутных подсчетов, еще три байта. Всего 66.
Действительно, не хватает 1 байта. Надо попросить Константина изменить ТЗ и сделать не 21 интервал скорости ветра, а 20. Тогда Вы поместитесь в PIC.
Правильное ТЗ- половина успеха.
На AVRке на борту 512 байт ЭСППЗУ, а оперативные данные (текущие значения счетчика) прекрасно обработаются на регистрах.
А еще есть встроенный компаратор и 16-битный счетчик... Так что все вообще может быть сделано на одном корпусе.
Правда, я думаю, что предварительный формирователь-ограничитель импульсов все-таки нужен. И, возможно, простой входной делитель количества импульсов на простом логическом счетчике - чтобы не переписывать каждый раз программу, а просто поделить количество входных импульсов на два или четыре... Простым переставлением перемычки.
(Добавление)
И все-таки, Константин, прикиньте, сколько импульсов будет в реале при ветре 1м/с? 2? 3? и т.д.
Я считаю, что до тысяч импульсов там дело не дойдет.
Радиус вертушки анемометра сколько? сантиметров 20? 0,2м, значит.
При скорости ветра 10 м/с вертушка движется, допустим (знаю, что отстает, но считаем максимум), с той же скоростью (по окружности).
Значит, за секунду она совершит 10/(2*Пи*0,2м) = 7,96 оборотов.
Это сколько импульсов? Примерно 8 (или по количеству полюсов шагового двигателя в 20-30 раз больше)? То есть 160-240? Тогда за пять секунд - 800-1200 максимум. Это для свежего ветра.
Для более слабого- в разы меньше, да еще учесть, что скорость анемометра "несинхронная" со скоростью ветра... То есть отстает- и чем слабее ветер- тем больше отстает...
(Отредактировано автором: 09 Марта, 2010 - 14:51:54)
|
|
В начало |
Отправлено: 09 Марта, 2010 - 14:21:37 |
|
Константин
Основоположник
Откуда: деревня в рег.№33
Покинул форум
|
|
|
|
Burrdozel пишет:
1. Отсчеты времени штиля тоже надо считать. Иначе не получите достоверную картину |
А никто и не спорит, что надо считать.
Просто за штиль принимается не "вот прямо что б точно ноль", а и очень слабый ветер. Например до 2-х м/с.
Burrdozel пишет:
Вы захотите просматривать текущие значения, не останавливая измерений. |
Не захочу... Если записи за "месяц" - потеря статистики за 3 минуты - не потеря...
Burrdozel пишет:
Olegus пишет:1. Значение скорости - 1 байт (00,0 - 25,5),
А это зачем? |
Вот именно... Значение скорости - это НОМЕР ячейки памяти. Намеряли скорость - прибавили "1" в ячейку, чей номер совпал со скоростью...
Burrdozel пишет:
Надо попросить Константина изменить ТЗ и сделать не 21 интервал скорости ветра, а 20. |
Ребята, да хватит вообще 15-ти!!! За глаза хватит!!!
3 х 15 = 45 байт!!!
Burrdozel пишет:
что предварительный формирователь-ограничитель импульсов все-таки нужен. И, возможно, простой входной делитель количества импульсов на простом логическом счетчике - чтобы не переписывать каждый раз программу, а просто поделить количество входных импульсов на два или четыре... |
да не вопрос вообще...
Правда проще всего "делить" изменением времени замера. Брать не 5 секунд, а 2, или 10... Чем там оно задается?
Но и аппаратно счетчик-делитель хоть до 16 поставить - тоже вобщем не проблема.
Burrdozel пишет:
И все-таки, Константин, прикиньте, сколько импульсов будет в реале при ветре 1м/с? 2? 3? и т.д. |
Это зависит от используемого моторчика и пропеллера (вертушки). Есть моторчики с 200 полюсами (он на 1 оборот 200 периодов синусоиды генерит, есть и 100 и 50...
А сколько конкретно - хрен прескажешь...
Но скорее всего, от делителя (и серьезного) на входе - не отвертеться.
Но это не проблема.
Burrdozel пишет:
Я считаю, что до тысяч импульсов там дело не дойдет. |
Ну за 5 секунд запросто может дойти... Ну ладно, поделим. Будем считать, что не дойдет.
САМИ Установите ограничения - "не более 255 (ХХХ) импульсов за период измерения. Или меняйте моторчик... "
Burrdozel пишет:
Радиус вертушки анемометра сколько? |
Это вообще никакого значения не имеет...
Если под подсчет импульсов (переменную) 2 байта выделить - подойдет вообще любой моторчик для самого сильного ветра... 65000 импульсов.
|
|
В начало |
Всего записей: 13871 Дата рег-ции: Янв. 2008 Отправлено: 09 Марта, 2010 - 15:51:07 |
|
Гость
Прекратил участие в работе форума
|
|
|
|
Константин пишет:
И я к такому же мнению пришел, просто тихонько подводил Вас к ответу...
Константин пишет:
Но и аппаратно счетчик-делитель хоть до 16 поставить - тоже вобщем не проблема. |
К тому же он будет формировать качественные импульсы. Чтобы микроконтроллер на сжечь при сильном ветре .
Константин пишет:
под подсчет импульсов (переменную) 2 байта выделить |
Это не проблема, у меня как раз в МК счетчик двухбайтный, считает импульсы со входа.
Константин пишет:
за штиль принимается не "вот прямо что б точно ноль", а и очень слабый ветер. Например до 2-х м/с. |
Это понятно, интервалы. 0-2, 2-3, 3-4, 4-5, 5-6, 6-7, 7-8,...,19-20. Но чтобы их было 15!
Константин пишет:
Ну за 5 секунд запросто может дойти... Ну ладно, поделим. Будем считать, что не дойдет.
САМИ Установите ограничения - "не более 255 (ХХХ) импульсов за период измерения. Или меняйте моторчик... " |
Да все можно сделать. Например, настройки границ интервалов (в импульсах). Тогда в ТЗ добавляется настроечный режим, в котором вводятся просто цифры с количеством импульсов, они же потом будут границами. Их будет 15 чисел.
Конечно, лучше бы их значение было не более 255, чтобы работать с однобайтными операциями. Но это не проблема, двухбайтные тоже не сильно затормозят работу. При тактовой частоте 8 или 16 МГц .
Итак, складывается ТЗ:
Считаем импульсы. При попадании в определенный интервал инкрементируем соответствующий трехбайтный счетчик.
Сервис:
1. Назначение интервалов.
2. Просмотр значений трехбайтных счетчиков (еще надо придумать, как эти значения показывать- три байта в шестнадцатиричном виде это некрасиво...а в десятичном сильно длинно...)
3. Режим (кнопка) удаления результатов
4. Результаты не должны удаляться при сбое питания, останове работы,
перезапуске счета, появлении питания.
5.При перезапуске питания счет должен продолжаться.
Как-то так?
(Отредактировано автором: 09 Марта, 2010 - 16:27:53)
|
|
В начало |
Отправлено: 09 Марта, 2010 - 16:23:10 |
|
Константин
Основоположник
Откуда: деревня в рег.№33
Покинул форум
|
|
|
|
Burrdozel пишет:
ихонько подводил Вас к ответу... |
Что я, лошадь, что ли, что б меня подводить... Что 15, что 20 - цифры из пальца. Про 15 я уже раз пять писал, что уже ховацца надо на 15, а не ветер мерять...
Burrdozel пишет:
Чтобы микроконтроллер на сжечь при сильном ветре . |
Шаговик сразу начинает качественные импульсы гнать и амплитуда их практически не меняется от скорости. Синусоида там - конфетка. а не синусоида... Так что поставить диод и транзистор в позе "ключика" - будет меандр - заглядение...
Burrdozel пишет:
меня как раз в МК счетчик двухбайтный, считает импульсы со входа. |
Ну так это пестня. а не МК...
Burrdozel пишет:
Скорости - да. Ну если импульсов море, то выглядеть это будет
0-370, 371 - 620, 621 - 850. и т.д.
Так как зависимость "кол-во импульсов в интервале измерения - скорость ветра" будет нелинейная, 100% и надо бы кол-во импульсов - границ интервалов как то задавать при настройке и тарировке анемометра... Что бы хотя мы "метровой" точности добиться...
Burrdozel пишет:
Да все можно сделать. Например, настройки границ интервалов (в импульсах). Тогда в ТЗ добавляется настроечный режим, в котором вводятся просто цифры с количеством импульсов, они же потом будут границами. Их будет 15 чисел. |
Вот ну прямо совершенно верно!!!
И этого - достаточно. Эти 15 чисел зададут и диапазон измерений, и точность.
Burrdozel пишет:
При тактовой частоте 8 или 16 МГц . |
Давайте 8 Мгц. У меня кварцев на 8 Мгц - мешок. Если что то родиться - буду раздавать желающим. А то и деть некуда и выкинуть жалко...
Цитата:
Считаем импульсы в течении определенного интервала времени. Желательно его тоже как то задавать. Это будет и делителем и позволит точность устанавливать
При попадании в определенный интервал, инкрементируем соответствующий трехбайтный счетчик.
Сервис:
0. Назначение времени, в течении которого считаются импульсы.
1. Назначение интервалов.
2. Просмотр значений трехбайтных счетчиков (еще надо придумать, как эти значения показывать- три байта в шестнадцатиричном виде это некрасиво...а в десятичном сильно длинно...)
Это не имеет значения. Раз в год можно и 16-тиричичную кракозябру в десятичную перевести. Ручками... На край - программ перевода в сети есть наверное... Лишь бы хоть что то было...
3. Режим (кнопка) удаления результатов.
"Ресет" - это святое...
4. Результаты не должны удаляться при сбое питания, останове работы,
перезапуске счета, появлении питания.
5.При перезапуске питания счет должен продолжаться.
Как-то так? |
Одобрям-с!
|
|
В начало |
Всего записей: 13871 Дата рег-ции: Янв. 2008 Отправлено: 09 Марта, 2010 - 17:54:20 |
|