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

Простое меню на энкодере, дисплей 2004 по I2C с русификацией

Добавлено: 26.11.2018{, 11:50}
ingener
Есть простая задачка, при появлении на входе постянного напряжения, превышающего заданное значение, подается сигнал на таймер, который после также задаваемого значения задержки запускает ШИМ, который также регулируется задаваемым значением.
Вот вопрос, можно ли эти все три значения задавать с помощью LCD Keypad?
Подозреваю, что теоретически да, но все попытки понять, как это сделать, пока не удались((
Находятся или простые скетчи с названиями кнопок или сложные меню в коде, в которых не разобраться, да и не хочетстя после знакомтва с FLprog :)
Просьба подсказать, с чего и куда начинать двигаться в построении подобного меню в LCD Keypad.

LCD Keypad для задания аналоговых параметров

Добавлено: 26.11.2018{, 13:23}
ingener
av, генератор же в режиме регулировки длительности импульса, а пауза константа.
за ссылку спасибо, почитаем

LCD Keypad для задания аналоговых параметров

Добавлено: 26.11.2018{, 13:56}
ingener
av, управлять планируется внешним генератором, который управляется напряжением (среднее значение от ШИМ). А что значит "встроенный ШИМ"? В меню FLprog в разделе "таймеры" только генератор и таймер.
Внешний генератор приходится использовать потому, что так и не получилось сделать генератор из блока программы с предсказуемыми и необходимыми параметрами. Если нарисовать только один генератор, то он работает четко вплоть до десятков кГц, но если схема содержит еще блоки, то частота резко меняется в сторону снижения и управлять ею адекватно уже как-то не получается. Видимо влияет цикличность Ардуино.
Необходимые пределы изменения 250...3000Гц.

LCD Keypad для задания аналоговых параметров

Добавлено: 27.11.2018{, 16:07}
ingener
av, ОК, по ШИМ ясно. Но вот с меню что-то совсем плохо(( по ссылке все слишком сложно, многоступенчатые массивы... В данном случае достаточно было бы всего одного экрана
примерно так "U=12, V=10, t=3"
т.е задействовано как раз 15 символов одной строки (если считать и пробелы)
на второй строке можно просто вставить пстоянный текст типа названия проекта.
нужно просто иметь возможность менять значения на одном экране (курсор?)
каждая цифра меняет значение постоянной, которая может быть использована для аналогового управления блоками. Т.е. у дисплея 3 выхода (с точки зрения FLprog).
такая конфигурация в принципе возможна? :smile37:

LCD Keypad для задания аналоговых параметров

Добавлено: 27.11.2018{, 17:21}
ingener
av, в итоге нужно задавать три параметра
- частоту генератора в пределах примерно 250...1000Гц ( можно и даже удобнее цифрой от 1 до 10 ступенчато, если так проще). Если будет проще вместо генератора управлять ШИМ, то пусть будет ШИМ (в этом случае ген будет внешний, управляться этим самым ШИМом)
- напряжение в вольтах, 7....20 (конечно, значения эти не фактические, а индицируемые)
- время задержки, 0...10 сек

все эти значения желательно сохранять.
начальные можно взять примерно средние из указанных диапазонов ( соотв. 5, 14, 5)

PS - как для хорошо знакомого с дискретной электроникой, не будет проблемой, если каждый из упомянутых параметров будет выводиться просто в виде ШИМ сигнала на 3 выходах Ардуино. Доработать дальше до требуемого функционала уже совсем не вопрос.

LCD Keypad для задания аналоговых параметров

Добавлено: 28.11.2018{, 08:59}
ingener
av, спаcибо! Но что-то подсветка дисплея не работает, можно ее сделать постоянно горящей?
а то лишь при входе в меню загорается, если менять параметр "Р"
контроллер UNO
при компиляции FLprog и потом IDE ругались на отсутствие библиотек Timer Three-master и TimerOne.h
по инструкции с просторов интернета -
"...Библиотеку для таймера Timer3 можно скачать здесь (TimerThree.zip)
Для установки просто распакуйте и поместите файлы в каталог Arduino/hardware/libraries/Timer3/.
...Скачать можно здесь (TimerOne-r11.zip).
Для установки просто распакуйте и поместите файлы в каталог Arduino/hardware/libraries/Timer1/.

после этого FLprog все равно ругался, но IDE переварил нормально.

LCD Keypad для задания аналоговых параметров

Добавлено: 28.11.2018{, 09:53}
ingener
av, а параметр "Р" в Вашем меню за что отвечает?
И, кстати, в отличие от трех остальных параметров, он не запоминается (после перезагрузки он всегда ноль)
Именно если его изменить, то загорается подсветка и потом горит все время, пока находишься в меню. Но стоит перезагрузить, дисплей снова темный.
У шилда вроде бы по 10 входу регулируется подсветка ШИМ
А резистор не влияет, он меняет просто контраст, а тут выключается она полностью

LCD Keypad для задания аналоговых параметров

Добавлено: 28.11.2018{, 10:52}
ingener
av, Сорри, видимо, я не совсем четко обозначил задачу, не имея пока достаточно опыта в программировании. Попробую с более привычной точки зрения дискретной электроники. Действительно, не нужно три выхода, ведь два из них (U и t) используются только внутри схемы. Нужен только выход ШИМ или генератора, скважность или частота которого (V) задается в меню.
Вот структурная схема, на которой задаваемые программно параметры обозначены в виде сигналов с потенциометров.
Частота ШИМ, видимо, не принципиальна, т.к. сигнал все равно будет интерполироваться в постоянное напряжение для управления внешним генератором.

LCD Keypad для задания аналоговых параметров

Добавлено: 28.11.2018{, 11:28}
ingener
av,
попробую все по полочкам на уровне своих познаний FLprog
1) блок компаратора. На один вход подается внешнее напряжение 1...5В
На второй вход подается напряжение из меню LCD Keypad, в качестве параметра "U", с которым будет сравниваться входное внешнее напряжение.
2) блок таймера. Обеспечивает зхадержку включения. Время задержки задается параметром "t" из меню LCD Keypad.
3) ШИМ. включается по сигналу от таймера. Скважность задается из меню LCD Keypad параметром "V"

