Давайте немного отвлечемся от вопросов программирования для микроконтроллеров и поговорим о вопросах схемотехники. В реальном мире микроконтроллер существует не сам по себе, а лишь как часть устройства. А значит, его нужно и подключить правильно, и согласовать, и не выйти за допустимые режимы работы.
Сегодня мы поговорим о некоторых, далеко не всех, электрических параметрах, которые являются важными при разработке устройств. Причем основное внимание будет уделяться не цифрам для какого либо микроконтроллера, а пониманию того, что эти параметры означают и как определяются.
Будем двигаться от самых простых и очевидных к самым сложным для понимания.
Параметры очевидные
Эти параметры не только всегда приводятся в документации на микроконтроллер, но и обычно не вызывают вопросов даже у самых неопытных новичков. Не смотря на это давайте уделим им немного внимания.
Напряжение питания
Что может быть проще и очевиднее? При этом обычно указывается диапазон питающих напряжений в котором сохраняется нормальная работоспособность микроконтроллера. Не стоит ориентироваться на предельные значения. Оставайтесь в пределах рекомендованных параметров.
При этом стоит быть внимательным, так как кажущееся незначительным отличие в маркировке микроконтроллера может сильно влиять на допустимое напряжение питания.
Например, для PIC16F1764 диапазон питающих напряжений будет от 2.3В до 5.5В, а для PIC16LF1764 уже от 1.8В до 3.6В. STM8S работают при напряжении питания от 2.95В до 5.5В, а STM8L от 1.8В до 3.6В.
Диапазон рабочих температур
Обычно выделяются несколько типовых диапазонов. Цифры могут немного меняться, в зависимости от производителя, но порядок примерно такой:
- бытовой - от 0 до 70 градусов. То есть, это примерно соответствует применению в помещении. При этом устройство может и на солнышке полежать.
- промышленный (индустриальный) - от -40 до +85 градусов. Этот диапазон охватывает большинство стандартных применений как на улице, так и в помещении. Причем в любое время года.
- расширенный промышленный - от -40 до +125 градусов. То есть, устройство может работать и в горячем цеху, и в пустыне на солнышке, и в автомобиле.
- автомобильный - от -55 до 125 градусов. Для электронных компонентов используемых на транспорте зачастую предъявляются более жесткие требования. Учтите, что автомобильный класс это не легковые гражданские автомобили. Это и грузовые, в том числе, работающие в условиях севера, и пассажирские, и прочие.
- военный - самые жесткие условия эксплуатации. Здесь пределы разнятся. Но можно встретить и от -70 до +150 градусов.
В большинстве случаев у вас будут микроконтроллеры промышленного, реже расширенного, температурного диапазона.
Выход за пределы рабочих температур может привести к выходу параметров микроконтроллера за описанные в документации значения. А то приведет к неустойчивой работе устройства вплоть до полной неработоспособности.
Максимальное и минимальное напряжение на выводах микроконтроллера
В большинстве своем диапазон напряжений на выводах, причем как цифровых, так и аналоговых, задается относительно напряжения питания, так как выводы защищены диодами подключенными к положительной и отрицательной (обычно, земля) шинам питания.
Что бы защитные диоды не вышли из строя следует включать последовательно с выводами, где возможен выход напряжения за допустимые пределы, включать резисторы ограничивающие ток через диоды.
Так для STM8S105 максимальный ток через защитные диоды не должен превышать 4 мА для одного вывода (Iinj(pin)) и 20 мА для суммарного тока через все выводы Σ (Iinj(pin)).
Параметры менее очевидные
В большинстве случаев речь идет о параметрах зависящих от прочих условий.
Тактовая частота
Как правило, речь идет о максимальной тактовой частоте. Что здесь может быть "не очевидным"? Например, максимальная тактовая частота может зависеть от напряжения питания и/или температуры.
Так для уже упоминавшегося PIC16F1764 максимальная тактовая частота равна 32 МГц. Но это только при напряжении питания выше 2.5В. При более низком напряжении частота не должна превышать 16 МГц. При этом STM8S имеет максимальную частоту тактирования 16 МГц во всем диапазоне питающих напряжений.
Максимальная частота может зависеть и от выбора источника тактового сигнала. Такими источниками могут быть:
- внешний независимый тактовый генератор
- встроенный генератор с внешним кварцевым или керамическим резонатором
- встроенный генератор с внешней RC цепочкой
- внутренний RC генератор (без внешних элементов)
При этом встроенный генератор с внешним кварцевым резонатором может иметь и разные режимы работы, в зависимости от частоты. И предъявлять свои требования к резонатору.
Прежде чем выбирать частоту, на которой будет работать ваш микроконтроллер, убедитесь, что она достижима при всех условиях эксплуатации вашего устройства.
Потребляемый ток (мощность)
Разумеется, речь идет о потреблении собственно микроконтроллера, без учета подключенных к его выходам нагрузок. Но даже в таком случае нельзя дать однозначного ответа.
Дело в том, потребляемый ток зависит не только от напряжения питания (что вполне объяснимо и понятно), но и от тактовой частоты. Чем она выше, тем больше потребляемая микроконтроллером мощность. Да, CMOS логика почти не потребляет ток, но только в статическом режиме. А вот при работе, когда логические элементы переключаются, потребление тока может быть очень большим.
Например STM8S105 при питании от 5В потребляет в режиме останова (halt mode, полное потребление) 62 мкА. В режиме "полудремы" (active halt mode) потребление может вырасти до 1080 мкА. В режиме ожидания (wait mode) уже до 2.15 мА. А в рабочем режиме (run mode) на частоте 16 МГц уже до 7.7 мА.
Потребляемый ток зависит и от того, какие модули микроконтроллера используются (включены) и в каком состоянии они находятся. А это уже зависит от программы. Выключенный модуль потребляет минимальный ток. Включенный уже имеет большее потребление. А активный потребляет максимальный ток. Например, АЦП во время преобразования имеет довольно большое потребление.
EEPROM, которая всегда включена (если она вообще есть) потребляет больше тока при чтении и намного больше при записи. Ощутимый ток потребляет и сторожевой таймер, если он используется.
Поэтому можно указать лишь максимальный ток потребления при определенных условиях. Реальное потребление будет скорее всего ниже.
Впрочем, к теме токов мы еще вернемся, чуть позже в данной статье. И там будет не мало интересного.
Напряжение старта микроконтроллера
Питающее напряжение имеет конечную скорость нарастания. А минимально допустимое напряжение питания гарантирует, что микроконтроллер работает нормально. При этом он начинает работать чуть при меньшем напряжении. Условие POR (power on reset) возникает при достижении питающим напряжением уровня POR
Upor иногда иногда указывается в документации . Параметр нельзя считать жизненно важным, но иметь о нем представление полезно.
Минимальная скорость нарастания питающего напряжения
С предыдущим параметром связан еще один, уже посложнее. Если питающее напряжение нарастает очень медленно, то внутренняя схема сброса по питанию может не суметь обеспечит устойчивый запуск.
Для устойчивого запуска необходимо, что бы за время сброса питающее напряжение успело достичь Umin.
Коричневое напряжение (brown out voltage)
Термин придумал не я, это официальный англоязычный термин. Из той же серии, что и коричневая нота. Здесь "коричневый" означает плохой (гадость, пакость).
При аварии питания, например, садится батарея или отключили сетевой источник питания, у микроконтроллера есть шанс корректно сохранить важные данные и остановиться. Конечно, если просто отключить питание микроконтроллера, то уже ничего не поможет. Но в большинстве случаев напряжение спадает относительно медленно, сотни микросекунд и миллисекунды. А значит, можно успеть. К сожалению, в реальности все не столь красиво.
Brown out voltage задает некую ватерлинию, при снижении питающим напряжением которой микроконтроллер останавливается, что позволяет избежать (насколько возможно) искажения данных. При восстановлении питания контроллер сбрасывается, но это соответствует не POR, а BOR (brown out reset). При этом программа в состоянии проверить причину сброса и, если это именно BOR, попытаться проверить данные в ОЗУ и продолжить работу.
Обратите внимание, что пороговый уровень Ubor больше, чем минимальное напряжение питания. Иногда, его можно немного изменять. BOR отличается от POR в частности тем, что не выполняется очистка ОЗУ.
Минимальное напряжение сохранения данных в ОЗУ
Этот параметр связан с минимальным напряжением питания и пороговым уровнем BOR. Я не буду приводить иллюстрацию, так как тут все просто. ОЗУ сохраняет данные неизменными при напряжении ниже, чем минимальное напряжение питания. Обычно, минимальное напряжение сохранности данных в ОЗУ называется Vdr (RAM Data Retention Voltage).
При этом часто оговаривается, это напряжение определяется при отсутствии активных операций в ОЗУ, что соответствует спящему режиму микроконтроллера.
При аварии питания, если напряжение не упало ниже Vdr, после BOR у программы есть вероятность успешного перезапуска без потери данных. Но для успешного применения этого метода нужно предусмотреть возможность контроля, что данные действительно на искажены. Например, можно использовать контрольную сумму для наиболее важных ячеек памяти.
Самые сложные для понимания параметры
Здесь сложностью считается количество типичных вопросов на определенную тему.
Втекающий и вытекающий токи выводов
Эти термины знакомы многим и по аналоговой, и по цифровой, схемотехнике. Но я все таки приведу иллюстрацию
Красными стрелками здесь показаны направления токов. Большой прямоугольник это "черный ящик" нашего микроконтроллера. А маленькие прямоугольники это подключенные к выводам нагрузки (например, резисторы).
Часто считается, что втекающие и вытекающие токи применимы только в выходам, для CMOS логики. Однако, это неверно.
Во первых, любой вход, хоть цифровой, хоть аналоговых, обладает некоторым конечным сопротивлением. И ненулевой емкостью. Поэтому втекающий и вытекающий токи, постоянный и/или импульсный, могут формироваться и входами.
Кроме того, для входов могут быть включены внутренние резисторы подтяжки в напряжению питания или земле. В первом случае это приводит появлению вытекающего тока, а во втором втекающего.
Максимальный ток выходов и максимальный ток выводов питания
Этот вопрос обычно вызывает больше всего затруднений. В сети можно найти не мало схем, где выходы микроконтроллера напрямую подключены к затворам мощных полевых транзисторов или многоразрядным 7-сегментным светодиодным индикаторам. Авторы таких схем не учитывают, что при этом возможна перегрузка выходов микроконтроллера и даже его выход из строя. Давайте попробуем разобраться.
Сначала посмотрим, какие ограничения накладывает на токи выходов документация на микроконтроллеры.
- Максимальный ток одного вывода. Как правило, максимальный втекающий ток вывода по модулю равен вытекающему. Типовое предельное значение модуля тока равно 20 мА.
- Максимальный ток через вывод питания или шину питания (выводов питания может быть несколько). Этот ток, в общем случае, является суммой тока потребления самого микроконтроллера и вытекающих токов выводов, причем не только выходов.
- Максимальный ток через вывод земли или шину земли (выводов земли может быть несколько). Этот ток, в общем случае, является суммой тока потребления самого микроконтроллера и втекающих токов выводов, причем не только выходов.
Это наиболее часто встречающиеся предельные параметры. И не стоит превышать ни один из них, не говоря уже о превышении сразу нескольких.
Ранее я уже приводил некоторые параметры для PIC и STM8, давайте теперь посмотрим на ATmega328 ее предельные параметры. Максимальный ток через один вывод порта может достигать 40 мА, а ток через выводы питания (суммарный, для всех выводов, DC Current Vсс and GND Pins) не должен превышать 200 мА. Допустимый ток через выводы питания не обязательно бывает одинаковым. Например для STM8S105 ток через вывод питания (здесь уже каждый вывод считается отдельно) не должен превышать 100 мА, а через вывод земли 80 мА.
Давайте посмотрим на такое подключение 7-сегментного светодиодного индикатора
Это не принципиальная, а функциональная схема. Светодиодный индикатор с общим анодом, а токоограничивающие резисторы установлены в катодах (8 штук) и на иллюстрации для упрощения не показаны. Максимальный постоянный ток светодиодов 10 мА, а импульсный 50 мА.
Поскольку здесь используется динамическая индикация, что бы не снижалась яркость, выбран импульсный ток через светодиоды 25 мА (один сегмент). Давайте посмотрим, можно ли в данном случае подключить индикатор к микроконтроллеру.
Катоды светодиодов подключены (через резисторы) к порту D. Так как у нас ток через светодиод установлен на уровне 25 мА, а для одного вывода порта допустим ток до 40 мА, здесь нет превышения предельных значений.
Аноды разрядов индикатора подключены к порту С. Одновременно могут быть включены 8 светодиодов (сегментов), один разряд, с учетом десятичной точки. Таким образом, ток через общий анод одного разряда может достигать 8*25=200 мА. А это слишком много для выводов порта С. Что бы уложиться в допустимые пределы у нас ток общего анода не должен превышать 40 мА, что дает 5 мА на один сегмент. Причем это без какого либо запаса.
То есть, прямое подключение к микроконтроллеру невозможно в данном случае. Мы уложимся в токовые пределы, но яркость индикатора будет скорее всего недостаточна. Можно найти другой индикатор, сверхяркий, что бы прямое подключение стало возможным. Предположим, что мы его нашли. Давайте считать дальше.
Для порта С суммарный ток общих анодов разрядов, при нормальной работе, никогда не превысит максимального тока для одного разряда. В нашем случае это 40 мА. В каждый момент времени работает лишь один разряд индикатора. Таким образом, суммарный вытекающий ток порта С для индикатора, максимум, будет равен 40 мА. Мы не превышаем предельного значения для тока через вывод питания.
Суммарный, но уже втекающий, ток порта D тоже не превысит 40 мА. Мы укладываемся в пределы. Ток потребления собственно микроконтроллера здесь можно не учитывать, поскольку в пределы мы укладываемся с большим запасом.
Но давайте предположим, что яркость все таки недостаточна, или не удалось найти другой индикатор. Мы решим проблему превышения допустимого тока выводов порта С установив между микроконтроллером (порт С) и индикатором транзисторные ключи. Теперь у нас ток сегмента может достигать 25 мА без риска перегрузки выходов порта С. Но что будет с портом D?
Суммарный втекающий ток порта D при этом составит 200 мА, как мы и считали ранее. И весь этот ток пройдет через выводы земли. Здесь уже нет запаса и мы должны учитывать тока потребления микроконтроллера. В документации можно найти примерный ток потребления модулей микроконтроллера. Отсюда станет понятно, что в типовом случае микроконтроллер потребляет примерно 9 мА. Итоговый суммарный ток, 209 мА, превышает допустимый предел.
Но если снизить ток сегмента до 20 мА, то суммарный ток составит 169 мА, что уже является допустимым.
Особенности выходов портов
В STM8S выходы порта бывают обычными и высокотоковыми (High sink). Высокотоковые выходы имеют меньшее сопротивление для втекающего тока. А значит, и меньшее падение напряжения при больших токах. Иногда это бывает важно.
Заключение
Сегодня мы коснулись лишь малой части электрических параметров микроконтроллеров. Самых простых и общих, но и важных, которые обязательно нужно учитывать при работе с микроконтроллерами.
В дальнейшем, мы еще будем рассматривать эти параметры более подробно. И познакомимся со многими другими, когда будем изучать модули входящие в микроконтроллер. И там будет не только ток и напряжение. Ну а на сегодня, пожалуй, достаточно.
До новых встреч!