Часы на газоразрядных индикаторах

Что бы еще такого сделать?... Предлагайте! Обсудим все!!!
Charon
Сверлит текстолит когтями
Сообщения: 1247
Зарегистрирован: Вс янв 03, 2016 08:52:30

Re: Часы на газоразрядных индикаторах

Сообщение Charon »

da-nie писал(а): Привык, что обычно в ЧиД цены нехилые.

ЧиД последнее место, куда надо идти за деталями. Цены у них действительно астрономические.
Я просто купил на Ибэе по 100 штук и тех, и других - хватит надолго. Заодно еще низковольтных купил, MMBT2222A и комплиментарных к ним p-n-p, просто до кучи :)
Последний раз редактировалось Charon Вс янв 03, 2016 10:42:27, всего редактировалось 1 раз.
Аватара пользователя
da-nie
Говорящий с текстолитом
Сообщения: 1590
Зарегистрирован: Вс июн 24, 2012 16:07:00
Откуда: Лен.Обл.
Контактная информация:

Re: Часы на газоразрядных индикаторах

Сообщение da-nie »

Нет, виноваты именно оптроны. С ключами такого не происходит.


Тут такое дело, что по даташиту у них времена включения/отключения измеряются десятками микросекунд. Правда, при VCC=10 В и Rнагрузки=100 Ом. Возможно, что при 200 В эти времена действительно больше раз в 10.

Тем не менее, они должны были бы иметь еще какую идейную нагрузку.


А зачем нужна идейная нагрузка? :tea: Лично я использовал их потому, что упрощается схемотехника (конкретно - меньше дорожек и компонентов, меньше разводить и сверлить) и просто управляются. И если оптрон пробьёт, то МК не пострадает.

А так: "ну оптроны, ну и что".


Так про любое можно сказать. :)

ЧиД последнее место, куда надо идти за деталями.


Увы, часто это единственное место, где нужное есть.

Я просто купил на Ибэе по 100 штук


Ну эти магазины нафиг. У меня ПАЛ кодер на AD725, купленной по дешёвке в Китае, так и не заработал после полугода плясок с бубном (если где-то придержать пальцем, то оно-таки включается, но где именно и что не так, я не нашёл). Думаю, китайцы фуфло прислали. Очень уж дёшево было.
И день и ночь в пути...
Мои программки: https://github.com/da-nie
Мои публикации: https://habr.com/ru/users/da-nie/posts/
Мои видео: https://www.youtube.com/channel/UCUroi3 ... 52g/videos
Charon
Сверлит текстолит когтями
Сообщения: 1247
Зарегистрирован: Вс янв 03, 2016 08:52:30

Re: Часы на газоразрядных индикаторах

Сообщение Charon »

da-nie писал(а):Лично я использовал их потому, что упрощается схемотехника (конкретно - меньше дорожек и компонентов, меньше разводить и сверлить) и просто управляются. И если оптрон пробьёт, то МК не пострадает.

Вот именно на простоту я и купился :) Как увидел эту схему, подумал, гениальная идея :) А ведь сам бы ни за что не додумался.

Ну, на самом то деле, если соплей при пайке SOT-23 не навешать, то нужно очень постараться, чтоб MMBTA42 пробило, у него коллектор-эмиттер 300 В. А даже если и пробьет, то коллекторный резистор в сотни килоом ограничит ток, я видел схемы детекторов нуля сети, там прямо на ногу МК сеть заводили через большой резистор (сам я противник таких схем, конечно)
uldemir писал(а):Charon, добро пожаловать в клуб :))

Обожаю никси и ВЛИ. Урвал недавно в местном магазине около 70 ИН-2. Выгреб все что оставалось. Жаль, ИН-12 не было.
Аватара пользователя
woody_mc
Грызет канифоль
Сообщения: 251
Зарегистрирован: Пт янв 30, 2015 13:20:56
Откуда: SPb
Контактная информация:

Re: Часы на газоразрядных индикаторах

Сообщение woody_mc »

Насчёт инертности неонок - она далеко за диапазоном человеческого зрения (писал выше, что МТХ-90 работают на частоте 2 кГц со скважностью 1:5), а вот некоторые транзисторы в оптопарах могут закрываться много дольше.

Что до высокого напряжения для МК, то порт можно защитить простым диодом (анод на порт, катод к +5В), даже если пробьет транзистор, то через сопротивление базы ток будет ограничен, и он будет меньше прямого тока диода, следовательно на порту МК будет не более 5,5-5,9В (с учётом падения напряжения на диоде). Если и этой защиты мало, то вместо диода можно использовать n-p-n транзистор, включенный по схеме с общей базой, тогда и ток держать может большой (зависит от типа транзистора) и напряжение выше 5В не поднимется.