ЦАП - просто RC цепочка, которая из ШИМ будет создавать постоянное напряжение, пропорциональное скважности ШИМ. Далее будет схемка на отдельной микросхеме, ГУН (генератор, управляемый напряжением).

LCD Keypad для задания аналоговых параметров

Добавлено: 28.11.2018{, 13:14}
ingener
av, ничего менять в зависимости от входных сигналов не требуется.
Если срабатывает компаратор, то начинает рабоать таймер. Когда таймер закончит отсчет заданного времени, он включает генератор. Генератор задан как несимметричный мультивибратор с постоянной паузой и импульсом, длительность которого управляется по входу Val
Вот задача просто с помощью Keypad LCD задать эти три параметра управления блоками (на схеме для примера указаны произвольные цифры, вот их и нужно задавать)

LCD Keypad для задания аналоговых параметров

Добавлено: 28.11.2018{, 14:04}
ingener
av, вроде меню работает, и подсветка горит.
Огромное спасибо! :smile9: Дальше пока буду сам пытаться разбираться.
Сейчас вот вопрос, параметры V и U задаются в пределах 0...255, а параметр t - так и не дождался предела, до 2000 ждал, потом палец устал :)
Они принципиально разные?

LCD Keypad для задания аналоговых параметров

Добавлено: 28.11.2018{, 15:02}
ingener
av писал(а):
28.11.2018{, 14:55}
максимальный предел изменения значения "t" равен 32 секундам и 676 миллисекундам. Если этого диапазона мало для ваших нужд
Спасибо, этого более чем. Нужно максимум 10 сек с шагом 1 сек.

