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

Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
Аватара пользователя
daaar
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Пн июн 13, 2016 19:37:24
Откуда: Perm
Контактная информация:

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

Сообщение daaar »

Собрал часы на ИЛЦ2-12/8Л-Р и ESP8266. Преобразователь КФ1211ЕУ1, rtc DS3231, контроллер ВЛИ PT6311B-LQ.
Изображение Изображение Изображение
Прошивка(прошивка кривая и написана чисто для проверки, при нажатии на кнопку происходит синхронизация с NTP и рисует IP):
Спойлер

Код: Выделить всё

#include <NTPClient.h>
#include <ESP8266WiFi.h>
#include <ESP8266mDNS.h>
#include <WiFiUdp.h>
#include <ArduinoOTA.h>
#include <SPI.h>
#include <Wire.h>
#include <uRTCLib.h>
#include <String.h>

#ifndef STASSID
#define STASSID "WIFI_SSID"
#define STAPSK  "PASS"
#endif
#define GMT 5

const char* ssid = STASSID;
const char* password = STAPSK;

WiFiUDP ntpUDP;
NTPClient timeClient(ntpUDP);
uRTCLib rtc(0x68);

byte brightness = 0b111;
int dispBuf[] = {' ', ' ', ' ', '0', '0', '-', '0', '0', '-', '0', '0', ' ', ' '};

void SendByte(byte data){
  digitalWrite(16, LOW);
  SPI.transfer(data);
  digitalWrite(16, HIGH);
  delayMicroseconds(100);
}

void updateDisplay(){
  int symb[512];
  symb[' '] = 0;
  symb['-'] = 0b100;
  symb['0'] = 0b111000001011;
  symb['1'] = 0b1010;
  symb['2'] = 0b110000000111;
  symb['3'] = 0b100000001111;
  symb['4'] = 0b1000001110;
  symb['5'] = 0b101000001101;
  symb['6'] = 0b111000001101;
  symb['7'] = 0b1011;
  symb['8'] = 0b111000001111;
  symb['9'] = 0b101000001111;
  symb['.'] = 0b10000;
  symb['•'] = 0b100000;
  symb['0'+256] = symb['0'] | symb['.'];
  symb['1'+256] = symb['1'] | symb['.'];
  symb['2'+256] = symb['2'] | symb['.'];
  symb['3'+256] = symb['3'] | symb['.'];
  symb['4'+256] = symb['4'] | symb['.'];
  symb['5'+256] = symb['5'] | symb['.'];
  symb['6'+256] = symb['6'] | symb['.'];
  symb['7'+256] = symb['7'] | symb['.'];
  symb['8'+256] = symb['8'] | symb['.'];
  symb['9'+256] = symb['9'] | symb['.'];
  SendByte(0b01000000); //cmd2
  digitalWrite(16, LOW);
  SPI.transfer(0b11000000); //cmd3
  for(int i = 0; i < 13; i++){
    SPI.transfer(byte(symb[dispBuf[i]]));
    SPI.transfer(byte(symb[dispBuf[i]]>>8));
    SPI.transfer(0b00000000);
  }
  digitalWrite(16, HIGH);
}

void setup() {
  //ota
  Serial.begin(115200);
  Serial.println("Booting");
  WiFi.mode(WIFI_STA);
  WiFi.begin(ssid, password);
  while (WiFi.waitForConnectResult() != WL_CONNECTED) {
    Serial.println("Connection Failed! Rebooting...");
    delay(5000);
    ESP.restart();
  }
  ArduinoOTA.onStart([]() {
    String type;
    if (ArduinoOTA.getCommand() == U_FLASH) {
      type = "sketch";
    } else { // U_FS
      type = "filesystem";
    }

    // NOTE: if updating FS this would be the place to unmount FS using FS.end()
    Serial.println("Start updating " + type);
  });
  ArduinoOTA.onEnd([]() {
    Serial.println("\nEnd");
  });
  ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) {
    Serial.printf("Progress: %u%%\r", (progress / (total / 100)));
  });
  ArduinoOTA.onError([](ota_error_t error) {
    Serial.printf("Error[%u]: ", error);
    if (error == OTA_AUTH_ERROR) {
      Serial.println("Auth Failed");
    } else if (error == OTA_BEGIN_ERROR) {
      Serial.println("Begin Failed");
    } else if (error == OTA_CONNECT_ERROR) {
      Serial.println("Connect Failed");
    } else if (error == OTA_RECEIVE_ERROR) {
      Serial.println("Receive Failed");
    } else if (error == OTA_END_ERROR) {
      Serial.println("End Failed");
    }
  });
  ArduinoOTA.begin();
  Serial.println("Ready");
  Serial.print("IP address: ");
  Serial.println(WiFi.localIP());
  //my code

  pinMode(15, INPUT);
  pinMode(2, OUTPUT);
  pinMode(16, OUTPUT);
  digitalWrite(2, HIGH);
  digitalWrite(16, HIGH);
  SPI.begin();
  SPI.setBitOrder(LSBFIRST);
  SPI.setClockDivider(SPI_CLOCK_DIV128);
  SPI.setDataMode(SPI_MODE3);
  SendByte(0b01000000); //cmd2
  digitalWrite(16, LOW);
  SPI.transfer(0b11000000); //cmd3
  for(int i = 0; i < 13; i++){
    SPI.transfer(0);
    SPI.transfer(0);
    SPI.transfer(0);
  }
  digitalWrite(16, HIGH);
  delayMicroseconds(100);
  SendByte(0b00001100); //cmd1
  SendByte(0b10001111); //cmd4

  Wire.begin(4, 5);
  timeClient.begin();
  timeClient.update();
  //RTCLib::set(byte second, byte minute, byte hour, byte dayOfWeek, byte dayOfMonth, byte month, byte year)
  rtc.set(timeClient.getSeconds(), timeClient.getMinutes(), timeClient.getHours()+GMT, 1, 20, 4, 20);
}

