Нехватает ресурсов Arduino или ошибки в блоках ??

На этом форуме Вы можете задать вопросы знатокам программы и автору.
Ответить
Аватара пользователя
Grafsaxar
Лейтенант
Сообщения: 377
Зарегистрирован: 06.09.2015{, 16:04}
Репутация: 6
Откуда: Маркс-Энгелс
Имя: Alexander

Нехватает ресурсов Arduino или ошибки в блоках ??

#1

Сообщение Grafsaxar » 19.07.2017{, 10:23}

Здравствуйте форумчане...
Сталкивался и раньше с проблемами нехватки ресурсов.
Например дальномер НС-04 и модбас не хотели работать на одной Нано.

Сейчас делаю точечьную сварку с возможностью задания длительности каждых 2 импульсов.
Собрано было таким образом: энкодером задаёшь время длительности каждого импульса.
При изменении длительности сохраняется в епроме.
Вся информация  отображается на 4х20 дисплее подключённым по и2с .
Собрано:  Ардуино---твердотелое реле---трансформатор.
Бодался 2 недели и не мог понять почему длительность импульса не регулировалась  до 0.1секунды.
Выставляю 500 микросекунд= 0,15секунда
Выставляю 900 микросекунд= 0,13секунда
И так далее в пределах 0,09-0,15 секунд.

Проблема в дисплее. Подключал напрямую -- тоже самое.

без дисплея всё нормально.

Попробовал на Меги2560 с и2с дисплеем, то же самое..

Решил проблему : подкличил 2е нано по уарту . Оно и генерирует длительности сигналов.

Неужели закончились ресурсы меги328 ??? С таким лёгким заданием. Или я что то не так делаю??

Видать подходит время СТМ32

Сергей !! Планируется ли вообше добавления этого контроллёра в проект??
Качество — это делать что-либо правильно, даже когда никто не смотрит

Аватара пользователя
Sancho
Полковник
Сообщения: 3990
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 567
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Нехватает ресурсов Arduino или ошибки в блоках ??

#2

Сообщение Sancho » 19.07.2017{, 11:09}

Как вариант:
а. Перенеси всё, что касается отображения на дисплее и настроек
на отдельную плату.
б. Создай переменную на другой плате, назови, например "Lock".
с. Генерация двух импульсов происходит после нажатия кнопки "Пуск", которая также должна будет переводить до окончания второго  "Lock"в TRUE .
д. Отправляй сигнал на управление платой пункта а (создай условие Lock=FALSE).

Как-то так, надеюсь идею уловил...
Вложения
6643136.png
Последний раз редактировалось Sancho 19.07.2017{, 11:21}, всего редактировалось 1 раз.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
Grafsaxar
Лейтенант
Сообщения: 377
Зарегистрирован: 06.09.2015{, 16:04}
Репутация: 6
Откуда: Маркс-Энгелс
Имя: Alexander

Нехватает ресурсов Arduino или ошибки в блоках ??

#3

Сообщение Grafsaxar » 19.07.2017{, 11:30}

Sancho писал(а):Как вариант:а. Перенеси всё, что касается отображения на дисплее и настроек
на отдельную плату.
Sancho спасибо за совет. идея хороша:))) Будет время проверю......
Качество — это делать что-либо правильно, даже когда никто не смотрит

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 26
Откуда: Новосибирск

Нехватает ресурсов Arduino или ошибки в блоках ??

#4

Сообщение Слимпер » 19.07.2017{, 15:22}

Grafsaxar
Тут сказывается особенность работы блока вывода на дисплей.
Каждый вывод информации это довольно много данных передать надо по медленному интерфейсу.
А когда подключаем дисплей по I2C, проверял даже с двух строчным время программного цикла становится больше 100 мс, т.е. между двумя импульсами больше 0.1с.

Если у вас не будет выводится не каких текущих параметров то решение предложено Sancho,  

Может помочь.

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

Так же требование к точности соблюдения  этих параметров.

Просто если некоторые ограничения генераторов встроенных в Flprog, когда значение интервалов начинает приближаться к длительности программного цикла, точность сильно страдает.

Для обхода этой проблемы делал самодельные блоки работающие на прерываниях по аппаратному таймеру. Там получалось добиться импульсов  частот больше 10 кГц т.е. 0.1мс период, при этом не зависящих от основной программы. 

Вот тема в которой было обсуждение

Аватара пользователя
Grafsaxar
Лейтенант
Сообщения: 377
Зарегистрирован: 06.09.2015{, 16:04}
Репутация: 6
Откуда: Маркс-Энгелс
Имя: Alexander

Нехватает ресурсов Arduino или ошибки в блоках ??

#5

Сообщение Grafsaxar » 19.07.2017{, 16:32}

Слимпер писал(а):Вот тема в которой было обсуждение
Спасибо Слимпер.

