Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
Ответить

Re: Часы на люминесцентных индикаторах.

Вт янв 14, 2020 10:59:14

А как подбирали количество витков, что бы вписаться в напряжение/ток на накал?
True RMS вольтметр использовали или "на глаз"?

Re: Часы на люминесцентных индикаторах.

Вт янв 14, 2020 12:16:36

А как подбирали количество витков, что бы вписаться в напряжение/ток на накал?
True RMS вольтметр использовали или "на глаз"?

Я когда делал блок питания на 1211ЕУ1 намотал на кольце первичку 7 витков проводом 0,5, вторичку на накал - 1 виток тоже 0,5.
На анодное витков 60 0,15.Вполне ярко светит и накал не раскаляется.
Если осциллограф есть - то можно и проконтролировать
На CD4047 схемка не заработала- грелись полевики. По моему не успевал закрываться один полевик, в то время,как открывался другой.

Re: Часы на люминесцентных индикаторах.

Сб янв 18, 2020 19:25:44

Когда-то ковырялся с знакосинтезирующими дисплеями Futaba и просто ради интереса вывел на них дату/время получаемые с DS3231.
По многочисленным просьбам трудящихся выкладываю скетч с программкой. Для работы требуется библиотека DS3231M, которую можно скачать из меню "Tools - Manage libraries..." в Arduino IDE, либо с github, либо из архива со скетчем. Библиотеку поместить в папку "Документы/Arduino/libraries"
Модуль DS3231 подключается к портам I2C (для arduino nano это A4(SDA) и A5(SCL).
Установка даты времени осуществляется через терминал при помощи команды "SETDATE гггг-мм-дд ЧЧ:ММ:СС". К примеру SETDATE 2020-01-19 02:50:02. Обязательно должен быть символ конца строки Newline или Both NL&CR. Скорость 9600.
Изображение Изображение
Вложения
Futaba_clock.zip
(279.02 KiB) Скачиваний: 275

Re: Часы на люминесцентных индикаторах.

Вс янв 19, 2020 15:57:37

SAU
Накал ламп соединён последовательно 3х2 с подпоркой через диоды. Аноды по польской схеме через ULN2003.
Плохая схема. Единственное что сделано не через жопу - это DS3231.

Re: Часы на люминесцентных индикаторах.

Чт янв 23, 2020 23:45:55

Спрошу на вдруг повезёт.
Хочу часики замутить на ардуино и 1307, будет мега168 или 328 наверно.
Индикация нестандартная 13 сегментная, регистры 595 5 штук.
Может кто подкинет кусочек или алгоритм как в этом всём время настраивать.
Обычно делают синхронизацию с компа или спутника, но хотелось бы кнопочками

Re: Часы на люминесцентных индикаторах.

Пт янв 24, 2020 08:08:45

Мне нравится алгоритм, как в часах "Электроника 2-11". Кнопка "Выбор" заставляет мигать очередной разряд. Кнопка "Установ" увеличивает то, что мигает, на 1, если минуты или часы, или сбрасывает в 0, если секунды.

Добавлено after 43 seconds:
Если сложно с миганием, то можно сделать как в часах на К176ИЕ13. Одна кнопка увеличивает минуты, другая - часы.

Re: Часы на люминесцентных индикаторах.

Вс янв 26, 2020 00:13:37

Спрошу на вдруг повезёт.
Хочу часики замутить на ардуино и 1307, будет мега168 или 328 наверно.
Индикация нестандартная 13 сегментная, регистры 595 5 штук.
Может кто подкинет кусочек или алгоритм как в этом всём время настраивать.
Обычно делают синхронизацию с компа или спутника, но хотелось бы кнопочками

Ну я вешал на 2 кнопки прерывания.
Первая кнопка- вход в режим,переключение настройки часы-минуты, выход из режима и запись в ЧРВ.Контролируется просто- инкрементом байтовой переменной.Например
1-вход и настраиваем часы
2-настраиваем минуты
3-запись в ЧРВ


Ну а второй кнопкой , в зависимости от переменной , увеличиваем по кругу часы или минуты.
Прерывание по спаду с обработкой дребезга

Re: Часы на люминесцентных индикаторах.

Вт янв 28, 2020 11:34:47

iiiytn1k, Тоже ковыряюсь с дисплеями от касс. Нужна помощь котов. Попался дисплейчик типа RGVFD9CB1010, подключил его к 8266 без проблем, текст выводится. Но русский шрифт там вот такого плана:
Изображение
В принципе норм но некоторые символы просто выбешивают.
Нашел на него мануал, там говорится что можно создавать кастомные символы. Это выход, кривых в шрифте не так много, можно поправить. Но не получается. Управляется эта мандула через сериал. Чтобы убедиться что вообще управление работает пробуем порулить яркостью. Мануал нам говорит следующее:
adjust brightness: 1F 58 n (01h<=n<=04h)
Проверяем. Выведем на дисплей чтонибудь чтобы видеть изменения:
mySerial.println(" \217\220\205\202\205\204");
Появляется надпись "ПРЕВЕД". Далее отправляем последовательность команд
mySerial.write(0x1F);
mySerial.write(0x58);
mySerial.write(0x01); //(01-20%, 02-40%, 03-60%, 04-100%)

Яркость замечательно изменяется. Значит мы на верном пути. Можно тоже самое запилить одной строкой:
mySerial.print("\37\130\1");//яркость минимум
mySerial.print("\37\130\4");//яркость максимум

С этим разобрались. Курим мануал далее...
define user-defined character:
1B 26 01 n m ...
20h<n<=m<=FFh
01h<=a<=05h
00h<=p<=FFh

Ага... Тут уже сложнее
для начала: 0х1B 0х26 0х01 : говорим что будем добавлять символ
далее: 0х20 0х20 0х05 : код с 20h по 20h, будет наш символ 5 байтов
и потом передаем те самые 5 байтов описывающих новый символ: 0х12 0х2A 0х7F 0х2A 0х24 (тут для примера нарисован символ €)
Как расчитать символ 5х7 тут писать не буду, инфа есть в инете. Ну или если комуто будет интересно напишу, сейчас суть не в этом.
Тоесть подав эту последовательность команд мы создадим новый кастомный символ € с кодом 0х20. Пробуем
mySerial.write(0х1B);
mySerial.write(0х26);
mySerial.write(0х01);

mySerial.write(0х20);
mySerial.write(0х20);
mySerial.write(0х05);

mySerial.write(0х12);
mySerial.write(0х2A);
mySerial.write(0х7F);
mySerial.write(0х2A);
mySerial.write(0х24);

и уже на этом этапе понимаем что нифига не получилось так как на дисплей вылазит мусор. Соответственно добавление не удалось.
Соответственно попытки напечатать символ
mySerial.write(0х20);
ничего не дают. В мануале сказано что
select/cancel user-defined character set: 1B 25 n n=00h, 01h
Следовательно чтобы использовать сохраненные символы нужно сначала сделать
mySerial.write(0х1B);
mySerial.write(0х25);
mySerial.write(0х01);

Потом вывести символ и после этого вернуться к обычному шрифту
mySerial.write(0х1B);
mySerial.write(0х26);
mySerial.write(0х00);

Но всё это смысла не имеет ибо символ у нас не сохранился (
Что делаю не так?
Вложения
Custom Displ.ay VFD Manual.pdf
(1.29 MiB) Скачиваний: 200

Re: Часы на люминесцентных индикаторах.

Вт янв 28, 2020 13:49:58

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

С точки зрения пользовательских символов их можно разделить на две группы:
1) Те, в которые можно загрузить не более двух символов с произвольными адресами
2) Те, в которые можно загрузить много символов, но только подряд.

