Дисплей от мультиметра DT-83x - не пропадать же добру!

Приказал тут у меня долго жить простой рабоче-крестьянский мультиметр DT-838. Не то, чтобы сам … просто я полез мерить есть ли 230В на входе в устройство, забыв переключить его на переменное напряжение (стоял на прозвонке). Но и меня винить … в чём? … сгорел потому, что китайский :slight_smile:

Ремонт был признан хоббийно неинтересным и экономически нецелесообразным (они в DNS по четыреста рублей валяются), а потому приборчик проследовал в специальную коробку - некрополь для отслуживших свой век девайсов.

Но, открыв коробку, я обнаружил, что это уже третий подобный прибор, ожидающий «расчленения на органы». Органов там не густо, а самый вкусный из них, разумеется, дисплей. Три полных цифры и ещё единичка слева, знак минус, иконка разряда батареи, применить можно в 100501 местах.

Кстати, дисплеи одинаковые у всех моделей DT 830-838

Ну, что разобрал, изучил даташит на 7106 - главную микросхему мультиметра, другие источники, посмотрел на плату и выяснил:

  1. дисплей соединяется с платой через шлейф из токопроводящей резины, которая просто прижимается к пятачкам на плате. Ширина пятачков 0,6мм, расстояние между ними - тоже 0,6 мм. Всего пятачков 30, но три правых (со стороны дорожек) соединены вместе.
    plata

  2. распиновка дисплея вот такая (вид с лицевой стороны дисплея):


    как видим, справа как раз три пина BP (backplain), соответствующие тем трём соединённым вместе пятачкам.

  3. Работает всё следующим образом:
    А) на пин(ы) backplain подаётся меандр с частотой 60 Гц и амплитудой 5В;
    Б) на все остальные пины подаётся такой же меандр, при этом, на те пины, которые не должны «светиться», подаётся меандр в той же фазе, что и на backplain, а на те пины, которые должны светиться - фаза сдвинута на 180 градусов (в противофазе).

Собственно, всё.

Для проверки была вытравлена плата-переходник с пятачков на дюпоны:

28-ю дюпонами соединил с самогонной “ардуиной” на базе ATmega32 (благо, у неё пинов достаточно)

Обычным ногодрыгом подал нужные меандры на пины и … “ВАУ” …

Ну, вот как-то так. Если кому-то пригодятся распиновка и описание принципа работы, значит не зря писал.

7 лайков

О как. Не зря значит всё ещё лежит бедолага ))

Спасибо.

А дрыгоног какой? для ЖКИ нужен специальный - пульсирующий

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

Там дословно сказано (стр. 8): "… a 60Hz square wave with a nominal amplitude of 5V. The segments are driven at the same frequency and amplitude and are in phase with BP when OFF, but out of phase when ON".

Так что у меня нет никаких “пульсирующих”, сделал точно, как написано: a 60Hz square wave with a nominal amplitude of 5V.

Если там написано неправильно (или неидеально), значит такова судьба :frowning:

1 лайк

Я помню, как мы в студенческие годы проверяли ЖКИ. Один конец куска провода наматывали (несколько витков) на провод от включенной настольной лампы и вторым концом поочередно касались выводов ЖКИ, держа пальцы на выводе подложки. И никаких “специальных - пульсирующих” ) А вот постоянное напряжение им вредно.

смысл в том что бы сохранить долговечность жк, их питают перменым напряжением общий элетрод, те сегменты, которые не активны питаются синфазным напряжением, активные-противофазным

чем это отличается от того, что написал Евгений?

1 лайк

Ничем, если считать нулём точку 2.5 В (от GND контроллера), тогда получается честная переменка с амплитудой 2.5 вольта.

А поскольку у самого экранчика никакого своего “нуля/Gnd” нет и с Gnd контроллера он никак не связан, то всё пучком, по-моему.

все сделал как нада, я только уточнил


Работает как часы. Правда, с 3,5 разрядами не совсем удобно, но привыкли. Только таймером кроме меня никто не пользуется.) Наиболее востребована кукушка кодом морзе.)

1 лайк

“я мам такую же хочу”

morse.h

Спойлер

#define MORSE_SPEED       100           //ms (dot)

#define MORSE_DIT         B11000000     //-_   dot,  1 + 1 bit element
#define MORSE_DAH         B11110000     //---_ dash, 3 + 1 bit
#define MORSE_PAUSE       B01000000     //__   pause,  + 2 bit in word
#define SPACE_BITS        7             //длительность пробела между словами
#define PAUSE_BITS        3             //длительность паузы между знаками


#define morse_init()
#define morse_on()        buz_on()
#define morse_off()       buz_off()

void morseDec(uint8_t bin);

morse.c

Спойлер
#include "main.h"
#include "morse.h"
#include "buz.h"


static const uint8_t morse_tab[] PROGMEM = {
  B11000000,                            //0
  B01111100,                            //1
  B00111100,                            //2
  B00011100,                            //3
  B00001100,                            //4
  B00000100,                            //5
  B10000100,                            //6
  B11000100,                            //7
  B11100100,                            //8
  B11110100,                            //9
  B01100000,                            //A
  B10001000,                            //B
  B10101000,                            //C
  B10010000,                            //D
  B01000000,                            //E
  B00101000                             //F
};


// char -> морзе код -> морзе элементы (./-/пауза) -> формирование
static void morseChar(char chr) {
  static bool space;

  if (chr == ' ') {                     //обрабатываем пробелы
    delay((SPACE_BITS - PAUSE_BITS) * MORSE_SPEED); //пробел после символа
    if (space)
      delay(PAUSE_BITS * MORSE_SPEED);  //пробел после пробела
    space = true;
  }
  else {
    // получим код
    space = false;
    uint8_t dat = pgm_read_byte(&morse_tab[hex_char2bin(chr)]);
    do {
      //преобразуем в последовательность
      uint8_t seq = MORSE_DIT;
      if (dat == 1<<7)
        seq = MORSE_PAUSE;
      else if (dat & 1<<7)
        seq = MORSE_DAH;

      // передаём точку, тире или паузу:
      // dit -_ = 11000000, dah ---_ = 11110000, pause __ = 01000000
      do {
        if (seq != 1<<7 && seq & 1<<7)
          morse_on();
        else
          morse_off();
        delay(MORSE_SPEED);
      } while (seq <<= 1);
    } while (dat <<= 1);
  }
}


// dec
void morseDec(uint8_t bin) {
  if (bin / 100)
    morseChar(bin / 100 + '0');
  bin %= 100;
  if (bin / 10)
    morseChar(bin / 10 + '0');
  morseChar(bin % 10 + '0');
  morseChar(' ');
}

Вот ещё: #define hex_char2bin(x) ((x) <= ‘9’ ? (x) - ‘0’ : (x) - ‘A’ + 10)

Всё бы ничего, если б дисплей имел человеческие выводы. А так без корпуса, ещё плату под него делать… Да ну их.

Знали б Вы сколько их у меня :slight_smile:

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

“Шах расписался в полном неумении?” )))

1 лайк

Измерение 220в в режиме омметра?)

обычное дело, раньше было в режиме измерения тока и, тогда разработчики приборов токовый шунт на отдельный разъём вывели )))
PS есть ещё одно предположение, что Петрович в тему поставки дисплеев вписался…

1 лайк

Почти - в режиме прозвонки целостности пути.

Кроме того, куча друзей и знакомых, которые тащат мне всю сломанную хрень “на утилизацию”.