26

Re: Ретро часы на ИВ-6

fp пишет:

И ещё нюанс.
В строке
"    if(analogRead(A3)>900){hour--;delay(300);if(hour<0){hour=0;}}"
условие никогда не сработает, ибо hour это байт и 0-- станет 255.
По идее надо так
"    if(analogRead(A3)>900){hour--;delay(300);if(hour>23){hour=23;}}"

Аналогично и с другими значениями.

Да, все верно пишите, но лучше просто все переменные сделать INT
Правки в скетч я внес.

27 (2019-12-07 19:37:36 отредактировано fp)

Re: Ретро часы на ИВ-6

liman324 пишет:

Более простым решением было бы применить обычный маломощный трансформатор с тремя обмотками, первая на 1.2 В, вторая на 27 В и третья для стабилизатора 5 В. Но тут сами смотрите, как лучше. Для меня важным было питать часы без лишних хлопот от обычной зарядки телефона.

В идеале конечно так. Но это надо рассчитать трансформатор, потом его намотать, прикрутить генератор... Несколько лень. P.S. Нашёл очень простое решение http://esxema.ru/?p=2435

Я поступил проще:
1. 5 В -> 27 В. Взял готовый модуль MT3608 (типа такого ru.aliexpress.com/item/32814211566.html)
2. 5 В -> 1,2 В. Взял готовый модуль на MP1584EN (типа такого ru.aliexpress.com/item/32706909050.html)

28

Re: Ретро часы на ИВ-6

По поводу секунд.
Так как за один раз вывод идёт всего на одну лампу, то можно использовать дешифратор типа К155ИД7. На выводах D9-D11 будем указывать номер лампы, немного изменить программу и по идее должно работать.

http://forum.rcl-radio.ru/uploads/images/2019/12/2414289cb87738cdd1ea8b568f7da0d5.png

29

Re: Ретро часы на ИВ-6

Можно и так, К155ИД7 подходит, у ней инверсный выход.

30

Re: Ретро часы на ИВ-6

А вот так будет работать?
http://forum.rcl-radio.ru/uploads/images/2019/12/29537c4b5302181d0bde725cbcdb5f14.png

31

Re: Ретро часы на ИВ-6

Сложный вопрос, теоретически должно получится, но ток сетки лампы достаточно большой, все же лучше использовать транзисторный ключ. Я использовал эту микросхему только для газоразрядных ламп.

32 (2019-12-15 22:04:26 отредактировано Feanor)

Re: Ретро часы на ИВ-6

Добрый вечер.
Как и обещал преобразователь на MC34063.
Рабочая частота 17кГц. Почти ничего не греется.
Нюансы - нужен полевик с малым напряжением открытия, со старой материнки подойдет, я ставил 35N07 потому, что он у меня есть.
Собрано в макетке, транзисторы драйвера BC546-BC556 можно заменить в SMD корпусе, 846 и 856 соответственно. Диод D1 можно заменить более мощным.
Дроссель L4 47-100мкГн необходим для нормальной работы MC34063, иначе начнется самовозбуждение и
импульсы на выходе будут парными. Полевой транзистор открывается импульсом напряжения в 2Uпит. для этого предназначена обмотка самопитания.
Намотать основной дроссель думаю можно и на кольце меньшего размера.
Резисторы R1-R2 считаются в любом онлайн-калькуляторе, единственное, что можно поставить подстроечный для более точной подгонки выходного напряжения.
Данный контент доступен только зарегистрированным пользователям.

33

Re: Ретро часы на ИВ-6

Очень интересное решение, эта схема будет весьма полезна пользователям сайта.

34

Re: Ретро часы на ИВ-6

Почему бы не воспользоваться микросхемой серии ULN 2003A? Конечно, питание уже не будет от 5В, но монтаж должен будет облегчиться.

35

Re: Ретро часы на ИВ-6

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

36

Re: Ретро часы на ИВ-6

Проверьте, пожалуйста, в железе, скетч с корректировкой времени. Потому что, скетч без корректировки времени работает, но там не мигает тире. А во втором, постоянно показывает какие-то цифры, и один из индикаторов постоянно погашен. А в целом, очень хороший проект.

37

Re: Ретро часы на ИВ-6

Потому что, скетч без корректировки времени работает, но там не мигает тире.

В конец блока setup вставьте:

clock.setOutput(DS3231_1HZ);

