FLProg
Вход на сайт
Логин:
Пароль:
Мы в VK
Поиск
Статистика


Яндекс.Метрика
Суббота, 03.12.2016, 05:26
Приветствую Вас Гость | RSS
Главная | Регистрация | Вход

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


Форум
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
Страница 1 из 212»
Модератор форума: support, Сергей 
Форум » Основной » Спросить у знатоков » Помогите пожалуйста с добавлением блока пользователя
Помогите пожалуйста с добавлением блока пользователя
Musada
Дата: Суббота, 20.08.2016, 22:59 | Сообщение # 1
Рядовой
Группа: Проверенные
Сообщений: 12
Награды: 0
Репутация: 0
Статус: Offline
Уважаемые знатоки здравствуйте! Прошу помогите вот с чем... Требуется в моем проекте на FBD возможность использования встроенного в Atmega 328 аппаратного компаратора для подключения датчика вибрации и работы с ним. К сожалению программный компаратор мне не подходит. Итак, если кому интересно, то вот схема подключения пьезо датчика к аппаратному компаратору (6 и 7 ноги):


Переменным резистором настраивается чувствительность срабатывания. В данном варианте при срабатывании датчика пищит динамик подключенный к 9 выводу ардуино (на схеме не указан). Можно заменить на любую другую команду.

Собственно вот пример скетча для работы с ним:


Код
void setup(){ACSR=(1<<ACIE)|(1<<ACIS1)|(1<<ACIS0);
DIDR1=(1<<AIN1D)|(1<<AIN0D);
}

ISR (ANALOG_COMP_vect) {
tone(9,1000,100);
}

void loop() {  }


АЦП в силу специфики работы трудно захватить пики сигнала, а компаратору легко. Результатом работы является запуск прерывания (6 строка) В нём можно выполнить любую команду. Писк на 9 ногу (7 строка) взят в качестве примера.

А теперь основной вопрос.. Я видел, в новой версии FLprog появилась возможность при добавлении пользовательского блока выбрать "Code". Подразумаваю, что можно добавить туда все необходимое из скетча выше. Но КАК? Я далёк от программирования и ума не приложу, что где указывать... Помогите пожалуйста..


Сообщение отредактировал Musada - Суббота, 20.08.2016, 23:02
 
Слимпер Дата: Воскресенье, 21.08.2016, 04:41 | Сообщение # 2
Генерал-лейтенант
Группа: Проверенные
Сообщений: 659
Награды: 25
Репутация: 23
Статус: Offline
Для начала посмотрите Пользовательский блок с кодом
Там пример как можно перенести код из примера в такой блок.
Да и хорошо давать ссылку на статью от куда брали код.
Тот код, что приведен, перенести можно без проблем, но что реально вы хотите от блока, вряд ли пищать динамиком.

Добавлено (21.08.2016, 04:41)
---------------------------------------------
Вот пару статей про работу с компаратором atmega
AVR. Учебный курс. Использование аналогового компаратора
Учебный курс AVR. Аналоговый компаратор
Так конечно не про Arduino IDE, но зато расписаны подробно регистры, что были настроены в вашем коде.

Сообщение отредактировал Слимпер - Воскресенье, 21.08.2016, 04:06
 
Musada Дата: Воскресенье, 21.08.2016, 10:40 | Сообщение # 3
Рядовой
Группа: Проверенные
Сообщений: 12
Награды: 0
Репутация: 0
Статус: Offline
Цитата Слимпер ()
хорошо давать ссылку на статью от куда брали код
Пардон. Вот источник - форум Ардуино

Цитата Слимпер ()
что реально вы хотите от блока, вряд ли пищать динамиком
Я хочу использовать встроенный аналоговый компаратор в проектах FLProg.

Добавлено (21.08.2016, 10:40)
---------------------------------------------
Черт... Ну не могу я это всё осилить..(( FLProg FBD осилил. Нравится. Всего-лишь нужен дополнительный блок аналогового компаратора.. Можете помочь/создать ? Пожалуйста))