Загрузку Вы производите верно, если Ваш дисплей второго типа. Вот как у меня загружались 4 символа по адресам 0xB0...0xB3:
Спойлер
Код:
//Loading user chars
  uart_putchar(0x1B);
  uart_putchar(0x26);
  uart_putchar(0x01);
  uart_putchar(0xB0);
  uart_putchar(0xB3);
  uart_putchar(0x05); //Columns in one char
  uart_putchar(pgm_read_byte(&char_pattern_rus_yo[0]));
  uart_putchar(pgm_read_byte(&char_pattern_rus_yo[1]));
  uart_putchar(pgm_read_byte(&char_pattern_rus_yo[2]));
  uart_putchar(pgm_read_byte(&char_pattern_rus_yo[3]));
  uart_putchar(pgm_read_byte(&char_pattern_rus_yo[4]));
  uart_putchar(0x05);
  uart_putchar(pgm_read_byte(&char_pattern_rus_YO[0]));
  uart_putchar(pgm_read_byte(&char_pattern_rus_YO[1]));
  uart_putchar(pgm_read_byte(&char_pattern_rus_YO[2]));
  uart_putchar(pgm_read_byte(&char_pattern_rus_YO[3]));
  uart_putchar(pgm_read_byte(&char_pattern_rus_YO[4]));
  uart_putchar(0x05);
  uart_putchar(pgm_read_byte(&char_pattern_rus_zh[0]));
  uart_putchar(pgm_read_byte(&char_pattern_rus_zh[1]));
  uart_putchar(pgm_read_byte(&char_pattern_rus_zh[2]));
  uart_putchar(pgm_read_byte(&char_pattern_rus_zh[3]));
  uart_putchar(pgm_read_byte(&char_pattern_rus_zh[4]));
  uart_putchar(0x05);
  uart_putchar(pgm_read_byte(&char_pattern_rus_ZH[0]));
  uart_putchar(pgm_read_byte(&char_pattern_rus_ZH[1]));
  uart_putchar(pgm_read_byte(&char_pattern_rus_ZH[2]));
  uart_putchar(pgm_read_byte(&char_pattern_rus_ZH[3]));
  uart_putchar(pgm_read_byte(&char_pattern_rus_ZH[4]));

