Форум самогонщиков Сайт Барахолка Магазин Помощь солдатам

Доступная автоматика HelloDistiller на Ардуино Мега 2560

Форум самогонщиков Автоматика
1 ... 421 422 423 424 425 426 427 ... 794 424
Phisik Куратор Екатеринбург 656 1.4K
Отв.8460  21 Сент. 17, 20:05
Это скетчи из этой серии. Скетч от AlexDol под I2C, мой - модификация скрипта v3.57i под shield с кнопками. Прикладываю также оригинальный 3.57i, если кому-то нужен. Расход памяти:
Sketch uses 91484 bytes (36%) of program storage space. Maximum is 253952 bytes.
Global variables use 1671 bytes (20%) of dynamic memory, leaving 6521 bytes for local variables. Maximum is 8192 bytes.

Update
Оказалось, что в старой IDE 1.0.5 эта версия не собирается, т.к. нет конструктора String(F()). Скоро исправлю.
Royals Специалист Новороссийск 108 13
Отв.8461  21 Сент. 17, 22:45
Буду собирать из готовых элементов. Сейчас все необходимое собираю. Заказал блоки питания 9в для Ардуино, 12в для клапанов, а вот 5 вольт лучше взять с Ардуино или отдельно подводить?
msg31 Научный сотрудник Барнаул 4.6K 2.5K
Отв.8462  22 Сент. 17, 04:43
Все строковые константы перенесены в PROGMEM с помощью F-macro. В результатеPhisik, 21 Сент. 17, 18:50
Проводились ли замеры производительности? Флеш память значительно более медленная, чем оперативная. А информация на экран выводится постоянно.
woddy Доцент Новосиб 1.3K 489
Отв.8463  22 Сент. 17, 05:17, через 35 мин
что только не придумывают, лишь бы не переползать на стм32)))
zZombie Магистр Msk 294 71
Отв.8464  22 Сент. 17, 09:15
5 вольт лучше взять с Ардуино или отдельно подводить?
пять вольт лучше взять с 12 или 9 вольтового источника при помощи dc-dc преобразователя.
AlexDol Кандидат наук Екатеринбург 325 433
Отв.8465  22 Сент. 17, 09:33, через 19 мин
Phisik,
      Огромное спасибо за то что в скетче с I2C и MQTT который я ранее выкладывал для ознакомления,
ты все строковые константы перенёс в PROGMEM. Похоже я зря трудился освобождая место в памяти за счёт
NPG, NBK, BEER, GSM, GPRS и прочих. Памяти стало предостаточно.
Сегодня займусь тем что я успел поменять в старом скетче и перенесу все изменения в обновлённый.
Что-то я в старом нахимичил и перестало работать автоопределение мощности ТЭНа. Пока скетч с форума удалил.
Тормозов в Lite версии от переноса строковых констант в PROGMEM я не почуствовал. Запускал режим "Рект".
При этом режиме работа с меню со смартфона не замедлилась.
Удачи!  
limon Доктор наук Липецк 986 924
Отв.8466  22 Сент. 17, 10:22, через 49 мин
Есть новая прошивка для ESP8266 MQTT, с возможностью подключения к разным серверам и сетям wifi через веб браузер. Сейчас тестирую, выложу попозже, сделал коллега alexhrip [Профиль пользователя alexhrip]
Phisik Куратор Екатеринбург 656 1.4K
Отв.8467  22 Сент. 17, 10:58, через 37 мин
Проводились ли замеры производительности?msg31, 22 Сент. 17, 04:43
Тоже стало интересно. Написал простенький скетч для проверки. Вот результаты:
Testing SRAM vs PROGMEM speed:
  1) SRAM sprintf time is 10.34 us
  2) PROGMEM sprintf_P() time is 127.81 us
  3) PROGMEM String() time is 152.28 us
Done

Видно, что PROGMEM в 12 раз медленнее. Но время операции ~0.1мс и визуально это никак не отражается на производительности контроллера. Конструктор строки String() по понятным причинам самый медленный.

