27 МОСКОВСКАЯ ВСТРЕЧА
Форум самогонщиков Сайт Барахолка Магазин 27 МОСКОВСКАЯ ВСТРЕЧА

Друзья, кто возьмется написать скетч для Ардуино Мега 2560?

Форум самогонщиков Вопросы по электр(он)ике
1 2 3 2
makh Профессор Sаmara 2.1K 1K
Отв.20  13 Июня 18, 21:06
для работы с  тремя ds18b20 для полного цикла измерений потребовалось бы аж 3 секундыSonologist, 13 Июня 18, 20:25
Не верно. Не более 800 мс. Плюс десяток-другой мс на каждый дополнительный датчик.
ПивоСэм Кандидат наук Казань 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:25
750 мс нужно датчику для измерений, собственно сканирование шины и считывание показаний занимает десяток-другой мс на градусник, не помню точно. В шину посылаем 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 герц, если время реакции системы на изменения регулируемых параметров составляет секунды, а то и десятки секунд?
-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мкс
ВУАЛЯ, всё готово!
SA1348 Профессор Саратов 3.3K 1.5K
Отв.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
Спасибо, именно эту паузу я и думал использовать.