Разрешение использования пользовательских символов работает немного иначе. Команды 0x1B 0x25 0x01 и 0x1B 0x25 0x00 глобально (по всему индикатору) включают и выключают отображение пользовательских символов. (Кстати, у Вас почему-то во второй команде 0x26 - это неверно!)
Это влияет на все символы, и на те, что были выведены ранее, и на те, которые выводятся после применения этих команд. Я просто перед загрузкой символов (при инициализации дисплея) выдал первую команду:
Спойлер
Код:
  //Set (enable) user defined characters
  uart_putchar(0x1B);
  uart_putchar(0x25);
  uart_putchar(0x01); //set (enable)      


То, что уже на этапе загрузки на индикатор выводится мусор, может говорить о том, что нужно использовать другой формат загрузки, как для индикаторов группы 1 в моей терминологии. Для них загрузка производится так:
Спойлер
Код:
  uart_putchar(0x1B);
  uart_putchar(0x26);
  uart_putchar(address);
  uart_putchar(pgm_read_byte(&pattern[0]));
  uart_putchar(pgm_read_byte(&pattern[1]));
  uart_putchar(pgm_read_byte(&pattern[2]));
  uart_putchar(pgm_read_byte(&pattern[3]));
  uart_putchar(pgm_read_byte(&pattern[4]));

То есть указывается не диапазон адресов, а один адрес, и не нужно указывать ширину символа, она всегда равна 5.
Для тех индикаторов, которые использовал я, можно было загрузить максимум два символа. При загрузке следующего он заменял собой самый старый загруженный символ.

Наконец, для разных индикаторов различается порядок битов в пяти байтах, описывающих символ. Мне попалось два разных варианта. Но это Вы у себя сами можете определить, когда загрузка заработает.

Re: Часы на люминесцентных индикаторах.

Вт янв 28, 2020 16:30:52

*Trigger*, Спасибо! По крайней мере понятно что я на верном пути )
(Кстати, у Вас почему-то во второй команде 0x26 - это неверно!)

Всё верно, просто промазал :)
Нашел в загашнике еще дисплей вот такой:
СпойлерИзображение
Изображение

Совершенно другой агрегат с USB интерфейсом(ну как ЮСБ, внутри пролифик юсб-ком и преобразователь 5в-12в) совершенно другой платой и такимже угробищным шрифтом.
Но всё дело в том что именно этот дисплей стоял на кассе в магазине и "Добро пожаловать" на нем было совершенно другим красивым шрифтом. Это наводит на мысль что в эту сволочь таки можно заливать пользовательские шрифты.