В создании блоков я особо не силён.
Я как то 2 недели делал блок на РС522 а через 2 недели появился стандартный в программе.
Правда я с ним пока не разобрался и использую свой.

Я просто как то не подумал или не додумался выполнять плату по событию:))))
Качество — это делать что-либо правильно, даже когда никто не смотрит

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 26
Откуда: Новосибирск

Нехватает ресурсов Arduino или ошибки в блоках ??

#6

Сообщение Слимпер » 19.07.2017{, 16:38}

Если задачу так и не получится решить штатными средствами, обращайтесь попробую помочь с написание блока пользователя. Если будет время.

Аватара пользователя
Grafsaxar
Лейтенант
Сообщения: 377
Зарегистрирован: 06.09.2015{, 16:04}
Репутация: 6
Откуда: Маркс-Энгелс
Имя: Alexander

Нехватает ресурсов Arduino или ошибки в блоках ??

#7

Сообщение Grafsaxar » 20.07.2017{, 12:29}

Слимпер писал(а):Если задачу так и не получится решить штатными средствами, обращайтесь
Заранее благодарен..

Длина импулсов должна быть более менее точна.
Находится в пределах 5-150 миллисекунд.
Пауза между импульсами не меняется , выставлена = 300 миллисекунд

При сваривании жести 0.15-0.20 мм лишнии 10  миллисекунд прожигают насквозь.
Последний раз редактировалось Grafsaxar 20.07.2017{, 12:31}, всего редактировалось 1 раз.
Качество — это делать что-либо правильно, даже когда никто не смотрит

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 26
Откуда: Новосибирск

Нехватает ресурсов Arduino или ошибки в блоках ??

#8

Сообщение Слимпер » 20.07.2017{, 14:02}

Grafsaxar писал(а):Длина импулсов должна быть более менее точна.Находится в пределах 5-150 миллисекунд.
Пауза между импульсами не меняется , выставлена = 300 миллисекунд
Ну это понял. А теперь вопрос,  нужен блок который  генерирует, описанные выше, импульсы на выходе контроллера все время пока на входе есть логическая 1?
Последний раз редактировалось Слимпер 20.07.2017{, 14:03}, всего редактировалось 1 раз.

Аватара пользователя
Sancho
Полковник
Сообщения: 3990
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 567
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Нехватает ресурсов Arduino или ошибки в блоках ??

#9

Сообщение Sancho » 20.07.2017{, 15:02}

Вот попробовал сделать блок, не зависящий от I2C и дисплея.При подаче на старт импульса(фронт, положительного) любой длинны выдаст два импульса с паузой - за ОДИН цикл программы.
Не тестировал.

15.45.Удалил,не правильно. ниже ОК.
Последний раз редактировалось Sancho 20.07.2017{, 15:46}, всего редактировалось 1 раз.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 26
Откуда: Новосибирск

Нехватает ресурсов Arduino или ошибки в блоках ??

#10

Сообщение Слимпер » 20.07.2017{, 15:11}

Хотел сделать блок с использованием прерываний и аппаратного таймера.
Sancho писал(а):При подаче на старт импульса(фронт, положительного) любой длинны выдаст два импульса с паузой - за ОДИН цикл программы.
Но похоже на правильно понял суть задачи, сказывается не знание принципов работы сварочника.

Так блок должен после нажатия сгенерировать именно 2 импульса и потом прекратить?

Аватара пользователя
Sancho
Полковник
Сообщения: 3990
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 567
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Нехватает ресурсов Arduino или ошибки в блоках ??

#11

Сообщение Sancho » 20.07.2017{, 15:24}

Слимпер писал(а):Но похоже на правильно понял суть задачи, сказывается не знание принципов работы сварочника.Так блок должен после нажатия сгенерировать именно 2 импульса и потом прекратить?
Я так понял...

Добавлено (20.07.2017, 15:24)
---------------------------------------------
Sancho писал(а):за ОДИН цикл программы.Не тестировал.
Попробовал.
Хренушки, надо ручками в коде править....
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 26
Откуда: Новосибирск

Нехватает ресурсов Arduino или ошибки в блоках ??

#12

Сообщение Слимпер » 20.07.2017{, 15:42}

Sancho, Если использовать вашу идею выдачи двух импульсов в рамках одного программного цикла
То делать это надо примерно так

Хотя такой метод останавливает всю программу на это время т.е. 150+300+150 = 600 мс простоя
Вложения
2_Pulse_NEW-COD.ubi
(16.51 КБ) 44 скачивания
Последний раз редактировалось Слимпер 20.07.2017{, 15:44}, всего редактировалось 1 раз.

Аватара пользователя
Sancho
Полковник
Сообщения: 3990
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 567
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Нехватает ресурсов Arduino или ошибки в блоках ??