void loop() {
  ArduinoOTA.handle();
  updateDisplay();
  rtc.refresh();
  dispBuf[3] = '0' + rtc.hour()/10;
  dispBuf[4] = '0' + rtc.hour()%10;
  dispBuf[6] = '0' + rtc.minute()/10;
  dispBuf[7] = '0' + rtc.minute()%10;
  dispBuf[9] = '0' + rtc.second()/10;
  dispBuf[10] = '0' + rtc.second()%10;
  if(rtc.hour() > 21 || rtc.hour() < 8 && brightness == 0b111){
    SendByte(0b10001000);
    brightness = 0b000;
  }
  if(rtc.hour() >= 8 && rtc.hour() <= 21 && brightness == 0b000){
    SendByte(0b10001111);
    brightness = 0b111;
  }
  if(digitalRead(15)){
    timeClient.update();                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        
    rtc.set(timeClient.getSeconds(), timeClient.getMinutes(), timeClient.getHours()+GMT, 1, 20, 4, 20);
    for(int i = 1; i < 13; i++) dispBuf[i] = ' ';
    IPAddress kk = WiFi.localIP();
    String k = kk.toString();
    int l = 1;
    for(int i = 0; i < k.length(); i++){
      if(k[i] != '.') 
        if(i != k.length() - 2 && k[i+1] == '.') dispBuf[l++] = k[i] + 256; else dispBuf[l++] = k[i];
    }
    updateDisplay();
    while(digitalRead(15))delay(50);
    for(int i = 1; i < 13; i++) dispBuf[i] = ' ';
    dispBuf[3] = '0' + rtc.hour()/10;
    dispBuf[4] = '0' + rtc.hour()%10;
    dispBuf[5] = '-';
    dispBuf[6] = '0' + rtc.minute()/10;
    dispBuf[7] = '0' + rtc.minute()%10;
    dispBuf[8] = '-';
    dispBuf[9] = '0' + rtc.second()/10;
    dispBuf[10] = '0' + rtc.second()%10;
  }
  delay(50);
}
Вложения
pcb.rar
(39.26 КБ) 450 скачиваний
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

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

Сообщение uldemir »

стабилитрон задом наперед нарисован. И 7в за много. обычно 7в - это максимально допустимое обратное напряжение.
А люди посмотрят и скажут: "Собаки летят. Вот и осень."
Аватара пользователя
daaar
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Пн июн 13, 2016 19:37:24
Откуда: Perm
Контактная информация:

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

Сообщение daaar »

Стабилитрон нарисован действительно не правильно, но собрано все верно. Напряжения стабилитрона подбирал экспериментально, чтобы визуально не было засветки не горящих сегментов
pcb432
Мудрый кот
Сообщения: 1808
Зарегистрирован: Пт мар 26, 2010 17:16:52
Откуда: Kazan

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

Сообщение pcb432 »

daaar, Дисплей просит бегущую строку :) .
Неэффективно используется, 4 разряда пустые.
За применение драйвера VFD +, упрощается управление любыми дисплеями от двд и т.п. техники.
Аватара пользователя
daaar
Держит паяльник хвостом
Сообщения: 920
Зарегистрирован: Пн июн 13, 2016 19:37:24
Откуда: Perm
Контактная информация:

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

Сообщение daaar »

[uquote="pcb432",url="/forum/viewtopic.php?p=3840813#p3840813"]Неэффективно используется, 4 разряда пустые.[/uquote]
Уже нет, потихоньку допиливаю код. Сейчас показывается температура с openweathermap, также сделал библиотеку для работы с pt6311 и подобными

