Девятиканальный согласователь уровней

Девятиканальный согласователь уровнейВот, сделал. В хозяйстве пригодится, для моделирования-макетирования.



Согласователь уровней девятиканальный
технические характеристики

  1. Число однонаправленный каналов (от 5 Вольт к 3.3 Вольт) на базе микросхемы HEF4050BT (даташит) по схеме из раздела «Интерфейс на буферных элементах» вот этой статьи — 6 шт
  2. Число двунаправленных каналов на базе N-канального полевого транзистора IRLML6244TRPBF (даташит), по одному транзистору на канал, по схеме раздела «Интерфейс на транзисторе» той же статьи — 3 шт
  3. Собственное питание 3.3 Вольт от линейного стабилизатора AMS1117-3.3 (до 1 А тока)
  4. Два выхода 3.3 Вольт для питания внешних 3-х вольтовых устройств от того же стабилизатора
  5. По два разъема (один «вилка» другой «розетка») входа и выхода на каждый канал
  6. Напряжение питания — до 15 Вольт (но по двунаправленным каналам должно совпадать с напряжением питания сопрягаемого устройства с входной стороны)
  7. Защита по питанию от переплюсовки "идеальным диодом" на базе того же IRLML6244TRPBF
  8. Светодиод, индицирующий наличие питания
  9. Одно отверстие для крепления на стандартную стойку для печатных плат диаметра 3 мм


Разводка платы

Верхняя сторона

Нижняя сторона

Ссылка на скачивание файла в формате SprintLayout

Скетч для тестирования:

/**
* Тестирование 6+3 канального согласователя уровней
*/

#define REFV 5050

#define FIRST_IN_PIN 2
#define FIRST_OUT_PIN A5

void setup() {
  Serial.begin(115200);
  Serial.println(F("[ Levels shifter tester ]"));
  
  for(byte j = 1, pin = FIRST_IN_PIN; j < 64; j = j << 1, pin++) {
    pinMode(pin, OUTPUT);
  }

  for(byte i = 0; i < 64; i++) {
    Serial.print(i);
    Serial.print(") IN: ");
    for(byte j = 1, pin = FIRST_IN_PIN; j < 64; j = j << 1, pin++) {
      byte lev = (i & j) > 0;
      Serial.print(lev);      
      digitalWrite(pin, lev);
    }
    Serial.print(" OUT: ");    
    bool ok = true;
    for(byte j = 1, pin = FIRST_OUT_PIN; j < 64; j = j << 1, pin--) {
      byte lev = (i & j) > 0;
      int val = digitalRead(pin);
      Serial.print(val);      
      ok = ok && lev == val;
    }    
    Serial.print(" ");
    if(!ok) {
      Serial.print(F("<--- DIFFERENCE!!! "));
    }
    ok = true;
    for(byte j = 1, pin = FIRST_OUT_PIN; j < 64; j = j << 1, pin--) {
      float val = map(analogRead(pin),0,1023,0,REFV) / 1000.0;
      Serial.print(val);      
      Serial.print(":");
      byte lev = (i & j) > 0;
      if(lev) {        
        ok = ok && (val >= 3.2 && val <= 3.4);
      } else {
        ok = ok && (val < 0.1);
      }
    }        
    if(!ok) {
      Serial.print(F("<--- OVERVOLTAGE!!! "));
    }    
    Serial.println();
    for(byte j = 1, pin = FIRST_IN_PIN; j < 64; j = j << 1, pin++) {
      digitalWrite(pin, LOW);      
    }
  }  
}

void loop() {
}


Процесс тестирования:

Тестирование

