FLProg
Вход на сайт
Логин:
Пароль:
Поиск
...
Статистика
Понедельник, 23.10.2017, 14:43
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

Поиск по сайту


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 212»
Модератор форума: support, Сергей 
Форум » Основной » Спросить у знатоков » Нехватает ресурсов Arduino или ошибки в блоках ??
Нехватает ресурсов Arduino или ошибки в блоках ??
Grafsaxar Дата: Среда, 19.07.2017, 10:23 | Сообщение # 1
Майор
Группа: Проверенные
Сообщений: 148
Награды: 2
Репутация: 2
Статус: Offline
Здравствуйте форумчане...
Сталкивался и раньше с проблемами нехватки ресурсов.
Например дальномер НС-04 и модбас не хотели работать на одной Нано.

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

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

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

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

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

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

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

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


У кошки четыре ноги: вход, выход, земля и питание.
> Но трогать её не моги: получится замыкание.
 
Sancho Дата: Среда, 19.07.2017, 11:09 | Сообщение # 2
Генерал-майор
Группа: Проверенные
Сообщений: 464
Награды: 13
Репутация: 13
Статус: Offline
Как вариант:
а. Перенеси всё, что касается отображения на дисплее и настроек
на отдельную плату.
б. Создай переменную на другой плате, назови, например "Lock".
с. Генерация двух импульсов происходит после нажатия кнопки "Пуск", которая также должна будет переводить до окончания второго  "Lock"в TRUE .
д. Отправляй сигнал на управление платой пункта а (создай условие Lock=FALSE).

Как-то так, надеюсь идею уловил...
Прикрепления: 6643136.png(36Kb)


Если не получится на контроллере - сделаю на тразисторах и 155/176...

Сообщение отредактировал Sancho - Среда, 19.07.2017, 11:21
 
Grafsaxar Дата: Среда, 19.07.2017, 11:30 | Сообщение # 3
Майор
Группа: Проверенные
Сообщений: 148
Награды: 2
Репутация: 2
Статус: Offline
Цитата Sancho ()
Как вариант:а. Перенеси всё, что касается отображения на дисплее и настроек
на отдельную плату.

Sancho спасибо за совет. идея хороша:))) Будет время проверю......


У кошки четыре ноги: вход, выход, земля и питание.
> Но трогать её не моги: получится замыкание.
 
Слимпер Дата: Среда, 19.07.2017, 15:22 | Сообщение # 4
Генерал-лейтенант
Группа: Проверенные
Сообщений: 973
Награды: 54
Репутация: 41
Статус: Online
Grafsaxar
Тут сказывается особенность работы блока вывода на дисплей.
Каждый вывод информации это довольно много данных передать надо по медленному интерфейсу.
А когда подключаем дисплей по I2C, проверял даже с двух строчным время программного цикла становится больше 100 мс, т.е. между двумя импульсами больше 0.1с.

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

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

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

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

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

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

Вот тема в которой было обсуждение
 
Grafsaxar Дата: Среда, 19.07.2017, 16:32 | Сообщение # 5
Майор
Группа: Проверенные
Сообщений: 148
Награды: 2
Репутация: 2
Статус: Offline
Цитата Слимпер ()
Вот тема в которой было обсуждение

Спасибо Слимпер.

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

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


У кошки четыре ноги: вход, выход, земля и питание.
> Но трогать её не моги: получится замыкание.
 
Слимпер Дата: Среда, 19.07.2017, 16:38 | Сообщение # 6
Генерал-лейтенант
Группа: Проверенные
Сообщений: 973
Награды: 54
Репутация: 41
Статус: Online
Если задачу так и не получится решить штатными средствами, обращайтесь попробую помочь с написание блока пользователя. Если будет время.
 
Grafsaxar Дата: Четверг, 20.07.2017, 12:29 | Сообщение # 7
Майор
Группа: Проверенные
Сообщений: 148
Награды: 2
Репутация: 2
Статус: Offline
Цитата Слимпер ()
Если задачу так и не получится решить штатными средствами, обращайтесь

Заранее благодарен..

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

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


У кошки четыре ноги: вход, выход, земля и питание.
> Но трогать её не моги: получится замыкание.


Сообщение отредактировал Grafsaxar - Четверг, 20.07.2017, 12:31
 