Добавлено after 2 minutes 7 seconds:
Про бегущую строку задумался, наверное сделаю чтобы прогноз показывал или текущие погодные условия
Аватара пользователя
iiiytn1k
Встал на лапы
Сообщения: 94
Зарегистрирован: Ср дек 25, 2013 17:46:38
Откуда: Челябинск

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

Сообщение iiiytn1k »

Спас сегодня от экстерминации вот таких красавцев - Электроника 25 и Электроника 13.11. Состояние типичное гаражное, но рабочее.
Индикаторы подсевшие, у обоих специфический износ люминофора в виде диагональных полос.
Изображение Изображение Изображение
Аватара пользователя
iiiytn1k
Встал на лапы
Сообщения: 94
Зарегистрирован: Ср дек 25, 2013 17:46:38
Откуда: Челябинск

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

Сообщение iiiytn1k »

Отмыл, отбелил корпус, отполировал стекло, заменил дохлые конденсаторы. Вот такой аппарат получился:
Изображение
СпойлерЧасы построены на ка1035хл1, новодел 2000 года выпуска. Потемнение на текстолите - там стоял одноваттный резистор 100 ом, стоящий в цепи питания к174ун9 и к174ха34 и дико грелся. Так как радио и будильник мне не нужны, то убрал его. После замены конденсаторов ушло мерцание индикатора и выросла его яркость, теперь износа люминофора практически не видно.
Изображение Изображение
Аватара пользователя
Борисович
Поставщик валерьянки для Кота
Сообщения: 1966
Зарегистрирован: Ср май 10, 2017 16:03:11
Откуда: Тверская область

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

Сообщение Борисович »

Не поделитесь,как корпус отбеливали.
Аватара пользователя
iiiytn1k
Встал на лапы
Сообщения: 94
Зарегистрирован: Ср дек 25, 2013 17:46:38
Откуда: Челябинск

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

Сообщение iiiytn1k »

Перекись водорода высокой концентрации (30-40%) + ультрафиолетовая лампа или прямой солнечный свет (не через стекло).
В прошлом году отбеливал механическую клавиатуру 1991 года выпуска:
На ночь оставлял с ультрафиолетовой лампой на 9W (лампа снизу):
Изображение
Такой результат за 5 часов:
Изображение
В целом что получилось:
Изображение

Электроника 25 в процессе. Передняя часть корпуса уже отбелилась, верхнюю только поставил. До этого они были одного цвета.
Изображение
Аватара пользователя
Борисович
Поставщик валерьянки для Кота
Сообщения: 1966
Зарегистрирован: Ср май 10, 2017 16:03:11
Откуда: Тверская область

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

Сообщение Борисович »

Первый раз вижу такой хороший результат и с описанием технологии.А где такую перекись можно найти?
А восстановление цветных поверхностей не делали? У самого есть несколько советских часов ,но с плохим состоянием поверхностей корпусовИзображение.
В особенности занятна "Электроника-2"( слева),которой за 40 лет.Но пока встречал рекомендации только шкурить и красить
pcb432
Мудрый кот
Сообщения: 1808
Зарегистрирован: Пт мар 26, 2010 17:16:52
Откуда: Kazan

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

Сообщение pcb432 »

iiiytn1k, Мне кажется поверхность пластика, после такой химобработки, будет ускорено разрушаться.
Видимо нужен защитный лак сверху.
LEVV2006
Грызет канифоль
Сообщения: 286
Зарегистрирован: Сб фев 06, 2010 20:39:59

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

Сообщение LEVV2006 »

Привет Всем!
Собираю часы на индикаторе ИВЛ1-7/5. В драйвере лампы использую микросхему max6921AWI.

И вот с ней у меня проблема. При статическом зажигании одной цифры все работает нормально. Цифра горит ярко и на аноде\сетке напряжение 40в.
Стоит включить динамическую индикацию то уже 4 цифры горят тускло. Напряжение анода\сетки 20в.

Частота обновления 244Гц. Напряжение до микросхемы не проседает и остается в 40в.

Кто нибудь использовал данную микросхему? Я уже не знаю в каком направлении копать....

Код по передачи данных в МАХ.

Код: Выделить всё

	//MAX_PORTX |= (1<<MAX_BLANK);
	for (int i=19;i>=0;i--)
	{
		if (temp&(1<<i))
			MAX_PORTX |= (1<<MAX_DIN);
		else
			MAX_PORTX &= ~(1<<MAX_DIN);
			
		MAX_PORTX |= (1<<MAX_CLK);	
		MAX_PORTX &= ~(1<<MAX_CLK);
	}
	
	MAX_PORTX |= (1<<MAX_LOAD);
	MAX_PORTX &= ~(1<<MAX_LOAD);
	
	MAX_PORTX &= ~(1<<MAX_BLANK);