LCD Keypad для задания аналоговых параметров

Добавлено: 28.11.2018{, 20:44}
ingener
av, странное дело :smile37:
судя по схеме блоков, все параметры распределены правильно. Но по факту происходит вот что (смотрел осциллографом на 11 выходе)
- параметр t задает не время задержки таймера, а регулирует ШИМ
- компаратор работает, но параметр U работает в диапазоне 0...1В (т.е. 0=0В, 255=1В) - для расширения до 0...5В приходится ставить диапазон 0.....1250
- таймер вообще не работает, т.е. сигнал ШИМ появляется на выходе немедленно после появления сигнала на входе
- параметр V вообще ни на что не влияет

LCD Keypad для задания аналоговых параметров

Добавлено: 28.11.2018{, 21:22}
ingener
более того, попробовал вообще напрямую соединить V с ШИМ. И даже при этом в реальности ШИМ регулируется параметром t
а V ни на что не влияет.

LCD Keypad для задания аналоговых параметров

Добавлено: 28.11.2018{, 21:38}
ingener
Все, удалось разобраться методом "научного тыка".
Если поменять местами t и V, все работает согласно необходимой логике.
И компаратор, и таймер, и ШИМ
Хотя причина этого явления непонятна :smile37:

LCD Keypad для задания аналоговых параметров

Добавлено: 28.11.2018{, 22:38}
ingener
av писал(а):
28.11.2018{, 22:11}
Таймер работает по другому принципу ! Он выдает только импульс с задержкой
разве? вроде бы таймер включается (или выключается) насовсем после заданного промежутка времени
av писал(а):
28.11.2018{, 22:11}
какая разница что вы поменяли местами переменные "V" и "t"
по схеме получается, что они управляют теперь другими блоками - но по факту они стали управлять так как нужно. Вот это непонятно.... :smile37:

LCD Keypad для задания аналоговых параметров

Добавлено: 28.11.2018{, 23:10}
ingener
av, а можно как-то добавить запятую в значении параметра на дисплее? Например, напряжение неудобно задавать как 50....200, а вот 5,0...20,0 было бы вполне красиво.

LCD Keypad для задания аналоговых параметров

Добавлено: 28.11.2018{, 23:28}
ingener
av писал(а):
28.11.2018{, 23:21}
Вы проверили проект ШИМ ? Работает ?
Смогу только завтра вечером. Но, наверное, нет необходимости менять алгоритм работы таймера. Сигнал же на входе не импульсный, а постоянный. Поэтому нужно просто задержать его передачу дальше, с чем штатный таймер как раз справляется.

LCD Keypad для задания аналоговых параметров

Добавлено: 29.11.2018{, 21:58}
ingener
av писал(а):
28.11.2018{, 23:33}
Просто сигнал на входе передать на выход с задержкой ?
Сигнал на входе (постоянный т.е. достаточно длительный) сравнить с задаваемым уровнем.
если он больше по уровню, то запустить таймер с задаваемой задержкой.
сигнал с выхода таймера запускает ШИМ с задаваемым значением скважности.
функционально это все очень просто. А "мурыжим" именно то, что надо задавать с помощью меню LCD Keypad shield.

LCD Keypad для задания аналоговых параметров

Добавлено: 29.11.2018{, 23:26}
ingener
av, сорри, пока не было возможности проверить. Надеюсь завтра.
В принципе, корректно работает и изначальный проект, если поменять местами V и t
Все же до конца понять не могу - имеете в виду, что формирует длительность импульса не блок ШИМ (выход 11), а сам таймер?
Поэтому, задавая значение на входе таймера, мы фактически задаем ширину импульса ШИМ?
Если так, то как объяснить, что после перемены местами V и t начинает работать и задержка в секундах, и регулироваться скважность ШИМ? :smile37:
у меня такая версия - задержка появления сигналов на выходе обеспечивается не таймером, а блоком переключателя?