#13

Сообщение Sancho » 20.07.2017{, 15:49}

Сделал, настройка выходного(управляющего) пина в настройке блока.
Проверено.

Добавлено (20.07.2017, 15:49)
---------------------------------------------
Слимпер писал(а):То делать это надо примерно так
:) :) забыл о delay :)
Слимпер писал(а):Хотя такой метод останавливает всю программу на это время
Думаю, что в это время никто не будет смотреть на дисплей и т.д....
Вложения
Pulse_2_OK-CODE.ubi
(17.98 КБ) 43 скачивания
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Слимпер
Майор
Сообщения: 1009
Зарегистрирован: 06.09.2015{, 16:56}
Репутация: 26
Откуда: Новосибирск

Нехватает ресурсов Arduino или ошибки в блоках ??

#14

Сообщение Слимпер » 20.07.2017{, 15:57}

Sancho писал(а):Думаю, что в это время никто не будет смотреть на дисплей и т.д....
Ну так то да. Тогда это самый простой и надежный способ.
Я просто сперва понял, что надо генерировать не прерывные импульсы, тогда такой способ  не пошел бы.

Аватара пользователя
Grafsaxar
Лейтенант
Сообщения: 377
Зарегистрирован: 06.09.2015{, 16:04}
Репутация: 6
Откуда: Маркс-Энгелс
Имя: Alexander

Нехватает ресурсов Arduino или ошибки в блоках ??

#15

Сообщение Grafsaxar » 22.07.2017{, 11:34}

Sancho!! Спасибо огромное. Сильно помог. А так же ребятам за разжёвку проблемы. Всё заработало...

Отображает информацию только при включении и при изменении длительности импульса. В планах добавить температуру транса.

Если есть интерес могу выложить програмку.

Добавлено (22.07.2017, 11:34)
---------------------------------------------
Хоть и не в тему но вопросик к специалистам. Как сделать отображения настраивомого меню в негативе? Раньше использовал стрелку. Но сейчас для этого нет места на LCD. Есть ли какие варианты??
Качество — это делать что-либо правильно, даже когда никто не смотрит

Аватара пользователя
Dev1
Майор
Сообщения: 1015
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 58
Откуда: Гондурас

Нехватает ресурсов Arduino или ошибки в блоках ??

#16

Сообщение Dev1 » 22.07.2017{, 12:33}

Grafsaxar писал(а):Хоть и не в тему но вопросик к специалистам. Как сделать отображения настраивомого меню в негативе? Раньше использовал стрелку. Но сейчас для этого нет места на LCD. Есть ли какие варианты??
А как у вас сейчас выводится?
Win7-64 FLProg v7.2.2 Portable :fie:

Аватара пользователя
Grafsaxar
Лейтенант
Сообщения: 377
Зарегистрирован: 06.09.2015{, 16:04}
Репутация: 6
Откуда: Маркс-Энгелс
Имя: Alexander

Нехватает ресурсов Arduino или ошибки в блоках ??

#17

Сообщение Grafsaxar » 23.07.2017{, 23:40}

Сейчас просто числа. Охото чтоб настраиваемое меню негативом отображалось.
Качество — это делать что-либо правильно, даже когда никто не смотрит

Аватара пользователя
Dev1
Майор
Сообщения: 1015
Зарегистрирован: 12.07.2016{, 18:04}
Репутация: 58
Откуда: Гондурас

Нехватает ресурсов Arduino или ошибки в блоках ??

#18

Сообщение Dev1 » 24.07.2017{, 08:33}

Как то гадать на кофейной гуще...
Ну ладно, погадаем...
У себя я делаю вывод на экран раздельный, меню и вывод информации. Т.е. во время работы в меню выводится только название меню, название переменной и её изменяемый параметр. Видны все передвижения по меню. Благо выходы меню позволяют это все видеть. Вышли из меню и показывается то что мне нужно контролировать. 
Если нужно видеть все вместе с меню то ставлю лсд 5110, там мне 5 строк за глаза.
Win7-64 FLProg v7.2.2 Portable :fie:

Аватара пользователя
Grafsaxar
Лейтенант
Сообщения: 377
Зарегистрирован: 06.09.2015{, 16:04}
Репутация: 6
Откуда: Маркс-Энгелс
Имя: Alexander

Нехватает ресурсов Arduino или ошибки в блоках ??

#19

Сообщение Grafsaxar » 24.07.2017{, 09:43}

Если место хватало то я напротив переменной стрелку ставил. А в этом случае 2 строчный дисплей.
Есть ли возможность вывод переменной в инвертированном (негативном) виде??
5110 пока не использовал. Хватало 4х20
Качество — это делать что-либо правильно, даже когда никто не смотрит

Ответить

Вернуться в «Спросить у знатоков»