Слимпер Дата: Четверг, 20.07.2017, 14:02 | Сообщение # 8
Генерал-лейтенант
Группа: Проверенные
Сообщений: 973
Награды: 54
Репутация: 41
Статус: Online
Цитата Grafsaxar ()
Длина импулсов должна быть более менее точна.Находится в пределах 5-150 миллисекунд.
Пауза между импульсами не меняется , выставлена = 300 миллисекунд
Ну это понял. А теперь вопрос,  нужен блок который  генерирует, описанные выше, импульсы на выходе контроллера все время пока на входе есть логическая 1?


Сообщение отредактировал Слимпер - Четверг, 20.07.2017, 14:03
 
Sancho Дата: Четверг, 20.07.2017, 15:02 | Сообщение # 9
Генерал-майор
Группа: Проверенные
Сообщений: 464
Награды: 13
Репутация: 13
Статус: Offline
Вот попробовал сделать блок, не зависящий от I2C и дисплея.При подаче на старт импульса(фронт, положительного) любой длинны выдаст два импульса с паузой - за ОДИН цикл программы.
Не тестировал.

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


Если не получится на контроллере - сделаю на тразисторах и 155/176...

Сообщение отредактировал Sancho - Четверг, 20.07.2017, 15:46
 
Слимпер Дата: Четверг, 20.07.2017, 15:11 | Сообщение # 10
Генерал-лейтенант
Группа: Проверенные
Сообщений: 973
Награды: 54
Репутация: 41
Статус: Online
Хотел сделать блок с использованием прерываний и аппаратного таймера.

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


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

Так блок должен после нажатия сгенерировать именно 2 импульса и потом прекратить?
 
Sancho Дата: Четверг, 20.07.2017, 15:24 | Сообщение # 11
Генерал-майор
Группа: Проверенные
Сообщений: 464
Награды: 13
Репутация: 13
Статус: Offline
Цитата Слимпер ()
Но похоже на правильно понял суть задачи, сказывается не знание принципов работы сварочника.Так блок должен после нажатия сгенерировать именно 2 импульса и потом прекратить?
Я так понял...

Добавлено (20.07.2017, 15:24)
---------------------------------------------

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


Если не получится на контроллере - сделаю на тразисторах и 155/176...
 
Слимпер Дата: Четверг, 20.07.2017, 15:42 | Сообщение # 12
Генерал-лейтенант
Группа: Проверенные
Сообщений: 973
Награды: 54
Репутация: 41
Статус: Online
Sancho, Если использовать вашу идею выдачи двух импульсов в рамках одного программного цикла
То делать это надо примерно так

Хотя такой метод останавливает всю программу на это время т.е. 150+300+150 = 600 мс простоя
Прикрепления: 2_Pulse_NEW-COD.ubi(17Kb)


Сообщение отредактировал Слимпер - Четверг, 20.07.2017, 15:44
 
Sancho Дата: Четверг, 20.07.2017, 15:49 | Сообщение # 13
Генерал-майор
Группа: Проверенные
Сообщений: 464
Награды: 13
Репутация: 13
Статус: Offline
Сделал, настройка выходного(управляющего) пина в настройке блока.
Проверено.

Добавлено (20.07.2017, 15:49)
---------------------------------------------

Цитата Слимпер ()
То делать это надо примерно так
:) smile :) забыл о delay smile :) smile
Цитата Слимпер ()
Хотя такой метод останавливает всю программу на это время
Думаю, что в это время никто не будет смотреть на дисплей и т.д....
Прикрепления: Pulse_2_OK-CODE.ubi(18Kb)


Если не получится на контроллере - сделаю на тразисторах и 155/176...
 
Слимпер Дата: Четверг, 20.07.2017, 15:57 | Сообщение # 14
Генерал-лейтенант
Группа: Проверенные
Сообщений: 973
Награды: 54
Репутация: 41
Статус: Online
Цитата Sancho ()
Думаю, что в это время никто не будет смотреть на дисплей и т.д....
Ну так то да. Тогда это самый простой и надежный способ.
Я просто сперва понял, что надо генерировать не прерывные импульсы, тогда такой способ  не пошел бы.
 
Grafsaxar Дата: Суббота, 22.07.2017, 11:34 | Сообщение # 15
Майор
Группа: Проверенные
Сообщений: 148
Награды: 2
Репутация: 2
Статус: Offline
Sancho!! Спасибо огромное. Сильно помог. А так же ребятам за разжёвку проблемы. Всё заработало...

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

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

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


У кошки четыре ноги: вход, выход, земля и питание.
> Но трогать её не моги: получится замыкание.
 
Форум » Основной » Спросить у знатоков » Нехватает ресурсов Arduino или ошибки в блоках ??
Страница 1 из 212»
Поиск:

FLProg © 2017
Яндекс.Метрика