ALEX__45

усилить логический уровень 3.3в до 5в

14 сообщений в этой теме

Здравствуйте поверхностный поиск в Яндексе не дал результатов решил обратится к вам

суть в следующем:

к мк с логикой 5в подключена карта памяти по spi с логикой 3.3в через буферный элемент здесь все в порядке

поскольку сигнал от карты памяти 3.3в из за длинны шнура он теряется и становится ниже уровня лог 1 контроллера 5в

вопрос как простым методом усилить его до 5 вольт чтоб он не терялся предполагаю биполярным транзистором но по какой схеме?

у меня есть такой он подойдет? http://uamper.com/products/datasheet/2N2222.pdf

благодарю.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

@ALEX__45 Если поставить твой один транзистор то сигнал инвертируется

Нужно схемку на 2- транзисторах собирать

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

но вить есть схема с общей базой но у меня почему то не заработала

еще у меня есть pnp http://uamper.com/products/datasheet/2N2907.PDF

а если и на двух то какую

Изменено пользователем ALEX__45
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Это я и так знаю мне нужно повысить лог уровень не понизить!

в прочем погорячился не до конца посмотрел

Изменено пользователем ALEX__45
0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

благодарю а одним никак да?

1205399989_4.gif

а если так но биполярным?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Делай одним, контролеру не составит труда проинвертировать в софте.

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

никак, если на него подать плюс, на коллекторе станет минус, т.е сигнал инвертируется, а так по схеме двойной инвертор :)))) подаете плюс на выходе плюс но большего уровня :)

1

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Хотя и ваша схема работать будет, но может быть будет нехорошо контроллеру, т.к с 5 вольт весь ток потечет на него :) 

В идеале ставте один транзистор на входе кабеля, второй на выходе, кабель вместо R3 :) питание и 3.3 первому должно хватить, чтоб нормально через кабель открыть второй при лог 0 

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

 

1 час назад, ALEX__45 сказал:

а если так но биполярным?

Вот так:

cxem_level_shift1.png

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

заработала последняя схема но пришлось уменьшить скорость для карты в прошивке мк

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Резисторы не успевают подтягивать ?

0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша публикация должна быть проверена модератором

7
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вы вставили отформатированное содержимое.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был востановлен.   Очистить редактор

