Страница 1 из 1

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

Добавлено: 19.07.2017{, 10:23}
Grafsaxar
Здравствуйте форумчане...
Сталкивался и раньше с проблемами нехватки ресурсов.
Например дальномер НС-04 и модбас не хотели работать на одной Нано.

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

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

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

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

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

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

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

Сергей !! Планируется ли вообше добавления этого контроллёра в проект??

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

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

Как-то так, надеюсь идею уловил...

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

Добавлено: 19.07.2017{, 11:30}
Grafsaxar
Sancho писал(а):Как вариант:а. Перенеси всё, что касается отображения на дисплее и настроек
на отдельную плату.
Sancho спасибо за совет. идея хороша:))) Будет время проверю......

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

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

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

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

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

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

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

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

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

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

Добавлено: 19.07.2017{, 16:32}
Grafsaxar
Слимпер писал(а):Вот тема в которой было обсуждение
Спасибо Слимпер.

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

Я просто как то не подумал или не додумался выполнять плату по событию:))))

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

Добавлено: 19.07.2017{, 16:38}
Слимпер
Если задачу так и не получится решить штатными средствами, обращайтесь попробую помочь с написание блока пользователя. Если будет время.

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

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

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

При сваривании жести 0.15-0.20 мм лишнии 10  миллисекунд прожигают насквозь.

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

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

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

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

15.45.Удалил,не правильно. ниже ОК.

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

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

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

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

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

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

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

Добавлено: 20.07.2017{, 15:42}
Слимпер
Sancho, Если использовать вашу идею выдачи двух импульсов в рамках одного программного цикла
То делать это надо примерно так

Хотя такой метод останавливает всю программу на это время т.е. 150+300+150 = 600 мс простоя

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

Добавлено: 20.07.2017{, 15:49}
Sancho
Сделал, настройка выходного(управляющего) пина в настройке блока.
Проверено.

Добавлено (20.07.2017, 15:49)
---------------------------------------------
Слимпер писал(а):То делать это надо примерно так
:) :) забыл о delay :)
Слимпер писал(а):Хотя такой метод останавливает всю программу на это время
Думаю, что в это время никто не будет смотреть на дисплей и т.д....

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

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

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

Добавлено: 22.07.2017{, 11:34}
Grafsaxar
Sancho!! Спасибо огромное. Сильно помог. А так же ребятам за разжёвку проблемы. Всё заработало...

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

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

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

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

Добавлено: 22.07.2017{, 12:33}
Dev1
Grafsaxar писал(а):Хоть и не в тему но вопросик к специалистам. Как сделать отображения настраивомого меню в негативе? Раньше использовал стрелку. Но сейчас для этого нет места на LCD. Есть ли какие варианты??
А как у вас сейчас выводится?

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

Добавлено: 23.07.2017{, 23:40}
Grafsaxar
Сейчас просто числа. Охото чтоб настраиваемое меню негативом отображалось.

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

Добавлено: 24.07.2017{, 08:33}
Dev1
Как то гадать на кофейной гуще...
Ну ладно, погадаем...
У себя я делаю вывод на экран раздельный, меню и вывод информации. Т.е. во время работы в меню выводится только название меню, название переменной и её изменяемый параметр. Видны все передвижения по меню. Благо выходы меню позволяют это все видеть. Вышли из меню и показывается то что мне нужно контролировать. 
Если нужно видеть все вместе с меню то ставлю лсд 5110, там мне 5 строк за глаза.

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

Добавлено: 24.07.2017{, 09:43}
Grafsaxar
Если место хватало то я напротив переменной стрелку ставил. А в этом случае 2 строчный дисплей.
Есть ли возможность вывод переменной в инвертированном (негативном) виде??
5110 пока не использовал. Хватало 4х20