Пока особо времени не было, попробовал на скорую руку
mySerial.write(0x1B);
mySerial.write(0x26);
mySerial.write(0xB0);
mySerial.write(0х12);
mySerial.write(0х2A);
mySerial.write(0х7F);
mySerial.write(0х2A);
mySerial.write(0х24);

К сожалению толку тоже не добился. Чувствую что-то не так делаю... На первом дисплее есть переключатели
Firich/CD5220
Epson
Aedex
DSP800
На втором это переключается командами. Может в этом дело. Вечером засяду за эксперименты... :)
Последний раз редактировалось AndrewSW Вт янв 28, 2020 21:37:06, всего редактировалось 1 раз.

Re: Часы на люминесцентных индикаторах.

Вт янв 28, 2020 16:56:04

Насколько я понимаю, в режиме Firich можно грузить много символов (команда с диапазоном адресов), в режиме Epson - загрузка командой с одним адресом и без ширины символа.

Для проверки и поиска верных команд удобно подключить дисплей к ПК и из программы-терминала вручную слать команды. Если отправлять по одному байту, можно увидеть, в каком месте появляется мусор на индикаторе.
Я так искал верные команды.

Кстати, в шрифтах тех индикаторов, что попались мне, были перепутны местами буквы "Ь" и "Ъ". :))

Re: Часы на люминесцентных индикаторах.

Вт янв 28, 2020 17:15:46

Сейчас так и делаю. Всё что пытаюсь послать после 1B 26 попадает на дисплей в виде мусора.
Предварительно 1B 25 01 отправил, не влияет.
Ввожу 1B 26 01 - на дисплей выводится β
Если предположить что нужно указывать сразу адрес и байты нового символа то в случае
1B 26 3B 80 - на дисплей выводится "пробел А" то есть по адресу 3В у нас пусть и он попытался его напечатать вместо того чтобы воспринимать его как адрес для нового символа. Получается вообще 1В 26 не работает...

Re: Часы на люминесцентных индикаторах.

Вт янв 28, 2020 18:49:56

Переведите переключателями дисплей в режим Firich (важно!) и отправьте вот эту последовательность (в кавычках - обычные символы):
Код:
0x1B 0x40
0x63 'R'
0x1B 0x66 'A'
0x1B 0x25 0x01
0x1B 0x26 0x01 0xB0 0xB0 0x05 0x12 0x2A 0x7F 0x2A 0x24

Делать это нужно после подачи питания на индикатор, не отправляя до этого ничего.

Потом проверьте, загрузилось ли что-нибудь по адресу 0xB0.

У меня такой вариант заведомо работает. Возможно, у Вас проблемы с командой 0x1B 0x26 из-за того, что до этого какая-то команда была отправлена неверно, из-за чего нарушилась разбивка входной последовательности байт на команды.

Re: Часы на люминесцентных индикаторах.

Вт янв 28, 2020 20:29:18

В режиме Firich заработало!
Даже без этого:

0x1B 0x40
0x63 'R'
0x1B 0x66 'A'


Вот эта конструкция отрабатывает без проблем:

0x1B 0x25 0x01
0x1B 0x26 0x01 0xB0 0xB0 0x05 0x12 0x2A 0x7F 0x2A 0x24


Спасибо огромное за помощь! Дальше работа нудная но знакомая ) описать побитно нужные символы, прописать функцию преобразования строк и дальше буду писать часы с синхронизацией через инет, погодным информером, преферансом и поэтессами :)

Наконец то человеческая буква Д! Еще десять тысяч ведер и золотой ключик наш! :))
СпойлерИзображение


З.Ы. На третьем символе задолбался... Нет какогонибудь сервиса типа такого: http://arduino.on.kg/redaktor-simvolov-dlya-matric-5h7 чтобы переводил в нужный формат? Задумался что написать такой не сильно сложно, может сначала этим заняться... :roll:

Re: Часы на люминесцентных индикаторах.

Вт янв 28, 2020 21:57:09

Первые три команды - сброс и выбор наборов символов. В принципе, реально мне требовалось только выбрать русский набор символов. У Вас он, наверное, выбран по умолчанию.

