Лучший способ получить +5В или +12В или 0В от контакта Arduino

Я работаю над программатором eeprom в качестве щита Arduino. В моей EEPROM есть два контакта, которые требуют сигнала 12 В как часть процесса программирования. Один из них — это адресный контакт, который я также управляю сигналом через сдвиговый регистр 595, а другой — выходной контакт разрешения, который подключен к обычному контакту Arduino для работы 5 В и 0 В.

Я хотел бы иметь контакт на Arduino для каждого из контактов 12 В, который будет устанавливать более высокое напряжение, не повреждая другие компоненты.

Я думал, что мог бы использовать простую настройку транзистора, как на рис. 1 на этой странице, но я действительно не уверен, насколько хорошо это будет работать при одновременном подключении к обоим источникам. Мне понадобятся диоды для защиты моих 5-вольтовых компонентов от повреждения сигналом 12 В, но я подозреваю, что эта схема может сработать. Я упрощу ситуацию, убедившись, что Vin является надежным источником питания 12 В.

Вот мой первоначальный дизайн:

введите описание изображения здесь

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

Ответы (3)

Вот схема, которая должна работать:

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

В этой схеме Q2 является переключателем верхней стороны, который включает или выключает выход 12 В. Q1 переключает переключатель верхней стороны, тем самым изолируя микро от 12 В на базе Q2.

Когда база Q1 удерживается на уровне 5 В, на эмиттере будет 4,3 В, поэтому через R1 будет 1 мА. Большая часть этого также проходит через коллектор Q1, который, таким образом, действует как переключаемый сток тока 1 мА. Большая часть этого может исходить только из базы Q2. Если предположить, что каждый из двух транзисторов имеет коэффициент усиления не менее 50, то выходной ток подходит не менее 45 мА, чтобы Q2 оставался в состоянии насыщения. Назначение R3 состоит только в том, чтобы убедиться, что Q2 действительно выключен, когда Q1 выключен.

Что такое P1 и P2 здесь?
@CMP: точки подключения. Они просто показывают, откуда выходит коммутируемое 12В.
Значит, p1 пойдет на мой вывод eeprom? Безопасно ли ставить туда 5В, когда сигнал 12В выключен?
@CMP: P1 будет иметь высокий импеданс, когда выход 12 В отключен.
Извините, я немного медлительный. Теперь я думаю, что могу просто подключить свой контакт данных 5 В к P1 через диод, а затем подключить его к контакту на моем eeprom. Когда 12 В выключено, моя линия данных будет управлять им, а когда 12 В включено, это не повредит моему микропину. Это правильно?
@CMP Это сработает. Вы также можете использовать резистор 1k-10k, поскольку микроконтроллер имеет фиксирующие диоды, которые защищают его, это ограничит любое кажущееся напряжение на выводе примерно до 5 В.
@Thomas - Вход для напряжения программирования не ограничивает напряжение до + 5 В, иначе не было бы возможности подать + 12 В.
@CMP, я бы использовал диод Шоттки из-за меньшего падения напряжения. Или получить 5,6 В через стабилитрон от +12 В и перейти оттуда со стандартным диодом; 5,6В - 0,6В = 5В.
@stevenh Похоже, ОП просил ввод-вывод на 5 В, но также и программирование на 12 В. Если 12 В может быть источником более 1 кОм, то резистор 1 кОм, подключенный к контакту, не должен влиять на него, и это позволит использовать двунаправленное 5 В и однонаправленное 12 В.

Хотя это старый пост, недавно у меня была такая же проблема, когда я делал устройство записи EEPROM для ретрокомпьютеров (где мне нужно было написать несколько EPROM в стиле 27C512). Принятый в настоящее время ответ имеет правильную идею (которую я использовал), но в нем отсутствует управление и защита логического уровня (5 В), а также понижение напряжения на выходе. Следующая схема добавляет их и работала для меня:

Схема переключения VPP и логического уровня

Контакт микроконтроллера, подключенный к HVCtl, управляет «высоким» напряжением ( VPPнапример, 12 В), LVCtlуправляет напряжением логического уровня (например, 5 В) и, когда оба являются низкими, R4переводит контакт в низкий уровень. Диод Шоттки защищает LVCtlвывод на микроконтроллере от перенапряжения VPP, при этом имеет настолько малое падение напряжения, что не влияет на распознавание логического уровня.

То есть выход ( OUT) находится в состоянии VPPвсякий раз, когда HVCtlон высокий, в противном случае он находится в состоянии LVCtl.

Диод и транзисторы можно заменить другими деталями, это только те, которые я использовал (потому что они были у меня под рукой). (редактировать: Оглядываясь назад, я бы предложил резистор с меньшим значением для R2поддержки более высоких токов программирования, например, 10K или 4,7K. Однако показанные 22K работают на практике даже для старых EPROM с током программирования до 30 мА или около того. )

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

Я бы выбрал другое устройство EEPROM. Напряжение программирования 12 В — это действительно Фред Флинтстоун! Современные устройства программируются на 5В. Я уже предлагал взглянуть на флэш- память вместо EEPROM. SST39SF010A умеет писать при 5В , а за эти деньги вы получаете вдвое больше 64Кб , так что при желании в него можно загружать две программы и переключаться между ними тумблером A16. Для будущих улучшений есть совместимые по выводам флэш-устройства с 256 КБ и 512 КБ (то же самое техническое описание). И это доступно в пакете DIL. Кому нужно 12В?!

Ну, если вы хотите быть разумным, вы правы. Я планировал реализовать свою конечную машину в eeprom, потому что полагал, что это лучшее решение для энергонезависимой памяти. Этот чип действительно похож на то, что мне нужно, и он действительно доступен. Принимаю olin, потому что это действительно отвечает на мой вопрос. Но спасибо вам за то, что вы определили вопрос, который я должен был задать.
@CMP - нет проблем, что вы приняли ответ Олина; он не мог знать, в чем ваша настоящая проблема, и ответил на то, что спросили. Тем не менее поразительно, что люди (я не хочу исключать себя) часто думают об одном конкретном решении, и если они застревают на этом, спрашивают об этой конкретной проблеме, вместо того, чтобы подняться на один шаг и посмотреть на исходную проблему. Туннельное зрение. Олин справедливо указывал на это уже несколько раз.