Опять я в оффтоп полез.

ИМХО самое оптимальное решение - на рассыпухе. И дёшево и раскидать по плате можно. Моносборки же лучше для статики, где много индикаторов т.к. статика на рассыпухе - это ооочень много корпусов.
крокодил, крокожу и буду крокодить!
Charon
Сверлит текстолит когтями
Сообщения: 1247
Зарегистрирован: Вс янв 03, 2016 08:52:30

Re: Часы на газоразрядных индикаторах

Сообщение Charon »

У МК и так есть защитные диоды на питание и землю, схема детектора нуля с прямой подачей сети через высокоомный резистор так и работает.

Анодный ключ на SMD будет занимать места на плате ненамного больше, чем корпус TLP627.
Что до катодных ключей, тоже склоняюсь к низковольтному дешифратору и SMD рассыпухе на MMBTA42. Это лучше, чем 155ИД1, поскольку работа ее без фиксации напряжения на коллекторах ниже 60 В диодами и делителем или стабилитронами - не рекомендуемый режим, да и в SMD корпусе ее не существует :)

Тормознутость фототранзистора в TLP627 объясняется просто - у него нет вывода базы, из-за чего при выключении невозможно быстро рассосать избыточный заряд в базе. Был бы внешний вывод базы - можно было бы через резистор в единицы килоом соединить с эмиттером, тогда возможно, паразитной засветки и не было бы.
Последний раз редактировалось Charon Вс янв 03, 2016 13:18:33, всего редактировалось 1 раз.
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: Часы на газоразрядных индикаторах

Сообщение uldemir »

Charon писал(а):да и в SMD корпусе ее не существует
133ИД1 - не?

Вот кто бы мне помог с проблемой описанной там. Сделал как задумывал - стало еще хуже. Теперь вылетает 2216-й год.
Спойлер

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

// Проверяем столетие. Младший бит должен соответствовать флагу в регистре месяцев.
      if (((curr_time.month & 0x80) == 0) != ((century & 0x01) == 0))   {
        century++;
      }
Хотя, это понятно почему. Происходит ложное срабатывание, столетие становится нечетным, а в месяце флага нет. Поэтому столетие докручивается дальше до четного 22-го. Вот не могу сообразить, почему ложное срабатывание. Подозрение есть - это i2c. Та библиотека, что я пользуюсь - работает не очень стабильно. Поэтому по включению питания, бывает, читает всякий мусор. Потом оно синхронизируется и работает нормально, а иногда (особенно, если сброс вызывается отладчиком) вообще постоянно гонит туфту. Предваряя, скажу сразу - процедура рекомендованная в даташите на ds3231 - есть:
Спойлер

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

  // Перед включением i2c выводим ds3231 в известное состояние
  while (PC_IDR_bit.IDR1 == 0) {
    PC_ODR_bit.ODR1 = 0;
    for (timedelay = 20; timedelay ; --timedelay) {
      __no_operation();
    }
    PC_ODR_bit.ODR1 = 1;
    for (timedelay = 20; timedelay ; --timedelay) {
      __no_operation();
    }
  }
Может, у кого есть внятный и2с код для stm8L101 ? А то самому лениво писать (но, похоже, придётся).
Аватара пользователя
woody_mc
Грызет канифоль
Сообщения: 251
Зарегистрирован: Пт янв 30, 2015 13:20:56
Откуда: SPb
Контактная информация:

Re: Часы на газоразрядных индикаторах

Сообщение woody_mc »

uldemir писал(а):Вот кто бы мне помог с проблемой
Может, у кого есть внятный и2с код для stm8L101 ? А то самому лениво писать (но, похоже, придётся).

жду 3231, по результатам работы отпишусь.
только я на AVRках работаю пока, STM может в будущем попробую. а разве нет "родной" библиотеки ииц для стм?
крокодил, крокожу и буду крокодить!
Charon
Сверлит текстолит когтями
Сообщения: 1247
Зарегистрирован: Вс янв 03, 2016 08:52:30

Re: Часы на газоразрядных индикаторах

Сообщение Charon »

Про 133 серию я как-то не подумал :) И все же, это не SOIC.
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: Часы на газоразрядных индикаторах

Сообщение uldemir »