Коррекция времени - скетч на стадии тестирования, в него нужно добавить три кнопки как на схеме.

38

Re: Ретро часы на ИВ-6

Собственно, вчера ночью, пока тестировал, не смог реализовать мигание точек, так как не шарю в программировании.))) Поэтому реализовал через blink arduino и pin13. Но, загорелся идеей пользователя Feanor, установив 8 индикаторов, для часов, минут и секунд. При этом, отпадает необходимость мигать точками. Но пока не смог реализовать ход секунд в сегментах А[4], А[5], так как, повторюсь, что не соображаю в программировании.

39

Re: Ретро часы на ИВ-6

Как у Вас реализовано питание нитей накала ламп?
Для секунд я допишу скетч. Если меняли скетч то опубликуйте его.

40

Re: Ретро часы на ИВ-6

Я взял готовый модуль на MP1584EN, как было предложено выше, понизив напряжение до 1 вольта. У меня как раз было несколько таких. Нити накала соединены параллельно. Повышайка на МТ3608. Скетч особо не менял. Взял за основу тот, что без коррекции.

#include <MsTimer2.h>
#include <Wire.h>
#include <DS3231.h>
DS3231 clock;RTCDateTime DateTime;
  int an, segm,times,i;
  byte a[4];

void setup(){  Wire.begin();clock.begin();
MsTimer2::set(5, to_Timer);MsTimer2::start();
  // clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
pinMode(9,OUTPUT);  // D9  === A0
pinMode(10,OUTPUT); // D10 === A1
pinMode(11,OUTPUT); // D11 === A2
pinMode(12,OUTPUT); // D12 === A3
pinMode(2,OUTPUT);  // D2  === a
pinMode(3,OUTPUT);  // D3  === b
pinMode(4,OUTPUT);  // D4  === c
pinMode(5,OUTPUT);  // D5  === d
pinMode(6,OUTPUT);  // D6  === e
pinMode(7,OUTPUT);  // D7  === f
pinMode(8,OUTPUT);  // D8  === g
pinMode(13,OUTPUT);// D13  === dp

}

void loop(){
  DateTime=clock.getDateTime();// опрос времени
  times = DateTime.hour*100+DateTime.minute;
  a[0]=times/1000;
  a[1]=times/100%10;
  a[2]=times/10%10;
  a[3]=times%10%10;

  digitalWrite(13, HIGH);
  delay(500);
  digitalWrite(13, LOW);
  delay(500);
}// loop

void to_Timer(){
  switch(i){
    case 0: segm=a[0]; an=0; anod(); segment();delay(2);break;
    case 1: segm=a[1]; an=1; anod(); segment();delay(1);break;
    case 2: segm=a[2]; an=2; anod(); segment();break;
    case 3: segm=a[3]; an=3; anod(); segment();break;}i++;if(i>3){i=0;}}


void segment(){
  switch(segm){                                                                 
             //  A       B       C       D       E       F       G 
    case 0: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,1);break;// 0
    case 1: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// 1
    case 2: ch(2,0);ch(3,0);ch(4,1);ch(5,0);ch(6,0);ch(7,1);ch(8,0);break;// 2
    case 3: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,1);ch(7,1);ch(8,0);break;// 3   
    case 4: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,0);ch(8,0);break;// 4
    case 5: ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// 5
    case 6: ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// 6
    case 7: ch(2,0);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// 7
    case 8: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// 8
    case 9: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// 9 
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(9,0);ch(10,1);ch(11,1);ch(12,1);break; 
    case 1:ch(9,1);ch(10,0);ch(11,1);ch(12,1);break;
    case 2:ch(9,1);ch(10,1);ch(11,0);ch(12,1);break;
    case 3:ch(9,1);ch(10,1);ch(11,1);ch(12,0);break;
  }}

  void ch(int pin, int logic){digitalWrite(pin,logic);}

41

Re: Ретро часы на ИВ-6

Для мигания секунд загрузите скетч:
используйте выход sqw ds3231

#include <MsTimer2.h>
#include <Wire.h> 
#include <DS3231.h>
DS3231 clock;RTCDateTime DateTime;
  int an, segm,times,i;
  byte a[4];
 