Сообщение отредактировал Musada - Воскресенье, 21.08.2016, 10:28
 
Слимпер Дата: Воскресенье, 21.08.2016, 12:17 | Сообщение # 4
Генерал-лейтенант
Группа: Проверенные
Сообщений: 659
Награды: 25
Репутация: 23
Статус: Offline
Цитата Musada ()
Я хочу использовать встроенный аналоговый компаратор в проектах FLProg.
Опешите как вы его хотите использовать.
Почитал маленько про этот компаратор, возможны варианты.
1. Прерывания по имению состояния компаратора:
  • любое изменение на входе.
  • переход с 1 на 0

  • переход с 0 на 1

2. работа с таймером
3. просто считывание значения 

  • Использование напрямую входов AIN0(прямой вход) и AIN1(инверсный вход)
  •  подключение к прямому входу компаратора внутреннего источника опорного напряжения

  • подключение инверсного входа в к АЦП

 
И это я просто посмотрел в паре статей. Наверняка применений куда больше.

Так что если и браться делать, то надо понять что конкретно надо. Опешите подробно для чего вам надо.
Что должно быть на выходе блока?
 
Musada Дата: Воскресенье, 21.08.2016, 12:22 | Сообщение # 5
Рядовой
Группа: Проверенные
Сообщений: 12
Награды: 0
Репутация: 0
Статус: Offline
Банально подключив датчик вибрации, мне нужно чтобы на выходе блока был 0 или 1. Тоесть вибрация произошла - тогда 1. И конечно хочу иметь возможность настроить чувствительность. Если это возможно, то программно (тоесть в том же пользовательском блоке). Просто лень внедрять переменный резистор)) Слишком уж неудобно конструкция расположена.. Но если без этого никак, тогда внедрю.
 
Слимпер Дата: Воскресенье, 21.08.2016, 12:45 | Сообщение # 6
Генерал-лейтенант
Группа: Проверенные
Сообщений: 659
Награды: 25
Репутация: 23
Статус: Offline
Регулировка чувствительности программная точна не получится. Это наверное возможно при реализации внешней схемы и использование ШИМ в качестве задатчика порога.
Но там требуется схема преобразования в аналоговый сигнал хотя бы на основе RC фильтра.
Хотя в аналоговой схемотехники я слаб.

Цитата Musada ()
мне нужно чтобы на выходе блока был 0 или 1. Тоесть вибрация произошла - тогда 1.
Я так понял, что длительность сигнала мала. Так что после сработки датчика он быстро успокаивается.
Значит на выходе должен быть  одиночный импульс после сработки датчика, а потом снова ноль.

Если все так, то попробую вечеров сделать такой блок. Вроде ни чего сложного не вижу.


Сообщение отредактировал Слимпер - Воскресенье, 21.08.2016, 12:46
 
Musada Дата: Воскресенье, 21.08.2016, 12:57 | Сообщение # 7
Рядовой
Группа: Проверенные
Сообщений: 12
Награды: 0
Репутация: 0
Статус: Offline
Да, датчик буквально 50-100 миллисекундный импульс выдаёт. Выходной импульс самого блока-то не обязательно строить. Достаточно хоть на милисекунду "1" получить.. А как дальше с этой быстрой единицей быть - это уже таймерами я в проекте поизвращаюсь)) Я просто стремлюсь к минимализму и лишний код нежелателен.. Ну конечно, если сразу сделать импульс в пользовательском блоке - это буквально одна коротенькая строчечка, то почему-бы и нет? ))
 