Может и есть. Вернее есть. Но она SPL (standard peripheral library), а я не фанат этого подхода. Оно больно много с собой тянет. Привык своими грязными рученками ковыряться в регистрах. Правда и в даташите мне сразу этот интерфейс не понравился. Наверное, надо бы написать драйвер с использованием прерываний. Может там аналогичная проблема, с которой я столкнулся в модуле USI у MSP430G - нужно было заполнить 32-х разрядный регистр. Опрос флага прерываний давал всякие глюки. А вот как разрешил вызывать прерывания и там выставлять флаг - все проблемы решило разом.
И все же, это не SOIC.
Да SOIC это, SOIC. Просто чуть иной. Чуть пошире. Я вон тоже был заказавши у TI cd40109 - тоже SOIC. Сделал плату. Пришли микры - не лезут. Оказывается этот SO-16 чуть шире. Пришлось из SO делать SOJ.
Последний раз редактировалось uldemir Вс янв 03, 2016 13:39:38, всего редактировалось 2 раза.
Аватара пользователя
suslogon
Друг Кота
Сообщения: 10693
Зарегистрирован: Пн июл 14, 2008 21:28:00
Откуда: Москва
Контактная информация:

Re: Часы на газоразрядных индикаторах

Сообщение suslogon »

Charon писал(а):Про 133 серию я как-то не подумал :) И все же, это не SOIC.

А что это? :shock: отличный вариант в планарном корпусе! или может еще скажете, что это не планар? :kill:
Ищу тиратрон ТХИ1-2000/4, ГРИ ИН-23, ФЭУ-103; 134; 135, 138, 155, 157, лампу ИСШ-7.
Любые ГИС серий 203, 225, 233, 244, 250, 296, 801, 838 в любом состоянии. Компоненты и детали от миниатюрных твердотельных лазеров.
Charon
Сверлит текстолит когтями
Сообщения: 1247
Зарегистрирован: Вс янв 03, 2016 08:52:30

Re: Часы на газоразрядных индикаторах

Сообщение Charon »

SPL конечно тяжеловесная штука, но в целях отладки - почему бы не попробовать? По крайней мере станет ясно, в чем дело - в I2C либе или же в некорректной работе с самой RTC.

Планар, конечно, но формовка, обрезка выводов, хотя я уже придираюсь :) Вполне подойдет :)
Последний раз редактировалось Charon Вс янв 03, 2016 13:43:15, всего редактировалось 1 раз.
Аватара пользователя
woody_mc
Грызет канифоль
Сообщения: 251
Зарегистрирован: Пт янв 30, 2015 13:20:56
Откуда: SPb
Контактная информация:

Re: Часы на газоразрядных индикаторах

Сообщение woody_mc »

Charon писал(а):Про 133 серию я как-то не подумал :) И все же, это не SOIC.

а что, Вас на GOOGLE забанили штоле? :shock:
чем Вас не устраивают драйверы от microchip например HV513 или HV5522

все давно придумано, стоит только немного поискать. (про возможность покупки и стоимости речь не идет, доступно и дешево - это на дискретных элементах)
крокодил, крокожу и буду крокодить!
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: Часы на газоразрядных индикаторах

Сообщение uldemir »

Э, я не умею. Да и всё тогда придётся полностью переписать. потому как почему-то, структура хедеров у IAR и SPL не совпадает. Или я начал с подключения не тех хедеров?

Может, написать i2c ногодрыгом?

Пока что, проблему пытаюсь локализовать так, что если первое чтение регистров DS возвращает что-либо отличное от I2C_SUCCESS, то сразу делать брейк и пытаться снова. Раньше у меня только светодиодик на плате зажигался сигнализируя об ошибке, но код продолжал работать (с неверными данными).

Возможно, моё первоначальное предположение, что виноват был именно новый год - ошибочное. Потому как у нас за 5 часов до НГ было пропавше электричество где-то минут на 5. Может именно тогда по включении были неправильно прочитаны регистры и произошел инкремент столетия.

например HV513 или HV5522
Ой. корпуса то ОГРОМНЫЕ! HV513 надо две штуки, а одна уже больше, чем 155ИД1. Единственная радость, что он "зелёный и плоский" (с)Шапокляк. А 5622 в PLCC тоже огромный и тяжело достать, а в PQFP и подавно.

p.s. и не работают от 3.3в. Хотя 155, формально, тоже.
Последний раз редактировалось uldemir Вс янв 03, 2016 13:58:17, всего редактировалось 2 раза.
Charon
Сверлит текстолит когтями
Сообщения: 1247
Зарегистрирован: Вс янв 03, 2016 08:52:30