void setup(){  Wire.begin();clock.begin();
MsTimer2::set(5, to_Timer);MsTimer2::start();
  // clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
 pinMode(9,OUTPUT);  // D9  === A0
 pinMode(10,OUTPUT); // D10 === A1
 pinMode(11,OUTPUT); // D11 === A2
 pinMode(12,OUTPUT); // D12 === A3
 pinMode(2,OUTPUT);  // D2  === a
 pinMode(3,OUTPUT);  // D3  === b
 pinMode(4,OUTPUT);  // D4  === c
 pinMode(5,OUTPUT);  // D5  === d
 pinMode(6,OUTPUT);  // D6  === e
 pinMode(7,OUTPUT);  // D7  === f
 pinMode(8,OUTPUT);  // D8  === g
clock.setOutput(DS3231_1HZ);
}
 
void loop(){ 
  DateTime=clock.getDateTime();// опрос времени
  times = DateTime.hour*100+DateTime.minute;
  a[0]=times/1000;
  a[1]=times/100%10;
  a[2]=times/10%10;
  a[3]=times%10%10;
 }// loop
 
void to_Timer(){ 
  switch(i){
    case 0: segm=a[0]; an=0; anod(); segment();delay(2);break;
    case 1: segm=a[1]; an=1; anod(); segment();delay(1);break;
    case 2: segm=a[2]; an=2; anod(); segment();break;
    case 3: segm=a[3]; an=3; anod(); segment();break;}i++;if(i>3){i=0;}}
 
 
void segment(){
  switch(segm){                                                                 
             //  A       B       C       D       E       F       G  
    case 0: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,1);break;// 0 
    case 1: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// 1
    case 2: ch(2,0);ch(3,0);ch(4,1);ch(5,0);ch(6,0);ch(7,1);ch(8,0);break;// 2
    case 3: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,1);ch(7,1);ch(8,0);break;// 3   
    case 4: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,0);ch(8,0);break;// 4 
    case 5: ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// 5 
    case 6: ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// 6 
    case 7: ch(2,0);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// 7 
    case 8: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// 8
    case 9: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// 9  
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(9,0);ch(10,1);ch(11,1);ch(12,1);break;  
    case 1:ch(9,1);ch(10,0);ch(11,1);ch(12,1);break; 
    case 2:ch(9,1);ch(10,1);ch(11,0);ch(12,1);break;
    case 3:ch(9,1);ch(10,1);ch(11,1);ch(12,0);break;
  }}

  void ch(int pin, int logic){digitalWrite(pin,logic);}

http://rcl-radio.ru/wp-content/uploads/2019/11/iv-6_1.gif

42

Re: Ретро часы на ИВ-6

У вас уже собраны часы с секундами или только для часов и минут?

43

Re: Ретро часы на ИВ-6

Уже все собрано. Всего 8 индикаторов. Управление сетками выведено как А[4] и  A[5], на схеме. Базы транзисторов подключены на пины D0 и D1 Arduino. Часы в данный момент работают, просто последние два индикатора светятся постоянно, так как не прописано управление секундами в скетче. Я вместо минут ставил секунды в скетче, они идут, но не смог их запустить на последних индикаторах.

44

Re: Ретро часы на ИВ-6

Для секунд скетч готов тестируйте, для дополнительных ламп используйте выходы 0 и 1, если прошивка пойдет с ошибками, то на время прошивки отсоединение провода от выходов 0 и 1

#include <MsTimer2.h>
#include <Wire.h>
#include <DS3231.h>
DS3231 clock;RTCDateTime DateTime;
  int an, segm,i;
  byte a[6];

void setup(){  Wire.begin();clock.begin();
MsTimer2::set(2, to_Timer);MsTimer2::start();
  // clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  
pinMode(9,OUTPUT);  // D9  === A0
pinMode(10,OUTPUT); // D10 === A1
pinMode(11,OUTPUT); // D11 === A2
pinMode(12,OUTPUT); // D12 === A3
pinMode(0,OUTPUT); // D0 === A4
pinMode(1,OUTPUT); // D1 === A5

pinMode(2,OUTPUT);  // D2  === a
pinMode(3,OUTPUT);  // D3  === b
pinMode(4,OUTPUT);  // D4  === c
pinMode(5,OUTPUT);  // D5  === d
pinMode(6,OUTPUT);  // D6  === e
pinMode(7,OUTPUT);  // D7  === f
pinMode(8,OUTPUT);  // D8  === g


}

void loop(){
  DateTime=clock.getDateTime();// опрос времени
  a[0]=DateTime.hour/10;
  a[1]=DateTime.hour%10;
  a[2]=DateTime.minute/10;
  a[3]=DateTime.minute%10;
  a[4]=DateTime.second/10;
  a[5]=DateTime.second%10;

}// loop

