Как подключить мощную нагрузку к микроконтроллеру

Микроконтроллеры / Для начинающих /

Что нужно для того, чтобы стать профессиональным разработчиком программ для микроконтроллеров и выйти на такой уровень мастерства, который позволит с лёгкостью найти и устроиться на работу с высокой зарплатой (средняя зарплата программиста микроконтроллеров по России на начало 2022 года составляет 80 000 рублей). Подробнее…

Как вы понимаете, мощную и/или высоковольтную нагрузку (такую как лампы накаливания, электродвигатели, электронагревательные элементы и т.п.) нельзя напрямую подключить к выходу микроконтроллера. Потому что выходы микроконтроллера:

  1. Не рассчитаны на работу с высоким напряжением.
  2. Не рассчитаны на управление мощной нагрузкой (нагрузкой, которая потребляет большой ток).
  3. Не имеют гальванической развязки (иногда это важно даже при управлении слаботочной нагрузкой).

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

  1. Подключение нагрузки через оптрон
  2. Подключение нагрузки через транзистор.
  3. Подключение нагрузки через электромагнитное реле.
  4. Подключение нагрузки через твёрдотельное реле.

Более подробно эти виды подключения будут рассмотрены в соответствующих статьях. А здесь я буду говорить только о достоинствах и недостатках этих способов.

Подключение нагрузки через оптрон

Итак, один из наиболее простых способов — это подключение через оптрон (фотосемистор, фототиристор и т.п.).

Этот способ подходит для управления активной нагрузкой, такой как лампы накаливания, электронагреватели и т.п. Его преимуществами являются наличие гальванической развязки, относительная простота подключения и дешевизна оптронов. Серьёзный недостаток, пожалуй, один. Но довольно существенный — при управлении индуктивной нагрузкой, такой как электродвигатели, симистор/тиристор оптрона может самопроизвольно открыться (без команды от микроконтроллера). Так что для такого случая придётся принимать дополнительные меры, усложняющие устройство на микроконтроллере.

Также недостатком можно считать то, что для использования оптрона надо хоть немного разбираться в электронике.

Схема управления нагрузкой на основе мощных оптодинисторов

Метод фазового регулирования

Это стандартный способ управления тиристором. Состоит он в выборе момента открытия тиристора относительно начала фазы текущего полупериода питающего напряжения. Этот процесс иллюстрирует следующий рисунок:

Фазовый метод регулирования

На рисунке приведена форма сигнала на нагрузке при разных значениях времени задержки. Алгоритмм регулирования состоит в том, что сначала контроллер ожидает начала очередного полупериода. Обнаружив начало полупериода, контроллер запускает внутренний таймер. По окончании задержки, формируемой таймером контроллер выдает запускающий сигнал на выход, управляющий тиристорным регулятором. Тиристор открывается и напряжение поступает на нагрузку. Важно, что бы управляющее напряжение было снято с тиристора до окончания текущего полупериода. В этом случае, как только сетевое напряжение достигнет нуля, тиристор закроется а с началом следующего полупериода процесс отсчета времени повторится снова. В зависимости от выбранной длительности задержки отдаваемая в нагрузку мощность будет различной. Так при малом времени задержки (t1) мощность максимальна. При t2 в нагрузку отдается ровно половина возможной мощности, а при t3 мощность минимальна.

Метод исключения отдельных полупериодов

Главным недостатком предыдущего метода является большой уровень электромагнитных помех, излучаемых тиристорным ключем в процессе работы. Подобная схема будет сильно мешать рядом работающему телевизору или радиоприемнику, создавая помехи на экране и по звуку. Большой уровень помех обусловлен тем, что включение тиристора происходит в момент, когда мгновенное значение сетевого напряжения находится вблизи его амплитуды. Крутые фронты достаточно большого уровня напряжения и создают большое количество помех. Выходом является второй метод регулирования. Он состоит в том, что включение тиристора всегда происходит в самом начале полупериода, когда напряжение переходит через ноль и, если полупериод пропускается в нагрузку, то весь полностью. Регулировка же мощности производится путем исключения отдельных полупериодов. Этот процесс показан на следующем рисунке:

Метод исключения полупериода

На рисунке мы видим, что все полупериоды с первого по пятый тиристор беспрепятственно открывается. Затем, во время прохождения шестого полупериода сигнал управления с тиристора снимается и напряжение на выход не поступает. В начале седьмого полупериода сигнал управления опять включается. Для реализации подобного метода разрабатываются целые схемы исключения полупериодов. Например, берется последовательность из десяти полупериодов. Для того, что бы получить мощность в 50%, пять полупериодов пропускают в нагрузку, а остальные пять не пропускают. Затем все повторяется, каждые 10 полупериодов. Причем не обязательно исключать полупериоды подряд. Можно разбросать включенные полупериоды по всему этому отрезку. Для получения 10% мощности из 10 придется оставить только один полупериод. А для 70% нужно оставить 7 а исключить три. Ну и так далее…

Недостатком такого способа является то, что подобным образом затруднительно регулировать мощность свечения электрической лампы. Лампа будет заметно мерцать. Но для регулировки мощности нагревательного элемента этот способ является самым оптимальным.

Последнее обновление ( 30.04.2008 г. )

Управление оптодинистором

Автор Белов А. В.

30.04.2008 г.

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

Данная схема является альтернативой схеме описанной в статье «Управление тиристором». В старом варианте схемы для коммутации нагрузки использовался мощный симистор, а для развязки управляемых цепей 220В и низковольтных цепей микроконтроллера использовался маломощный оптодинистор. В новом варианте схемы для управления нагрузкой используется мощный оптодинистор, который заменяет оба перечисленные выше устройства. Ниже приведена схема такого устройства:

Схема блока питания

Автор Белов А. В.

30.04.2008 г.

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

Как известно, для питания цифровых микросхем необходимо стабилизированное напряжения 5В. Заметим, что современные микроконтроллеры способны работать в широком диапазоне питающих напряжений. Обычно от 3 до 6 вольт. Главное требование, что бы напряжение было стабилизированное. То есть не менялось при изменении нагрузки. Однако, обычно любое микропроцессорное устройство кроме cамого микроконтроллера содержит ряд других микросхем, которые обычно более требовательны к напряжению питания. Поэтому правильнее всего, если нет каких нибудь специальных причин, выбирать напряжение питания +5В. Такое напряжение питания широко используется в электронной технике. Поэтому промышленность давно уже наладила производство специальных микросхем — стабилизаторов напряжения. Для большинства применений подойдет микросхема 7905 или ее отечественный аналог КРЕН5. Ниже на рисунке приведена схема блока питания, который расчитан на питание практически любого устройства на микроконтроллерах.

