Шрифт:
Интервал:
Закладка:
Моральный износ
Микроконтроллеры, как и технологии программирования, развиваются очень быстро. Когда я готовил первое издание этой книги, плата Arduino была сравнительно новой, а ее будущее – неопределенным. Теперь она доминирует в области любительской электроники, но как изменится ситуация через пять лет? Никто не знает. Например, продукт Raspberry Pi представляет собой целый компьютер в одной микросхеме. Никто не может предсказать, придет ли он или что-то еще на смену плате Arduino.
Даже если плата Arduino останется самым распространенным вариантом, уже появляются новые версии оборудования и обновления среды IDE, которые следует учитывать при программировании микросхемы. Так или иначе, вы должны быть в курсе разработок в этой области и можете даже отказаться от одного бренда микроконтроллеров и переключиться на другой.
Для сравнения: в большинстве случаев дискретные компоненты, предназначенные для установки в монтажные отверстия, уже достигли пределов своего развития. Некоторые новые элементы, например поворотные энкодеры или миниатюрные матричные жидкокристаллические и светодиодные дисплеи, появились сравнительно недавно. Тем не менее, большинство из новых продуктов создано для совместной работы с микроконтроллерами. В старом добром мире транзисторов, диодов, конденсаторов, логических микросхем и микросхем-усилителей, знания, которые вы приобрели сейчас, будут актуальны еще с десяток лет.
Микроконтроллеру необходимы внешние компоненты
Последний и возможно самый важный аргумент: микроконтроллеры не работают сами по себе. В схеме всегда есть какие-либо другие компоненты, даже если это просто переключатель, резистор или светодиод, причем они должны быть совместимы со входами и с выходами микроконтроллера.
По этой причине, чтобы на практике применить микроконтроллер, вы по-прежнему должны знать основы электроники. Вы должны усвоить такие базовые понятия, как напряжение, сила тока, сопротивление, емкость и индуктивность. Возможно, вам следует узнать о транзисторах, диодах, алфавитно-цифровых дисплеях, булевой логике и других компонентах, о которых я рассказывал в этой книге. И если вы намерены создавать прототипы и завершенные устройства, то вам по-прежнему необходимо знать, как пользоваться макетной платой и паяльником.
С учетом всего этого, резюмируем плюсы и минусы.
Преимущества дискретных компонентов
• Простота.
• Немедленные результаты.
• Нет необходимости в языках программирования.
• Низкая стоимость для несложных устройств.
• Устоявшиеся технологии применения.
• Лучше подходят для аналогового применения, например, для аудио.
• По-прежнему необходимы в схемах с микроконтроллерами.
Недостатки дискретных компонентов
• Способность выполнять только одну функцию.
• Трудности при разработке устройств, выполняющих сложные логические функции.
• Сложности при масштабировании. Большие схемы трудно собрать.
• Изменения в схеме могут оказаться сложными или даже невозможными.
• С ростом числа компонентов в схеме увеличивается энергопотребление.
Преимущества микроконтроллеров
• Исключительно универсальны, способны выполнять множество функций.
• Легкость при расширении или при изменении схемы (просто перепишите программный код).
• Обширные бесплатные интернет-библиотеки приложений.
• Идеальны для приложений, включающих сложную логику.
Недостатки микроконтроллеров
• Довольно дороги для применения в небольших схемах.
• Требуют основательных навыков программирования.
• Процесс разработки занимает много времени: создание кода, его проверка и исправление ошибок, переустановка – все это помимо выявления и устранения неисправностей компонентов схемы.
• Стремительно развивающиеся технологии требуют непрерывного обучения.
• Каждый микроконтроллер имеет индивидуальные нюансы и особенности, которые необходимо изучить и помнить.
• Большая сложность означает более высокую вероятность появления неисправностей.
• Необходим стационарный компьютер или ноутбук, а также хранилище данных для программ. Информация может быть случайно утрачена.
• Необходим стабилизированный источник питания (обычно 5 или 3,3 В постоянного тока), как для логических микросхем. Величина выходного сигнала ограничена – 40 мА или меньше. Невозможность приводить в действие реле или динамик подобно таймеру 555. Если вам требуется большая мощность, следует предусмотреть дополнительную управляющую микросхему.
Подведение итогов
Теперь я готов ответить на вопрос: «Что следует предпочесть – микроконтроллеры или традиционные дискретные компоненты?»
Мой ответ таков: вам понадобится и то, и другое. Именно поэтому я включил микроконтроллеры в книгу, которая в основном рассказывает о дискретных электронных компонентах.
В следующем эксперименте я покажу, как датчик и микроконтроллер могут работать совместно.
Эксперимент 33. Исследуем окружающий мир
Переключатель либо включен, либо выключен, однако большинство значений, которые мы получаем из окружающего мира, обычно находятся между этими крайностями. Например, терморезистор – это датчик, электрическое сопротивление которого изменяется в широком диапазоне, в зависимости от температуры.
Микроконтроллер был бы очень полезен для обработки такого входного сигнала. Например, получая входной сигнал от терморезистора, микроконтроллер поддерживает заданную температуру, включая нагревательный элемент, если температура опускается ниже минимального значения, и выключая его, если в комнате достаточно тепло.
Микроконтроллер ATmega 328, установленный на плате Arduino Uno, может справиться с этой задачей, поскольку шесть из его выводов относятся к числу «аналоговых входов». Сигнал, поданный на эти входы, не оценивается как «логически высокий» или как «логически низкий». Он преобразуется внутри микросхемы с помощью аналого-цифрового преобразователя или АЦП.
В 5-вольтовой версии платы Arduino аналоговый сигнал на входе должен быть в диапазоне от 0 до 5 В. На самом деле, верхний предел можно изменять, что вносит некоторую сложность, поэтому я оставлю рассказ об этом на потом. Терморезистор не вырабатывает никакого напряжения, он только изменяет свое сопротивление. Так, необходимо придумать, каким образом изменение сопротивления обеспечит изменение напряжения.
Как только эта проблема будет решена, АЦП внутри микроконтроллера сможет преобразовать напряжение на аналоговом выводе в числовое значение в диапазоне от 0 до 1023. Почему именно такой числовой диапазон? Потому что его можно выразить десятью двоичными цифрами, а число разрядов АЦП в микроконтроллере на плате Arduino равно десяти.
После того как АЦП выдал число, ваша программа может сравнить его с заданным значением и предпринять соответствующие действия, например, изменить состояние вывода, подающего напряжение на твердотельное реле, которое включает комнатный нагреватель.
Эта последовательность операций, начиная с терморезистора и заканчивая числовым значением, проиллюстрирована на рис. 5.86.
Рис. 5.86. Упрощенная последовательность обработки сигнала от терморезистора
Следующий эксперимент покажет, как это осуществить.
Что вам понадобится
• Макетная плата, монтажный провод, инструмент для зачистки проводов, кусачки, тестовые провода, мультиметр
• Терморезистор номиналом 10 кОм, с допуском 1 или 5 % (1 шт.) (Он должен быть типа NTC, что означает «сопротивление падает по мере увеличения температуры». Терморезистор типа РТС ведет себя противоположным образом.)
• Плата Arduino Uno (1 шт.)
• Ноутбук или настольный компьютер со свободным USB-портом (1 шт.)
• USB-кабель с разъемами типа А и В на противоположных концах (1 шт.)
• Резистор номиналом 6,8 кОм (1 шт.)
• Исследование терморезистора
Первый шаг – изучить,