Слимпер Дата: Воскресенье, 21.08.2016, 13:24 | Сообщение # 8
Генерал-лейтенант
Группа: Проверенные
Сообщений: 659
Награды: 25
Репутация: 23
Статус: Offline
Вот набросал блок на базе кода из первого сообщения. Должен выдавать одиночный импульс (т.е. на один программный цикл ).
Проверить смогу только вечером. Но может и так заработает.
Прикрепления: A_comparator-CO.ubi(11Kb)
 
Musada Дата: Воскресенье, 21.08.2016, 13:54 | Сообщение # 9
Рядовой
Группа: Проверенные
Сообщений: 12
Награды: 0
Репутация: 0
Статус: Offline
Вот спасибыч!)) Правда я только сам вечером доберусь до Ардуинки.... И нужен импульс не на один программный цикл, а чтобы каждый раз импульсил, как вибрирует))
 
Слимпер Дата: Воскресенье, 21.08.2016, 16:45 | Сообщение # 10
Генерал-лейтенант
Группа: Проверенные
Сообщений: 659
Награды: 25
Репутация: 23
Статус: Offline
Проверил срабатывает.
Цитата Musada ()
И нужен импульс не на один программный цикл, а чтобы каждый раз импульсил, как вибрирует))
Похоже мы говорим на разных языках.
Сейчас блока при каждом замыкании контакта подает одиночный импульс. И следующий импульс появится только когда контакт разомкнется и замкнется снова.
Это соответствует тому как было в приведенном коде из первого  сообщения, там звук тоже издавался один раз.

И для начало проверь как это будет работать с реальным датчиком.
 
Musada Дата: Воскресенье, 21.08.2016, 22:21 | Сообщение # 11
Рядовой
Группа: Проверенные
Сообщений: 12
Награды: 0
Репутация: 0
Статус: Offline
Понял. Благодарю ещё раз! Проверю всё - отпишу

Добавлено (21.08.2016, 22:21)
---------------------------------------------
Хныыыыы не добавляется((( Несколько раз пробовал((( FLProg 1.15

 
rw6cm Дата: Воскресенье, 21.08.2016, 23:37 | Сообщение # 12
Генерал-майор
Группа: Проверенные
Сообщений: 473
Награды: 43
Репутация: 31
Статус: Offline
все работает и с вибро и с пьезодатчиком.

PC, E8400, 3.5Gb, Win7-32, ver.FLP(portable)
 
Слимпер Дата: Понедельник, 22.08.2016, 05:50 | Сообщение # 13
Генерал-лейтенант
Группа: Проверенные
Сообщений: 659
Награды: 25
Репутация: 23
Статус: Offline
Цитата Musada ()
Хныыыыы не добавляется((( Несколько раз пробовал((( FLProg 1.15
Ну вот еще мини проект с этим блоком. Может копированием сможете перенести. 
Хотя специально проверил, нормально добавляется. Похоже у вас глюк. По пробуйте Портаельную версию
Прикрепления: ttttt.flp(55Kb)
 
Musada Дата: Понедельник, 22.08.2016, 11:15 | Сообщение # 14
Рядовой
Группа: Проверенные
Сообщений: 12
Награды: 0
Репутация: 0
Статус: Offline
О пардон, на другом компе добавился. Скажите, а как чувствительность менять и пин входа? Просто я думал, что в FLProg можно будет от входа соединение кинуть до блока.. А тут он как-будто самостоятельный))

Добавлено (22.08.2016, 11:15)
---------------------------------------------
Как его сцепить-то с "Датчик вибрации PIN 2" ? )))



Сообщение отредактировал Musada - Понедельник, 22.08.2016, 13:15
 
slavas Дата: Понедельник, 22.08.2016, 13:28 | Сообщение # 15
Подполковник
Группа: Проверенные
Сообщений: 264
Награды: 6
Репутация: 5
Статус: Offline
Если не ошибаюсь компаратор жестко привязан к пину, а именно к AIN0.
 
Форум » Основной » Спросить у знатоков » Помогите пожалуйста с добавлением блока пользователя
Страница 1 из 212»
Поиск:

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