Вот такое дурацкое название решил дать теме.
Возможно кто-то еще захочет поделиться "этапами большого( или не очень) пути".
======ВСТУПЛЕНИЕ============
Я давно всех достал постоянным упоминанием про мой любимый автобус - кемпер. И уже писал, что заменил в отопителе родной вентилятор на восьмерочный (от ВАЗ2108). Разница велика - восьмерочный сильно мощнее и мощность разная у купленных в разных местах. Похоже запчасти на русавтпром делают в китайских и турецких сараях (не дворцах! ;)) ). Как следствие - пришлось заменить IRF4905 (P-канальный сильноточный МосФет) на два в параллель, да ещё вживить драйвер TC4420, иначе на транзисторе можно было варить кофе.
Но печка все равно сгорела :(( в прошлогоднем выезде на Селигер. Турбина на восьмерочной печке пластиковая и если отопитель работает от газа и только на горячуу воду, без раздува, то воздух около турбины получается слишком горячим для совково-китайско-турецкого пластика.
Понял я причину только сейчас, когда стал приделывать еще одну печку от 2108. Эта имеет надпись на корпусе "80Вт", но нагло жрет 20А! Не 8, а 20 итиеёмать! С такой наглостью плата управления вообще не захотела её крутить - вылетает с ошибкой по ограничению тока.
======НАЧАЛО ПРО АРДУИНО============
Следовательно придется городить промежуточный контроллер!
Конечно нужно выкинуть срань на рассыпухе (таймер 555, десяток компараторов и делитель частоты) и сделать нормальный контроллер, но мне хочется поехать уже в июне куда-нибудь. Нет времени на разработку - все-таки газ и я хорошо знаю, как нужно проектировать безопасность... я же не хочу преобразовать кемпер в крематорий?
Следовательно пока оставляем весь контроллер с контролем безопасности и работаем только с вентилятором. То есть принимаем ШИМ управления, анализируем, добавляем Даллас на температуру около турбины и генерим свой ШИМ, чтобы не оху..л датчик тока в контроллере и чтобы покрутить вентилятор на разгон слишком горячего воздуха при работе только на воду.
Сложность в том, что ШИМ в родном контроллере - примерно 20КГц. Очень непросто измерить скважность на 20КГц! Конечно через инпут капча таймера1, но вход-выход в прерывание занимает 4-5мкс, если делать максимально корректно:
01 | volatile uint16_t lastICR = 0; |
02 | volatile uint16_t hLen = 0; |
03 | volatile uint16_t lLen = 0; |
25 | ISR (TIMER1_CAPT_vect) { |
30 | lLen = ICR1 - lastICR; |
34 | hLen = ICR1 - lastICR; |
37 | TCCR1B = r ^ 0b01000000; |
Вот такое прерывание длится более 72 тактов. Листинг прилагать не стану. Оптимизатор все сделал "по уму", выкинув все, что можно, но все равно долго!!!. А я хочу поймать даже 10% ШИМ на 20КГц. В таком виде не ловит ниже 30%.
Выход найден! Сделать прерывание совсем маленьким не читать-писать из него ничего, длиннее байта!
1 | volatile uint8_t indICR = 0; |
2 | volatile uint8_t listICR[256]; |
4 | ISR (TIMER1_CAPT_vect) { |
5 | listICR[indICR++] = ICR1L; |
Накидаем дерьма в циклический массив и потом проанализируем. Еще момент: если ловить 3-5мкс, то придется на время измерений останавливать таймер0, который миллис считает, шоп не мешался под ногами.
Грубо вот анализатор ШИМа, который может измерять импульсы до 3мкс до 127мкс. В мой диапазон попадает. Верхнее ограничение - просто я беру только нижнюю половинку ICR1 - ICR1L, то есть могу измерять до 255 тиков, с предделителем на 8 и 16МГц тактовой выходит как раз 127 мкс.
ЩА вычищу от ненужных следов датчика температуры и кусков отладки и покажу:
(тут вывод на 1602 просто потому, что проверять мне все это в автобусе удобнее с экранчиком)
01 | #include <avr/interrupt.h> |
05 | #include <LiquidCrystal_I2C.h> |
07 | LiquidCrystal_I2C lcd(0x27, 16, 2); |
09 | volatile uint8_t indICR = 0; |
10 | volatile uint8_t listICR[256]; |
12 | ISR (TIMER1_CAPT_vect) { |
13 | listICR[indICR++] = ICR1L; |
34 | static uint32_t om = millis(); |
35 | static uint32_t om1 = millis(); |
36 | uint32_t nm = millis(); |
37 | static char s[16] = " " ; |
48 | for (uint16_t i = 1; i < 241; i++) { |
49 | auto d = (uint8_t)(listICR[i] - listICR[i - 1]); |
70 | if ( nm - om > 1000) { |
72 | int fr = ( int )(2000 / (h + l)); |
73 | int frd = ( int )(20000 / (h + l)) % 10; |
75 | snprintf(s, 15, "%2d.%1dKHz %3d%%" , fr, frd, ( int ) (100 * h / (h + l))); |
============================
если какие-то гадости вылезут при генерации сигнала - потом допишу. TC4420 должен понимать управление в 0-5В, без дополнительного транзистора.
Кстати не до конца решен вопрос о входе ШИМа сигнала. У меня дома нет высокочастотной оптопары, только 817, и те с али :((, на на них 20КГц завести никак невозможно. Придется полагаться на делитель, но сигнал я буду брать с платы контроллера, там все стабилизировано сто раз, сигнал, сами понимаете 0-12В. Считать придется на 0-15В. Всё воскресенье подбирал варианты прерывания, чтобы эта зараза измеряла заполнение от 5% на 20КГц!!! Но победил. Пойду водку жрать!
А вотку мне
до первой звезды... тьфу ... три дня до и три дня после прививки низзя. Завтра как раз пойду вторую серию ставить.Везет вам)).
Мы с женой сегодня ездили "домик в деревне" в порядок приводить, который пользуем как летний точек под пасеку. Приехали и прозрели. Трава по пояс (жене), подставок под ульи не видно. 5.5 литров бензина сжег в мотокосе (кто знает, тот поймет). Самое обидное - Ардуину там присобачить некуда...))
Сейчас сижу и думаю - как я 30 лет назад ту же работу с помощью топора, ножовки и ручной косы делал, а вечером еще и в блуд мчался?
... а вечером еще и в блуд мчался?
никаких жрать, блуд и спать? ))) PS из анекдота
PPS Мёд с одуванчика будет? я бы прикупил баночку 3-х литровую
PPS Мёд с одуванчика будет? я бы прикупил баночку 3-х литровую
Теоретики пишут, что он существует. Практиков не встречал.
Не ну AVR и всё такое, но как же блюпил? Там вообще не надо ни на что заморачиваться, просто читаешь ШИМ в прерывании по захвату двух фронтов. И никаких разумных ограничений на частоту. Да и посчитать необходимый и выдать тоже просто.
Не ну AVR и всё такое, но как же блюпил? Там вообще не надо ни на что заморачиваться, просто читаешь ШИМ в прерывании по захвату двух фронтов. И никаких разумных ограничений на частоту. Да и посчитать необходимый и выдать тоже просто.
Конечно думал и реализация проще, но остановили 3.3В. Сопрягать сложнее, выход уже не уверен, что можно напрямую к драйверу TC4420 подключать. Тут проверять надо. По ДШ можно, но я всегда опасаюсь околопороговых уровней.
PPS Мёд с одуванчика будет? я бы прикупил баночку 3-х литровую
Теоретики пишут, что он существует. Практиков не встречал.
Диабет меня подкосил, а так по меду я был большой любитель! Но после адыгейского меда, где и чистая липа и горный каштан с кучей горчака... весь мед средней полосы уже воспринимаешь как... ну патока такая... не в обиду. По липе еще башкиры - молодцы! Не ленятся ульи к медосбору переставлять, чтобы пчела только липу собирала, без мусора.
Диабет меня подкосил, а так по меду я был большой любитель!
Мёд на диабет не влияет. Там фруктоза вместо сахара. Я ем каштановый мёд (горький) и луговой, Алтайского разнотравья (оч. вкусный). На сахарометре поедание мёда увеличивает показания на 1-2 единицы, т.е. нестрашно. Кусок рафинада увеличивает на 8-10 сразу после приёма. :)
А вапще, сахар 11 для меня нормальный. Наерна, потомушто я мало пью... :)
PPS Мёд с одуванчика будет? я бы прикупил баночку 3-х литровую
Теоретики пишут, что он существует. Практиков не встречал.
скажу больше я откушивал, было целое ведро оного, засахаривается плохо, за 10 лет до состояния очень густой сметаны, по вкусовым качествам весьма приятен, по цвету слегка зеленоват, в сторону как с будяка..., а с чего несёт в ваших краях? В наших самый могучий для суточного приноса (24кг) - акация, Ставропольский край, Нефтекумский район, аул Махмуд-Мектеб, там её тысячи гектар один Русский генерал посадил
PS извиняюсь за оффтоп
А вапще, сахар 11 для меня нормальный. Наерна, потомушто я мало пью... :)
ну так это не секрет, что алкоголь снижает сахар в крови
Но после адыгейского меда, где и чистая липа и горный каштан с кучей горчака... весь мед средней полосы уже воспринимаешь как... ну патока такая... не в обиду. По липе еще башкиры - молодцы! Не ленятся ульи к медосбору переставлять, чтобы пчела только липу собирала, без мусора.
двух одинаковых медов не бывает, адыгейский не уважаю, совсем, каштан сильно горчит, самый душистый, что я встречал у нас - с фацелии, очень хороший с кориандра, даже с лука не плох, но приторный слегка, а вот с гречки можно напороться, когда пчела на двух корпусах и принос мал часто кормят на ночь сахаром сиропом, органолептически весьма весьма неплох, но это жеж не мёд как бы уже )))
PS может кто знает, отведывал мёд с сибири, режется как кусок сала, белый, ну очень приятен, так и не узнал с чего он, вересковый засахаренный?
Очень интересен нам, как электронщикам, сибирский падевый мед кедрового леса. Он канифолью отдает! ;)) Мне - реально очень нравится. Падь это не нектар, а сахаросодержащиая жидкость от росы и выделений насекомых, типа тли, живущих на дереве. Сосновая падь всегда содержит некоторое количество смолы и сосновой пыльцы, что придает меду скипидарный привкус. И кстати, адыгейский горный каштан мне именно горчаком и нравится, чем горше - тем, для меня, вкуснее. Нужно сказать, а то многие не знают, что горчак это лоза такая, обвивающая деревья в горах, которая цветет одновременно и в тех же местах, что и каштан. Именно она придает особенный вкус адыгейскому каштановому меду. Он действительно очень специфичный, не для всех, за то и люблю!
часто кормят на ночь сахаром сиропом, органолептически весьма весьма неплох, но это жеж не мёд как бы уже
Вот это - дилетантство. Пчела все равно обрабатывает корм - сироп или нектар, своими кислотными выделениями и тем инвертирует сахара (учить википедию! ;)) ). Так что чем пчелу не корми - на выходе именно мед, хоть на чистом сахаре! Все остальное - вопросы микродобавок, которые имеет тот или иной нектар или падь или сироп. Они и создают разные вкусы, разную кристаллизацию при засахаривании, разные цвет и запах.
Кстати это и причина того, что растапливать засахаренный мед - не комильфо. Меняется состав сахаров при нагреве. Конкретно увеличивается количество инвертированных, что меняет полностью мед. То есть то, что получилось тоже прикольная сладость, но уже не натуральный мед.
=======================
А по поводу фруктозы или иных изомеров. Диабетику два - похеру какие углеводы жрать. У диабетиков один - важна скорость реакции, так как нужно быстро инсулин ввести, а у меня диабет два, своего инсулина - хоть жопой жри. Поэтому то, что фруктоза медленнее - никакой разницы, хлеб тоже медленнее сахара, и картоха. Их тоже бум жрать?
Я, кстати, сломался ;)) и диету стал соблюдать и инсулин убрал, заменив очень дорогой Кселевией. Скинул 20 кг и сахар привел к 9-10. А то чот стремно стало... ноги потерять до того, как яхту купить! Водку - не бросил, 0.7 с супругой на ужин - это закон! ;))
Кстати с горным, не всё так однозначно, если есть жёлтый рододендрон я бы поостерёгся, ядовит...
У нас не видел, только белый, но говорят, что есть...
Так что чем пчелу не корми - на выходе именно мед, хоть на чистом сахаре!
конечно мёд, только биологическая активность очень маленькая, а таки да, мёд - продукт ферментации "сахаров" пчелиной слюной )))
конечно мёд, только биологическая активность очень маленькая
Поищи активность в акациевом меде, который лет 20 назад очень модный стал... типа "гипоаллергенный" ;)) вообще без вкуса, запаха и смысла!
конечно мёд, только биологическая активность очень маленькая
Поищи активность в акациевом меде, который лет 20 назад очень модный стал... типа "гипоаллергенный" ;)) вообще без вкуса, запаха и смысла!
акация разная, у него нежнейший вкус и запах (говорят что нежней только вересковый), по ME не скажу, в зиму покупаю с разнотравья с высоким МЕ, у друзей, правда пасечники народ своеобразный, но мне везёт, пилот ТУ-95 в прошлом )))
PS сейчас за акациевый выдают с Астраханских камышей, по цвету неотличим, вот он да, другой )))
Вот это - дилетантство.
Да.
Пчела все равно обрабатывает корм - сироп или нектар, своими кислотными выделениями и тем инвертирует сахара (учить википедию! ;)) ).
Инверсия сахарозы в улье происходит за счет фермента инвертаза, который вырабатывают пчелы, орг. кислоты привносятся вместе с нектаром и в этом процессе не играют значительной роли.
Мед как продукт ценен именно наличием микродоз различных веществ (органических и неорганических), которые попадают в мед из нектара (или пади - именно поэтому падевый мед весьма ценится).
Сахароза, пропущенная через пчел - медовый фальсификат. Практически такую же бурду можно получить ( и получают) с помощью синтетической инвертазы. Инверсный сироп широко пользуется в кондитерке.
А это... пчеловики, поведайте - если за год мед выпал в сахар - это фейк или норма?
Люди занимающиеся пчеловодством называются пчеловодами, раньше (и теперь иногда) - пасечниками их кличут. Кристаллизация меда это норма - так и надо, иначе мёд некачественный. Кормить пчёл сахаром с водой - губить их. Это плохо. Люди идут на это от жадности или для спасения гибнущих семей. Лучше подкармливать мёдом или канди.
А вообще для постижения настоящего языка программирования (природного) надо обязательно подержать пчёл. Мужики обычно зреют к этой мысли после 50 :)
Мед в основе - смесь простых сахаров: глюкозы и фруктозы. Но количественно эти сахара зависят от состава нектара, в одних сортах больше глюкозы, в других наоборот. Все растворы смесей простых сахаров в воде склонны к кристаллизации. Поэтому кристаллизация меда - это норма!
Однако чем больше фруктозы в меде, тем медленнее идет кристаллизация. Кроме того на скорость кристаллизации влияет наличие "центров кристаллизации", которыми выступают зерна пыльцы или кристаллики сахара из прошлогоднего, "перезимовавшего" меда, попавшего в свежий, температура хранения еще куча факторов.
Мед, который долго не кристаллизуется , напр., - акация белая, вереск, эвкалипт (фруктозы до 80 %).
Кристаллизуется очень быстро, иногда за неделю - подсолнечник, крестоцветные (рапс, горчица).
Люди занимающиеся пчеловодством называются пчеловодами, раньше (и теперь иногда) - пасечниками их кличут.
Ну, тут большинство - только медоеды, как я понял.
Т.е. некачественный (сахар, пропущенный через пчел) не сахарится?
Честно скажу не знаю - никогда (пока держал пчёл) мысль сделать и отложить на хранение сахарный мёд не приходила :) А на вкус он сладкий, но абсолютно не душистый.
Мёд некачественный, например, если пчёловод его откачал не дав созреть - тогда он может закиснуть (на вкус кисло-сладкий с неприятным запахом хорош для самогона!) или хранил в плохо закрытой таре - мёд легко и быстро впитывает чужие запахи и ароматы (пословица про ложку дёгтя).
Т.е. некачественный (сахар, пропущенный через пчел) не сахарится?
Господа. Давайте я на программистском форуме в теме про минимизацию времени выполнения прерывания попытаюсь развеять некоторые околомедовые мифы))
Органолептически невозможно!!! определить натуральность меда. Все сказки про химический карандаш, першит-непершит в горле,не хочу перечислять, ибо сонм их - это туфта.
Единственный боль-мень приемлемый способ определения натуральности - анализ на оксиметилфурфурол (ОМФ). В природном нектаре его нет, в сахаре из магазина - есть. И в гретом до температуры более 45 град. меде.
Анализ сложен, дорог, ни одна рыночная лаборатория его не делает. Поэтому ну вы поняли.
Ну и основная проблема пчеловодов - не производство меда, а его сбыт. По нормальной цене. Поэтому покупая мед у пчеловода (даже малознакомого), а не у перекупа риск нарваться на фальсификат минимален.
Ну а если решили приобрести бутыль, который предлагает дядька из багажника жигулей в вашем дворе и на 30% дешевле, чем на ближайшем рынке - ну вы просто очень щедрый человек)).
Да я сам-то не сильно мёдом увлекаюсь. Покупаю, забываю в ящике стола, потом нахожу через год уже кристаллизованный.
У нас в последние годы на каждом мероприятии типа сельхозярмарки по 20 продавцов стоит с медом - больше только с текстилем. И каждый говорит, что с собственной пасеки. Все продавцы неместные - им до нас часов 8 ехать как минимум. Не знаю, конечно, какие у них размеры пасек - может и достаточные для того, чтобы цельный год по разным городам возить бочонки с медом и ещё доход получать с такого мероприятия. Вот я и думаю - может нам уже высокомаржинальный медосодержащий продукт толкают...
Поэтому покупая мед у пчеловода (даже малознакомого), а не у перекупа риск нарваться на фальсификат минимален.
не скажи, тесть говорил - последний год, когда я держу пчел будет последним годом когда я ем мёд )))
Т.е. некачественный (сахар, пропущенный через пчел) не сахарится?
Господа. Давайте я на программистском форуме в теме про минимизацию времени выполнения прерывания попытаюсь развеять некоторые околомедовые мифы))
Органолептически невозможно!!! определить натуральность меда. Все сказки про химический карандаш, першит-непершит в горле,не хочу перечислять, ибо сонм их - это туфта.
Единственный боль-мень приемлемый способ определения натуральности - анализ на оксиметилфурфурол (ОМФ). В природном нектаре его нет, в сахаре из магазина - есть. И в гретом до температуры более 45 град. меде.
Анализ сложен, дорог, ни одна рыночная лаборатория его не делает. Поэтому ну вы поняли.
Ну и основная проблема пчеловодов - не производство меда, а его сбыт. По нормальной цене. Поэтому покупая мед у пчеловода (даже малознакомого), а не у перекупа риск нарваться на фальсификат минимален.
Ну а если решили приобрести бутыль, который предлагает дядька из багажника жигулей в вашем дворе и на 30% дешевле, чем на ближайшем рынке - ну вы просто очень щедрый человек)).
Чистейшей воды правда.
Россия потеряла культуру потребления мёда как продукта питания. Сахар этому виной. Труд пчеловода - титанический. 1000-1500 рублей (как сейчас не знаю) за 3 литра это смех.
Да я сам-то не сильно мёдом увлекаюсь. Покупаю, забываю в ящике стола, потом нахожу через год уже кристаллизованный.
У нас в последние годы на каждом мероприятии типа сельхозярмарки по 20 продавцов стоит с медом - больше только с текстилем. И каждый говорит, что с собственной пасеки. Все продавцы неместные - им до нас часов 8 ехать как минимум. Не знаю, конечно, какие у них размеры пасек - может и достаточные для того, чтобы цельный год по разным городам возить бочонки с медом и ещё доход получать с такого мероприятия. Вот я и думаю - может нам уже высокомаржинальный медосодержащий продукт толкают...
Если человек очень серьёзно работает и имеет с пасеки 5 тонн, то может ездить и год. У меня, тунеядца, больше 300 кг в жизни не было !
У нас в последние годы на каждом мероприятии типа сельхозярмарки по 20 продавцов стоит с медом - больше только с текстилем. И каждый говорит, что с собственной пасеки.
Организацией подобных "медовых ярмарок" у нас занимаются в основном люди, исповедующие одно из протестантских ответвлений христианства и не выехавшие на ПМЖ в США. На самом деле они содержат по 100 - 200 пчелосемей (у самих-то семьи большие). Продают свой мед, но если бизнес успешен, ездят по отдаленным селам и скупают мед у местных пчеловодов для перепродажи.
Колхознику чем ехать в город, налоги-шмалоги, продашь-непродашь, выгоднее продать за 40 - 50% от рыночной. Кроме того стационарная пасека, затрат гораздо меньше. Побочка, так скакать.
А на этих выездных ярмарках торг идет довольно бойко. Стадный инстинкт ни кто не отменял.
Вот и получается, что они полупроизводители и полуперекупы. И на пяти лотках торгуют члены одной семьи на один карман, а у покупателя складывается впечатление свободы выбора.
kolyn, т.е. в любом случае, получается, вероятность фейка 50/50, как я понимаю и это невозможно проверить бытовым способом.
Ресселер не может гарантировать, что вендор не намешал сахара, вендор не знает, с чем мешает его продукт реселлер... А цена с учетом возможности картельного сговора - вообще не показатель.
Вендору, если он с колхоза "20 километров до асфальта" бадяжить проку нет, ему бы честное сбагрить хоть за какую деньгу))
Да и не очень он и вендор))
Вендору, если он с колхоза "20 километров до асфальта" бадяжить проку нет, ему бы честное сбагрить хоть за какую деньгу))
Да и не очень он и вендор))
мне об этом сейчас тоже говорят, значит нет реализации, припоминаю, что гречишный скупали очень охотно прямо на пасеке, далее варили патоку и её реализовывали изготовителям пряников, из фляги мёда 6-7 фляг патоки получалось...
Харэ оффтопить и продолжим! ;))
Я уперся в измерения микросекундных интервалов и понял, что страдаю хернёй! Я же как-никак математик, обученный в совдепии, в МГУ имени - аж самого Михаила Васильевича Ломоносова! На - вот прям-таки - Механико Математическом факультете. И не стыдно мне решать задачи, как простой ВМК-ашник, не прибегая к математическому багажу?!
А вот давайте рассмотрим, что же мне нужно?
1. Следить за скважностью входного ШИМа;
2. За температурой у турбины вентилятора, шоп не рсплавилась;
3. Управлять ШИМом на выходе, не давая охренеть датчику потребляемого тока.
Что для этого нужно?
Даллас, изменение скважности (не частоты и не микросекундных интервалов, а только скважности, матьеё!), не нужно следить за током, нужно один раз подобрать максимальный ШИМ, который меня устроит. Чем меньше деталей, тем надежнее устройство.
Короче слишком долгое вступление. Вопрос, а как измерять скважность, вообще не измеряя интервалы? Ответ находится в княжестве Монако! ;))
Вот код, который измеряет скважность входящего ШИМа, вне зависимости от его частоты.
Сглаживание и время расчета, как и величину разброса случайных чисел следует выбирать под свои задачи, тут простор для опытов.
01
void
setup
()
02
{
03
Serial
.begin(115200);
04
}
05
06
07
void
loop
(
void
) {
08
static
uint32_t om = millis();
09
uint32_t nm = millis();
10
11
static
uint32_t nH = 0;
12
static
uint32_t nN = 0;
13
14
static
float
duty = 0;
15
16
//Вот это и есть метод Монте-Карло ;)) не путать с папой Карло.
17
//секунду считаем и раз в секунду печатаем
18
nN++;
19
nH += digitalRead(8);
20
delayMicroseconds(random(22));
21
22
if
( nm - om > 1000) {
23
om = nm;
24
25
duty = (duty + 100.0 * nH / nN) / 2;
// сгладим скользящим средним
26
Serial
.println(duty);
27
nN = 0;
28
nH = 0;
29
}
30
31
}
Если добавить частотомер на ICR1, то в вычислении скважности следует учесть время, которое "выпадает" из метода Монте-Карло.Ниже - код с измерением температуры, частоты и скважности. Далее все должно быть просто. Если будет настроение - присоединю к плате и попробую уже сегодня... ну или завтра. Я - Великий Прокрастинатор! ;))
001
#include <avr/interrupt.h>
002
#include <avr/io.h>
003
#include <avr/interrupt.h>
004
#include <OneWire.h>
005
006
volatile uint16_t lastICR = 0;
007
volatile uint16_t vPeriod = 0;
008
009
//для двухбайтовой переменной уже нужен атомарный геттер
010
uint16_t getPeriod() {
011
uint16_t v;
012
uint8_t s = SREG;
013
cli();
014
v = vPeriod;
015
SREG = s;
016
return
v;
017
}
018
019
// дистиллированный частотомер. от лучших сомелье.
020
ISR (TIMER1_CAPT_vect) {
021
vPeriod = ICR1 - lastICR;
022
lastICR = ICR1;
023
}
024
025
OneWire ds(4);
026
byte
addr[8];
027
028
029
void
setup
()
030
{
031
Serial
.begin(115200);
032
pinMode(8, INPUT);
033
034
TCCR1A = 0b00001100;
//COM1A1:COM1A0:COM1B1:COM1B0:X:X:WGM11:WGM10
035
TCCR1B = 0b11000001;
//ICNC1:ICES1:X:WGM13:WGM12:CS12:CS11:CS10
036
// Выводы отключены, режим 0 (просто счет), частота 16МГц, IC - rise, IC noise canc - yes
037
TIMSK1 = 0b00100000;
//x:x:ICIE:x:OCIEB:OCIEA:TOIE
038
// прерывания по ICR
039
040
if
( !ds.search(addr)) {
041
ds.reset_search();
042
}
043
ds.reset();
044
ds.select(addr);
045
ds.write(0x4E);
046
ds.write(0x1F);
047
ds.write(0x1B);
048
ds.write(0x7F);
//Установим 12 бит разрешение
049
050
ds.reset();
051
ds.select(addr);
052
ds.write(0x44);
//и запросим температуру
053
}
054
055
056
void
loop
(
void
) {
057
static
uint32_t om = millis();
058
uint32_t nm = millis();
059
060
uint8_t d0, d1;
061
static
float
t;
062
063
static
uint32_t nH = 0;
064
static
uint32_t nN = 0;
065
066
//Вот это и есть метод Монте-Карло ;)) не путать с папой Карло.
067
nN++;
068
//что совой об пень, что пнём по сове - некоторые любят регистры! ;))
069
//nH += digitalRead(8);
070
nH += PINB & 1;
071
delayMicroseconds(random(11));
072
073
//скользящее среднее.
074
//иначе при измерениях нужно таймер0 отключать
075
static
uint16_t period = getPeriod();
076
period = (3 * period + getPeriod()) / 4;
077
078
if
( nm - om > 1000) {
079
om = nm;
080
//раз в секунду прочтем температуру и запросим следующую
081
ds.reset();
082
ds.select(addr);
083
ds.write(0xBE);
084
d0 = ds.read();
085
d1 = ds.read();
086
t = (
float
)((d1 << 8) | d0) / 16.0;
087
ds.reset();
088
ds.select(addr);
089
ds.write(0x44);
090
091
const
int
intTime = 66;
// поправка на время прерывания
092
auto duty = (period - intTime) * nH / nN + intTime;
093
094
//мои извинения за "стринги" ;)) это отладочный вывод и так проще, даже чем prinf, в нем флоат нету.
095
Serial
.println(String(16000.0 / period, 1) +
"KHz "
+ (100.0 * duty / period) +
"% T="
+ t);
096
nN = 0;
097
nH = 0;
098
}
099
100
}
Чему нас научил предыдущий пост? Применению метода Монте-Карло в ардуино для изучения интегральных свойств сигнала. Мы же не скважность реально измерили, а время высокого уровня сигнала за секунду (в конкретном примере). Важным моментом является случайная задержка, она не дает случайно попасть "в резонанс" с входным сигналом и провалить наши измерения.
Такой простой статистический метод можно использовать вместо никчемно-точных измерений, если для принятия решения достаточно знать оценочные интегральные характеристики. Любознательных прошу накидать вариантов использования метода Монте-Карло для иных целей.
Без формул метод состоит в том, что при случайной стрельбе по фигуре на мишени, доля попаданий в фигуру прямо пропорциональна её площади. Разумеется предполагается равномерное распределение попаданий по площади мишени.
==========================
Как затравка для творчества пусть будет RMS. Для вычисления RMS можно делать измерения на частоте много выше, чем частота измеряемого сигнала. А можно сделать измерения на невысокой частоте, но в случайные моменты времени. Результат точно такой же, только количество измерений должно быть достаточно большим. Мы как-бы меняем время сбора информации на частоту. Для 50Гц можно сделать, к примеру, 1000 измерений на частоте 5000Гц, за 0.2 сек. А можно не "рвать жопу" соблюдая частоту измерений, а сделать ту же 1000 измерений в комфортном режиме за 2-3 секунды, но со случайными промежутками. Статистически результат тот же самый.
"Укушенные метрологом" могут сказать, что погрешности разные при прямых и статистических измерениях и зависят от качества генератора случайных чисел (от энтропии псевдослучайной последовательности). Это так. Но на практике достаточно знать, что точность статистических измерений растет с количеством "выстрелов". Дальше уже слишком заумная для форума математика и метрология. Провели эксперимент, стабилизировался результат и устраивает по разбросу и погрешности? - ОК!
Браво. Остается только согласиться с утверждением, что статстики надо набирать много. Если время терпит и процессы нагрева - перегрева терпят насколько секунд до метод вполне разумный и по точности не уступает прямым измерениям, в которых тоже присутствуют случайные процессы, только с друго бока.
Не понял как считается intTime - "поправка на время прерывания". Можете пояснить? (Код под спойлером в #35 )
091
const
int
intTime = 66;
// поправка на время прерывания
092
auto duty = (period - intTime) * nH / nN + intTime;
Не понял как считается intTime - "поправка на время прерывания". Можете пояснить? (Код под спойлером в #35 )
091
const
int
intTime = 66;
// поправка на время прерывания
092
auto duty = (period - intTime) * nH / nN + intTime;
Могу, а что? ;))) - шутка!
Либо посчитать по листингу количество тактов или, что проще, посмотреть осциллографом и подобрать - так я и делал.
тема про таймеры, но из 40 сообщений - 31 про мед. Как это характерно для этого форума :)))
тема про таймеры, но из 40 сообщений - 31 про мед. Как это характерно для этого форума :)))
Вот что ты имеешь против мёда? И поконкретнее, плз!
тема про таймеры, но из 40 сообщений - 31 про мед. Как это характерно для этого форума :)))
Вот что ты имеешь против мёда? И поконкретнее, плз!
поддержу, мой утренний рацион начинается с овсянки с мёдом )))
И не говори! Стыдобища, а шо делать? Пойду распечатаю листинг и посчитаю такты... или не пойду? ... завтра решу! ;)))
-------------------
Добавлю - метод проб и ошибок - самый что ни на есть математический! Подбор параметров - древнее и священное занятие! ;))
тема про таймеры, но из 40 сообщений - 31 про мед. Как это характерно для этого форума :)))
Вот что ты имеешь против мёда? И поконкретнее, плз!
поддержу, мой утренний рацион начинается с овсянки с мёдом )))
Я горсть изюма сыплю, но по углеводам это тоже самое. Наверно тоже медку прикуплю, как только приличная ярмарка осенняя откроется.
Да, в июне, если получится, я как раз на северный Кавказ собрался. Любимый Пятигорск и окрестности. Кинь мне контакты в телегу @wdrakula. Еще не точно, так как с моим зверинцем должны родители остаться, а им 80 и 81 и маме должны вот-вот хрусталик делать... так что все очень условно пока.
поддержу, мой утренний рацион начинается с овсянки с мёдом )))
Овсянка, сэр.) После многих лет потребления, я на неё сейчас смотреть не могу.(
поддержу, мой утренний рацион начинается с овсянки с мёдом )))
Овсянка, сэр.) После многих лет потребления, я на неё сейчас смотреть не могу.(
На сливках, с горстью золотого изюма, с кедровыми орешками, шоколадными каплями и здоровенным куском сливочного масла? Да ты, брат, не гурман нихера!
поддержу, мой утренний рацион начинается с овсянки с мёдом )))
Овсянка, сэр.) После многих лет потребления, я на неё сейчас смотреть не могу.(
а я и не смотрю, просто ем
PS приговаривая - к пище и...неприхотлив )))
На сливках, с горстью золотого изюма, с кедровыми орешками, шоколадными каплями и здоровенным куском сливочного масла? Да ты, брат, не гурман нихера!
Ну согласен. Если так оформить - нет вопросов.) Обычно же что в холодильнике - мёд, варенье, сгущёнка. Особенно нравилось с абрикосовым вареньем.
Особенно нравилось с абрикосовым вареньем.
с ним и айран неплох )))