| Ваш IP: 3.235.74.184 | Online(29) - гости: 15, боты: 14 | Загрузка сервера: 0.42 ::::::::::::


Ретро часы на ИВ-22 (Arduino)

На платформе Arduino можно сделать часы на одноразрядных вакуумно-люминисцентных индикаторах ИВ-22. Часы питаются от напряжения 5 В, но в схеме применен стабилизатор 7805 позволяющий использовать напряжение больше 5 В. Если источник питания который Вы используете на напряжение 5 В, то стабилизатор 7805 из схемы нужно исключить.

Часы состоят из нескольких частей:

  • Плата Arduino Nano, Mini или Uno
  • Модуль часов реального времени DS3231
  • Импульсный преобразователь напряжения 27 В
  • Блок индикации

ИВ-22 — люминисцентный семисегментный индикатор зелёного цвета свечения. Индикатор ИВ-22 выполнен в стеклянной колбе с жесткими выводами. Индикация осуществляется через купол баллона. Аноды прибора выполнены в виде семи сегментов и десятичной точки.

#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(4, to_Timer);MsTimer2::start();
  // clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
  clock.setOutput(DS3231_1HZ);
 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
}
 
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;
  }
 
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;}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);}

Библиотеки

MsTimer2.zip

DS3231.zip

Транзистор IRF740 и стабилизатор необходимо установить на небольшие теплоотводы, так же для уменьшения тока потребления рекомендуется увеличить сопротивления на коллекторах транзисторов BC547 до оптимального значения (при увеличении сопротивления не должна существенно падать яркость свечения индикаторов).

Комментарии

  • Anton:

    Добрый день! Подскажите, пожалуйста, как устанавливать время. Спасибо.

    • liman28:

      Установка времени кнопками не предусмотрена, только по времени компиляции, но вы можете добавить две кнопки и в loop() в самое начало добавить:
      (нужны новые переменные: int h,m,x; )

      if(analogRead(A0)>900){x=1;h++;if(h>23){h=0;}delay(200);}
      if(analogRead(A1)>900){x=1;m++;if(m>59){m=0;}delay(200);}

      и в setup() в самый конец:

      DateTime=clock.getDateTime();// опрос времени
      h = DateTime.hour;
      m = DateTime.minute;

      if(x==1){x=0;clock.setDateTime(2020, 1, 28, h, m, 0);}

  • Anton:

    Понял, спасибо. А, если без кнопок, то в скетче ничего изменять не надо? Время автоматически выставится по времени компиляции?

    • liman28:

      Нет, не автоматически:
      clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
      залить скетч (установка времени)
      // clock.setDateTime(__DATE__, __TIME__); // Устанавливаем время на часах, основываясь на времени компиляции скетча
      снова залить скетч

  • Anton:

    А есть ли какое то правило, по которому устанавливается дата и время. То есть вместо __DATE__ вписывать, например, 22.03.2020, а вместо __TIME__ вписывать 11:51? Извиняюсь, если задаю глупые вопросы, просто я совсем в этом новичок и хочу разобраться. Спасибо.

  • Anton:

    Понял, спасибо вам большое за помощь.

  • Интересная схема, жаль что нет разводки платы, кстати повышающий преобразователь можно сделать с помощью шима ардуины, без 555 таймера. Примерно по этой схеме. Меняя сопротивление R6 и (или) скважность шима, можно подобрать вольтаж.

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • Радиомикрофон-маркер

    Радиомикрофон-маркер

    Сигнал от этого радиомикрофона можно принимать на обычный радиоприемник УКВ ЧМ с диапазоном 64-108МГц, дальность действия 15 метров. Особенность радиомикрофона в том что он конструктивно собран в корпусе толстого фломастера — маркера и внешне будет не похож на радиомикрофон. Схема собрана навесным монтажом, схема и конструкция радиомикрофона показаны на рисунке. …Подробнее...
  • LA4663 — 2-канальный УМЗЧ 20Вт

    LA4663 — 2-канальный УМЗЧ 20Вт

    ИМС LA4663 — 2-канальный усилитель мощности звуковой частоты предназначен для компактных стерео систем. Микросхема имеет широкий диапазон питающего напряжения, от 5,5 В до 22 В. Максимальная выходная мощность усилителя 20 Вт на канал. Микросхема имеет тепловую защиту, защиту от перегрузок и КЗ выхода. Основные характеристики Максимальное напряжение питания 24 В Максимальный …Подробнее...
  • Классификация припоев

    Припои принято делить на две группы — мягкие и твёрдые. К мягким относятся припои с температурой плавления до 300°С, к твёрдым — выше 300°С. Кроме того, припои существенно различаются по механической прочности. Мягкие припои имеют предел прочности при растяжении 16—100 МПа, а твёрдые — 100—500МПа. Мягкими припоями являются оловянно-свинцовые сплавы …Подробнее...
  • Индикатор сетевого напряжения

    Индикатор наличия сетевого напряжения можно разместить в бытовом выключателе освещения или можно использовать для других целей (ночник). Конденсатор служит для ограничения тока, для емкости 0,1мкФ — 4мА, а для 0,47мкФ — 20мА. Стабилитрон ограничивает напряжение подаваемое на светодиод.Подробнее...
  • FM-передатчик

    FM-передатчик

    В этом fm-передатчике используется конденсаторный микрофон, обратите внимание чтобы плюс микрофона через резистор R1 был подключен к положительному полюсу источника питания. Сигнал с микрофона подается на базу транзистора VT1 через разделительный конденсатор С1 (10мкФ). VT1 действует как усилитель ЗЧ и одновременно как генератор ВЧ, в итоге на выходе передатчика мы …Подробнее...