для работы с тремя ds18b20 для полного цикла измерений потребовалось бы аж 3 секундыSonologist, 13 Июня 18, 20:25Не верно. Не более 800 мс. Плюс десяток-другой мс на каждый дополнительный датчик.
Друзья, кто возьмется написать скетч для Ардуино Мега 2560?
makh
Профессор
Sаmara
2.1K 1K
Отв.20 13 Июня 18, 21:06
ПивоСэм
Кандидат наук
Казань
437 150
Отв.21 13 Июня 18, 21:18, через 12 мин
Не более 800 мсmakh, 13 Июня 18, 21:06Имеет значение к одному пину они подключены или каждый на своем?
Добавлено через 1мин.:
Да и в нашем деле нет таких процессов, где была бы критична скорость считывания с датчиков температуры.
Sonologist
Профессор
Москва
2.6K 886
Отв.22 13 Июня 18, 21:25, через 8 мин
Так, уже интереснее. Я полагал, что Ардуино опрашивает цифровые датчики последовательно, и каждому на ответ нужно минимум 750 мсек. Если они подключены к разным пинам, то это (опрос) можно делать одновременно? Тем не менее, примерно секунда - уже долговато: ведь в цикле еще присутствует регуляция напряжения через триак. А это максимум 10 мсек на каждый полупериод. Мне показалось, что в одном цикле все делать выгоднее: почти мгновенное определение температур и напряжения, посыл информации в ПК, пересчеты (в ПК даже на Бэйсике это мгновенно), прием оттуда рекомендаций и их выполнение займет намного меньше времени. И ориентироваться на долгий ответ ds18b20 уже не надо. Тут надо узнать у гуру, чем мой вариант алгоритма нехорош?
makh
Профессор
Sаmara
2.1K 1K
Отв.23 13 Июня 18, 21:56, через 32 мин
опрашивает цифровые датчики последовательно, и каждому на ответ нужно минимум 750 мсекSonologist, 13 Июня 18, 21:25750 мс нужно датчику для измерений, собственно сканирование шины и считывание показаний занимает десяток-другой мс на градусник, не помню точно. В шину посылаем SKIP_ROM и CONVERT_T (все датчики на шине начинают считать температуру), а через 750 мс сканируем и читаем показания всей гирлянды. Ну, вместо того чтоб посылать CONVERT_T каждому датчику по отдельности.
Если они подключены к разным пинам, то это (опрос) можно делать одновременно?Sonologist, 13 Июня 18, 21:25Можно. Но зачем? Для идентификации градусников? Так можно попроще решить:
В градуснике DS18B20 есть три rw байта, сохраняемых в EEPROM. В одном настройки разрешения и прочего, в двух других значение температуры для аларма, которым мы как правило не пользуемся. Можно один из этих двух байт попользовать для своего идентификатора функции градусника. Т.е. кубовому градуснику запишем туда, например, 0x01, градусникам в трубе 0x02, 0x03 и т.д. Теперь, прочитав из скратчпада три байта вместо двух, автомат уверенно знает о каком градуснике речь. Это чтоб не выдумывать дополнительные шины.И таки да, ни разу не нужны показания градусников чаще чем раз в секунду. Не те задачи.
makh
Sonologist
Профессор
Москва
2.6K 886
Отв.24 13 Июня 18, 22:12, через 16 мин
То есть, ты категорически против быстрого измерения напряжения на аналоговом пине как прямой функции температуры (используя LM35) и вместо этого предлагаешь подключать дополнительную библиотеку от Тексас, да еще ждать ответа от датчиков? Я не протестую (не та у меня квалификация), но просто в чем тогда выигрыш? По моим прикидкам (они могут быть неправильными!) весь предложенный мной цикл должен уместится в 10 мсек (возможно, не один раз), что позволит регулировать мощность на каждой полуволне. Все остальное (температура и прочее) - да, можно и отслеживать, и анализировать и изменять реже. Пусть даже раз в секунду. Но мне показалось, что выгоднее всю процедуру со всеми датчиками (напряжение и температура х 3) производить в одном цикле. Нет?
Sonologist
Профессор
Москва
2.6K 886
Отв.25 13 Июня 18, 22:18, через 7 мин
Слушай, давай в какой-нить чат, а то тут нафлудим...
-NMi-
Студент
Саранск
33 3
Отв.26 13 Июня 18, 22:41, через 23 мин
Работа с цифровыми датчиками температуры (ds18b20) требует неприлично большого времениSonologist, 13 Июня 18, 20:25Зачем тебе большое разрешение,я ща не помню, но при самом малом время замера раз в ДЕСЯТЬ меньше.
makh
Профессор
Sаmara
2.1K 1K
Отв.27 13 Июня 18, 22:43, через 2 мин
Sonologist, да не против я .)
Просто будет ловить всякую фигню на дорогие длинные аналоговые провода от коробки с ардуиной к датчикам, да и АЦП у атмеги десятибитный всего -- много букаф придется писать для приведения цифры в удобопользуемый вид. С цифровыми датчиками проще намного, вобщем.
Насчет регулировки мощности -- какой смысл делать это с частотой 100 герц, если время реакции системы на изменения регулируемых параметров составляет секунды, а то и десятки секунд?
Просто будет ловить всякую фигню на дорогие длинные аналоговые провода от коробки с ардуиной к датчикам, да и АЦП у атмеги десятибитный всего -- много букаф придется писать для приведения цифры в удобопользуемый вид. С цифровыми датчиками проще намного, вобщем.
Насчет регулировки мощности -- какой смысл делать это с частотой 100 герц, если время реакции системы на изменения регулируемых параметров составляет секунды, а то и десятки секунд?
-NMi-
Студент
Саранск
33 3
Отв.28 13 Июня 18, 22:47, через 5 мин
Напряжение на аналоговых входах Ардуино определяет мгновенно, а для работы с тремя ds18b20 для полного цикла измерений потребовалось бы аж 3 секунды.Sonologist, 13 Июня 18, 20:25Опять мимо. АЦП у ардуины ОДИН и он мультиплексирует входы! И время преобразования конечно, хотя и быстрее 1820 )))
Три 1820 и АЖ ТРИ секунды??? ЦеЖ ардуина, дай им всем ТРОИМ (десятерым) команду на замер температуры и считай её в следующем цикле и ты удивишься, за ТРИ секунды они успеют БОЛЕЕ чем ТРИ раза )))
Добавлено через 4мин.:
Имеет значение к одному пину они подключены или каждый на своем?ПивоСэм, 13 Июня 18, 21:18Не имеет. Ардуина исполняет код ЛИНЕЙНО, там нет RtOs или каго-либо диспетчера задач, пока опрашивается один датчик - всё остальное СТОИТ, даже прерывания.
Sonologist
Профессор
Москва
2.6K 886
Отв.29 13 Июня 18, 22:55, через 8 мин
Просто будет ловить всякую фигню на дорогие длинные аналоговые проводаmakh, 13 Июня 18, 22:43Ага, вот это уже аргумент! Попробую преобразить хотелки в вариант с цифровыми датчиками. Отпишусь. Тут надо покумекать. Итак, имеем три датчика температуры ds18b20. Сколько времени займет их опрос и получение от них ответа? Это важно, поскольку "открывать и закрывать клапан отбора" измеряется в секундах. Это чтоб мне осознать более выгодную задачу, учитывая мои условия. Подумаю денек, кину в личку. Ага?
-NMi-
Студент
Саранск
33 3
Отв.30 13 Июня 18, 22:57, через 3 мин
ведь в цикле еще присутствует регуляция напряжения через триак. А это максимум 10 мсек на каждый полупериод.Sonologist, 13 Июня 18, 21:25Вот тут на помощь придут АППАРАТНЫЕ "штучки" ардуины и не нужно что-то там много считать, ШИМ (PWM) у неё прекрасно работает и не забирает ни одного такта процессорного времени. !!! Первый косяк ардуины - Timer0 используется изначально в ардуине для реализации функции mills и использовать его в качестве PWM конечно можно, но с граблями и косяками)
Sonologist
Профессор
Москва
2.6K 886
Отв.31 13 Июня 18, 23:00, через 3 мин
ШИМ (PWM) у неё прекрасно работает-NMi-, 13 Июня 18, 22:57Ой нет! С еённым ШИМом я наигрался по уши. Грузил его на мосфеты. Пёрли такие наводки, что Ардуина сходила с ума. Отказался. И система сложнее и настройка ее и избавление от помех.... Куда проще управлять триаком. Таблица мощностей и времени открытия есть. Чего еще...
-NMi-
Студент
Саранск
33 3
Отв.32 13 Июня 18, 23:01, через 2 мин
Мне показалось, что в одном цикле все делать выгоднееSonologist, 13 Июня 18, 21:25И правильно, что показалось. Дробить нужно время, дробить. Клавиатурку опросить, дисплейчик обновить, датчики опросить, посчитать математику и тд. Дробим всё это дело на кванты через таймер и у нас прекрасно всё всегда "успеет" обработаться и всё будет синхронно, как по секундомеру.
makh
Профессор
Sаmara
2.1K 1K
Отв.33 13 Июня 18, 23:02, через 2 мин
Sonologist, порядка 800 мс. 700 мс будут думать датчики, остальное -- скан шины и чтение показаний. Как-то так, нет железок под рукой, чтоб выдурить из нее точный тайминг..
-NMi-
Студент
Саранск
33 3
Отв.34 13 Июня 18, 23:06, через 4 мин
Просто будет ловить всякую фигню на дорогие длинные аналоговые провода от коробки с ардуиной к датчикамmakh, 13 Июня 18, 22:43Это верно подмечено. Если ставить компенсацию на ОУ и фильтре 2-3 порядка, то выйдет дороже 1820 )))
Sonologist
Профессор
Москва
2.6K 886
Отв.35 13 Июня 18, 23:11, через 5 мин
Так, мужики. Я задание понял. На днях выложу хотелки от Ардуины с цифровыми датчиками. Покритикуете, ага? Ухожу дрыхнуть, завтра с утра работу трудиться...
-NMi-
Студент
Саранск
33 3
Отв.36 13 Июня 18, 23:14, через 4 мин
С еённым ШИМом я наигрался по уши. Грузил его на мосфеты. Пёрли такие наводки, что Ардуина сходила с ума.Sonologist, 13 Июня 18, 23:00Жаль, что у ардуины нету рук, ато в лоб бы получил от неё и не раз.
Всё там НАИПРЕКРАСНО управляется, даже светодиод можно ПЛАВНО зажигать и гасить. При 16мГц имеем 62,5кГц ШИМ в режиме FastPWM, шо!!! опять в ардуине труднореализуемо.
По поводу MOSFET-ов - ДРАЙВЕРА нужно ставить, драйвера, но только не от Windows а для мосфетиков и буит всем счастье, даже BOD (Brown Out) , от которого у тебя она и сходила с ума )))
Добавлено через 5мин.:
порядка 800 мс. 700 мс будут думать датчики, остальное -- скан шины и чтение показанийmakh, 13 Июня 18, 23:02Ну и пусть они думают, пусть. Ардуина в это время будет выполнять пустые циклы, дожидаясь отклика датчиков. А кто мешает сделать парсер, типа пока датчики "думают" мы что-нибудь посчитаем. За 800 ms ПИД и с ПЛАВАЮЩЕЙ точкой можно посчитать, и даже не один )))
Добавлено через 2мин.:
На днях выложу хотелки от Ардуины с цифровыми датчикамиSonologist, 13 Июня 18, 23:11МногоГО только не "хоти" , учти и помни, это 8-bit микропроцессор, математики там НЕТ!!!
Добавлено через 9мин.:
Итак, имеем три датчика температуры ds18b20. Сколько времени займет их опрос и получение от них ответа?Sonologist, 13 Июня 18, 22:55Расчёт для ОДНОГО датчика, ЗАМЕТИМ, что команды можно ПАРАЛЛЕЛИТЬ!!!
Старт - 1,025мс
Пауза - 800мс (это время можно занять чем угодно, например мосфетиком подрыгать...)
Сброс - 1,03мс
Чтение озу - 795мкс
Контролька - 797мкс
ВУАЛЯ, всё готово!
Отв.37 14 Июня 18, 07:49
Все прекрасно. Только ПК с программой на бэйсике здесь для чего? Лишнее звено. Ардуина и сама прекрасно обработает все входящие от датчиков данные и выдаст на исполнительные механизмы.
Sonologist
Профессор
Москва
2.6K 886
Отв.38 14 Июня 18, 08:05, через 16 мин
Только ПК с программой на бэйсике здесь для чего?SA1348, 14 Июня 18, 07:49Я уже говорил, что программировать Ардуино так и не научился. Но достаточно ориентируюсь в Бэйсике. Отсюда: хочу иметь возможность собственными руками (так, как я сам захочу) обрабатывать данные, принимать решение и отправлять распоряжение на исполнительных механизм. Ардуино тут нужно для связи ПК и этого механизма. Касательно работы клапанов - с помощью Бэйсика все решается очень просто через RS232. Затыка там, где нужна бОльшая частота, например, тот же ШИМ или фазоимпульсное управление триаком: таймер Бэйсика работает корректно только с интервалами более 60 мсек.
Sonologist
Профессор
Москва
2.6K 886
Отв.39 14 Июня 18, 08:06, через 2 мин
Пауза - 800мс-NMi-, 13 Июня 18, 23:14Спасибо, именно эту паузу я и думал использовать.