Gazmarket59.ru

Газ Маркет 59
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Счетчики импульсов с последовательным переносом

Счетчик с последовательным переносом информации

Номер патента: 782163

Передача большее → меньшее

Диод, замыкающий сигнал на линию питания

Простейший вариант, при котором вся схема сопряжения сводится до одного резистора.

Например, мы используем микросхему которая питается от 3.3В, а снаружи приходит 5 вольт. В одном из моих недавних проектов я использовал микросхему приёмника интерфейса RS-423, у которой на выходе было напряжение 5 вольт, и мне нужно было подключить её к МК STM32, который питается от 3.3В. Минимальное напряжение питания приёмника составляло 4.5 вольта, так что я не мог запитать её от тех же 3.3В.

Внутри STM32 около каждого вывода стоят защитные «диодные вилки» — последовательно включенные диоды (часто это диоды Шоттки), которые предохраняют пин от напряжений выше Vcc и ниже GND.

При попадании 5В на такой 3.3В вход, верхний диод открывается, пропуская ток с пина на Vcc, при этом на диоде падает напряжение порядка 0.3В.

Этот диод довольно слаб, в даташите даже не приводятся его параметры. Если вы попытаетесь подавать на вход больше 3.6В в течение даже небольшого времени — диод сгорит, ваши 5 вольт попадут дальше в схему и в итоге сгорит всё.

Однако можно обеспечить этому диоду гораздо более мягкие условия, и таким образом использовать его как элемент нашей схемы конвертера уровня. Для этого достаточно просто поставить резистор последовательно с входной цепью. Номинал не очень важен, но можно начать с 4.7кОм.

Теперь в первый момент времени на вход попадают 5 вольт, спустя несколько десятков микросекунд диод открывается и даёт этому высокому напряжению стечь в цепь Vcc. Ток мог бы очень сильно вырасти, но ему мешает резистор, который ограничивает ток всего до каких-то полутора миллиампер. Конечно, в таком режиме диод может работать неограниченно долго.

Читайте так же:
Посмотреть плата по счетчику

Таким образом, для ввода большего напряжения в цепь меньшего — убедитесь что в приёмнике стоят защитные диоды, и просто поставьте последовательно резистор в 1кОм.

Если же этих диодов нет — поставьте снаружи свой.

Расчёт сопротивления резистора можно провести, если знать предельный ток защитных диодов. Они представляют собой обычные интегральные диоды, значит что ток через них вряд ли может превышать 1мА. В даташитах очень редко приводят этот параметр, но можно найти значения порядка 0.5-1мА.

Также нам нужно вычислить напряжение, которое должно падать на резисторе: приходит 5 вольт, должно остаться 3.3В, минус падение напряжения на диоде 0.3В, итого 1.4В. Исходя из этого, номинал токоограничивающего резистора составит 1.4В / 0.5мА = 2.8кОм. Чтобы гарантированно остаться в щадящем режиме, возьмём резистор побольше: например 3.3кОм или 4.7кОм.

Резисторный делитель

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

Стабилитрон

Ещё одна простая схема, в которой напряжение ограничивает стабилитрон. Возьмите стабилитрон на 3.3 вольта, например BZX84C3V3. Точность подбора ограничивающего напряжения опять же неважна, можете взять стабилитрон на 3 вольта, если они окажутся доступнее. Токоограничивающий резистор — любой, номиналом от 1 до 10 кОм.

Три диода последовательно

Три стандартных кремниевых диода последовательно дадут падение напряжения 0.6 В * 3 = 1.8 В. Таким образом, с 5 вольт напряжение упадёт до 3.2.

Экзотический вариант, в промышленной электронике я такого не видел.

Объяснение программы для Arduino

Полный код программы приведен в конце статьи, здесь же мы кратко рассмотрим его основные фрагменты.

Читайте так же:
Счетчик энергомера выдает ошибка

Прежде чем переходить непосредственно к программе давайте вспомним основы формирования необходимого нам сигнала. Как выглядит изменяющийся во времени ШИМ сигнал мы изучили в первой части нашей статьи, здесь же стоит проблема как сформировать подобный сигнал с помощью платы Arduino.

Для формирования изменяющего во времени ШИМ сигнала мы будем использовать 16-битный timer1 с коэффициентом деления предделителя равным 1, что обеспечит нам время 1600/16000000 = 0.1ms на каждую единицу счета таймера (более подробно о таймерах Arduino можно прочитать в этой статье). То есть в нашем случае половина цикла нужной нам синусоидальной волны будет соответствовать 100 единицам счета таймера. Другими словами, мы можем разделить полный цикл нашей синусоидальной волны на 200 частей.

То есть нам необходимо разделить нашу синусоиду на 200 частей и рассчитать соответствующие амплитуды каждой из этих частей. Далее мы должны конвертировать эти значения в значения счета таймера при помощи умножения их на предел счета таймера. Потом эти значения мы должны поместить в таблицу преобразования чтобы в дальнейшем брать из нее значения для таймера, с помощью которого мы и будем формировать нашу синусоидальную волну.

Чтобы упростить программу нашего проекта мы использовали специальную библиотеку для формирования SPWM сигнала, написанную программистом по имени Kurt Hutten. Скачать ее можно по следующей ссылке.

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

голоса
Рейтинг статьи
Ссылка на основную публикацию
Adblock
detector