Так что используем sprintf_P(PSTR()), strstr_P(PSTR()), strcmp_P(PSTR()) и остальные строковые функции с приставкой _P
Для функций, которые умеют сами читать из PROGMEM ставим F(): Serial.println(F( "memory efficient string" ))
msg31 Научный сотрудник Барнаул 4.6K 2.5K
Отв.8468  22 Сент. 17, 11:04, через 6 мин
Видно, что PROGMEM в 12 раз медленнее. Но время операции ~0.1мс и визуально это никак не отражается на производительности контроллера. Конструктор строки String() по понятным причинам самый медленный.Phisik, 22 Сент. 17, 10:58
Я проводил эксперименты с хранением переменных во флеш памяти и одновременно интенсивным обменом по MQTТ по serial3. Это отражается на стабилизации сетевого напряжения. Возможно, связано с задержкой прерывания детектировании нуля при обращении к флеш, а возможно, и из-за постоянного обмена по последовательному порту.
Phisik Куратор Екатеринбург 656 1.4K
Отв.8469  22 Сент. 17, 11:50, через 47 мин
Хранение строк в PROGMEM не отражается на скорости работы Serial. Гораздо больше сказывается скорость самого порта. Вот для примера время вывода строки "01234567890123456789" в порт:

9600 бод
   1) SRAM Serial.print() time is 21164.36 us
  2) PROGMEM serialprintPGM() time is 21832.36 us

115200 бод
   1) SRAM Serial.print() time is 1730.04 us
  2) PROGMEM serialprintPGM() time is 1777.04 us

1000000 бод
   1) SRAM Serial.print() time is 215.24 us
  2) PROGMEM serialprintPGM() time is 210.44 us

У вас в скетче везде 9600, может быть это одна из причин?

Добавлено через 9мин.:

На больших скоростях, кстати, из флешки еще и быстрее писать в порт:
2000000 бод
Testing SRAM vs PROGMEM speed form COM:
  1) SRAM Serial.print() time is 136.04 us
  2) PROGMEM serialprintPGM() time is 107.76 us