Схема блока питания

Трансформатор T1 понижает сетевое напряжение до требуемой величины (примерно 8…9 вольт). Выпрямитель VD1 выпрямляет его. Предварительный фильтр C1 сглаживает пульсации выпрямленного напряжения и в результате на вход стабилизатора DA1 поступает постоянное нестабилизированное напряжение примерно равное 12 В. С выхода стабилизатора стабилизированное напряжение 5В поступает на выход (на питание цифровых цепей микроконтроллерного устройства. Нестабилизированное напряжение +12В так же поступает для питания некоторых цепей микроконтроллерного устройства. Обычно это силовые цепи, не требующие стабилизации напряжения: светодиоды, реле и т.п. Подключение таких цепей до стабилизатора существенно разгружает микросхему DA1 облегчает ее тепловой режим, повышает надежность и увеличивает КПД. Дополнительный фильтр С2, С3 служит для подавления помех по питанию. Причем электролит C3 служит для подавления низкочастотных помех, а керамический конденсатор C2 подавляет высочастотные помехи.

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

Подробнее об этом можно прочитать в статье «Управление тиристором» и в статье «Управление оптодинистором».

Подключение светодиодов

Автор Белов А. В.

01.05.2008 г.

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

Ни одно устройство на основе микроконтроллера не обходится без световых индикаторов. В качестве одиночных светоизлучателей удобнее всего использовать светодиоды. Современные микроконтроллеры (в частности микроконтроллеры серии AVR) имеют достаточно мощные выходные схемы. Они рассчитаны на выходной ток до 40 мА. Этого вполне достаточно для непосредственного подключения одного маломощного светодиода. На следующем рисунке показано, как можно подключить светодиод к выходу микроконтроллеру.

Непосредственное подключение светодиода

Простой маломощный светодиодный индикатор — это самый распространенный способ индицирования. Именно такие индикаторы мы видим на подавляющем большинстве конструкций. Однако, иногда к микроконтроллеру необходимо подключить более мощные светодиоды. Это светодиоды повышенной яркости свечения или светодиоды большой площади излучения. В том случае, когда ток потребления светодиода превышает 40 мА, применяется электронный ключ на транзисторе. Ниже приводится схема подобного подключения.

Подключение при помощи электронного ключа

При использовании транзистора КТ315 можно подключать светодиод с током потребления до 100 мА. Если нужно подключить светодиод с еще большим током потребления, то необходимо подобрать другой, более мощный транзистор.

Подключение кнопок

Автор Белов А. В.

01.05.2008 г.

В данной статье освещаются вопросы подключения к микроконтроллеру различных кнопок и клавиш.

Рис. 1.

Практически ни одна микропроцессорная система не обходится без кнопок, клавиш, концевых контактов и тому подобных элементов коммутации. Любое подобное коммутационное устройство — это просто пара контактов, которые замыкаются при нажатии на клавишу (кнопку) или при другом механическом воздействии. Например, при срабатывании концевого выключателя управляемого механизма. Поэтому подключение любого вышеописанного устройства сводится к подключению к микроконтроллеру пары контактов. Микроконтроллеры серии AVR довольно неплохо приспособлены для работы именно с кнопками. Каждый из выводов каждого порта имеет специальные средства, облегчающие подключение внешних контактов.

На рисунке 1 показан типовой способ подключение пары контактов к порту микроконтроллера. Рассмотрим подробнее принцип работы этой схемы. Но прежде мы должны вспомнить, что любой из выводов любого порта может работать в одном из двух режимов: либо как вход, либо как выход. Естественно, в нашем случае соответствующий вывод должен быть переведен в режим входа. В этом режиме имеется возможность программным путем при необходимости подключать к любой внешней линии внутренний резистор нагрузки. На рисунке 1 этот резистор обозначен R. Этот резистор специально введен для того, что бы работать с внешними контактами. При создании программы для всех входов, к которым подключены контакты, не забудьте предусмотреть команды, включающие этот резистор. Если же вход предназначен для других целей, то скорее всего резистор необходимо отключить. Электронный ключ, который программно включает и отключает внутренний резистор нагрузки условно показан на рисунке 1 и обозначен как K.

И так, вывод порта запрограммирован как вход, внутренний резистор нагрузки включен. Если внешние контакты K1 разомкнуты, то на входе присутствует напряжение, близкое к напряжению питания, которое поступает через резистор R. При считывании информации из порта в данном разряде будет логическая единица. Если же контакты замкнуть, то линия порта будет замкнута на общий провод. Напряжение на входе станет равным нулю. При считывании информации в данном разряде порта появится ноль. Таким образом считывая информацию из порта и анализируя значение соответствующего разряда микроконтроллер всегда может определить, замкнуты контакты или нет. Если разряд равен нулю — контакты замкнуты, единице — разомкнуты.

Указанным выше образом можно подключить отдельную пару контактов при желании ко всем выводам всех портов. Однако такой подход не назовешь рациональным. Кроме клавиш к портам микроконтроллера должны подключаться и другие устройства: индикаторы, реле, датчики, последовательные каналы связи и многое другое. Поэтому, для экономии выводов и для упрощения схемы применяют матрицы клавиш. Схема типичной матрицы из 16 клавиш приведена на рисунке 2.

Рис. 2.

Для подключения матрицы используется весь порт PB микроконтроллера и еще две линии порта PD. Как видно из схемы каждый из выводов порта PB подключен сразу к двум кнопкам. Например, вывод PB0 подключен к кнопке S1 и S9. Вывод PB1 к S2 и S10 и так далее. Второй контакт каждой кнопки подключен к одной из линий PD5 или PD6. В результате образуется матрица. Она напоминает решетку. Два вертикальных провода и восемь горизонтальных. В каждом пересечении этих проводов вставлено по кнопке.

Как же работает эта матрица. Для правильной работы необходимо все выводы порта PB перевести в режим входов и включить для каждого из этих входов внутренний нагрузочный резистор. А два вывода порта PD (PD5 и PD6) нужно перевести в режим выходов. Для того, что бы считать состояние кнопок микроконтроллер должен сначала подать на выход PD6 сигнал логического нуля, а на выход PD5 сигнал логической единицы. Затем он должен прочитать байт из порта PB. Этот байт будет содержать информацию о состоянии кнопок S1…S8. Каждый бит будет отвечать за свою кнопку. Нулевой бит (PB0) за кнопку S1, первый бит (PB1) за кнопку S2 и т.д. Если кнопка нажата, то в соответствующем разряде будет ноль, если не нажата — единица. После анализа нажатия первой половины кнопок, микроконтроллер должен установить на выходе PD5 логический ноль, а на выходе PD6 — единицу. И опять считать байт из порта PB. Теперь этот байт будет содержать информацию о состоянии кнопок S9…S16. Опрашивая таким образом то первую то вторую половину кнопок, микроконтроллер может реагировать на нажатие каждой из кнопок отдельно.

Описанная выше матрица может быть легко расширена. Можно взять не две вертикальные линии, а три, четыре и так далее. Для данного микроконтроллера максимально возможная матрица имеет размеры 7X8. Так как порт PD имеет лишь семь линий. Общее количество кнопок при этом будет равно 56.

Последнее обновление ( 01.05.2008 г. )

Управление ЖКИ (LCD) индикаторами

Автор Белов А. В.

02.05.2008 г.

В данной статье рассматривается пример подключения жидкокристаллического индикатора (сокращенно ЖКИ или LCD) к микроконтроллеру.

Сегодня на рынке электронных компонентов можно найти огромное количество индикаторов разных фирм и модификаций. Каждый индикатор имеет свои особенности, свою внутреннюю архитектуру и свой интерфейс для подключения к микроконтроллеру. Однако общие принципы подключения примерно одинаковы. Сразу отметим, что все ЖКИ можно разделить на индикаторы со встроенным контроллером и простые индикаторы без микроконтроллера. Индикаторы с микроконтроллером более предпочтительны для самостоятельного применения. Встроенный микроконтроллер уже содержит в себе сложные программы, выполняющие большинство операций по выводу изображения на индикатор и учитывающий все специфические особенности именно этой индикаторной панели. А интерфейс связи встроенного контроллера обычно совсем не сложный и позволяет легко подключить его к любому универсальному контроллеру. Возмем для примера микроконтроллер Российского производства МТ-10Т7-7. Это простой индикатор, дисплей которого представляет собой строку из десяти семисегментных знакомест. Напряжение питания такого индикатора от 3 до 5 вольт. Ток потребления 30 мкА. Габаритные размеры 66 X 31,5 X 9,5 мм. Схема подключения такого индикатора к микроконтроллеру приведена на рисунке 1.

Рис. 1. Подключение ЖКИ к микроконтроллеру

Для управления индикатором используется порт PB. Линии PB0…PB3 образуют шину данных/адреса. А линия PB4 используется для передачи на индикатор сигнала записи. Выход PB6 используется для выбора адрес/данные. Команды управления передаются на индикатор следующим образом. Сначала необходимо передать адрес разряда, куда мы хотим записать код очередного выводимого символа. Адрес состоит из одного четырехбитного двоичного числа. Нумерация разрядов ведется слева на право. Самый левый (старший) разряд имеет адрес 0 (00002). Следующий разряд имеет адрес 1 (00012). Последний, самый правый, десятый разряд имеет адрес 9 (10012). Для того, что бы записать адрес в контроллер индикатора необходимо, что бы на его A0 присутствовал сигнал логического нуля. Значение адреса выставляется на выходах PB0…PB3. А затем на выход PB4 кратковременно подается единичный сигнал, который поступает на вход WR1 индикатора. По фронту этого импульса адрес записывается в индикатор и запоминается в его внутренней памяти. Теперь, если в индикатор будет записан байт данных, он поступит именно по этому адресу.

Байт данных определяет изображение знака, которое высветится в соответствующем разряде индикатора. Каждый бит этого байта отвечает за свой сегмент в семисегментном поле. Восьмой бит отвечает за высвечивание десятичной точки. Для передачи байта данных на входе A0, а значит и на выходе PB6 должен присутствовать сигнал логической единицы. Байт данных передается в индикатор за два приема. Сначала на выводах PB0…PB3 выставляется младший полубайт. По сигналу на WR1 он записывается в память индикатора. Затем, на тех же выходах (PB0…PB3) выставляется старший полубайт и тоже записывается по сигналу на WR1. После записи второго (старшего) полубайта изображение появляется в соответствующем разряде индикатора, а адрес во внутренней памяти индикатора автоматически увеличивается на единицу. Таким образом, для записи данных в следующий разряд индикатора уже не надо передавать в него адрес. Весь процесс записи адреса и данных в индикатор изображен на рисунке 2.

Рис. 2. Диаграмма работы интерфейса индикатора

На этом рисунке представлены два варианта работы с индикатором. Запись одного знакоместа и запись нескольких знакомест подряд. Переменный резистор R1 (см. схему на рис. 1) предназначен для регулировки контрастности дисплея. Для того, что бы изображение на индикаторе было хорошо видно, нужно выставить самую подходящую контрастность наблюдая изображение на экране индикатора. Для разной освещенности и разного угла зрения ручку регулятора придется выставлять в разные положения. Хорошо видное изображение в других при изменившихся условиях наблюдения может стать абсолютно не видимым. Что бы увидеть его нужно покрутить ручку регулятора в разные стороны.

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

Последнее обновление ( 01.05.2008 г. )

Подключение энкодера

Автор Белов А. В.

04.05.2008 г.

Из этой статьи вы узнаете, что такое энкодер, чем он отличается от переменного резистора и как он помогает при помощи простого поворота ручки вводить информацию в микроконтроллер.

В связи с тотальным переходом к микропроцессорному управлению бытовыми и другими электронными приборами изменились и органы регулировки, применяемые в этих приборах. Если раньше для того, что бы отрегулировать громкость радиоприемника или телевизора вы должны были просто покрутить соответствующую ручку, то теперь вы зачастую вынуждены пользоваться двумя кнопками: «Громкость +» и «Громкость -«. А если нужно регулировать не только громкость? Для многих пользователей это просто не удобно. К тому же страдает оперативность регулировки. Нажав кнопку уменьшения громкости нужно еще подождать какое то время, пока громкость доползет до нужного уровня. И все это время приходится страдать от громкого звука. Совместить преимущества традиционных регуляторов и при этом не потерять новые возможности, которые нам дают микроконтроллеры призвано новое устройство ввода информации, которое получило название энкодер. По внешнему виду и установочным размерам энкодер очень похож на обычный переменный резистор, который использовался в традиционных аналоговых устройствах. Но по внутреннему устройству он кардинально отличается. Энкодер так же, как и резистор имеет выступающую вперед ось, на которую можно надеть такую же самую ручку, какую обычно одевают на резистор. Вращение рукоятки энкодера приводит к вырабатыванию им последовательности импульсов, которые затем поступают на микроконтроллер и дают ему информацию о том, на сколько нужно уменьшить либо увеличить то либо иное значение. Например, насколько нужно увеличить или уменьшить громкость сигнала и т.п. Причем устройство энкодера таково, что микроконтроллер может различать не только величину, на которую нужно изменить параметр, но и направление этого изменения. Это позволяет, например, при вращении оси энкодера в одну сторону увеличивать громкость, а при вращении в другую — уменьшать.

Рис. 1. Принцип работы энкодера

Рассмотрим, как же устроен энкодер. На рисунке 1 показано устройство простого механического энкодера. Как видно из рисунка, основой энкодера является диск из изоляционного материалла закрепленный на оси, на которую и насаживается рукоятка для ее вращения. По периметру диска равномерно расположены специальные прорези. Прорези делят всю окружность на несколько (обысно 6-8) равных секторов. Причем ширина прорезей равна ширине промежутков между ними. Кроме того, имеется две группы контактов, которые установлены таким образом, что при вращении диска они то замыкаются попав в прорезь, то размыкаются в промежутке между прорезями. Очень важно расположение этих пар контактов относительно прорезей. Контакты расположены таким образом, что в тот момент, когда одна пара находится на краю какой либо прорези, вторая пара контактов находится ровно посредине между двумя соседними прорезями. Именно такое расположение и показано на рисунке. В результате реализуется следующий порядок замыкания/размыкания контактов:

Замыкается первая группа контактов

Замыкается вторая группа контактов

Размыкается первая группа контактов

Размыкается вторая группа контактов

5. Все повторяется сначала.

Рис. 2. Схема энкодера Рис. 3. Диаграмма работы

На рисунке 2 приведена внутренняя электрическая схема простого механического энкодера. Энкодер имеет всего три вывода (что делает его еще больше похожим на переменный резистор). Нижний по схеме вывод — общий для обеих пар контактов. В результате, при вращении рукоятки энкодера на выходе мы получим две последовательности импульсов. При равномерном вращении в одну сторону это будут два меандра, сдвинутых по фазе на 90 градусов. Для наглядности этот процесс показан на рисунке 3. Как микроконтроллер определяет угол поворота оси энкодера надеюсь понятно. Он просто подсчитывает число импульсов. Причем можно считать импульсы приходящие от любой из группы контактов. Основной фокус — как определить направления вращения. Как раз тут и помогает последовательность замыкания и размыкания контактов. При вращении оси энкодера в одну из сторон каждый раз, когда первая группа контактов переходит из замкнутого состояния в разомкнутое, вторая группа контактов оказывается замкнута. Причем момент перехода первой группы приходится как раз на середину отрезка времени, когда вторая группа замкнута. То есть, дребезг уже закончился и все переходные процессы улеглись. При вращении в другую сторону порядок размыканий и замыканий сменяется на обратный. Поэтому в момент, когда первая группа контактов переходит из замкнутого состояния в разомкнутое, вторая группа всегда оказывается разомкнута. Именно по этому факту микроконтроллер и определяет направление вращения.

Рис. 4. Схема подключения энкодера к микроконтроллеру

На рисунке 4 показана схема подключения энкодера к микроконтроллеру. Контакты энкодера подключаются таким же образом, как подключается простая отдельная кнопка (см. статью «Подключение кнопок»). Линии порта PD2 и PD3 должны быть настроены как входы и внутренний нагрузочный резистор на обоих входах должен быть включен. Подробнее о настройке линий порта и внутренних нагрузочных резисторах читайте в упомянутой выше статье «Подключение кнопок». Общий вывод энкодера, как видно из схемы, подключается к общему проводу всего устройства.

Программа обработки сигнала от энкодера предельно проста. Обратите внимание, что на схеме (рис. 4) для подключения энкодера выбраны линии PD2 и PD3. И это не случайно. В микроконтроллере ATtiny2313 альтернативной функцией этих выводов является функция входов внешнего прерывания INT0 и INT1. Для работы с энкодером как раз и используется одно из этиз прерываний. Например, можно использовать прерывание по внешнему входу INT0. То есть по входу PD2 (вывод 6). Из чего же состоит программа? Ну, во первых, сначала нужно разрешить прерывание по INT0. Причем необходимо выбрать такой режим, когда прерывание происходит по фрону (или спаду) импульса на этом входе. Ну а затем еще нужна простейшая подпрограммка обработки этого прерывания. Эта подпрограммка должна просто проверять значение линии порта PD3 и в зависимости от того, равно оно нули либо единице уменьшать либо увеличивать регулируемое значение.

Рассмотрим это подробнее. Допустим, что мы выбрали режим прерывания по фронту импульса. Представим, что контроллер выполняет основную программу, не связанную с энкодером. В какой то момент пользователь вращает рукоятку энкодера, например, влево. Контакты начинают замыкаться и размыкаться. По фронту импульса на входе INT0 в микроконтроллере происходит вызов прерывания. Это значит, что работа основной программы временно прерывается и контроллер переходит к подпрограмме обработки прерывания. Эта подпрограмма читает информацию из порта PD и оценивает содержимое разряда PD3. Так как рукоятка энкодера была повернута (мы договорились) вправо, то в этом разряде микроконтроллер обнаружит логическую единицу. Обнаружив единицу подпрограмма обработки прерывания увеличивает значение специальной ячейки, где хранится код, соответствующий текущей громкости. Код увеличивается на единицу. После этого подпрограмма заканчивает свою работу. Микроконтроллер снова переходит к выполнению своей основной программы. Если вращение в ту же сторону продолжается, то по фронту следующего импульса на INT0 опять будет вызвано прерывание и значение громкости снова увеличится на единицу. И так до тех пор, пока не прикратится вращение рукоятки энкодера либо не переполнится значение громкости. Подпрограмма должна проверять это значение и не увеличивать громкость, если она достигла максимума.

Если же ротор энкодера вращать в другую сторону, то та же процедура обработки прерывания, вызванная по фронту сигнала на входе NT0 обнаружит на входе PD3 значение логического нуля. Обнаружив этот ноль, подпрограмма должна уменьшить значение кода в ячейке громкости на единицу. Если вращение продолжается, то по фронту каждого импульса на входе INT0 будет вызываться это прерывание и каждый раз значение громкости будет уменьшаться. И в этом случае, программа должна контроллировать теперь уже минимальное значение громкости. И по достижении нуля, программа больше не должна производить процедуру вычитания.

До сих пор мы говорили о простом механическом энкодере. Но наличие механических контактов всегда связано с такими явлениями, как дребезг, а так же помехи, вызванные плохим контактом в связи с засорением или износом. Все это приводит к низкой надежности работы механического энкодера. Поэтому в последнее время получают все болшее распространение оптоэлектрические энкодеры. В оптоэлектрическом энкодере вместо механических контактов используются оптопары: светодиод-фотодиод. Такой энкодер требует дополнительного внешнего питания, поэтому он имеет еще один вывод — вывод питания. Питаются такие энкодеры обычно от стабилизированного источника +5В и выдают на выходе сигналы, близкие к стандартным логическим уровням. В связи с этим, отпадает необходимость включать внутренние резисторы нагрузки для тех входов микроконтроллера, к которым подключен такой энкодер. В остальном, работа с оптоэлектронными энкодерами аналогична работе с простыми механическими моделями. К сожалению, использование оптоэлектронных энкодеров ограничено их высокой стоимостью.

Последнее обновление (04.05.2008 г.)

Практические примеры применения USB-AVR

Проект USB-AVR пришелся по вкусу многим самодеятельным конструкторам из самых разных стран мира. Компания Objective development на своем сайте призывает всех, кто разработал свою собственную конструкция с использованием их технологии, присылать ее описание или ссылку на сайт с таким описанием и охотно размещает все эти ссылки на своем сайте.

ТО. что проекте участвуют представители разных стран, привело к тому, что разные описания приводятся на разных языках. В основном на английском, немецком, итальянском. К сожалению, пока ни одного проекта на русском. Однако наш сайт планирует перевести описания самых интересных проектов.

Список проектов, выполненных с применением USB-AVR находится по адресу https://www.obdev.at/products/avrusb/projects.html Список разделен на категории:

Интерфейсы и адаптеры

В этом разделе перечислены примеры адаптеров, преобразовывающих стандарт USB в другие стандартные виды интерфейсов. Приводятся следующие примеры:

Преобразователь USB – uDMX. Стандарт uDMX является расширением стандарта DMX и отличается от последнего наличием питания. Канал DMX предназначен для управления световыми устройствами и различными сценическими эффектами.

Миниатюрный адаптер I2C шины. Для примера используется совместно с датчиком температуры DS1621.

USB – LPT адаптер.

1Следующая ⇒

Рекомендуемые страницы:

Подключение нагрузки через транзистор

Тоже выполняется довольно просто. Стоимость обычных транзисторов тоже относительно невелика. Это плюс.

Минусы — можно управлять только нагрузкой постоянного тока (речь идёт о дешёвых биполярных транзисторах). Причём напряжение нагрузки тоже по возможности должно быть небольшим. Потому что высоковольтные транзисторы стоят уже не очень дёшево (а некоторые и очень дорого).

Ещё один недостаток — отсутствие гальванической развязки между нагрузкой и выходом микроконтроллера.

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

§ 38. Использование ШИМ. Подключение полевых транзисторов.

Киселев Роман, Июнь 2007
Статья обновлена 26 Мая 2014
Файлы к статье
В этой статье мы рассмотрим вопросы регулировки мощности различных устройств, подключенных через полевой транзистор к МК с помощью широтно-импульсной модуляции (ШИМ).

Сначала немного теории. ШИМ — это широко используемый в электронике способ регулировки мощности самых разнообразных устройств. Где он только не нашел еще применения! Способ заключается в кратковременном включении устройства (на доли миллисекунд), а затем его отключении на некоторый момент времени. Такой цикл включений-выключений непрерывно повторяется. Рассмотрим диаграмму ниже.

На диаграмме показана зависимость напряжения на нагрузке от времени. Закрашенное серым — это область, когда управляемый с помощью ШИМ прибор был включен. Выделяемую энергию можно считать пропорциональной площади этой области. Отношение периода повторения импульсов (T) к их длительности (AC) называется скважностью

. Величина, обратная скважности, называется
коэффициентом заполнения
. Судя по диаграмме, скважность наиболее велика в середине диаграммы. Значит, на этом участке на нагрузке выделялось наименьшее количество энергии в единицу времени. Надеюсь, с этим все понятно. Но возникает вопрос: а чем же так хороша ШИМ? Почему бы не использовать для регулировки мощности устройство, способное менять сопротивление (переменный резистор или транзистор)? Рассмотрим две, казалось бы, эквивалентные схемы.

Если менять сопротивление резистора, как показано на графике в центре, а на ключевой элемент правой схемы подавать ШИМ-последовательность, изображенную на диаграмме, то лампочки будут в любой момент времени светить одинаково (UL — напряжение на лампочке). Но в правой схеме энергия будет выделяться только в лампочке, а в левой — и в лампочке, и в резисторе (или транзисторе, которым можно с успехом его заменить). Резистор будет разогреваться, и, возможно, не хуже лампочки. Поэтому на вопрос, какая схема рациональнее, я думаю, любой ответит, что правая. Она называется импульсной, а левая схема — линейной. Когда работают с мощной сильноточной электроникой, всегда отдают предпочтение именно импульсным элементам и способам. Линейные применяются лишь там, где управляют малыми мощностями и слабыми токами. К тому же, в цифровой электронике, где существуют лишь два состояния — «включено» и «выключено», ШИМ реализовать намного легче. Чем мы и займемся в этой статье.

Для этого нам понадобится совсем немного — полевой транзистор, который и будет работать у нас в качестве ключа (в ключевом режиме). Полевой транзистор предпочтительней потому, что его затвор изолирован от силовой схемы и управление производится электрическим полем, а ток управления достигает микроампер. Это позволяет, используя один-два транзистора, управлять с их помощью нагрузкой огромной мощности (до десятков ампер и десятков-сотен вольт), не нагружая МК. Замечательные мощные и недорогие (10 — 30 руб) транзисторы производит фирма International Rectifier. Они имеют название IRFxxxx, где xxxx — трех или четырехзначный номер. Я использовал в своей макетной плате IRF7311. Подойдут также и другие подобные ему: IRF7341, IRF7103 IRF7301, IRF7343, IRF7401, IRF7403, IRF7413… Эти транзисторы управляются логическим уровнем +5 В, т. е. нашего МК будет достаточно, чтобы полностью их открыть. Они, в свою очередь, могут управлять напряжением от 20 В (все) до 50 В (IRF7103, IRF7341) и через них можно будет открывать и закрывать более мощные транзисторы с достаточно высоким управляющим напряжением, например, IRF530. Таким образом, возможно собрать очень мощный быстродействующий каскад на полевых транзисторах, способный с помощью ШИМ плавно менять мощность на нагрузке, коммутируя токи в десятки ампер. Учитывая также тот факт, что полевые транзисторы можно соединять параллельно (в отличие от биполярных), возможно получить еще более мощный каскад на сотни ампер.

Итак, предположим, Вы решили купить IRF7311. Если открыть его Datasheet (есть в файлах к статье), то выясняется следующее: это махонькая микросхема в корпусе SO-8, внутри которой располагаются два полевых транзистора с индуцированным каналом N-типа и встроенными диодами Шоттки. Это означает, что для открывания транзистора надо подать на затвор G (Gate — «ворота, шлюз») управляющее напряжение +5 В по отношению к истоку S (Source — «источник»). Тогда, если было приложено коммутируемое напряжение «плюсом» к стоку D (Drain — «сток») и «минусом» к истоку, то потечет достаточно сильный ток (до 6 А) от D к S. Наличие диода Шоттки позволяет, не боясь ЭДС самоиндукции, применять эти транзисторы для управления электромоторами. Ниже приведу цоколевку транзистора и его внешний вид:

Сверху на корпусе в углу должна быть точка, такая же, как на рисунке. Она стоит рядом с «ножкой» 1. Кстати, у всех микросхем «ножки» нумеруются начиная от подобной метки против часовой стрелки, если смотреть сверху — а то вдруг кто не знает… Если Вы купили полевой транзистор с P-каналом — ничего страшного. Тогда Вам придется подать «минус» на G (относительно S) для включения и поменять полярность нагрузки. То есть для любого полевого транзистора с индуцированным затвором нужно подавать ток против стрелочки, расположенной между затвором и диодом, а нагрузку подключать так, чтобы ток через нее тек в направлении, обратном встроенному диоду. Вот и все.

Прицепим теперь наш транзистор IRF7311 затвором к 21 «ножке» МК (PD7, OC2

) и истоком к «земле». К его стоку подключим «плюс» внешнего источника питания (до 20 В), а между его «минусом» и истоком подключим нагрузку, например, лампочку или электромоторчик постоянного тока.

Когда я все собрал, получилось вот так (хоть проводов и не видно, но лампочка подключена):

Осталось только разобраться, как МК реализует ШИМ и написать программу. Как уже говорилось ранее, в нашем МК есть 3 таймера, и все они могут работать в ШИМ-режиме. Таймер1 является самым навороченным и может выводить ШИМ сразу на двух выводах МК. Но мы не будем вдаваться в ненужные нам пока подробности и сложности и рассмотрим работу с ШИМ на примере таймера2.

Существуют два режима работы таймера в качестве ШИМ-модулятора. Это Fast PWM (быстрая ШИМ) и Phase correct PWM (ШИМ с фазовой коррекцией). Рассмотрим оба режима на следующих диаграммах:

Режим работы определяется содержимым битов WGM (Waveform Generation Mode) в регистре TCCR2. В Datasheetе написано, что для ШИМ с фазовой коррекцией нужно установить в единицу WGM20, а для быстрой ШИМ WGM20 и WGM21. Чем же отличаются эти режимы? В быстром режиме меняется состояние «ножки» OC2 в моменты совпадения счетного регистра TCNT2 и регистра сравнения OCR2 (зеленая стрелка), а также в момент сброса таймера (синяя стрелка).При этом серединка импульса (оранжевая) как бы смещается влево, меняется фаза импульса. В режиме фазовой коррекции такого явления не наблюдается. В этом режиме таймер, досчитав до максимума (до 255), начинает счет в другую сторону. В моменты совпадения регистров TCNT2 и OCR2 меняется состояние ножки OC2. При этом серединка импульса никуда не смещается. Этот режим имеет в два раза меньшую частоту, чем быстрый, но изготовитель утверждает, что он лучше подходит для управления электромоторами (скорее всего, шаговыми). Быстрый режим можно использовать в любых других случаях. Все остальные таймеры работают в ШИМ-режиме аналогично, таймер1 позволяет также менять период ШИМ произвольным образом, но, думаю, нам это ни к чему.

С теорией вроде бы теперь все понятно. Откроем IAR, создадим новый проект, наберем следующий код:
#include
«iom16.h» unsigned char pwm = 1; unsigned char inc = 1;
// inc = 0 — уменьшать, inc = 1 — увеличивать яркостьvoid
timer2_init() { OCR2 = 1;
//ШИМ почти выключена // Быстрая ШИМ, переключать OC2 (PD7), увеличение таймера каждые 64 такта
TCCR2 |= (1 void timer1_init() { OCR1A = 43200;
//Прерывание 32 раза в секунду
TCCR1A = 0;
// СТС режим, увеличение таймера каждые 8 тактов
TCCR1B |= (1 // Прерывание по совпадению А таймера1 TIMSK |= (1 //Разрешить прерывания }
void
io_init()
//Инициализация портов ввода-вывода
{ DDRD = (1 void main () { timer2_init(); timer1_init(); io_init(); while(1) { } }
// Заставляет лампу плавно загораться и гаснуть раз в 8 секунд#pragma
vector = TIMER1_COMPA_vect
__interrupt void
PWM_change() {
if
(inc == 1) {
if
(pwm // Увеличиваем яркость лампы, пока не достигнем максимума OCR2 = pwm; }
else
{ inc = 0; } }
else
{
if
(pwm > 1) { pwm—;
// Уменьшаем яркость лампы, пока не остигнем минимума
OCR2 = pwm; }
else
{ inc = 1; } } }

Функция timer2_init() используется нами для включения таймера в ШИМ-режиме. Таймер будет увеличивать счетный регистр каждые 64 такта, работать в режиме Fast PWM, меняя состояние ОС2 неинвертированным образом (биты СОМ20, СОМ21). Да, забыл сказать. Эти биты отвечают за поведение «ножки» ОС2, к которой подключен транзистор. Режим может быть инвертированным и неинвертированным. Чтобы это понять, посмотрите на диаграмму выше. Там приведен график состояния ОС2 (неинвертированный выход) и ОС2 с чертой (инвертированный выход). Если оба бита установлены в 1, то режим будет инвертированным. При работе с ШИМ и использовании транзисторов есть одна ловушка: не все транзисторы могут очень быстро менять свое состояние. Для одних могут потребоваться десятки-сотни наносекунд (как для нашего), для других — микросекунды и десятки микросекунд. Поэтому не советую, не изучив документацию на транзистор, использовать его на высокой частоте — большая нагрузка при высокой частоте ШИМ может его сжечь.

timer1_init() включает таймер2 и заставляет его делать 32 прерывания в секунду. Когда происходит прерывание, меняется OCR2 регистр и, соответственно, яркость лампы. Таким образом, лампа будет плавно загораться и плавно гаснуть раз в 8 секунд. Можно вместо таймера подключить кнопки и менять яркость при их нажатии. Но у нас для наглядности все будет происходить автоматически.

Сохраним этот файл в папке с проектом, добавим его в проект, установим опции проекта так, как это написано в статье 1, но можно оптимизацию теперь не выключать. Дело в том, что в первой статье мы формировали задержку с помощью цикла. Это делать с точки зрения программирования неграмотно и для увеличения скорости программы компилятор такие циклы выкидывает. Сейчас же мы используем встроенное в МК «железо», что не уменьшает производительность и скорость. Поэтому оптимизация ничего плохого не сделает.

Выбираем Release, нажимаем F7, программа компилируется. Запускаем AVReal, прошиваем МК. Кстати, возможно, у Вас возникал вопрос: а бесконечное ли число раз можно перепрошивать МК? Оказывается, нет. Всего лишь 10000 раз (как минимум). Поэтому, думаю, об этом совершенно не стоит беспокоиться. После того, как все это сделали, можно проверять устройство.

ВАЖНО!!!

Сначала нужно подать питание на МК, убедиться, что транзистор подсоединен к МК, и лишь затем подавать питание в цепь с лампой (мотором) и полевым транзистором. Иначе можете сжеть транзистор. Дело в том, что в выключенном состоянии «ножки» МК «болтаются в воздухе» — они ни к чему не подключены, и на них возникают наводки. Этих слабеньких наводок достаточно, чтобы частично открыть очень чувствительный полевой транзистор. Тогда его сопротивление между стоком и истоком упадет от нескольких МОм до нескольких Ом или долей Ом и через него потечет большой ток к лампе. Но транзистор не откроется полностью, т. к. для этого нужно подать на затвор не 1-3 В наводки, а стабильные 5 В, и его сопротивление будет намного больше минимального (для IRF7311 это 0,029 Ом). Это приведет к выделению на нем большого количества тепла, и он задымится, а может, и сгорит. Хотя, конечно, все зависит от мощности лампы или мотора.

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

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

© Киселев Роман Июнь 2007 https://www.kernelchip.ru

Подключение нагрузки через электромагнитное реле

Подключить электромагнитное реле проще простого. Но это только на первый взгляд. На самом деле тоже есть особенности, которые надо знать (расскажу о них в соответствующей статье). Иначе можно просто вывести из строя выход микроконтроллера.

Преимущества электромагнитного реле:

  1. Низкая цена.
  2. Можно управлять нагрузкой практически любой мощности и напряжения.
  3. Можно управлять нагрузкой как постоянного, так и переменного тока.
  4. Можно управлять как активной, так и индуктивной нагрузкой без каких-либо дополнительных ухищрений.
  5. Есть гальваническая развязка между выходом микроконтроллера и нагрузкой.
  6. Не требуется особых познаний в электронике, чтобы подобрать реле под нагрузку.

Недостатки:

  1. Необходимо принимать дополнительные меры для защиты выхода микроконтроллера.
  2. Относительно низкое быстродействие (реле переключается существенно медленнее, чем полупроводниковые приборы — иногда это важно).
  3. Большие габариты и вес. Хотя современные реле довольно миниатюрны, их размеры и вес всё-равно больше, чем размеры полупроводниковых приборов.
  4. Относительно низкий ресурс. Так как в реле имеются контакты, то ресурс реле ниже, чем у полупроводников. Из-за искрения контакты быстрее выходят из строя. Хотя, как показывает практика, качественные реле могут работать десятки лет без поломок.

Подключение нагрузки к Ардуино

Многие новички, после нескольких простых экспериментов с программируемыми микроконтроллерами Arduino, пытаются реализовать свои собственные задумки, но сталкиваются с довольно распространённой проблемой – подключением нагрузки.

Дело в том, что на выходах Ардуино можно получить напряжение только 5 В (это уровень логической единицы). При этом сила тока будет не более 40 мА. Таких параметров может быть недостаточно для многих внешних схем и узлов. Например, 40 мА не смогут заставить работать большинство электродвигателей, даже питающихся напряжением 5 В.

Поэтому ниже рассмотрим варианты подключения различных типов нагрузок.

Основной принцип – запуск/останов внешнего блока по логическим уровням «единица-ноль» на выходе Ардуино. И лучше всего предусмотреть защиту микроконтроллера от скачков напряжения из подключаемой схемы.

Подключение слабых нагрузок

Простейший пример – светодиод. Большинство таких диодов имеет предельный порог по току в 20 мА (0,02А). Поэтому подключать их к Ардуино лучше всего через токоограничивающий резистор. Как его рассчитать, мы рассмотрели в отдельной статье, на всякий случай напомним формулу:

R = U / I

Здесь R – сопротивление участка цепи, в которую входят и ограничивающий резистор, и сам диод (их сопротивления складываются). Но так как собственное сопротивление диода ничтожно мало, то им в данной задаче можно просто пренебречь. Тогда получаем:

Rогр = 5 В / 0,02 А = 250 Ом.

То есть при включении в цепь питания резистора номиналом свыше 250 Ом мы получим падение силы тока ниже 0,02 А (что и нужно для светодиода).

Аналогично можно рассчитывать токоограничивающий резистор для других элементов.

Типовое включение маломощных элементов на примере того же светодиода можно увидеть ниже.

Рис. 1. Типовое включение маломощных элементов на примере светодиода

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

Подключение мощных нагрузок, питающихся постоянным током

Здесь нужно оговорить отдельно, что внешняя схема должна питаться от другого источника тока/напряжения, который соответствует характеру потребления.

Ардуино может включаться в цепь управления через посредника, например, через транзистор или аналогичную схему/элемент. Начнём с простых биполярных транзисторов.

Через биполярный транзистор

Классическая схема включения будет выглядеть так.

Рис. 2. Классическая схема включения через биполярный транзистор

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

На роль транзистора подойдёт практически любой n-p-n.

Такая схема проста в реализации и доступна по цене, но не подходит для управления цепями с очень мощными нагрузками.

Альтернатива – ниже.

Через полевой транзистор

Действительно силовые схемы можно подключать к Ардуино через полевики.

Типовая схема включения выглядит следующим образом.

Рис. 3. Классическая схема включения через полевой транзистор

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

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

А второй (10К) – используется для защиты самого микроконтроллера и исключения помех в работе транзистора (исключает Z-состояние).

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

Рис. 4. Индуктивная нагрузка

Чтобы повысить «управляемость» цепи, лучше всего выбирать мосфеты с пометкой «Logic Level» (они предназначены для работы с цифровыми логическими уровнями).

Через транзисторы Дарлингтона

Что называется «решение из коробки». В радиомагазинах можно найти готовые микросхемы, такие как ULN2003, которые представляют собой набор независимых составных транзисторов Дарлингтона. Схема управления реализуется очень просто.

Рис. 5. Схема управления

Здесь каждый выход Ардуино управляет отдельным составным транзистором (выход строго напротив). При необходимости транзисторы можно включать параллельно (каждый «тянет» нагрузку по 500 мА).

Через оптореле

Это практически идеальное решение, лишённое множества недостатков, связанных с другими способами.

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

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

Рис. 6. Схема подключения нагрузки с оптореле

Резистор перед реле отвечает за ограничение тока. Рассчитывается как и в предыдущих примерах.

Оптореле не подойдёт только для случаев управления «быстрыми» схемами.

Другие методы

Выше мы обозначили только основные применяемые способы. На деле существует множество других методов подлючения мощных нагрузок к Ардуино и к другим микроконтроллерам:

1.Через семисторы (триаки)

Рис. 7. Подлючения мощных нагрузок к Ардуино и к другим микроконтроллерам через семисторы

2.Через классические реле (требуется ещё один посредник для управления самим реле)

Рис. 8. Подлючения мощных нагрузок к Ардуино и к другим микроконтроллерам через классические реле

3.Коммутация с одновременной стабилизацией

Рис. 9. Коммутация с одновременной стабилизацией

4.Драйвер с защитой от коротких замыканий

Рис. 10. Драйвер с защитой от коротких замыканий

Автор: RadioRadar

Подключение нагрузки через твёрдотельное реле

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

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

Недостаток у твёрдотельного реле, пожалуй, один — это высокая цена. Твёрдотельное реле, как правило, стоит в 5…10 раз дороже обычного электромагнитного реле (то есть это сотни и тысячи рублей за штуку).

Электроника для всех

О какой нагрузке идет речь? Да о любой — релюшки, лампочки, соленоиды, двигатели, сразу несколько светодиодов или сверхмощный силовой светодиод-прожектор. Короче, все что потребляет больше 15мА и/или требует напряжения питания больше 5 вольт.

Вот взять, например, реле. Пусть это будет BS-115C. Ток обмотки порядка 80мА, напряжение обмотки 12 вольт. Максимальное напряжение контактов 250В и 10А.

Подключение реле к микроконтроллеру это задача которая возникала практически у каждого. Одна проблема — микроконтроллер не может обеспечить мощность необходимую для нормальной работы катушки. Максимальный ток который может пропустить через себя выход контроллера редко превышает 20мА и это еще считается круто — мощный выход. Обычно не более 10мА. Да напряжение у нас тут не выше 5 вольт, а релюшке требуется целых 12. Бывают, конечно, реле и на пять вольт, но тока жрут больше раза в два. В общем, куда реле не целуй — везде жопа. Что делать?

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

Поскольку у нас принято, что 1 это включено, а 0 выключено (это логично, хотя и противоречит моей давней привычке, пришедшей еще с архитектуры AT89C51), то 1 у нас будет подавать питание, а 0 снимать нагрузку. Возьмем биполярный транзистор. Реле требуется 80мА, поэтому ищем транзистор с коллекторным током более 80мА. В импортных даташитах этот параметр называется Ic, в наших Iк. Первое что пришло на ум — КТ315 — шедевральный совковый транзистор который применялся практически везде Оранжевенький такой. Стоит не более одного рубля. Также прокатит КТ3107 с любым буквенным индексом или импортный BC546 (а также BC547, BC548, BC549). У транзистора, в первую очередь, надо определить назначение выводов. Где у него коллектор, где база, а где эмиттер. Сделать это лучше всего по даташиту или справочнику. Вот, например, кусок из даташита:

Обратите внимание на коллекторный ток — Ic = 100мА (Нам подоходит!) и маркировку выводов.

Цоколевка нашего КТ315 определяется так

Если смотреть на его лицевую сторону, та что с надписями, и держать ножками вниз, то выводы, слева направо: Эмиттер, Колектор, База.

Берем транзистор и подключаем его по такой схеме:

Коллектор к нагрузке, эмиттер, тот что со стрелочкой, на землю. А базу на выход контроллера.

Транзистор это усилитель тока, то есть если мы пропустим через цепь База-Эмиттер ток, то через цепь Колектор-Эмиттер сможет пройти ток равный входному, помноженному на коэффициент усиления hfe. hfe для этого транзистора составляет несколько сотен. Что то около 300, точно не помню.

Максимальное напряжение вывода микроконтроллера при подаче в порт единицы = 5 вольт (падением напряжения в 0.7 вольт на База-Эмиттерном переходе тут можно пренебречь). Сопротивление в базовой цепи равно 10000 Ом. Значит ток, по закону Ома, будет равен 5/10000=0.0005А или 0.5мА — совершенно незначительный ток от которого контроллер даже не вспотеет. А на выходе в этот момент времени будет Ic=Ibe*hfe=0.0005*300 = 0.150А. 150мА больше чем чем 100мА, но это всего лишь означает, что транзистор откроется нараспашку и выдаст максимум что может. А значит наша релюха получит питание сполна.

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

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

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

Красота! Но можно сделать еще лучше — снизить потребление. У реле довольно большой ток срывания с места, а вот ток удержания якоря меньше раза в три. Кому как, а меня давит жаба кормить катушку больше чем она того заслуживает. Это ведь и нагрев и энергозатраты и много еще чего. Берем и вставляем в цепь еще и полярный конденсатор на десяток другой микрофарад с резистором. Что теперь получается:

При открытии транзистора конденсатор С2 еще не заряжен, а значит в момент его заряда он представляет собой почти короткое замыкание и ток через катушку идет без ограничений. Недолго, но этого хватает для срыва якоря реле с места. Потом конденсатор зарядится и превратится в обрыв. А реле будет питаться через резистор ограничивающий ток. Резистор и конденсатор следует подбирать таким образом, чтобы реле четко срабатывало. После закрытия транзистора конденсатор разряжается через резистор. Из этого следует встречное западло — если сразу же попытаться реле включить, когда конденсатор еще не разрядился, то тока на рывок может и не хватить. Так что тут надо думать с какой скоростью у нас будет щелкать реле. Кондер, конечно, разрядится за доли секунды, но иногда и этого много.

Добавим еще один апгрейд. При размыкании реле энергия магнитного поля стравливается через диод, только вот при этом в катушке продолжает течь ток, а значит она продолжает держать якорь. Увеличивается время между снятием сигнала управления и отпаданием контактной группы. Западло. Надо сделать препятствие протеканию тока, но такое, чтобы не убило транзистор. Воткнем стабилитрон с напряжением открывания ниже предельного напряжения пробоя транзистора. Из куска даташита видно, что предельное напряжение Коллектор-База (Collector-Base voltage) для BC549 составляет 30 вольт. Вкручиваем стабилитрон на 27 вольт — Profit!

В итоге, мы обеспечиваем бросок напряжения на катушке, но он контроллируемый и ниже критической точки пробоя. Тем самым мы значительно (в разы!) снижаем задержку на выключение.

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

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

Пока хватит. В следующий раз расскажу про Дарлингтоновские сборки и MOSFET ключи.

Рейтинг
( 1 оценка, среднее 5 из 5 )
Понравилась статья? Поделиться с друзьями:
Для любых предложений по сайту: [email protected]