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

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#1

Сообщение ingener » 26.11.2018{, 11:50}

Есть простая задачка, при появлении на входе постянного напряжения, превышающего заданное значение, подается сигнал на таймер, который после также задаваемого значения задержки запускает ШИМ, который также регулируется задаваемым значением.
Вот вопрос, можно ли эти все три значения задавать с помощью LCD Keypad?
Подозреваю, что теоретически да, но все попытки понять, как это сделать, пока не удались((
Находятся или простые скетчи с названиями кнопок или сложные меню в коде, в которых не разобраться, да и не хочетстя после знакомтва с FLprog :)
Просьба подсказать, с чего и куда начинать двигаться в построении подобного меню в LCD Keypad.
Вложения
test1.JPG
test1.flp
(36.72 КБ) 99 скачиваний
Последний раз редактировалось ingener 02.09.2019{, 14:06}, всего редактировалось 3 раза.

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#2

Сообщение ingener » 26.11.2018{, 13:23}

av, генератор же в режиме регулировки длительности импульса, а пауза константа.
за ссылку спасибо, почитаем

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#3

Сообщение ingener » 26.11.2018{, 13:56}

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

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#4

Сообщение ingener » 27.11.2018{, 16:07}

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

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#5

Сообщение ingener » 27.11.2018{, 17:21}

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

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

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

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#6

Сообщение ingener » 28.11.2018{, 08:59}

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 переварил нормально.

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#7

Сообщение ingener » 28.11.2018{, 09:53}

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

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#8

Сообщение ingener » 28.11.2018{, 10:52}

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

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#9

Сообщение ingener » 28.11.2018{, 11:28}

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

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

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#10

Сообщение ingener » 28.11.2018{, 13:14}

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

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#11

Сообщение ingener » 28.11.2018{, 14:04}

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

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#12

Сообщение ingener » 28.11.2018{, 15:02}

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

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#13

Сообщение ingener » 28.11.2018{, 20:44}

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

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#14

Сообщение ingener » 28.11.2018{, 21:22}

более того, попробовал вообще напрямую соединить V с ШИМ. И даже при этом в реальности ШИМ регулируется параметром t
а V ни на что не влияет.
Вложения
av51.JPG

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#15

Сообщение ingener » 28.11.2018{, 21:38}

Все, удалось разобраться методом "научного тыка".
Если поменять местами t и V, все работает согласно необходимой логике.
И компаратор, и таймер, и ШИМ
Хотя причина этого явления непонятна :smile37:
Вложения
avok.JPG

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#16

Сообщение ingener » 28.11.2018{, 22:38}

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

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#17

Сообщение ingener » 28.11.2018{, 23:10}

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

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#18

Сообщение ingener » 28.11.2018{, 23:28}

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

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#19

Сообщение ingener » 29.11.2018{, 21:58}

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

Аватара пользователя
ingener
Лейтенант
Сообщения: 556
Зарегистрирован: 14.10.2018{, 00:26}
Репутация: 20
Имя: Андрей

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

#20

Сообщение ingener » 29.11.2018{, 23:26}

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

Ответить

Вернуться в «Помогите, а то я "нимагу"»