void to_Timer(){
  switch(i){
    case 0: segm=a[0]; an=0; anod(); segment();break;
    case 1: segm=a[1]; an=1; anod(); segment();break;
    case 2: segm=a[2]; an=2; anod(); segment();break;
    case 3: segm=a[3]; an=3; anod(); segment();break;
    case 4: segm=a[4]; an=4; anod(); segment();break;
    case 5: segm=a[5]; an=5; anod(); segment();break;
    }
    i++;if(i>5){i=0;}}


void segment(){
  switch(segm){                                                                 
             //  A       B       C       D       E       F       G 
    case 0: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,1);break;// 0
    case 1: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// 1
    case 2: ch(2,0);ch(3,0);ch(4,1);ch(5,0);ch(6,0);ch(7,1);ch(8,0);break;// 2
    case 3: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,1);ch(7,1);ch(8,0);break;// 3   
    case 4: ch(2,1);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,0);ch(8,0);break;// 4
    case 5: ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// 5
    case 6: ch(2,0);ch(3,1);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// 6
    case 7: ch(2,0);ch(3,0);ch(4,0);ch(5,1);ch(6,1);ch(7,1);ch(8,1);break;// 7
    case 8: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,0);ch(7,0);ch(8,0);break;// 8
    case 9: ch(2,0);ch(3,0);ch(4,0);ch(5,0);ch(6,1);ch(7,0);ch(8,0);break;// 9 
  }}
void anod(){
  switch(an){                                                             
    case 0:ch(9,0);ch(10,1);ch(11,1);ch(12,1);ch(0,1);ch(1,1);break; 
    case 1:ch(9,1);ch(10,0);ch(11,1);ch(12,1);ch(0,1);ch(1,1);break;
    case 2:ch(9,1);ch(10,1);ch(11,0);ch(12,1);ch(0,1);ch(1,1);break;
    case 3:ch(9,1);ch(10,1);ch(11,1);ch(12,0);ch(0,1);ch(1,1);break;
    case 4:ch(9,1);ch(10,1);ch(11,1);ch(12,1);ch(0,0);ch(1,1);break;
    case 5:ch(9,1);ch(10,1);ch(11,1);ch(12,1);ch(0,1);ch(1,0);break;
  }}

  void ch(int pin, int logic){digitalWrite(pin,logic);}

45

Re: Ретро часы на ИВ-6

Спасибо! Все работает! Увидел свои ошибки, которые пытался внести в скетч. Все хорошо, но появилось мерцание всех индикаторов, которое напрягает глаза. Питание проверил, даже исключил из схемы последние три индикатора, накал и 27 вольт не просажены. Источники питания тоже не при делах. Используется профессиональный лабораторник. При загрузке предыдущего скетча, данный эффект пропадает. но секунды, соответственно, не бегут.

46

Re: Ретро часы на ИВ-6

Просто уменьшите период динамической индикации
MsTimer2::set(5, to_Timer);MsTimer2::start();
заменить на
MsTimer2::set(2, to_Timer);MsTimer2::start();

47

Re: Ретро часы на ИВ-6

Все работает! Спасибо! Готов поддержать проект! Потребление схемы 200-300 мА. Если будет возможность, хотелось бы увидеть скетч с корректировкой времени.

48

Re: Ретро часы на ИВ-6

Если не сложно, сделайте фото индикаторов часов и разместите на форуме, а я на основной странице проекта размещу фото и ссылку на скетч.
Корректировку сделать можно, надо повесить кнопки на аналоговые входы (резистор 10 К на GND, коммутация на +5 В), а так же алгоритм коррекции времени (что нажимать и когда). И соответственно Ваше тестирование.

49 (2020-02-16 16:42:52 отредактировано 2080_johnny)

Re: Ретро часы на ИВ-6

Проект на стадии разработки. Частично, на макетной плате. Пока только так. Хотел проверить работоспособность.  Камера не передает так, как видит глаз. Попробую в темноте сделать.
http://forum.rcl-radio.ru/uploads/images/2020/02/630eb1ca2ffd4892e8c1d91bbcf61b3a.jpg

50

Re: Ретро часы на ИВ-6

Так тоже нормально, фото и ссылку на сайте я разместил. Может кому будет интересно.