UPD: Важно. В разводке и схеме у меня ошибка. Полевой транзистор в «идеальном диоде» подключен неправильно, не той стороной, в результате чего свой защитной функции он не выполняет :-(
Файлы в топике: Согласователь уровней.zip

Комментарии (37)

RSS свернуть / развернуть
за отсыл к статьям — спасибо, тока очепятки через слово глаза режут.

«Вот, сделал. В хозяйстве пригодиться, для моделирования-мактирования.»
«по одному трансзистору » и так далее.
+2
Ох, ну что нашел, исправил…
Печатал быстро, пальцы друг за друга цеплялись. Да еще и врожденная неграмотность.
0
Она, к слову, у всех врожденная. Это только грамотность благоприобретенной трудом и учебой бывает.
+3
Ну не скажи, я в школе весьма круто писал диктанты практически с помощью шестого чувства — мне достаточно было посмотреть на слово и оценить его «красивость», и таким образом сказать правильно оно или нет написано. При этом я особо не любил учить правила, практически всегда интуиция давала верный ответ.
0
Конечно, грамотность не усваивается через пуповину или молоко матери. Как правило, «врождённая грамотность» — следствие сотен и тысяч прочитанных книг.
Примечание №1
+2
Ну вообщем-то и не поспоришь. Похоже любовь уходить в читальные «запои», забывая обо всем на свете, и хорошая визуальная память на текст сделали свое дело.
+1
+100 к прочитанным книгам. не задумываясь пишу читабельно и с минимумом ошибок. если начинаю думать — хрен его знает как правильно писать.
0
Это называется «чувство языка». Но и его надо развивать.
+1
Во-во. А у меня тоже самое, только с точностью до наоборот.
Несмотря на чудовищное количество прочитанных книг.
0
Стратегия грамотного письма. Да, от количества прочитанного зависимость не настолько выраженная, как обычно принято считать.
0
Делал похожий, но на 74lvc1g125. Можно использовать даже для LVCMOS 1.8V. Полезная штучка чтобы на макетке не корячиться.
0
— Здравствуйте, это канал об аниме?
— Да.
— Как мне пропатчить KDE2 под FreeBSD?

— Это ресурс посвященный разработке радиоэлектронный устройств?
— Да.
— Подскажите, на какой слог следует ставить ударение в слове «звонит»?
+2
Шутки шутками, но мне как визуалу, например, уже становится трудно писать некоторые слова из-за того что многократно видел их неправильное написание. В радикальный граммар-нацизм уходить конечно не стоит, но проявлять некую заботу по отношению к глазам читателей тоже надо =)
+3
Понимаете, коллега… В рамка вашей, к примеру, компетенции и команды (отдела) можете хоть на ушах ходить, а для документации и записок использовать алфавит пляшущих человечков или традиционный китайский. То ваша уединенная епархия и ваше внутреннее дело. Но в публичном пространстве, как здесь отмечаю уже не я один, стоит все-таки делать над собой определенное усилие и стараться придерживаться неких рамок грамотной письменной речи. Просто из уважения к своим читателям.
+1
когда текст читается на одном дыхании несколько очепяток можно и не заметить. если сам текст особого счастья не несет — подобное бросается в глаза и бесит.
+1
да собственно весь этот разговор говорит о том, что обсуждать в данной статье кроме правописания нечего
+1
А лично меня порадовала не сама железка (есть много более интересных микрух преобразователей уровней), а комплексный подход: реализация + автоматизированное тестирование. Как в лучших домах.
0
  • avatar
  • dee
  • 22 апреля 2015, 16:42
Можно сделать попроще и двунаправленный конвертер. На сколько угодно каналов.
0
«Сделать попроще» — в смысле «купить»?
0
Судя по схемам по ссылке — это ровно тоже самое, что мои двунаправленные каналы.
С точки зрения сборки однонаправленный конвертер проще, слегка дешевле и занимает меньше места.

Двунаправленные каналы нужны не всегда. Для SD карты например достаточно три однонаправленных (CLK, MOSI, CD) и один (MISO) можно или вообще соединять без согласования, так как на него идет подтяжка со стороны SD карты, или, если страшно случайно долбануть в него 5 Вольт, можно сопрячь по схеме двунаправленного канала.
0
… и один (MISO) можно… сопрячь по схеме двунаправленного канала.
Нахрена там двунаправленный канал??? 8-O
0
Собственно я это писал имея ввиду конкретную свою поделку — шильдик для Ардуино с часами реального времени и SD-картой. И на сопрягателе уровней я как раз обкатывал работу с буфером HEF4050BT.