Done
msg31 Научный сотрудник Барнаул 4.6K 2.5K
Отв.8470  22 Сент. 17, 12:07, через 18 мин
У вас в скетче везде 9600, может быть это одна из причин?Phisik, 22 Сент. 17, 11:50
Это единственная скорость, на которой возможна стабильная работа на портах Serial1-3.
Я тестировал все в комплексе. Из опыта  прямой работы с флеш-памятью я знаю, что при использовании команд чтения из нее все прерывания блокируются напрочь. Как влияет работа серийного порта я на низком уровне не знаю, но прерывания точно должны на некоторое время блокироваться. Поэтому без необходимости данные не передаются. Хотя многие ставят время обновления данных сервера в контроллере 5 секунд и данные идут сплошным потоком.
Так что пока я решил не заморачиваться с этим, чтобы не нарываться на грабли.
Сам я в таких режимах замечал помаргивание лампочки, подключенной вместо ТЭНа.
vpan Студент Жуковский 30 5
Отв.8471  22 Сент. 17, 14:15
Коллеги, возникла проблемка. Почему-то стал постоянно открыт клапан голов, сразу после включения открывается и дребезжит на любых режимах, напряжение на нем около 160 вольт. Сначала подумал что сдох симмистор на ключе, перепаял, толку ноль. Потом поставил вместо симмисторного ключа релюшку, открывается также после включения сразу. И уже только потом понял что на пине 25 постоянно висит 5 вольт. Перезалил скетч - не помогло. Аппаратурой долго не пользовался, все лето она лежала в теплом помещении, при последнем использовании глюков не было. Куда капать???  
woddy Доцент Новосиб 1.3K 489
Отв.8472  22 Сент. 17, 14:59, через 44 мин
внимательно изучать монтаж. где-то сопли.
или заменить ардуину
vpan Студент Жуковский 30 5
Отв.8473  22 Сент. 17, 15:38, через 39 мин
Немного потестировал аппаратуру на холостом ходу в режиме тест и вот что увидел...
Включаю аппаратуру, через две секунды включается клапан головы и продолжает быть включенным постоянно.
Выбираю режим ТЕСТ, аппаратура переходит к тестированию. Когда приходит время включения клапана голов питание с пина 25 начинает "дрожать" появляться легкий зуммирующий звук.
Когда тестирование клапанов заканчивается и начинается тестирование ШИМ включается на постоянку клапан отбора, а клапан голов начинает работать в обычном режиме, т.е. включается примерно каждую минуту и секунд через 10 отключается.
Потом перехожу в режим ректификации и клапан голов опять открывается на постоянку. 
Phisik Куратор Екатеринбург 656 1.4K
Отв.8474  22 Сент. 17, 16:09, через 32 мин
Это единственная скорость, на которой возможна стабильная работа на портах Serial1-3.msg31, 22 Сент. 17, 12:07
Это для вашей прошивки или вообще? Просто у меня рядом стоит 3д принтер на атмеге 1284, даже не 2560, и совершенно стабильно сутками работает с #define BAUDRATE 250000. Никаких проблем со стабильностью. Esp8266 поддерживает еще большие скорости.
msg31 Научный сотрудник Барнаул 4.6K 2.5K
Отв.8475  22 Сент. 17, 16:32, через 24 мин
Это для вашей прошивки или вообще? Просто у меня рядом стоит 3д принтер на атмеге 1284, даже не 2560Phisik, 22 Сент. 17, 16:09
А порт какой? Всегда считал, что Serial1-Serial3 программные порты и там не больше 9600, что подтверждалось моими экспериментами. Стабильные результаты только на 9600 получались.
Serial0, да, подерживает высокие скорости.
Возможно, это в моей прошивке дело.
woddy Доцент Новосиб 1.3K 489
Отв.8476  22 Сент. 17, 17:07, через 35 мин
Всегда считал, что Serial1-Serial3 программные портыmsg31, 22 Сент. 17, 16:32
на 2560 есть четыре аппаратных уарта полноценных
Phisik Куратор Екатеринбург 656 1.4K
Отв.8477  22 Сент. 17, 17:13, через 6 мин
Serial1-Serial3 программные портыmsg31, 22 Сент. 17, 16:32

Судя по даташиту на 2560 4 полноценных аппаратных UART интерфейса (с. 200-235). Каких-то различий я между ними не нашел. То что они Programmable - то это значит, что их можно перенастраивать, а не то что они эмулируются.

Update
Покопался в исходниках. Все порты там объявлены одинаково. Нет между ними различий.
//HardwareSerial.h
#if defined(UBRRH) || defined(UBRR0H)
  extern HardwareSerial Serial;
#elif defined(USBCON)
  #include "USBAPI.h"
//  extern HardwareSerial Serial_; 
#endif
#if defined(UBRR1H)
  extern HardwareSerial Serial1;
#endif
#if defined(UBRR2H)
  extern HardwareSerial Serial2;
#endif
#if defined(UBRR3H)
  extern HardwareSerial Serial3;
#endif
AlexDol Кандидат наук Екатеринбург 325 433
Отв.8478  22 Сент. 17, 18:12, через 60 мин
Phisik,
Наверное скетч HelloDistiller364Lite ты выложил по ошибке. Progmem в нём не используется.
Я в этот скетч перенёс две вкладки "Display" и "Process" из HD364_I2C_WiFi_Lite.
Загрузка памяти снизилась до 27%. На этом перенос настроек прекратил и занялся твоим подарком -
скетчем HelloDistiller364_I2C_WiFi_Lite, установил скорость работы "Serial.begin(115200);".
Ни разу автоматика не споткнулась. Но не забудьте эту же скорость настроить в прошивке ESP8266.
SA1348 Профессор Саратов 3.3K 1.5K
Отв.8479  23 Сент. 17, 08:41
Phisik, Может посмотришь, на твоих версиях не компилируется с раскомментированным
#define DEBUG

режим отладки погонять не получается.
сообщение удалено