Загрузка...

  • Похожие публикации

    • Автор: snake1122a
      Хочу создать некое устройство на ардуино pro mini, работающее 24/7 и интересует вопрос надежности. Известны ли данные насчет того, как часто этот контроллер может повисать по программным и аппаратным причинам? Подумалось, а почему бы не поставить рядом простой примитивный таймер, который бы сбрасывал его, например, каждые 5 минут (если это не влияет на основную функциональность разработки или есть возможность это координировать)?
    • Автор: Инженер!Туленков
      Всем добрый вечер! Прошу помощи в странном деле. 
      Присутствует бутерброд - Arduino Nano + Ethernet шилд в который вставляется нано.
      К пинам подключены твердотельные реле ssr-25DA - 5 штук.
      Их характеристики:
      Input voltage: 3-32VDC
      Output voltage: 24-380VAC
      Output current: 25A
      Working voltage: 250V
      On voltage: ≤1V
      One-off Time: ≤10ms
      Off leakage Current: ≤2mA
      Реле соединено по схеме:

      В интернете у всех работает. Питание ардуины при этом было 500 мА. Ethernet шилд не был подключен к сети.
      Был написан код который выставляет HIGH на 2,3,4,5,6 пине и через 5 секунд в LOW.
      Все работало минут 10, потом смотрю одно реле работает, а остальные нет. Вынял ардуину, а она не шьется.
      Я нагрузил каждый из пинов и вывел из строя ардуину?

    • Автор: Инженер!Туленков
      Всем добрый вечер! Прошу помощи в странном деле. 
      Присутствует бутерброд - Arduino Nano + Ethernet шилд в который вставляется нано.
      К пинам подключены твердотельные реле ssr-25DA - 5 штук.
      Их характеристики:
      Input voltage: 3-32VDC
      Output voltage: 24-380VAC
      Output current: 25A
      Working voltage: 250V
      On voltage: ≤1V
      One-off Time: ≤10ms
      Off leakage Current: ≤2mA
      Реле соединено по схеме:

      В интернете у всех работает. Питание ардуины при этом было 500 мА. Ethernet шилд не был подключен к сети.
      Был написан код который выставляет HIGH на 2,3,4,5,6 пине и через 5 секунд в LOW.
      Все работало минут 10, потом смотрю одно реле работает, а остальные нет. Вынял ардуину, а она не шьется.
      Я нагрузил по ~25 мА на каждый из пинов и вывел из строя ардуину, и надо было резистор ~1кОм последовательно включать?

    • Автор: 1YHAIhwx
      Я пытаюсь захватить сигнал с ИК-пульта ДУ. Делаю это при помощи Arduino Micro 16 МГц с подключенным к нему фотоприёмником TSOP1736. Код следующий:
      const int ARDUINO_MICRO_INTTERRUPT_ON_PIN3 = 0; const int BUFFER_LEN = 40; volatile unsigned long periods[BUFFER_LEN]; volatile int i = 0; volatile unsigned long lastMicros = 0; volatile unsigned long mcs; volatile boolean isRunning = false; void sensorInterruptHandler() { isRunning = true; } void setup() { attachInterrupt(ARDUINO_MICRO_INTTERRUPT_ON_PIN3, sensorInterruptHandler, CHANGE); Serial.begin(9600); } void loop() { if(!isRunning) { return; } if(i == BUFFER_LEN) { detachInterrupt(ARDUINO_MICRO_INTTERRUPT_ON_PIN3); for(int x = 1; x < BUFFER_LEN; ++x) { Serial.print(periods[x]); Serial.print(" "); } Serial.println(); Serial.flush(); lastMicros = 0; delay(1500); i = 0; attachInterrupt(ARDUINO_MICRO_INTTERRUPT_ON_PIN3, sensorInterruptHandler, CHANGE); } else { mcs = micros(); if(lastMicros > mcs) { Serial.print("Overflow!"); } periods[i] = mcs - lastMicros; lastMicros = mcs; ++i; } isRunning = false; } Работает следующим образом: всякое изменение уровня на ножке 3 вызывает установку флага isRunning. Главный цикл проверяет установку флага, если он установлен, записывает в буфер periods промежуток времени в микросекундах, в течении которого на ножке не менялся логический уровень. Если буфер заполнен, его содержимое выводится в UART и процесс повторяется. Считываю я всегда один и тот же сигнал, представленный на изображении. И проблема в том, что периодически я получаю совершенно некорректную величину временного промежутка, которую не могу объяснить даже переполнением (для проверки гипотезы о переполнении была вставлена проверка - сообщение о переполнении не печатается). Ниже массив данных, которые я получаю, звездочками отмечены проблемные считывания.
      2680 900 496 808 520 376 512 368 468 856 908 428 460 424 468 424 464 416 464 424 464 420 468 420 468 420 460 424 464 424 464 420 468 420 908 416 460 904 876 2684 896 484 820 520 368 520 368 *1344* *1312* 520 368 528 360 456 428 464 420 468 420 468 420 468 416 464 424 468 420 464 420 468 420 908 416 464 872 904 *83656* 2684 2680 900 492 816 524 360 520 368 464 860 908 428 460 428 460 424 464 424 468 416 472 416 460 424 464 424 464 424 468 416 460 428 460 424 904 424 468 864 912 2680 904 492 812 516 372 516 368 *1356* *1304* 516 372 516 368 468 428 460 420 460 424 464 420 468 420 468 420 460 432 456 424 464 424 912 412 468 864 904 *83656* 2684 2676 904 488 816 524 364 524 364 *1348* *1308* 524 364 524 364 460 424 464 424 468 420 468 416 460 424 464 424 468 420 468 416 460 428 912 412 468 896 880 *83652* 2680 2676 904 496 812 520 364 524 364 460 864 912 424 468 416 472 416 460 424 464 424 468 420 468 416 460 428 460 428 464 420 468 416 472 424 904 416 464 896 880 Почему я получаю эти странные значения? Эффект повторяется с возмутительным постоянством, и если значения 1344, 1312 ещё как-то можно объяснить, то появления промежутка в 83656 мкс мне совсем не понятно. Что же я делаю не так и откуда берутся столь странные значения? Притом они не случайны и придерживаются какого-то диапазона. Позиция проблемных периодов тоже остаётся неизменной. При подключении датчика вместо микрофона и захвата сигнала при помощи Audacity изменения периода импульсов не наблюдаю.
       

    • Автор: LoKeR
      Доброго времени суток, писал код обмен данных между двумя ардуинкой, отправляю из одной ардуинку "9" а из другого получаю фигню
      #include <SoftwareSerial.h> SoftwareSerial port(2, 3); // RX, TX int otp=9; void setup() { // put your setup code here, to run once: Serial.begin(9600); port.begin(9600); } void loop() { // put your main code here, to run repeatedly: port.println(otp); Serial.println(otp); delay(1000); } подскажите пожалуйста, где я ошибаюсь, или не тот делаю