Так вот, когда я продумывал этот шильдик я вначале тоже думал напрямую соединить MISO с ногой Ардуины, а потом как то очень живенько представил себе, как случайно запущу скетч, который выдаст в эту ногу 5 Вольт. И решил развязать их от греха подальше.
0
Защита — это понятно. Вопрос в том, нафига там двунаправленный канал? Через ту же HEF4050 подключить не судьба? :-)
0
Не смог осознать, что будет если на выход HEF4050 случайно подать больше, чем его питание.
Безвременная кончина при схожих обстоятельствах некоторых других микросхем приучила меня так на всякий случай не делать :-)
0
Зачем что-то подавать на её выход???
0
Ну это возвращаясь к тому, зачем вообще на ножке MISO согласование. На случай, если со стороны 5 Вольтового устройство (которое программируемый МК) на эту ногу случайно дать 5 Вольт.
А то бы можно было и напрямую подключить. В схеме сопряжения с SD-картой на резистивных делителях так и делают и вроде работает.
0
Вы имеете ввиду проблемы с настройкой МК, когда вход MISO переключится в режим выхода?
По мне так лучше сгорит буфер, чем МК или SD-шка.
0
Ну да, я очень часто замечал за собой, что могу собрать нечто на базе Ардуино до того, как залью в него адекватный скетч и дать питание. А как ноги использовались в предыдущей конструкции — как фишка ляжет.

Вот поэтому я выбрал двунаправленное согласование для MISO — оно такие фокусы спокойно выдерживает.
0
Судя по схемам по ссылке...
Фотографии платы вижу. А где схемы?
0
Там ссылка на PDF-ку есть.
+1
Ага, увидел. Спасибо.
0
:-) Меня умиляет ваша привычка размещать SMD-шки на противоположной стороне от меди, к которой они д.б. припаяны:
элементы красного слоя (элементы 1-ой (верхней) стороны), напр, транзистор и резистор по входу питания, припаяны к зелёному слою (медь 2-ой (нижней) стороны);
жёлтый (элементы 2-ой (нижней) стороны) — к синему (медь 1-ой (верхней) стороны).
:-)))
Нет, я понимаю, что извращаться можно по-разному, а потом при переводе на СТФ и пайке всё это учёсть и поправить… Но при этом другим становится сложно воспринимать ваше «творчество». :-)
0
  • avatar
  • Alfa
  • 26 апреля 2015, 18:57
Это исторически сложилось :-( Когда я разобрался что к чему, я уже успел насоздавать приличную библиотеку самодельных проверенных компонентов. Включая вот эти транзисторы…
Я сейчас стараюсь потихоньку это перерабатывать в нормальный вид, но пока мало что успел. Да и страшно запутаться.
0
Зачем вы поставили резистор в затвор транзистора, стоящего на входе питания?
0
  • avatar
  • Alfa
  • 26 апреля 2015, 19:03
Блин, там есть вопрос круче — зачем вообще я транзистор так поставил… Я его не той стороной поставил на самом деле, нужно было мордой диода к земляной клемме… Так он не работает…

Резистор — из соображений ограничить ток зарядки затвора. На всякий случай. Честно говоря не знаю, оправдано это или нет. Идея в том, что в момент подключения нагрузки емкость затвора разряжена и начальный ток будет практически током коротного замыкания. Правда, всилу малой емкости затвора это будет недолго. Но я где-то читал, что затворы принято вот так подстраховыать.
0
Вот блин вы меня опередили.
Я вам тут целое исследование накатал :-) как я пытался понять нафига у вас так включён транзистор и как он работает, а вы мне всё удовольствие обломили. :-)))
Так он не работает…
Работает, работает. Он у вас включён по схеме с ОИ, где вся начинка — нагрузка в цепи стока.
Вот только по своему прямому назначению — защита — да, не работает. :-)))
0
Да уж, я думал, что времена, когда я путал ноги полевого транзистора уже прошли. А вот те на…
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.