Насчёт автоматизации кодирования символов. Я делал так:
Спойлер
Код:
#define MV_BIT(data, src, dst) (((data) & (1 << (src))) ? (1 << (dst)) : 0)
#define VFD_CHAR_PATTERN(row0, row1, row2, row3, row4, row5, row6, spec) \
  0                  | MV_BIT(row0, 4, 6) | MV_BIT(row1, 4, 5) | MV_BIT(row2, 4, 4) | \
  MV_BIT(row3, 4, 3) | MV_BIT(row4, 4, 2) | MV_BIT(row5, 4, 1) | MV_BIT(row6, 4, 0)  ,\
  0                  | MV_BIT(row0, 3, 6) | MV_BIT(row1, 3, 5) | MV_BIT(row2, 3, 4) | \
  MV_BIT(row3, 3, 3) | MV_BIT(row4, 3, 2) | MV_BIT(row5, 3, 1) | MV_BIT(row6, 3, 0)  ,\
  0                  | MV_BIT(row0, 2, 6) | MV_BIT(row1, 2, 5) | MV_BIT(row2, 2, 4) | \
  MV_BIT(row3, 2, 3) | MV_BIT(row4, 2, 2) | MV_BIT(row5, 2, 1) | MV_BIT(row6, 2, 0)  ,\
  0                  | MV_BIT(row0, 1, 6) | MV_BIT(row1, 1, 5) | MV_BIT(row2, 1, 4) | \
  MV_BIT(row3, 1, 3) | MV_BIT(row4, 1, 2) | MV_BIT(row5, 1, 1) | MV_BIT(row6, 1, 0)  ,\
  0                  | MV_BIT(row0, 0, 6) | MV_BIT(row1, 0, 5) | MV_BIT(row2, 0, 4) | \
  MV_BIT(row3, 0, 3) | MV_BIT(row4, 0, 2) | MV_BIT(row5, 0, 1) | MV_BIT(row6, 0, 0)

const PROGMEM uint8_t char_pattern_rus_sh[] =
{
  VFD_CHAR_PATTERN
  
(
    0b00000,
    0b00000,
    0b10101,
    0b10101,
    0b10101,
    0b10101,
    0b11111,
    0b000
  
)
};

const PROGMEM uint8_t char_pattern_rus_shch[] =
{
  VFD_CHAR_PATTERN
  
(
    0b00000,
    0b00000,
    0b10101,
    0b10101,
    0b10101,
    0b11111,
    0b00001,
    0b000
  
)
};


Для такого простого формата (естественный порядок, символы глазами видно!) наверняка есть готовые программы (я нужные буквы сделал вручную, их не так много, даже для четырёх разных индикаторов), а биты пусть переставляет компилятор.

Re: Часы на люминесцентных индикаторах.

Вт янв 28, 2020 22:18:12

*Trigger*, Спасибо еще раз! Возьму на вооружение.
Начал причесывать шрифт. Сверху было, снизу стало:
СпойлерИзображение

Уже чтото нарисовывается )
СпойлерИзображение

Re: Часы на люминесцентных индикаторах.

Ср янв 29, 2020 04:16:09

Ъ и Ь специально в обратном порядке или так было в прошивке дисплея?

Re: Часы на люминесцентных индикаторах.

Ср янв 29, 2020 09:49:07

Ъ и Ь специально в обратном порядке или так было в прошивке дисплея?

В дисплеях перепутано ) У меня сейчас разобрано два совершенно разных по железу, так в обоих

Re: Часы на люминесцентных индикаторах.

Сб фев 01, 2020 18:13:19

Часы из магазинного дисплея покупателя
СпойлерИзображение

В качестве мозгов ESP8266 WEMOS D1 mini. Пока функционала практически никакого. При старте часов создается точка доступа с именем VFDClock и паролем 123456. Нужно подключиться к ней и зайдя на страницу 192.168.4.1 прописать доступ к своей ВайФай сети. После этого часы перезапустятся и подключившись к сети синхронизируются с NTP. Если всё прошло удачно то начинают отображать время на дисплее.
Отладка пока в сериал, настройки в скетче, Подключены 4 кнопки, но еще не прописаны. По сути пока заготовка, но уже прикольно )))

Re: Часы на люминесцентных индикаторах.

Вт фев 04, 2020 06:37:53

А подробнее можно?
Ответить