Re: Часы на газоразрядных индикаторах

Сообщение Charon »

Цена. HV5522 в 4 раза дороже, чем STM8 :) И если для пары часиков с этим еще можно смириться, то для десятка уже дороговато.

У меня есть такой вопрос - оправдано ли использование DS3231 вместо DS1307 в мелкой серии?
Аватара пользователя
suslogon
Друг Кота
Сообщения: 10693
Зарегистрирован: Пн июл 14, 2008 21:28:00
Откуда: Москва
Контактная информация:

Re: Часы на газоразрядных индикаторах

Сообщение suslogon »

Charon писал(а):У меня есть такой вопрос - оправдано ли использование DS3231 вместо DS1307 в мелкой серии?

Это оправданно абсолютно во всех случаях, в любых часах и при любой серии.
Ищу тиратрон ТХИ1-2000/4, ГРИ ИН-23, ФЭУ-103; 134; 135, 138, 155, 157, лампу ИСШ-7.
Любые ГИС серий 203, 225, 233, 244, 250, 296, 801, 838 в любом состоянии. Компоненты и детали от миниатюрных твердотельных лазеров.
Аватара пользователя
woody_mc
Грызет канифоль
Сообщения: 251
Зарегистрирован: Пт янв 30, 2015 13:20:56
Откуда: SPb
Контактная информация:

Re: Часы на газоразрядных индикаторах

Сообщение woody_mc »

uldemir писал(а):Может, написать i2c ногодрыгом?

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

например при работе с 1-wire я пробовал много разных библиотек и со всеми были проблемы (все ногодрыги, на UART вешать подобное - кощунство), потом решил написать сам. взял спецификацию от 1-wire, покурил ее, полистал чужие библиотеки и сделал симбиоз. в результате получилась полноценная шина 1-wire с автодетектированием устройств и занимающая 1 ногу. что до программы - не сравнивал с другими, но не думаю что объем будет отличаться в разы.

кстати, нашел програмный TWI (уже не помню моя ли ногодрыга или чужая), может получится использовать:
СпойлерTWI.h

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

#define TWI_CE          7
#define TWI_IO          6
#define TWI_CK          5
#define TWI_Port_CE     PORTD_Bit7
#define TWI_Port_IO     PORTD_Bit6
#define TWI_Port_CK     PORTD_Bit5
#define TWI_Drv         DDRD
#define TWI_Port        PORTD
#define TWI_Pin_IO      PIND_Bit6

void Twi_Init (void);
void TWI_WriteByte (unsigned char addr, unsigned char data);
unsigned char TWI_ReadByte (unsigned char addr);

TWI.c

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

#include "main.h"

void TWI_Init (void)
{
  TWI_Drv |= (1 << TWI_CE)|(1 << TWI_CK);
}

void TWI_WriteByte (unsigned char addr, unsigned char data)
{
  unsigned char i;
  TWI_Drv |= (1 << TWI_IO);
  TWI_Port_CE = 1;
  __delay_cycles(4_uS);
  for(i = 0; i < 8; i ++)
  {
    TWI_Port_IO = (addr >> i) & 0x01;
    __delay_cycles(200_nS);
    TWI_Port_CK = 1;
    __delay_cycles(1000_nS);
    TWI_Port_CK = 0;
    __delay_cycles(800_nS);
  }
  for(i = 0; i < 8; i ++)
  {
    TWI_Port_IO = (data >> i) & 0x01;
    __delay_cycles(200_nS);
    TWI_Port_CK = 1;
    __delay_cycles(1000_nS);
    TWI_Port_CK = 0;
    __delay_cycles(800_nS);
  }
  TWI_Port_CE = 0;
  __delay_cycles(4_uS);
  TWI_Drv &= ~(1 << TWI_IO);
}