Вложения
MAX6921.pdf
(137.48 КБ) 395 скачиваний
kollaider
Держит паяльник хвостом
Сообщения: 910
Зарегистрирован: Сб мар 07, 2015 20:48:22
Откуда: Московская область

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

Сообщение kollaider »

Это "чудо" называется динамическая индикация. Отстаньте от микросхемы. Она исправна.
watchmaker
Поставщик валерьянки для Кота
Сообщения: 2179
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков
Контактная информация:

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

Сообщение watchmaker »

Стоит включить динамическую индикацию то уже 4 цифры горят тускло. Напряжение анода\сетки 20в.
20 В для ИВЛ1 в динамике маловато, надо поднимать до 25..30.
Последний раз редактировалось watchmaker Вт июн 02, 2020 01:01:17, всего редактировалось 1 раз.
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
LEVV2006
Грызет канифоль
Сообщения: 286
Зарегистрирован: Сб фев 06, 2010 20:39:59

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

Сообщение LEVV2006 »

[uquote="watchmaker",url="/forum/viewtopic.php?p=3849260#p3849260"]надо поднимать до 25..30.[/uquote]
Блин. была проблема по питанию и проседал накал немного. Макетка все таки не надежное решение... Надо быть внимательней.
Свечение стало ярче, но не намного.
Хочу закупить транзисторы и собрать драйвер на них. Просто при тестировании блока питания я соединял все выводы и подавал напряжение. Все сегменты ярко светились и я хочу чтобы так все и было в динамическом режиме.
Аватара пользователя
АлександрЛ
Друг Кота
Сообщения: 43811
Зарегистрирован: Пн ноя 30, 2009 03:00:01
Откуда: Нерезиновая

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

Сообщение АлександрЛ »

[uquote="LEVV2006",url="/forum/viewtopic.php?p=3849299#p3849299"]Просто при тестировании блока питания я соединял все выводы и подавал напряжение. Все сегменты ярко светились и я хочу чтобы так все и было в динамическом режиме.[/uquote]
А ничего, что просто при подаче питания на индикатор, у вас СТАТИЧЕСКАЯ индикация, а при динамической индикации у вас каждая цифра ПО ВРЕМЕНИ светится меньше во столько раз, сколько цифр у вас на индикаторе? А "инерционности" у ВЛИ нет!.

зы.. Это снижение яркости даже используют, например, в часах на 176ИЕ18- там есть вывод "яркость", при "активации" которого в два раза "укорачивается" импульс сигнала на "общий электрод" индикатора (для ВЛИ- на сетку)
LEVV2006
Грызет канифоль
Сообщения: 286
Зарегистрирован: Сб фев 06, 2010 20:39:59

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

Сообщение LEVV2006 »

[uquote="АлександрЛ",url="/forum/viewtopic.php?p=3849318#p3849318"][uquote="LEVV2006",url="/forum/viewtopic.php?p=3849299#p3849299"]а при динамической индикации у вас каждая цифра ПО ВРЕМЕНИ светится меньше во столько раз, сколько цифр у вас на индикаторе? А "инерционности" у ВЛИ нет!.[/uquote]
Я знаю что яркость может снизится при динамической индикации. Но индикатор будет стоять за зеленым стеклом как в оригинальных часах. И тогда вообще не видно будет что там отображается.
Соберу драйвер на транзисторах. Хочу поэкспериментировать..... :)
kollaider
Держит паяльник хвостом
Сообщения: 910
Зарегистрирован: Сб мар 07, 2015 20:48:22
Откуда: Московская область

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

Сообщение kollaider »

Задирать напряжения, вариантов нет. А за зеленым стеклом читаемость только улучшится, на то оно и зеленое.
Аватара пользователя
Sergei Frolov
Опытный кот
Сообщения: 769
Зарегистрирован: Вт дек 08, 2009 18:24:20
Откуда: Питер
Контактная информация:

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

Сообщение Sergei Frolov »

Индикатор опознаете?
Изображение
watchmaker
Поставщик валерьянки для Кота
Сообщения: 2179
Зарегистрирован: Вс ноя 15, 2009 23:13:59
Откуда: Харьков
Контактная информация:

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

Сообщение watchmaker »

Все сегменты ярко светились и я хочу чтобы так все и было в динамическом режиме.
Тогда надо поднимать напряжение до 50..70 В. Но при этом срок службы индикатора будет не больше нескольких недель.

Добавлено after 2 minutes 20 seconds:
Индикатор опознаете?
Очень странный, колба явно от ИВ-28 первых версий (не удивлюсь, если он ещё и совместим пин в пин). Какая-нибудь маркировка на нём есть? Что это вообще за устройство?
Иногда мой питомец уходит в такую спячку, что разбудить его можно только щелчком по первой ноге...
Ответить

Вернуться в «Умные мысли»