unsigned char TWI_ReadByte (unsigned char addr)
{
  unsigned char data = 0, i;
  addr |= 0x01;
  TWI_Drv |= (1 << TWI_IO);
  TWI_Port_CE = 1;
  __delay_cycles(4_uS);
  for(i = 0; i < 7; i ++)
  {
    TWI_Port_IO = (addr >> i) & 0x01;
    __delay_cycles(200_nS);
    TWI_Port_CK = 1;
    __delay_cycles(1000_nS);
    TWI_Port_CK = 0;
    __delay_cycles(800_nS);
  }
  TWI_Port_IO = (addr >> i) & 0x01;
  __delay_cycles(1000_nS);
  TWI_Port_CK = 1;
  __delay_cycles(280_nS);
  TWI_Drv &= ~(1 << TWI_IO);
  for(i = 0; i < 7; i ++)
  {
    TWI_Port_CK = 0;
    __delay_cycles(800_nS);
    data |= (TWI_Pin_IO << i);
    __delay_cycles(200_nS);
    TWI_Port_CK = 1;
    __delay_cycles(1000_nS);
  }
  TWI_Port_CK = 0;
  __delay_cycles(800_nS);
  data |= (TWI_Pin_IO << i);
  __delay_cycles(200_nS);
  TWI_Port_CE = 0;
  __delay_cycles(4_uS);
  return data;
}
крокодил, крокожу и буду крокодить!
Аватара пользователя
Волосатый
Сверлит текстолит когтями
Сообщения: 1288
Зарегистрирован: Пн апр 14, 2008 12:54:35
Откуда: Город ГЕРОЙ Ленинград
Контактная информация:

Re: Часы на газоразрядных индикаторах

Сообщение Волосатый »

Пишу на стм32. Взял было чью-то аппаратную либу, найденную на просторах, но как есть оно заработало очень отвратительно. Поскольку в ней не используется детектирование ошибок и прерывания, постоянно возникали ошибки передачи, и МК вис в каком-нибудь while(){}. Покумекав, решил, что прерывания мне использовать нет никакого смысла, поэтому допиливал имеющийся текст до кондиции. Во все while(){} был добавлен счетчик времени, по истечению которого МК решает, что передача не удалась, ногодрыгом принимает из периферийной микросхемы данные (а именно внешняя микруха держала вывод sda на 0 ожидая нового клока), перезапускает модуль i2c и выходит с кодом ошибки из процедуры в библиотеке i2c. Последняя вызывалась из процедуры библиотеки ds3231. Там 200 раз вызывается процедура из библиотеки i2c, пока она не вернет код ошибки 0. Если и здесь счетчик превышен, код ошибки возвращается в главную программу, где МК решает что делать, повторить, или пропустить.
С тех пор о каких-либо проблем с передачей я забыл.
:) :)) :)))
Опыт приходит сразу после того, как он был нужен...
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: Часы на газоразрядных индикаторах

Сообщение uldemir »

Мне на STM32 i2c показался более внятным чем у stm8. Посмотрим, у меня уже зреет новая плата с настольными часами. Будет как раз на stm32F030 с ds3231M и 2401 (для хранения столетия, DST и еще чего-нибудь).

Под stm8L пользую такую библиотеку:

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

// Драйвер модуля I2C микроконтроллера STM8S003F
// Автор: Осипов Андрей
// Дата:  17 июля 2014
// URL:   http://hamlab.net/
Сначала хотел просто на её базе написать, а потом, оказалось, что она практически слово в слово выполняет то, что написано в даташите для обмена без прерываний.

woody_mc писал(а):нашел програмный TWI
Спасибо, может как-нибудь попробую. для меня всё равно придется переделывать, так как я использую чтение сразу нескольких байт подряд.
Странно, почему у меня делается сейчас 3 чтения? Надо бы объединить их в union и читать 12 байт одним хопом.
Аватара пользователя
woody_mc
Грызет канифоль
Сообщения: 251
Зарегистрирован: Пт янв 30, 2015 13:20:56
Откуда: SPb
Контактная информация:

Re: Часы на газоразрядных индикаторах

Сообщение woody_mc »

uldemir писал(а):для меня всё равно придется переделывать, так как я использую чтение сразу нескольких байт подряд.
Странно, почему у меня делается сейчас 3 чтения? Надо бы объединить их в union и читать 12 байт одним хопом.

Да хоть всю область одним махом, просто не слать STOP после принятия первого байта, а дышать SCL столько раз, сколько байт последовательно надо получить. Можно сделать (у меня так и сделано) функцию со старт адресом и длиной данных.
крокодил, крокожу и буду крокодить!
Аватара пользователя
uldemir
Друг Кота
Сообщения: 7359
Зарегистрирован: Пт авг 28, 2009 21:34:30
Откуда: 845-й км.

Re: Часы на газоразрядных индикаторах

Сообщение uldemir »

Поздравьте меня. Не прошло и двух лет, как все-таки отыскал плюху, которая портила мне жизнь. Теперь интерфейс заводится нормально. Могу в любом месте нажать дебаг, ресет и связь восстанавливается без проблем. Пока оставлю звонок при смене столетия и буду смотреть дальше - слетит или нет.
Ответить

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