Текст
                    Файл взят с сайта www.kodges.ru, на котором есть еще много интересной литературы

^аНиМа^ЪЛьНаЯ 311ЕКТГ(1НИ«Н Начала начал электроники Оборудуем домашнюю лабораторию Резисторы, конденсаторы, транзисторы, микросхемы... Аналоговые и логические схемы Микрокоитропперы - основа современное электроники Юрий Рввич
Юрий Ревич ^аНиМаНЬЛьНаЯ ими Санкт-Петербург «БХВ-Петербург» 2005 MirKnig.Com
УДК 681.3.06(0.027) ББК 32.973.26-04 Р32 Ревич Ю. В. Р32 Занимательная электроника. — СПб.: БХВ-Петербург, 2005. — 672 с.: ил. ISBN 5-94157-514-9 На практических примерах рассказано о том. как проектировать, отлаживать и изготавливать электронные устройства в домашних условиях. От физических основ электроники, описания устройства и принципов работы различных радиоэлектронных компонентов, советов по оборудованию домашней лаборатории автор переходит к конкретным аналоговым и цифровым схемам, включая устройства на основе микроконтроллеров. Приведены элементарные сведения по метрологии и теоретическим основам электроники. Дано множество практических рекомендаций: от принципов правильной организации электропитания до получения информации о приборах и приобретении компонентов применительно к российским условиям. Книгу можно использовать как справочник по некоторым типовым узлам электронной аппаратуры. Для широкого круга радиолюбителей УДК 681.3.06(0.027) ББК 32.973.26-04 Группа подготовки издания: Главный редактор Зам. гл. редактора Зав. редакцией Редактор Компьютерная верстка Корректор Дизайн обложки Зав. производством Екатерина Кондукова Игорь Шишигин Григорий Добин Татьяна Ланина Натальи Карапасной Виктория Пиотровская Игоря Цырульникова Николай Тверских Лицензия ИД Na 02429 от 24.07.00. Подписано в печать 20.12.04. Формат 70x100’/w- Печать офсетная. Усл. печ. л. 54,18. Тираж 3000 экз. Заказ Na 710 "БХВ-Петербург", 190005, Санкт-Петербург, Измайловский пр., 29. Санитарно-эпидемиологическое заключение на продукцию Na 77.99.02.953.Д.006421.11.04 от 11.11.2004 г. выдано Федеральной службой по надзору в сфере защиты прав потребителей и благополучия человека. Отпечатано с готовых диапозитивов в ГУП "Типография "Наука" 199034, Санкт-Петербург, 9 линия, 12 © Ревич Ю. В., 2005 © Оформление, издательство "БХВ-Петербург", 2005
Содержание К читатели)..........................................................1 Глава 1. Чем отличается ток от напряжения? Азбука электроники........9 Глава 2. Джентльменский набор. Оборудуем домашнюю лабораторию.......17 Мультиметр........................................................18 Источник питания..................................................22 Осциллограф.......................................................24 Глава 3. Хороший паяльник — половина успеха. Инструменты и технологические советы..............................................29 Инструменты.......................................................30 Паяльники.........................................................33 Флюсы для пайки...................................................36 Платы..............................?..............................37 Немного о проводах................................................47 Корпуса...........................................................49 Глава 4. Тригонометрическая электроника. О частотах, периодах, мощности, переменных напряжениях и токах и немного о сигналах................................................51 Мощность..........................................................56 Что показывал вольтметр...........................................57 Сигналы...........................................................61 К слову...........................................................61 Глава 5. Электроника без полупроводников. Резисторы, конденсаторы и схемы на их основе................................................63 Резисторы.........................................................63 Переменные резисторы............................................ 67 Параллельное и последовательное соединение резисторов.............69 Конденсаторы......................................................71
VlirKnig.Com Параллельное и последовательное включение конденсаторов...............79 Конденсаторы в цепи переменного тока................................79 Дифференцирующие и интегрирующие цепи...............................80 Индуктивности.......................................................82 Глава 6. Изобретение, которое потрясло мир. Диоды, транзисторы и простейшие схемы на их основе.......................................85 Диоды...............................................................85 Транзисторы.........................................................87 Ключевой режим работы биполярного транзистора.......................90 Усилительный режим работы биполярного транзистора...................93 Дифференциальный каскад............................................100 Полевые транзисторы................................................101 Выбор транзисторов.................................................103 Глава 7. Ошеломляющее разнообразие электронного мира. Реле, стабилитроны, светодиоды.............................................105 Электромагнитные реле..............................................105 Стабилитроны.......................................................111 Светодиоды.........................................................114 Оптоэлектроника....................................................118 Глава 8. Подбираем детали. Откуда взять информацию, как грамотно найти замену п где приобрести........................................121 Замена.............................................................122 Надежность.........................................................129 Где покупать.......................................................130 Глава 9. Звуковой усилитель без микросхем. Первые шаги...............135 Схема..............................................................135 Мощность...........................................................139 О мощности выходных транзисторов...................................142 Радиаторы..........................................................143 Проверка и отладка.................................................147 О мощности и качестве звуковых усилителей..........................148 Глава 10. Правильное питание — залог здоровья. О питании электронных устройств................................................151 Трансформаторы.....................................................152 Простейший нестабилизированный однополярный источник питания.......156 Стабилизаторы......................................................160 Интегральные стабилизаторы.........................................163 Однополярный регулируемый высокостабильный источник питания........165 Как правильно питаться.............................................170 Глава 11. Тяжеловесы. Устройства для управления мощной нагрузкой.....173 Базовая схема регулирования напряжения на нагрузке.................174 Ручной регулятор мощности..........................................179
Содержание________________С ______________________________I/ \х**'*’^MirKnig.Com Устройство плавного включения ламп накаливания.....................186 Помехи.............................................................188 Глава 12. Слайсы, которые стали чипами. О микросхемах................191 Глава 13. А на микросхемах — проще. Звуковые усилители на микросхемах.......................................................201 Мощный УМЗЧ........................................................201 Микроусилитель мощности............................................206 Глава 14. Самые универсальные. Операционные усилители и их применение......................................................209 Опасные связи......................................................210 Основные свойства системы с отрицательной обратной связью..........214 Базовые схемы усилителей на ОУ.....................................217 Дифференциальные усилители.........................................222 Другие распространенные схемы на ОУ................................225 Аналоговый генератор...............................................227 Глава 15. Рыбку жалко... Конструируем термостаты.....................231 Термостат вообще...................................................233 Термостат для аквариума............................................238 Гистерезис.........................................................243 Терморегулятор "для дома, для семьи"...............................245 Прецизионный лабораторный термостат................................249 Глава 16. Как измерить температуру? Электронные термометры...........257 Основы термометрии.................................................257 Датчики............................................................259 Средства поверки...................................................261 Измерение сопротивления образцового термометра.....................262 Простейшие электронные термометры на батарейке.....................267 Глава 17. Ошибаются все. Немного о метрологии и ошибках аналоговых схем......................................................275 Точность и разрешающая способность.................................277 Систематические ошибки.............................................279 Случайные ошибки измерения и их оценка.............................280 Регрессия..........................................................286 Классы точности и расчет погрешностей нашего образцового термометра......................................289 Способы снижения погрешностей аналоговых схем......................292 Глава 18. На пороге цифрового века. Математическая логика и ее представление в технических устройствах.........................295 Основные операции алгебры Буля.....................................297 Булева алгебра на выключателях и реле..............................300 То же самое, но на транзисторах и диодах...........................303
Глава 19. По основанию два. О двоичной и других системах счисления.307 Позиционные и непозиционные системы счисления. Десятичная система...............................................309 Двоичная система.................................................313 Шестнадцатеричная система........................................314 Перевод из одной системы счисления в другую......................315 Байты............................................................317 Запись чисел в различных форматах................................318 Двоичная арифметика..............................................320 Отрицательные числа..............................................321 Дробные числа....................................................324 Глава 20. Математическая электроника или игра в квадратики. Устройство логических микросхем и двоичные операции................327 Сравнение основных характеристик ТТЛ и КМОП......................328 Двоичный сумматор на логических микросхемах......................338 Обработка двоичных сигналов с помощью логических элементов.......346 Глава 21. Закодированные. Коды, шифры и дешифраторы................349 Различные двоичные коды..........................................351 Код для управления цифровыми индикаторами........................353 Двоичный/десятичный дешифратор...................................362 Глава 22. Страхуемся от ошибок. Как хранить и передавать информацию без искажений......................................................365 Экономичные коды.................................................368 Передача в линии с помехами......................................370 Глава 23. Импульсные устройства. Генераторы, формирователи и одновибраторы....................................................375 Генераторы.......................................................376 Кварцы...........................................................381 Формирователи импульсов..........................................383 Одновибраторы....................................................387 Глава 24. Электронные счеты. Триггеры, счетчики, регистры..........391 Самый простой....................................................392 D-триггеры.......................................................395 Регистры.........................................................397 Счетчики.........................................................400 Цифровой лабораторный генератор..................................407 Частотомер.......................................................410 Глава 25. Откуда берутся цифры. Цифроаналоговые и аналого-цифровые преобразователи.................................425 Оцифровка........................................................428 ЦАП..............................................................430 АЦП..............................................................436
Глава 26. Продолжаем измерять температуру. Конструируем цифровой термометр.........................................................449 АЦП 572ПВ2 и ПВ5................................................450 Практическая схема термометра...................................455 Глава 27. Метеорологическая лаборатория. Измерение физических величин................................................463 Измеряемые параметры............................................463 Давление........................................................464 Влажность.......................................................467 Ветер...........................................................468 Глава 28. Лечение амнезии. О памяти и ее разновидностях...........477 Устройство ЗУ...................................................478 ROM.............................................................480 RAM.............................................................488 Глава 29. Как работает микропроцессор. Анатомия микропроцессора...491 Глава 30. Знакомство с микроконтроллером. Микроконтроллер Atmel AVR 8515....................................501 Глава 31. Персональный компьютер вместо паяльника. О программировании МК.............................................515 Железо..........................................................516 Софт............................................................518 Программирование................................................520 Программирование UART...........................................531 Глава 32. Изобретаем велосипед. Настольные часы на микроконтроллере...............................................537 Схема...........................................................541 Программа.......................................................547 Глава 33. Шампунь и кондиционер в одном флаконе. Как соединить часы с термометром................................................551 Программа.......................................................556 Глава 34. Заставить камни заговорить. Микроконтроллер и голосовая сигнализация......................................................569 Глава 35. Страна советов. Некоторые полезные схемы................577 Схема мультивибратора на транзисторах...........................577 Чувствительный детектор.........................................578 Электронное реле................................................580 Схема реле с управлением одной кнопкой..........................581 Датчик воды.....................................................582 Детектор электромагнитного поля.................................583
ПРИЛОЖЕНИЯ.......................................................587 Приложение 1. Резисторы..........................................589 Международная цветная маркировка резисторов....................589 Таблица номиналов резисторов и конденсаторов с допуском 5% (ряд Е24) и 10% (ряд Е12)........................590 Таблица номиналов 1%-ных резисторов (ряд Е96)............Г.....590 Приложение 2. Стандартные обозначения и размеры некоторых гальванических элементов..........................................591 Приложение 3. Классы усилителей..................................592 Приложение 4. Справочные данные компонентов......................599 Диоды..........................................................600 Транзисторы....................................................604 Электронные реле и оптроны.....................................613 Микросхемы.....................................................617 Приложение 5. Соответствие наименований зарубежных и отечественных микросхем КМОП....................................................626 Приложение 6. Программа часов....................................627 Приложение 7. Текст процедур для работы с интерфейсом 12С........638 Приложение 8. Перевод некоторых часто встречающихся терминов.....643 Принятые обозначения.............................................649 Физические величины и их единицы измерения по умолчанию........649 Приставки и множители для образования десятичных кратных и дольных единиц...............................................650 Некоторые буквенные обозначения в электрических схемах.........650 Литература.......................................................655 Предметный указатель.............................................657
К читателю Как известно, каждый сходит с ума по-своему. Есть люди, сдвинутые на собирании спичечных этикеток или монет, есть те, кто прыгает с парашютом, лазает по городской канализации или спускается на плотах по горным рекам северного Урала и Сибири. Одна из самых распространенных разновидностей подобных психических сдвигов— радиолюбительство. Когда-то радиолюбители были действительно только "любителями радио" — просто потому, что в 10—20 годах XX века, когда появились первые энтузиасты, кроме радиоэлектроники, никакой другой электроники не существовало. О, в те времена это было жутко престижное хобби! Это мы сейчас привыкли к магнитолам в каждом автомобиле и двум-трем телевизорам в каждой квартире — не считая электронной почты с Интернетом. А тогда сама возможность слушать кого-то с другого конца Земли казалась чудом, подвластным разве что рукам волшебника. Даже настройка на нужную станцию простого промышленного приемника, ставшего к тридцатым годам уже довольно обычным атрибутом не только в богатой Америке, но и в СССР, поначалу вызывала не меньше вопросов, чем сейчас установка Windows на персональный компьютер. Но довольно быстро — начиная с 30—40-х годов — электроника стала "широко простирать руки свои в дела человеческие". Термин "радиолюбительство" сохранился, но под ним стали уже понимать отнюдь не только увлечение радиопередатчиками и приемниками. Первым делом выделилась в отдельное направление звукозапись и все с ней связанное — различные усилители, акустические устройства. Затем электроника вторгается в электротехнику и управление разными механизмами. Потом начался компьютерный бум, и стало модным все, связанное с информационными технологиями (вообще-то в них, по справедливости, следовало бы включить и радио с телевидением). Кстати, все ли знают, что возникновению большинства новинок последнего времени, перевернувших наш быт, мы обязаны военным? В рамках военных разработок возникли: операционные усилители, компьютеры, Интернет, сотовая связь, GPS, спутниковая передача данных и многое другое. Если даже военные и не были инициаторами и первыми заказчиками упомянутых изобретений, то они довольно быстро прибирали к рукам соответствующую деятельность. Так произошло, например, с компьютерами. А в СССР — вообще с любой электроникой, даже бытовые магнитофоны делались на секретных заводах.
Стоит особо рассмотреть вопрос, чем отличается "электронное" устройство от "электрического". Оба они используют электрическую энергию, однако электрическое устройство, как правило, не содержит никаких заумных штучек, типа транзисторов или микросхем: простейшим примером "электрического" в чистом виде является настольная лампа с выключателем. Но та же лампа, снабженная регулятором яркости или бесконтактным сенсорным выключателем, является уже устройством электронным. В настоящее время не больше пятой части объема журнала "Радио", выходящего в нашей стране с 1924 года, посвящено именно радио. Следовало бы придумать иное название, но "радиолюбитель" прижилось, и ныне означает любого, кто увлекается электроникой (по крайней мере по-русски, в английском, например, языке это не так). Поэтому не удивляйтесь, если вы в этой книге, адресованной начинающим (и просто желающим повысить свою квалификацию) радиолюбителям, о радио вообще не прочтете ни слова. Зато довольно часто будут упомянуты компьютеры — по причинам, которые вы поймете, прочитав эту книгу. Занятие радиолюбительством в нашей стране некоторое время назад, в 60-80 годы, было не просто модным, а очень модным. Этому способствовало много причин: и относительно высокий уровень технического образования, и бесплатный доступ к компонентам (да-да, купить в свободной продаже что-то электронное было очень сложно, а вот вынести с завода или из НИИ — всегда пожалуйста), и, наконец, то, что промышленность явно не справлялась с обеспечением потребности населения в продвинутых электронных устройствах, а качество тех, что выпускались, чаще всего было ниже всякой критики. Дешевле, лучше и интереснее было сделать самому. Поэтому в те времена стать меломаном в смысле "любителем качественной звукозаписи" означало фактически, что человек сам вынужден был изучать азы электроники и браться за паяльник ("махать паяльной косой", как любил выражаться один мой знакомый). Положение резко изменилось с приходом в страну дешевого и качественного ширпотреба с Запада и Востока, и теперь уже вряд ли кто будет самостоятельно изобретать, скажем, карманный плеер-"дебильник". Но, как ни странно, радиолюбительство не только не погибло, но даже расцвело — прежде всего, стали доступны практически любые, как импортные, так и отечественные компоненты (хотя и за деньги) и, что немаловажно, исчерпывающая документация к ним — в 70-е годы какой-нибудь "Справочник по транзисторам" сметали с прилавков со скоростью, которой могли бы позавидовать сами братья Стругацкие. И вот уже "Чип и Дип" открывает четвертый за десять лет супермаркет в Москве и хвастается миллионом посетителей в год, и на Митинском рынке в выходной не протолкнуться... Мудрый римлянин Публий Корнелий Тацит в свое время промолвил: "Можно восхищаться древностью, но следовать нужно современности". Он был совершенно прав, но сам остался в веках именно благодаря своим историческим
трудам. "Восхищение древностью", как ничто другое, помогает "следовать современности". Например, если поковыряться в истории науки и техники, то выяснится интересная вещь: почти все эпохальные изобретения и открытия делались дилетантами. Чаще всего это было обусловлено тем, что до них соответствующих направлений просто не существовало, и они вынуждены были все изобретать с нуля. Крайний случай такого "любительства" — изобретение телеграфа Самюэлем Морзе (рис. В1), который вообще не имел никакого— даже самостоятельного — технического образования и до начала работы над телеграфом был признанным художником. Были и другие, не менее интересные случаи. Рис. В1. Самюэль Морзе (Morse, Samuel F. 1791-1872), автопортрет, 1818 г. Вот некоторые важнейшие (по мнению автора) открытия и изобретения прошлого, которые оказали определяющее влияние на современную электронику (в скобках приведены либо год исторического свершения, либо даты жизни его автора, если конкретный год не удалось установить): □ изобретение вольтова столба (Александро Вольта, 1799); □ формулировка закона сохранения энергии применительно к электрическим явлениям (Джеймс Джоуль, 1818—1889); □ открытие действия тока на магнитную стрелку (Ганс Христиан Эрстед, 1822); □ открытие закона Ома (Георг Симон Ом, 1787—1854); □ изобретение электромагнитного реле (Джозеф Генри, 1797—1878); □ изобретение электромагнитного телеграфа (Самюэль Морзе, 1791—1872); □ прокладка первого трансатлантического кабеля (Сайрус Филд, 1866); □ формулировка законов Кирхгофа (Густав Роберт Кирхгоф, 1847);
□ изобретение телефона и радио (Александр Белл, 1876, Александр Попов, 1895, Гульельмо Маркони, 1901); □ открытие и объяснение явления термоэлектронной эмиссии (катодных лучей) (Юлиус Плюккер, 1959; Джозеф Джон Томсон, 1856—1940); □ изобретение электронной лампы (Ли де Форест, 1906); □ развитие квантовомеханического подхода к описанию явлений на атомном уровне (Нильс Бор, Вернер Гейзенберг, Эрвин Шредингер, Вольфганг Паули и др., 1920—1930); □ создание аналоговых вычислительных машин (лорд Кельвин, 1870-е, Ван-невар Буш, 1931); □ применение булевой алгебры к описанию явлений в релейных электрических цепях (Клод Шеннон, 1940); □ создание компьютера (К. Цузе, 1939, Д. Анатасов, 1941, Г. Эйкен, 1944, Д. Моучли и П. Эккерт, 1946); □ создание кибернетики и теории информации (Норберт Винер, 1948, Клод Шеннон, 1948); □ изобретение транзистора (У. Шокли, Дж. Бардин и У. Браттайн, 1948); □ изобретение микросхемы (Джек Килби, 1959, Роберт Нойс, 1959); □ создание интегрального операционного усилителя (Роберт Видлар, 1963); □ создание микропроцессора (Тед Хофф, 1971). По каждому из этих пунктов можно написать отдельную книгу или, по меньшей мере, статью (в частности, автор отсылает интересующихся к его собственным публикациям [1-6]). Некоторые избранные исторические и фактические подробности будут приведены по ходу изложения. А теперь мы дадим совет, который может показаться несколько неожиданным. Но сначала попробуйте мысленно ответить на один вопрос, и пусть он не покажется вам идиотским: "Какова величина тока в комнатной розетке?". То, что этот вопрос отнюдь не такой дурацкий, как кажется, доказывают результаты ответов на него, полученные после опроса группы студентов одного технического вуза (по специальности, не связанной напрямую с электротехникой или электроникой): из нескольких десятков опрошенных только двое смогли дать вразумительный ответ. Итак, если вы, читатель, замялись с ответом или просто не уверены в нем, то вот обещанный совет, причем адресованный любому независимо от возраста: прежде чем читать дальше, возьмите учебники физики за седьмой и восьмой классы и перечитайте главы, посвященные электричеству. Можете также захватить из девятого класса главу, посвященную строению атома. Еще лучше обратиться не непосредст
венно к школьным учебникам, а изучить соответствующие главы из учебника Ландсберга [7], где то же самое изложено куда более увлекательно и подробно. Тогда вам будет много легче читать эту книгу дальше. Кстати, бросим камень в огород Минобразования: по глубокому убеждению автора, сведений в указанных учебниках более чем достаточно, а 10 и 11 классы — пустое времяпрепровождение для того, кто не собирается становиться специалистом-физиком. Автор не компетентен говорить то же самое о других предметах, но есть основания полагать, что и там положение ничуть не лучше. Зажмурившись, проследим за полетом этого камня, с горьким удовлетворением установим, что школьников по-прежнему пичкают массой совершенно ненужных сведений, и приступим, наконец, к делу. Несколько слов о том, как пользоваться книгой. Она рассчитана на тех, кто делает все своими руками и дома (поэтому, например, я не рекомендую компоненты для поверхностного монтажа — платы под них своими руками изготовить достаточно сложно, и еще труднее их отлаживать). Те, кто уже имеет известный опыт работы и оборудованную домашнюю лабораторию, первые три главы может пропустить. Книга отличается от большинства имеющихся руководств тем, что почти все описанные в книге схемы подробно разобраны шаг за шагом, включая самые мелкие подробности, так, чтобы при повторении конструкции у вас не возникало вопросов, зачем нужен тот или иной резистор и почему его сопротивление именно такое. Однако чтобы вопросов действительно возникало как можно меньше, читать книгу надо последовательно глава за главой, проверяя все расчеты с карандашом и калькулятором1. В процессе чтения вам неоднократно придется возвращаться к уже прочитанным главам. Логика построения книги подчинена постепенному усложнению конструкций, но, в то же время, широко используется метод опережающего изложения — скажем, операционные усилители и обратная связь подробно рассматриваются только в главе 14, но примеры их использования вы сможете встретить уже в главах 9 и 10. Опыт показывает, что такой прием очень способствует усвоению информации — уже немного знакомое легче разбирать подробно, чем незнакомое вовсе. С другой стороны, не удивляйтесь, что звуковой усилитель подробно разбирается в главе 9, а источник питания для него — только в следующей главе. Сведения из этих глав во многом пересекаются между собой, поэтому, прежде чем браться за усилитель, вам придется прочесть обе главы. Во всех таких случаях в тексте обязательно имеется ссылка на нужную главу, так что нетерпеливому читателю не возбраняется залезть на несколько глав вперед — только потом не забудьте вернуться! Вообще-то самый лучший способ — сначала прочесть 1 Вдруг и ошибки найдете? Пишите, буду очень благодарен.
книгу целиком, не упуская ничего, а затем начать сначала, подробно разбирая и повторяя понравившиеся конструкции. Книга несамодостаточна — для того, чтобы повторить многие конструкции, вам потребуется еще справочный материал, например, по разводке выводов транзисторов или иных компонентов, обязательно нужно иметь фирменное описание микропроцессоров AVR и системы команд для них. Слава богу, у нас теперь есть Интернет, так что можно не забивать полки справочниками, но кое-что, особенно по отечественным компонентам, все же потребуется — не будешь же лазить в Сеть за каждым транзистором! Подробнее об этом см. в главе 8, а в приложении 4 вы найдете основные справочные данные по некоторым из упомянутых в книге компонентов. Не нужно рассматривать любую схему из этой книги или из других источников как нечто вроде текста Библии, который никому не позволено изменять. Даже рекомендации производителей по включению того или иного компонента есть всего лишь рекомендации. Можно и нужно экспериментировать, изменяя параметры компонентов и подгоняя схему к вашим условиям. Нелишне и поспорить с автором, если то или иное решение кажется чересчур усложненным. Однако стоит делать это разумно: если вы замените в схеме генератора частоты тип времязадающего конденсатора с К73 на К50, то можете быть весьма удивлены результатами. То же самое может произойти, например, если вы не глядя замените рекомендуемый операционный усилитель МАХ474 на похожий на него по выводам, но предназначенный для других целей МАХ478. Именно поэтому я рекомендую внимательно ознакомиться с первыми главами книги. И, наконец, рискуя утомить читателя, все же скажу несколько слов о том, как вообще следует разрабатывать и отлаживать схемы. Самый эффективный метод — "сборка" нужной схемы из готовых и заранее отлаженных фрагментов. Эта операция аналогична тому, как программисты собирают программы из готовых и заранее отлаженных процедур. Каждая такая процедура есть "черный ящик", у которого есть входы и выходы для общения с другими частями программы, причем в общем случае вы даже не знаете, как она устроена внутри — точно так же, как вы не знаете, что именно размещается внутри микросхемы. Вы берете микросхему, подсоединяете к ней внешние элементы в соответствии с рекомендациями производителя и получаете готовый узел, который соединяете с другими подобными узлами. Точно так же следует поступать, если узел представляет собой не микросхему, а отдельный фрагмент устройства. При рисовании схемы обязательно обозначайте на ней конкретные типы и значения параметров элементов — не откладывайте это до выполнения практической отладки схемы. Изменить вы всегда сможете, но все, что можно посчитать, нужно посчитать заранее — это сохранит вам очень много
времени. Когда вы берете, наконец, паяльник в руки, то не следует собирать всю схему устройства сразу целиком. Разбейте ее на как можно более мелкие самостоятельно работающие узлы и отлаживайте каждый узел по отдельности. Не верьте печатному слову и все рекомендации из литературы проверяйте на макетах (в конце концов, у вас образуется библиотека таких самостоятельно отлаженных узлов, и вы будете экономить огромное количество времени). Отладив все, вы обязательно наносите на чертеж схемы полученные в результате отладки точные значения компонентов (те, что еще требуют окончательной подгонки, обозначаются звездочкой), проверяете правильность соединения этих узлов и разводку питания и только затем собираете всю схему целиком — сначала на макетной плате. И только убедившись в работоспособности макета схемы, вы переносите ее на настоящую рабочую плату. Между прочим, в отличие от большинства радиолюбительских изданий, рисунки плат в книге не приводятся, чему есть много причин: во-первых, повторить конструкцию в точности с теми компонентами, которые приведены в описании, как правило, не получается, да это и не требуется, так что в большинстве случаев плату придется все равно перерабатывать. Во-вторых, лично я никогда не и повторял опубликованных конструкций в точности, стараясь улучшить или упростить схему, и в этой книге вы почти всегда найдете рекомендации по улучшению характеристик или расширению функциональности описанного прибора, так что публикация рисунка платы вообще теряет смысл. Наконец, есть еще один момент, скорее дидактического порядка— раскладывая плату самостоятельно, вы намного лучше вникаете в работу схемы, после чего отладка и регулировка ее значительно упрощаются. Мое глубокое убеждение состоит в том, что плату нужно делать самостоятельно под выбранную конструкцию и корпус, а не подгонять габариты под имеющуюся плату, в результате чего самодеятельные конструкции иногда бывают весьма уродливы. Если вы разрабатываете серьезный прибор, который должен служить годами — постарайтесь заложить в разработку время и деньги, необходимые для выполнения следующих этапов: □ разработка технического задания с возможно более подробным описанием требуемой функциональности2; 2 Не пренебрегайте мелочами, особенно если вы работаете "на сторону", а не для себя — будет очень печально, если при изготовлении измерителя температуры то обстоятельство, что он должен работать круглогодично на улице, выяснится в конце работы. Разработанный вами на столе дома датчик, естественно, быстро выйдет из строя в таких условиях. Впрочем, такие накладки обычно касаются технологии изготовления плат и подбора деталей, а не собственно электроники, но лучше все же знать заранее.
□ разработка принципиальной схемы с отладкой отдельных узлов на макетах; □ изготовление полного макета и отладка его; □ разработка окончательной принципиальной схемы, подбор деталей и разработка печатной платы; □ изготовление опытного образца и отладка его, корректировка печатной платы; □ изготовление окончательного варианта печатной платы, корпуса и монтаж прибора. Приведенный выше идеальный вариант последовательности разработки редко осуществим на практике — либо времени не хватает, либо денег, либо того и другого одновременно. Есть одна известная фирма, которая занимается разработкой заказных электронных устройств — так там берут несколько "килобаксов" только за написание технического задания. И они правы! Но на практике часто получается так, что макетный либо опытный образец становится и окончательным. И все же по мере возможности не пренебрегайте этими промежуточными этапами — поверьте, так получится намного быстрее, чем, зажмурившись, собрать все сразу, а потом в лучшем случае обнаружить, что ничего не работает, а в худшем — выветривать из комнаты неприятный и стойкий запах горелой пластмассы. Учтите, что ни одна незнакомая дотоле схема никогда не работает сразу — будьте к этому готовы и заранее наберитесь терпения. Итак, приступим. Юрий Ревич <revich@computerra.ru> Автор выражает благодарность Юрию Певзнеру за консультации и предоставленные тексты программ для микроконтроллеров семейства Atmel AVR — в частности, ему принадлежит авторство программ из главы 34. Схемы, чертежи и фотографии компонентов подготовлены автором. Все остальные иллюстрации взяты из открытых источников и под чей-либо копирайт не попадают, за исключением фотографии первого транзистора из главы 6 и портрета Клода Шеннона из главы 18, любезно предоставленных автору корпорацией Lucent Technologies Inc./Bell Labs в лице ее сотрудницы Франциски Мэттьюз (Francisca Matthews).
Глава 1 Чем отличается ток от напряжения? Азбука электроники Поэтому-то мне будет легче, facilius natans, взять тему по моему выбору, которая для этих трудных вопросов богословия явилась бы тем же, чем мораль является для метафизики и философии. А. Дюма, "Три мушкетера" Дурацкий вопрос, скажете вы. Отнюдь. Опыт показал, что не так уж много людей могут на него ответить правильно. Известную путаницу вносит язык: в выражении типа "имеется в продаже источник постоянного тока 12 вольт" смысл искажен. На самом деле в данном случае имеется в виду, конечно, источник напряжения, а не тока, т. к. ток в вольтах не измеряется, но так говорить не принято. Самое правильное будет сказать — "источник питания постоянного напряжения 12 вольт", а написать можно и "источник питания = 12 В" где символ "=" обозначает, что это именно постоянное напряжение, а не переменное. Впрочем, и в этой книге мы тоже иногда будем "ошибаться" — язык есть язык. Чтобы разобраться во всем этом, для начала напомним строгие определения из учебника (зазубривать их — очень полезное занятие!). Итак, ток1, точнее, его величина, есть количество заряда, протекающее через сечение проводника за единицу времени: I = Qlt. Единица тока называется "ампер" и размерность ее2— кулоны в секунду. Знание сего факта пригодится нам позднее. Куда более запутанно выглядит определение напряжения - величина напряжения есть разность потенциалов между двумя точками пространства. Измеряется она в вольтах, и размерность этой единицы измерения — джоуль 1 В этой главе мы будем говорить в основном о постоянном токе и напряжении. 2 Здесь и далее, кроме оговоренных случаев, мы будем употреблять систему единиц СИ.
на кулон, т. е. U=EIQ. Почему это так, легко понять, вникнув в смысл строгого определения величины напряжения: 1 вольт есть такая разность потенциалов, при которой перемещение заряда в 1 кулон требует затраты энергии, равной 1 джоулю. Все это наглядно можно представить себе, сравнив проводник с трубой, по которой течет вода. При таком сравнении величину тока можно себе наглядно представить как количество (расход) протекающей воды за секунду (это довольно точная аналогия), а напряжение — как разность давлений на входе и выходе трубы. Чаще всего труба заканчивается открытым краном, так что давление на выходе равно атмосферному давлению, и его можно принять за нулевой уровень. Точно так же в электрических схемах существует общий провод (или "общая шина" — в просторечии для краткости ее часто называют "землей", хотя это и неточно — мы еще вернемся к этому вопросу позднее), потенциал которого принимается за ноль, и относительно которого отсчитываются все напряжения в схеме. Обычно (но не всегда!) за общий провод принимают минусовой вывод основного источника питания схемы. Итак, вернемся к вопросу заголовка: чем же отличается ток от напряжения? Правильный ответ будет звучать так: ток — это количество электричества, а напряжение — мера его потенциальной энергии. Неискушенный в физике собеседник, разумеется, начнет трясти головой, пытаясь вникнуть, тогда вы поясните: представьте себе падающий камень. Если камень маленький (количество электричества мало), но падает с большой высоты (велико напряжение), то он может наделать столько же несчастий, сколько и большой камень (много электричества), но падающий с малой высоты (напряжение невелико). На самом деле аналогия с камнем наглядна, но не точна — труба с текущей жидкостью подходит куда больше. Дело в том, что напряжение и ток обычно связаны между собой. (Слово "обычно" я употребил потому, что в некоторых случаях — источники напряжения или тока — от этой связи стараются избавиться, хотя полностью никогда и не удается.) В самом деле, если вернуться к нашей трубе, то легко представить, как с увеличением давления (напряжения) увеличивается количество протекающей жидкости (ток). Иначе зачем нужны бы были насосы? Сложнее представить себе наглядно обратную зависимость — как ток влияет на напряжение. Для этого нужно сначала понять, что такое сопротивление. До середины XIX века физики не знали, как выглядит зависимость тока от напряжения. Этому есть важная причина. Попробуйте сами экспериментально выяснить, как выглядит график этой зависимости. Схема эксперимента приведена на рис. 1.1, а примерные результаты — на рис. 1.2. Показанные на графике результаты весьма приблизительны, т. к. практический вид кривой
Рис. 1.1. Схема эксперимента по проверке закона Ома Рис. 1.2. Примерные результаты проверки закона Ома
будет сильно зависеть от того, как именно выполнен подопытный проводник (R1 на рис. 1.2) — как он намотан (плотно или редко), на какой каркас (толстый массивный или тонкий), от температуры в комнате, сквозняка и еще от множества других причин. Именно такое непостоянство и смущало физиков — не только сама кривая загибается (т. е. ток в общем случае непропорционален напряжению), но вид и форма этого загиба весьма непостоянна и меняется как при изменении условий внешней среды, так и для различных материалов. Понадобился гений Георга Ома (рис. 1.3), чтобы за всеми этими деревьями увидеть настоящий лес: а именно, понять, что зависимость тока от напряжения описывается элементарно простой формулой: / = U/R, а все несуразности, которые описаны выше, проистекают от того, что величина сопротивления R зависит от материала проводника и от условий внешней среды — в первую очередь, от температуры. Так, в нашем эксперименте загиб кривой вниз происходит потому, что при прохождении тока проводник нагревается, а сопротивление меди с повышением температуры увеличивается (примерно на 0,4% с каждым градусом изменения температуры). А сама величина этого нагрева зависит от чего угодно: намотайте провод поплотнее и заверните его в асбест— он будет нагреваться сильнее, а размотайте его и поместите на сквозняк — нагрев резко уменьшится. Рис. 1.3. Георг Симон Ом Георг Симон Ом (1787—1854)— немецкий физик, член-корреспондент Берлинской АН. Окончил Эрландский университет. Преподавал математику и физику в различных гимназиях. С 1833 г. — профессор Нюрнбергской высшей политехнической школы. В 1849—52 гг.— ректор Мюнхенского университета. Член Лондонского королевского общества.
В ознаменование заслуг Георга Ома единица измерения сопротивления так и называется — ом. Согласно формуле, приведенной в предыдущем абзаце, 1 Ом есть сопротивление такого проводника, через который течет ток в 1 А при напряжении на его концах равном 1 В. Обратная сопротивлению величина называется проводимостью и измеряется в сименсах, названных так в честь другого ученого: 1 Сименс = 1/1 Ом. В электронике почти всегда оперируют величиной сопротивления, так что сименсы мы оставим для физиков. Сопротивление проводника зависит от его геометрических размеров: оно увеличивается пропорционально длине и уменьшается пропорционально площади сечения: R = р • L/S. Большое практическое значение имеет коэффициент пропорциональности р — т. н. удельное сопротивление материала проводника. При определенной температуре (обычно берется 20 °C) эта величина почти постоянна для каждого материала. "Почти" тут написано потому, что на самом деле эта величина сильно зависит от химической чистоты и даже от способа изготовления материала проводника. Поэтому для проводников употребляют очень чистые металлы, скажем, обычный медный провод изготавливают из меди с количеством примесей не более 0,1% (как говорят, с чистотой в "три девятки"), это позволяет уменьшить сопротивление такого провода и избежать лишних потерь на его нагрев. Удельное сопротивление проводника, по определению, есть сопротивление (Ом) проводника единичной площади (м2) и единичной длины (м), и если подставить эти величины в формулу, вы получите размерность для удельного сопротивления Ом • м2/м или просто Ом • м. Практически в таких единицах измерять удельное сопротивление неудобно, т. к. для металлов величина получается крайне маленькой — представляете сопротивление куба меди с ребром в 1 м?! На практике часто употребляют единицу в 100 раз больше: Ом • см. Эта величина часто приводится в справочниках [8], но и она не слишком удобна для практических расчетов. Так как диаметр проводников измеряют обычно в миллиметрах (а сечение, соответственно, в квадратных миллиметрах), то на практике наиболее удобна старинная внесистемная единица Ом • мм /м, которая равна сопротивлению проводника сечением в 1 квадратный миллиметр и длиной 1 метр. Для того чтобы* выразить официальный Ом • м в этих единицах, нужно умножить его величину на 106, а для Ом • см — на 104. Подглядев в справочнике величину удельного сопротивления меди (0,0175 Ом • мм /м при 20 °C), мы легко можем вычислить, что сопротивление проводника с параметрами, приведенными на рис. 1.1, составляет около 45 Ом (проверьте!). Надо сказать, что человечество весьма преуспело в изготовлении специальных материалов, имеющих коэффициент удельного сопротивления, мало
зависящий от температуры. Это прежде всего специальные сплавы: константан и манганин, температурный коэффициент сопротивления (ТКС) которых в несколько сотен раз меньше, чем у чистых металлов. А для обычных стандартных углеродистых или металлопленочных резисторов ТКС составляет приблизительно 0,1% на градус или меньше, т. е. примерно в 4 раза лучше, чем у меди. Есть и специальные прецизионные резисторы (среди отечественных, это, например, С2-14, С2-29В, С5-61, проволочные С5-54В и др.), у которых этот коэффициент значительно меньше. Есть и другие материалы, у которых температурный коэффициент, наоборот, весьма велик (несколько процентов на градус, и при этом, в отличие от металлов, отрицателен) — из них делают т. н. термисторы, которые используют как чувствительные датчики температуры. Однако для точного измерения температуры все же применяют чистые металлы — чаще всего платину и медь, и мы к этому вопросу обязательно вернемся. Познакомившись с понятием сопротивления и его особенностями, вспомним, для чего мы все это делали. Ах, да, мы же хотели понять, как практически представить зависимость напряжения от тока! Но ведь мы пока не умеем произвольно изменять ток в проводнике, так? Напряжение изменять просто — нужно взять регулируемый источник питания, как это изображено на рис. 1.1, или, на худой конец, набор батареек, при последовательном соединении которых (1, 2, 3 и т. д. штук) мы получим некий набор напряжений. А вот источников тока (именно тока, а не напряжения) мы еще не имеем. Как же быть? Рис. 1.4. Схема для изучения свойств цепи с двумя резисторами Выход из этой ситуации показан на рис. 1.4 (заметьте, мы от схематического изображения проводника из длинной проволоки, имеющей некое сопротив
ление, перешли к стандартному изображению резисторов, как это делается в настоящих электрических схемах). Здесь мы уже не используем регулируемый источник питания — он нам не нужен. Питается схема от батареи из трех гальванических элементов, например, типа D, соединенных последовательно. Каждый такой элемент (если он еще не был в эксплуатации) дает напряжение примерно 1,62 В, так что суммарное напряжение будет почти 5 В, как и указано на схеме (под нагрузкой и по мере истощения элементов напряжение немного упадет, но ошибка в данном случае не играет большой роли). Как работает эта схема? Допустим, что движок переменного резистора3 R1 выведен в крайнее правое (по схеме) положение. Проследим путь тока от плюсового вывода батареи — амперметр, вывод движка резистора R1, крайний правый вывод R1, резистор R2, минусовой вывод батареи. Получается, что резистор R1 в схеме как бы не участвует — ток от плюсового вывода батареи сразу попадает на R2 (амперметр, как мы считаем, можно не принимать во внимание4 5) и схема становится фактически такой же, как на рис. 1.1. Что покажут наши измерительные приборы? Вольтметр покажет напряжение батареи 5 В, а показания амперметра легко вычислить по закону Ома: ток в цепи составит 5 В/50 Ом = 0,1 А или 100 мА\ Теперь поставим движок R1 в среднее положение. Ток в цепи теперь пойдет от плюса батареи через амперметр, вывод движка R1, половину резистора R1, резистор R2 и далее, как и раньше, вернется к минусу батареи. Как изменятся показания приборов? Раньше резистор R1 в деле не участвовал, а теперь участвует, хоть и половинкой. Соответственно, общее сопротивление цепи станет уже не 50 Ом (один резистор R2), а 50 (R2) + 50 (половинка R1), т. е. 100 Ом. Амперметр покажет уже не 100 мА, а 5 В/100 Ом = 0,05 А или 50 мА — в два раза меньше. А вот что покажет вольтметр? Так сразу и не скажешь, не правда ли? Придется считать. Для этого рассмотрим отдельно участок цепи, состоящий из R2 с присоединенным к нему вольтметром. Очевидно, что току у нас деться некуда — все то количество заряда, которое вышло из плюсового вывода батареи, пройдет через амперметр, через половинку R1, через R2 и вернется в батарею6. Значит, и на этом отдельном участке, состоящем из одного R2, ток будет равен тому, что показывает амперметр — т. е. 50 мА. Получается, как будто резистор R2 подключен к источнику тока! 3 О типах и устройстве переменных резисторов см. главу 5. 4 О подключении вольтметра и амперметра см. главу 2. 5 На всякий случай, еще раз напомним, что это значение приблизительное — напряжение батареи несколько меньше 5 В. 6 На самом деле это не совсем точно — часть тока, хотя и очень небольшая, все же пойдет через вольтметр, минуя R2. Но на практике этим всегда пренебрегают (подробности см. в главе 2).
И это действительно так — источник напряжения с последовательно включенным резистором (в данном случае, половинка R1) представляет собой источник тока (хотя и плохой, как мы увидим в дальнейшем). Каковы же будут показания вольтметра? Из закона Ома следует, что U = I • R, где R — сопротивление нужного нам участка цепи, т. е. R2, и в данном случае вольтметр покажет 0,05 -50 = 2,5 В. Эта величина называется падением напряжения, в данном случае — падением напряжения на резисторе R2. Легко догадаться, даже не подключая вольтметр, что падение напряжения на резисторе R1 будет равно тоже 2,5 В7, причем его можно вычислить двумя путями: как разницу между 5 В от батареи и падением на R2 (2,5 В) или по закону Ома, аналогично расчету для R2. А что будет, если вывести движок переменного сопротивления R1 в крайнее левое положение? Я сразу приведу результат: амперметр покажет 33 мА, а вольтметр— 1,66 В. Пожалуйста, проверьте это самостоятельно! Если вы получите те же значения, то это будет означать, что вы усвоили закон Ома и теперь умеете отличать ток от напряжения. А более сложными схемами включения резисторов мы займемся в главе 5. Пока же нам надо отвлечься от схем и разобраться с тем, как оборудовать себе рабочее место. Теоретические знания — это важно, но на практике все познается куда лучше. Но прежде чем перейти к дальнейшему, я хочу ответить на вопрос, который, несомненно, у вас уже возник: а как можно себе представить резистор в нашей аналогии с водопроводной трубой? Ток — расход воды, напряжение — давление, а сопротивление? Оказывается, это очень просто, мало того, соответствующая величина в гидравлике называется точно так же: сопротивление потоку. Аналогами резисторов будут всякие устройства, установленные на трубе: краны, задвижки, муфты или просто местные сужения. И точно так же, как на включенном в электрическую цепь резисторе происходит падение напряжения, на этих гидравлических сопротивлениях (их еще называют местными) происходит падение давления, которое пропорционально величине самого сопротивления. Прикрывая кран, мы увеличиваем сопротивление потоку, и расход воды уменьшается, т. е. здесь мы производим в точности то же действие, что и при экспериментах с переменным резистором в электрической цепи. 7 И это не совсем точно — амперметр тоже имеет некоторое сопротивление и может быть представлен как еще один последовательный резистор. Но, как и в случае вольтметра, этим на практике пренебрегают.
Глава 2 Джентльменский набор. Оборудуем домашнюю лабораторию Затем он сходил на набережную Железного Лома и отдал приделать новый клинок к своей шпаге. А. Дюма, "Три мушкетера" Скажу сразу: если у вас среди добрых родственников нет олигархов, то оборудовать домашнюю лабораторию сразу по последнему слову техники и не пытайтесь — это встанет в такую сумму, что домашние еще долго будут вам это вспоминать. Потому делайте это постепенно. Конечно, заманчиво купить цифровую измерительную станцию (мультиметр, запоминающий осциллограф, генератор сигналов и т. п. в одном флаконе) стоимостью примерно равной стоимости иномарки в хорошем состоянии, но уверяю, что для дела это не обязательно. Есть, однако, вещи, без которых не обойтись, вот их-то мы и перечислим, а затем разберем по очереди. Итак, вот малый джентльменский набор радиолюбителя: □ мультиметр; □ источник питания постоянного тока (два одинаковых однополярных или один двуполярный, иногда требуется и третий источник); □ осциллограф; □ генераторы прямоугольных и синусоидальных сигналов. Перечисленного достаточно для того, чтобы повторить все примеры из этой книги, однако в общем случае может понадобиться и иное оборудование (например, если вы собираетесь заняться радиоприемом или телевидением). Но мы остановимся на этом. Причем источники питания и генераторы несложно сделать самому (а генераторы — даже предпочтительнее, т. к. они обойдутся вам в день работы и примерно в один-два доллара, потраченных на компоненты, а работать будут не хуже, а в некоторых отношениях даже лучше промышленных, да и в использовании удобней). В дальнейшем мы все это сделаем, а пока рассмотрим то, что имеется в продаже.
Мультиметр Его еще часто называют по старинке тестером. Покупать надо обязательно цифровой и не самый дешевый (рис. 2.1). На рынке полно миниатюрных китайских мультиметров стоимостью в пару долларов. Не надо! Как правило, они работают примерно неделю, потом, если не разваливаются, то просто перестают показывать. В магазинах типа "Чип и Дип" или на радиорынках есть большой выбор приличных мультиметров. Вас интересует ценовой диапазон примерно $20—50, большая цена означает, что в приборе наличествуют не слишком актуальные "навороты": связь с компьютером, память или еще что-то в этом роде. Выбирать нужно по количеству функций и диапазонам измерений. Перечислим главные функции, без которых не обойтись (в скобках — желательные диапазоны): □ измерение постоянного напряжения (2 мВ — 600 В); □ измерение постоянного тока (2 мА — 10 А); □ измерение переменного напряжения (1—700 В); □ измерение переменного тока (20 мА — 10 А); □ измерение сопротивления (100 Ом — 10 МОм + функция "прозвонки"). Все остальные функции, как говорят компьютерщики, опциональны, но пренебрегать ими не следует (располагаю их по степени практической нужности): □ измерение емкости; □ измерение индуктивности; □ измерение параметров транзисторов; □ измерение температуры. Мультиметры работают, как правило, от 9-вольтовой батарейки в типоразмере "Крона". Батарейки хватает надолго, однако у некоторых моделей было замечено, что при снижении напряжения питания ниже допустимого мультиметр не выключается, а начинает врать. Это может быть источником неприятностей, и иногда крупных, поэтому я советую сразу после покупки разориться на ал-калайновую батарейку фирмы Duracell, гарантированный срок хранения которой составляет 6—7 лет. Это будет неплохое вложение денег, учитывая, что батарейка в мультиметре, в основном, хранится. Автор этих строк сменил батарейку всего один раз за восемь лет эксплуатации, причем не потому, что она истощилась, а потому, что у нее два года, как закончился срок хранения. Этот совет насчет алкалайновых элементов, кстати, относится не только к мультиметрам, а вообще к любой технике, которая должна долго питаться от гальванических элементов, скажем, к пультам управления телевизорами.
Рис. 2.1. Мультиметр Кстати, одновременно с мультиметром приобретите подходящие для него зажимы-"крокодилы" (с запасом — они легко теряются). С этим делом ситуация обычно такая: чаще всего стандартные отечественные зажимы не подходят, а "родные" импортные слишком громоздкие и очень плохо держатся на измеряемом проводе. В этом случае рекомендуется либо, если возможно, подогнуть отечественные, чтобы они держались на импортном щупе, либо просто откусить импортные наконечники от проводов и заменить их на отечественные штеккеры, на которых "крокодил" держится очень крепко. При этом вы лишаетесь фирменного заостренного щупа, но его легко изготовить из "крокодила", причем он будет даже лучше оригинального — плотно зажмите с помощью плоскогубцев в "крокодиле" толстую швейную иглу и натяните на нее изолирующую кембриковую трубку, оставив свободными
только несколько миллиметров кончика иглы (чтобы плотно держалось, лучше использовать термоусадочный кембрик). Сам "крокодил" тоже нужно изолировать — можно обмотать липкой эластичной полихлорвиниловой лентой (но не скотчем!). Этот же щуп удобно использовать для осциллографа. Слабым местом всех мультиметров является функция измерения тока, т. е. режим амперметра. Если вы творчески изучили главу 7, то должны легко сообразить, что амперметр, включаемый всегда последовательно с нагрузкой, должен иметь очень маленькое собственное (внутреннее) сопротивление, иначе на нем будет большое падение напряжения, и это будет вносить искажения в измеряемую величину тока. Если вы не поняли предыдущую фразу, то вернитесь к рис. 1.4 и перерисуйте его на листочке бумаги так: вместо амперметра нарисуйте резистор Кд (который будет представлять упомянутое выше внутреннее сопротивление амперметра), а переменный резистор R1 исключите. Вы получите почти точно такую же картинку, как и раньше, только вместо R1 у вас теперь есть Ra, и все расчеты будут аналогичными, т. е. чем больше Ra, тем меньше покажет вольтметр на R2 (которое в данном случае выступает в роли сопротивления нагрузки) и тем меньше будет общий ток в цепи. Это очень плохо, т. к. амперметр (как и вольтметр) должен только измерять, но никак не участвовать в процессах, происходящих в цепи. В принципе, полностью избежать этого не удается, но удается сделать внутреннее сопротивление амперметра достаточно малым, чтобы пренебречь его влиянием. Вот это-то замечательное свойство современных амперметров одновременно и является их самым слабым местом: достаточно перепутать и включить амперметр не последовательно, а параллельно источнику питания (подобно вольтметру на рис. 1.1), как через него, в полном соответствии с законом Ома, потечет огромный ток, ограниченный только возможностями источника. Действительно: характерное сопротивление амперметра составляет порядка нескольких миллиом, что даже при 5-вольтовом источнике дает токи в 1000 А и более! На самом деле никакой нормальный источник питания (включая даже бытовую электросеть) такого тока отдать не сможет, но того, что сможет, будет достаточно, чтобы прибор сгорел. Однако не отчаивайтесь — обычно в хороших мультиметрах внутри стоит плавкий предохранитель, а в самых продвинутых — даже самовосстанавливающийся. Поэтому если ваш прибор вдруг перестал показывать ток (а вы можете и не заметить, как случайно подсоединили его в режиме измерения тока к выводам питания), то, прежде всего, разберите его и проверьте предохранитель. Кстати, именно для того, чтобы дополнительно защитить мультиметр от описанных неприятностей, клемму для подключения щупа в режиме измерения тока всегда делают отдельно.
Теперь немного о режиме вольтметра. От вольтметра, наоборот, требуется максимально высокое сопротивление, иначе часть тока будет проходить через вольтметр, т. е. мимо измеряемого участка, что эквивалентно уменьшению суммарного сопротивления этого участка (подробнее о параллельном включении резисторов мы поговорим в главе 5, а пока, чтобы понять сказанное, посмотрите еще раз на рис. 1.4). Вольтметр будет вносить искажения, и чтобы этого не было, его сопротивление делают максимально большим. И это хорошо — по крайней мере, нет такой опасности сжечь прибор, как в случае амперметра. Если вы включите мультиметр в режиме вольтметра в цепь последовательно с источником питания, ток просто не пойдет (точнее, пойдет, но очень маленький). Зато вольтметр можно испортить, если включить его на предел в 1 В, а подсоединить к сети 220 В. Надо сказать, что обычно современные вольтметры выдерживают такое издевательство, но лучше не рисковать и соблюдать следующее правило: Необходимо обязательно заранее устанавливать прибор на тот диапазон, в котором вы собираетесь производить измерения. Если примерное значение величины заранее неизвестно, то следует установить прибор на максимальный диапазон. Впрочем, если финансовые возможности позволяют, то можно приобрести мультиметр с автоматическим выбором пределов измерения. В этом случае вам придется заботиться только о том, чтобы не перепутать, что именно вы собрались измерять — ток или напряжение. Кстати, а можно ли обойтись одним вольтметром, если вдруг амперметр сгорел необратимо? Вполне можно. Соорудить амперметр из вольтметра — пара пустяков (как, кстати, и наоборот — просто обычно этого не требуется). Для этого нужно запастись точным резистором номинальным значением сопротивления, например, ровно 1 Ом (это подойдет для измерения токов в едини-цы-десятки-сотни-тысячи мА, что есть обычное значение для наших схем, для токов в других диапазонах нужен больший или меньший номинал). Мощность этого резистора должна быть как можно выше— если найдете резистор мощностью в 10 Вт, то это будет просто прекрасно. Надо сказать, что разыскать такой резистор совсем непросто, потому, в крайнем случае, можно его изготовить. Лучше всего использовать нихромовую проволоку, из которой делаются спирали для антикварных отечественных утюгов и электроплиток (можно, скажем, "раскурочить" старый паяльник). Возьмите кусок этой проволоки подлиннее (всю спираль целиком), и измерьте его сопротивление (его-то ваш мультиметр еще не потерял способность измерять?). Величина эта составит порядка нескольких десятков ом. Затем растяните и измерьте рулеткой длину. Поделив одно на другое, вы получите сопротивление проволоки в Ом/м. Осталось отмерить (как можно точнее) нужный кусок,
соответствующий одному ому (скорее всего, получится около 20—30 см), свернуть его спиралькой, намотав на карандаш и затем аккуратно сняв — и сопротивление (причем достаточно точное) готово. Теперь включите его последовательно в измеряемую цепь, а параллельно ему подключите вольтметр, как показано на рис. 2.2. Величина тока в цепи будет численно равна показаниям вольтметра (если вольтметр показывает вольты, то, значит, ток в амперах, если милливольты — то в миллиамперах). Думаю, вы легко сообразите, почему это так, и сами сможете придумать, как подсчитать напряжение, если резистор имеет номинал, отличающийся от 1 Ом. Рис. 2.2. Схема измерения величины тока с помощью вольтметра Более подробно об особенностях процедуры проведения измерений мы поговорим в соответствующих главах, а сейчас продолжим оборудование нашей лаборатории. Источник питания Лабораторный источник питания, как я уже говорил, не представляет особых трудностей сделать самому (см. главу 10), но вы пока этого не умеете, а хотя бы один источник понадобится сразу — для того, чтобы отладить собственные. Можно, конечно, приобрести и три источника, но к собственноручной сборке я призываю не столько в целях экономии денег (хотя это и немаловажный фактор) и даже не из дидактических соображений (хотя и это существенно), но еще и потому, что собранный нами источник будет именно таким, какой нам нужен. Если мультиметры (о которых мы говорили ранее) и осциллографы (о которых еще пойдет речь позже) не имеет никакого смысла собирать самому, потому что лучше и дешевле промышленных вы наверняка не сделаете, то источники питания и генераторы — совсем другое дело. Какой источник приобретать? В отличие от мультиметра, — самый дешевый из подходящих. Это не ширпотребовский товар, и на коленке в шанхайских
трущобах их не делают1, тем более что в продаже много и отечественных вполне приличных моделей. Единственное, на что следует обратить внимание— диапазоны регулирования напряжения и тока. Напряжение должно плавно или ступенчато (последнее даже предпочтительнее, т. к. позволяет устанавливать точное значение напряжения без дополнительного контроля) регулироваться от 0 до 24—30 В (желательно) или до 15 В (как минимум). А с током надо разобраться. Дело в том, что существует несколько типов источников. Самые простые — у которых при превышении указанного в характеристиках максимального тока срабатывает внутренняя защита, и нагрузка отключается. Это не очень удобно вот почему: многие нагрузки, включая и определенную часть приведенных в этой книге устройств, в момент включения в течение некоторого времени (от миллисекунд до секунд) потребляют ток, значительно больший номинального потребления. Объясняется это тем, что в первый момент либо заряжается фильтрующий конденсатор источника питания, либо, как в случае, скажем, подключения микродрели, большой ток призван раскрутить движок до номинальных оборотов, после чего потребление тока резко снижается. Если используется источник с ограничением тока, то это приводит к замедлению пуска нагрузки, а если с отключением нагрузки, то отключение это чаще всего успевает сработать до того, как потребляемый ток снизится до приемлемого уровня. В результате вы попадаете в замкнутый круг: источник номинально может обслуживать вашу нагрузку, а фактически включить ее не получается. Более продвинутые источники работают так: они ограничивают ток на указанном уровне (т. е. фактически превращаются в источник тока, напряжение при этом зависит от нагрузки) и иногда еще умеют отключать нагрузку вовсе, если в ней наблюдается короткое замыкание. Такие источники гораздо удобней. Чаще всего величину тока ограничения, как и напряжение, можно регулировать. Очень хорошо, если вы сразу приобретете двуполярный источник, т. е. такой, который имеет на выходе сразу два напряжения: положительное и отрицательное относительно общего провода (обычно это просто два источника в одном корпусе, которые можно соединить по клеммам). Смотрите по средствам, но в любом случае желательно иметь источник как можно мощнее: 2—3 А нам будет, пожалуй, хватать для большинства наших экспериментов, но запас иметь никогда не помешает. 1 Разумеется, источники "со встроенной вилкой" здесь не рассматриваются и для подобных целей не годятся. О них пойдет речь в главе 10.
Осциллограф Осциллограф — вещь почти незаменимая. Мало того, во многих случаях он может заменить и мультиметр. Но одновременно это будет и самое дорогое ваше приобретение. Как работает осциллограф? Это прибор, который позволяет увидеть на экране все, что происходит с напряжением в наших схемах. Если не углубляться в физику, то принцип его работы можно пояснить "на пальцах" (рис. 2.3, а). Главная его деталь — электронно-лучевая трубка (CRT), аналогичная той, что используется в черно-белых телевизорах. В узком конце трубки расположена т. н. электронная пушка, излучающая узкий поток электронов, разогнанных до большой скорости. Попадая на экран, покрытый изнутри люминофором, он образует маленькую светящуюся точку (в отличие от телевидения, где люминофор светится белым, здесь часто используется люминофор зеленого или, например, синего свечения, причем иногда с небольшим послесвечением — луч как бы оставляет за собой постепенно затухающий след). Пластины X и Y служат для отклонения луча вправо-влево и вверх-вниз. Пластины X служат для развертки луча по горизонтали — на них подается пульсирующее напряжение пилообразной формы (его график приведен на рис. 2.3, б). В результате (в отсутствие напряжения на пластинах Y) луч прочерчивает горизонтальную линию, начинающуюся у края экрана слева и заканчивающуюся у правого края. Если подать напряжение на пластину Y, связанную со входом осциллографа, то эта линия будет сдвигаться вверх или вниз в зависимости от знака поданного напряжения, рисуя на экране график, соответствующий изменениям формы входного напряжения по Y во времени. В простейшем случае, если на вход Y подано постоянное напряжение, отличающееся от 0, то линия просто сдвинется, но останется горизонтальной. Поверх экрана размещается координатная сетка, по которой можно узнать все характеристики видимого сигнала — его размах в вольтах и период изменения во времени2. Управляющих ручек у осциллографа как минимум четыре— две ручки, обычно помеченные стрелочками вверх-вниз и вправо-влево, позволяют устанавливать линию развертки в отсутствие сигнала в нужное начальное положение, например, по центру экрана. Для того чтобы при этом быть уверенным, что сигнала действительно нет, обычно имеется специальная кнопка или переключатель, помеченная символом "земля". Кнопка отключает вход Y от входной клеммы и замыкает его на корпус, соединенный с общим проводом ("землей") прибора. Две другие ручки, представляющие собой переклю- 2 О переменных сигналах см. главу 4.
чатели с большим числом фиксированных положений, позволяют управлять временем развертки (т. е. частотой пилообразного напряжения) и усилителем входного сигнала (т. н. аттенюатором) для того, чтобы увидеть сигнал в удобном масштабе по обеим осям. У этих переключателей против каждого положения написаны значения времени (для развертки) и напряжения (для усилителя У), которые соответствуют одному делению координатной сетки экрана, таким образом, осциллографом можно довольно точно измерять период (частоту) сигнала и его размах. Кроме этих основных управляющих элементов, обычно имеются еще вспомогательные — для управления яркостью луча, его фокусировкой (т. е. размерами пятна на экране). Часто присутствует специальная кнопка под названием "поиск луча". Дело в том, что луч запросто может уехать за пределы экрана, и вам по неопытности может показаться, что осциллограф сломался. 2 - электронный луч 3 - горизонтальные отклоняющие пластины X 4 - вертикальные отклоняющие пластины У 5 - экран Форма напряжения развертки на пластинах X б Рис. 2.3. Принцип работы осциллографа: а — схематическое устройство (1 — электронная пушка; 2 — электронный луч; 3 — пластины горизонтального отклонения X; 4 — пластины вертикального отклонения Y; 5 — экран); б — форма напряжения развертки на пластинах X 2 Зак. 710
Отдельного разговора заслуживает также обязательно присутствующая регулировка синхронизации. Дело в том, что на практике частота развертки никогда точно не кратна частоте сигнала, поэтому сигнал "бежит" по экрану, не давая как следует рассмотреть его форму и измерить параметры. Регулировка синхронизации служит для того, чтобы сигнал можно было остановить, при этом начало развертки (т. е. начало хода луча от левого края экрана) будет всегда совпадать с каким-то характерным моментом в изменении повторяющегося сигнала, например, с переходом через ноль или максимум напряжения. Во многих простейших аналоговых осциллографах, подобных тому, что я описываю, синхронизация работает плохо и установить ее — занятие, требующее большого практического опыта. Хорошо помогает в этом случае дополнительный вход для синхронизации от внешнего сигнала, который имеется в большинстве даже самых простых моделей. Конечно, во многих моделях могут быть и другие органы управления, скажем, кнопка для переворота (инвертирования) сигнала, "лупа" для выделения интересного участка или клемма для подачи пилообразного напряжения развертки от внешнего источника, но вы с ними легко разберетесь по ходу дела. Проверить осциллограф просто: надо схватиться рукой за щуп, и тогда вы увидите на экране наведенную помеху от бытовой электросети частотой 50 Гц. Если вы ее не видите, 99% за то, что вы забыли отключить заземление входа после настройки положения луча (такое часто случается). С электрической точки зрения осциллограф представляет собой вольтметр, т. е. имеет высокое входное сопротивление (стандартно 1 МОм, хотя есть специальные высокочастотные осциллографы, которые имеют входное сопротивление 50 Ом, естественно, они для наших целей не годятся), поэтому наводка от сети и других помех может быть весьма значительна. Если такое входное сопротивление все же слишком мало (что бывает при исследовании схем с очень малыми токами), то следует использовать прилагаемый к осциллографу или приобретаемый отдельно щуп с делителем 1:10. При этом входное сопротивление возрастает соответственно до 10 МОм, а величину сигнала на экране нужно умножить на 10. Этим же щупом следует пользоваться, если требуется исследовать сигналы высокого напряжения, например сетевого (220 В), т. к. обычно имеющейся шкалы не хватает, и большая часть сигнала сверху и снизу при использования простого щупа окажется за пределами экрана. Да и производители не рекомендуют насиловать входной усилитель такими высокими напряжениями. Хотя лично мне ни разу не удавалось сжечь вход осциллографа, все же к рекомендациям изготовителей нужно прислушиваться. При подсоединении щупа к исследуемой схеме нужно помнить, что корпус осциллографа "заземлен", т. е. соединен с общим проводом щупа, поэтому он не должен касаться корпусов источников питания и других при
боров. Довольно часто бывает, что нужно разглядеть сигнал не относительно общего провода схемы, а, скажем, относительно шины питания. При исследовании узлов, напрямую связанных с бытовой сетью 220 В, нужно соблюдать особую осторожность — осциллограф обязательно должен стоять на сухом изолирующем основании, ни в коем случае не касаться каких-либо металлических предметов (скажем, корпуса стоящего рядом компьютера) и за его металлические части, включая элементы щупа, ни в коем случае нельзя браться руками! Если вам придется проводить подобные операции, то последовательность их проведения такая: 1. Отключить питающее схему напряжение (обязательно оба сетевых провода). 2. Надежно подсоединить щуп к измеряемой схеме, используя зажимы-"крокодилы" и следя за тем, чтобы они держались как можно прочнее. 3. Включить напряжение, держа руки подальше, и наблюдать сигнал. 4. При необходимости изменения параметров развертки, усиления и синхронизации внимательно следить за тем, чтобы в ажиотаже не задеть "крокодилы" и не коснуться металлических частей корпуса прибора. 5. При необходимости перенести щупы в другое место схемы, снова полностью выключить питание и повторить операции. Все сказанное относилось к простейшим аналоговым осциллографам, и их функций вам будет хватать во всех случаях, приведенных в этой книге. В настоящее время выпускаются, однако, и более "навороченные" модели. Прежде всего, это многоканальные и многолучевые осциллографы, которые позволяют увидеть одновременно два и более сигналов в разных точках схемы — фактически это несколько отдельных осциллографов в одном корпусе и с раздельным управлением, обычно за исключением синхронизации, которая устанавливается по одному из входных каналов {по выбору). Это бывает очень удобно, если нужно, например, рассмотреть сдвиг по времени одного из сигналов относительно другого. Излишне говорить, что такие приборы значительно дороже обычных, причем многолучевые лучше многоканальных, т. к. у них на самом деле несколько независимых лучей, в то время как многоканальные лишь имитируют независимость — у них просто разные входы по Y быстро-быстро переключаются между собой, управляя одним и тем же лучом. Еще более интересными являются запоминающие осциллографы, которые позволяют получить моментальный "снимок" одноразового процесса, скажем, всплеска напряжения в схеме. В настоящее время такие осциллографы исключительно цифровые, и функция запоминания у них — лишь одна из многих. О цифровых осциллографах я здесь говорить не буду. Если финансовые возможности вам позволяют, обязательно приобретите, т. к. они делают все то же, что и аналоговые, и еще много такого, что аналоговым недоступно: например, показывать точное значение напряжения сигнала и времени от начала развертки в произвольной точке осциллограммы. Нет у них, например, и никаких проблем с синхронизацией.
Рис. 2.4. Осциллограф Если все же на приобретение цифрового прибора у вас денег не предвидится — смело покупайте самый дешевый отечественный, причем как можно мало-габаритнее и с минимальным количеством ручек управления. Единственное, что я решительно не советую — приобретать переносной осциллограф с ЖК-экраном, особенно отечественного производства, т. к. экраны эти слепы, малоинформативны и обладают значительной инерционностью. Минимально необходимые характеристики, которые перекрывают большинство радиолюбительских потребностей (исключая высокочастотную технику), в сущности, включают лишь один критичный параметр: максимальную рабочую частоту. Желательно, чтобы она была не меньше 10—20 МГц, хотя и пятимегагерцовый тоже годится (несмотря на мегагерцы, такие осциллографы относятся к классу низкочастотных). Конечно, лучше, чтобы экран был побольше, но в погоне за его величиной следует учитывать также и общие габариты прибора. В остальном — выбирайте по вкусу и деньгам3. Для ориентировки укажу одну из лучших отечественных моделей — С1-73, которая выпускается без изменений уже третий десяток лет, необычайно проста в обращении и надежна. А теперь перейдем к технологическому оснащению нашей домашней лаборатории. 3 Хороший каталог отечественных и импортных моделей находится, например, здесь: http://www.prist.ru/produce.php/catalogue/meas/oscilloscopes.htm, а также на сайте магазина "Чип и Дин" (www.chip-dip.ru).
Глава 3 L^H Хороший паяльник — половина успеха. Инструменты и технологические советы На следующий день д'Артаньян поднялся в пять утра, сам спустился в кухню, попросил достать ему кое-какие снадобья, точный список которых не дошел до нас, к тому же еще вина, масла, розмарину и, держа в руке рецепт, данный ему матерью, изготовил бальзам, которым смазал свои многочисленные раны, сам меняя повязки и не допуская к себе никакого врача. А. Дюма, "Три мушкетера" Не будет преувеличением утверждать, что стабильность и покой в нашей жизни основывается на мелочах. Отсутствие всего двух-трех термозащитных плиток из десятков тысяч у шаттла "Коламбия" привело семерых астронавтов к гибели. Невероятное стечение обстоятельств, противоречащее всем законам вероятности — и пятьдесят башкирских детей гибнут в небе над швейцарским озером. Есть такой эмпирический закон, известный под названием "закона Мэрфи", который известен во множестве формулировок, но основная мысль, которая в нем содержится, такова: "всегда полагайтесь на худший из возможных исходов". В моей практике этот закон не нарушался никогда: например, если некий прибор сломался, то обязательно следует предполагать, что поломка произошла, как минимум, в двух местах. И это невероятное предположение, противоречащее основным положениям теории надежности, обычно оправдывается на практике! Я веду вот к чему: чем больше мелочей вы предусмотрите заранее, тем надежнее будут работать ваши приборы. Кстати, в радиоэлектронике также в полной мере оправдывается правило, которое заметили еще авиаконструкторы: красивый самолет имеет и лучшие летные качества. Аккуратно и эстетично смонтированный прибор будет работать лучше и надежнее — этому можно, кстати, отыскать вполне рациональные объяснения. Например: если
у вас соединительные провода между блоками имеют произвольную длину и толщину и кое-как запиханы в корпус прибора, напоминая мочалку для мытья посуды, то велика вероятность того, что вы зацепите тот или иной провод при сборке, и он просто оторвется, а если он слишком толстый и жесткий, то и цеплять не надо — пайка отломится при малейшей попытке отогнуть провод в сторону. Наоборот, слишком тонкий и мягкий провод будет цепляться за все подряд и обязательно стремиться попасть под крепежные винты. Кроме того, слишком длинные и хаотично расположенные проводники могут в некоторых случаях привести к неработоспособности схемы из-за самовозбуждения. Ни в коем случае не берите за образец сборку персональных компьютеров — там совершенно другая технологическая база, и спроектировано все настолько надежно, что хаотичное расположение кабелей в корпусе уже не может помешать работоспособности, хотя в фирменно собранных ПК кабели все же убирают в аккуратные жгуты. "На коленке" такого не достичь, потому берите лучше пример с отечественной военной сборки, которая технологически немногим отличалась от "наколеночной", но тем не менее довольно надежно работала. Для того чтобы монтаж и сборка были на уровне, оборудовать свою домашнюю лабораторию нужно как можно лучше. Это не значит, что нужно покупать самые дорогие фирменные инструменты. Нет: двадцатирублевые китайские* пассатижи служат автору верой и правдой уже более десяти лет. И отечественный паяльник с деревянной рукояткой будет исполнять свои функции ничуть не хуже импортного. Правда, то же самое нельзя сказать про китайские дешевые сверла или напильники, но сейчас нам важно другое: применяемый инструмент должен точно соответствовать той операции, для которой мы его используем. Если мы попытаемся припаять провод к толстому стальному стержню с помощью 18-ваттного паяльника с жалом, заточенным под распайку выводов микросхем, и с использованием канифоли в качестве флюса, то промучавшись с полчасика, мы, возможно, добьемся своего, но гарантии, что пайка не отвалится, если дернуть за провод посильнее, не будет. Инструменты Рассмотрим список (неполный) того, что желательно всегда иметь под рукой. Я исключил из него слесарные инструменты типа отверток и напильников, приведя лишь позиции, специфичные для процесса монтажа и отладки собст- 1 В этой книге не раз еще будут упомянуты различные изделия "Made in China" как с положительной интонацией, так и с отрицательной. Прошу китайских товарищей не обижаться на последнюю — в Китае действительно делают образцы как самых плохих, так и самых качественных товаров в мире.
венно схем (хотя и напильники иногда тоже очень даже в этом процессе участвуют, не говоря уж об отвертках). Не пугайтесь столь длинного перечня — он не исчерпывает всех необходимых мелочей, но в большинстве своем это недорогие (кроме электроинструмента) и легкодоступные вещи. Рассмотрим некоторые позиции подробнее. Инструменты: □ три паяльника разной мощности с подставкой; □ микродрель с набором цанговых зажимов (0,5—2 мм) и набором сверл (0,5—2,0 мм); □ врачебный пинцет; □ бокорезы; □ малогабаритные пассатижи (утконосы); □ лупа диаметром 5—7 см; □ часовые отвертки; □ скальпель или бритвенный резак; □ специальные инструменты. Расходные материалы: □ припой: свинцово-оловянный ПОС-30 (40) в прутке (без канифоли); □ припой: свинцово-оловянный ПОС-61 в проволоке 0 1—2 мм с канифолью; □ активный флюс; □ пассивный флюс (канифоль в кусочках и ее спиртовой раствор); □ шкурка (самая мелкая на бумажной основе и покрупнее — на тканевой); □ раствор спиртовой технический; □ чистый бензин (типа "Галоша" или "для зажигалок"); □ ацетон или аналогичный растворитель (646 или 647); □ клей "Момент-кристалл"; □ фольгированный стеклотекстолит 1,5 мм; □ макетные платы; □ термопаста; □ кембриковые (изолирующие) трубки (термоусадочные и обычные, диаметром 1,5—10 мм);
□ клейкая полихлорвиниловая изоляционная лента черного и белого цвета (только импортная!); □ скотч; □ водостойкие фломастеры (1 и 3 мм). Конечно, не все из перечисленного вам потребуется немедленно. Большинство пунктов не требуют пояснений, но некоторые стоит рассмотреть подробнее, и именно этим мы сейчас и займемся. Сначала несколько слов о двух наиболее употребительных вещах, которые всегда должны быть под рукой: бокорезы и пинцет. Бокорезы — малогабаритные кусачки с вертикально расположенными губками — должны иметь острые, а не закругленные концы, сделаны из хорошей стали (бокорезы из маникюрного набора не подойдут решительно), а лезвия должны точно, без перехлеста, сходиться. Для проверки качества посмотрите через сомкнутые лезвия на свет — не должно наблюдаться даже самой маленькой щели, особенно ближе к концам лезвий. Хорошо подогнанные и заточенные бокорезы должны резать бумагу. Какого бы качества лезвия ни были, не следует кусать такими бокорезами стальную проволоку и даже толстую медную — для этой цели следует иметь обычные слесарные кусачки. Если в процессе работы на лезвиях все же образовались зазубрины, следует подправить такие бокорезы плоским алмазным надфилем или отдать их для переточки в профессиональную точильную мастерскую. Пинцет — лучше всего приобрести в магазине медоборудования. Те пинцеты, которые предлагаются в радиомагазинах и тем более в магазинах для фотолюбителей, обычно не выдерживают никакой критики, хотя и могут пригодиться для некоторых технологических целей, но только не для радиомонтажа. Губки стандартного медицинского пинцета следует с помощью точила несколько заострить к концам с тыльной стороны — так удобнее браться за тонкие и короткие детали. К специальным следует отнести такие инструменты: □ клещи для зачистки проводов (очень советую приобрести, только перед покупкой проверьте, чтобы зачищать можно было даже самый тонкий провод); □ отсос для расплавленного припоя (он может пригодиться при демонтаже микросхем); □ обжимные клещи для плоских кабелей и т. п. А теперь подробно рассмотрим основное радиолюбительское орудие труда: паяльники.
Паяльники Три упомянутых в списке разновидности паяльников предназначаются для следующих работ (в скобках указана примерная мощность): □ пайка выводов микросхем и других компонентов с выводами до 1 мм, а также тонких проводов (15—20 Вт); □ пайка компонентов с толстыми выводами (разъемы, лепестки, штекеры и пр.) и толстых проводов (сечением 2 мм2 и более) (40—65 Вт); □ пайка крупногабаритных деталей, например, пластин стеклотекстолита между собой (150—200 Вт). Вполне годятся отечественные паяльники на 220 В с деревянной ручкой. Огромным их преимуществом является то, что деревянная ручка не греется так, как пластмассовая. Конечно, фирменный паяльник для пайки микросхем с мгновенным разогревом и специальным источником питания, гарантирующим изоляцию от сети и позволяющим регулировать температуру нагрева, предпочтительнее — но и существенно дороже. Неплохой промежуточный вариант — отечественный на пониженное напряжение (36 или 24 В), но к нему придется приобретать отдельный источник питания (или изготавливать его самому). Очень не советую приобретать дешевые китайские паяльники — они ничуть не лучше отечественных, разве что менее надежны. Кроме того, у них жало хотя и не требует доработки, но по непонятным причинам (скорее всего, чтобы выглядело красивее на витрине) покрыто то ли хромом, то ли никелем, и облудить такое жало — сущее мучение. Итак, что нужно делать с паяльниками? Самый мощный паяльник можно оставить как есть, а две другие разновидности сразу придется, во-первых, проверить на предмет качества изоляции, во-вторых, доработать жала. Затем жала следует облудить. Проверка изоляции осуществляется так: нужно взять мультиметр, установить его на самом верхнем пределе измерения сопротивления (10 МОм), один из щупов плотно прижать к жалу паяльника, другим по очереди коснуться контактов сетевой вилки. Мультиметр должен показать полный разрыв цепи. Лучше всего проделать это прямо в магазине — проще потом требовать замены. Еще лучше использовать для этой цели специальный мегометр, позволяющий заодно испытать изоляцию на пробой, хотя чаще всего такого прибора под рукой не имеется. Если у вас есть знакомый электрик, то возможно, у него такой прибор и найдется, но, на худой конец, придется обойтись и обычным мультиметром. Итак, мы убедились, что изоляция нормальная, и паяльник не выведет из строя компоненты, которые мы будем паять. Теперь возьмемся за доработку
жал. Для хороших фирменных паяльников эту операцию, естественно, делать не требуется — там жала доработаны уже как надо. А для отечественных первым делом следует аккуратно вытащить жало из паяльника. Для самого маломощного нужно расплющить жало большим молотком на плоской поверхности тисков так, чтобы толщина его постепенно сходила на нет, зажать расплющенное жало в тиски и большим плоским напильником придать ему форму, выбранную по вкусу из вариантов, приведенных на рис. 3.1. Для паяльника средней мощности плющить необязательно, нужно только опилить жало, чтобы оно сужалось к концу. Рис. 3.1. Доработка жала паяльника: 1 — плоское прямое жало, 2 — круглое прямое, 3 — плоское загнутое жало, 4 — круглое загнутое жало После формования жала для самого маломощного паяльника, который будет употребляться чаще всего и для самых ответственных работ, следует проверить, правильно ли выбрана мощность. Можно, конечно, проверить температуру жала (если у вашего мультиметра есть возможность измерения температуры), но неопытному человеку это мало что скажет. Поэтому есть простой эмпирический метод определения того, насколько мы правильно выбрали мощность. Для этого следует коснуться разогретым жалом кусочка канифоли. Если канифоль плавится и некоторое время (около пяти-десяти секунд) потом дымится — все в порядке. Если канифоль плавится плохо и жало потом дымится длительное время — паяльник недогрет (мощность мала). Если канифоль мгновенно вскипает и тут же испаряется — паяльник перегрет (мощность великовата). Если паяльник перегревается или недогревается, то необязательно сразу покупать другой — следует попробовать взять более длинное или более короткое жало соответственно. Запасные жала имеются в продаже.
Наконец, после всех этих мучений, жало следует облудить. Для этого паяльник с хорошо зачищенным с помощью шкурки жалом следует включить в сеть и после некоторого прогрева окунуть в канифоль. Следя за тем, как канифоль растекается, важно не пропустить момент, когда паяльник еще не нагрелся окончательно, но температура уже достигла точки плавления припоя. В этот момент нужно водить жалом по припою, стараясь, чтобы припой растекся по как можно большей площади как можно более равномерно (особо нужно следить за самым кончиком жала). Хороший вариант— окунуть паяльник в смесь опилок, напиленных крупным напильником из бруска припоя, и порошковой канифоли. Операцию облуживания следует провести для всех трех паяльников. Учтите, что припой постепенно растворяет медь или латунь, из которой обычно изготовлены жала, поэтому не надейтесь, что отформованного и залуженного паяльника вам хватит на всю жизнь. Периодически кончик жала следует затачивать, а когда оно станет совсем коротким — паяльник придется менять. К сожалению, к тому времени жало настолько заклинивает в нагревательном элементе, что сменить его обычно не получается независимо от "фирменности" или конструкции паяльника. Два слова о подставках. Довольно удобные подставки есть в продаже или их можно сделать самим, если, конечно, подставка не продавалась вместе с паяльником. При самостоятельном их изготовлении нужно стараться, чтобы пальник прочно держался и не падал, если случайно задеть его провод. В любом случае подставку следует дополнительно снабдить металлической щеткой для очистки жала, которые почему-то отсутствуют даже в самых фирменных конструкциях. Идеально для этих целей подходит отрезок т. н. "корчотки" — короткой стальной щетины на толстой тканевой основе, использующейся в текстильном производстве. Если не найдете — купите обычную хозяйственную металлическую щетку самого маленького размера с деревянной ручкой и отпилите от нее ручку. Кстати, если провод паяльника слишком жесткий (обычная беда не только отечественных, но и многих импортных паяльников, включая довольно дорогие), то его неплохо бы заменить. Откусите провод вблизи ручки и нарастите его самым мягким и гибким сетевым проводом с вилкой на конце, который найдете. Но только сетевым! Если паяльник рассчитан на 220 В, то, к примеру, очень хорошие в остальных отношениях аудиопровода решительно не подойдут. Разумеется, при наращивании нужно обращать внимание на хорошую изоляцию проводов друг от друга. Если провод болтается внутри ручки, что обычно происходит почти со всеми паяльниками, тоже независимо от их происхождения и качества, то его следует закрепить изолентой, иначе скорый обрыв не исключен.
Флюсы для пайки Это отдельная тема, которой не жаль посвятить некоторое время. Хотя рынок сейчас наполнен всяческими паяльными "примочками", опыт показывает, что в 99% случаев для получения надежных результатов можно обойтись всего двумя рецептами: обычным пассивным спирто-канифольным раствором и специальным активным флюсом для пайки плохо залуженных поверхностей. Сначала о спирто-канифольном растворе или, как его еще называют, канифольном лаке. Его можно приобрести или сделать самому. Единственное условие, которое следует соблюдать — использование технического или медицинского 95—96% спирта без каких-либо следов воды (денатурат, который часто продают в хозяйственных магазинах, не подойдет). Приобрести такой спирт можно на радиорынках (под названием "спиртовой раствор технический"), а медицинский — в аптеках. (Правда, в последнем случае не исключено, что потребуется рецепт врача— спирт медицинской кондиции вполне годится для употребления внутрь, в то время как "технический раствор" я бы решительно не рекомендовал пробовать даже заядлым алкоголикам ввиду нешуточной угрозы для здоровья.) Для изготовления канифольного флюса надо измельчить канифоль в порошок и наполнить им примерно на две трети пузырек, выбранный для этой цели (удобно употреблять пузырьки от лекарств, емкостью 100—150 мл, с пластмассовой завинчивающейся пробкой). Затем вы заливаете туда спирт в таком количестве, чтобы он покрыл порошок с небольшим избытком, завинчиваете пробку и немедленно несколько раз энергично встряхиваете пузырек. Собственно раствор будет готов через несколько дней в зависимости от степени измельчения канифоли. В течение этого времени пузырек нужно периодически встряхивать. Если в канифоли имеются посторонние включения, они осядут на дно. В пластмассовую пробку пузырька неплохо заделать кисточку, только чтобы она не была слишком длинной, иначе ваш пузырек легко перевернется, а растекание жидкой канифоли по столу — одно из самых тяжелых несчастий, которое можно себе представить. Простой канифольный лак, приготовленный по этому рецепту, имеет одно, но важное преимущество — он совершенно не проводит электричество ни в жидком, ни в застывшем состоянии, поэтому идеален для отладки схем. Продвинутые в радиолюбительском деле знакомые непременно предложат вам не возиться с этим делом и использовать широко распространенный универсальный флюс, известный под названием "ЛТИ". Надо сказать, что под этим названием ходит довольно много разных продуктов, простейший из которых представляет собой тот же самый спирто-канифольный раствор с активирующими добавками, которые превращают жидкость в пасту — так якобы удобнее с ней обращаться. Если вам нравится — используйте, однако
имейте в виду, что очень часто под названием "ЛТИ" продают активный флюс, в состав которого входит солянокислый диэтиламин, выделяющий при нагревании пары соляной кислоты, очищающие место пайки. Это здорово, но такой флюс крайне неудобен для отладочных радиолюбительских работ вследствие его электропроводности, и каждый раз после пайки его необходимо тщательно смывать спиртом, ацетоном или растворителем. В качестве активного флюса для пайки незалуженных деталей, проволоки или поверхностей из стали, грязной меди, латуни или, скажем, нихрома удобно применять совершенно отдельную композицию. Из имеющихся в продаже можно рекомендовать "Паяльную кислоту" на основе хлористого цинка или "ХАФ" на основе хлористого аммония — оба они смываются водой. Автор же вот уже в течение трех с лишним десятков лет использует самостоятельно приготовляемый активный флюс, который дает восхитительные результаты даже для нержавеющих сталей (для пайки которых обычно рекомендуют использовать ортофосфорную кислоту). Приготавливается он следующим образом: нужно засыпать в пузырек примерно на одну треть высоты порошок хлористого аммония и залить доверху смесью, состоящей из 70% глицерина и 30% воды. Взболтать это дело и оставить на одну-две недели. Если хлористый аммоний по истечении этого срока полностью растворится — досыпать еще, если нет — осадок не помешает. Насыщенным раствором удобно заполнить одноразовый шприц или полиэтиленовую пипетку с завинчивающейся крышечкой (от лекарства, которое закапывается в нос при гриппе). После применения остатки такого флюса обязательно смыть теплой водой под краном или стереть мокрой тряпочкой и тщательно высушить место пайки. Флюс совершенно нейтрален, не ядовит, безопасен для рук и не разъедает дерево, но чрезвычайно текуч и страшно медленно испаряется, поэтому его остатки со стола и с других предметов следует тщательно удалять влажной тряпкой. Не следует употреблять его совместно с канифолью — они друг другу будут мешать и смывать остатки будет гораздо труднее. Указанные составы исчерпывают почти все нужды радиолюбительской практики. Один совет — не жалейте канифоли даже для временных паек! Это потом выльется в потерю куда большего времени, чем будет затрачено на покрытие места пайки флюсом с помощью кисточки. На этом, пожалуй, насчет пайки закончим и перейдем к платам. Платы Все схемы в настоящее время располагают на печатных платах. Название "печатные" произошло от того, что промышленные платы изготавливаются методом фотопечати. Происходит это примерно так. Рисунок проводников
на плате заранее подготавливают в одном из специализированных программных пакетов (наиболее известны PCAD и OrCAD), представляющих собой векторный графический редактор со множеством дополнительных специализированных функций, включающих в том числе и автоматизированную раскладку, хотя несложные одно- или двусторонние платы раскладываются обычно вручную. Затем этот рисунок переносится на контрастную чернобелую техническую фотопленку (примерно так же, как делаются пленки для полиграфической печати), образуя т. н. фотошаблон. Если плата двусторонняя и дорожки-проводники у нее расположены с обеих сторон платы (самый распространенный случай), то фотошаблонов таких приходится делать, естественно, два. Иногда готовую плату еще дополнительно покрывают термостойким ламинирующим составом, который защищает дорожки, оставляя свободными контактные площадки и отверстия для пайки (вы его не раз видели, скажем, на компьютерных картах — чаще всего он зеленого цвета, хотя последнее время в моде самые немыслимые расцветки) — в этом случае приходится делать дополнительные шаблоны. Сразу заметим, что раскладка платы и изготовление шаблонов — самая дорогая стадия в этом процессе. Поэтому если вы решите отдавать свои разработки в подобное производство — убедитесь сначала, что в схеме нет ошибок2. Сами платы изготавливают из фольгированного стеклотекстолита, представляющего собой стеклоткань, пропитанную эпоксидным составом и покрытую с одной или двух сторон тонкой медной фольгой (когда-то основой для плат был гетинакс — пропитанная синтетической смолой бумага, но качество таких плат намного ниже). Стеклотекстолит бывает разной толщины. Для наших целей удобнее всего употреблять двусторонний стеклотекстолит толщиной 1,5 мм. Заметим, что отечественный стеклотекстолит несколько дешевле импортного, но дорожки у него имеют тенденцию при нагревании отслаиваться от носителя, поэтому лучше не экономить. Многослойные платы (скажем, материнские компьютерные платы обычно имеют четыре слоя) делают, склеивая между собой несколько односторонних, это сильно экономит общую площадь. Однако этот процесс много сложнее и дороже, поэтому практически недоступен для любителей. На подготовленную и очищенную от загрязнений поверхность заготовки из фольгированного стеклотекстолита нужного размера наносят состав, назы- 2 Любопытная история была опубликована недавно в одном журнале. Корпорация "Интел" решила перейти на полностью автоматизированную раскладку своих процессоров, в результате чего сроки проектирования ... значительно возросли! Представители корпорации честно признались в этом, объясняя публике задержку выхода новых моделей процессоров. А все дело в том, что в автоматизированную систему надо закладывать готовую схему полностью, поэтому при внесении каких-то поправок, даже самых мелких, нужно переделывать все с нуля, включая изготовление нового комплекта шаблонов и другие дорогостоящие операции.
Хороший паяльник — половина успеха. Инструменты и технологические советы 39 ваемый фоторезистом (простейший фоторезист — обычный желатин с некоторыми добавками). Затем на него накладывают фотошаблон и засвечивают ярким светом от кварцевой лампы. После этого плату обрабатывают в специальных растворах и фоторезист, в основном, смывается, оставаясь только там, где на него попадал свет. Остается только протравить плату в составе, растворяющем медь на незащищенных фоторезистом участках. Таково сильно упрощенное описание простейшего негативного процесса, в действительности все происходит несколько сложнее, но принцип остается тем же. Но на формировании рисунка проводников на плате дело отнюдь не заканчивается. Во-первых, на плате должны быть переходные и крепежные отверстия, причем разного диаметра. Они обычно просверливаются еще до покрытия фоторезистом. Так как отверстий много, то их сверлят на специальных станках с ЧПУ по программе, которая подготавливается автоматически в том же программном пакете, что и рисунок проводников. После формирования дорожек отверстия металлизируют не только для того, чтобы обеспечить контакт между дорожками на разных сторонах платы, но и для того, чтобы обеспечить качественную пайку выводов. Поэтому при промышленном изготовлении обязательно следует металлизировать отверстия даже на односторонней плате. Но и это еще не все. На последнем этапе производства проводники покрывают сплавом, который защищает медь от окисления и позволяет припою лучше приставать к контактам. Как видите, процесс изготовления плат достаточно сложен и, соответственно, дорог. Стоимость одной платы средних размеров даже в самых дешевых мастерских может зашкалить за пару сотен "вечнозеленых". Однако однозначно следует отдавать ваши платы в промышленное изготовление, если вы делаете несколько экземпляров (чем больше — тем получится дешевле в расчете на один экземпляр) хорошо отработанного и обкатанного на макете устройства, так вы сильно экономите на последующей отладке, сборке, и, к тому же, надежность полученного устройства заметно выше и меньше зависит от квалификации монтажника. А если вы изготавливаете ваше изделие в одном экземпляре, то чаще всего затевать подобную историю экономически нецелесообразно: быстрее и дешевле аккуратно собрать схему на универсальной макетной плате, хотя это и приводит к значительной трате времени на монтаж и его проверку. Существует немало описанных в литературе способов изготовления печатных плат в домашних условиях (достаточно поковыряться в старых подшивках журнала "Радио"), в том числе, с использованием принтеров. Вот один из самых простых. Подготовьте рисунок проводников в натуральную величину— бумажный шаблон с четко обозначенными центрами отверстий. Раньше такие шаблоны приходилось рисовать карандашом на миллиметровке, теперь, располагая
компьютером и принтером, можно сделать все гораздо аккуратнее и точнее. Вырежьте ножницами по металлу заготовку платы из фольгированного стеклотекстолита, соблюдая точные габаритные размеры. Затем плотно по всей поверхности наклейте на заготовку шаблон, используя простой резиновый клей — это позволит потом легко удалить бумагу и остатки клея с заготовки. Положите заготовку шаблоном вверх на деревянное основание, которое не жалко испортить, и закрепите ее струбцинкой. Чем плотнее заготовка прижмется к основанию, тем лучше. Аккуратно накерните отверстия по шаблону, затем шаблон можно удалить. Операцию кернения нужно провести обязательно, иначе отверстия потом "разъедутся". Затем микродрелью просверлите отверстия в помеченных местах, используя сверла соответствующего диаметра (для выводов большинства обычных компонентов — резисторов, диодов, маломощных транзисторов, микросхем — подойдет сверло 0,6—0,7 мм, остальные измерьте штангенциркулем и накиньте 0,1 мм). Учтите, что сверла на стеклотекстолите довольно быстро тупятся и приходят в негодность, поэтому следует иметь запас. После сверления следует осторожно (чтобы не расширять отверстия) обработать края отверстий сверлом большего диаметра или зенковкой, чтобы убрать заусенцы. Наконец, обработайте поверхность с обеих сторон платы шкуркой-нулевкой до зеркального блеска. На этом первый этап работы можно считать законченным. Затем тщательно очистите рабочий стол и заготовку от стружек и пыли и обработайте поверхность заготовки бензином "Галоша" с обеих сторон, используя тампон из хлопчатобумажной ткани (но ни в коем случае не ваты!). В дальнейшем старайтесь не касаться пальцами поверхности медного слоя — берите заготовку пинцетом или, как компьютерный лазерный диск, за края. Теперь вам понадобится водостойкий фломастер с тонким стержнем 1 мм. Лучше, если фломастер новый — линия, проведенная даже очень быстро, не должна прерываться. Проверьте его водостойкость, иначе вся работа может пойти насмарку. Этим фломастером следует сначала аккуратно обвести отверстия с обеих сторон платы, формируя контактные площадки. Они не должны быть слишком большими, иметь разрывы или непрокрашенные места. Потом только останется соединить эти площадки в соответствии с рисунком проводников (не забывайте, что вторая сторона выглядит зеркально по отношению к первой). Рисуя дорожки, не старайтесь их делать узкими, если место позволяет— лучше провести рядом несколько линий, сливающихся в одну, или использовать более толстый фломастер. И в любом случае следует шины питания и, особенно, общего провода ("земли") делать как можно шире и стараться, чтобы питание проходило по одной стороне платы, а общий провод — по другой. Неплохо также распространить "землю" на свободную поверхность платы, где это возможно. Для некоторых аналоговых
схем даже делают так: обратную сторону платы (противоположную расположению компонентов) оставляют целиком фольгированной кроме протравленных мест под сквозные отверстия для выводов (это удобно делать зенковкой по готовой плате) и соединяют эту сторону с "землей", а остальные проводники располагают на другой стороне. Нарисовав проводники с обеих сторон, оставьте заготовку окончательно подсохнуть и подготовьте травильную ванну. Для этого лучше всего использовать фотографическую пластмассовую кювету. Ни в коем случае не металлическую! Из множества известных рецептов для травления меди в радиолюбительской практике лучше всего использовать концентрированный раствор хлорного железа, который не выделяет в процессе работы газов и потому не повреждает рисунок фломастера. Он продается на рынках и в радиолюбительских магазинах, и его можно использовать многократно, только при хранении следует его плотно закрывать. Учтите, что все травильные растворы весьма агрессивно относятся к металлам и даже к не слишком качественной эмали на сантехнических приборах, поэтому нужно соблюдать предельную осторожность, чтобы не испортить раковину или ванну. Окуните плату в подготовленный раствор. Работать лучше в резиновых перчатках, а манипулировать платой с помощью пинцета из пластмассы или нержавеющей стали, причем это тот случай, когда лучше использовать пинцет с гладкими губками типа фотографического. Имейте в виду, что лимитирующая стадия процесса травления в хлорном железе — отвод продуктов травления от поверхности платы, поэтому в состоянии покоя плата снизу будет травиться гораздо быстрее, чем сверху, т. к. продукты реакции оседают на дно. Кювету нужно непрерывно покачивать и как можно чаще переворачивать плату, иначе могут остаться непротравленные участки, в то время как в других местах уже начнется процесс подтравливания дорожек. Важнее всего не пропустить момент, когда вся медь на непрокрашенных участках уже сошла. Если вы оставите плату на более долгий срок — считайте, что все испортили, т. к. краска долго не выдержит, и дорожки начнут протравливаться. Лучше всего в конце процесса периодически промывать плату в проточной воде и рассматривать ее на свет — если травление еще не закончено, то его следует продолжить. После травления плату нужно тщательно промыть теплой водой, высушить и оставшуюся краску тщательно смыть ацетоном, меняя тампоны до удаления малейших следов фломастера. Наконец, все дорожки следует облудить. Для этого берется самый мощный паяльник, а плата целиком покрывается активным флюсом. При облуживании следует всего лишь легко касаться дорожек, чтобы долго их не прогревать, иначе они могут отслоиться. Следите, чтобы припой не заполнял отверстия и на концах дорожек не образовывались возвышения. Для
этого нужно, чтобы припоя на паяльнике было немного. Затем плата еще раз промывается водой, высушивается и покрывается канифольным лаком — теперь она готова к монтажу. При изготовлении с помощью принтеров делается все то же самое, кроме способа формирования изображения дорожек. Самое простое — просто напечатать изображение на поверхности слоя медной фольги, используя принтер, имеющий прямой тракт подачи носителя, без перегибов. Однако обычные струйные принтеры для этой цели не годятся, т. к. чернила у них водорастворимые. Можно использовать принтеры с термопереносом (не технологию термопереноса изображения на металл с помощью полимерной пленки, а именно принтеры). Однако они либо очень дороги, либо имеют специфические области применения (например, только для печати на поверхности CD/DVD). Наибольшее распространение среди радиолюбителей получила технология с использованием обычных лазерных принтеров. При этом рисунок платы печатается в зеркальном изображении на каком-либо носителе, а затем переносится на плату с помощью горячего утюга (разумеется, отверстия сверлятся после нанесения рисунка, а не до). В качестве носителя может быть использована мелованная глянцевая бумага (обложки от журналов), прозрачная пленка, алюминиевая фольга и др. Самое главное при этом — точно подобрать температуру утюга, чтобы тонер на основе расплавился, но не растекся. Затем после остывания основу удаляют. При использовании обычной бумаги ее можно просто размочить в воде, а алюминиевую пленку вообще удалять не надо, т. к. она растворяется в травильном растворе, удалить надо только основу, на которую она наклеена (без основы напечатать на ней ничего не удастся). Многие тонкости этого процесса вы можете узнать, например, здесь: http://www.vebr.vrn.ru/tech/index.htm. Интересно, что при использовании такого способа нанесения изображения узкие дорожки получаются лучше широких, правда, при использовании мелованной бумаги у них могут получаться "лохматые" края. Два слова о монтаже. Если схема отлажена, то наиболее быстрый и надежный способ монтажа, к которому прибегают профессиональные монтажники, заключается в следующем: первым делом в плату "натыкиваются" компоненты, причем выводы не следует откусывать по необходимой длине, пусть они торчат. Плату, заполненную деталями, следует расположить компонентами вниз на поролоновой подкладке (чтобы они прижались к плате и не выпадали), после чего следует приступать к собственно пайке (огромное значение имеет форма и длина жала паяльника). В процессе пайки следите, чтобы компоненты не перегревались. Если все сделано правильно, то для хорошей пайки достаточно трех секунд. Для пайки удобно использовать тонкий припой с канифолью внутри — вы утыкаете одной рукой такую проволочку в место пайки, а другой прислоняете
к этому месту кончик жала паяльника. Секунда — и пайка готова. Несмотря на канифоль в припое, не забывайте заранее "покрасить" плату канифольным лаком — хуже не будет, а мыть плату спиртом или спирто-бензиновой смесью так и так придется. И еще два совета насчет пайки: во-первых, не исключено, что вам попадутся отечественные детали, изготовленные давно, в первую очередь, это относится к сопротивлениям типа МЛТ, к некоторым типам конденсаторов и других компонентов. Я не знаю, какие материалы были тогда использованы, но ножки этих деталей при хранении чернеют (т. е. покрываются тонкой темной пленкой соединений типа сульфидов), и пайка этих ножек представляет определенные трудности. Такие компоненты вполне годятся для использования, только выводы нужно обработать: зачистить тонкой шкуркой-нулевкой, а затем облудить со всех сторон, стараясь не наносить лишнего припоя (иначе вывод может не влезть в предназначенное для него отверстие). Второй совет относится к распайке компонентов на платах промышленного изготовления. Дело в том, что в процессе производства контактные площадки и дорожки покрываются сплавами (типа "Розе"), имеющими очень низкую температуру плавления. Потому, припаивая к ним вывод некоего компонента, не следует удерживать этот вывод на весу трясущейся рукой с пинцетом — припой застынет тогда, когда тонкий слой сплава на поверхности дорожки еще будет жидким, и очень надежное по внешнему виду паяное соединение на поверку окажется просто блямбой припоя, слегка прижатой к контакту на плате за счет упругости вывода. После пайки выводы откусывают на нужную длину: для промышленных плат с металлизированными отверстиями достаточно, чтобы места пайки выступали на 1 мм над поверхностью платы, для доморощенных следует оставлять несколько побольше. Для плат собственного изготовления нужно не забывать, что сквозные отверстия не имеют металлизации, и их нужно пропаивать на обеих сторонах платы. О демонтаже тех компонентов, которые следует удалить или заменить. Демонтаж, который не повреждает компонента с большим количеством выводов — целое искусство, включающее использование разнообразных отсосов жидкого припоя. Мы не будем здесь на этом подробно останавливаться, т. к. освоить это дело на словах не проще, чем научиться водить автомобиль по рассказам бывалых шоферов. Расскажем только, как правильно подготовить плату при замене компонента (не обращая внимания на судьбу удаляемого), — такое требуется не только для собственно замены, но и, например, при очистке макетных плат для дальнейшего использования. Сначала выкусите использованный компонент бокорезами. Детали с двумя выводами — резисторы или диоды — можно попробовать и выпаять, для
этого плату нужно закрепить в тисках, а деталь подцепить отверткой или пинцетом и коснуться паяльником места пайки — вывод вылезет из отверстия сам. Иногда такая операция проходит удачно, и деталь годится для дальнейшего использования! После удаления обязательно нужно прочистить отверстия, которые оказываются заполненными припоем и обрезками выводов. Для этого смочите нужные места канифольным лаком и закрепите плату в тисочках в вертикальном положении. Затем возьмите в одну руку тонкую заостренную деревянную палочку (удобно для этой цели использовать зубочистки или заостренные спички), прижмите ее острым концом как можно сильнее к залитому припоем контактному отверстию, стараясь направить в центр, а затем коснитесь паяльником припоя вокруг этого же отверстия. Если отверстие металлизированное, то паяльник нужно направлять с обратной стороны платы, если нет — касаться им рядом с палочкой. Заостренный конец влезет в отверстие, после чего паяльник следует убрать и выждать до полного застывания припоя. Остатки припоя иногда вместе с обрезками выводов нужно отломить пинцетом. Деревянная палочка довольно быстро изнашивается, поэтому ее следует часто менять или затачивать. Наконец о макетных платах. Иногда под ними понимают довольно сложные устройства с множеством зажимов, где схему можно собирать без помощи паяльника. Такие устройства имеются в продаже. Но обычно, говоря о макетной плате, имеют в виду просто печатную плату, на которой имеются только места для установки компонентов (отверстия и контактные площадки), не соединенные проводниками вовсе или соединенные по некоей специальной универсальной схеме. Такую плату можно использовать не только для собственно макетирования, но и для изготовления отдельных изделий в единичных экземплярах. Простейший вариант макетной платы — поле из металлизированных отверстий с двусторонними контактными площадками с шагом 2,5 (или 2,54) мм между ними. Некоторые варианты рисунка макетных плат показаны на рис. 3.2. Не поленитесь приобрести подобные платы — они продаются на радиорынках. В крайнем случае, их следует заказать. Учтите, что абсолютно универсальной платы, пригодной для расположения любых компонентов, не существует, и в большинстве случаев имеющиеся приходится дорабатывать. Соединения между выводами компонентов на такой плате осуществляются в процессе сборки схемы с помощью отрезков обычного изолированного провода — лучше всего для этой цели употреблять т. н. "луженку", под которой понимается тонкий (сечением не более 0,5 мм) одножильный медный провод, покрытый припоем, в хлорвиниловой разноцветной изоляции. Такой провод имеет один капитальный недостаток — хлорвиниловая изоляция легко плавится при нагревании и "скукоживается" при пайке, обнажая концы
на недопустимую длину. К сожалению, одножильных проводов для подобного монтажа в термостойкой (фторопластовой) изоляции я не встречал, хотя они, наверное, существуют в природе. Поэтому на практике удобнее использовать гибкий фторопластовый (тефлоновый) провод типа МГТФ, хотя монтаж с его помощью получается не столь надежным из-за его гибкости. При монтаже не следует стараться провести проводники "красиво" (по прямым перпендикулярным линиям) — наоборот, качество и надежность схемы будет выше, если все соединения разведены по кратчайшему пути. Следует только стараться, чтобы провода были припаяны "внатяг", а не змеились по плате. Короткие соединения, например, перемычки, удобно делать неизолированными обрезками выводов от сопротивлений и диодов. Заметим, что не следует припаивать выводы деталей, особенно провода для внешних соединений платы, просто к контактной площадке или дорожке — их по мере возможности следует просовывать в предусмотренное отверстие. А для внешних соединений лучше всего в отверстия заклепывать специальные штырьки, к которым уже припаивается обернутый (обязательно!) вокруг них провод. В любом случае следует прикреплять жгут внешних проводов к плате хомутиком. BCOksaWv, ggggouu oggggc< GGGGGGV GGGOGGO 9GGGGOGGO JG0GG0GGU »эЭ0эасша“ >3i3GGOOOGs jaaoooocw jaaaaooos; адвотовесЛ ЙОЭОввЭО JGGGGQGGG jaGGGQGGG }09ЭЭОООЭ< JCIGGGOGGG , JOBOOOOOO Рис. 3.2. Фрагменты различных макетных плат Если вы делаете капитальную конструкцию, которая должна прослужить много лет, то нелишне прикрепить выходящий жгут к плате и к стенкам корпуса прибора так, чтобы места пайки не подвергались механическим воздействиям. И обязательно подобное делать для проводов сетевого питания, при
чем сетевые и другие высоковольтные провода следует тащить отдельным жгутом. Правильные способы пайки проводников между собой показаны на рис. 3.3. Кое-кто мне может не поверить, но обычная скрутка, если она грамотно выполнена, может быть ничуть не менее надежна, чем пайка. Выполнение этой операции в разных вариантах показано на рис. 3.4. И при пайке и при скрутке следует обязательно постараться предотвратить механическое напряжение, приложенное к месту их выполнения — по крайней мере, нужно надежно обматывать место соединения изолентой, а еще лучше — защищать термоусадочной кембриковой трубкой. Рис. 3.3. Способы выполнения паяных соединений Рис. 3.4. Способы выполнения скруток
Провода внешних соединений (межплатные или между платой и регулирующим компонентами, установленными на передней панели прибора) в отличие от внутриплатных соединений убирать в аккуратные жгуты как раз следует, так значительно надежнее (следует даже свивать в жгут два провода, если их всего два). Не рекомендуется для этого использовать изоленту (потом очень трудно разобраться, куда что идет), куда лучше применить специальные хомуты или даже вообще без них обойтись — в процессе монтажа завивать на один-два оборота очередной провод вокруг имеющихся (одинаковое количество оборотов для всех проводов в жгуте). Для того чтобы пара скрученных проводов с одним свободным концом со временем самостоятельно не раскручивалась, нужно поступать следующим образом: если сплетаемая пара короткая (в пределах 20—30 см), то следует свивать ее, пропуская между пальцами так, чтобы каждый провод закручивался в отдельности. Если же пара длинная (несколько метров), то нужно отмерить и отрезать пару проводов (обязательно одинакового диаметра и типа) с припуском по длине примерно на 30%. Затем совместно привяжите концы проводов к какой-нибудь жесткой опоре и вытяните их на всю длину. Захватите в каждую руку по проводу и натяните их. Далее следует перехлестывать провода, перехватывая их из одной руки в другую и обязательно натягивая с разводом рук в стороны после каждого витка, что несколько напоминает упражнение из комплекса утренней зарядки. Такой способ позволяет соорудить почти идеальную витую пару (с положенным 1 витком на сантиметр длины), которая гарантирована от раскручивания. Более длинные провода так изящно скрутить не удается. Стандартный способ с использованием электродрели, к сожалению, от постепенного раскручивания не предохраняет — вся "фишка" в том, что при одновременном закручивании в одну сторону провода всегда сохраняют напряжение и постепенно стараются раскрутиться (вы, несомненно, не раз могли наблюдать это на примере провода для обычного телефонного аппарата). Немного о проводах В своем рассмотрении мы ограничимся только кратким, без подробностей, рассмотрением монтажных и обмоточных проводов и только самых употребительных типов, потому что типов проводов очень много. Более подробные сведения о них вы можете найти в справочниках. Для монтажа макетов и для межплатных соединений, если их немного, удобнее всего применять МГТФ — многожильный провод в тефлоновой (полиэтилентерефталатной) оболочке. Он удобен тем, что изоляция у него не плавится, даже если ее непосредственно греть паяльником. Обычный МГТФ розоватого или белого цвета, но есть и высокопрочный МГТФ в черной
изоляции, который еще удобен тем, что у него проводники заранее залужены. Разноцветный МГТФ тоже существует, но, т. к. тефлон окрашивается плохо, цвет ему придают с помощью второй наружной оболочки из лакоткани, что делает его жестким и значительно увеличивает его толщину. Выпускается и экранированный МГТФ — с его помощью удобно протягивать, скажем, внутрикорпусные соединения от входных разъемов к платам в аудио- и измерительной аппаратуре, только экран у него ничем не изолирован и приходится его убирать в кембриковую трубку. Второй самый употребительный тип известен под собирательным названием МГШВ (под этим названием на самом деле имеется много разных похожих типов проводов, но мы не будем на этом останавливаться — продавцы и ваши коллеги всегда поймут, о чем речь). Он имеет полихлорвиниловую изоляцию, внутри которой может быть, а может и не быть дополнительной шелковой намотки. Если намотка имеется, то такой провод годится для прокладки проводников с высоким (220 В) напряжением. Провода без шелка (МГВ) для такой цели употреблять нельзя — если только изоляция специально не утолщена. МГШВ лучше покупать с уже залуженными жилами, т. к. изоляция легко плавится, и лучше провод лишний раз не нагревать. Провода в полиэтиленовой изоляции для монтажа путем пайки употреблять не следует — они жесткие, а полиэтилен очень легко деформируется при нагревании. Провода для намотки трансформаторов называют обмоточными. Подобно МГШВ, они ходят в народе под собирательным названием ПЭЛ или ПЭВ (точнее, ПЭВ-2, что означает двухслойное покрытие лаком). Эти провода имеют покрытие из специального гибкого термостойкого и устойчивого к растворителям лака. Оно достаточно тонкое, так что при измерении диаметра этих проводов микрометром или штангенциркулем толщину покрытия можно не учитывать. Единственное, чего это покрытие "не любит" — слишком маленьких радиусов изгиба, поэтому при использовании обмоточных проводов следует тщательно избегать "колышек" и запутывания в узлы. Так как покрытие термостойкое, то при пайке конец такого провода зачистить с целью облуживания довольно сложно. Это следует делать либо механически (скажем, при помощи тонкой шкурки — но ни в коем случае не ножом и не скальпелем!), либо при помощи народного средства, которое заключается в том, что конец провода кладется на таблетку обыкновенного аспирина и прижимается к ней хорошо разогретым жалом паяльника (после чего конец следует очистить от обгоревших остатков лака). Есть и специальные высоковольтные обмоточные провода (ПЭЛШО), которые покрыты дополнительно слоем шелка (почему-то чаще всего синего цвета).
Два слова о кембриковых трубках, которые применяют для изоляции, например, при пайке разъемов или при необходимости сращивания проводов между собой (имейте в виду, что профессионалы редко употребляют липкую ленту, а всегда пользуются кембриком). Они бывают двух типов: обычные и термоусадочные. У термоусадочных трубок при нагревании до НО—120° диаметр уменьшается примерно вдвое и они становятся жестче, прочно обволакивая место пайки и не давая проводу гнуться и ломаться. Корпуса If Проблема корпусов для радиоаппаратуры не стоит особенно остро — все крупные фирмы, торгующие компонентами, торгуют и различными корпусами, а есть еще и много фирм помельче. Беда тут примерно та же, что и с покупкой, скажем, обуви — вроде ее много на любой вкус и кошелек, да одни ботинки не смотрятся, в других кантик неподходящий, третьи цветом не вышли, четвертые в подъеме жмут... Короче, подобрать под конкретный прибор готовый корпус — задача весьма не простая. Потратив 10—20—30 "баксов" на блестящее заморское изделие, очень не хочется браться за напильник, чтобы доводить его до ума, но приходится — здесь должно быть окно для индикатора, эту стенку вообще надо удалить, ибо тут будет стоять радиатор для мощного транзистора, тут требуются фигурные отверстия под разъемы... Тогда, спрашивается, зачем тратились? А если еще ошибешься, что нередко случается даже с опытными слесарями? В общем, есть простой способ изготовления корпусов в домашних условиях под конкретные нужды, причем если руки на месте, то такие корпуса в готовом изделии будут выглядеть практически не хуже фабричных. Заключается способ в том, что вы сначала рисуете эскизы всех стенок и перегородок, располагаете детали и платы, чтобы они не наезжали друг на друга, выверяете размеры (компьютер дает простор для такого рода творчества), а затем по готовым эскизам переносите размеры на фольгированный стеклотекстолит и вырезаете заготовки. Можно даже все отверстия заранее сделать — удобнее работать с пластинкой, чем с готовой коробкой. Затем, прикладывая заготовки под прямым углом друг к другу, пропаиваете место стыка обычным припоем. Вот тут очень пригодится самый мощный паяльник и упомянутый водорастворимый флюс. Секрета там всего два: первый— надо не забывать давать припуски на толщину материала по нужным сторонам заготовок; второй — иметь в виду, что припой сокращается в объеме при застывании, поэтому пластинки под прямым углом относительно друг друга надо прочно закреплять, иначе угол окажется совсем не прямым, а распаять будет уже очень трудно. Готовый корпус обтягивается самоклеящейся пленкой, например, под дерево. Если делать все аккуратно, получается классно!
В детали этого процесса я вдаваться не буду, ведь мы собрались заниматься схемотехникой, а не дизайном корпусов для радиоаппаратуры — дам еще только два совета. Первый: если у вас в корпусе окно для индикаторов, то его надо делать из дымчатого, а не прозрачного пластика, а все, что за этим окном расположено, кроме, естественно, самих индикаторов (включая плату с проводниками), выкрасить в черный цвет из аэрозольного баллончика — это придаст "фирменности" вашей конструкции. Ужасно выглядят конструкции, в которых через стекло виднеются пайки на печатной плате. Можно к тому же заклеить всю незадействованную поверхность окна изнутри черной липкой лентой. Если следовать этому совету, то можно не выпиливать окна точно по размеру индикатора, что довольно сложно сделать красиво, а выполнить из дымчатого стекла, скажем, всю переднюю панель. Второй совет касается нанесения надписей на переднюю панель. Скажу сразу, наилучший способ — заказать панель с лазерной гравировкой. Но это дорого и хлопотно, потому хочется сделать самому. Ручной способ отвергаем с порога — ничего не может выглядеть кошмарнее, чем надписи, сделанные вручную. Никакие трафареты и гравировальные машинки здесь помочь не могут. Это вообще была одна из самых тяжелых проблем до самого последнего времени и не только для радиолюбителей — даже мелкосерийные приборы на советских заводах выпускались с гравированными вручную надписями. И это было ужасно. К счастью, в последние годы в связи со всеобщей доступностью струйных принтеров проблема качественной печати любым размером шрифта, любым цветом и на любом фоне решена полностью. Делается это на специальной пленке, которая с одной стороны липкая и покрыта защитным слоем, как самоклеящаяся пленка, а с другой имеет специальную пористую фактуру, хорошо удерживающую принтерные чернила. Она довольно дорогая, но десяти листочков вам хватит на всю оставшуюся жизнь, если вы, конечно, не собираетесь налаживать крупносерийное производство. Если же такой пленки под рукой нет, то можно напечатать надписи просто на плотной мелованной бумаге, например, на обратной стороне обложки настенного календаря, а затем приклеить их двусторонним скотчем. Красивее всего выглядят надписи, напечатанные вывороткой, т. е. белым цветом на черном фоне, только не забудьте закрасить белые торцы готовых к наклейке "лейблов" черным фломастером, иначе они будут очень бросаться в глаза. Разумеется, мы не смогли здесь раскрыть и малой доли правил и секретов радиолюбительских технологий. К тому же разные школы радиолюбительского мастерства привыкли к разным технологиям, поэтому автор не претендует в своих советах на абсолютную истину, рекомендуя лишь то, что его никогда не подводило в течение уже более двадцати пяти лет практики в качестве радиолюбителя и профессионала.
Глава 4 Т ригонометрическая электроника. О частотах, периодах, мощности, переменных напряжениях и токах и немного о сигналах И оба во весь опор помчались в сторону столицы. А. Дюма, "Три мушкетера” Электрохимические (гальванические) элементы и аккумуляторы, с которыми мы экспериментировали в главах 7 и 2, являются источниками постоянного напряжения. Определение "постоянное" не означает, что такое напряжение вообще не меняется. Отнюдь — типичный график зависимости напряжения от времени для гальванических элементов разных типов приведен на рис. 4.1 (это т. н. разрядные кривые). Причем зависит оно не только от времени — отдельные пики на графиках относятся к моментам, когда нагрузка отключалась, при этом напряжение элемента скачкообразно росло, а затем при ее подключении снова падало. Этот график, между прочим, хорошо иллюстрирует уже известный нам вывод о том, что наиболее выгодными по соотношению цена/продолжительность работы являются алкалайновые элементы: обычные марганец-цинковые примерно в два раза дешевле, но имеют в три раза меньший срок службы, а единственное преимущество очень дорогих литиевых состоит в том, что их напряжение меньше снижается за все время разряда (зато потом быстро падает до нуля). Итак, постоянное напряжение на деле может быть совсем и не постоянным. В главе 10 мы увидим, что даже для самых лучших источников питания оно обязательно немножко "гуляет" в зависимости от тока нагрузки и ее характера. Что же тогда называть переменным напряжением? Строгого определения, как ни странно, не существует. Часто приводимое в учебниках выражение "напряжение, которое изменяется с течением времени", как видите, прекрасно
А д. А _ / А X з К / . ГЧ I 1 XJ U, В 1,8 1.6 1,4 1.2 1 0.8 0.6 0 5 10 15 20 25 30 35 40 45 t, ч Рис. 4.1. Зависимость напряжения от времени для гальванических элементов типоразмера АА при токе нагрузки 100 мА: 1 — литиевый; 2 — алкалайновый; 3 — марганец-цинковый (По данным И. Подушкина, "Радио", 2, 2004) подходит и к нашим батарейкам1, хотя они являются типичными источниками напряжения постоянного. Поэтому мы договоримся переменными называть такие напряжения или токи, которые изменяются во времени, во-первых, периодически, во-вторых, делают это "сами по себе" без влияния со стороны нагрузки и других внешних причин. Слово "периодически" означает, что, начиная с какого-то момента времени, форма графика такой величины повторяется снова и снова (хотя, возможно, и с некоторыми изменениями). Время повтора называется периодом переменной величины. Как вы хорошо знаете из школьного курса физики, наиболее простым и наглядным примером переменной величины является величина, изменяющаяся во времени по синусоидальному закону. На рис. 4.2 приведен график такой величины в условном масштабе. По оси ординат могут быть отложены как напряжение или ток, так и любой другой физический параметр. Отрезок времени Т есть период изменения, а величина А носит название амплитуды и представляет собой максимальное значение нашей переменной в одном периоде (отметим, что для синусоидального закона минимальное значение — на части графика ниже оси абсцисс — строго равно максимальному). Величина, обратная периоду, обозначается буквой f и носит название частоты (см. формулу на рис. 4.2). 1 Строго говоря, называть гальванические элементы батарейками неправильно — батареей называют источник, составленный из нескольких отдельных элементов. Но так уж повелось в разговорном языке, да потом не всегда точно известно, является ли данный элемент именно элементом или батареей (типичный пример последнего случая — 9-вольтовая батарея типа "Крона").
Для нее придумана специальная единица измерения — хорошо всем знакомый герц (Гц), названный так в честь немецкого физика XIX века Генриха Герца, доказавшего существование радиоволн. Как следует из определения частоты, размерность герца есть единица, деленная на секунду: 1 Гц = 1/1 с. Это просто-напросто означает, что колебание с частотой 1 Гц имеет период повторения ровно 1 секунду. Соответственно, 1 кГц (килогерц) означает, что в одной секунде укладывается тысяча периодов, 1 МГц (мегагерц) — миллион периодов и т. п. Рис. 4.2. График простого синусоидального колебания В дальнейшем под переменной величиной мы будем иметь в виду напряжение (для тока все выглядит аналогично). Математический закон, описывающий поведение синусоидального напряжения ({/) от времени (/), выглядит так: U = А • sin (2Tifi) (1) Здесь л есть хорошо нам знакомое иррациональное число "пи", т. е. отношение длины окружности к диаметру, равное 3,1415... Произведение 2nf носит специальное название "круговая частота" и обозначается буквой со. Физический смысл круговой частоты — величина угла (измеряемого в радианах), пробегаемого нашей синусоидальной кривой за секунду. Так как мы обещали не заниматься радиочастотной техникой, то углубляться в дальнейшие абстракции вроде представления переменных колебаний через комплексные числа, где понятие круговой частоты является ключевым, мы не будем — для практических нужд нам хватит и вышеуказанных наглядных определений обычной частоты через период. А что будет, если график немного подвигать вдоль оси абсцисс? Как видно из рис. 4.3, это равносильно признанию того факта, что в нулевой момент времени наше колебание не равно нулю. На рис. 4.3, например, оно начинается
с максимального значения амплитуды. Соответственно сдвигаются времени, соответствующие целому и половине периода, а в соответствующем уравнении появится еще одна величина, обозначаемая буквой ср, и измеряемая в единицах угла — радианах: U = А • sin (271// + ф) ‘ (2) Рис. 4.3. График синусоидальных колебаний, сдвинутых по фазе на четверть периода Эта величина носит название "фазы". Взятая для одного отдельного колебания, величина фазы выглядит не имеющей особого смысла, т. к. мы всегда можем сместить точку начала отсчета времени так, чтобы привести уравнение к виду (1), а, соответственно, график — к виду рис. 4.2, и при этом ничего не изменится. Однако не то произойдет, если мы имеем два связанных между собой колебания, скажем, напряжения в разных точках одной схемы. В этом случае нам может быть важно, как соотносятся их величины в каждый момент времени, и тогда фаза одного переменного напряжения относительно другого (называемая в этом случае сдвигом или разностью фаз) и будет характеризовать такое соотношение. Для колебаний, представленных на рис. 4.3, сдвиг фаз равен 90° (тт/2 радиан). Именно для наблюдения таких колебаний совместно и предназначен многоканальный или многолучевой осциллограф — в обычном фаза колебания определяется только настройками синхронизации. Интересно, что получится, если мы такие "сдвинутые" колебания суммируем? Не надо думать, что это лишь теоретическое упражнение — суммировать электрические колебания разного вида нам придется довольно часто. Математически это будет выглядеть, как сложение формул 1 и 2: U = А1 • sin (271/10 + А2 sin' (2nf2t + ф) (3)
Обратите внимание, что в общем случае амплитуды и частоты колебаний различны (на рис. 4.3 они одинаковы!). Рис. 4.4. Суммирование колебаний, сдвинутых по фазе на четверть периода: 1 — исходные колебания; 2 — их сумма Чтобы представить себе наглядно результат, надо проделать следующее: скопировать графики на миллиметровку, разделить период колебаний на некоторое количество отрезков и для каждого отрезка сложить величины колебаний (естественно, с учетом знака), а затем провести график по полученным значениям. Еще удобнее проделать то же самое на компьютере: надо написать программу, которая вычисляет значения по формуле (3) и строит соответствующие графики. Конечно, можно и не писать собственную программу, а использовать готовую, скажем, Excel прекрасно умеет проводить подобные операции. Для иллюстрации продемонстрируем, что получится, если сложить два колебания, которые были представлены на рис. 4.3 (результат на рис. 4.4). Я не буду приводить картинки для иных случаев, т. к. интересных комбинаций может быть довольно много, но очень рекомендую потратить время на эти упражнения, потому что результаты могут быть весьма неожиданными и вовсе неочевидными: скажем, при сложении двух синусоидальных колебаний с одинаковой частотой и амплитудой, но со сдвигом фаз в 180° (когда колебания находятся в противофазе), результирующая сумма будет равна нулю на всем протяжении оси времени! А если амплитуды таких колебаний не равны друг другу, то в результате получится такое же колебание, амплитуда которого в каждой точке равна разности амплитуд исходных. Запомним этот факт — он нам пригодится, когда мы будем рассматривать усилители звуковой частоты с обратной связью (см. главу 9). Можно ли проверить на практике это положение? Для этого нам придется немного забежать вперед: потребуется сетевой трансформатор с двумя вто
ричными обмотками. Обмотки эти нужно соединить последовательно так, чтобы конец одной обмотки соединялся с концом другой (как находить начала и концы обмоток трансформатора, будет рассказано в главе 10). В обмотках трансформатора оба напряжения имеют одинаковую частоту и фазу, зависящую от способа их соединения — если соединить так, как указано (конец с концом), то сдвиг фаз составит ровно 180°, т. е. мы воспроизведем условия нашего эксперимента. Теперь осталось только включить трансформатор в сеть и присоединить вольтметр к свободным выводам обмоток (естественно, настроенный для измерения переменного напряжения). Мы получим именно то, что предсказано расчетом: если обмотки одинаковые (т. е. амплитуды напряжений в них одинаковы), то вольтметр не покажет ничего — несмотря на то, что сами напряжения в обмотках могут быть сколь угодно велики! Если же обмотки имеют разное количество витков, то результат измерения будет равен разности напряжений. Комбинируя различные обмотки таким образом, мы можем заставить трансформатор выдавать напряжения, которые в нем вовсе не были предусмотрены! А вот вопрос на засыпку: что показывал вольтметр в предыдущем эксперименте? Ведь измеряемая величина с частотой 50 раз в секунду все время меняется от минимального отрицательного до максимального положительного значения — и тем не менее, вольтметр нам показывал совершенно определенное значение. Для ответа на этот вопрос отвлечемся от колебаний и поговорим еще об одной важнейшей величине, которая характеризует электрический ток: о мощности. Мощность Согласно определению, мощность есть энергия (работа), выделяемая в единицу времени. Единица мощности называется ватт (Вт). По определению, 1 ватт есть такая мощность, при которой за 1 секунду выделяется (или затрачивается — смотря с какой стороны посмотреть) 1 джоуль энергии. Для электрической цепи ее очень просто подсчитать по закону Джоуля-Ленца: N (ватт) = U (вольт) х / (ампер). Эту формулу несложно вывести из определений тока и напряжения (см. главу 1). Действительно, размерность напряжения есть джоуль/кулон, а размерность тока— кулон/секунду. Если их перемножить, то кулоны сокращаются и получаются джоули в секунду — что, согласно определению выше, и есть мощность. Если подставить в формулу выше выражения связи между током и напряжением по закону Ома, то можно вывести еще два часто употребляющихся представления закона Джоуля-Ленца: N = I х R и N = U IR. Обратите внимание на одно важное следствие из этих формул: мощность в цепи пропорциональна квадрату тока и напряжения.
Это означает, что если повысить напряжение на некоем резисторе вдвое, то мощность, выделяющаяся на нем, возрастет вчетверо. Отметьте также, что от сопротивления мощность зависит линейно: если вы при том же источнике питания уменьшите сопротивление вдвое, то мощность в нагрузке также возрастет вдвое. Это именно так, хотя факт, что, согласно закону Ома, ток в цепи увеличится также вдвое, мог бы нас привести к ошибочному выводу, будто в этом случае выделяющаяся мощность возрастет вчетверо. Если вы внимательно проанализируете формулировки закона Джоуля-Ленца, то поймете, где здесь "зарыта собака". В электрических цепях энергия выступает чаще всего в виде тепловой энергии, поэтому электрическая мощность в подавляющем большинстве случаев физически означает количество тепла, которое выделяется в цепи (если в ней нет электромоторов или, скажем, источников света). Вот и ответ на вопрос, который мог бы задать пытливый читатель еще при чтении главы 7: куда расходуется энергия источника питания, гоняющего по цепи ток? Ответ: на нагревание сопротивлений нагрузки, включенных в сеть. И даже если нагрузка представляет собой источник света (лампочку или светодиод), то большая часть энергии все равно уходит в тепло: КПД лампы накаливания (т. е. та часть энергии, которая превращается в свет), как известно, не превышает долей процента (у светодиодов эта величина значительно выше, но и там огромная часть энергии уходит в тепло). Кстати, из этого следует, например, что ваш компьютер последней модели, который потребляет сотни ватт энергии, также всю эту энергию переводит в тепло — за исключением исчезающе малой ее части, которая расходуется на свечение экрана и вращение жесткого диска. Такова цена информации! Если мощность, выделяемая на нагрузке, превысит некоторую допустимую величину, то нагрузка просто сгорит. Поэтому различные типы нагрузок характеризуют предельно допустимой мощностью, которую они могут рассеять без необратимых последствий. Подробнее об этом для разных видов нагрузок мы поговорим в дальнейшем, а сейчас зададимся вопросом: что означает мощность в цепях переменного тока? Что показывал вольтметр Для того чтобы понять смысл этого вопроса, давайте внимательно рассмотрим график синусоидального напряжения на рис. 4.2. В каждый момент времени величина напряжения в нем разная — соответственно, будет разной и величина тока через резистор нагрузки, на который мы подадим такое напряжение. В моменты времени, обозначенные 772 и Т (т. е. кратные половине периода нашего колебания), напряжение на нагрузке вообще будет равно нулю
(ток через резистор не течет), а в промежутках между ними меняется вплоть до некоей максимальной величины, равной амплитудному значению Л. Точно так же будет меняться ток через нагрузку, а следовательно, и выделяемая мощность. Но процесс выделения тепла крайне инерционен — даже такой маленький предмет, как волосок лампочки накаливания, за 1/100 секунды, которые проходят между пиками напряжения в промышленной сети частотой 50 Гц, не успевает заметно остыть. Поэтому нас чаще всего интересует именно средняя мощность за большой промежуток времени. Чему она будет равна? Для того чтобы точно ответить на этот вопрос, нужно брать интегралы: средняя мощность за период есть интеграл по времени от квадрата функции напряжения. Здесь мы приведем только результат: величина средней мощности в цепи переменного тока определяется т. н. действующим значением напряжения (£/ц), которое для синусоидального колебания связано с амплитудным его значением (t/a) следующей формулой2: t/a = Щ -V2. Точно такая же формула справедлива для тока. Когда говорят "переменное напряжение 220 В", то всегда имеется в виду именно действующее значение. При этом амплитудное значение равно примерно 311В, что легко подсчитать, если умножить 220 на корень из двух. Это значение нужно всегда иметь в виду при выборе компонентов для работы в сетях переменного тока. Если взять диод, рассчитанный на 250 В, то он легко может выйти из строя при работе в обычной сети, в которой мгновенное значение превышает 300 В, хотя действующее значение и равно 220 В. А вот для компонентов, использующих эффект нагревания (лампочек, резисторов и т. п.), при расчете допустимой мощности нужно иметь в виду именно действующее значение. Называть действующее значение "средним" неверно, правильно называть его среднеквадратическим (по способу вычисления — через квадрат функции от времени). Но существует и понятие среднего значения, причем не одно, а даже два. Просто "среднее" (строго по смыслу названия) — сумма всех мгновенных значений за период. Так как нижняя часть синусоиды (под осью абсцисс) строго симметрична верхней, то можно даже не брать интегралов, чтобы сообразить, что среднее значение синусоидального напряжения, показанного на рис. 4.2, в точности равно нулю — положительная часть компенсирует отрицательную. Но такая величина малоинформативна, поэтому чаще используют средневыпрямленное (среднеамплитудное) значение, при котором знаки не учитываются (т. е. в интеграл подставляется абсолютная величина напряжения). Эта величина (t/B) связана с амплитудным значением (t/a) по формуле Ua = я • UB/2, т. е. t/a равно примерно 1,57 UB. 2 Вывод этой формулы см. в приложении 3.
АА Рис. 4.5. Графики некоторых колебаний несинусоидальной формы Кстати, для постоянного напряжения и тока действующее, среднее и среднеамплитудное значения совпадают и равны просто величине напряжения (тока). Однако на практике часто встречаются переменные колебания, форма которых отличается и от постоянной величины, и от строго синусоидальной. Осциллограммы некоторых из них показаны на рис. 4.5. Для таких сигналов вышеприведенные соотношения для действующего и среднего значения недействительны! Самый простой случай изображен на рис. 4.5, в — колебание представляет собой синусоиду, но сдвинутую вверх на величину амплитуды. Такой сигнал можно представить как сумму постоянного напряжения величиной А (постоянная составляющая) и переменного синусоидального (переменная составляющая). Соответственно, среднее значение его будет равно А, а действующее А + А/ 41 . Для прямоугольного колебания (рис. 4.5, б) с равными по длительности положительными и отрицательными полуволнами (меандра) соотношения очень просты: действующее = среднеамплитудному = = амплитудному, как и для постоянного тока, а вот среднее значение равно, как и для синуса, нулю. Для случая (рис. 4.5, а), который представляет собой синусоидальное напряжение, пропущенное через двуполупериодный выпрямитель (см. главу 10), действующее и среднеамплитудное значения будут равны соответствующим значениям для синусоиды, а вот среднее будет равно не нулю, а совпадать со среднеамплитудным. Для случая (рис. 4.5, д) указать все эти величины вообще непросто, т. к. они зависят от формы сигнала. Но даже выучив все это, вы все равно не сможете измерять величины напряжений и токов несинусоидальной формы с помощью мультиметра! Не забывайте об этом, как и о том, что для каждого мультиметра есть предельные значения частоты колебаний — если вы включите мультиметр в цепь с иными параметрами, он может показать все что угодно: по распространенному выражению, "погоду на Марсе". Измерительные приборы для переменного
напряжения проградуированы в значениях действующего напряжения, но измеряют они, как правило, среднеамплитудное (по крайней мере, большинство — на подробностях мы не будем сейчас задерживаться). Сообразить, как именно пересчитать показания, далеко не всегда возможно, а для сигналов такого типа, как на рис. 4.5, д, это выливается в сущую головоломку на уровне задач для студентов мехмата. Выручить может осциллограф и знание соотношений, приведенных ранее для сигналов самой распространенной формы, ну а для более сложных вычислять действующие и средние значения нам и не потребуется. Для прямоугольных напряжений, представляющих собой меандр3, подобный рис. 4.5, б, существует еще одна важная характеристика. Никто ведь не запрещает представить себе прямоугольное напряжение, в котором впадины короче или длиннее всплесков. В электронике меандр без дополнительных пояснений означает симметричную форму прямоугольного напряжения, при которой впадины строго равны всплескам по длительности, но, вообще говоря, это необязательно. На рис. 4.6 приведены два примера таких напряжений в сравнении с симметричным меандром. Характеристика соотношений между длительностями частей периода называется скважностью и определяется как отношение длительности всего периода к длительности положительной части (именно так, а не наоборот, т. е. величина скважности всегда больше 1). Для меандра скважность равна 2, для узких коротких импульсов она будет больше 2, для широких — меньше. 3 Меандр — тип геометрического узора с повторяющимися ломаными линиями (по названию извилистой реки Меандр а Малой Азии).
Сигналы Несколько слов о сигналах. Электрический сигнал по смыслу его названия — состояние электрической цепи, которое несет информацию. Различают источники сигналов и их приемники. Так как минимальное количество информации (1 бит) подразумевает, по крайней мере, два различимых состояния (подробнее об этом будет идти речь в главе 19), то и сигнал должен иметь как минимум два состояния. Самый простой сигнал — наличие или отсутствие постоянного напряжения в цепи. Именно такими сигналами обмениваются логические микросхемы. Однако на большое расстояние такой простейший сигнал не передашь — слишком сложно защититься от помех. Из-за них приемник легко может обнаружить наличие сигнала там, где на самом деле всего лишь помеха. Поэтому придумывают разные сложные методы, некоторые из них, например, предусматривают передачу переменного напряжения разной частоты или фазы (именно так устроены модемы). Теория передачи сигналов тесно связана с теорией колебаний — одно только радио чего стоит! Подробнее о разных сигналах мы будем говорить в соответствующих главах, а сейчас нам важно только одно: когда мы говорим о сигналах, то подразумеваем, что соответствующее напряжение или ток не предназначено для совершения иной работы, кроме как заставить сработать приемник. Поэтому соответствующие передаваемые мощности значительно меньше, чем при передаче электроэнергии для совершения полезной работы. Действительно — никто еще не придумал, как питать, скажем, спутники на орбите по радиолучу, а вот информацию передают вполне успешно даже на Марс. В этом и заключается разница между силовыми и сигнальными цепями (если помните, то в предыдущей главе мы даже специально отмечали, что проводники питания на плате следует делать как можно шире). И понимание этого тонкого различия очень пригодится нам в дальнейшем изложении. К слову Кстати, отдельный вопрос — а почему нам вообще надо возиться с переменным током как основой электропитания? Сколько можно было бы сэкономить на трансформаторах и сглаживающих конденсаторах, которые зачастую составляют большую часть габаритов и стоимости схемы! Недаром ненавидящие это дело схемотехники и дизайнеры в последнее время прилепились к выносным блокам питания, встроенным в сетевую вилку — крайне некрасивое решение, которое просто переносит головную боль о габаритах с плеч разработчиков на плечи потребителей, зато позволяет не думать о выпрямителях и прочих трудностях преобразования переменного тока в постоянный.
Дело в том, что никаких других эффективных первичных генераторов электроэнергии (тех, что преобразуют энергию вращения ротора водяной или паровой турбины в электричество на электростанциях), кроме работающих на переменном токе, не придумали. Интересно, что многие линии электропередач в мире делают-таки на постоянном (выпрямленном, т. е. пульсирующем) токе, что позволяет во многом избежать реактивных потерь в проводах, но все же приходится при этом сначала преобразовывать переменный ток в постоянный, а затем производить обратное преобразование, которое куда сложнее — исключительно для того, чтобы состыковать имеющиеся линии электропитания со стандартными. Аналогичная задача, только в меньших масштабах, стоит перед разработчиками источников бесперебойного питания (UPS) — питающий ток из сети нужно преобразовать в постоянный для зарядки низковольтного (12 или 24 вольта) резервного аккумулятора, а в случае пропадания сетевого питания это напряжение аккумулятора следует опять преобразовать к стандартному виду переменного сетевого напряжения (такое преобразование называется инверсией), причем желательно, чтобы форма его была максимально близка к синусоидальной. Приходится поломать голову, чтобы компьютер, питающийся через UPS, не заметил такого перехода!
Глава 5 Электроника без полупроводников. Резисторы, конденсаторы и схемы на их основе Глаза миледи метали такие молнии, что, хотя лорд Винтер был мужчина и стоял вооруженный перед беззащитной женщиной, он почувствовал, как в душе его зашевелился страх. А. Дюма, "Три мушкетера" Резисторы и конденсаторы — основа основ электроники. Эти элементы вместе с индуктивностями относятся к разряду т. н. линейных, потому что ток и напряжение в них зависят друг от друга по линейному закону. Вместе с диодами, стабилитронами, реле и некоторыми другими приборами, которые называются нелинейными элементами, они образуют группу пассивных компонентов, а лампы и транзисторы — активных. Резисторы Резистор — самый распространенный компонент электронных схем. Несмотря на его простоту (в самом деле — это всего-навсего кусок материала с определенным сопротивлением), не существует практически ни одной работоспособной схемы, в которой бы не присутствовали резисторы в том или ином виде. Даже если вы их и специально не ставили, они все равно есть. Скажем, в простейшем случае настольной лампы или карманного фонарика, где вся схема состоит из источника питания (сети или батарейки), выключателя и лампочки, резисторы неявно присутствуют: это и сама лампочка, которая светится, нагреваясь за счет своего высокого сопротивления, и сопротивление проводов, и внутреннее сопротивление источника питания. Все эти элементы могут быть представлены на схеме как резисторы. Причем последние два элемента из перечисленных только мешают, забирая на себя часть полезной мощности, но избавиться от них невозможно, они присутствуют всегда и везде, поэтому их нужно учитывать и стараться свести их влияние к минимуму.
Идеальный источник напряжения имеет нулевое внутреннее сопротивление (а идеальный источник тока, кстати — сопротивление, равное бесконечности. Подумайте почему?). Но в реальности так не происходит. Именно для того чтобы отделить напряжение на выходе реального источника с реальной нагрузкой от теоретически возможного напряжения на нем, физики, склонные ко всяким абстракциям, придумали понятие э.д.с. (электродвижущей силы) — не существующую на деле величину, которую мы здесь употреблять не будем. Зато понятием внутреннего сопротивления будем пользоваться весьма широко. Влияние внутреннего сопротивления батарейки приводит к всплескам напряжения при включении и отключении нагрузки (см. рис. 4.1), причем на весьма существенную величину. Чем мощнее источник питания, тем меньше его внутреннее сопротивление, и тем меньше "просадка" напряжения при подключении нагрузки (подключите лампочку накаливания к батарейкам типа АА и типа D1, и вы сразу почувствуете разницу). Но для снижения внутреннего сопротивления вовсе не обязательно увеличивать мощность источника до бесконечности — к тому же эффекту приводят специальные меры по стабилизации напряжения, с которыми мы познакомимся в главе 10. Если вы, прочитав последние строки, вернетесь к рис. 1.4, то при внимательном его рассмотрении поймете, что, кроме указанных на схеме резисторов R1 и R2, в деле участвуют еще, как минимум, четыре резистора: сопротивление проводов, сопротивление амперметра, сопротивление вольтметра и внутреннее сопротивление источника питания. Для простоты влияние паразитных резисторов обычно игнорируют, считая, что они оказывают исчезающе малое влияние на работу схемы. Однако это не всегда так. Ко всем этим тонкостям мы еще будем возвращаться не раз, а пока рассмотрим резисторы как таковые, т. е. фабрично выпускаемые компоненты электронных схем под таким названием. Они бывают разных типов, размеров и конструкций. Самые часто употребляемые типы — металлопленочные и углеродистые резисторы. Наиболее распространен тип углеродистых резисторов, известный в нашей стране как С1-4. Ранее выпускались металлодиэлектрические резисторы под названием МЛТ, и они довольно часто встречаются до сих пор. МЛТ имеют обычно красный цвет (иногда встречаются и другие цвета), номинальное значение сопротивления написано прямо на них самих, в то время как современные С1-4 маркируются международным цветным кодом. Есть и другие типы резисторов общего назначения. По функциональным свойствам все они практически идентичны. 1 Типы гальванических элементов питания см. в приложении 2.
Читать цветной код — мука мученическая, учитывая особенно, что понятие, скажем, "золотистый" очень часто трактуется производителями весьма вольно, и отличить его от "оранжевого" или "желтого" на фоне, скажем, темносинего цвета может только человек с большим опытом. Проще и быстрее просто измерить сопротивление мультиметром. Тем не менее, для полноты картины в приложении 1 приводится таблица цветных кодов для маркировки резисторов, а также таблицы рядов номинального сопротивления в зависимости от допустимого разброса значений — допуска. Эту таблицу нужно пояснить. У непосвященных может возникнуть вопрос — почему резисторы имеют такие странные номинальные значения: 4,3 кОм или 5,1 кОм? Почему нельзя привязать номиналы к привычным нам "круглым" значениям — 4 или 5 кОм? Все объясняется просто. Возьмем, например, широко распространенные резисторы с 5%-ным допуском и посчитаем резистор 1 кОм за основу ряда. Какой следующий номинал взять? Так как допуск 5%, то в большой партии резисторов в принципе могут встретиться сопротивления во всем диапазоне от 0,95 до 1,05 кОм. Мы, естественно, хотим, чтобы можно было (хотя бы теоретически) найти резистор с любым значением сопротивления. Поэтому следующий номинал, который мы выбираем, будет равен 1,1 кОм — т. к. он тоже имеет 5%-ный допуск, то минимально допустимое значение для него 1,045 кОм и, как мы видим, диапазоны перекрываются. Точно также рассчитываются остальные номиналы вплоть до 9,1 кОм, возможные значения которого перекрываются с допусками от первого значения из следующей декады — 10 кОм. Чем уже допуск, тем больше сопротивлений в ряду. Если мы встретим резистор с номинальным сопротивлением 2,43 кОм, то можем быть уверены, что допуск у него не хуже 1%. Конечно, для малых допусков (вроде 0,01%) ряд получился бы слишком большим, поэтому его ограничивают, и допуски там уже не пересекаются. Забегая вперед, отметим, что те же ряды значений справедливы и для емкости конденсаторов. Осталось научиться вычислять значения сопротивления для всего диапазона выпускаемых промышленностью резисторов — для обычных металлодиэлектрических или углеродистых это значения от 1 Ом до 10 МОм. Как вы уже догадались, в каждой декаде номиналы получаются из табличного ряда значений путем умножения на соответствующую степень десяти. При этом для краткости часто используют условные обозначения для каждого диапазона: R (или Е) обозначает омы, к — килоомы, м — мегомы. Эти буквы могут использоваться вместо десятичной точки: так, запись 1 к2 есть то же самое, что и 1,2 кОм, a 3R3 (или ЗЕЗ)— то же самое, что 3,3 Ом. При обозначении на схемах целые омы в большинстве случаев вообще опускают — именно так мы будем поступать в этой книге, так что имейте в виду, что запись "360" на схеме означает просто 360 Ом.
ЧИП-резисторы для поверхностного монтажа маркируются по-другому: тремя цифрами, первые две из которых есть номинальное значение (без запятой!), а последняя справа степень десяти. Так, надпись 103 означает 10 • 103 = 10 000 Ом, т. е. 10 кОм, а надпись 272 — 2700 Ом, т. е. 2,7 кОм. Забегая вперед, заметим, что на похожих принципах основаны обозначения емкости малогабаритных конденсаторов, только за основу шкалы там приняты пикофарады (10-12Ф), так что надпись 474, скажем, расшифровывается как 47 • 104 • 10~12 = 0,47 • 10-6 фарады или 0,47 мкФ. Обычные резисторы типа С1-4 (как и МЛТ) выпускаются и с 1%-ным разбросом, но в продаже практически встречаются только 5%-ные разновидности. Более точные (прецизионные) резисторы с разбросом в 1% и ниже носят другие наименования и значительно дороже. Дело в том, что простым отбором нельзя добиться того, чтобы номинал резистора укладывался в 1%-ный допуск — температурный коэффициент сопротивления (ТКС) для рядовых резисторов, как мы уже отмечали в главе 1, может составлять 0,1% на каждый градус изменения температуры, а т. к. резисторы при работе греются, то весь наш отбор пойдет насмарку. Поэтому прецизионные резисторы с малыми допусками имеют одновременно и значительно меньший температурный коэффициент. Причем это их качество сохранять номинальное значение в большом диапазоне температур значительно важнее, чем собственно точность номинала: чаще всего нам не столь важно, чтобы, скажем, коэффициент усиления усилителя был равен в точности 3, сколько то, чтобы он не изменялся при изменениях температуры и со временем. Из отечественных прецизионных резисторов наиболее распространен тип С2-29В, которые выпускают с допуском 0,05% и более, при ТКС от 0,0075 до 0,03%/°С. Есть и более точные разновидности, например, проволочные С5-54В при допуске до 0,01% имеют ТКС не более 0,005%/°С, а тип С5-61 с ТКС не более 0,003%/°С встречается даже с допуском 0,005%. Имейте в виду, что проволочные резисторы (типа С5-54В, к примеру) имеют очень узкий диапазон рабочих частот, фактически они предназначены только для постоянного тока. Широко распространены различные типы безвыводных резисторов (и конденсаторов) для поверхностного монтажа (ЧИП-компонентов), однако мы их здесь не будем рассматривать — с функциональной точки зрения они ничем не отличаются от обычных, а для применения в домашних условиях и для макетных работ еще более неудобны, чем микросхемы или транзисторы в "плоском" корпусе (с планарными выводами). Поэтому в этой книге по умолчанию предполагается, что резисторы мы употребляем обычные (с гибкими выводами), однако, если вы захотите какое-то свое изделие тиражировать, можете смело заменять все компоненты на их аналоги для поверхностного монтажа — это позволит сэкономить на габаритах и стоимости изготовления печатной платы.
Два слова о номинальной мощности резисторов. С1-4 и МЛТ выпускаются следующих предельно допустимых мощностей— 0,0625, 0,125, 0,25, 0,5, 1 и 2 Вт, которые отличаются размерами (см. рис. 8.1, вверху). В начале книги вы можете посмотреть, как обозначаются на схемах резисторы разной мощности. Наиболее употребимые — резисторы мощностью 0,125 и 0,25 Вт, которые имеют близкие (а иногда и вовсе одинаковые) размеры, и если обозначение мощности на схеме отсутствует, то обычно имеется в виду именно мощность в 0,125—0,25 Вт. Учтите также, что прецизионные резисторы при той же допустимой мощности имеют больший размер, так С2-29В мощностью 0,25 Вт выглядит как полуваттный МЛТ. В подавляющем большинстве случаев замена на резистор большей мощности может только приветствоваться. Надо учитывать, что резисторы имеют предельно допустимое напряжение, которое также зависит от их размеров — так, для мощностей 0,125 и 0,25 Вт это напряжение не превышает 250 В, поэтому их нельзя употреблять в цепях с сетевым питанием независимо от того, что тепловая мощность может быть и не превышена.. Для цепей, в которых "гуляют" переменные напряжения с действующим напряжением 200 В и выше, минимально допустимая мощность резистора 0,5 Вт. Резисторы мощностью более 2 Вт требуются нечасто, и для таких случаев выпускаются специальные проволочные резисторы, залитые термостойким составом (их часто называют "остеклованные"). Резисторы номиналом меньше, чем 1 Ом, предназначенные обычно для пропускания больших токов, также имеют большие размеры. Переменные резисторы Переменные резисторы отличаются от постоянных наличием третьего вывода — движка, который представляет собой подпружиненный ползунок, который может механически передвигаться по резистивному слою. Соответственно, в одном крайнем положении движка сопротивление между его выводом и одним из выводов резистивного слоя равно нулю, в другом — максимуму, соответствующему номинальному сопротивлению. Так как вывода три, то переменный резистор может подключаться двумя способами: как простой резистор (тогда вывод движка объединяется с одним из крайних выводов) и по схеме потенциометра, когда все три вывода задействованы (оба способа подключения показаны на рис. 5.1). Резисторы по своему предназначению служат для преобразования напряжения в ток и обратно. В соответствии с этим схема обычного включения переменного резистора служит для преобразования напряжения U в ток I, а схема потенциометра (делителя
напряжения) — тока I в напряжение U. Кажется, что в схеме обычного включения не обязательно соединять вывод движка с одним из крайних выводов — если оставить незадействованный крайний вывод висящим "в воздухе", то ничего, в принципе, не изменится. Но это не совсем так. На висящий вывод действуют наводки от "гуляющего" в пространстве электрического поля, в основном, промышленной частоты 50 Гц, и в обычной схеме правильно подключать переменный резистор именно так, как показано справа на рис. 5.1. U По схеме По обычной потенциометра схеме Рис. 5.1. Два способа подключения переменных резисторов Переменные резисторы делятся на собственно переменные (к которым присоединена ручка внешней регулировки) и подстроечные — изменяемые только в процессе настройки схемы путем вращения движка отверткой (см. рис. 8.1, внизу). Переменные резисторы мало изменились за годы своего существования со времен реостата Майкла Фарадея, и всем им присущи одни и те же недостатки: в основном, это нарушение механического контакта между ползунком и резистивным слоем. Особенно это касается дешевых открытых подстроечных резисторов типа СПЗ-1 — представьте себе работу этого резистора, например, в телевизоре, находящемся в атмосфере домашней кухни! Поэтому всегда, если есть возможность, применения переменных резисторов следует избегать или ставить их последовательно с постоянными так, чтобы они составляли только необходимую часть всей величины сопротивления. Подстроечные резисторы хороши на стадии отладки схемы, а затем лучше заменить их на постоянные и предусмотреть на плате возможность подключения параллельных и/или последовательных постоянных резисторов для окончательной подстройки. От переменных резисторов (типа регулятора громкости) вроде бы никуда не денешься, но и это не так: использование аналоговых регуляторов с цифровым управлением на основе АЦП и ЦАП дает отличную альтернативу "переменникам". В крайнем случае, по возможности, используйте многопозиционный ступенчатый переключатель — это гораздо надежнее резистора.
Параллельное и последовательное соединение резисторов Это хотя и довольно простая тема, но очень важная. Следует запомнить всего два правила: при последовательном соединении складываются сопротивления резисторов, а при параллельном складываются их проводимости, которые, по определению из главы 1, есть величины, обратные сопротивлению (см. рис. 5.2). Понять, почему правила именно таковы, можно, если рассмотреть течение токов в обоих случаях: при последовательном соединении ток I через резисторы один и тот же, поэтому падения напряжения на них складываются (U = U\ + U2), что равносильно сложению сопротивлений. При параллельном соединении, наоборот, равны падения напряжений U, а складывать приходится токи (/ = /]+ /2), что равносильно сложению проводимостей. Если вы не поняли вышесказанное, то посидите над рис. 5.2 с карандашом и бумагой и выведите выражения закона Ома для каждого из резисторов — и все станет на свои места. *______и_______ - Ul r|; U2 Ч R1 н~ R2 k I Последовательное соединение резисторов R = R1 + R2 и h Параллельное соединение резисторов 1/R = 1/R1 +1/R2 Рис. 5.2. Последовательное и параллельное соединение резисторов Из этих определений вытекает несколько практических правил, которые полезно заучить. При последовательном соединении: □ сумма двух резисторов имеет сопротивление всегда больше, чем сопротивление резистора с большим номиналом (правило "больше большего"); □ если номиналы резисторов равны, то суммарное сопротивление ровно вдвое больше каждого номинала;
□ если номиналы резисторов различаются во много раз, то общее сопротивление примерно равно большему номиналу (типичный случай упоминался ранее: в примере на рис. 1.4 мы игнорируем сопротивление проводов, т. к. оно много меньше сопротивления резисторов). При параллельном соединении: □ сумма двух резисторов имеет сопротивление всегда меньше, чем сопротивление резистора с меньшим номиналом (правило "меньше меньшего"); □ если номиналы резисторов равны, то суммарное сопротивление ровно вдвое меньше каждого номинала; □ если номиналы резисторов различаются во много раз, то общее сопротивление примерно равно меньшему номиналу. (Это также можно иллюстрировать на примере рис. 1.4, где мы игнорируем наличие вольтметра, включенного параллельно R2, т. к. его сопротивление намного больше сопротивления резистора.) Знание этих правил поможет вам быстро оценивать схему, не занимаясь алгебраическими упражнениями и не прибегая к помощи калькулятора. Даже если соотношение сопротивлений не попадает под перечисленные выше случаи, результат все равно можно оценить "на глаз" с достаточной точностью. При параллельном соединении, которое представляет большую сложность при расчетах, для такой оценки нужно прикинуть, какую долю меньшее сопротивление составляет от их арифметической суммы — приблизительно во столько раз снизится их общее сопротивление по отношению к меньшему. Проверить это легко: пусть сопротивления равны. В этом случае одно сопротивление составляет Уг часть их суммы, т. е. общее сопротивление должно снизиться вдвое, как и есть на самом деле. Возьмем более сложный случай: пусть одно сопротивление имеет номинал 3,3 кОм, второе — 6,8 кОм. В соответствии с изложенным мы будем ожидать, что общее сопротивление должно быть на 30% меньше, чем 3,3 кОм, т. е. 2,2 кОм (3,3 составляет примерно одну треть от суммы 3,3 + 6,8, т. е. общее сопротивление должно быть меньше, чем 3,3 на треть от этого значения, равную 1,1 — в результате и получаем 2,2 кОм). Если мы проверим результат, полученный такой прикидкой в уме, точным расчетом, то мы получим в результате 2,22 кОм, что очень неплохо. В большинстве случаев нам такой точности и не требуется — помните, что сами сопротивления имеют разброс по номиналу, и в большинстве обычных схем допуски на номиналы стандартных компонентов могут быть довольно велики (по крайней мере, в правильно составленных схемах). Если же схема в некоторых случаях должна все же иметь какие-то строго определенные параметры, то с помощью стандартных компонентов вы все равно этого не добьетесь — параметры будут "гулять" (в пределах допусков, естественно)
от дуновения ветерка из форточки, и в таких случаях надо применять прецизионные резисторы и конденсаторы, а во времязадающих цепях использовать кварцевые резонаторы. Но составлять схему так, чтобы она теряла работоспособность от замены резистора 1 кОм на резистор 1,1 кОм — не наш метод! Конденсаторы Все конденсаторы ведут свою родословную от лейденской банки, названной так по имени голландского города Лейдена, в котором трудился ученый середины ХУШвека Питер ван Мушенбрук. Банка эта представляла собой большой стеклянный стакан, обклеенный изнутри и снаружи станиолью (тонкой оловянной фольгой, использовавшейся в те времена для тех же целей, что и современная алюминиевая — металл алюминий еще не был известен). Так как банку (рис. 5.3) заряжали от электростатической машины (другого источника электричества еще не придумали), которая запросто могла выдавать напряжения в несколько сотен тысяч вольт, действие ее было весьма впечатляющим — в учебниках физики любят приводить случай, когда Мушенбрук продемонстрировал эффект от разряда своей банки через цепь гвардейцев, держащихся за руки. Ну не знали тогда, что электричество может и убить, — гвардейцам сильно повезло, что емкость этого примитивного конденсатора была весьма невелика и запасенной энергии хватило только на то, чтобы люди ощутили чувствительный удар током! Рис. 5.3. Прадедушка современных конденсаторов — лейденская банка: 1 — стеклянный стакан, 2 — внешняя обкладка из станиоли, 3 — внутренняя обкладка, 4 — контакт для заряда
Схематическое изображение простейшего конденсатора показано на рис. 5.4. Из формулы, приведенной на рисунке (она носит специальное название "формула плоского конденсатора", потому что для конденсаторов иной геометрии соответствующее выражение будет другим), следует, что емкость тем больше, чем больше площадь пластин и чем меньше расстояние между ними. Что же такое емкость? Согласно определению, емкость есть отношение заряда (в кулонах) к разности потенциалов на пластинах (в вольтах): С ~ QIU, т. е. размерность емкости есть кулон/вольт. Такая единица называется фарадой, по имени знаменитого английского физика и химика Майкла Фарадея (1791—1867). Следует подчеркнуть, что величина емкости есть независимая характеристика данного конденсатора — подобно тому, как номинальное сопротивление есть индивидуальная характеристика конкретного резистора — и характеризует количество энергии, которое может быть в нем запасено. Емкость в одну фараду весьма велика — обычно на практике используют микрофарады и еще более мелкие единицы, скажем, емкость упомянутой лейденской банки составляла величину всего-навсего порядка 1 нФ. с = — 4тс d Рис. 5.4. Схематическое изображение плоского конденсатора и формула для расчета его емкости: С — емкость, Ф, S — площадь пластин, м2, d — расстояние между пластинами, м, е — диэлектрическая проницаемость, Ф/м Смысл понятия емкости раскрывается так: если напряжение от источника напряжения составляет 1 вольт, то емкость в одну нанофараду, как у лейденской банки, может запасти 10 9 кулон электричества. Если напряжение составит 105 вольт (типичная величина при заряде от электростатической машины, как в опытах Мушенбрука), то и запасенный на данной емкости заряд увеличится в той же степени — до 10 4 кулон. То есть любой конденсатор фиксированной емкости сохраняет это соотношение — заряд на нем в любой момент тем больше, чем больше напряжение, а сама величина заряда определя
ется номинальной емкостью. Если замкнуть конденсатор на резистор, то в первый момент он будет работать как источник напряжения с нулевым выходным сопротивлением и номинальным напряжением той величины, до которой конденсатор был заряжен, т. е. ток через резистор определяется по обычному закону Ома. Скажем, в случае гвардейцев Мушенбрука характерное сопротивление цепи из нескольких человек, взявшихся за руки, составляет порядка 104 Ом — т. е. ток при начальном напряжении на конденсаторе 105 В составит 10 А, что примерно в 10 000 раз превышает смертельное для человека значение тока! Выручило гвардейцев то, что такой импульс был крайне кратковременным — по мере разряда конденсатора, т. е. утекания заряда с пластин, напряжение быстро снижается — емкость-то остается неизменной, поэтому при снижении заряда, согласно формуле на рис. 5.4, падает и напряжение. Интересно, что при фиксированном заряде (если цепь нагрузки конденсатора отсутствует), можно изменить напряжение на нем, меняя емкость, например, при раздвижении пластин плоского конденсатора емкость его падает (т. к. расстояние d между пластинами увеличивается), поэтому для сохранения заряда напряжение должно увеличиться, что и происходит на деле (в эффектном школьном опыте между раздвигаемыми пластинами конденсатора проскакивает искра, когда напряжение превышает предельно допустимое напряжение пробоя для воздуха). Рис. 5.5. Подключение конденсатора к нагрузке: К — переключатель, Б — батарея, С — конденсатор, R — сопротивление нагрузки На рис. 5.5 изображено подключение конденсатора С к нагрузке R. Первоначально переключатель К ставят в нижнее по схеме положение, и конденсатор заряжается до напряжения батареи Б. При переводе переключателя в верхнее положение конденсатор начинает разряжаться через сопротивление R, и напряжение на нем снижается. Насколько быстро происходит падение напряжения при подключении нагрузки? Можно предположить, что чем больше емкость конденсатора и сопротивление резистора нагрузки, тем медленнее происходит падение напряжения. Правда ли это? Это легко попробовать оценить через размерности связанных между собой электрических величин: тока,
емкости и напряжения. В самом деле, в определение тока входит и время (напомним, что ток есть заряд, протекающий за единицу времени), и это время должно быть тем самым временем, которое нас интересует. Если вспомнить, что размерность емкости есть кулоны на вольт, то искомое время можно попробовать описать формулой: t = CUH, где С — емкость, a U и I — ток и напряжение соответственно (проверьте размерность’.). Для случая рис. 5.5 эта формула справедлива на малых отрезках времени, пока ток I не падает значительно из-за уменьшения напряжения на нагрузке. Отметим, что формула эта полностью справедлива и на больших отрезках времени, если ток разряда (или заряда) конденсатора стабилизировать, что означает подключение его к источнику втекающего (при разряде) или вытекающего (при заряде) тока. При фиксированной обычной нагрузке с сопротивлением R (помните, мы говорили, что простой резистор есть плохой источник тока?) так, конечно, не происходит — напряжение на конденсаторе падает по мере истощения заряда, соответственно, ток через нагрузку также пропорционально снижается в полном соответствии с законом Ома. Опять приходится брать интегралы, поэтому мы приведем только конечный результат: формула для расчета процесса снижения напряжения на емкости при разряде ее через резистор и соответствующий график показан на рис. 5.6, а. А на рис. 5.6, б показан аналогичный процесс, который происходит при заряде емкости через резистор. Нужно отметить два момента: во-первых, процесс разряда по рис. 5.6, а бесконечен (полностью конденсатор не разрядится никогда, если сопротивление нагрузки не равно нулю), но практически это не имеет значения, потому что напряжение на конденсаторе становится исчезающе малым очень скоро. Во-вторых, из формул на рис. 5.6 следует очень интересный вывод: если сопротивление R равно нулю, то время процесса разряда или заряда становится бесконечно малым, а ток через нагрузку — по закону Ома — бесконечно большим! Обратимся снова к рис. 5.5. Нечто подобное должно происходить при переключении К в положение заряда емкости от батареи. Естественно, в реальной жизни ни о каких бесконечных токах речи не идет — для этого батарея должна иметь нулевое выходное сопротивление, т. е. бесконечно большую мощность (подумайте, почему эти утверждения равносильны?). Да и проводники должны обладать нулевым сопротивлением. Поэтому на практике процесс заряда от источника (и разряда при коротком замыкании пластин) происходит за малое, но конечное время, а ток, хоть и не бесконечно велик, но все же может достигать очень больших значений. Потому-то источники питания с отключением по превышению максимально допустимого тока (см. главу 2) могут выключаться при работе на нагрузку с конденсатором большой емкости, установленным параллельно источнику питания (мы дальше увидим, что такой конденсатор устанавливают практически всегда),
хотя ток в рабочем режиме может быть и невелик. Один из методов борьбы с этой напастью — включение последовательно с нагрузкой небольшого резистора, ограничивающего ток в начальный момент. Как рассчитать необходимый номинал? Для этого нужно представить, что конденсатор при заряде в первый момент ведет себя так, как будто цепь в месте его установки замкнута накоротко (это очень точное представление!). Тогда нужный номинал резистора определится просто по закону Ома, в который подставляется предельно допустимый ток источника и его напряжение. U (t) = и0 e-t/RC U (t) = Uo- Uoe-t/RC a 6 Рис. 5.6. Процессы при разряде и заряде конденсатора: С — емкость, R — сопротивление нагрузки, t— время, е — основание натуральных логарифмов (2,718282) Интуитивно кажется, что должна существовать какая-то характеристика цепи, состоящей из конденсатора и сопротивления, которая позволяла бы описать процесс заряда-разряда во времени независимо от напряжения на конденсаторе. Такая характеристика рассчитывается по формуле Т = RC. Приведением единиц мы бы здесь занимались довольно долго, потому поверьте, что размерность произведения RC есть именно время в секундах. Эта величина, которая носит название "постоянная времени RC-цепи", физически означает время, за которое напряжение на конденсаторе при разряде его через резистор (рис. 5.6, а) снижается на величину 0,63 от начального (т. е. до величины, равной доле 1/е от первоначального Uq, что и составляет примерно 37%). За следующий отрезок времени, равный RC, напряжение снизится еще на столько же от оставшегося и т. п. — в полном соответствии с законом экспоненты. Аналогично при заряде конденсатора (рис. 5.6, б), постоянная времени Т означает время, за которое напряжение увеличится до доли (1 - 1/е) до конечного значения Uq. т. е. до 63%. Дальше мы увидим, что произведение RC играет огромную роль при расчетах различных схем. Есть еще одна вещь, которая следует из формулы для плоского конденсатора (см. рис. 5.4). В самом деле, там нет никаких ограничений на величины S
nd — даже если развести пластины очень далеко, все же какую-то емкость, хоть небольшую, конденсатор будет иметь. То же происходит при уменьшении площади пластин. Практически это означает, что небольшую емкость между собой имеют любые два проводника независимо от их конфигурации и размеров, хотя эти емкости могут быть и исчезающе малы. Этот факт имеет огромное значение на высоких частотах. В радиочастотной технике нередко конденсаторы образуют прямо из дорожек на печатной плате. А емкости между параллельными проводами в обычном проводе-"лапше" или кабеле могут достигать и весьма больших значений ввиду их большой длины. В большинстве случаев этот эффект весьма вреден, поэтому такие емкости называют паразитными. Если же учесть, что проводники имеют еще и собственное сопротивление, то мы приходим к выводу, что любую пару проводов можно представить в виде "размазанной" по длине (распределенной) RC-цепи — и это действительно так, со всеми вытекающими последствиями! Если подать на вход пары проводников в длинном кабеле перепад напряжения (фронт прямоугольного импульса), то на выходе мы получим картину, которая ничем не отличается от рис. 5.6, б — импульс "размажется", а если он короткий, то вообще может пропасть. Мало того, провода обладают еще и собственной индуктивностью (об индуктивности мы поговорим в конце главы), что еще более запутывает картину. Крайне неприятное явление, но "такова се ля ви", как любил выражаться один мой знакомый инженер! Впервые с этим делом столкнулись еще при попытке прокладки первого трансатлантического кабеля в 1857 г. Телеграфные сигналы (точки-тире) представляют собой именно такие прямоугольные импульсы, и при длине кабеля в 4000 км они по дороге искажались до неузнаваемости. За время до следующей попытки прокладки кабеля (1865 г.) английскому физику У. Томпсону пришлось разработать теорию передачи сигналов по длинным линиям, за что он получил рыцарство от королевы Виктории и вошел в историю под именем лорда Кельвина по названию городка Кельвин на западном побережье Ирландии, откуда начиналась прокладка кабеля. В выражении для емкости на рис. 5.4 фигурирует постоянная е, представляющая собой диэлектрическую проницаемость среды. Для воздуха и большинства обычных изолирующих материалов (полиэтилена, хлорвинила, лавсана, фторопласта) константа е близка к величине ее для полного вакуума (во)-Величина Eq зависит от применяемой системы единиц измерения, и в между-—12 народной системе единиц измерения СИ равна 8,854 • 10 Ф/м. На практике удобно применять относительную диэлектрическую проницаемость конкретного материала: ег = e/Eq. Естественно, что для практических нужд производителей конденсаторов желательно, чтобы величина ег была как можно выше — если вы заполните промежуток между пластинами, скажем, ацетоном
или спиртом, то емкость такого конденсатора сразу возрастет раз в двадцать! К сожалению, чем выше ег, тем обычно выше и собственная проводимость материала, поэтому такой конденсатор быстро разрядится за счет собственных токов утечки через среду между пластинами. Ясно, что производители конденсаторов стараются упаковать как можно большую емкость в как можно меньшие размеры, пытаясь одновременно обеспечить токи утечки на приемлемом уровне. По этой причине количество практически используемых типов конденсаторов значительно больше, чем сопротивлений — для каждого применения свой тип. Причем надо учесть, что чем тоньше прослойка диэлектрика между пластинами, тем меньше предельно допустимое напряжение (т. е. напряжение, при котором наступает электрический' пробой и конденсатор выходит из строя). Самым высоким соотношением емкость/габариты обладают электролитические (оксидные) конденсаторы, которые в настоящее время представлены серией, широко известной под отечественным наименованием К50-35 (импортные конденсаторы такого же типа обычно тоже продают под этим названием). Емкости их достигают 100 000 мкФ, а допустимые напряжения — до 600 В, но у них есть три главных недостатка, которыми приходится платить за повышенную емкость. Первый и самый главный — эти конденсаторы полярны, т. е. подразумевают включение только в определенной ориентации по отношению к полярности источника питания. Обычно на корпусе таких конденсаторов обозначается либо отрицательный (жирным "минусом") либо положительный (знаком "плюс") вывод, если же габариты корпуса не позволяют применить обозначение (либо производителям лень налаживать соответствующую полиграфию), то это дело пытаются обозначить толщиной или длиной вывода: более длинный и/или более толстый вывод обычно обозначает положительный контакт (но не всегда!). Если вы попробуете включить такой электролитический конденсатор в противоположной полярности, то он может просто взорваться, забрызгав электролитом всю остальную схему. Есть и другие, более дорогие типы полярных конденсаторов (например, танталовые К52 или ниобиевые К53), которые обладают значительно меньшими токами утечки. Все эти типы конденсаторов обычно используют в качестве фильтров в источниках питания, хотя и иные применения не исключены. Следует учесть и вторую дурную особенность "электролитов" (как их называют на инженерном жаргоне, и как мы будем называть их в дальнейшем) — они обеспечивают номинальную емкость только на низких частотах. При быстром перезаряде их емкость существенно снижается, поэтому в фильтрах источников питания рекомендуется параллельно ставить неполярные (керамические или иные) конденсаторы в целях лучшей защиты от высокочастотных
помех2. Эта особенность связана с третьим паразитным свойством электролитов: эффектом "аккумулятора" (или "накопления заряда"). То есть, если вы полностью разрядите электролитический конденсатор (например, коротким замыканием выводов), через некоторое время напряжение на выводах опять восстановится до некоторого значения (обычно небольшого — около 1—1,5 В). Чтобы этот заряд полностью рассосался, требуется довольно значительное время (часы или даже сутки). Этот эффект тем сильнее, чем больше емкость и выше допустимое напряжение электролита. Имеют электролиты и высокий заводской разброс номинального значения — до нескольких десятков процентов. По этим причинам полярные конденсаторы не рекомендуется употреблять во время-задающих цепях, если требуется хоть какая-то точность. Для использования в других областях применяют конденсаторы с неполярным диэлектриком: бумажные, слюдяные, керамические, полиэтилентерефталатные (лавсановые) или фторопластовые (тефлоновые). Емкость их (в соотношении емкость/габариты) значительно меньше, и номинальная емкость обычно не превышает нескольких микрофарад (сравнительные размеры конденсаторов см. на рис. 8.2). У старинных металлобумажных конденсаторов (типа МБГ или МБГЧ) есть интересная особенность — они могут самовос-станавливаться после пробоя. Но чаще всего сейчас употребляются неполярные конденсаторы с керамическим или органическим диэлектриком (типы К10, К73 и другие), и под неполярными мы будем понимать конденсаторы этих серий. Именно они обеспечивают наиболее точное соответствие теоретической кривой заряда-разряда (см. рис. 5.6). Причем при применении в точных времязадающих цепях рекомендуется не просто выбирать конденсатор с подходящим изолятором (лучше всего тефлоновый или старинный слюдяной), но и с как можно большим допустимым напряжением (ничего особенного нет в применении конденсатора с номинальным допустимым напряжением 630 В в цепях с напряжением 12 В). К тому, что было сказано про условные обозначения, нужно добавить, что т. к. емкости обычно употребляемых конденсаторов находятся в пределах от пико- до микрофарад, то при обозначении на схемах единицу измерения Ф часто опускают и пишут просто "мк" (мкФ), "н" или "п" (нФ), "п" или "р" (пФ). Пикофарады (подобно омам) могут и не писать вообще. Часто микрофарады обозначаются просто лишним десятичным знаком (мы именно так и будем поступать). Например, запись 100,0 означает 100 мкФ, в то время как просто 100 — 100 пФ. 2 На самом деле эти конденсаторы лучше ставить не в источнике питания, а непосредственно вблизи выводов компонента, для которого высокочастотные помехи критичны. На практике так и поступают.
Параллельное и последовательное включение конденсаторов Как и резисторы, конденсаторы можно включать последовательно или параллельно, однако расчет полученных величин производится ровно противоположно правилам для резисторов: при параллельном соединении емкости складываются (по правилу "больше большего"), а при последовательном соединении складываются их обратные величины (правило "меньше меньшего"). К счастью, в отличие от резисторов, конденсаторы включают практически только параллельно — можно это представить так, как будто площади их пластин при этом складываются, следовательно, складываются и емкости. Последовательное же соединение емкостей само по себе не имеет практического смысла, и знание правил сложения для него необходимо лишь изредка при анализе цепей переменного тока. Конденсаторы в цепи переменного тока Из этой большой темы мы здесь рассмотрим только самое необходимое. В дальнейшем мы будем иметь дело, в основном, с цепями постоянного тока или низкой частоты, и нам углубленное изучение поведения компонентов при высокой частоте не потребуется. В предыдущей фразе слова "низкой частоты" нужно понимать условно, и вот почему: любой перепад напряжения (например, при включении или выключении питания) есть импульс высокой частоты, и тем она выше, чем быстрее происходит сам процесс снижения или повышения напряжения. Если представить себе фронт импульса постоянного тока как сумму гармонических (т. е. синусоидальных) колебаний3, то импульс этот предстанет перед нами, как сумма колебаний, начиная сверху с той частоты, при которой происходило бы наблюдающееся нами на деле нарастание (или спад) напряжения импульса, если бы сигнал был чисто гармонический. То есть, если импульс строго прямоугольный, то эта самая верхняя частота должна быть равна бесконечности, чего на деле, конечно, не бывает, и реальные импульсы всегда не строго прямоугольны. Прохождение прямоугольных импульсов через конденсаторы и резисторы мы рассмотрим далее, а пока обратимся к поведению конденсаторов в цепях с обычным синусоидальным переменным током. Постоянный ток конденсатор не пропускает по определению, т. к. представляет собой разрыв в цепи. Однако переменный ток через него протекает — при этом 3 Любое колебание можно представить в виде такой суммы, согласно теореме Фурье (великого французского математика, работавшего еще в конце XVIII века). Возможен и обратный процесс — воспроизведение изначальной формы колебания через известную сумму гармоник.
происходит постоянный перезаряд конденсатора, т. к. напряжение все время изменяется по величине и полярности. Поэтому конденсатор в цепи переменного тока можно представить себе как некое сопротивление — чем ниже емкость конденсатора и чем ниже частота, тем выше величина этого условного сопротивления. Ее можно подсчитать по формуле R = J/2nfC (если емкость С выражена в фарадах, а частота/в герцах, сопротивление получится в омах). В пределе конденсатор очень малой емкости (что представляют собой, как мы уже выяснили, почти все пары проводников на свете) будет выглядеть как полный разрыв в цепи, ток в которой будет исчезающе мал. Сам по себе конденсатор в такой цепи энергии не потребляет (в отличие от обычного резистора), поэтому его сопротивление переменному току называют еще реактивным, в то время как обычное резистивное сопротивление называют активным. Понять, почему так происходит, можно, если нарисовать графики тока и напряжения в цепи с конденсатором. Ток опережает напряжение по фазе ровно на 90°, поэтому их произведение, которое и есть потребляемая мощность по закону Джоуля — Ленца, в среднем равно нулю — можете проверить! Однако если в цепи присутствуют еще и обычные резисторы (а, как мы знаем, они всегда присутствуют — взять хотя бы сопротивление проводов), то этот реактивный ток приведет ко вполне материальным потерям на их нагревание— именно поэтому (см. главу 4) линии электропередач выгоднее делать на постоянном токе. Дифференцирующие и интегрирующие цепи Если подать на вход цепи, состоящей из резистора R и конденсатора С, прямоугольный импульс напряжения, то результат будет различным в зависимости от включения R и С. Переходные процессы в таких цепях подчиняются основным закономерностям, представленным на рис. 5.6, но имеют и свою специфику. На рис. 5.7 показаны два способа включения RC-цепочки в цепь с наличием прямоугольных импульсов на входе (здесь они не такие, как на рис. 4.6, б, а однополярные, т. е. напряжение меняется по величине, но остается выше уровня "земли"). Такое включение называется дифференцирующей цепочкой или фильтром высоких частот, потому что оно пропускает высокочастотные составляющие, полностью отрезая постоянный ток. Чем больше постоянная времени RC в этой схеме, тем ниже частота, которая может быть пропущена без изменений — в пределе импульсы пройдут почти неизмененными. Наоборот, если постоянную времени уменьшать, то пики на графике будут все больше утончаться. Этим эффектом пользуются для выделения фронтов и спадов прямоугольных импульсов (см. главу 23).
Рис. 5.7. Дифференцирующие цепочки: а — при подключении резистора к нулевому потенциалу; б — к потенциалу источника питания Так как через эти схемы постоянная составляющая напряжения не проходит, то полученные импульсы привязаны к выходному потенциалу схемы в зависимости от того, куда подключен резистор. Например, на графиках 5.7 резистор подключен либо к "земле" (рис.5.7, а), либо к источнику питания (рис. 5.7, б), поэтому и для выходного напряжения базовым будет либо нулевой потенциал, либо потенциал источника (при этом амплитуда импульсов будет такой, как у входного напряжения). Но, в принципе, вы можете подключать резистор на выходе такой схемы к любому потенциалу: она все равно передаст только переменную составляющую (мы еще с этим столкнемся при конструировании звукового усилителя). Этим широко пользуются при необходимости формирования двуполярного напряжения из имеющегося однополярного или для умножения напряжения. Иногда этот эффект вреден — подачей отрицательного или превышающего потенциал источника питания напряжения можно вывести из строя компоненты схемы (о защите от этого см. главы 12 и 23). А интегрирующая цепочка (фильтр нижних частот) получается из схем рис. 5.7, если в них R и С поменять местами. График выходного напряжения будет соответствовать рис. 5.8. Такие цепочки, наоборот, пропускают постоянную составляющую, в то время как высокие частоты будут отрезаться. Если в такой цепочке увеличивать постоянную времени RC, то график будет становиться все более плоским — в пределе пройдет только постоянная
составляющая (которая здесь равна среднему значению исходного напряжения, т. е. ровно половине его амплитуды). Этим широко пользуются при конструировании вторичных источников питания, в которых нужно отфильтровать переменную составляющую сетевого напряжения (см. главу 10). Интегрирующими свойствами обладает и обычный кабель из пары проводов, о котором мы упоминали ранее, потому-то и теряются высокие частоты при прохождении сигнала через него. Индуктивности Таким же свойством реактивного сопротивления в цепи переменного тока обладают индуктивности, хотя они по всему противоположны конденсаторам. Мы не будем здесь рассматривать индуктивности подробно по одной простой причине — в обычной схемотехнике (кроме радиочастотной — а в настоящее время уже и там) индуктивностей стараются избегать (за исключением трансформаторов и еще разве что фильтров для защиты от помех). Простейшая индуктивность — катушка из провода, а если его намотать на основу из ферромагнитного материала, то индуктивные свойства катушки значительно улучшатся. Индуктивности очень сложно делать автоматизированным способом, кроме самых простых (не говоря о включении в состав микросхем), и это одна из причин того, почему их стараются не использовать в массовой аппаратуре. Если конденсатор для постоянного тока представляет собой разрыв цепи, то индуктивность, наоборот — нулевое сопротивление. А с ростом частоты
переменного тока реактивное сопротивление индуктивности растет (у конденсатора, напомним, падает). Так как мы уже знаем, что любой перепад напряжения есть импульс высокой частоты, то попытка разорвать (или наоборот, соединить) цепь, содержащую индуктивность, приводит к неожиданным последствиям. Из физики известно, что за счет самоиндукции ток продолжает некоторое время течь в витках индуктивности, а т. к. сопротивление становится велико, то на индуктивности возникает большой (тем больший, чем больше величина индуктивности и чем меньше ее активное сопротивление, т. е. чем она ближе к идеалу) выброс напряжения. Этот эффект приводит к выбросам напряжения на фронтах прямоугольных импульсов в схемах с использованием быстродействующих компонентов. Мы еще вспомним об этом явлении, когда будем говорить о реле в главе 7. Ток в цепи, содержащей индуктивность, отстает от напряжения на 90° (для конденсатора ток, наоборот, опережает напряжение), но результат оказывается аналогичным: чистая индуктивность не потребляет энергии в цепи переменного тока. Для того чтобы получить такой эффект, активное сопротивление индуктивности (т. е. ее сопротивление постоянному току) должно быть как можно ближе к нулю, что на практике достичь довольно сложно. Это другая причина того, что индуктивности очень не любят — их характеристики гораздо дальше от идеала, чем для резисторов и конденсаторов. Но надо помнить, что любой проводник всегда наделен этими тремя свойствами: в небольшой степени является и резистором, и конденсатором, и индуктивностью. Эти мелочи могут иногда сыграть довольно неожиданную роль в разных схемах. В силу указанных причин при наличии реактивной нагрузки в цепи переменного тока полезная мощность (в нагрузке) может отличаться от величины произведения потребляемого тока на напряжение — она всегда меньше. Поэтому иногда различают мощность, выраженную в вольт-амперах, и мощность в ваттах, а отношение их называют коэффициентом мощности. Другое его общепринятое название — "косинус фи", потому что коэффициент мощности есть не что иное, как соэ(ф), где ф есть угол фазового сдвига тока относительно напряжения. При постоянном токе, а также в случае чисто активной нагрузки, угол этот равен нулю, поэтому косинус равен 1. В другом предельном случае, когда нагрузка чисто реактивная, — косинус равен 0. В реальных цепях с электродвигателями или, скажем, мощными вторичными импульсными источниками питания (офис с большим количеством компьютеров) в качестве потребителей, коэффициент мощности может лежать в пределах 0,60—0,95. Следует подчеркнуть, что коэффициент мощности — это не КПД, как можно себе вообразить. Разница между вольт-амперами и ваттами никуда не теряется в физическом смысле, она всего лишь приводит к таким неприятным последствиям, как увеличение потерь в проводах, о котором мы упоминали выше (оно пропорционально именно вольт-амперам), а также возникновению разбаланса между фазами трехфазной промышленной сети, в результате чего через нулевой, обычно более тонкий, чем все остальные, провод начинают протекать значительные токи.
Глава 6 Изобретение, которое потрясло мир. Диоды, транзисторы и простейшие схемы на их основе Не имея намерения подробно описывать осаду и приводя лишь те события, которые имеют непосредственную связь с рассказываемой нами историей, скажем вкратце, что предприятие удалось. А. Дюма, "Три мушкетера” Казалось бы, все так просто: есть очень хорошие проводники (металлы), есть очень плохие — изоляторы (фарфор или пластмасса), а есть — полупроводники. Подумаешь! Причем полупроводников на свете гораздо больше, чем первых и вторых, что, если подумать, представляется естественным. Однако когда научились получать очень чистые полупроводники со строго дозированными определенными примесями, то оказалось, что это — революция. Потому что такой способ позволяет получить материалы с совершенно необыкновенными электрическими характеристиками. Электроника на основе полупроводников носит еще название твердотельной. Полупроводниковые приборы делают на основе разных материалов, в основном, кремния. Первым промышленным полупроводником стал германий (а до него еще существовали купроксные и селеновые диоды), но сейчас он практически не употребляется, и только небольшая часть полупроводниковых компонентов, например, светодиоды, делается из материалов, отличных от кремния. Из всех полупроводниковых устройств исторически первыми были диоды. Диоды Диод — устройство вовсе не обязательно полупроводниковое, были и ламповые диоды, но они давно вымерли как класс, поэтому мы будем рассматривать только твердотельные.
В одну сторону диод ток проводит (т. е. представляет собой в идеале просто проводник с малым сопротивлением), в другую — нет (т. е. превращается в очень большое сопротивление), одним словом, обладает односторонней проводимостью. Соответственно выводов у него всего два. Они, как повелось еще со времен ламповой техники, называются анодом (положительным выводом) и катодом (отрицательным). Если подключить диод к регулируемому источнику напряжения, то он будет вести себя как показано на рис. 6.1, где представлена т. н. вольтамперная характеристика диода. Из нее, в частности, следует, что в прямом включении (т. е. анодом к плюсу источника), после превышения некоторого напряжения (t/д), прямой ток через диод (/пр) растет неограниченно и будет лимитироваться только мощностью источника. В обратном же включении (катодом к плюсу), ток через диод (7^) пренебрежимо мал и составляет несколько микро- или даже наноампер для обычных маломощных диодов, или до единиц миллиампер для мощных выпрямительных. Причем для германиевых диодов обратный ток намного выше, чем для кремниевых, отчего их сейчас практически и не употребляют. Этот ток сильно зависит от температуры и может возрасти на несколько порядков (от нано- до микроампер) при повышении температуры от-50 до +50 °C, поэтому на графике его величина показана очень приблизительно (обратите внимание, что для наглядности верхняя и нижняя половины графика по оси токов построены в разных масштабах). Рис. 6.1. Вольтамперная характеристика диода В отличие от обратного тока, прямое падение напряжения С/д гораздо меньше зависит как от типа и конструкции, так и от температуры. Для кремниевых
Изобретение, которое потрясло мир. Диоды, транзисторы и простейшие схемы на их основе 87 диодов прямое падение напряжения ид всегда можно считать равным примерно 0,6—0,7 В, для германиевых и так называемых диодов Шоттки — порядка 0,2—0,4 В. Для кремниевых диодов при изменении температуры С/д падает примерно на 2,3 мВ на один градус. Если умножить указанное прямое падение напряжения на проходящий через диод в прямом включении ток, то мы получим тепловую мощность, которая выделяется на диоде. Именно она приводит диоды к выходу из строя — при превышении допустимого тока они просто сгорают. Впрочем, тепловые процессы инерционны, и в справочниках указывается обычно среднее значение допустимого тока, а мгновенное значение тока в зависимости от длительности импульса может превышать предельно допустимое в сотни раз! Обычное значение среднего предельно допустимого тока через маломощные диоды — десятки и сотни миллиампер. Мощные диоды (при токах 3—5 А и выше) часто приходится устанавливать на радиаторы. Другая характеристика диодов — предельно допустимое обратное напряжение. Если оно превышено, то диоды также выходят из строя — электрически пробиваются и замыкаются накоротко. Обычная допустимая величина обратного напряжения для маломощных диодов — десятки вольт, для выпрямительных диодов — сотни вольт, но есть диоды, которые выдерживают и десятки тысяч вольт. Далее мы увидим, что существуют и диоды, для которых пробой в обратном включении является рабочим режимом — они называются стабилитронами. Физически диод состоит из небольшого кристаллика полупроводникового материала, в котором в процессе производства формируются две зоны с разными проводимостями, называемыми проводимостью п- и p-типа. Ток всегда течет от направления p-зоны к направлению n-зоне, в обратном направлении диод заперт. Более подробные сведения о физике процессов, происходящих в р-п-переходе, излагаются во множестве пособий, включая школьные учебники, но для практической деятельности почти не требуются. Транзисторы Транзистор — это электронный полупроводниковый прибор, предназначенный для усиления сигналов. Первым таким прибором в истории была электронная лампа (а еще до нее — электромагнитные реле, которые мы рассмотрим в главе 7, но они умеют усиливать только скачкообразные сигналы, тогда как лампа и транзистор могут и любые другие, например, синусоидальные). Лампа сумела сделать немало: именно в ламповую эпоху возникли радио и телевидение, компьютеры и звукозапись. Но только транзистор и возникшие на его основе микросхемы сумели действительно перевернуть мир,
когда электронные устройства вошли в наш повседневный быт так, что мы теперь уже и не мыслим себя без них. Транзисторы делятся на биполярные и полевые (или униполярные). Пока мы будем говорить только о биполярных транзисторах. +ип -Un Рис. 6.2. Биполярный транзистор: а — рабочие полярности напряжений и направления токов в п-р-п-транзисторе (к — коллектор, б — база, э — эмиттер); б — условное представление транзистора как состоящего из двух диодов Физически биполярный транзистор состоит из трех слоев полупроводника, разделенных двумя р-п-переходами. Поэтому можно себе представить, что он состоит как бы из двух диодов, один из слоев у которых общий, и это представление весьма близко к действительности! Скомбинировать два диода можно, сложив их либо анодами, либо катодами, соответственно, различают п-p-n- и р-п-р-транзисторы. Различаются эти разновидности только полярностями соответствующих напряжений, поэтому, чтобы заменить п-p-n- на аналогичный р-п-р, надо просто поменять знаки напряжений во всей схеме на противоположные (все полярные компоненты — диоды, электролиты — естественно, тоже надо перевернуть). Транзисторов п-р-п-типа выпускается гораздо больше, и употребляются они чаще, поэтому мы пока что будем вести речь исключительно о них, но надо помнить, что все сказанное справедливо и для р-п-р, с учетом обратной полярности. Правильные полярности и направления токов для п-р-п-транзистора показаны на рис. 6.2. Первый в истории транзистор был построен в знаменитых Лабораториях Белла (Bell Labs) Дж. Бардиным (John Bardeen) и У. Браттайном (Walter Houser Brattain) по идеям Уильяма Брэдфорда Шокли (William Bradford Shockley), 1947 г. Кроме изобретения транзистора, У. Шокли известен также как основатель знаменитой Силиконовой долины — технополиса в Калифорнии, где сегодня расположено большинство инновационных полупроводниковых и компьютерных фирм. Из фирмы Шокли под названием Shockley Semiconductor Labs вышли, в частности, Гордон Мур и Роберт Нойс— будущие основатели крупнейшего ныне производителя микропроцессоров фирмы Intel. Г. Мур еще известен как автор знаменитого "закона Мура", а Р. Нойс как изобретатель микросхемы (совместно с Д. Килби — см. главу 12).
Рис. 6.3. Первый транзистор (Фото Lucent Technologies Inc./Bell Labs) Три вывода биполярного транзистора носят названия коллектор, эмиттер и база. Как ясно из рис. 6.2, б, база присоединена к среднему из трех полупроводниковых слоев. Так как согласно показанной на рисунке полярности, потенциал базы более положителен, чем у эмиттера, то соответствующий диод всегда открыт для протекания тока. На пару страниц ранее мы убедились, что в этом случае на нем должно создаваться падение напряжения в 0,6 В. Именно так и есть — в рабочем режиме напряжение между эмиттером и базой всегда составляет примерно 0,6 В, причем на базе выше, чем на эмиттере (еще раз напомним, что для р-п-р-транзисторов напряжения обратные, хотя абсолютные величины их те же). А вот диод между коллектором и базой заперт обратным напряжением. Как же может работать такая структура? Практически это можно себе представить, как если бы ток, втекающий в базу, управлял бы неким условным резистором, расположенным между коллектором и эмиттером (пусть вас не смущает помещенный там диод коллектор-база, через него-то ток все равно не потечет). Если тока базы нет, т. е. выводы базы и эмиттера закорочены (необязательно, чтобы непосредственно, главное, чтобы С/дэ было бы близко к 0), тогда промежуток эмиттер-коллектор представляет собой очень высокое сопротивление, и ток через коллектор пренебрежимо мал (сравним с током обратной утечки диода). В таком состоянии транзистор находится в режиме отсечки (транзистор заперт— закрыт). В противоположном режиме ток базы велик (t/g3 = 0’6—0,7 В, как мы
говорили ранее), а промежуток эмиттер-коллектор тогда представляет собой очень малое сопротивление. Это режим насыщения, когда транзистор полностью открыт (естественно, в коллекторной цепи должна присутствовать какая-то нагрузка, иначе транзистор в этом режиме может просто сгореть). Остаточное напряжение на коллекторе транзистора может при этом составлять всего порядка 0,3 В. Эти два режима представляют часто встречающийся случай, когда транзистор используется в качестве "ключа" (или, как говорят, "работает в ключевом режиме"), т. е. используется как обычный выключатель тока. А в чем смысл такого режима, спросите вы? Смысл большой — ток базы может управлять током коллектора, который, как минимум, на порядок больше — т. е. налицо усиление сигнала по току (за счет, естественно, энергии источника питания). Насколько велико может быть такое усиление? Для режима "ключа" почти для всех обычных типов современных транзисторов можно смело полагать коэффициент усиления по току (т. е. отношение максимально возможного тока коллектора к минимально возможному току базы Ik/Iq) равным 10 — не ошибетесь. Если ток базы и будет больше нужного — не страшно, он никуда не денется, открыться сильнее транзистор все равно не сможет. Коэффициент усиления по току в ключевом режиме еще называют "коэффициентом усиления по току в режиме большого сигнала" и обозначают буквой р. Есть особые "дарлингтоновские" транзисторы, для которых Р может составлять до 1 000 и более — о них мы еще будем говорить. Ключевой режим работы биполярного транзистора Рассмотрим подробнее ключевой режим работы транзистора. На рис. 6.3 показана простейшая схема включения транзистора в таком режиме, для наглядности — с лампочкой в качестве коллекторной нагрузки. Попробуем рассчитать необходимую величину резистора в базе. Характерно тут вот что: напряжения в схеме никакой роли не играют, только токи. Можно подключить коллекторную нагрузку хоть к напряжению 200 В, а базовый резистор питать от 5-вольтового источника — если соотношение Р>/к //g соблюдается, то транзистор (при условии, конечно, что он рассчитан на такое высокое напряжение) будет послушно переключать 200-вольтовую нагрузку, управляясь от источника 5 В, т. е. налицо и усиление сигнала по напряжению! В нашем примере используется небольшая автомобильная лампочка 12 В, 100 мА (примерно, как для подсветки приборной доски в "Жигулях"), а цепь базы питается от источника 5 В. Расчет элементарно прост: при 100 мА в кол
лекторе, в базе должно быть минимум 10 мА. Напряжение на базовом резисторе Rg составит 5 В - 0,6 В = 4,4 В (о падении между базой и эмиттером забывать не следует), т. е. нужное сопротивление будет 440 Ом. Выбираем ближайшее меньшее из "ширпотребовского" 5% ряда и получаем 430 Ом. Все? Рис. 6.4. Включение биполярного транзистора в ключевом режиме Нет, не все. Схема еще не совсем доделана. Она будет работать нормально, если вы будете поступать так: подключать базовый резистор к 5 В (лампочка горит), а затем переключать его к "земле" (лампочка гаснет). Но есть довольно часто встречающийся случай, когда напряжение на базовый резистор подается-то нормально, а вот при отключении его резистор не присоединяется к "земле", а просто "повисает в воздухе" (именно этот случай и показан на схеме в виде контактов). Так мы не договаривались — чтобы транзистор был в режиме отсечки, нужно, чтобы база и эмиттер имели один и тот же потенциал. А какой потенциал у базы, если она "в воздухе"? Это только формально ноль, а на самом деле всякие наводки — электричества-то вокруг полно — и внутренние процессы в транзисторе формируют небольшой базовый ток. И транзистор не закроется полностью— лампочка будет слабо светиться! Это раздражающий и очень неприятный эффект, который даже может привести к выводу транзистора из строя. Избежать его просто: надо замкнуть базу и эмиттер еще одним резистором Rg3. Самое интересное, что рассчитывать его практически не надо — лишь бы падение напряжения на нем при подаче напряжения на базу не составило меньше, чем 0,6 В, а чем он больше, тем лучше, но не надо увлекаться. Обычно его выбирают примерно в 10 раз больше, чем резистор Rg, но если вы здесь поставите не 4,3 кОм, а, к примеру, 10 кОм, тоже не ошибетесь. Работать он будет так: если включающее напряжение на Rg подано, то он не оказывает никакого влияния на работу схемы, т. к. напряжение между базой и эмиттером все равно 0,6 В, и он только
отбирает на себя очень небольшую часть базового тока (легко подсчитать, какую — примерно 0,15 мА из 10 мА). А если напряжения нет, R63 обеспечивает надежное равенство потенциалов базы и эмиттера независимо от того, подключен ли базовый резистор к "земле" или "висит в воздухе". Я так подробно остановился на этом моменте потому, что о включении резистора R(-)3 при работе в ключевом режиме часто забывают — даже в очень интересной во всех отношениях книге [9] повсеместно встречается эта ошибка. А ведь еще совсем недавно транзисторы по ТУ вообще запрещалось включать в режиме с "оборванной базой" — первые промышленные типы их запросто могли выйти из строя! Простейшая ключевая схема есть вариант т. н. схемы с общим эмиттером. Есть два момента в наших примерах, на которые стоит обратить внимание: во-первых, это подключение базовой цепи к питанию от 5 В. Это очень часто встречающийся случай, с которым и в этой книге вам придется иметь дело. Напряжением 5 В обычно питаются распространенные типы контроллеров и логических микросхем, и управление от них устройствами, которым требуется более высокое питание, чаще всего осуществляется именно по схеме рис. 6.3. Во-вторых, обратите внимание, что сигнал на коллекторе транзистора инвертирован (т. е. противоположен по фазе) по отношению ко входному сигналу. То есть, если на базе (точнее, на базовом резисторе) напряжение имеется — на коллекторе оно равно нулю, и наоборот! Это и имеют в виду, когда говорят, что транзисторный каскад в схеме с общим эмиттером инвертирует сигнал (относится не только к ключевому, но и к усилительному режиму работы, о котором далее). При этом на нагрузке (лампочке), которая подключена к питанию, а не к общей для входа и выхода каскада "земле", все в порядке, т. е. она горит, когда на входе сигнал есть, визуальный сигнал не инвертирован. Рис. 6.5. Схемы включения транзисторов: а — транзистор Дарлингтона; б — параллельное включение транзисторов
О дарлингтоновских транзисторах. Транзистор Дарлингтона (его часто называют транзистор с "супербетой", мы будем называть его и так и так) есть две транзисторные структуры, включенные каскадно, как показано на рис. 6.5, а. Разумеется, можно соорудить такую структуру самостоятельно (левый транзистор обычно меньшей мощности, чем правый), но существуют и приборы, выпускаемые промышленно (на рис. 6.5, а общий корпус показан пунктиром). Величина [3 для них равна произведению коэффициентов усиления для каждого из транзисторов и может составлять до нескольких сотен и даже тысяч. При использовании таких "супербета"-транзисторов обязательно следует иметь в виду то обстоятельство, что рабочее напряжение между базой и эмиттером у них будет примерно вдвое больше, чем у обычного транзистора, т. е. 1,2—1,4 В. Сопротивление резистора, как уже сказано, принципиального значения не имеет и для мощных транзисторов может составлять несколько кОм. На рис. 6.4, б приведена редко требующаяся, но весьма полезная схема параллельного включения мощных транзисторов с целью увеличения допустимого коллекторного тока и рассеиваемой мощности. Она немного напоминает схему Дарлингтона, но никакого умножения "бет" там, естественно, не происходит — суммируются только предельно допустимые показатели. Так как транзисторы всегда немного отличаются друг от друга, то для выравнивания токов через них в этой схеме служат резисторы в эмиттерных цепях, которые нужно выбирать так, чтобы падение напряжения на них при максимальном токе составляло ~0,2 В. Естественно, эти резисторы ухудшают КПД, поэтому для таких целей удобнее использовать мощные полевые транзисторы, для которых в аналогичном включении использования резисторов не требуется. Усилительный режим работы биполярного транзистора Теперь займемся собственно усилительным режимом. Из написанного ранее ясно, что между режимом насыщения и режимом отсечки должен существовать какой-то промежуточный режим — например, когда лампочка на рис. 6.4 горит вполнакала. Действительно, в некотором диапазоне базовых токов (и соответствующих им базовых напряжений) ток коллектора (и соответствующее ему напряжение на коллекторе) будет плавно меняться. Соотношение между токами здесь будет определяться величиной коэффициента усиления по току для малого сигнала, который по некоторым причинам обозначают весьма сложно: А2]Э. В первом приближении /г21Э можно считать равным коэффициенту р, хотя он всегда больше последнего. Учтите, что в справочниках иногда приводится именно hi\3, а иногда р, так что будьте внимательны.
Разброс /121э для конкретных экземпляров весьма велик, поэтому в справочниках приводят граничные значения (от—до). Проэкспериментировать с усилительным режимом транзистора и заодно научиться измерять /121э можно по схеме, приведенной на рис. 6.5. Переменный резистор должен иметь достаточно большое сопротивление, чтобы при выведенном в крайнее правое положение движке ток базы заведомо удовлетворял соотношению /б • /121э « До последний же в данном случае определяется нагрузкой. Если для транзистора (по справочнику) /г21Э составляет величину в среднем 50, а в коллекторе нагрузка 100 Ом, то переменный резистор разумно выбирать номиналом примерно 20—30 кОм и более. Выведя движок в крайнее правое по схеме положение, мы задаем минимально возможный ток базы. В этой ситуации следует включить питание и убедиться с помощью осциллографа или мультиметра, что транзистор близок к отсечке — напряжение на коллекторе UK будет почти равно напряжению питания (но не совсем — мы уже говорили, что для полной отсечки нужно соединить выводы базы и эмиттера между собой). Осторожно перемещая движок переменного резистора, мы увидим, как напряжение на коллекторе будет падать (а на нагрузке, соответственно, расти). Когда напряжение на коллекторе станет почти равным нулю (т. е. транзистор придет в состояние насыщения), эксперимент следует прекратить, иначе можно выжечь диод база-эмиттер слишком большим прямым током (для предотвращения этой ситуации следует поставить последовательно с переменным резистором постоянный резистор небольшого номинала — на рис. 6.6 показан пунктиром). U пит = + 10 В Рис. 6.6. Схема включения биполярного транзистора по схеме с общим эмиттером в усилительном режиме Вернем движок переменного резистора в состояние, когда напряжение на коллекторе примерно равно половине напряжения питания. Это так называемая рабочая точка транзистора в схеме с общим эмиттером — если напряжение на базовом резисторе будет в определенных пределах колебаться, изменяя ток базы, то переменная составляющая напряжения на коллекторе будет
Изобретение, которое потрясло мир. Диоды, транзисторы и простейшие схемы на их основе 95 повторять его форму (с точностью до наоборот, т. е. инвертируя сигнал, как мы говорили ранее), но усиленную по напряжению и току. Это и есть усилительный режим транзистора. В какой степени входной сигнал может быть усилен? Все определяется знакомым нам коэффициентом /?21э. Его величину для данного экземпляра транзистора можно определить так: пусть при напряжении на коллекторе, равном половине напряжения источника питания (5 В, как на рис. 6.6), сопротивление базового резистора составляет 10 кОм. Ток коллектора (при коллекторной нагрузке 100 Ом) составит 50 мА. Ток базы составит (10—0,6) В/10 кОм, т. е. примерно 1 мА. Тогда их отношение и будет равно А21э, т. е. в данном случае 50. А каков коэффициент усиления такой схемы по напряжению? Это зависит от соотношения резисторов в базе и в коллекторе. Например, если величина базового резистора составляет 1 кОм, то изменение тока базы при изменении входного напряжения на 1 В составит 1 мА. А в пересчете через /г2]Э это должно привести к изменению тока коллектора на 50 мА, что на нагрузке 100 Ом составит 5 В, т. е. усиление по напряжению при таком соотношении резисторов будет равно 5. Чем меньше номинал резистора в базе (и выше — нагрузки), тем больше коэффициент усиления по напряжению. В пределе, если положить базовый резистор равным нулю, а коллекторный — бесконечности, то предельный коэффициент усиления современных транзисторов по напряжению может составить величину порядка нескольких сотен (но не бесконечность — за счет того, что база имеет собственное входное сопротивление, а коллектор — собственное выходное). Обратите внимание на то обстоятельство, что при повышении величины сопротивления в коллекторе коэффициент усиления увеличивается. В частности, это означает, что лучше вместо резистора включать источник тока, у которого выходное сопротивление очень велико. Именно так и поступают во многих случаях, особенно часто — в микросхемах (см. главу 12). Но в приведенном виде (рис. 6.6) схема по усилению исключительно плоха. В самом деле, все зависит от величины коэффициента А21э, а он, во-первых, ’’гуляет" от транзистора к транзистору, во-вторых, очень сильно зависит от температуры (при повышении температуры повышается). Но чтобы понять, как правильно построить усилительный транзисторный каскад со стабильными параметрами, нужно ознакомиться еще с одной схемой включения транзистора — схемой с общим коллектором. Схема с общим коллектором показана на рис. 6.7. Памятуя, что напряжение базы и эмиттера никогда не отличается более, чем на 0,6 В, мы придем к выводу, что выходное напряжение такой схемы должно быть меньше входного именно на эту величину. Это так и есть — схема с общим коллектором еще
называется "эмиттерный повторитель", поскольку выходное напряжение повторяет входное за вычетом все тех же 0,6 В. Каков же смысл этой схемы? Рис. 6.7. Схема включения биполярного транзистора по схеме с общим коллектором Дело в том, что схема на рис. 6.6 усиливает сигнал по току (в количество раз, определяемое величиной /ь13), что равносильно тому, что собственное входное сопротивление этой схемы ровно в /2213 больше того сопротивления, которое стоит в цепи эмиттера, поэтому в этой схеме мы можем подавать на "голый" вывод базы напряжение без опасности сжечь переход база-эмиттер. Иногда это полезно само по себе, если не слишком мощный источник (т. е. обладающий высоким выходным сопротивлением) нужно согласовать с мощной нагрузкой (в главе 10 мы увидим, как это используется в источниках питания). Кстати, схема с общим коллектором (о.к.) не инвертирует сигнал в отличие от схемы с общим эмиттером (о.э.). Но главной особенностью схемы с общим коллектором является то, что ее характеристики исключительно стабильны и не зависят от конкретного транзистора до тех пор, пока вы, разумеется, не выйдете за пределы возможного. Так, сопротивление нагрузки в эмиттере и входное напряжение схемы практически однозначно задают ток коллектора— характеристики транзистора в этом деле никак не участвуют. Для объяснения этого факта заметим, что ток коллектора и ток эмиттера, т. е. ток через нагрузку, связаны между собой соотношением /н = 1К + /б, но ток базы мал по сравнению с током коллектора, поэтому мы им пренебрегаем и с достаточной степенью точности полагаем, что /н = 1К. Но напряжение на нагрузке будет всегда равно входному напряжению минус U&), которое, как мы уже выучили, всегда 0,6 В, т. е. ток в нагрузке есть (f/BX - Uq-^/Rh, и окончательно получаем, что /к= (t/BX - Uq3)/Rh. Разумеется, мы по ходу дела использовали два допущения (что 1^ « 1К и что U&, есть точно 0,6 В — и то и другое не всегда именно так), но мы же давно договорились, что не будем высчитывать характеристики схем с точностью до процентов! Ограничение, которое накладывается транзистором, будет тут
проявляться только, если мы попробуем делать RH все меньше и меньше — в конце концов, либо ток коллектора, либо мощность, выделяемая на коллекторе (она равна (£7ПИТ ~ ^вых) ’ 4), превысят предельно допустимые значения, и либо сгорит коллекторный переход, либо (если /к чем-то лимитирован) то же произойдет с переходом база-эмиттер. Зато в допустимых пределах мы можем со схемой эмиттерного повторителя творить что угодно, и всегда соотношение IK = (f/BX - Uq3)/Rh будет выполняться. Про такую схему говорят, что она охвачена стопроцентной отрицательной обратной связью по напряжению. Об обратной связи мы подробнее поговорим в главе 14, посвященной операционным усилителям, а сейчас нам важно, что такая обратная связь ведет к стабилизации параметров схемы и независимости их как от конкретного экземпляра транзистора, так и от температуры. Но ведь именно этого нам так не хватало в классической схеме с общим эмиттером! Нельзя ли их как-то скомбинировать? Действительно, "правильный" усилительный каскад на транзисторе есть комбинация той и другой схемы (рис. 6.8). Для конкретности предположим, что (/пит = Ю В, UBX = 5 В. Как правильно рассчитать сопротивления R3 и RK? Заметим, что схема обладает двумя выходами, из которых нас больше интересует выход 1 (выход усилителя напряжения, соответствующий выходу в схеме с общим эмиттером по рис. 6.6). Рис. 6.8. Стандартный усилительный каскад на биполярном транзисторе При нормальной работе каскада (чтобы обеспечить максимально возможный размах напряжения на выходе в случае чего) разумно принять, чтобы в состоянии покоя, т. е. когда URX равно именно 5 В, на выходе (на коллекторе транзистора) была йоловина питания, т. е. в данном случае тоже примерно 5 В. Это напряжение зависит от коллекторного тока и от сопротивления нагрузки по этому выходу, которое в данном случае равно RK. Как правило,
сопротивление нагрузки RK нам задано, примем для определенности, что RK= 5,1 кОм. Это означает следующее: чтобы в "хорошем" режиме обеспечить ^вых1 = 5 В, ток коллектора должен составлять 1 мА — посчитайте по закону Ома1! Но ток коллектора мы уже умеем рассчитывать, исходя из закономерностей для каскада с о.к. — он ведь равен (t/BX - t/63)/R3 (в данном случае R3 и есть RH). Из этих условий получается, что резистор R3 должен быть равен 4,3 кОм (мы всегда выбираем ближайшее из стандартного ряда сопротивлений и больше не будем об этом упоминать). Мы не сильно нарушим законы природы, если положим в этой схеме R} = RK =5,1 кОм — с точностью до десятых вольта выходные напряжения по обоим выходам будут равны — проверьте! Такая (очень хорошая и стабильная) схема нам не обеспечит никакого усиления по напряжению, это легко проверить, если при рассчитанных параметрах увеличить f/BX, скажем, на 1 В. Напряжение на эмиттере увеличится также на 1 В, общий ток коллектора-эмиттера возрастет на 0,2 мА (1 В/5 кОм), что изменит дополнительное падение напряжения на коллекторном резисторе также на 1 В в меньшую сторону (помните, что выходы инвертированы?). Зато! Мы в данном случае имеем схему, у которой два совершенно симметричных выхода: один инвертирующий, другой точно совпадающий по фазе со входным сигналом. Это дорогого стоит! Единственное, что портит картин-у — факт, что выходные сопротивления такой схемы сильно разнятся. Нагрузив нижний выход (f/BbIX2) еще какой-нибудь нагрузкой (что равносильно присоединению параллельного резистора к R3), мы изменим общий ток коллектора, и напряжение верхнего выхода (t/BbIxi) также изменится. А обратного не получается, т. е. если мы уменьшим RK, нагрузив его, то t7BbIxi изменится — но это практически никоим образом не скажется на t/Bblx2! Как нам обеспечить полную (или близкую к таковой) симметричность схемы усилителя — поговорим позже. А пока нас занимает вопрос — "дык, блин, это как же на этом гребаном транзисторном каскаде усилять напрягу?" У меня есть микрофон или гитарный звукосниматель с выходом 1 мВ. Хочу получить на выходе хотя бы 100 мВ, чтобы хватило для линейного входа усилителя — ну и? Оказывается, все просто, нужно только поступиться принципами, как говаривала незабвенная Нина Андреева еще в советские времена. Принципы заключаются в следующем: в рассчитанной схеме мы старались все сбалансировать и обеспечить оптимальный режим работы транзистора. 1 На самом деле средний ток коллектора в маломощном биполярном транзисторном каскаде и должен составлять величину порядка 1 мА. Если она много меньше, то в дело вступают шумы и прочие неидеальности транзистора, а много больше — это неэкономно с точки зрения расходования энергии источника, и транзисторы нужно тогда выбирать более мощные, а у них намного больше шумы и утечки, они дороже, крупнее...
Но оптимального ничего не бывает— ранее мы писали, что коэффициент усиления по напряжению каскада с общим эмиттером зависит от соотношения сопротивлений (т. е. токов в базе и коллекторе). Нарушив его по отношению к оптимальному для транзистора, мы можем что-то улучшить для себя. Практически это делается так: пусть мы предполагаем, что максимально возможная амплитуда на входе каскада (относительно среднего значения) не превысит, допустим, 1 В. Тогда напряжение на базе не должно быть меньше 1,7 В, иначе при минимальном сигнале транзистор запрется, и сигнал будет ограничен "снизу". Примем его равным 2 В для надежности. Номинал эмит-терного резистора R3 (при все том же оптимальном токе коллектора 1 мА) будет тогда равен 1,3 кОм. Нагрузка коллектора (RK) пусть останется такой же— 5,1 кОм. Обратите внимание, что на выходе £/ВЬ1Х1 среднее напряжение — напряжение покоя — осталось то же самое: 5 В. Тогда каждый вольт изменения напряжения на входе даст уже примерно 4 вольта изменения напряжения на выходе (/ВЫХ1, т- е- коэффициент усиления по напряжению составит 4 (и будет примерно равен соотношению резисторов в коллекторе и эмиттере). Мы можем в определенных пределах увеличить этот коэффициент, уменьшая номинал R, вплоть до нуля (и тем самым все больше дестабилизируя схему, как показано при описании схемы с общим эмиттером) и одновременно уменьшая диапазон усиливаемых входных напряжений. Интересным свойством рассмотренной схемы является то, что абсолютное значение напряжения питания здесь не важно — рассчитанный на одно питание каскад сохранит все свои свойства, кроме максимально допустимого выходного напряжения, и при другом напряжении питания. Для усилителей переменного тока хорошим — и часто используемым — приемом является шунтирование эмиттерного резистора конденсатором большой емкости. В результате режим усилителя по постоянному току (точка покоя, т. е. напряжение на коллекторе) обеспечен, а при наличии переменного входного напряжения эмиттерный резистор по номиналу уменьшается (к нему оказывается параллельно подключен конденсатор, сопротивление которого тем меньше, чем выше частота, как мы узнали из главы 5), поэтому растет и коэффициент усиления напряжения всей схемы. Теоретически транзисторный каскад на хорошем биполярном транзисторе в одиночку может усилить переменное напряжение 1 мВ раз в сто — если он правильно спроектирован, однако лучше полагаться на величину в 10—30 раз (если помните, то максимальное увеличение по напряжению для современных биполярных транзисторов ограничено несколькими сотнями — это без всякой стабилизации). Еще лучше в этом случае работают операционные усилители, но чтобы перейти к ним (см. главу 14), надо еще много понять о работе простых транзисторных каскадов.
Дифференциальный каскад Значительно улучшает схему использование двух одинаковых транзисторов в паре, соединенных эмиттерами, т. н. дифференциальный каскад (рис. 6.9). Дифференциальные каскады в силу их удобства широко применяли еще в эпоху недоступности микросхем (в том числе в ламповые времена), но в настоящее время их отдельно почти не используют (кроме некоторых областей, таких, как звукотехника) — они являются основой операционных усилителей. Тем не менее, понимание принципов его работы необходимо, и мы рассмотрим его вкратце, а потом (см. главу 9) построим на его основе простейший звуковой усилитель. Рис. 6.9. Дифференциальный каскад на биполярных транзисторах Дифференциальный каскад, как он показан на рис. 6.9, предполагает два раздельных одинаковых питания (плюс и минус) относительно "земли", но для самого каскада это не более, чем условность — питание всего каскада можно рассматривать как однополярное (и равное 10 + 10 = 20 В, согласно рис. 6.9), просто входной сигнал должен находиться где-то посередине между питаниями. Ради удобства проектирования схем источник входного напряжения всегда привязывают к "земле", потенциал которой находится ровно посередине между потенциалами источников питания самого каскада, т. е. общее питание рассматривают как разделенное на два — положительное и отрицательное. Относительно этой же "земли" мы будем также отсчитывать выходные напряжения f/BIjlxi и (/ВЬ1Х2- Так как мы знаем, что база и эмиттер транзистора всегда привязаны друг к другу, то в этой схеме обе базы (в рабочем режиме) всегда будут иметь одинаковый потенциал. Поэтому если на них подавать один и тот же сигнал (базовые резисторы на рис. 6.9 не показаны), то ничего происходить не будет — току течь некуда, т. к. все под одним и тем же напряжением. Вся конструкция
из двух транзисторов будет смещаться относительно "земли" в соответствии с поданным сигналом, а на выходах ничего и не шелохнется — это легко проверить. Такой сигнал называют синфазным. Иное дело, если сигналы на входах различаются — они будут усиливаться. Такой сигнал называют дифференциальным. Это основное свойство дифференциального усилителя, которое позволяет выделять небольшой сигнал на фоне довольно большой помехи. Помеха одинаково — синфазно — действует на оба входа, а полезный сигнал усиливается. Мы не будем здесь подробно разбирать работу этой схемы (рекомендую [10]), только укажем некоторые ее особенности: □ входное сопротивление дифференциального каскада равно входному сопротивлению каскада с общим коллектором; □ усиление по напряжению (дифференциальному) составляет 100 и более раз. Если вы хотите получить точно определенный коэффициент усиления, в каждый из эмиттеров нужно ввести по одинаковому резистору — тогда Кус будет определяться, как для каскада на рис. 6.7. Но обычно в таком режиме дифференциальный усилитель не используют— их используют в системах с обратной связью, которая и задает необходимый коэффициент усиления (см. главу 9); □ выходы строго симметричны; □ резистор RK1, если не используется £/выхь вообще можно исключить, или, наоборот, исключить RK2, смотря какой выход использовать. Полевые транзисторы Типы полевых транзисторов гораздо более разнообразны, чем биполярных (к полевым, кстати, и принадлежал самый первый прототип транзистора, изобретенный Шокли еще в 1946 г.). Существует более десятка только основных разновидностей, но всем им присущи общие черты, которые мы сейчас кратко рассмотрим. Простейший полевой транзистор (полевик) с р-п-переходом показан на рис. 6.10 (в данном случае с n-каналом). Аналогичные базе, коллектору и эмиттеру выводы называются затвор, сток и исток. Если потенциал затвора равен потенциалу истока (т. е. имеется в виду аналог замыкания цепи база-эмиттер у биполярного), то, в отличие от биполярного, полевой транзистор (с р-п-переходом) открыт. Но есть и еще одно существенное отличие — если биполярный транзистор при полном открывании имеет почти нулевое сопротивление цепи коллектор-эмиттер, то полевой в этих условиях работает довольно стабильным источником
тока: ток в цепи истока почти не зависит от напряжения на стоке. Сама величина тока зависит от конкретного экземпляра транзистора и называется "начальный ток стока". Запереть же его удается подачей отрицательного (порядка 7—10 В) напряжения на затвор относительно истока, в промежутке полевик с п-каналом находится в активном режиме, когда ток стока зависит от напряжения на затворе. I Рис. 6.10. Включение полевого транзистора с р-п-переходом и п-каналом Уникальной особенностью полевого транзистора является то, что в рабочем режиме он фактически не потребляет тока по входу затвора. Достаточно иметь соответствующий потенциал, ведь диод затвор-исток в рабочем режиме смещен в обратном направлении, и ток через него определяется только токами утечки, которые равны нано- и микроамперам, как говорилось ранее! В этом отношении полевой транзистор аналогичен электронной лампе. А если мы сместим этот переход в положительном направлении (когда потенциал затвора превысит потенциал истока и диод затвор-исток откроется), то полевой транзистор с р-п-переходом уже перестанет работать как транзистор. А в типах полевых транзисторов с изолированным затвором (т. н. МОП-транзисторах, от "металл-окисел-полупроводник"), последний вообще изолирован от цепи сток-исток (тонким слоем окисла кремния SiO2), и там в принципе нет никакого тока через цепь затвора. Правда, когда на затвор подается переменное напряжение, в дело вступает конденсатор, образованный затвором и истоком (через изолирующую прокладку окисла или за счет собственной емкости р-п-перехода — в зависимости от типа). Как следует из главы 5, перезаряд этого конденсатора (его емкость может составлять десятки пикофарад) в цепи переменного тока может приводить к значительному реактивному току в цепи затвора. Приведенные нами примеры не исчерпывают разнообразия типов полевых транзисторов. Например, т. н. MOSFET-транзисторы управляются напряжениями аналогично тому, как биполярный в схеме с общим эмиттером — при нулевом напряжении на затворе относительно истока транзистор заперт, при положительном напряжении порядка 5 В — полностью открыт, причем в открытом состоянии он представляет собой крайне малое сопротивление — у некоторых типов менее 0,01 Ом. Вообще полевики гораздо ближе к той модели транзистора, когда промежуток коллектор-эмиттер или сток-исток представляются как управляемое сопротивление — у полевых транзисторов это действительно сопротивление. Условно говоря, со схемотехнической точки зрения биполярные
Изобретение, которое потрясло мир. Диоды, транзисторы и простейшие схемы на их основе 103 транзисторы являются приборами для усиления тока, а полевые — для усиления напряжения. Однако их общим недостатком является значительно меньшая крутизна характеристики вход-выход, отчего на полевых транзисторах трудно получать большие коэффициенты усиления. Выбор транзисторов В заключение главы приведем критерии подбора биполярных и полевых транзисторов для конкретной схемы (дополнительно на эту тему мы поговорим еще в главе S). Сейчас мы оставляем за скобками частотные характеристики приборов транзисторов — будем считать, что достаточно выбрать прибор с рабочей частотой, примерно в 10 раз превышающей самые высокие частоты в схеме2. Если у диодов определяющих критериев всего три (допустимый прямой ток, допустимое обратное напряжение и допустимая выделяющаяся мощность), то у транзисторов их много больше. Приведем часть из них: □ допустимый ток коллектора; □ допустимый ток базы; □ допустимая мощность на коллекторе (стоке); □ допустимое напряжение коллектор-эмиттер (сток-исток); □ допустимое напряжение коллектор-база (сток-затвор); □ допустимое обратное напряжение база-эмиттер и др. Самыми критичными являются, как и у диодов, три: допустимый ток коллектора, допустимая мощность на коллекторе и допустимое напряжение коллектор-эмиттер. Допустимое обратное напряжение база-эмиттер (т. е. отрицательное напряжение на базе при запертом транзисторе) для большинства типов кремниевых транзисторов, независимо от их мощности, составляет — увы — всего 5 В. На самом деле большинство транзисторов выдерживает много больше, но лучше не экспериментировать. Допустимое напряжение коллектор-база обычно примерно равно допустимому напряжению коллектор-эмиттер. Последнее для обычных типов маломощных транзисторов составляет несколько десятков вольт, хотя есть и экстремальные типы, которые могут коммутировать и сотни вольт. Чаще всего в пределах одного типа разные буквы означают разброс в допустимых напряжениях (и/или в коэффициентах усиления Р): так, для КТ815А допустимое постоянное напряжение коллектор-эмиттер составляет 2 В силу того, что у прямоугольного импульса, как сказано в предыдущей главе, верхняя частота не ограничена, может создасться искушение выбирать как можно более высокочастотные приборы. Но это не так — достаточно выбрать компоненты с рабочей частотой примерно в 10—20 раз выше, чем частота прямоугольных сигналов.
40 В, а для КТ815Г — 100 В. В дальнейшем, если на схеме будет указан только тип транзистора без буквы (это относится и к другим компонентам), то это означает, что может использоваться прибор указанного типа с любой буквой. Предельно допустимая мощность на коллекторе (то же самое справедливо для диодов) обычно определяется типом корпуса: один и тот же транзистор, помещенный в разные корпуса, может обеспечить разную выделяемую мощность. Критерием тут служит температура самого кристалла, которую померить ох, как непросто! Для ориентировки можно указать, что транзисторы (и другие приборы), помещенные в распространенный корпус ТО-2203 (как мощные транзисторы КТ819 или КТ829), могут без дополнительного радиатора рассеивать мощность до 1—2 Вт, а маломощные типа КТ3102 (корпус типа ТО-92) — до 0,5 Вт4. С радиатором возможности сильно возрастают — корпус типа ТО-220 может рассеять до 60 Вт тепла без вреда для кристалла! Образцом тут могут служить микропроцессоры — как известно, Пентиумы на частоте 3 ГГц потребляют порядка 70—80 Вт мощности без вреда для многих миллионов транзисторов, которые они содержат, и работают с внешним радиатором, дополнительно охлаждаемым специальным вентилятором. (Расчетом радиатора мы будем заниматься в главе 9.) В любом случае следует выбирать минимально необходимый по мощности прибор — не только в целях экономии денег и места на печатной плате, но и потому, что чем меньше диод или транзистор, тем лучше у него остальные второстепенные характеристики — быстродействие, уровень собственных шумов и т. д. Но, как и во всех других случаях, запас обязательно следует иметь: если вы выберете для работы в цепи с напряжением 100 Вис токами до 1,5 А транзистор КТ815Г — это будет формально правильно, но я бы для надежности выбрал сюда что-нибудь помощнее. Потому что есть правило; касающееся любых компонентов, не только диодов или транзисторов: из всех предельных параметров максимально допустимого значения в процессе работы может достигать только один, остальные должны оставаться как можно ниже (для транзисторов даже приводятся специальные графики, называемые "областью безопасной работы"). Так, если вы выбрали упомянутый КТ815Г для работы в цепи с напряжениями до 100 В — пусть предельные токи через него заведомо никогда не смогут превысить 0,5 А. Это будет правильно! Представьте себе йога, который тренирован для пребывания голым на холоде минус 30° в течение часа, спокойно ходит по раскаленным угольям, выдерживает давление на грудную клетку большегрузного автомобиля в 10 тонн и при этом ломает кирпичи одним ударом ладони. А теперь заставьте его проделать все это одновременно! Конечно, не исключено, что он выдержит. Ну, а как нет? 3 Относительно наименований корпусов транзисторов см. сноску 3 в главе 8. 4 Внешний вид различных корпусов транзисторов см. на рис. 8.1.
Глава 7 Ошеломляющее разнообразие электронного мира. Реле, стабилитроны, светодиоды... Нет такой пустыни, где бы птица не могла пролететь над головой, где бы рыба не могла вынырнуть из воды, где бы кролик не мог выскочить из своей норки. А мне кажется, что и птицы, и рыбы, и кролики — все стали шпионами кардинала. А. Дюма, "Три мушкетера" Полупроводниковая промышленность выпускает очень много типов электронных приборов. В этой главе мы подробно разберем только основные, самые широко употребляемые их разновидности. По ходу изложения нам будут встречаться и другие типы, имеющие более узкий спектр применения. Необходимые пояснения будут даны в соответствующих главах. Все эти приборы, вместе с диодами и транзисторами, в отличие от интегральных микросхем, называют дискретными, а основанную на их использовании схемотехнику— дискретной схемотехникой. Не следует думать, что последняя в связи с дешевизной микросхем полностью вышла из моды: во-первых, многие узлы современных схем все равно делают на дискретных компонентах, во-вторых, как ни странно, иногда только использование дискретной схемотехники позволяет достичь наивысшего качества — типичным примером служат высококачественные звуковые усилители мощности. Электромагнитные реле Конечно, выдающийся американский физик Джозеф Генри, помогая художнику Самюэлю Морзе в постройке телеграфа, и не думал ни о какой электронике, которая потом завоюет мир. Электромагнитное реле он изобрел даже не в рамках науки, которая, как известно, есть способ познания мира и чурается практики, а просто, чтобы помочь товарищу, который, впрочем, наверняка заплатил неплохие деньги.
Так это было или иначе — важно, что электромагнитное реле стало одним из самых щтавных технологических изобретений XIX века. По популярности ему не затмить, конечно, электрического освещения, электрогенератора и электродвигателя, телеграфа, телефона и прочих достижений "века электричества", но факт, что именно этот не очень известный широкой публике приборчик еще недавно был одним из важнейших компонентов любой электрической системы и широко используется до сих пор. Суть заключается в том, что реле стало первым в истории — задолго до ламп и транзисторов — усилителем электрических сигналов. С помощью реле напрямую не усилить предвыборную речь кандидата в президенты, но если ее закодировать нулями-единицами, как мы это будем делать в главах 18—19, то реле справится с такой задачей ничуть не хуже любого другого устройства — именно на этом свойстве было основано его применение в телеграфе Морзе. Нормально замкнутые контакты а Рис. 7.1. Электромагнитное реле: а — схематическое устройство; б — рекомендуемая схема включения +ипит Конечно, быстродействие реле как ключевого элемента оставляет желать лучшего — даже о килогерцах здесь речь не идет, обычная скорость срабатывания составляет для самых малогабаритных и быстродействующих реле десятки миллисекунд, что соответствует частотам в десятки герц. Но в режиме быстрого переключения реле использовать и не надо, для этого существуют другие электронные компоненты. Реле используют там, где нужно надежно коммутировать нагрузку с минимальными потерями в контакте. Огромным преимуществом реле является не только полная гальваническая
развязка между входом и выходом, но и низкое сопротивление контактов, почему их использовали до самого последнего времени, например, для коммутации в измерительных схемах, где очень важно, чтобы сопротивление измерительных цепей было минимальным и стабильным. Учтите, что указываемые в справочниках параметры контактов (типа "переходное сопротивление не более 1 Ом") обычно сильно завышены, они рассчитаны на наихудший случай. На рис. 7.1, а изображена схема простейшего электромагнитного реле. Любое реле — независимо от конструкции — обязательно содержит три главных компонента: обмотку, якорь и контакты. Исключение составляют т. н. герконовые1 реле, у которых якорем служат сами контакты. Обмотка представляет собой катушку индуктивности (соленоид), около которой (или в которой) при подаче тока перемещается якорь, выполненный из ферромагнитного материала. Теорию этого дела слишком долго излагать, да к тому же она не нужна для практических целей — важно понимать, что при подаче тока (переменного или постоянного) якорь перемещается и приводит к перемещению подпружиненных контактов, которые замыкаются (если были "нормально разомкнутыми") или размыкаются (если были "нормально замкнутыми"). Есть и тип "перекидных" контактов, в которых присутствует центральный общий подпружиненный контакт, в нормальном положении замкнутый с одним из соседних, а при подаче тока перекидывающийся к другому. Если ток через обмотку снимается, то все возвращается в исходное состояние. Большинство типов реле содержит не одну, а несколько групп таких контактов, управляемых одним якорем. Разумеется, вокруг этого базового алгоритма работы за много лет были накручены различные "прибамбасы": так, существуют реле, которые при каждой подаче импульса тока перебрасываются в противоположное положение (пускатели); реле, контакт в которых может иметь три положения, т. е. трехпозиционные (замкнуто-нейтраль-замкнуто) и т. п., но мы их не будем рассматривать, потому что большинство функций таких специализированных реле давно выполняют логические микросхемы, и куда успешней. Мало того, вместо электромагнитных реле во многих случаях (но не во всех!) лучше использовать электронные — принцип тот же, но нет никаких соленоидов и движущихся частей. Их мы рассмотрим далее, а пока изучим важнейшие 1 Геркон расшифровывается как "герметизированный контакт". Герконы выпускаются и отдельно, и представляют собой стеклянную трубочку с двумя или тремя выводами от запаянного в нее контакта (простого или перекидного), защищенного таким образом от влияния внешней среды. Контакт под воздействием внешнего магнитного поля, например, при поднесении постоянного магнита, может замыкаться и размыкаться. Герконовые реле обычно представляют собой такой геркон, на который намотана обмотка с теми или иными параметрами.
характеристики обычных реле — они мало меняются по сути даже с переходом к твердотельной электронике. Главным и основным свойством, побуждающим инженера-электротехника и электроника использовать обычные реле в век господства транзисторов и микросхем, является полная (более полной и представить себе трудно) гальваническая развязка не только обмотки от коммутируемого напряжения, но, если пар контактов больше одной, то и различных коммутируемых напряжений друг от друга. Коммутация происходит чисто механическим способом, поэтому коэффициент усиления по мощности у реле ого-го-го какой! Например, обмотка реле РЭС9 потребляет 30 мА при 27 вольтах, что составляет меньше ватта, но может двумя парами контактов коммутировать нагрузки до 1 А при 220 В переменного тока на каждый контакт в отдельности — т. е. в сумме почти полкиловатта! Рис. 7.2. Некоторые разновидности электронных реле Мы будем заниматься реле постоянного тока (это те, обмотки которых работают от постоянного тока, хотя коммутировать они могут в принципе все что
угодно). В первую очередь нас интересует, сколько энергии надо затратить на переключение. В справочниках приводится либо величина тока через обмотку, либо величина рабочего напряжения, что равнозначно, потому что величина сопротивления обмотки тоже всегда приводится. Обычно одинаковые типы реле имеют разновидности с разными сопротивлениями обмоток (это определяется т. н. "паспортом"). Тут и выявляется главный недостаток электромагнитных реле в сравнении с полупроводниковыми устройствами— энергетический порог, с которого начинается управление обмотками, весьма велик. Все же токи в 30—50 мА при напряжениях 15—27 В, т. е. мощности порядка ватта (это для малогабаритных реле — для реле покрупнее нужна еще большая мощность) — запредельны для современной электроники, и это слишком большая роскошь, если требуется всего-навсего включить нагрузку в виде лампочки. Кстати, а как определить напряжение срабатывания незнакомого реле, если справочника нет под рукой? Это несложно, если иметь регулируемый источник питания. Найдите с помощью тестера выводы обмотки (она имеет обычно сопротивление от десятков ом до килоом — а если реле имеет прозрачный корпус, то найти ее можно визуально) и подключите обмотку к источнику. Прозвонкой найдите нормально замкнутые контакты и подключите к ним тестер. Выведите источник на минимальное напряжение, включите его, а затем постепенно добавляйте напряжение. Вместо подключения тестера можно поднести реле к уху, но если оно (реле) малогабаритное и тем более герконовое, то щелчок при срабатывании можно и не услышать. Отметьте значение напряжения, когда реле сработает, а затем умножьте его на полтора — это и будет приблизительное значение номинального напряжения срабатывания. Другим недостатком обмоток реле как нагрузки для полупроводниковых приборов является то, что они представляют собой индуктивность. Для постоянного тока это просто сопротивление, но в момент переключения она, как описано в главе 5, может доставить немало неприятностей. В момент разрыва или замыкания управляющей цепи на обмотке реле возникает импульс напряжения (по полярности он препятствует направлению изменения тока в обмотке). Если индуктивность обмотки велика, а ее собственное (активное) сопротивление мало, то импульс этот может вывести из строя коммутирующий прибор (например, транзистор) и в любом случае создает сильные помехи остальным элементам схемы по шине питания. Поэтому при стандартном включении реле всегда рекомендуется подключать параллельно его обмотке диод (даже если коммутация происходит не от полупроводниковых источников, а от таких же реле) в таком направлении, чтобы в статическом режиме, когда все успокоилось, и никто ничего не коммутирует, диод этот тока не пропускал (рис. 7.1, б). Тогда выброс напряжения ограничивается на уровне напряжения на открытом диоде, т. е. 0,6 В.
Следует учитывать еще вот какую особенность электромагнитных реле. Ток (напряжение) срабатывания у них намного превышает ток (напряжение) отпускания — так, если в характеристиках указано, что номинальное напряжение реле составляет 27 В, то это то напряжение, при котором замыкание нормально разомкнутых до этого контактов гарантируется. Но совершенно не обязательно (а иногда и не нужно) выдерживать это напряжение длительное время — так, 27-вольтовые реле спокойно могут удерживать контакты в замкнутом состоянии вплоть до того момента, пока напряжение на их обмотке не снизится до 5—8 В. Это, кстати, очень удобное свойство электромагнитных реле, называемое гистерезисом, которое позволяет избежать дребезга при срабатывании-отключении и даже сэкономить на энергии при работе с ними. Так, на рис. 7.3, а приведена схема управления реле, которое в начальный момент подает на него нужное номинальное напряжение для срабатывания, а затем неограниченное время удерживает реле в сработавшем состоянии при пониженной величине тока через обмотку. + Нпит + 18 В +27 В I Перекидные , I . I контакты кн- Пуск J реле Контакты 1 реле Нормальнозамкнутый контакт Обычный контакт для коммутации нагрузки JL Здесь схема управления кн. "Стоп Контакты 2 реле для коммутации нагрузки обмоткой Рис. 7.3. Некоторые схемы включения реле: а — со снижением напряжения удержания; б — схема самоблокировки с кнопками "Пуск" и "Стоп”; в — схема классического электромеханического звонка На рис. 7.3 приведены еще две классические схемы. Первая (рис. 7.3, б) называется "схемой самоблокировки" и очень часто применяется в управлении различными мощными устройствами, например, электродвигателями станков. Мощные реле-пускатели для таких двигателей имеют даже специальную отдельную пару маломощных контактов, предназначенную для осуществления самоблокировки. В этих случаях ток через стандартные кнопки "Пуск" и "Стоп" не превышает тока через обмотку пускателя (который составляет
Ошеломляющее разнообразие электронного мира. Реле, стабилитроны...111 несколько десятков или сотен миллиампер), в то время как мощность разрываемой цепи может составлять многие киловатты, притом цепи трехфазной со всякими дополнительными неприятностями типа огромных индуктивностей обмоток мощных двигателей. Другая схема (рис. 7.3, в) скорее забавна и есть дань прошлому, когда никакой электроники не существовало. Это схема простейшего электрического звонка, который может быть реализован на любом реле. Оно и само по себе при подключении по этой схеме задребезжит (правда, звук может быть самым разным, в зависимости от быстродействия и размеров реле, поэтому лучше употребить слово "зазуммерит"), но в обычном звонке якорь еще связывают со специальной тягой, которая в процессе работы стучит по металлической чашке, формируя звуковой сигнал. Есть и более простая конструкция электромеханического звонка, когда на обмотку реле подают переменное напряжение, от чего якорь вибрирует с его частотой (так устроены, например, звонки старинных телефонов с крутящимся диском), но нас интересует именно классическая схема, потому что в ней в чистом виде реализован другой основополагающий принцип электроники, так или иначе присутствующий в любых генераторах колебаний — принцип положительной обратной связи. Якорь в первый момент притягивается — питание размыкается — якорь отпускает — питание замыкается — якорь притягивается и т. д. Частота генерируемых колебаний зависит исключительно от механической инерции деталей реле. Стабилитроны Стабилитрон представляет собой обычный диод с вольтамперной характеристикой, показанной на рис. 6.1, за одним исключением— при превышении некоторого обратного напряжения (индивидуального для каждого типа стабилитрона) он обратимо пробивается и начинает работать как очень малое сопротивление. Это можно представить себе, как если бы обычное прямое падение напряжения, составляющее 0,6 В, увеличилось бы вдруг до большой величины. Стоит только снизить напряжение ниже оговоренного — стабилитрон опять запирается и больше не участвует в работе схемы. Напряжения стабилизации могут быть самыми разными: от 2 до 300 В. Учтите, что тепловая мощность, равная произведению тока через стабилитрон на его напряжение стабилизации, выделяется на нем самом, поэтому чем выше напряжение стабилизации, тем ниже допустимый ток. В характеристиках также указывается обычно минимально допустимое значение тока, при котором стабилитрон еще "держит" нужное напряжение.
-5 -10 -15 Рис. 7.4. Вольтамперная характеристика двустороннего стабилитрона Удобно использовать двусторонние стабилитроны (которые представляют собой два обычных, соединенных анодами) для того, чтобы и в положительном, и в отрицательном направлении включения характеристики были бы симметричны. Вольтамперная характеристика такого двустороннего стабилитрона типа КС170 показана на рис. 7.4. Отметьте, что характеристика в области пробоя все же имеет некоторый наклон — т. е. при возрастании тока через прибор напряжение на нем не остается строго постоянным, а растет (это называется дифференциальным сопротивлением). К тому же напряжение стабилизации меняется с температурой. Ко входу Экранированный кабель к микрофону усилителя Рис. 7.5. Схема для защиты входа микрофонного усилителя Кстати, простейший стабилитрон — обычный диод, включенный в прямом направлении, и их часто употребляют в таком качестве. Напряжение стабилизации составит при этом, естественно, 0,6 В (для его увеличения можно включить последовательно два и более диодов — именно так мы поступим
в схеме усилителя в главе 9). Как видно из вольтамперной характеристики диода (рис. 6.1), стабильность пресловутого напряжения 0,6 В оставляет желать лучшего (и от тока зависит, и от температуры), но во многих случаях особой стабильности не требуется. На рис. 7.5 приведена схема ограничителя напряжения на двух диодах (если требуется более высокое напряжение ограничения, их можно заменить на стабилитроны или на один двусторонний стабилитрон). Эту схему удобно употреблять, например, для защиты высокоомного входа микрофонного усилителя — нормальное напряжение с микрофона составляет несколько милливольт, и диоды никак не влияют на работу схемы, поскольку таким маленьким напряжением не открываются. Но если микрофон присоединен через длинный кабель, то на входе могут создаваться помехи (от промышленного оборудования, от поднесенного к неподключенному входу пальца или, скажем, от грозовых разрядов), которые сильно превышают указанные милливольты и могут вывести из строя каскады усилителя. В приведенной схеме такие помехи любой полярности замыкаются через диоды, и входное напряжение не может превысить 0,6—0,7 В ни при каких условиях. У внимательного читателя может возникнуть вопрос — ведь согласно вольтамперной характеристике и стабилитрона, и диода ток при превышении соответствующего напряжения растет очень быстро, так не сгорят ли эти входные диоды при наличии высоковольтной помехи? Отвечаем — энергия помехи обычно очень мала, поэтому ток хоть и может быть достаточно велик, но лишь на протяжении очень короткого промежутка времени, а такое воздействие и диоды, и стабилитроны выдерживают без последствий. Стабилитроны в чистом виде хороши в качестве ограничителей напряжения, а для формирования действительно стабильного напряжения (например, опорного для АЦП и ЦАП), следует принимать специальные меры для стабилизации тока через стабилитрон и одновременно выбирать его с точки зрения стабильности температурных характеристик. Хотя и существуют специальные прецизионные стабилитроны (пример применения их вы увидите в главе 10), но все же, если вам нужно действительно стабильное напряжение, то лучше применять прецизионные интегральные стабилизаторы, которые при наличии трех выводов (вход-выход-общий) дают на выходе стабильное напряжение. Например, интегральный стабилизатор типа МАХ873, который в диапазоне 4—30 В на входе дает на выходе ровно 2,5 В, обладает еще и весьма высокой стабильностью — если даже положить на него паяльник (тем самым нагрев его градусов до 100), то напряжение на выходе этого стабилизатора и не шелохнется. В современной интегральной технике обычно источники опорного напряжения встраивают прямо в нужные микросхемы, но часто предусматривают вход и внешнего такого источника, потому что вы всегда можете захотеть изобрести что-нибудь получше.
Светодиоды Очень многие физические процессы обратимы. Типичный пример — если пластинка кварца изгибается под действием электрического поля, то принудительное изгибание пластинки должно привести к возникновению зарядов на ее концах, что»и происходит в действительности. Этот эффект лежит в основе устройства кварцевых резонаторов для реализации высокоточных генераторов частоты {см. главу 23). Не давало покоя физикам и одно из первых обнаруженных свойств полупроводникового р-п-перехода — зависимость его проводимости от освещения. Во-первых, этот эффект немедленно стал широко использоваться в различных датчиках освещенности (фотосопротивлениях, фотодиодах, фототранзисторах), которые пришли на замену хоть и весьма чувствительным, но крайне неудобным для широкого применения вакуумным фотоэлементам. Кстати, любой полупроводниковый диод в стеклянном корпусе является неплохим датчиком освещенности, его обратный ток сильно зависит от наличия света. Особенно этим отличаются старые германиевые диоды (типа Д2, Д9). Можете попробовать поэкспериментировать, только не забывайте, что, во-первых, сам этот ток очень мал (обратное сопротивление диода весьма велико), что потребует хороших высокоомных усилителей, во-вторых, от температуры этот обратный ток зависит еще больше, чем от света. Набиравшая обороты космическая отрасль быстро сосредоточила усилия вокруг реализации другого эффекта— возможности генерации тока в полупроводниковом переходе под действием света, и картинка искусственного спутника Земли с широко раскинутыми темно-синими панелями солнечных батарей теперь стала уже традиционной. Встал вопрос, можно ли генерировать свет, если подавать на р-п-переход напряжение? Оказалось, что можно, но это было реализовано далеко не сразу. Первым поддался инфракрасный (невидимый глазу) и красно-зеленый участок спектра. К началу 80-х годов полупроводниковые светодиоды (LED — Light Emission Diode), излучающие в ИК-диапазоне, уже стали широко использоваться в дистанционных пультах управления, а красненькие и зелененькие сигнальные светодиоды, хоть и были тогда еще куда тусклее традиционных лампочек накаливания, зато намного более долговечны и потребляли принципиально меньше энергии. В настоящее время в целом все проблемы решены и освоен фактически весь видимый спектр, включая синий и даже ультрафиолетовый диапазон. Характерной особенностью любых светодиодов является то, что они излучают свет одной (точнее, близкой к этой одной) длины волны, из-за чего насыщенность излучаемого света превосходит все чаяния художников. Базовых длин волн, охватывающих все цвета видимого спектра, существует порядка двух десятков
(частично они перечислены в таблице, соответствующей продукции фирмы Kingbright). Длина волны, нм Обычное обозначение Цвет свечения 700 Н Красный 660 SR Красный 640 SU Красный 625 ЦЕ) Чистый красный 610 N (SE) Чистый оранжевый 590 Y (SY) Желтый 565 G (SG, MG) Зеленый 555 PG Чистый зеленый 465 MB Голубой 445 NB Голубой 430 PB Чистый синий Сами по себе светодиоды делятся на обычные и повышенной яркости. Не следует сломя голову кидаться на повышенную яркость — в большинстве случаев она не нужна и только будет слепить глаза, если светодиод используется в качестве, скажем, индикатора наличия напряжения, причем регулировать такую яркость к тому же непросто. Очень тщательно следует подходить к выбору корпуса — матовый (диффузный) рассеиватель обеспечивает меньшую яркость, зато светящуюся полусферу видно под углом почти 180° во все стороны. Самый распространенный тип корпусов светодиодов круглый и имеет ровно 5 мм в диаметре, хотя есть варианты корпусов от 2 до 12 мм в диаметре, есть также плоские, квадратные, треугольные и т. п. При монтаже на панели светодиод следует располагать так, как показано на рис. 7.6. Если он будет выступать больше, чем на окружность линзы, его, во-первых, легко свернуть неосторожным движением, во-вторых, это не слишком эстетично. Если же его больше утопить, то резко уменьшится угол обзора и сбоку будет не видно, включен светодиод, или нет. Конус вокруг светодиода всегда следует закрашивать черным, а не делать его блестящим, как для обычной лампочки накаливания — в стороны светодиод практически не светит, и блестящему конусу все равно отражать будет нечего, а на черном фоне светящееся пятно выделяется намного лучше.
* Рис. 7.6. Вариант расположения светодиода на лицевой панели Со схемотехнической точки зрения все светодиоды независимо от цвета свечения представляют собой обычные диоды за одним исключением — прямое падение напряжения на них превышает обычные для кремниевых р-п-переходов 0,6 В и составляет: для красных и инфракрасных 1,5—1,8 В, для желтых, зеленых и синих 2—3 В. В остальном их включение не отличается от включения обычных диодов в прямом направлении. То есть светодиод есть прибор, управляемый током (а не напряжением, как лампа накаливания), поэтому на рис. 7.6 показан токограничивающий резистор R, величина и мощность которого зависит от питающего напряжения. Не нужно забывать, что светодиод — прибор постоянного тока и на выпрямление переменного тока не рассчитан (допустимое обратное напряжение у него обычно составляет 5—10 В), но постоянное напряжение может составлять любую величину, даже 220 В, хотя это и неэффективно — большая часть энергии будет рассеиваться на резисторе. Значение тока, при котором практически любой светодиод нормально светится, составляет 3—8 мА (хотя предельно допустимое может быть и 40 мА), на эту величину и следует рассчитывать схему управления светодиодами. При этом нужно учитывать, что яркость, воспринимаемая глазом, не зависит линейно от тока — вы можете и не заметить разницу в свечении при токе 5 или 10 мА, а разница между 30 и 40 мА еще менее заметна. Иногда токоограничивающий резистор встраивают прямо в светодиод (в этом случае яркость свечения уже управляется напряжением, как у обычной лампочки, а не током) — это обычная практика для "мигающих" светодиодов со встроенным генератором частоты. Обычное предельное напряжение для таких светодиодов составляет 12—15 В.
Так как собственное падение напряжения на светодиодах невелико, то их можно включать последовательно, чем пользуются производители цифровых сегментных индикаторов. Но тут дело осложняется тем, что отдельный светодиод представляет собой фактически точечный источник света, и нарисовать с его помощью длинную светящуюся полоску непросто даже при наличии рассеивающей свет пластмассы (причем, как ни парадоксально, чем мельче, тем хуже выглядят плоские светодиоды). Мелкие цифровые индикаторы (с длиной одного сегмента до 5—6 мм) содержат по одному светодиоду в сегменте, а более крупные — по два и более. Это нужно учитывать при проектировании, т. к. семисегментный цифровой индикатор с высотой цифры 12,7 мм и более имеет падение напряжения на каждом сегменте, превышающее 4 В, и управлять им от пятивольтового контроллера затруднительно — номинальный запас в несколько десятых вольта легко "сожрется" собственным сопротивлением выхода контроллера и "проседанием" источника питания, отчего ваш индикатор вообще может и не загореться. Для таких случаев приходится идти на заведомые потери и питать индикаторы от повышенного напряжения через транзисторные ключи или специальные схемы управления индикаторами. Красота требует жертв! Набор семисегментных цифровых светодиодных индикаторов в четыре цифры в каком-нибудь мультиметре может потреблять до 100—200 мА тока— но насколько он выглядит красивее по сравнению с ничего почти не потребляющими, но совершенно слепыми черно-белыми жидкокристаллическими панелями! Одно удивительно: почему до сих пор (по крайней мере, на момент написания этой книги) не существует голубых цифровых индикаторов, хотя соответствующие светодиоды давно освоены в производстве? Кроме упомянутых мигающих, из экзотических типов светодиодов применение находят двухцветные. Они бывают двух- и трехвыводные. С последними все понятно — это просто два разноцветных светодиода (зеленый и красный) в одном корпусе, управляющиеся раздельно. Подал ток на один — зажегся красный, на другой — зеленый, на оба — желтый (третий вывод общий), а манипулируя величиной токов, можно получить все промежуточные переходы. Но еще интереснее двухвыводной тип, который представляет собой два разноцветных светодиода, включенные встречно-параллельно. Поэтому в них цвет свечения зависит от полярности тока: в одну сторону — красный, в другую — зеленый. Самое интересное получается, если подать на такой светодиод переменное напряжение — тогда он светится желтым! Подключив такой светодиод к двум управляемым выходам контроллера (всего через один резистор), можно получить четыре состояния: когда на одном выходе есть напряжение, а на другом нет — свечение красное, в противоположном состоянии — зеленое, при одинаковых состояниях выхода — вообще нет свечения (такая логическая функция похожа на элемент Исключающее ИЛИ,
описываемый в главе 20), а если быстро-быстро переключать состояния выходов в противофазе, то светодиод будет светиться желтым. Можно, кстати, встретить в продаже и светодиоды белого свечения. Они устроены по принципу люминесцентных ламп, в которых подобрана смесь люминофоров так, чтобы в сумме давать нечто близкое к дневному свету. У менТ на столе лежит произведение российских умельцев из фирмы "Фотоника" — обычный, даже не слишком красивый карманный аккумуляторный фонарик, в котором вместо лампочки стоят рядом три таких белых светодиода. Светит он послабее, чем обычный "китайский" с лампочкой накаливания (при новых батарейках), зато за полтора года использования я заряжал его всего два раза — это при том, что в нем используются древние и очень плохие отечественные никель-кадмиевые аккумуляторы-таблетки Д-0,5! Непрерывное свечение (почти без снижения яркости до полного истощения), как уверяют изготовители, на одной зарядке составляет 52 часа. Скорее аккумулятор скончается своей смертью, чем что-то в нем сломается! Рис. 7.7. Диодная оптопара Оптоэлектроника Результаты исследований в области влияния света на полупроводники породили еще одно направление — оптоэлектронные приборы (оптроны), многие из которых представляют, в сущности, не что иное, как уже знакомые нам реле — только без всяких соленоидов и якорей. Идея там такая: через светодиод (обычно инфракрасный), расположенный рядом с воспринимающим свет р-п-переходом, пропускается зажигающий его ток, в результате чего в воспринимающем р-п-переходе ток резко возрастает. Между входным светодиодом
Ошеломляющее разнообразие электронного мира. Реле, стабилитроны...119 и выходом при этом имеется хорошая изолирующая прокладка, которая позволяет гальванически развязать выводы входа и выхода — как в электромеханическом реле. Самый простой вариант такого прибора — диодная оптопара (рис. 7.7), которая обычно служит для электрически изолированной передачи линейных сигналов (например, звуковых колебаний или уровней постоянного тока в регулирующих устройствах), потому что в ней обратный ток (4ых) приемного диода с большой точностью линейно зависит от управляющего тока через светодиод (/вх). Но есть и варианты обычного реле: так, оптоэлектронное реле типа D24125 фирмы Crydom позволяет коммутировать сетевой переменный ток до 280 В при 125 А путем подачи напряжения 3—5 В при токе 3 мА через управляющий светодиод (т. е. прямо от логической микросхемы). 10 мВт напрямую управляют мощностью примерно в 35 кВт (при полной гальванической развязке) — ей-богу, совершенно беспрецедентный случай, обычным электромагнитным реле недоступный!
Глава 8 Подбираем детали. Откуда взять информацию, как грамотно найти замену и где приобрести Г-н де Тревиль только что известил их, что ввиду твердого намерения его величества начать военные действия первого мая им надлежит немедля приобрести все принадлежности экипировки. А. Дюма, "Три мушкетера" Прежде чем перейти к собственно конструированию электронных схем, хорошо бы знать, откуда взять компоненты. Опыт показывает, что рядовых начинающих радиолюбителей обычно ставит в тупик отсутствие указанного на схеме конденсатора в 100,0x6,3 В, транзистора КТ680А или диода 1N4001, и они начинают "рыть землю" в поисках знакомых и магазинов, где можно именно такой приобрести. В большинстве случаев компоненты спокойно заменяются аналогичными, и проще потратить небольшие деньги, чтобы заранее обзавестись соответствующими справочниками, чем бегать по рынкам и магазинам или неделями ждать, пока вам за бешеные бабки пришлют по почте заказанную где-нибудь в Техасе микросхему. Это касается большинства компонентов — конечно, есть уникальные случаи, когда нужна именно вот эта микросхема, и ничего тут не поделаешь (в большинстве случаев "именно вот эту" микросхему все-таки заменить можно, но это связано со столь глобальной перестройкой всего схемотехнического решения, что проще повозиться с ее доставкой). Далее приведены общие рекомендации, основанные на многолетнем опыте автора, начавшем работать еще в те времена, когда детали нужно было заказывать в каком-нибудь Академснабсбыте за полтора года до возникновения самой задачи конструирования прибора, а характеристики добывались из радиолюбительских справочников, которые были одним из самых популярных видов изданий наряду с фантастикой и английскими детективами. Поневоле приходилось выворачиваться. Думается, что во многом именно поэтому советская инженерная школа до сих пор — одна из лучших в мире. Необходимость выживания весьма способствует квалификации! 5 Зак. 710
Прежде всего, об информации: для отечественных деталей по-прежнему надо покупать бумажные справочники. И иметь их под рукой! Отличным справочником, кстати, является каталог торгующей фирмы "Чип и Дип" (а еще лучше — их сайт www.chip-dip.ru). А вот для импортных, ввиду разнообразия, никаких справочников и каталогов фирм не напасешься (хотя в том же каталоге "Чипа-Дипа" кое-что можно найти, но без многих существенных подробностей), но они и не очень требуются: Интернет гораздо удобнее. Правда, для этого надо знать азы английского, а лучше — приобрести англо-русский словарь по радиоэлектронике. Если вы в английском "ни бум-бум", то помочь тут ничем нельзя, придется пользоваться только отечественными компонентами, крохами с сайтов и из каталогов отечественных торгующих фирм или рекомендациями из литературы. Чтобы немного облегчить этот процесс, в приложении 8 приведен перевод некоторых часто встречающихся терминов с английского на русский и обратно. Этим словарем можно пользоваться при поиске в Интернете. Методика такая: набираете название компонента в любой поисковой системе (например, в Google), привосокупив к нему два волшебных слова "Data Sheets" (по смыслу это можно перевести, как "спецификации" или "техническое описание"), и, как правило, сразу попадаете на сайт производителя. На сайте любого импортного производителя электронных компонентов всегда имеется исчерпывающая информация обо всех производимых компонентах. Не всегда информация эта организована удобно, так что тут вполне подходит поговорка "терпение и труд все перетрут". Помните, что в данном случае рекламный слоган Яндекса "найдется все" очень точно отражает сущность явления — как ни в какой другой области. Какие бумажные справочники нужно иметь под рукой? Я кратко их перечислю по группам компонентов без указания конкретного издания, потому что похожих изданий очень много, и все они практически равноценны. Итак, самые необходимые справочники: □ диоды, стабилитроны и тиристоры; □ отечественные транзисторы и их зарубежные аналоги; □ оптоэлектронные приборы; □ отечественные микросхемы и их зарубежные аналоги. В приложении 4 вы найдете справочные данные по некоторым компонентам, упоминаемым в этой книге. Замена Теперь мы знаем, где искать характеристики — и что? А далее все очень просто — если нужного компонента нет под рукой, то мы выбираем по прин
ципу "не хуже". В 99% случаев — не ошибетесь, но, конечно, бывают уникальные ситуации, от которых никто не гарантирован. Что означает "не хуже" для разных компонентов? Резисторы Почти всегда взаимозаменяемы, если только мощность не ниже оригинала. Исключение составляют прецизионные резисторы, но в макетных целях всегда можно применить и обычный С1-4 или МЛТ близкого номинала, имея в виду потом заменить его на прецизионный. Еще одно исключение — высокочастотные схемы, где лучше следовать рекомендациям разработчика схемы. Рис. 8.1. Различные типы резисторов. Вверху: сравнительные размеры резисторов разной мощности (слева направо: 0,125; 0,25; 0,5; 1; 2 Вт; остеклованный резистор 10 Вт). В середине: резисторная сборка из восьми резисторов 0,125 Вт в одном корпусе. Внизу: различные переменные и подстроечные резисторы
Конденсаторы Электролиты всегда заменяются на электролиты другого типа с учетом того, чтобы рабочее напряжение не было ниже оригинала. В этом отношении следует иметь в виду, что чем выше рабочее напряжение и емкость, тем больше для электролитов вредный аккумуляторный эффект "памяти", описанный в главе 5. А вот для неэлектролитических конденсаторов этого эффекта не существует, и чем выше рабочее напряжение, тем лучше — но тем больше и габариты. Во всех случаях электролиты лучше применять ниобиевые или танталовые (К52, К53) — у них, в частности, значительно меньше эффект памяти, а частотные характеристики приближаются к неполярным керамическим, однако, и в смысле массогабаритных характеристик, и особенно по стоимости, они намного отстают от самых распространенных в настоящее время алюминиевых электролитов, известных под отечественным названием К50-35. Учтите, что алюминиевые электролиты с одинаковыми номинальной емкостью и рабочим напряжением, но производства разных фирм, могут довольно сильно отличаться размерами — иногда более, чем в два-три раза! Пример такого различия приведен внизу слева на рис. 8.2. Рис. 8.2. Сравнительные размеры конденсаторов. Внизу: электролитические конденсаторы К50—35 (справа — налево: 6800 мк х 35 В; 2200 мк х 35 В; 2200 мк х 16 В; далее два идентичных конденсатора 100 мк х 16 В, но производства разных фирм). Вверху: слева — электролитический конденсатор К50—35 3,3 мк х 25 В; справа — близкий к нему по допустимому напряжению неполярный конденсатор К73—17 3,3 мк с лавсановым диэлектриком
Для электролитов рабочее напряжение на схеме указывается обязательно, а для остальных типов — только если оно критично. Для рядовых керамических конденсаторов (типа отечественных КМ-5, КМ-6 или К10-17) обычно рабочее напряжение составляет 35—50 В, и если у вас напряжение в схеме выше, то следует этот параметр проверить по справочнику (напряжение на корпусе низковольтных неполярных конденсаторов не указывается). Для использования во времязадающих или интегрирующих цепях наилучшими являются фторопластовые (ФТ или К72) или лавсановые (полиэтилентерефталатные — К73) конденсаторы, но габаритные размеры и стоимость их оставляют желать лучшего, поэтому в некритичных случаях следует употреблять керамические. Технология не стоит на месте, и на моей памяти керамические конденсаторы типа КМ-6 уменьшились в размерах примерно раз в пять при той же емкости и рабочем напряжении. Я здесь привожу только отечественные наименования типов просто потому, что технологии в этой области во всем мире одинаковы, и если вы придете в "Чип-Дип" и попросите конденсатор типа КМ-6—1 мкФ, то вам могут продать изделие, которое изготавливалось на Тайване, в Белоруссии, в подмосковном Томилино или даже в Японии — они мало чем отличаются друг от друга. Микросхемы Имейте в виду, что в области самых ходовых разновидностей микросхем фирм-монополистов очень мало, и для 99% типов микросхем всегда найдется функциональный аналог другой фирмы — надо только иметь терпение его найти. Для самых ходовых типов — логических микросхем, стабилизаторов питания, операционных усилителей — часто совпадают даже названия и цоколевка (т. е. разводка выводов). Для всех отечественных микросхем, за редчайшими исключениями, найдется полный зарубежный аналог. Единственное, что надо иметь в виду при замене отечественных микросхем на импортные — у нас был принят метрический шаг между выводами, кратный 1,25 мм (для планарных корпусов) или 2,5 мм (для корпусов типа DIP1), а на Западе аналогичные корпуса делаются по дюймовой разметке, т. е. соответственно, 1,27 и 2,54 мм. Это не приносит больших неприятностей для микро 1 Разумеется, названия корпусов DIP, SOIC, SOT и другие "импортные" названия применимы только к импортным же микросхемам, однако соответствующие отечественные корпуса микросхем имеют столь замысловатую систему обозначений (например, корпус DIP-14 в одном из вариантов называется 201.14, a DIP-16 — 238.16, такая же путаница и с планарными корпусами SOIC и SOT), что для удобства и унификации мы будем в этой книге пользоваться исключительно западными названиями корпусов; еще одна причина в том, что найти чертежи любого импортного корпуса намного легче, чем отечественного. При этом нужно учитывать замечание относительно шага между выводами.
схем с количеством выводов до 16-ти, т. к. разница мала, но для корпусов с 20-ю выводами и более при разводке платы нужно всегда иметь в виду, какую именно микросхему вы будете использовать — отечественную или импортную. В самом деле, в широко распространенном корпусе DIP-40 в один ряд располагаются 20 выводов, поэтому разница на всей длине ряда выводов может составить почти целый миллиметр. Отсчет выводов для всех без исключения микросхем осуществляется одинаково— на корпусе обязательно есть т. н. "ключ", от которого ведется отсчет. Если положить микросхему вверх маркировкой, то против ключа (или первым против часовой стрелки от него) будет ножка номер 1, а дальше отсчет ведется против часовой стрелки в обход корпуса, таким образом, у микросхемы с 16-ю выводами напротив ножки номер 1 на другой стороне корпуса будет ножка номер 16. Ключ может представлять собой вырез в корпусе, точку или скос на корпусе, вырез или утолщение на самом выводе и т. п. Не единственное, но самое важное исключение из замечания об отсутствии монополизма производителей составляют микроконтроллеры и микропроцессоры почти всех типов. Про микропроцессоры для ПК усилиями компьютерной прессы и так все всё знают, а среди микроконтроллеров есть, пожалуй, только один-единственный тип из широко применяющихся, который выпускается многими фирмами почти в неизмененном виде, хоть и в разных вариациях — это семейство х51. Первоначально его выпустила фирма Интел еще лет двадцать пять назад под названием 8051, и он стал настолько популярен, что теперь его аналоги продолжают выпускаться почти всеми крупными производителями полупроводниковой продукции (даже и отечественными), хотя сама Интел уже отказалась от производства и развития этой серии. Практически все остальные микроконтроллеры (а их более 100 семейств) уникальны для каждого производителя и обычно заменены быть не могут. Но в таких случаях, как правило, не возникает и проблем с их приобретением. Транзисторы В подавляющем большинстве случаев номенклатура отечественных транзисторов способна удовлетворить самого взыскательного разработчика. Я это пишу не для того, чтобы "поддержать отечественного производителя", а потому, что так и есть — на практике достаточно располагать пятком-десятком типов транзисторов, чтобы этого хватило почти на все случаи жизни. Среди маломощных транзисторов это упоминавшийся в главе 6 КТ3102 (КТ3107 — далее в скобках указывается комплементарный2 р-п-р вариант). Лично мне 2 Комплементарный — букв, дополнительный, означает транзистор с такими же характеристиками, но противоположной полярности.
очень нравятся архаичные маломощные транзисторы КТ315 (КТ361)— они имеют малые размеры и легко вписываются в современные платы с микросхемами, потому что у них шаг между выводами 2,5 мм, и расположены выводы в одной плоскости. Хороши невзыскательные и дешевые транзисторы средней мощности в корпусе ТО-1263 — КТ815 (КТ814) или КТ817 (КТ816), если требуется ток до 1—2 А. Среди мощных транзисторов можно отдать предпочтение КТ819 (КТ818) или, когда требуется "супербета" — КТ829 (п-р-п), а также очень мощной комплементарной паре КТ827 (КТ825). Выпускаются почти все упомянутые типы мощных транзисторов в основном в корпусах типа ТО-220, но самая мощная пара КТ827-КТ825, к сожалению, доступна только в металлических корпусах ТО-3. Конечна ТО-3 лучше, чем дешевый ТО-220, т. к. рассеиваемая мощность раза в 2—4 выше — типовая мощность транзистора в корпусе ТО-220 равна 20—45 Вт (иногда — до 60, как у КТ829), а в корпусе ТО-3 — 80—125 Вт. Но ТО-3 намного неудобнее в технологическом плане, потому что крепление к теплоотводящему радиатору гораздо сложнее и готовый радиатор подобрать под них нелегко. Да и мощности такие требуются нечасто. К сожалению, другой мощной отечественной комплементарной пары с "супербетой" нет4, поэтому мы в наших схемах будем пользоваться импортной парой под названием BDW93C (BDW94C), которые выпускаются в корпусах ТО-220. Если вы ее не достанете, то ее можно заменить на аналогичную другой фирмы, но не забывайте, что дарлингтоновский транзистор всегда можно изготовить самостоятельно (см. рис. 6.5), в данном случае п-р-п-транзистор BDW93C заменяется на составной из КТ815 и КТ819, a p-n-p BDW94C— на КТ814 и КТ818, правда, с некоторым снижением параметров, но для нас это будет несущественно. Учтите, что в этом случае оба транзистора, составляющие дарлингтоновскую пару, должны устанавливаться на один радиатор, но т. к. они соединены коллекторами, то это проблем не вызовет, и изолирующая прокладка не потребуется. В следующих главах мы об этом еще поговорим. Все сказанное относится к низкочастотным транзисторам, которые можно употреблять для источников питания в качестве ключей управления индикацией или для усилителей звуковой частоты. Для применения в других целях, где требуется быстрое срабатывание в ключевом режиме или высокие частоты усиления, такие транзисторы, естественно, не годятся, и тут точных рекомендаций на все случаи жизни дать нельзя. Учтите только, что транзисторы J Для удобства мы употребляем западные наименования корпусов транзисторов (см. также сноску 1 в этой главе). Любопытствующие могут узнать соответствие некоторых отечественных корпусов транзисторов импортным из приложения 4. Учтите, что, как и для микросхем, имеется некоторая разница в шаге выводов, хотя в данном случае она практически не заметна. 4 Если я ошибаюсь, пусть меня поправят.
в одинаковых корпусах обычно имеют близкую мощность, и всегда можно попробовать заменить неизвестный импортный транзистор на похожий по внешнему виду из того, что есть под рукой. Рис. 8.3. Различные типы корпусов транзисторов При замене следует учитывать, что с корпусом мощного транзистора всегда электрически соединен его коллектор (если это корпус ТО-220, то коллектор — всегда средний контакт), а вот разводка двух оставшихся выводов может различаться, и ее нужно обязательно проверять по справочнику. Диоды С диодами еще проще, чем с транзисторами — главное, чтобы не превышался допустимый прямой ток и допустимое обратное напряжение. Причем чем меньше диод по размерам, тем лучше — у него тогда меньше паразитный обратный ток. Иногда важна частота переключения — если диод используется, например, в схеме высокочастотного выпрямителя. Обычные выпрямительные диоды имеют максимальную частоту переключения от одной до пары десятков килогерц, что может привести к слишком большим потерям, если вы выпрямляете напряжение в преобразователе-инверторе, работающем на частоте килогерц этак 50. Эту особенность нужно учесть при выборе и диодов, и транзисторов для выпрямительных или переключающих схем. Как мы уже говорили в главе 6,
Подбираем детали. Откуда взять информацию, как грамотно найти замену...129 предельная рабочая частота, указанная для прибора в справочнике, должна не менее чем раз в десять-двадцать превышать частоту в вашей схеме, иначе он будет работать, как фильтр низкой частоты. Так, например, для упомянутых выше транзисторов КТ815 граничная рабочая частота составляет 3 МГц, поэтому их следует употреблять в схемах, где важны частоты не более 100—300 кГц. Иначе вместо, скажем, прямоугольного импульса на выходе усилительного каскада на таком транзисторе, вы получите нечто, похожее на синусоиду! Из маломощных диодов для применения во всех наших схемах можно рекомендовать очень удачный тип КД521, который, несмотря на малые размеры, может пропускать ток до 500 мА, работает при обратных напряжениях 40—70 В (в зависимости от буквы) и при частотах до десятков мегагерц. В качестве выпрямительных можно рекомендовать распространенные и дешевые импортные диоды серии INxxxx, которые могут работать при токах от 1 до 6 А и при напряжениях от 50 до 1000 В. Среди отечественных очень удобен выпрямительный мост (см. главу 10) под названием КЦ407А на ток 500 мА и напряжения до 400 В — он хорошо вписывается в современные платы. Надежность Большинство компонентов (особенно это касается полупроводниковых приборов) выпускается в нескольких вариантах исполнения — коммерческом, промышленном, военном, — различающихся в основном рабочим температурным диапазоном. Наиболее распространены и дешевле всего стоят приборы коммерческого исполнения. В СССР это называлось бытовым диапазоном, и сопровождалось буковкой К, прибавляемой к названию микросхемы. Не имеет смысла приводить отечественные особенности наименования разных компонентов, заметим только одно — если название отечественного прибора начинается с цифры, то это промышленный (военный) диапазон, если с буквы — бытовой (например, для транзисторов название КТ означает просто "кремниевый транзистор", а 2Т — то же самое, но в промышленновоенном диапазоне условий окружающей среды). Впрочем, в отличие от западных, советские компоненты в военном и бытовом вариантах, кроме температурного диапазона, могут иметь и другие несколько отличающиеся характеристики, отчего в справочниках они приводятся обычно отдельно. Коммерческие компоненты гарантированно работают при температурах от 0 до 70 °C. Промышленный диапазон обычно составляет -40 + +85 °C (а иногда и значительно шире, транзисторы или микросхемы стабилизаторов питания, скажем, спокойно работают до +125 °C и выше). Но не следует думать, что микросхема коммерческого диапазона сразу выйдет из строя, если вы ее
охладите до -30 °C или нагреете до +100 °C. Вовсе нет — делаются они обычно на одной линии (кроме каких-нибудь экстремально-космических применений, да и то не всегда), просто производитель не гарантирует, что в расширенном температурном диапазоне данная микросхема сохранит все оговоренные в описании характеристики. В большинстве случаев, если схема построена правильно, на это наплевать — но в критичных случаях (например, если вы хотите, чтобы ваше устройство работало годами на улице) все же следует употреблять микросхемы соответствующего диапазона температур. Достать, кстати, их непросто — обычно приходится заказывать. К чему мы и перейдем. Где покупать Как говорят в южных районах нашей страны: "та хде уходно". Радиокомпоненты отличаются от, к примеру, грузинских вин, тем, что подделывать их сложно и невыгодно — за исключением, разве что, дорогих брэндовых моделей микропроцессоров для ПК. Да и то последние не подделывают в обычном смысле этого слова (для этого надо, как минимум, иметь фабрику стоимостью миллиарда в три "вечнозеленых"), а перемаркируют — например, пишут рабочую частоту выше действительной. Иногда в розницу попадает производственный брак, неизвестными путями утекающий в руки "ханыг" с заводов, расположенных не только на просторах того, что теперь называется СНГ, но и в более законопослушных местностях. Но, в общем, купить подделку сложно. Хотя мне однажды пришлось выбросить десяток транзисторов, потому что у них ножки были незалужены, но даже если и удавалось припаять такой транзистор, то он все равно не работал. Судиться с известной конторой, где было это приобретено, я не стал — сумма покупки составляла рублей двадцать, и времени было жалко. Хотя стоило бы. Поэтому ответ на вопрос "где приобретать?" зависит от ваших финансовых возможностей и времени. В неоднократно упомянутом "Чипе-Дипе" сервис поставлен очень хорошо — и сайт хорош (где указывается даже наличие интересующего вас прибора на данный момент в одном из четырех московских радиосупермаркетов этой фирмы), и интернет-магазин имеется, и продавцы-консультанты на уровне. Можно также заказать то, чего в наличии на данный момент нет, причем там "морду не воротят", даже если вы закажете два прецизионных резистора на сумму 50 копеек, а послушно выполнят заказ. Единственным недостатком этой фирмы являются высокие в среднем цены — иногда раза в два, а то и в три превышающие цены производителя или рынка (но, кстати, в некоторых других случаях почему-то ниже, чем даже на рынках). Но за удобства приходится платить!
В Москве другим вариантом являются радиорынки, из которых наибольшую известность получил рынок в Митино. Сегодняшнее Митино во многом испортилось, потому что его заполонили продавцы краденых сотовых телефонов, а также телевизоров с микроволновыми печами и утюгами, но все же, если иметь терпение, там, как в Яндексе, можно найти все. Этот вариант подходит, если вы хотите найти что-то экзотическое, и, кроме того, только на рынках можно в розницу купить разноцветные монтажные провода или разнообразные макетные платы. Фирменные магазины их не держат из-за низкого спроса, а покупать оптом — ну кому из радиолюбителей может понадобиться сразу километр провода МГШВ? Наконец, третьим вариантом служат многочисленные мелкие фирмы, в основном представленные в Интернете (и, кстати, как правило, имеющие прилавок-другой в Митино). Там вам предложат все что угодно и по низкой цене, многие из них являются официальными дистрибуторами зарубежных производственных фирм — единственным недостатком этих фирмочек является то, что складские запасы у них минимальны, и если вам нужно что-то немедленно, то, как правило, приходится либо ждать месяц-другой, либо выбирать из имеющегося. Естественно, что в радиолюбительстве цена компонента (когда он стоит пять или даже пятьдесят рублей) не имеет столь высокого значения, как в массовом производстве. Поэтому часто время выполнения заказа здесь играет определяющую роль. В этом смысле очень хорошо бы воспользоваться каталожными западными фирмами (типа RS-components или Famell), но, к сожалению, доставка заказа в Россию все равно составляет недели две минимум (это притом, что в Европе или Америке эти фирмы доставляют заказ максимум за сутки — прямо к порогу), а цена возрастает раза в три-четыре (а бывает и в десять — помню панельки для микросхем, которые продавали по каталогу Farnell за пять — восемь долларов штука, в то время как в "Чипе-Дипе" они стоили 12 рублей при курсе 25 руб./доллар). Наши отечественные интернет-магазины работают не хуже и имеют более низкие цены, только разве что в сроках не так надежны. Еще совет — делайте запасы. Если вам требуется один транзистор — покупайте два, если десять — покупайте двенадцать. Если вы увидели в продаже симпатичный радиатор для транзисторов — купите сразу два или четыре. Когда вам он вдруг понадобится — обегаете всю Москву и обыщете весь Интернет — не найдете. Это закон природы из серии законов Мэрфи: то, чего требуется срочно, никогда нет в продаже. Самый простой способ пополнения запасов — не выбрасывать макеты, а аккуратно выпаивать из них детали и раскладывать в соответствующие ящички. Для сохранности микросхем и прочих деталей с большим количеством выводов, а также для удобства замены
деталей при отладке схемы, при изготовлении макета их следует не впаивать в плату, а устанавливать в специальные панельки (см. главу 12), которые продаются для всех видов корпусов. Ничего страшного, если макет ваш потом пойдет в дело — пусть так на панельках и останутся. Вы будете чувствовать себя много комфортнее, если знаете, что для осуществления пришедшей в голову воскресным утром идеи вам не надо ждать до открытия магазинов в понедельник, а макет можно сделать прямо сейчас. Разумеется, не нужно перебарщивать, иначе супруга или мать постепенно постарается вас выселить из квартиры вместе с вашим "хламом", но запас всегда следует иметь. Особенно это касается самых ходовых деталей, таких как резисторы или конденсаторы. Для резисторов продаются специальные кассы — ящички с отделениями, и такую кассу (ее легко сделать самим из спичечных коробочек) следует иметь, чтобы всегда была возможность легко подобрать необходимое сопротивление. А вот для прецизионных резисторов кассу создать затруднительно — вряд ли у вас хватит денег, желания и места в шкафу, чтобы заранее запастись всеми ста девяноста двумя номиналами в каждой декаде (это составляет для резисторов от 10 Ом до 1 МОм порядка тысячи номиналов, причем иметь по одному экземпляру недопустимо — нужно иметь под рукой как минимум десяток каждого, а для самых ходовых и по два-три десятка). Поэтому прецизионные резисторы вообще выбрасывать не следует — их нужно аккуратно выпаивать и складывать. Избавляясь от старых макетов или приборов, не забывайте про еще один святой вариант закона Мэрфи: 1. Если что-то лежит достаточно долго, то это можно выбросить. 2. Как только вы что-то выбросите, это вам немедленно понадобится. И последний настоятельный совет: не приступайте к работе, пока все детали не будут под рукой или, по крайней мере, вы совершенно точно не убедитесь (по телефону, электропочте или лично— каталогам не доверяйте), что выбранную деталь можно приобрести без проблем. Сначала купите, закажите детали по почте или через интернет-магазин, дождитесь подтверждения заказа, потом приступайте к окончательному оформлению схемы. Мы живем не на Западе, где можно устроить скандал, если данная деталь анонсирована в каталоге, но ее не оказалось на складе — и там вам ее с извинениями назавтра бесплатно доставят прямо на рабочее место (но и на Западе сплошь и рядом бывают накладки). Особенно это предупреждение касается раскладки печатных плат. В подавляющем большинстве случаев можно подыскать функциональный аналог другой фирмы, немного изменить схемотехническое решение или принять еще какие-то меры, но если вы уж выбрали микросхему операционного усилителя МАХ478 в корпусе SOIC, то ту же микросхему
в корпусе DIP вы в готовую плату не пристроите никак, и потом можете мыкаться неделями, тратя время, нервы и деньги на то, чтобы достать нужное. Я уже упоминал, что размеры электролитических конденсаторов могут сильно разниться в зависимости от производителя, и легко попасть в нелепую ситуацию, когда на макете конденсатор был одного размера, а приобретенный для окончательного варианта схемы не влезает в отведенное место на каких-то пол миллиметра, упираясь в радиатор мощного транзистора. А, к примеру, у светодиодных цифровых индикаторов, в отличие от ходовых микросхем, даже не существует единого стандарта разводки выводов — если вы выбрали по каталогу индикатор одной фирмы, то совершенно идентичный по внешнему виду индикатор другой фирмы может просто не влезть в отведенные отверстия! Хорошие раскладчицы печатных плат даже требуют, чтобы образцы всех критичных компонентов приносили им в натуре, не дсйверяя справочникам.
Глава 9 Звуковой усилитель без микросхем. Первые шаги — Они виделись, — произнес он. — Кто? — спросил кардинал. — Она и он. А. Дюма, "Три мушкетера" Казалось бы, конструировать звуковые усилители в наше время — дело мало кому нужное, чистое развлечение. Но это не совсем так: во-первых, усилители в дешевых бытовых приборах качеством не отличаются, а у высококачественных мощных усилителей (класса Hi-Fi — от английского high fidelity, что значит "высокая верность") цена может зашкаливать далеко за— как выражаются маркетологи — психологический барьер с тремя нулями на конце. Причем цена эта на самом деле не слишком обоснована и обусловлена обычно исключительно рыночными соображениями. Тот самый случай, когда собственная разработка не только греет душу, но и становится экономически целесообразной. Однако эта книга не посвящена аудиотехнике, поэтому мы разберем только базовую схему усилителя мощности звуковой частоты (УМЗЧ), на основе которой делается большинство более качественных конструкций. Схема Рассмотрим схему на рис. 9.1. Это схема простейшего транзисторного УМЗЧ, стабилизированного обратной связью, с двуполярным питанием ± 15 В. Усилитель охвачен отрицательной обратной связью (см. главу 14) с выхода на вход, которая по постоянному току стопроцентная: т. к. ток через конденсатор С2 не течет, то резистор R4 спокойно можно считать "висящим в воздухе", выход с эмиттеров выходных мощных транзисторов VT4-VT5 просто присоединен (через резистор R5) ко второму входу дифференциального входного усилителя и имеет практически одинаковый с ним потенциал. Из главы 6 мы знаем, что все эмиттерные и базовые выводы дифференциального усилителя связаны между собой, поэтому легко понять, что на базовом
выводе VT2 будет (при отсутствии сигнала) то же напряжение, что и на базе VT1, которая привязана к "земле" резистором R1 — т. е. нулевой относительно "земли" потенциал (на самом деле он будет чуть-чуть отличаться, но нам сейчас это неважно). Так как выход усилителя (эмиттеры выходных мощных транзисторов) также привязан к этому же потенциалу, следовательно, на выходе в состоянии покоя будет практически нуль напряжения и через динамик ток не пойдет. Ток покоя дифференциального каскада задается резистором R3 и равен примерно 2 мА (учтите, что потенциал соединенных эмиттеров чуть ниже потенциала баз). За счет того, что базы имеют одинаковый потенциал, равны и коллекторные токи VT1 и VT2, т. е. они составляют по 1 мА. Тогда на базе р-п-р транзистора VT3, включенного по самой простой схеме усиления напряжения с общим эмиттером, за счет резистора R2 потенциал составит как раз величину падения на его переходе база-эмитер, и он будет слегка приоткрыт, обеспечивая за счет тока в коллекторе потенциал на резисторе R6 такой, чтобы держать на эмиттерах комплементарных выходных транзисторов (одинаковых, но противоположной полярности — один п-р-п, другой р-п-р-типа), включенных по схеме с общим коллектором, потенциал, равный нулю. Смысл диодной цепочки между базами выходных транзисторов мы рассмотрим ниже. Рис. 9.1. Классическая схема усилителя звуковой частоты Подадим на вход сигнал в виде переменного напряжения (конденсатор С1 нужен, чтобы не пропускать постоянную составляющую). Переменное
напряжение пройдет через конденсатор С1 (ток перезарядки пойдет через резистор R1) и начнет менять потенциал на базе транзистора VT1. Одновременно изменится ток коллектора этого транзистора, отчего будет меняться падение напряжения на резисторе R2 и базе р-п-р транзистора VT3. Предположим, что в какой-то момент напряжение на входе возросло, соответственно на резисторе R2 напряжение упадет, транзистор VT3 приоткроется, ток коллектора его вырастет и соответственно вырастет напряжение на резисторе R6 и на соединенных диодной цепочкой базах выходных транзисторах. При этом верхний (по схеме) выходной транзистор VT4 приоткроется, а нижний VT5 призакроется, отчего напряжение на выходе также сместится в положительную сторону (т. к. пара выходных транзисторов, в сущности, представляет собой усложненный эмиттерный повторитель, то сигнал она не инвертирует). При перемене полярности на входе все произойдет в обратную сторону. Таким образом, входной сигнал передается на выход с неким коэффициентом усиления — как по току, так и по напряжению. Сразу возникают вопросы: первый с каким? Второй вопрос — а зачем здесь нужна, во-первых, обратная связь, во-вторых, диоды в базовой цепи выходных транзисторов, в-третьих, низкоомные резисторы (R7-R8) в эмитгерных цепях на выходе? Давайте начнем с обратной связи. По постоянному току, как мы уже выяснили, обратная связь обеспечивает стабильность выходного напряжения покоя — ток через динамик не идет. Кроме того, эта обратная связь поддерживает в нужном режиме транзистор VT3, который в отсутствие ее, как мы видели в главе 6, находился бы в исключительно нестабильном состоянии. Что происходит при подаче переменного напряжения на вход? Так как при этом конденсатор С2 начинает представлять собой малое сопротивление, то часть выходного напряжения (обусловленная цепочкой R5—R4, т. е. одна тридцатая его) подается обратно на вход дифференциального усилителя в противофазе ко входному сигналу. Эта часть вычитается из входного сигнала и тем самым уменьшает его. Это могло бы показаться бессмысленной тратой ресурсов, но такое состояние вещей обеспечивает стабильность и предсказуемость схемы — фактически коэффициент усиления этого усилителя по напряжению на звуковых частотах определяется соотношением R5—R4, т. е. равен примерно 30 (добавим, что максимально достижимый коэффициент при рядовых используемых транзисторах составляет примерно 2—3 тысячи, но такая схема без обратной связи работала бы исключительно нестабильно — скорее всего, динамик бы сгорел еще при первом включении). У таких схем есть одна нехорошая особенность — из-за собственных емкостей и индуктивностей участвующих в деле компонентов (и переходов транзисторов, и резисторов, и проводников в макетном монтаже или на печатной плате) фаза обратной связи за счет задержек в элементах схемы на некоторых
частотах (причем даже и много выше звуковых) может меняться с отрицательной на положительную, когда часть выходного переменного напряжения не вычитается из входного сигнала, а складывается с ней, отчего схема начинает "гудеть" при включении питания. "Гудение" это может и не восприниматься на слух, и вы даже не поймете, отчего вдруг выходные резисторы R7—R8 чернеют и дымятся, а динамик выдает "чпок" и после замолкает навсегда. Происходит там следующее: малая наводка на вход вызывает на выходе сигнал, который передается опять на вход, но на этот раз не в виде отрицательной обратной связи, когда выходной сигнал вычитается из входного, а за счет упомянутых задержек фаза получается такой, что выходной сигнал складывается со входным — и усилитель переходит в режим генерации. Похожий, но имеющий другие физические причины эффект может получиться, если вы подключите ко входу усилителя микрофон — звук от динамика попадает обратно в микрофон и усиливается, если он совпадает по фазе. Несомненно, вы не раз встречались с этим "микрофонным эффектом", если пытались наладить систему микрофон-усилители в большом зале, и слышали в этом случае нарастающий свист. Для предотвращения микрофонного эффекта иногда достаточно бывает заслонить микрофон рукой или поместить его в поролон, или даже просто изменить полярность подключения динамиков на выходе. Но по большому счету для предотвращения этих явлений принимаются специальные схемотехнические меры. Для ограничения коэффициента усиления по высокой частоте в цепь обратной связи включен конденсатор С4 (показан на схеме пунктиром), который ограничивает коэффициент передачи по цепи обратной связи — чем его номинал больше, тем больше ограничивает. Так как его емкость много меньше, чем конденсатора С2, то коэффициент передачи по цепи обратной связи все равно (на любых частотах) больше единицы, и усиление имеет место, но С4 обеспечивает завал усиления на высоких частотах (чем он больше, тем ниже усиление с ростом частоты, что и предотвращает нежелательное "гудение" усилителя на высоких частотах). Вторая обязательная мера — правильная разводка питания. Выходные мощные каскады усиления (спаренный эмиттерный повторитель на комплементарных транзисторах) должен питаться от отдельных достаточно толстых проводов (не менее 1 мм — чем толще, тем лучше), соединенных прямо с источником питания, а входной дифференциальный каскад и "раскачивающий" транзистор VT3 должны быть также соединены с источником отдельными проводниками. В точках соединения проводника "плюс 15 В" с коллектором VT2, резистором R2, эмиттером VT3 (на плате или макете они должны быть физически как можно ближе друг к другу), а также в точке соединения проводника "минус 15 В" с резисторами R1 и R2 желательно установить "развязывающие" керамические конденсаторы, соединенные с "землей" (на схеме не показаны). Емкость этих конденсаторов может составлять 0,5—2 мкФ, но можно
использовать и электролитические более высокой емкости, причем в данном случае лучше не пожалеть денег и применить, скажем, танталовые конденсаторы К52. "Землю" также следует разводить как можно более толстыми проводниками с аналогичной разводкой. Все эти нюансы, связанные с правильной разводкой питания, мы еще будем довольно подробно разбирать в следующей главе. Выходные проводники к динамику также делаются как можно более толстыми. Все соединительные провода в схеме должны быть как можно короче, а вход должен соединяться со входным разъемом и регулирующим резистором экранированным проводом, экран которого будет "землей" входного сигнала. Вернемся к собственно звуковым свойствам нашего усилителя. Прежде всего, встают вопросы: какова его мощность и какие меры нужно принять, чтобы обеспечить прохождение этой мощности через выходные транзисторы и правильно сконструировать усилитель? Мощность Мощность мы будем подсчитывать довольно примитивным способом, считая, что динамическая головка, индуктивность которой не слишком велика, имеет на всех интересующих нас частотах сопротивление, равное ее сопротивлению по постоянному току (в данном случае 4 Ом). Итак, при полном размахе синусоидального напряжения на выходе усилителя амплитудное значение его может составить 15 В ("от пика до пика" — 30 В). На самом деле эта величина немного меньше, т. к. минимум два вольта теряется с каждой (положительной и отрицательной) стороны за счет падения напряжения на переходах выходных транзисторов VT4—VT5, на раскачивающем транзисторе VT3, на резисторах R7—R8 и т. п. Примем, что максимальная амплитуда на выходе может составить 13 В (при условии неискаженного синусоидального сигнала). Амплитудное значение связано с действующим значением известного нам из главы 4 соотношения через корень из 2, т. е. оно составит в данном случае 13,5/1,41 = 9,2 В. Тогда действующее значение тока составит 9,2 В/4 Ом = 2,3 А, а синусоидальная мощность 9,2 В • 2,3 А = 21 Вт. Следует подчеркнуть, что это максимально возможная мощность, которую можно выжать из этого усилителя на нагрузке 4 Ом — реальная может быть намного меньше. Для того чтобы получить указанный размах напряжения на выходе, требуется входной сигнал не менее 0,5 В (амплитудного значения), поэтому если вы подключите на вход стандартный микрофон, который обычно выдает не более единиц-десятков милливольт, такого размаха вы не получите — нужен микрофонный предусилитель. С другой стороны, подключение ко входу, например, выхода с диктофона или плеера-"дебильника", вполне может вам обеспечить такой размах. Следовательно, все выходные компоненты
нужно рассчитать так, чтобы они не сгорели при максимально возможной мощности. Прежде всего, это касается динамической головки. 4 Ом — это довольно стандартное сопротивление для динамиков, но если вы включите сюда головку 4ГД-4 (т. е. мощностью 4 Вт), то рискуете тем, что при максимальной громкости ее диффузор вместе с толкателем улетит в потолок, даже не успев сгореть. Потому головка должна быть рассчитана на нужную мощность. В данном случае не обязательно, чтобы был запас по мощности, вполне достаточно головки на 15 Вт, в реальной музыке или речи максимальные мощности практически никогда не достигаются (подробнее об этом далее), а изредка появляющиеся экстремальные значения такая головка выдержит. Куда сложнее обеспечить нормальный режим транзисторов. Кстати, о выборе транзисторов выходного каскада. Ток коллектора "раскачивающего" каскада на VT3 равен примерно 10 мА в точке покоя (когда падение напряжения на резисторе R6 составляет около 15 В), следовательно, чтобы обеспечить 3,3 А на выходе и тем самым полностью использовать возможности источника питания, нужно иметь коэффициент Й21Э более 230, именно поэтому выбраны транзисторы с "супербетой". Есть и другие выходы из этого положения (в том числе позволяющие не терять целых два вольта от питания и при этом обеспечить меньшие искажения сигнала), предложение которых— одно изящнее другого — стало своеобразным спортом в годы главенства дискретной аналоговой техники, но мы не будем это разбирать. Нас сейчас интересует построение стандартного аналогового усилителя как такового и его расчет. Рис. 9.2. Простейший каскад усиления по мощности на комплементарных транзисторах Сначала разберемся — зачем нужны диоды VD1-5 (целых пять штук!) между базами выходных транзисторов и резисторы R7—R8 между их эмиттерами?
Представьте себе, что диодов и резисторов этих не существует, и базы и эмиттеры комплементарных транзисторов соединены, как показано на рис. 9.2. Будет ли работать такая схема? Конечно, ведь если один из транзисторов открыт, то другой закрыт, а в промежутке они "перетягивают" друг друга (Хоровиц и Хилл, авторы основополагающего труда "Искусство схемотехники" [10], именно так и называют такой каскад: "push-pull", т. е. "тяни-толкай"). Но если на вход подать малый сигнал, то в пределах падения напряжений база-эмиттер создается мертвая зона, когда ни верхний, ни нижний транзистор не открыты, и оттого на выходном синусоидальном сигнале наличествует довольно большая (примерно в полтора вольта для обычных транзисторов и в три вольта для транзисторов с "супербетой") ступенька, как это отчетливо видно на рис. 9.2. Для нормального, без хрипов и искажений, воспроизведения звукового сигнала, такое, естественно, .недопустимо. Чтобы избежать этого, придется выходные транзисторы изначально слегка приоткрыть — именно для этого и служит цепочка диодов между базами. Для обычных транзисторов достаточно трех диодов, для транзисторов с "супербетой" — пяти. Такой режим включения транзисторов еще называется АВ1. При токе около 10 мА (рис. 9.3) падение напряжения на этих диодах превысит падение напряжения между базами транзисторов примерно на 0,6 В (по 0,3 В на каждый диод), отчего они слегка приоткроются, и через соединенные эмиттеры потечет небольшой ток. Теперь достаточно совсем малого сигнала, чтобы он повторился на выходе с гораздо большим током. Чтобы этот ток покоя меньше менялся с температурой, диоды следует приклеить или плотно прижать к тому же радиатору, что и транзисторы. Рис. 9.3. Вариант замены диодов на резисторы для установки начального тока покоя Более подробно различные классы усилителей рассмотрены в приложении 3.
Для достижения наилучшего эффекта можно заменить диоды подстроечным резистором (или добавить его к ним, включив параллельно или последовательно), регулируя который, вы бы обеспечивали нужный ток покоя более точно (для схемы на рис. 9.1 это порядка 50 мА). Подстроечный резистор (рис. 9.3) нужно крутить очень аккуратно при включенном в эмиттерную цепь нагрузки амперметре, чтобы не превысить ток покоя и не сжечь транзисторы. Лучшим решением, чем просто заменить диоды на резисторы, будет решение с диодами (надо на одну штуку меньше, чем по схеме) и ма-аленьким последовательно включенным подстроечным резистором (порядка 100—150 Ом). Употреблять подстроечник будет правильным только для макета, а для окончательного варианта нужно все же заменить его на соответствующий постоянный резистор, т. к. при случайном нарушении контакта в подстроечнике базовая цепь транзисторов разорвется, они оба распахнутся "на полную", и далее все будет происходить в соответствии с цитатой из книги хорошего писателя М. Анчарова: "Вы думали, что в аду воняет серой? Ничего подобного — в аду воняет горелой резиной". Правда, в аналогичной ситуации у моего знакомого транзистор самостоятельно выпаялся из макета и упал на стол, отчего цепь разорвалась и — что самое удивительное — ничего не вышло из строя, в том числе, и злополучный транзистор. Когда его, остывшего, посиневшего и полностью потерявшего внешний вид, впаяли обратно — все вновь заработало! Кратко о низкоомных резисторах R7-R8 в эмиттерной цепи (рис. 9.1), которые мы на рис. 9.2 и 9.3 вообще не показали. Теоретически они не нужны, но практически вносят некоторую долю стабилизирующей обратной связи в выходной каскад с целью лучшей стабилизации тока покоя, т. к. температурные коэффициенты диодов и эмиттерных переходов транзисторов, конечно, не равны в точности. Поскольку при токе 2 А на резисторе 0,5 Ом выделяется 2 Вт (подсчитайте сами!), то эти резисторы проще всего сделать самостоятельно из медной или нихромовой проволоки, как указано в главе 2. Чем выше номинал этих резисторов, тем выше стабильность схемы и тем лучше для линейности сигнала, но тем выше и потери мощности. О мощности выходных транзисторов Теперь разберемся с мощностью на выходных транзисторах. Посчитать ее удобно, руководствуясь понятием КПД усилителя, который в режиме АВ лежит в пределах 60—70%. Почему это так, можно себе представить из следующих соображений: напряжение на транзисторах выходного каскада в каждый момент определяется разницей между напряжением источника питания (постоянное) и напряжением на нагрузке (меняется по синусоидальному закону).
Более точный расчет см., например, [17], а также в приложении 3. Не углубляясь в математику, мы можем принять, что мощность, которая выделяется на выходных транзисторах в указанной схеме включения, примерно равна 0,7 мощности в нагрузке, т. е. по 35% на каждый транзистор (что составляет для КПД оценку около 60%). Я же лично всегда принимал мощность на транзисторах равной выходной мощности и ни разу не ошибся. Такой расчет может показаться слишком грубым, но поскольку в подобных расчетах нужно всегда закладываться на худшее, то можно считать, что на каждом из транзисторов будет выделяться по 10 Вт мощности. Разумеется, ни один реальный транзистор этого не выдержит, поэтому их надо устанавливать на рассеивающие тепло радиаторы. Причем учтите, что с корпусом транзистора, как правило, электрически соединен его коллектор, так что радиаторов должно быть два — или, как чаще делают, устанавливают один общий радиатор, но тогда должны быть электроизолирующие, но теплопроводящие прокладки между корпусами-коллекторами и радиатором. Радиаторы Сразу скажем — научно-обоснованной методики для расчета охлаждающих радиаторов не существует. По этому поводу можно написать не одну диссертацию или монографию (и написаны, и много), но стоит изменить конфигурацию охлаждающих ребер или стержней, расположить радиатор не вертикально, а горизонтально, приблизить к нему любую другую поверхность снизу, сверху или сбоку — все изменится и иногда капитально. Именно поэтому производители микропроцессоров или процессоров для видеокарт предпочитают не рисковать, а снабжать свои изделия радиаторами с вентилятором — принудительный обдув, даже слабенький, повышает эффективность теплоотвода в десятки раз, хотя большей частью это совершенно не требуется (но они поступают по закону "лучше перебдеть, чем недобдеть", и правы). Здесь мы приведем только пару-другую эмпирических способов, которые оправдали себя на практике и годятся для того, чтобы рассчитывать пассивные (т. е. без обдува) радиаторы для подобных усилителей или для аналоговых источников питания, о которых пойдет речь в следующей главе. Сначала рассмотрим, как рассчитывать площадь радиаторов, исходя из их геометрии. На рис. 9.4 показан типичный пластинчатый радиатор. Для расчета его площади нужно к площади его основания прибавить суммарную площадь его ребер (также с каждой стороны). Если нижней стороной радиатор прижимается к плате, то лучше считать рабочей только одну сторону основания, но мы предположим, что радиатор "висит в воздухе" (как часто и бывает), и поэтому площадь основания удваивается: 50СН = 2 • L\ • L2. Площадь
одного ребра (тоже с двух сторон) 5р = 2 • Ц h, но к этой величине нужно еще прибавить боковые поверхности ребра, площадь которых равна З&ж = 2 h • 8. Ребер всего 6, поэтому общая площадь радиатора будет равна S = SOCH + 6 Sp + 6 5бок-Пусть L\ = 3 см, L2 = 5 см, h = 3 см, 8 = 0,2 см, тогда общая площадь такого радиатора будет 145 см . Разумеется, это приблизительный расчет (мы не учли, скажем, боковую поверхность основания), но для наших целей точнее и не надо. Рис. 9.4. Типичный пластинчатый радиатор Вот два эмпирических способа для расчета рассеиваемой мощности в зависимости от площади поверхности, и пусть меня не слишком строго осудят за то, что никаких особенных научных выкладок вы здесь не увидите. Способ первый и наипростейший: площадь охлаждающего радиатора должна 2 составлять 10 см на каждый ватт выделяющейся мощности. Так что радиатор на рис. 9.4 с размерами, приведенными выше, согласно этому правилу может рассеять 14,5 Вт мощности — как раз под наш усилитель с некоторым запасом. И если вас не лимитируют размеры корпуса, то вы вполне можете ограничиться этим прикидочным расчетом. Если же хотите подсчитать точнее, то вот один из более сложных способов, который годится для радиаторов средних размеров (L] = 20—180 мм, L2 = 40—125 мм). Этот способ приведен, например, на сайте фирмы "Каскад" [11]. Для оценки тепловой мощности радиатора можно использовать следующую зависимость: W = с^фф -0-5; где: W— мощность, рассеиваемая радиатором, Вт; ^эфф — эффективный коэффициент теплоотдачи, Вт/м2 • °C (см. график на рис. 9.5);
0 — величина перегрева теплоотдающей поверхности, °C, 0 = Тс- То с. (Гс — средняя температура поверхности радиатора, TQ с — температура окружающей среды); С „2 о — полная площадь теплоотдающеи поверхности радиатора, м ; Рис. 9.5. Эффективный коэффициент теплоотдачи ребристого радиатора в условиях свободной конвекции при различной длине ребра: 1 — h = 32 мм; 2 — h = 20 мм; 3 — h = 12,5 мм Обратите внимание, что площадь в эту формулу подставляется в квадратных метрах, а не сантиметрах. Итак, приступим: сначала зададимся желательным перегревом поверхности, выбрав не слишком большую величину, равную 30 °C. Грубо говоря, можно считать, что при температуре окружающей среды 30 °C, температура поверхности радиатора составит 60 °C. Если учесть, что разница между температурой радиатора и температурой кристалла транзистора или микросхемы при хорошем тепловом контакте (о котором далее) может составить примерно 5°, то это приемлемо практически для всех полупроводниковых приборов. Высота ребер h у нас составляет 30 мм, поэтому пользуемся верхней кривой на графике рис. 9.5, откуда узнаем, что величина коэффициента теплоотдачи составит примерно 50 Вт/м2 • °C. После вычислений получим, что W=22 Вт. Вычисляя первым— простейшим— способом, мы получили 14,5 Вт, т. е., проведя более точные расчеты, мы можем несколько уменьшить площадь,
тем самым сэкономив место в корпусе. Однако повторим, если "место нас не жмет", то лучше всегда иметь запас. Радиатор следует располагать вертикально и ребра также должны располагаться вертикально (как на рисунке), а поверхность его следует покрасить в черный цвет. Я еще раз хочу напомнить, что все эти расчеты очень приблизительны, и даже сама методика может измениться, если вы поставите радиатор не вертикально, а горизонтально или снабдите радиатор игольчатыми ребрами вместо пластинчатых. К тому же мы никак не учитываем здесь тепловое сопротивление переходов кристалл-корпус и корпус-радиатор (просто предположив, что разница температур составит 5°). Все же указанные методы дают хорошее приближение к истине, но если мы не обеспечим хороший тепловой контакт, все наши расчеты могут пойти насмарку. Рис. 9.6. Крепление транзистора в корпусе ТО-220 к радиатору при необходимости его изоляции: 1 — радиатор; 2 — отверстие в радиаторе; 3 — изолирующие шайбы; 4 — стягивающий винт; 5 — гайка; 6 — изолирующая трубка; 7 — слюдяная прокладка; 8 — пластмассовая часть корпуса транзистора; 9 — металлическая часть ' корпуса транзистора; 10 — выводы транзистора Просто плотно прижать винтом транзистор к радиатору, конечно, можно, но только в том случае, если поверхность радиатора в месте прижима идеально плоская и хорошо отшлифована. Практически такого никогда не бывает, поэтому радиатор в месте прижима смазывают специальной токопроводящей пастой. Ее можно купить в магазинах, а иногда тюбик с такой пастой прикладывают к кулерам для микропроцессоров. Смазывать надо тонким, но равномерным слоем, не перебарщивать в количестве. Если на один радиатор ставятся два прибора, у которых коллекторы находятся под разным напряже-2 нием , то под корпус нужно проложить изолирующую прокладку, под кре-пежные винты — изолирующие пластиковые шайбы, а на сами винты на 2 Транзистор надо изолировать от корпуса и в том случае, если радиатор с транзистором находится вне корпуса прибора.
длину, равную толщине радиатора в месте отверстия, надеть отрезок изолирующей кембриковой трубки (рис. 9.6). Самые удобные изолирующие прокладки — слюдяные, очень хороши прокладки из анодированного алюминия (но за ними надо внимательно следить, чтобы не процарапать тонкий слой изолирующего окисла) и из керамики (которые, впрочем, довольно хрупки и могут треснуть при слишком сильном нажиме). Кстати, за неимением фирменных прокладок можно использовать тонкую фторопластовую (но не полиэтиленовую, разумеется!) пленку, следя за тем, чтобы ее не прорвать. При установке на прокладку теплопроводящая паста наносится тонким слоем на обе поверхности: и на транзистор, и на радиатор. Проверка и отладка Проверить собранный усилитель очень просто. Для этого потребуется двуполярный источник питания (мы его будем конструировать в следующей главе) на + и - 15 В. "Землю" можно подключить сразу к схеме, а провода питания подключите через сдвоенный тумблер, чтобы можно было включать питания одновременно. Сначала отключите динамик, чтобы его ненароком не спалить, вместо него нужно подключить мощное низкоомное сопротивление (не обязательно 4 Ом, лучше даже побольше — порядка 10 Ом). Подключите все провода питания, затем присоедините к "земле" и выходу усилителя вольтметр и параллельно ему осциллограф. После этого включите сначала блоки питания (заранее проверив, что тумблер разомкнут) и установите на них по 15 В. Проверьте еще раз правильность подключения питания и, глядя на вольтметр, тумблером включите питание. Это тот момент, когда пожалеешь, что у человека только два глаза: нужно смотреть одновременно на вольтметр (стрелка сначала может шелохнуться, но затем на нем должно быть близкое к нулю напряжение), осциллограф (линия должна остаться на своем месте) и на блоки питания — не произошло ли короткое замыкание и не отключились ли они от этого? Если что-то не так — отключите питание и начинайте думать, что именно подключено неправильно. Если же все в порядке, то приблизьте руку к сопротивлению нагрузки — и оно, и радиаторы выходных транзисторов, и сопротивления R7—R8 должны оставаться холодными. Проверьте вольтметром с помощью щупа напряжения на выводах остальных транзисторов — они должны быть примерно такими, как указано в тексте. Если и тут все нормально, то можете себя поздравить — все собрано правильно и можно приступать к следующему этапу. Помните, что перед внесением любых изменений в схему питание надо обязательно отключать!
Самое паршивое, если усилитель "загудит". Это будет видно на экране осциллографа — на выходе усилителя как будто появится сигнал, а выходные транзисторы и нагрузка начнут греться. Тогда попробуйте подпаять конденсатор С4, который указан на схеме пунктиром, упомянутые выше развязывающие конденсаторы по питанию (если вы их сразу не ставили) и включите усилитель опять. "Гудение" должно либо пропасть, либо уменьшиться по амплитуде. Чтобы добиться полного пропадания эффекта, можно увеличить емкость конденсатора С4 и попробовать подпаять керамический конденсатор небольшой емкости между коллектором и базой транзистора VT3. Еще можно попробовать поставить дополнительные развязывающие конденсаторы большой емкости (несколько тысяч микрофарад), присоединив их к выводам коллекторов мощных транзисторов. Помните, что слишком длинные и тонкие соединительные провода в макете также не способствуют стабильности усилителя. В конце концов вы обязательно добьетесь того, что эффект пропадет. Когда вы справитесь со всеми этими трудностями, можно переходить к другому этапу — при включенном питании и подключенном к выходу осциллографе коснитесь пальцем входа усилителя (свободного вывода конденсатора С1). Если все в порядке, вы увидите на экране нечто, напоминающее синусоиду частотой 50 Гц — это усилитель усиливает помеху, которая наводится вашим пальцем. Теперь можно подключать ко входу усилителя источник звуковых колебаний. Это не обязательно должен быть генератор (который мы сконструируем только в главе 14), можно просто взять карманный плеер и снять сигнал с гнезда для наушников (естественно, придется приобрести соответствующий разъем и изготовить кабель для подключения). Один провод от плеера присоединяется к "земле", а второй — ко входу усилителя. Выходной сигнал плеера при самых больших всплесках не должен превышать 0,5 В (заранее проверьте осциллографом и подстройте регулятором громкости, если надо!). При работающем усилителе вы увидите на экране осциллографа усиленный сигнал звуковой частоты. После этого уже можно вместо нагрузочного сопротивления подключить динамик или колонки и наслаждаться музыкой. Громкость можно регулировать регулятором плеера или превратить в регулятор резистор R1, заменив его на переменный резистор, включенный по схеме потенциометра (рис. 5.1) — движком ко входу усилителя. О мощности и качестве звуковых усилителей Рассчитанная для этого усилителя максимальная мощность на выходе составляет чуть больше 20 Вт. Много это или мало? В принципе звуковой мощности в 20 Вт хватит, чтобы возмущенные соседи начали выламывать
у вас дверь. Однако в этом деле есть один большой нюанс. Реальный музыкальный сигнал не является синусоидальным с определенной амплитудой. В нем встречаются как большие всплески, так и очень тихие звуки. Поэтому для качества усилителя играет роль не сама по себе его мощность, а динамический диапазон громкости звука, который он может воспроизвести без искажений. Попробуем подсчитать, каков он, скажем, для звука CD-качества. Сигнал аудио-CD имеет динамический диапазон в 16 двоичных разрядов, что составляет 65 536 градаций напряжения звукового сигнала (про двоичные разряды в применении к оцифрованным аналоговым сигналам мы будем подробно говорить в главе 25, посвященной АЦП и ЦАП). Предположим, что уровень шумов усилителя у нас таков, что они вызывают на выходе (в отсутствие входного сигнала) переменное напряжение с амплитудой в 1 мВ. Тогда, чтобы даже самый тихий звуковой сигнал не потерялся на фоне этих шумов, и для того, чтобы сигнал передавался без искажений во всем диапазоне, максимально допустимая амплитуда на выходе должна составлять более 65 В, т. е. нам требуется усилитель мощностью примерно 400 Вт! При меньшей мощности, казалось бы, вы не получите нужного качества, потому что тихие звуки пропадут в шумах, а громкие "обрежутся", вызывая искажения, но расчет этот слишком уж прямолинеен и слишком многого не учитывает — есть и другие, не столь "тупые" методы повышения качества. Вообще я, возможно, разочарую читателя, но сконструированный нами усилитель качеством не блещет и годится разве что для прослушивания записей на магнитных кассетах. В главе 13 нами будет сконструирован усилитель звуковой частоты с гораздо лучшими характеристиками — на готовой микросхеме. Однако мне уже приходилось упоминать, что настоящее качество для УМЗЧ можно получить только с использованием дискретных компонентов или, комбинируя последние с микросхемами, которые неплохо справляются с усилением малых сигналов. Вообще, качественная звукотехника — целое искусство, огромная и довольно специфическая область схемотехники (например, там и по сей день часто используют лампы!), поэтому дальнейшее углубление в эту увлекательную тему увело бы нас слишком далеко от основной линии книги, а интересующихся я отсылаю к другим источникам, коих великое множество, особенно в Интернете (см., к примеру, [18] — очень рекомендую). Среди бумажных изданий можно рекомендовать в первую очередь классический труд [20], который очень давно не переиздавался, по крайней мере, на русском, но доступен в Сети, а из последних изданий, скажем, [12, 13]. Остановимся кратко еще на нескольких моментах, связанных с многочисленными мифами, сознательно распространяемыми производителями аппаратуры и автоматически, "попугайски", тиражируемыми т. н. "меломанами". Среди этих затверженных принципов есть и разумные требования: например,
коммутация мощных аналоговых сигналов ни в коем случае не может производиться электронными реле — только механическими контактами! Но вот искажения звукового воспроизводящего тракта в 0,5% и ниже при обычных среднего класса колонках и, что еще важнее, в 15—20-метровой комнате современных бетонных многоэтажек практически невозможно заметить на слух3. Это связано с тем, что при таком прослушивании основную долю искажений вносит акустическая система — как сама, так и в комплексе с характеристиками помещения, где она расположена. Преувеличено и влияние кабелей на работу аппаратуры — в подавляющем большинстве случаев нет совершенно никакой нужды тратиться на кабели из "рафинированой" меди стоимостью $20 и более. Медь в обычных проводах и так достаточно чистая (мы об этом упоминали), и разница в электропроводности между особо чистой и обычной медью — в лучшем случае, доли процента. Поэтому, если у вас занозой в печенке сидит представление о том, что на проводах от усилителя к колонкам теряется какая-то часть напряжения, приводя к искажениям,— просто возьмите провод потолще— и все! Это сэкономит вам $19,50 из $20. Но на самом деле в бытовой аппаратуре мощностью до 50 Вт и этого совершенно не требуется, т. к. потери эти объективно настолько малы, что на субъективное восприятие могут оказывать еще меньшее влияние, чем упомянутые искажения, проще говоря, вообще никакого. Самый смешной миф из джентльменского набора приемов для "разводки лохов" — направленность кабеля. Естественно, провод не может иметь никакой направленности, если, разумеется, разъемы у него на концах одинаковы. Абсолютно не имеет значения для звука и качество цифровых каналов. Например, CD-''читалка" из карманного плеера справится со своей задачей ничуть не хуже, чем из навороченного музыкального центра, единственное условие при этом — чтобы при дальнейшей обработке цифровой сигнал не просачивался в звуковой тракт, что при грамотной — и ничуть не удорожающей систему — постановке дела есть вполне стандартное требование. Более подробно все эти вопросы освещены, например, в [19]. 3 Куда большее значение имеют собственные и наведенные шумы усилителя.
Глава 10 Правильное питание -залог здоровья. О питании электронных устройств Мы ежедневно просовываем ему через отдушину хлеб на вилах, а когда он требует, то и мясо, но — увы! — не хлеб и не мясо составляют главную его пищу. А. Дюма, "Три мушкетера” О том, что трансформаторы вкупе с фильтрующими конденсаторами зачастую составляют основную часть массы и габаритов современных электронных устройств, мы уже писали. Заменой обычным трансформаторным источникам питания, которые мы здесь будем рассматривать, могут быть либо электрохимические источники тока (батареи и аккумуляторы), либо импульсные источники питания (экзотику типа солнечных батарей мы рассматривать не будем). Главное преимущество первых — мобильность, в чем им замены нет. Главный недостаток— они не обеспечивают долговременной эксплуатации для подавляющего большинства электронных устройств за исключением специально спроектированных малопотребляющих либо редко используемых устройств — таких, как наручные часы, пульты управления бытовой техникой или наши любимые мультиметры. А вот для таких устройств как плееры, цифровые фотоаппараты, мобильные телефоны, ноутбуки, емкость электрохимических источников явно недостаточна, к тому же общий срок службы их оставляет желать лучшего, так что масса неудобств, которые приходится испытывать пользователям* 1, есть вынужденная плата за мобильность. : И одно из самых серьезных — совершенное отсутствие даже признаков какой-либо унификации зарядных устройств, хотя бы для аккумуляторов одного типа. Лично мне приходится тас-ить с собой в деревню и обратно пять типов зарядных устройств (два для разных мобильников, одно для фотоаппарата, одно для карманного компьютера и одно для шуруповерта), а ведь 1 далеко не самый "мобильный" из своих знакомых.
Остальные варианты мобильными не являются и носят общее название вторичных источников питания, потому что они преобразуют энергию бытовой электросети в нужное напряжение постоянного тока. Главное преимущество импульсных источников — экономичность и значительно лучшие массогабаритные характеристики по сравнению с трансформаторными источниками. Поэтому практически все стационарные современные бытовые приборы снабжаются именно такими источниками: компьютеры, телевизоры, музыкальные центры и т. д. Главным же недостатком их является сложность конструкции и вытекающая отсюда высокая стоимость, из-за чего их целесообразно применять для относительно мощных приборов с энергопотреблением 100 Вт и выше. Если вы попробуете создать импульсный источник, рассчитанный на 10 Вт, то вы в габаритах, скорее всего, даже проиграете, а уж о стоимости и говорить нечего. Так как все конструкции, рассматриваемые в этой книге, — малопотребляющие, нам остается удовольствоваться обычными трансформаторными источниками, к рассмотрению которых мы сейчас и перейдем. Но перед этим упомянем еще об альтернативе, которая была весьма модной в радиолюбительских кругах в советские времена— бестрансформаторные источники питания от сети. Вы можете наткнуться на нечто подобное, если перелистаете старые журналы "Радио". В связи с этим следует сказать только одно: Никогда не стройте прибора, работающего от сети переменного тока без трансформатора! Это опасно для жизни — ваша схема будет всегда находиться под высоким напряжением относительно земли (без кавычек — т. е. водопроводных труб, батарей отопления и т. п.). Если ваша схема предназначена для управления мощной сетевой нагрузкой, то это управление следует обязательно осуществлять через гальванические развязывающие элементы — реле, электронные реле, трансформаторы и т. п. Т рансформаторы Независимо от конкретной конструкции, трансформаторы всегда устроены по одной схеме — на замкнутом каркасе из металлических пластин или ленты находятся несколько обмоток. Самые распространенные разновидности трансформаторов — с Ш-образным и тороидальным сердечником схематично показаны на рис. 10.1. Если есть выбор, то лучше предпочесть тороидальный трансформатор — у него меньшее магнитное поле рассеяния и, главное, в случае чего на него легко домотать недостающие обмотки или добавить витков к имеющимся. При выборе трансформатора следует предпочесть те, которые залиты компаундом (в старинных конструкциях употреблялся просто парафин). По крайней мере, катушка с обмотками должна прочно, без
люфта, держаться на стержне, а сами пластины должны быть обязательно плотно сжаты специальной скобой (естественно, это относится в первую очередь к Ш-образным трансформаторам). Иначе трансформатор неизбежно будет во время работы гудеть. Рис. 10.1. Трансформаторы с Ш-образным и тороидальным сердечником: 1 — сердечник; 2 — обмотки; 3 — выводы обмоток Одна из обмоток называется первичной — т. к. мы рассматриваем сетевые трансформаторы, то она всегда рассчитана на сетевое напряжение. Найти ее, если характеристики обмоток неизвестны, не очень сложно — она всегда имеет наибольшее сопротивление из всех, причем для малогабаритных трансформаторов это сопротивление может достигать сотен ом или даже килоом. Иногда она поделена на две, которые перед включением нужно соединить, иногда может иметь отводы для более точной подгонки напряжений или для обеспечения возможности переключения 220/120 В. Сравнивая сопротивления выводов между собой, можно найти эти отводы. Другой способ нахождения первичной обмотки — она всегда намотана наиболее тонким проводом (вообще — чем толще провод, тем меньше напряжение на обмотке, как мы увидим далее). Остальные обмотки — вторичные, их можно соединять между собой в любой комбинации. Обмотки имеют начало и конец. Для суммирования напряжений обмоток надо соединять конец одной обмотки с началом другой. Смысл : Зак 710
понятий начала и конца обмоток таков — там, где начинали мотать обмотку, — начало. Если намотать следующую обмотку в том же направлении (а так всегда и поступают), то у нее начало будет там же, где и у первой. Если это фабричный трансформатор и выводы у него нумерованы, то нечетные выводы принимаются за начала обмоток, а четные — за концы, т. е. при соединении двух обмоток с нумерацией выводов 1—2 и 5—6 для сложения напряжений нужно соединить вывод 2 первой обмотки с выводом 5 второй (или вывод 1 первой с выводом 6 второй), оставшиеся выводы 1—6 (или 5—2) будут, соответственно, началом и концом объединенной обмотки. Для серийно выпускающихся трансформаторов, а также у торгующих ими организаций имеются справочники по типовым разновидностям с указанием характеристик обмоток и нумерации их выводов. Я надеюсь, что вам никогда не придется самим мотать сетевые трансформаторы, но все же приведу полуэмпирическую, но проверенную практикой методику для их расчета, т. к. некоторые из формул могут вам пригодиться для доработки серийных трансформаторов и определения характеристик имеющихся в наличии. Кроме того, знание закономерностей расчета способствует правильному выбору трансформаторов в случае их приобретения. Главное соотношение (можно назвать это законом трансформатора): U\IU2 = nxln2 (1), где: U\ — напряжение первичной обмотки; U2 — напряжение вторичной обмотки; п\ — число витков первичной обмотки; п2 — число витков вторичной обмотки. Как видите, все необычайно просто. Если, скажем, первичная обмотка имеет 220 витков (это должен быть довольно мощный трансформатор, у маломощных число витков может составлять несколько тысяч), а вторичная — 22 витка, то при подключении к сети 220 В на вторичной обмотке будет 22 В. Токи находятся в обратном соотношении — если ток вторичной обмотки составляет 1 А, то первичная обмотка будет потреблять от сети 100 мА. Если вторичных обмоток несколько, то для определения потребления тока от сети их токи нужно пересчитать на первичную обмотку в отдельности (количество витков при этом знать необязательно, достаточно только напряжения), а затем сложить. Можно пойти и другим путем — суммировать мощности, потребляемые вторичными обмотками (которые равны произведениям токов на напряжения), а затем поделить полученную сумму на 220 — получим ток в первичной обмотке.
Кстати, из этого закона вытекает простой метод определения количества витков в обмотках трансформатора, если это зачем-то нужно: намотайте поверх имеющихся обмоток несколько витков любого провода, включите трансформатор и измерьте напряжение на этой импровизированной обмотке. Поделив количество намотанных витков на полученное значение напряжения, вы получите величину количества витков на один вольт, которая едина для всех обмоток, а далее пересчитать полученный результат уже не составляет трудностей. При выборе напряжений вторичных обмоток учтите, что их нужно выбирать с запасом (это относится и к покупным трансформаторам) — под нагрузкой напряжение садится, и это просаживание тем больше, чем меньше мощность трансформатора. Поэтому, если вам задано минимально допустимое напряжение 7 В — выбирайте трансформатор с 9—10-вольтовой обмоткой, не ошибетесь. Итак, сформулируем задачу: допустим, необходимо иметь трансформатор с двумя вторичными обмотками, рассчитанными на напряжение 27 В и ток 200 мА каждая, и еще одной обмоткой, рассчитанной на напряжение 9 В и ток до 3 А. Подсчитаем суммарную мощность: 27 • 0,2 • 2 + 9 • 3 = 37,8 Вт, округляем до 40 Вт. Ток в первичной обмотке составит 40/220 = 0,18 А, округляем до 0,2 А. Теперь у нас есть все исходные данные. Сначала определяем сечение магнитопровода в см (для Ш-образных трансформаторов это есть сечение центрального стержня, на котором находится катушка с обмотками, для тороидального — поперечное сечение тора). Это делается по формуле: 5=1,15-7? (2), 2 где S — сечение в см ; Р — мощность в Вт. Получаем 7,3 см — уже можно выбирать магнитопровод. Они стандартизированы, так что выбираем подходящий с округлением в большую сторону. По этой формуле также всегда можно определить неизвестную мощность имеющегося в наличии трансформатора, если измерить сечение его магнитопровода. Затем нужно подсчитать требующееся при такой мощности количество витков первичной обмотки: Hi = 50 • UJS (3), где п\ — число витков, U\ — напряжение (220 В), S — рассчитанное выше 2 сечение в см . Получаем 275 витков. Рассчитать теперь количество витков вторичных обмоток — дело техники, только не забывайте всегда округлять в большую сторону.
2 И, наконец, рассчитываем необходимый диаметр провода в мм для каждой обмотки: Ji = 0.8-77“ (4), где d\ — диаметр провода в i-ой обмотке, а 1\ — ток в этой обмотке. Получаем для первичной обмотки диаметр 0,36, для 27-вольтовых также 0,36, а для 9-вольтовой 1,4 мм. Все, расчет закончен. Формулу (4) стоит запомнить, т. к. она может пригодиться, если придется доматывать витки к имеющимся в наличии трансформаторам — сначала по вышеприведенной методике определяется количество витков на вольт, из чего определяется необходимое количество витков, а затем по формуле (4) — нужный диаметр провода. Учтите, что закон трансформации (1) справедлив для всех видов трансформаторов, а вот все остальные соотношения, за исключением разве что (4), годятся только для расчета сетевых трансформаторов, работающих на частоте 50 Гц. Ни для каких других трансформаторов (согласующих, с ферритовыми сердечниками) эта методика не действует. Ну, а теперь перейдем к более интересным вещам. Простейший дестабилизированный однополярный источник питания Схема простейшего источника питания приведена на рис. 10.2. Именно по такой схеме устроены практически все распространенные ныне блоки питания, встроенные в сетевую вилку. Иногда в них вторичная обмотка имеет несколько отводов, и присутствует ползунковый переключатель, который коммутирует эти отводы, меняя выходное напряжение. Так как эти блоки весьма дешевы, то, если вам не требуется большой мощности, спокойно можно покупать такой блок, разбирать его и встраивать в вашу аппаратуру (или даже не встраивать — хотя, на мой вкус, громоздкие надолбы на розетках отнюдь не украшают интерьер, все время хотят вывалиться и к тому же не во всякую розетку влезают). Нужно только обратить внимание на допустимый ток, который указан на корпусе такого блока. Что касается номинального напряжения, то этот вопрос мы сейчас рассмотрим. Как работает эта схема? Здесь переменный синусоидальный ток со вторичной обмотки трансформатора (II) подается на конструкцию из четырех диодов, которая называется диодным мостом и представляет собой двуполупериод-ный выпрямитель (есть и другие способы двуполупериодного выпрямления, но этот самый распространенный). В схеме моста могут быть использованы
любые типы выпрямительных диодов, лишь бы предельно допустимый ток их был не меньше половины необходимого (для указанных на схеме 1N4001 это 1 А), а предельно допустимое напряжение было не меньше половины амплитудного значения входного переменного напряжения (т. к. в данном случае это всего 7 В, то здесь этому требованию удовлетворяют вообще все выпрямительные диоды). Мало того, такие мосты выпускаются уже в сборе, в одном корпусе, на котором иногда даже нарисовано, куда подключать переменное, и откуда снимать постоянное напряжения (мы упоминали один такой мост — КЦ407А — в главе 8). Их, конечно, тоже можно и нужно использовать. Рис. 10.2. Простейший нестабилизированный однополярный источник питания Проследим за работой моста. Предположим, что на верхнем по схеме выводе вторичной обмотки в данный момент напряжение выше, чем на нижнем. Тогда ток в нагрузку (обозначена пунктиром) потечет через правый верхний диод моста, а возвратится в обмотку через левый нижний. Полярность на нагрузке, как видим, соблюдается. В следующем полупериоде, когда на верхнем выводе обмотки напряжение ниже, чем на нижнем, ток через нагрузку потечет, наоборот, через левый верхний диод и возвратится через правый нижний. Как видим, полярность опять соблюдается. Отсюда и название такого выпрямителя: двуполупериодный, т. е. он работает во время обеих полу-периодов переменного тока. Форма напряжения на выходе такого моста (в отсутствие конденсатора) соответствует пульсирующему напряжению, показанному на рис. 4.5, а. Естественно, такое пульсирующее напряжение нас не устраивает, мы хотим иметь настоящее постоянное напряжение без пульсаций, поэтому в схеме присутствует сглаживающий (фильтрующий) конденсатор, который вместе с выходным активным сопротивлением трансформатора и сопротивлением диодов представляет собой не что иное, как известный нам по главе 5 интегрирующий фильтр низкой частоты. Все высокие
частоты отфильтровываются, а на выходе получается ровное постоянное напряжение. К сожалению, такая идиллия имеет место быть только в отсутствие нагрузки, к чему мы вернемся чуть позже, а пока попробуем определить, какова величина этого постоянного напряжения на выходе фильтра. В отсутствие нагрузки конденсатор с первых же полупериодов после включения питания заряжается до амплитудного значения пульсирующего напряжения, которое равно амплитудному значению напряжения на вторичной обмотке за вычетом падения напряжения на двух диодах, стоящих на пути тока. Так как в установившемся режиме через эти диоды ток весьма мал (только для подпитки собственных токов утечки конденсатора), то и падение напряжения на них мало и составляет в сумме менее 1 В. Амплитудное значение напряжения на вторичной обмотке равно 10л/2 = 14,1 В, так что на холостом ходу напряжение на выходе источника составит чуть более 13 В. При подключении нагрузки происходит сразу много всего. Во-первых, снижается напряжение на вторичной обмотке — трансформатор имеет конечную мощность. Во-вторых, увеличивается падение напряжения на диодах, которое может при максимально допустимом для них токе достигнуть 1 В на каждом. В-третьих, и в главных, во время "провалов" пульсирующего напряжения нагрузка питается только за счет того, что через нее разряжается конденсатор. Естественно, напряжение на нем при этом каждый раз немного снижается. Поэтому график выходного напряжения при подключенной нагрузке представляет собой уже не ровную постоянную линию, а выглядит примерно так, как показано на рис. 10.3 (причем снижение входного напряжения за счет "просаживания" трансформатора здесь не учитывается). То есть выходное напряжение немного пульсирует — тем больше, чем больше ток в нагрузке, и тем меньше, чем больше емкость конденсатора. Именно поэтому в источниках применяют электролитические конденсаторы столь большой емкости. Наличие пульсаций также снижает постоянную составляющую выходного напряжения. Рис. 10.3. Вид пульсаций на выходе нестабилизированного источника: 1 — исходное пульсирующее напряжение в отсутствие фильтрующего конденсатора; 2 — выходное напряжение при наличии фильтрующего конденсатора и нагрузки
В данной схеме избавиться от этих пульсаций полностью невозможно, как бы вы ни увеличивали емкость. Кстати, а как подсчитать нужную емкость? В принципе, это возможно, если задаться необходимым уровнем пульсаций, но мы здесь приведем только эмпирическое и весьма приблизительное правило— на каждый ампер нагрузки достаточно конденсатора от 1000 до 2200 мкФ. Первая величина ближе к тому случаю, когда на выходе такого источника предполагается поставить стабилизатор напряжения, вторая — если такого стабилизатора не предполагается. Все указанные причины совместно приводят к тому, что под нагрузкой сверхмаломощные источники (типа тех, что со встроенной вилкой) могут выдавать в полтора-два раза меньшее напряжение, чем на холостом ходу. Поэтому не удивляйтесь, если вы приобрели такой блочок с указанным на шильдике номинальным напряжением 10 В, а мультиметр на холостом ходу показывает аж все 18! Чтобы покончить с темой простейшего источника, нужно сказать пару слов об указанном на схеме (см. рис. 10.2) предохранителе Пр. В упомянутых блоках со встроенной вилкой предохранитель часто отсутствует, и это вызвано, кроме стремления к удешевлению блока, очевидно, тем обстоятельством, что маломощный трансформатор сам служит неплохим предохранителем — провод первичной обмотки у него настолько тонок, и сопротивление его настолько велико, что при превышении допустимого тока обмотка довольно быстро сгорает, отключая весь блок. (После чего его, естественно, остается только выбросить.) Но в стационарных устройствах и тем более в устройствах большей мощности предохранитель должен быть обязательно. Обычно его выбирают на ток в два — четыре раза больший, чем расчетный максимальный ток первичной обмотки. Приведем еще одну полезную схему нестабилизированного источника, на этот раз двуполярного, т. е. выдающего два одинаковых напряжения относительно средней точки — "земли" (рис. 10.4). В принципе, она пояснений не требует, потому что очень похожа на однополярную, только возврат тока в обмотки от обеих нагрузок происходит непосредственно через общую "землю", минуя диодный мост. В качестве упражнения предлагаю вам самостоятельно разобраться, как она работает. Вторичные обмотки (II и III) здесь, в сущности, представляют собой две одинаковые половины одной обмотки. Жирными точками около вторичных обмоток обозначены их начала, чтобы не перепутать порядок их соединения.
2200,0 х16 В -12 В Рис. 10.4. Нестабилизированный двуполярный источник питания Стабилизаторы Простейший стабилизатор — это стабилитрон, который мы разбирали в главе 7. Если параллельно ему подключить нагрузку (рис. 10.5, а), то напряжение на ней будет стабилизировано до тех пор, пока ток через нее не будет слишком велик, проще говоря, в отсутствие стабилитрона напряжение в средней точке делителя из Rct и Rh должно превышать номинальное напряжение стабилизации стабилитрона /Уст, иначе при его подключении ток через него не пойдет и стабилитрон не откроется. Так что максимальный ток, который мы можем получить в такой схеме, не превышает нескольких десятков миллиампер — в зависимости от мощности стабилитрона. Такой стабилизатор называют еще параметрическим. Вы зададите вопрос — а зачем здесь конденсатор? Ведь в нестабилизирован-ном источнике, который мы рассмотрели ранее и откуда поступает напряжение на этот стабилизатор, один фильтрующий конденсатор уже имеется, не так ли? Ответ простой: на выходе всех типов стабилизаторов всегда ставится конденсатор, как и до них. Для интегральных стабилизаторов, которые мы будем рассматривать далее, это часто положено по рекомендациям производителя, а для этой конкретной схемы, скажем, позволяет сгладить наличие остаточных пульсаций, которые все равно просочатся на выход, т. к. стабилитрон имеет свое дифференциальное сопротивление, и при изменении вход-
несколько повысить, снижая входное напряжение, но только до определенного предела. Здесь этот предел равен примерно 8 В, иначе эта схема не справится. Помните, однако, что 8 В — это действительно нижний предел, а не среднее значение пульсирующего напряжения на выходе конденсатора фильтра, которое показывает вольтметр — если вы еще раз взглянете на рис. 10.3, то поймете, о чем я. Иначе стабилизатор просто перестанет стабилизировать. Потому всегда следует иметь запас, и не маленький. Заменой п-р-п-транзистора на р-п-р с соответствующей заменой всех полярностей (в том числе переворотом конденсаторов и стабилитрона) на обратные, мы получим стабилизатор отрицательного напряжения. А для получения большего тока на выходе вместо обычного транзистора можно поставить транзистор с "супербетой". Если мы заменим КТ815 на КТ829, то можем "выжать” уже до 10 А (но не забудьте, что и нестабилизированный источник тоже должен обеспечить такой ток, да и радиатор придется ставить существенно больше!). Таким путем мы можем построить недорогой двуполярный источник питания для нашего усилителя из прошлой главы. Если вы ее внимательно перечтете, то сообразите, что номинальная мощность источника для такого усилителя должна составлять не менее 100 Вт (пиковый ток в нагрузке может достигать 3,3 А при максимальной выходной мощности усилителя) или по 50 Вт на каждом из двуполярных напряжений по 15 В. Пр1 Тр1 470,0 х16В С4 = I VD6 /Д 1N4745A 4700,0 1 х25 В ” С2 R2 BDW94C , 1000,0 + Х16В =т= С6 XVD8 -22 В -15 В 3,3 А Рис. 10.6. Мощный двуполярный стабилизатор на ±15 В, 4 А (для усилителя из предыдущей главы)
может довольно сильно меняться. Поэтому наилучшим выходом было бы использовать в стабилизаторах принцип отрицательной обратной связи, с которым мы уже отчасти познакомились, разбирая работу звукового усилителя в главе 9. Ниже мы будем подробно разбирать стабилизатор с обратной связью, а пока заметим, что такую схему не особенно трудно построить и на дискретных транзисторах, но с увеличением качества ее сложность и, соответственно, стоимость резко возрастают. А вот в производстве микросхем почти безразлично — пять транзисторов они содержат или тридцать. Кроме того, там все транзисторы находятся на одном кристалле, имеют одинаковую температуру и близкие характеристики, что недостижимо в дискретных схемах. Видлар этим воспользовался и сконструировал микросхему цА723, которая положила основу современным семействам интегральных стабилизаторов. Наиболее широко распространена и доступна серия стабилизаторов LM78/79xx производства фирмы National Semiconductor (имейте в виду, что семейство LM содержит и другие типы микросхем, и это название не должно вас смущать). Выпускается они очень многими производителями, тогда буквы могут быть другими, но цифры остаются теми же. Цифры означают вот что: первые две — наименование серии (78 — стабилизатор положительного напряжения, 79 — отрицательного), вторые две — напряжение стабилизации (например, 7805 — пятивольтовый стабилизатор положительного напряжения). Выпускаются аналоги этой серии и в России, однако принцип наименования другой — это серия 142ЕНхх и др. (см. приложение 4). Здесь напряжения стабилизации фиксированы, однако имеются и регулируемые типы. На рис. 10.7 приведена типовая схема включения такого стабилизатора и вариант его внешнего вида. В корпусе ТО-220, как на рисунке, такой стабилизатор может выдать ток до 2,4 А, если рассеиваемая мощность не превышает 20 Вт (с радиатором, естественно). Но есть большой выбор и других корпусов, включая корпуса для поверхностного монтажа. Особенно удобен маленький корпус ТО-92 (тогда в название вклинивается буква L: 78L05) — он позволяет стабилизировать питание отдельных узлов независимо друг от друга, избегая таким образом их взаимного влияния. Разумеется, серия 78/79хх— не единственная в своем роде, есть и другие, аналогичные по функциональности. Можно спросить, а стоило ли тогда возиться с "супербета"-транзисторами и стабилитронами, конструируя наш стабилизатор для усилителя? Отвечу — в принципе, при указанных на схеме напряжениях вполне можно заменить верхний транзистор и стабилитрон с резистором на 7815, а нижние, соответственно, на 7915. Но тут следует учесть, что для 78/79хх максимальный ток составляет 2,4 А, поэтому при максимальной мощности они просто будут ограничивать ток в нагрузке, что приведет к значительным искажениям
в усилителе. Максимальная мощность такого источника на интегральных стабилизаторах составит 2 • 36 Вт. Есть, разумеется, и другой выход — поискать интегральные стабилизаторы помощнее, и они, конечно же, существуют. Но какая для нашего усилителя разница, будет ли напряжение на нем 14,5 В или 15,5? Пусть оно даже немного "просаживается" с нагрузкой — здесь это тоже не страшно. Но когда это действительно критично — стоит побегать. Общий Рис. 10.7. Схема включения интегрального стабилизатора Однополярный регулируемый высокостабильный источник питания Эта схема (рис. 10.8) представляет собой лабораторный источник питания, который, как я обещал вам еще во второй главе, можно изготовить самим. Взглянув на эту схему, вы можете сначала слегка растеряться — настолько вам покажется все незнакомо. На самом деле там есть только одна вещь, которую мы еще "не проходили": микросхема операционного усилителя (ОУ) DA1. Подробно с ОУ мы будем знакомиться в главе 14, а сейчас нам важно только вот что: это устройство всегда стремится сделать так, чтобы потенциалы входов, обозначенных "плюс" и "минус", были равны. Эти входы
эквивалентны входам дифференциального усилителя, у которого, как вы помните, потенциалы входов тоже связаны между собой (на самом деле, внутри микросхемы на входе ОУ действительно стоит дифференциальный каскад). Для того чтобы это осуществлялось на практике, ОУ включают с отрицательной обратной связью с выхода на тот вход, который обозначен знаком "минус". В данном случае такая связь осуществляется весьма заковыристым способом, и для того, чтобы понять, как она осуществляется, давайте посмотрим на рис. 10.9, на котором изображена та же самая схема, но в предельно упрощенном варианте. П1 +20 в нестаб. Резистор Точное значение Ближайшее из ряда Е96 R4 4,0 к 4,02к R5 2,0 к 2,05к R6 770 763 R7 430 432 R8 133 133 R9 133 133 R10 533 536 Рис. 10.8. Схема лабораторного источника питания
Предположим, что R1 и R2 на рис. 10.9 равны между собой. Какое напряжение будет на выходе, т. е. на эмиттере транзистора VT1? Определить это очень просто. Если на "плюсовом" входе ОУ 1 В, как обозначено на схеме, то на "минусовом" тоже должен быть 1 В, как мы только что узнали. При каком условии это возможно? Только если на верхнем выводе R1, т. е. на выходе всей системы, будет 2 В — ведь R1 и R2 делят это напряжение пополам. То есть ОУ автоматически установит на базе транзистора VT1 такое напряжение, чтобы на его эмиттере было ровно 2 В (можно даже догадаться, какое именно — на 0,6 В больше, чем надо, т. е. 2,6 В, но на самом деле это нас мало интересует). А если мы положим, что R1 в два раза больше, чем R2? Повторив предыдущие рассуждения, мы обнаружим, что на выходе должно быть 3 В. Отсюда можно вывести некоторую закономерность: система, показанная на рис. 10.9, усиливает напряжение, поданное на "плюсовой" вход, ровно в (R1/R2 + 1) раз. Рис. 10.9. Упрощенная схема лабораторного источника питания Именно так и работает схема источника на рис. 10.8. Переключатель П1 имеет 6 положений, в каждом из которых он изменяет соотношение делителя в обратной связи таким образом, чтобы при напряжении 1 В на "плюсовом" входе на выходе получался некий ряд фиксированных напряжений. При указанных в таблице номиналах резисторов R4—R10 этот ряд будет следующим: 3; 5; 7,5; 10; 12 и 15 В. Этого достаточно для большинства наших нужд. Конечно, можно не возиться с переключателем и подбором сопротивлений, а просто поставить вместо цепочки R5—R9 переменный резистор по схеме потенциометра, равный сумме этих сопротивлений — эффект будет тот же самый, только напряжение будет меняться плавно от 3 до 15 В. Однако иметь набор фиксированных напряжений намного удобнее — тут вы имеете точно
известное напряжение, а при плавной регулировке его каждый раз придется подгонять по вольтметру. Конечно, бывают изредка случаи, когда нужно иметь напряжение, скажем, 4,75 вольта, но на этот случай лучше иметь еще один — плавно регулируемый — источник. А вообще этот делитель можно устроить по-разному— возьмите переключатель на 12 положений— получите переключение через 1 В. Можно добавить к нему переменный резистор и плавно регулировать напряжение внутри каждого фиксированного диапазона (подумайте, как это сделать? Подсказка: переключатель должен быть на два направления.). В общем, была бы фантазия. Теперь перейдем к подробному рассмотрению остальных, вспомогательных узлов схемы. Начнем слева направо — что это за монструозная конструкция с полевым транзистором там, наверху? На самом деле это всего лишь узел, который позволяет получить стабильное опорное напряжение ровно 1 В — от его стабильности точность шкалы выходных напряжений зависит напрямую. Сразу скажу, что вместо всей этой конструкции вполне можно поставить небольшую микросхему — источник опорного напряжения, и чтобы знатоки не сочли меня безнадежно отставшим экземпляром из каменного века, добавлю, что на деле именно так я бы и поступил. Между прочим, есть специальные микросхемы регулируемых стабилизаторов, в которых оба узла— и источник опорного напряжения, и ОУ — уже упрятаны в один корпус. Добавлю, кстати, другую не всем известную вещь — в подобных случаях простых схемотехнических узлов применение микросхем отнюдь не всегда экономит площадь печатной платы, а лишь улучшает характеристики и упрощает отладку. А в данном случае поставить микросхему было бы и просто скучно — схема эта весьма поучительна. Полевой транзистор VT1 включен источником тока, известным нам из главы 6— когда потенциалы затвора и истока равны, то ток сток-исток мало зависит от напряжения на стоке. Этот ток питает прецизионный стабилитрон VD1 типа КС818Е, напряжение которого мало зависит от температуры (но очень даже зависит от тока). Если будете искать замену транзистору VT1, то, в первую очередь, надо смотреть на параметр, который называется "начальный ток стока" — именно такой ток будет протекать через стабилитрон в этой схеме, а стабилитрон Д818Е хорошо работает в довольно узком диапазоне токов — не менее 5 и не более 15 мА. Напряжение стабилизации стабилитрона равно 9 В, поэтому оно подается на делитель, составленный из большего постоянного (R1) и меньшего подстроечного (R2) резистора, с движка которого и снимается напряжение, равное 1 В. Потенциометром можно плавно менять всю шкалу напряжений на выходе (но до определенного предела, ограниченного как снизу, так и сверху). Разумеется, эту цепочку вполне можно заменить на два постоянных резистора.
Теперь перейдем к транзистору VT3 вкупе с резистором R3. Эта простая и остроумная конструкция выполняет важнейшую функцию — она ограничивает выходной ток. Как это происходит? Обратите внимание, что весь выходной ток протекает через резистор R3, номинальное значение которого всего 0,3 Ом. В нормальном состоянии (например, на холостом ходу) падение напряжения на этом резисторе мало, поэтому транзистор VT3 закрыт, и все это дело не оказывает никакого влияния на работу схемы. Когда же выходной ток достигает значения примерно 2 А, падение напряжения на нем достигает сакраментальных 0,6 В, транзистор VT3 приоткрывается и начинает шунтировать переход база-эмиттер силового транзистора VT2, призакрывая его. В результате схема приходит в равновесие — если бы VT3 приоткрылся еще больше, закрывая силовой транзистор, выходной ток бы упал, падение напряжения на R3 бы уменьшилось, VT3 бы призакрылся и т. д. — и все застывает на уровне 2 А выходного тока, даже при коротком замыкании (к. з.) на выходе! Как только избыточная нагрузка на выходе будет снята, схема автоматически вернется в нормальный режим. Кстати, к следящему транзистору VT3 никаких требований не предъявляется — вообще никаких! — здесь может быть использован любой кремниевый транзистор, только он должен быть маломощный (чтобы не шунтировать токами утечки силовой транзистор) и не составной по схеме Дарлингтона. А вот силовой транзистор, наоборот, должен быть именно дарлингтоновский с "супербетой". В этой схеме есть, однако, одно, но большое НО. Заключается оно в том, что при к. з. на выходе все напряжение питания будет падать на переходе коллектор-эмиттер транзистора VT2 — ему больше просто некуда деваться. То есть выделяющаяся мощность на VT2 составит аж целых 40 Вт! И в нормальном режиме при маленьких установленных выходных напряжениях (3 или 5 В) при максимальной нагрузке эта мощность будет практически такой же. В этом и заключается главный недостаток данной схемы — крайне низкий КПД. Что поделаешь — такова природа аналоговых регуляторов! Есть, впрочем, немало способов этот КПД повысить — продаю идею простейшего из них, который годится именно для стабилизатора с дискретным набором выходных напряжений: надо взять трансформатор нестабилизиро-ванного источника, от которого питается эта схема, с несколькими обмотками на разное напряжение, а к переключателю делителя добавить еще одно направление переключения так, чтобы при снижении напряжения на выходе напряжение питания стабилизатора также снижалось (но минимальный перепад между входом и выходом здесь должен составить не менее 4—5 В). Есть и более изощренные способы, скажем, регулировать действующее значение выпрямленного пульсирующего напряжения перед фильтром с помощью тиристорного моста. Но в таком случае схема настолько усложняется, что проще просто взять и построить импульсный источник.
В общем, в любом случае схема усложнится — а нам это надо? Отвечаю на последний поставленный вопрос — да, надо, если мы делаем, скажем, серийный прибор на продажу. Тогда, безусловно, имеет смысл повозиться и придумать что-то покрасивее. А в лабораторных целях для себя можно вполне обойтись и такой схемой. Так что с силовым транзистором и радиатором для него все понятно, а сейчас мы вернемся к цепочке делителя и вглядимся внимательнее в таблицу номиналов. Там приведены ближайшие к расчетным стандартные номиналы для ряда прецизионных резисторов, но, в принципе, в этой схеме применять С2-29В совершенно необязательно — не те точности требуются. Поэтому можно нужные номиналы просто подобрать из кассы обычных МЛТ, стараясь выдержать их как можно ближе к расчетным. Можно также весь расчетный ряд умножить или поделить на любое число, лишь бы все значения изменились в одинаковой степени— от этого ничего не изменится! Границы, которыми следует при этом руководствоваться, — это нижний предел суммы всех резисторов в 1—2 кОм, а верхний — в пару десятков кОм. Несколько слов про основного нашего героя — операционный усилитель. Здесь указан классический ОУ типа цА741, который выпускается уже много десятков лет и приведена нумерация выводов (цоколевка) для него. У него есть и отечественный аналог — КР140УД7 (учтите на будущее, что отечественные аналоги западных микросхем не всегда имеют ту же цоколевку, так что это на всякий случай надо проверять). Вообще же здесь можно использовать почти любой ОУ широкого применения с надлежащим допустимым питанием — но подробности эти мы будем разбирать уже в главе 14. В заключение этой темы два слова о регулируемом двуполярном лабораторном источнике. Нет никакого смысла изобретать его специально — надо просто взять два одинаковых однополярных источника, разместить их в одном корпусе (и даже запитать их от одного трансформатора, но обязательно от разных вторичных обмоток) и вывести наружу все четыре выходные клеммы по отдельности. Соединяя "плюс" одного источника с "минусом" другого перемычкой, вы получаете общую "землю" двуполярного источника, убирая перемычку — имеете два раздельных однополярных. Как правильно питаться Мы уже слегка коснулись темы правильной разводки питания в главе 9, когда рассказывали об усилителе звуковой частоты. Сейчас мы сформулируем несколько общих принципов.
Рис. 10.10. Схема разводки питания между источниками и потребителями Общая схема грамотной разводки питания между источниками и потребителями в электронных устройствах приведена на рис. 10.10, а. На практике, если источник расположен в отдельном корпусе, то указанной на блок-схеме общей точкой соединения "земли" служит выходная клемма "минус" этого корпуса (кстати, поэтому лучше делать выходные клеммы источника не по одной, а, например, парами, чтобы можно было подключить как минимум две нагрузки к одной точке). Если же вся конструкция — и источники и нагрузки — представляет собой набор плат в едином корпусе, то за общую точку удобно выбрать минусовой вывод основного фильтрующего конденсатора. Смысл такой разводки заключается в том, чтобы токи от разных потребителей не протекали по одному и тому же проводу — это может вызвать их взаимное влияние и всякие нежелательные явления. Характерное подобное явление под названием "захват частоты" можно наблюдать, если на двух разных, но с общим питанием, платах имеются генераторы (не кварцевые), работающие на близких или кратных частотах — вдруг по непонятным причинам они начинают работать на одной и той же частоте! Иногда от этого очень трудно избавиться, поэтому лучше сразу делать все правильно. Для этого же ставят — как можно ближе к выводу питания нагрузки — развязывающие конденсаторы, причем если это отдельная плата, то на ней прямо около входного разъема, ни в коем случае не
в дальнем конце платы! Когда в ходу были еще микросхемы базовой ТТЛ-логики (см. главу 20), которые потребляли по 30 мА каждая, рекомендовалось ставить по керамическому конденсатору емкостью до 0,1 мкФ буквально на каждый корпус — ясно, что соблюсти на плате с двадцатью корпусами принцип "единой точки" не удается. Если же по каким-то причинам идеала по образцу рис. 10.10, а при межплатном соединении достичь не получается (да и независимо от этого), то провода питания должны быть как можно толще — если провод тонкий, то на нем самом за счет протекающего тока происходит падение напряжения, и разные потребители оказываются под разными потенциалами — как по "земле", так и по питанию. Кстати, о "земле" — почему я ее все время заключаю в кавычки? Дело в том, что в электротехнике существует совершенно определенное понятие земли — когда нечто находится под потенциалом земной поверхности, который принимается за истинный ноль напряжения. Под таким потенциалом по понятным причинам находятся, например, водопроводные трубы. Есть еще понятие "нулевого провода" (один из проводов в вашей домашней розетке всегда нулевой, второй называется "фазным") — он теоретически находится тоже под потенциалом земли, но практически он соединяется (возможно) с истинной землей только где-то на электростанции, а за счет несбалансированности протекающего по нему тока потенциал его может "гулять" и довольно сильно. Поэтому правильно организованная бытовая электросеть всегда должна включать в себя третий провод, который есть истинное заземление. Если у вас такого третьего провода нет (печально, но в нашей стране обычно именно так), то ни в коем случае не пытайтесь его организовать путем присоединения к водопроводной трубе— в случае попадания фазного напряжения на такое "заземление", сопротивления между трубой и землей вполне может хватить, чтобы убить кого-нибудь, кто будет в соседней квартире в этот момент мыть руки под краном. Если же вернуться к нашей схемотехнической "земле", то самое правильное называть ее "общим проводом", просто термин прижился, да и звучит короче. От электротехники обратимся опять к питанию электронных устройств. На рис. 10.10, б показана схема развязывающего фильтра для маломощной нагрузки в пределах одного электронного узла. Это может быть входной каскад усиления микрофонного усилителя, который особо чувствителен к качеству питания, и его требуется развязать от следующих более мощных каскадов (может такой фильтр помочь и в случае "гудения" нашего усилителя из главы 9, если его установить по "плюсу" и "минусу" питания между дифференциальным каскадом и остальной схемой). На рис. 10.10, в показана правильная организация питания с такими фильтрами для быстродействующих или прецизионных операционных усилителей — в частности, в измерительных схемах, о которых мы будем говорить в следующих главах.
Глава 11 Тяжеловесы. Устройства для управления мощной нагрузкой — Что вы делаете? — с удивлением воскликнула миледи. — Положите мне руки на шею и не бойтесь ничего. — Но из-за меня вы потеряете равновесие, и оба мы упадем и разобьемся. А. Дюма, "Три мушкетера" Немало практических задач состоит в том, чтобы маломощное управляющее устройство, например, простой переменный резистор или схема управления, построенная на логических или аналоговых микросхемах, могло бы управлять мощной нагрузкой, как правило, работающей от бытовой электрической сети. Это одна из тех областей техники, где за последние полвека электроника совершила настоящий переворот. Представьте себе работу, скажем, осветителя в театре еще в пятидесятые годы XX века. Для плавного регулирования яркости прожектора тогда использовался последовательно включенный реостат — проще говоря, регулирование осуществлялось по схеме, приведенной на рис. 1.4. Если вы хорошо усвоили материалы первых глав, то должны сообразить, что мощность, которая будет выделяться на реостате, составит не меньше четверти мощности прожектора. Если прожекторов много (а в театре их много), и мощность каждого равна, к примеру, 500 Вт, то в операторской будке осветителя спокойно можно устраивать сауну. То ли дело сейчас, когда осветитель сидит за клавиатурой вроде компьютерной (а иногда и просто за компьютерной) и управляет этим делом, как "белый человек"... В предыдущей главе мы упоминали о том, что электронные устройства ни в коем случае нельзя строить по бестрансформаторной схеме так, чтобы органы управления были напрямую связаны с сетью. При построении схем, управляющих сетевой нагрузкой, возникает непреодолимое искушение избавиться от трансформаторов питания и последующих устройств сопряжения: в самом деле, электричество в конечном счете одно и то же, так, спрашивается, зачем возиться? Но не поленимся повторить: поступать так не следует,
потому что это опасно для жизни. И не только вашей жизни, которая подвергнется опасности при отладке подобных устройств, но и для жизни тех, кто ими будет пользоваться. Но в то же время в этой главе вы увидите некоторые исключения из этого правила: они касаются случая, когда управление сетевой нагрузкой осуществляется в автоматическом режиме, и доступ людей к элементам схемы во время ее работы исключен. Самая простая схема управления мощной нагрузкой — релейная. Она применима в тех случаях, когда нагрузку нужно просто включать и выключать. Мы не будем подробно останавливаться на этом случае, т. к. о реле достаточно сказано в главе 7. Однако отметим один существенный момент, о котором мы ранее не упоминали: дело в том, что при релейном управлении сетевая нагрузка может отключаться и включаться, естественно, в произвольный момент. В том числе, этот момент может попадать и на самый пик переменного напряжения, когда ток через нагрузку максимален. Разрыв — или соединение — цепи с большим током, как мы уже знаем (см. главы 5 и 7) приводит к разного рода неприятностям: во-первых, это искрение на контактах из-за выброса напряжения, что приводит к их повышенному износу, во-вторых (и в главных), это создает очень мощные помехи, причем как другим потребителям в той же сети, так и электромагнитные помехи, распространяющиеся в пространстве. В моей практике был случай, когда включение мощного двигателя станка через пускатель приводило к тому, что в микроконтроллере, установленном в блоке на расстоянии пяти метров от станка, стиралась память программ! Это несмотря на то, что все возможные меры по защите от помех по питанию были приняты. Чтобы избежать такой ситуации, для коммутации мощной нагрузки лучше применять не обычные электромагнитные реле или пускатели, а оптоэлектронные, подобные тому, что описано в самом конце главы 7. В них часто встроен так называемый zero-детектор — устройство, которое при получении команды на отключение или включение дожидается ближайшего момента, когда переменное напряжение переходит через ноль, и только тогда выполняет команду. А теперь перейдем к более интересным вещам: к плавному регулированию мощности в нагрузке. Мы будем это делать, регулируя действующее значение напряжения, которое на нее поступает. Базовая схема регулирования напряжения на нагрузке Для этой цели нам придется применить один электронный прибор, который мы до сих пор не рассматривали: тиристор, представляющий собой управляемый диод и соединяющий в себе свойства диода и транзистора. По схеме
включения тиристор несколько напоминает ключевой транзистор — у него тоже три вывода, которые работают аналогично соответствующим выводам транзистора (рис. 11.1). В обычном состоянии тиристор заперт и представляет собой бесконечное сопротивление, а для открывания достаточно подать напряжение на управляющий электрод — аналог базы у транзистора. Величина тока через управляющий электрод составляет несколько мА или десятков мА — в зависимости от мощности тиристора (у обычно применяемых тиристоров на токи 3—10 А предельно допустимый управляющий ток достигает 300— 500 мА), а напряжение должно достигать определенной величины*. Разница заключается в том, что для удержания транзистора в открытом состоянии через базу нужно все время гнать управляющий ток, а тиристору для открывания достаточно короткого импульса (причем в этом случае ограничительный резистор можно не ставить — на схеме рис. 11.1 он показан пунктиром). Как и все диоды, тиристоры выдерживают большие перегрузки по току при условии, что они кратковременны. Во включенном состоянии тиристор ведет себя как обычный диод, а закроется только тогда, когда ток через него (именно через него, в цепи анод-катод, а не по управляющему переходу) снизится до нуля. Если использовать его в цепи переменного тока, то это произойдет почти сразу, в конце ближайшего полупериода, при переходе напряжения через ноль. А вот в цепи постоянного тока тиристор сам не отключится, пока через него идет ток. В принципе тиристор можно закрыть и подачей на управляющий электрод импульса противоположной полярности, но практически этим никто не пользуется (и возможность эта для обычных тиристоров относится к числу недокументированных), потому что и напряжение, и ток такого импульса должны быть сравнимы с напряжением и током в силовой цепи анод-катод. Одиночный тиристор может обеспечить регулирование только положительного напряжения. В сети переменного тока в открытом состоянии он будет работать как диод, отрезая отрицательную полуволну. Чтобы регулировать переменное напряжение в течение обоих полупериодов, нужен еще один тиристор, включенный наоборот. Так как тиристоры во всем, кроме управления, ведут себя подобно диодам, их можно включать встречно-параллельно. Для обычных диодов такое включение применяется только в схемах, подобных показанной на рис. 7.5 — они всегда открыты, так что, если не обращать внимания на падение напряжения в 0,6 В, при включении последовательно 1 В отсутствии открывающего импульса тиристор все равно можно открыть, если подать на анод достаточно высокое напряжение — ток через управляющий электрод всего лишь снижает это открывающее анодное напряжение практически до нуля (но при этом управляющий импульс также должен иметь напряжение не ниже некоторого порога). Существует отдельный класс приборов под названием динисторы, которые представляют собой тиристоры без управляющего электрода — они открываются при превышении анодным напряжением определенной величины, которая обычно составляет несколько десятков вольт.
с нагрузкой такая схема просто ничего не делает. Иное дело тиристоры — если на управляющие электроды ничего не подавать, то нагрузка будет отключена, если же подавать управляющие импульсы в нужной фазе и полярности относительно питающего напряжения, то они будут открываться и подключать нагрузку. Причем управляющие электроды можно объединить (тогда на общий электрод придется подавать разнополярное напряжение в зависимости от полярности напряжения питания в данный момент) и упаковать их в один корпус — получим прибор, который называется симистором, т. е. симметричным тиристором или, на западный манер, триаком (рис. 11.2, а). Амплитуда управляющих импульсов для тиристоров средней мощности (рассчитанных на токи порядка 3—10 А) должна составлять примерно 10—20 В, а длительность его может не превышать 0,05 мс. Рис. 11.1. Основная схема включения тиристора. 1 — управляющий электрод; 2 — анод; 3 — катод Рис. 11.2. Симистор: а — основная схема включения; б— графики напряжения в схеме
На осциллограммах (рис. 11.2, б) перед нами пример управления мощностью в нагрузке с помощью тиристора. Здесь нашему взору предстает очень интересная картина. В начале каждого полупериода тиристор закрыт, управляющий импульс подается только через промежуток времени, равный трети длительности этого полупериода (т. е. со сдвигом фаз, равным тс/З относительно напряжения питания), и тогда тиристор открывается. Закрывается он, как уже говорилось, в момент перехода питающего напряжения через ноль. В результате напряжение на нагрузке будет иметь необычный вид, показанный на графике внизу. Каково будет действующее значение напряжения? Ясно, что оно будет меньше, чем в отсутствие тиристора — или чем в случае, если бы управляющий импульс подавался в самом начале периода. Если же, наоборот, подавать управляющий импульс в самом конце, то действующее значение будет близко к нулю. Таким образом, сдвигая фазу управляющих импульсов, мы можем плавно менять мощность в нагрузке с достаточно высоким КПД. А можно ли вычислить, чему будет равно действующее значение во всех этих случаях? Обычно такие расчеты не требуются, но иногда, как мы увидим ниже, полезно эту величину знать, т. к. стандартным цифровым мультиметром измерить ее невозможно — по причинам, указанным в главе 4, он покажет для напряжения такой формы все что угодно, только не истинную величину2. Для того чтобы рассчитать величину действующего значения для разных величин сдвига фазы, нужно взять интеграл от квадрата мгновенного значения напряжения в течение всего полупериода. Полученная в результате формула будет выглядеть так: tj = sin2H д V I2 4 J’ где: иЛ — действующее значение напряжения на нагрузке; Ua— амплитудное значение питающего напряжения; t — определяется по формуле t = п - ср, если сдвиг фазы (р выражать в радианах или по формуле t = тс(18О - ср)/180, если сдвиг фазы (р выражать в градусах. При сдвиге фазы больше, чем половина периода (т. е. (р > тс/2) полезно знать также максимальное значение напряжения на нагрузке t/max, потому что от ' Единственный прибор, который правильно покажет значение действующего напряжения любой формы — аналоговый вольтметр электромагнитной системы (его легко узнать по неравномерной шкале, деления на которой к концу отстоят все дальше и дальше друг от друга). Для того чтобы можно было несинусоидальное напряжение измерить цифровым прибором, между измеряемой величиной и вольтметром необходимо вставить интегратор, который осуществлял бы операцию интегрирования, описанную далее.
этого иногда зависит выбор элементов (при сдвиге фазы меньше половины периода максимальное значение попросту равно амплитудному значению питающего напряжения). Его можно рассчитать по простой формуле: Umax — t/aSin((p). В таблице приведены результаты расчета по этим формулам для синусоидального напряжения 220 В. В последней колонке таблицы приведены величины мощности, которая будет выделяться в нагрузке, в процентах от максимальной мощности, которая выделялась бы при прямом включении нагрузки в сеть или, что то же самое, при сдвиге фазы управляющего импульса, равной 0. Ф, град Ф, рад ^действ ^вмпл Р,% 0 0.00 219.9 311.0 99.9 10 0.17 219.8 311.0 99.8 20 0.35 218.9 311.0 99.0 30 0.52 216.7 311.0 97.0 40 0.70 212.6 311.0 93.4 50 0.87 206.2 311.0 87.8 60 1.05 197.2 311.0 80.4 70 1.22 185.7 311.0 71.3 80 1.40 171.8 311.0 60.9 90 1.57 155.5 311.0 50.0 100 1.75 137.3 306.3 39.0 110 1.92 117.7 292.2 28.6 120 2.09 97.2 269.3 19.5 130 2.27 76.5 238.2 12.1 140 2.44 56.3 199.9 6.5 150 2.62 37.3 155.5 2.9 160 2.79 20.6 106.4 0.9 170 2.97 7.4 54.0 0.1 180 3.14 0.0 0.0 0.0 Анализ результатов приводит нас к довольно интересным выводам. Зависимость действующего значения напряжения и мощности в нагрузке практически не меняется по сравнению с максимальной вплоть до сдвига фаз, равного 30°
(в радианах л/6 или примерно 0,5) — помните из школьной тригонометрии правило: "синусы малых углов равны самому углу"? Это оно и действует. Дальше значения мощности очень быстро падают вплоть до 150—160°, когда мощность становится уже исчезающе малой — но обратите внимание на величину амплитудного значения! При сдвиге фаз в 160°, когда мощности практически никакой уже нет (0,9% можно не принимать во внимание), амплитудное значение все еще равно аж целых 106 В — такое напряжение вполне способно вывести из строя, скажем, маломощные диоды, у которых допустимое обратное напряжение часто не превышает нескольких десятков вольт. Самый важный вывод, который следует из анализа данных в таблице, — изменение мощности в нагрузке в зависимости от угла сдвига фазы происходит нелинейно. По этой причине при проектировании устройств регулирования не имеет смысла начинать регулировку с малых углов сдвига фаз — реально ничего меняться не будет, и значительная часть хода регулировочного элемента будет холостой, практические изменения начнутся с углов в 30° и более. Закончив на этом со скучной теорией, перейдем к практическим схемам. Ручной регулятор мощности Такое устройство будет незаменимо, скажем, в фотостудии, где используются мощные осветительные лампы: сначала вы уменьшаете яркость до половины, спокойно, не заставляя клиента щуриться и обливаться потом, настраиваете освещение, потом выводите яркость на полную и производите съемку. Можно это устройство также применить для плавного регулирования мощности нагревателя электроплитки и в других областях. Так как оно предполагает ручное управление, нам надо позаботиться о том, чтобы изолировать орган управления — это будет переменный резистор — от сетевого напряжения. Самое удобное было бы — использовать для этого си-мисторную оптопару типа, к примеру, МОС2А60-Ю фирмы Motorola. Такая оптопара работает так же, как отдельный симистор, только вход у нее — не управляющий электрод симистора, а светодиод, подобно тому, как это делается в диодных оптронах и электронных реле, описанных в главе 7. Сами электронные реле, если они содержат упомянутый выше zero-детектор, использовать в данной схеме невозможно, т. к. никакого фазового управления не получится. Если же они zero-коррекции не имеют, то их можно использовать, но с таким же успехом можно использовать готовую микросхему фазового регулятора, и мы пока не будем изобретать, а последуем примеру известного политического деятеля по фамилии Ульянов-Ленин и пойдем другим, более традиционным путем. Мы будем питать основную схему прямо
от сети, а вот регулировочный резистор изолируем от нее с помощью оптрона — только не симисторного, а диодного или резисторного, выходное сопротивление которого линейно зависит от входного тока. Рис. 11.3. Схема ручного регулятора мощности в нагрузке Схема регулятора представлена на рис. И.З. Сначала представим себе, что вместо фотодиода оптрона у нас в схеме стоит обычный постоянный резистор. Узел, который включает этот резистор, транзисторы VT1 и VT2, конденсатор С1 и резисторы R3-R6, представляет собой т. н. релаксационный генератор на аналоге однопереходного транзистора с n-базой. Хитрая схема включения разнополярных транзисторов VT1 и VT2 и есть этот самый аналог, Подробно свойства однопереходного транзистора мы разбирать не будем, потому что за все время моей практики единственное для него применение сыскалось только вот в такой схеме релаксационного генератора. Для нас достаточно знать, что такое устройство работает следующим образом: если напряжение на входе, т. е. соединенных эмиттерах VT1 и VT2, меньше, чем на соединенных базе VT1 и коллекторе VT2 (т. е. на делителе R3-R4), то однопереходной транзистор заперт. Если же напряжение на входе превысит напряжение на делителе R3-R4, то транзистор откроется, причем необычным образом — ток потечет от входа к эмиттеру транзистора VT2 и создаст падение напряжения на резисторе R5. В открытом состоянии он будет, подобно тиристору, пребывать до тех пор, пока ток через него (читай — напряжение на входе) не упадет до нуля. Резистор R6 нужен для более надежного за
пирания транзистора VT2. Теперь понятно, как работает генератор: сначала конденсатор заряжается с постоянной времени, обусловленной его емкостью С и сопротивлением фоторезистора R, и когда напряжение на нем достигнет половины напряжения питания (что обусловлено одинаковостью резисторов R3 и R4), он очень быстро разрядится через открывшийся однопереходной транзистор, резистор R5 и подключенный параллельно с ним управляющий электрод тиристора, формируя импульс включения. Когда напряжение на конденсаторе станет мало, однопереходной транзистор закроется, и все начнется сначала — конденсатор начнет заряжаться и т. д. Частоту генератора можно оценить по формуле f = URC. А что тиристор? Он теперь останется открытым до очередного перехода сетевого напряжения через нуль, а затем будет ожидать следующего открывающего импульса. Меняя сопротивление фоторезистора — т. е. изменяя входной ток светодиода оптрона, мы можем менять промежуток между открывающими импульсами и, тем самым, сдвигать их фазу относительно периода сетевого напряжения. Однако это еще довольно приблизительное описание того, что на самом деле происходит в этой схеме. Внимательный читатель давно заметил, что питание генератора осуществляется прямо от выпрямленного напряжения сети через резистор R7, величина которого подобрана таким образом, чтобы напряжение на элементах схемы даже на максимуме синусоиды не превышало бы примерно 30 В и не вывело бы элементы схемы из строя. Такое пульсирующее питание в данном случае вовсе не просто суровая необходимость — оно крайне полезно. Все дело в том, что частота всех аналоговых генераторов с времязадающей RC-цепочкой весьма нестабильна и зависит от множества причин. Если бы мы использовали для питания такого генератора постоянное напряжение, то установленный нами промежуток между импульсами быстро бы "уехал", и ни о каком стабильном сдвиге фазы и речи бы не шло— напряжение на нагрузке менялось бы хаотически. Хотя у выбранной нами схемы генератора рабочая частота, которая определяет промежуток между импульсами, довольно слабо зависит от напряжения питания в самых широких пределах, это бы не помогло. В данном же случае, когда тиристор открывается, он шунтирует мост (ток ограничен током нагрузки), все падение напряжения сети теперь приходится на нагрузку, и напряжение питания генератора снижается почти до нуля (точнее — до утроенного значения падения на диоде). В конце очередного полупериода тиристор запирается, и генератор опять начинает работать. Когда напряжение питания падает практически до нуля, однопереходной транзистор, согласно описанному выше алгоритму его работы, откроется — ведь на входе у него напряжение, накопленное на конденсаторе, и оно рано или поздно превысит напряжение на делителе, причем в конце концов это произойдет, даже если тиристор не откроется вовсе
(в схемах без моста в цепи нагрузки, приведенных ниже, работа тиристора не оказывает влияния на питание схемы), потому что в конце полупериода напряжение так или иначе упадет. Поэтому, независимо от того, насколько конденсатор заряжен, он к концу полупериода обязательно разрядится и к началу нового полупериода придет "чистеньким". Это означает, что схема наша автоматически синхронизируется с частотой сети, и промежуток времени от начала очередного полупериода до возникновения запускающего тиристор импульса (фаза управляющего импульса) будет достаточно стабилен независимо от внешних условий. Если вдруг вы захотите использовать в этой схеме вместо аналогового генератора контроллер (что будет, несомненно, гораздо более современным решением), то вам придется тоже обязательно синхронизировать его выходные импульсы с сетевым напряжением — теперь уже не потому, что их частота будет нестабильна (для контроллера она, как правило, задается кварцевым генератором, хотя это и необязательно), а наоборот, потому что нестабильна частота сети и синхронизировать эти частоты по-другому невозможно. Если вникнуть в описанный алгоритм работы глубже, то станет понятно, что при малых углах регулирования (до половины полу периода) генератор, в принципе, может выдать (а в схемах, описанных далее — и выдаст) за полупериод несколько импульсов, но это не должно нас смущать — тиристор запустится с первым пришедшим, а остальные просто сработают вхолостую. Вот сколько тонкостей зарыто в такой, казалось бы, простой схеме! Кстати, законный вопрос — а что, сам однопереходной транзистор нельзя было использовать, обязательно было городить аналоги? Ответ— можно. Вместо двух транзисторов VT1 и VT2 можно включить один однопереходной транзистор типа КТ117 с n-базой. А вот однопереходные транзисторы противоположной полярности, с p-базой, несомненно, существуют в природе, однако ваш покорный слуга ни разу в руках их не держал, предпочитая использовать аналог, чем заниматься поисками. Такой транзистор нам понадобится, например, для симметричной схемы (см. рис. 11.5). Никакой разницы при использовании аналога в работе схемы не будет. Оптрон АОД130Б можно заменить на любой другой диодный оптрон, однако учтите, что отечественные оптроны старых моделей имеют очень небольшое пробивное напряжение изоляции (100—200 В), что, впрочем, критично только в том случае, если регулирующая схема (переменный резистор) гальванически соединена с потенциалом, связанным с сетью — например, заземлена. Так как это маловероятно, то, в крайнем случае, можно не обращать внимания на этот параметр, но все же использовать "нормальные" оптопары как-то ... спокойнее. Транзисторы КТ815Г—КТ814Г, вообще говоря, можно заменить
на соответствующие маломощные, скажем, на мои любимые КТЗ15Г—КТ361Г или КТЗ 102—КТЗ 107, потому что мощность транзистора тут большой роли не играет, но с более мощными схема может работать стабильнее из-за того, что у них в открытом состоянии внутренние сопротивления переходов существенно ниже. Конденсатор С1, естественно, керамический или с органическим диэлектриком, например, КМ-6. Тиристор можно заменить на любой другой близкий по мощности. Для больших токов нагрузки (>1—2 А) тиристор придется поставить на радиатор 15—30 см . Крупным недостатком этой схемы является наличие моста, через который течет тот же ток, что и через нагрузку. При указанных на схеме диодах, рассчитанных каждый на ток до 3 А и тиристоре с предельным током 10 А мощность в нагрузке, в принципе, может достигать 1,3 КВт (т. к. через каждый диод течет ток только в течение одного полупериода, то ток через него и мощность, выделяющаяся на нем, наполовину меньше, чем на тиристоре). Производители диодов из серии lN54xx в описании их характеристик хвастаются, что даже при максимальном токе 3 А дополнительного теплоотвода для них не требуется, однако, если рассчитывать на максимальную мощность, и тем более, если устройство будет собрано в герметичном корпусе, где будет, несомненно, очень жарко, то их все же лучше заменить на такие, которые можно устанавливать на радиатор, например, из серии КД202 с буквами от К до Р (т. к. эти диоды рассчитаны на ток до 5 А, то можно выжать мощность уже 2 КВт). Естественно, можно использовать и готовый мост, скажем, импортный KBL04. Отладку надо начинать со сборки всей схемы, исключая тиристор с мостом и резистор R7. Регулирующую цепочку вход оптрона-К1-К2 (вместо перемен-ника R1 впаяйте пока постоянный резистор) следует подсоединить к тому источнику питания, который будет использоваться в реальном регуляторе (можно применить любой нестабилизированный источник со встроенной вилкой или только его внутренности, как указано в главе 10). Напряжение источника большого значения не имеет, оно может быть любым в диапазоне от 7 до 20 В. Питание остальной части схемы мы на период отладки обеспечиваем также от источника постоянного тока— можно от того же самого, что и регулирующая цепочка. Питание включаем так, чтобы плюс его был наверху по чертежу схемы. Затем постоянный резистор, заменяющий R1, перемыкаем накоротко с помощью проволочной перемычки, все включаем и смотрим с помощью осциллографа импульсы, которые должны появиться на резисторе R5. Если импульсов нет, это означает одно из двух — либо что-то неправильно собрано, либо вы их просто не видите, т. к. они достаточно короткие. Посмотрите тогда форму напряжения на конденсаторе С1 — там вы точно должны все поймать. Если конденсатор заряжается и разряжается как
надо, попробуйте опять поймать импульсы, меняя длительность развертки и используя синхронизацию. После этого определите по сетке осциллографа и установкам времени развертки время промежутка между ними. Изменяя номинал резистора R2, это время нужно установить в пределах одной-полутора миллисекунд, меньше не надо, т. к. мы уже знаем, что при меньших фазовых сдвигах регулирования все равно никакого не будет (30° сдвига соответствует примерно 1,5 мс для частоты 50 Гц). После этого снимаем перемычку с R1. В этом состоянии промежуток должен находиться в пределах 10—11 мс. Если это не так, то подберите этот резистор. Затем на его место следует впаять переменный резистор точно такого же номинала. Наконец, отключаем осциллограф, подключаем резистор R6 и мост с тиристором, а в качестве нагрузки подсоединяем обычную бытовую лампочку накаливания. Насчет мер предосторожности при работе с сетевым напряжением вам уже все, надеюсь, известно (если нет— перечитайте соответствующий фрагмент из главы 2). Не забудьте убедиться, что на макете не валяются обрезки выводов компонентов, которые могут замкнуть сетевое питание и устроить тем самым маленький атомный взрыв. Сначала включаете питание регулирующей цепочки, потом — сеть. При вращении движка резистора R3 яркость лампы должна плавно меняться от максимума до полной темноты. В последнем случае волосок не должен светиться совсем, даже темнокрасным свечением. Чтобы убедиться в наличии максимума, надо просто временно перемкнуть тиристор (осторожно! перемычку надо устанавливать только при выключенном сетевом питании) — это и будет номинальная яркость лампы. Если диапазон регулировки недостаточен или, наоборот, в начале или конце наблюдается значительный холостой ход — подберите резисторы R1-R2 поточнее. На рис. 11.4 изображен улучшенный вариант предыдущей схемы без мощного моста (управляющая цепочка не показана). Для того чтобы обеспечить напряжение в нагрузке в оба полупериода, используются два тиристора, включенные встречно-параллельно. Управление ими осуществляется через импульсный трансформатор Т1, который представляет собой ферритовое кольцо марки 1000НН—2000НН диаметром от 20 до 30 мм. Обмотки намотаны проводом МГТФ-0,35. Первичная обмотка (I) содержит 30—40 витков, вторичные (II и III) наматываются вместе и содержат от 40 до 50 витков каждая. Обратите внимание на противоположную полярность включения вторичных обмоток— если она иная, то включение нагрузки будет только в один из полупериодов. Через маломощный мост КЦ407 питается схема генератора, работа которой не отличается от описанной выше. Резистор R7 можно поставить и до моста в цепь переменного напряжения, тогда требования к предельно допустимому напряжению диодов моста снижаются.
R7 ЮОк Рис. 11.4. Вариант регулятора с двумя встречно-параллельными тиристорами DA1 АОР124Б R6 ЮОк Рис. 11.5. Вариант регулятора с симистором вместо тиристора * Зак. 710
Укажу еще один вариант схемы, которая позволяет вместо двух тиристоров использовать симистор (триак). Модернизированная схема устройства показана на рис. 11.5. Отличается она тем, что генератор работает в обеих полярностях сетевого напряжения — в положительном полупериоде работает аналог однопереходного транзистора с n-базой на транзисторах VT1 и VT2, как и выше, а аналог однопереходного транзистора противоположной полярности (с p-базой) на транзисторах VT3 и VT4 делает все то же самое, но в отрицательном полупериоде напряжения. Таким образом, управление симистором обеспечивается в обоих полупериодах. Это остроумное решение заимствовано с сайта www.electrostar.narod.ru. Однако, чтобы здесь обеспечить плавную регулировку, диодный оптрон не годится, т. к. он может работать только в определенной полярности, и приходится использовать резисторный оптрон АОР124Б. Он может быть заменен на любой другой резисторный оптрон (их не так-то и много разновидностей) или даже изготовлен самостоятельно из светодиода и фотосопротивления (последних как раз в продаже предостаточно) — для этого достаточно закрепить светодиод эпоксидной смолой в вертикальном положении на фотосопротивлении так, чтобы он смотрел прямо "в лицо" последнему, а потом плотно закрасить оставшуюся часть окна фоторезистора густой темной краской или залепить черной липкой лентой. Единственный, но существенный недостаток этой схемы по сравнению с предыдущими вариантами — резисторный оптрон может вести себя не слишком стабильно, особенно при изменениях температуры. Поэтому такая схема в силу своей простоты может быть рекомендована для использования в схемах регулирования мощности с обратной связью, которая устраняет последствия нестабильности регулятора, например, в схеме прецизионного термостата (см. рис. 15.7). Устройство плавного включения ламп накаливания Лампы накаливания перегорают практически всегда при включении. Это происходит потому, что сопротивление вольфрамового волоска, как и любого металла, зависит от температуры — с повышением температуры оно повышается, причем т. к. перепад температур очень велик (порядка 2000 градусов), то сопротивление холодной лампы может быть в десятки раз ниже, чем горящей. Например, у лампы 100 Вт, 220 В рабочее сопротивление должно быть почти 500 Ом, однако мультиметр для выкрученной из цоколя лампы покажет величину меньше 40 Ом. Большой начальный ток и является причиной выхода лампы из строя. Целесообразно при включении постепенно (в течение 0,5—1 с) повышать напряжение — это может продлить срок службы лампы в несколько раз.
Такое устройство легко соорудить из разобранной выше схемы ручного регулятора в любом из ее вариантов путем небольшой переделки узла управления. Так как это устройство не будет содержать органов ручного управления, то оно представляет собой то самое исключение из правил — питать его можно целиком прямо от сети. Оптрон мы сохраним как удобное устройство управления. Переделки сведутся к тому, что мы заменим цепочку R1-R2 на узел, показанный на рис. 11.6. Здесь конденсатор С2 (я сохранил нумерацию компонентов) после включения питания заряжается через резистор R1 с постоянной времени RC. Так как изначально конденсатор разряжен, то тока через светодиод оптрона не будет и генератор не работает — темновое сопротивление фотосопротивления слишком велико. По мере заряда конденсатора напряжение на выходе эмиттерного повторителя будет возрастать, ток через оптрон увеличиваться и в течение примерно 1 с он возрастет настолько, что фаза управляющих импульсов сдвинется к самому началу полупериода и яркость горения лампы станет максимальной. После выключения питания С2 разрядится через цепочку переход база-эм иттер-К2-светод иод оптрона, и схема придет в начальное состояние. Питание управляющего узла должно быть положительным, поэтому мы его питаем через диод VD2. Удобством в этой схеме является то, что особо тонкой настройки она не требует. Соберите ее при указанных номиналах и сразу включите в сеть. Если яркость растет слишком быстро или, наоборот, медленно — подберите резистор R1. Если же она вообще не достигает максимальной, то уменьшите значение резистора R2. VD2 К R6 R1* 47к КД521 + С2 = 47,0мк х35 В f VT5 Н^КТ3102 HR2‘ 1|б,2к к нижнему выводу С1 Рис. 11.6. Переделка узла управления для устройства плавного включения ламп накаливания
Подобных схем регуляторов очень много в радиолюбительской литературе и в Сети (см., например, [14]), имеются и более компактные конструкции, в том числе такие, которые представляют собой двухполюсник и могут подключаться в разрыв цепи нагрузки. Естественно, схемы подобных регуляторов выпускают и в интегральном исполнении. Мы их здесь разбирать не будем — в принципе все они устроены похоже, а принцип мы изучили. Еще раз только напомним про правило: если схема предполагает ручное управление, органы управления ни в коем случае не должны быть связаны с сетью! Подобные схемы могут быть весьма компактны, но своя жизнь дороже. Помехи В заключение главы о мощной нагрузке нужно прояснить еще один момент, связанный с помехами. В начале главы я долго распинался по поводу того, что резко выключать мощную нагрузку в сети нельзя и электронные реле даже имеют специальные средства для отслеживания момента перехода через ноль3. Между тем, все разобранные схемы с фазовым управлением именно это и делают. Поэтому если вы включите такой регулятор напрямую в сеть, то помех не избежать — как электрических по проводам сети, так и электромагнитных, распространяющихся в пространстве, и чем мощнее нагрузка, тем больше эти помехи. Особенно чувствительны к этому делу АМ-приемники — мощный регулятор может давить передачи ВВС не хуже советских глушилок. Для того чтобы свести помехи к минимуму, необходимо, во-первых, заземлить корпус прибора, во-вторых, на входе питания устройства вместе с нагрузкой поставить LC-фильтр. Это относится и к регуляторам в интегральном исполнении. Для заземления корпус, естественно, должен быть металлическим или металлизированным изнутри. В выигрышном положении окажутся те, кто будет изготавливать корпуса самостоятельно из стеклотекстолита по технологии, изложенной в главе 3 — у них уже есть прекрасный экран из медной фольги, достаточно только припаять провод заземления в любом удобном месте на внутренней стороне корпуса и присоединить его к зелененькому третьему проводу в сетевой вилке. Если же корпус чисто пластмассовый, 3 Внимательный читатель, несомненно, давно уже задает вопрос: если тиристор при отсутствии тока через него выключается, то как можно запустить тиристорную схему в момент перехода напряжения через ноль? Отвечаю: естественно, никак. Поэтому схема zero-коррекции на самом деле запускает мощный тиристор не точно в момент равенства анодного напряжения нулю, а тогда, когда ток через него уже достигает некоторой небольшой, но конечной величины. Практически это обеспечить несложно: надо дождаться момента очередного перехода через ноль, и сразу запустить генератор открывающих импульсов на достаточно высокой частоте. Тиристор "сам выберет" из последовательности импульсов тот, при котором "уже можно открываться".
то его нужно изнутри обклеить алюминиевой фольгой потолще (та, что применяется в микроволновых печах, конечно же, не подойдет). Надежно обеспечить контакт вывода заземления с таким экраном непросто — это можно сделать, приклеив зачищенный на несколько сантиметров провод широким скотчем или соорудив прижимной контакт из упругой бронзы (например, из контакта старого мощного реле). Если настоящего заземления нет — лучше экран никуда вообще не присоединять, т. к. занулять нельзя ни в коем случае, а к батарее тащить и неудобно, и тоже опасно (см. главу 10). -220 В L1 47 н х400 В К регулятору Рис. 11.7. Схемы фильтров сетевого питания для подавления помех На рис. 11.7 приведены два варианта построения развязывающего LC-фильтра. Второй, более продвинутый вариант (внизу на рисунке), предназначен в большей степени для случая, когда нагрузка носит активный характер (например, электродвигатель), но если вы соорудите его в случае обычной резистивной нагрузки, определенно хуже не будет. Для изготовления дросселя (так называют индуктивности, если они служат для фильтрации высоких частот в шинах питания и в некоторых других случаях) нужно взять ферритовое кольцо марки 600-1000НН диаметром 24—36 мм и намотать на него виток
к витку провод МГШВ сечением около 1 мм — сколько уместится. Во втором варианте фильтра дроссели L1 и L2 можно объединить, намотав их на одном кольце — причем если помехи будут подавляться плохо, то надо поменять местами начало и конец одной из обмоток. Можно использовать и готовые дроссели подходящей мощности — проконсультируйтесь у продавцов, прежде чем покупать. Если нагрузка совсем маломощная (до 20 Вт), то дроссели можно, в крайнем случае, заменить на резисторы 10—15 Ом мощностью не менее 2 Вт. Конденсаторы — любые неполярные на напряжение не менее 400 В, среднюю точку их во втором варианте нужно подсоединить к настоящему заземлению (т. е. к уже заземленному корпусу). Если таковое отсутствует, то все равно надо присоединить эту точку к экрану корпуса прибора, но без настоящего заземления работа фильтра заметно ухудшится — фактически он превратится в несколько улучшенный первый вариант.
Глава 12 Слайсы, которые стали чипами. О микросхемах Ему предстояло увидеть наяву тот заветный сундук, который он двадцать раз представлял в своих грезах. А. Дюма, "Три мушкетера" Самые первые микросхемы были совсем не такими, как сейчас. Они изготав-.ливались гибридным способом: на изолирующую подложку напылялись алюминиевые проводники, приклеивались маленькие кристаллики отдельных транзисторов и диодов, малогабаритные резисторы и конденсаторы, и затем все это соединялось в нужную схему тонюсенькими золотыми проволочками — вручную, точечной сваркой под микроскопом. Можно себе представить, какова была цена таких устройств, которые тогда еще не назывались микросхемами — чаще употребляли название микромодули или микросборки. К гибридным микросхемам относятся и некоторые современные типы, к примеру, оптоэлектронные, но, конечно, сейчас выводы отдельных деталей уже вручную не приваривают. Ведущий специалист и один из основателей компании Fairchild Semiconductor Роберт Нойс позднее признавался, что ему стало жалко работников, терявших зрение на подобных операциях, и в 1959 г. он выдвинул идею микросхемы — "слайса" или "чипа" (slice — ломтик, chip — щепка, □сколок), где все соединения наносятся на кристалл прямо в процессе производства. Позднее оказалось, что несколько ранее аналогичную идею выдвинул сотрудник Texas Instruments Джек Килби, однако у Нойса технология была разработана более детально (это была так называемая планарная технология с алюминиевыми межсоединениями, которая часто используется и по сей день). Спор о приоритете между Килби и Нойсом продолжался в течение десяти лет, и, в конце концов, победила дружба: было установлено считать Нойса и Килби изобретателями микросхемы совместно. В 2000 г. Килби (Нойс скончался в 1990 г.) получил за изобретение микросхемы Нобелевскую премию (одновременно с ним, но за другие достижения ее получил и российский физик Жорес Алферов).
Рис. 12.1. Изобретатель микросхемы Роберт Нойс (Robert Noyce, 1927—1990) Компания Fairchild Semiconductor в области полупроводниковых технологий стала примерно тем, чем фирма Маркони в области радио или фирма Xerox в области размножения документов. Началось все с ее рождения: восемь инженеров, уволившихся в 1957 г. из основанной изобретателем транзистора Уильямом Шокли компании Shockley Semiconductor Labs, обратилась к начинающему финансисту Артуру Року — единственному, кому их идеи показались интересными. Рок нашел компанию, которая согласилась инвестировать основную часть из требуемых 1,5 миллиона долларов, и с этого момента принято отсчитывать рождение нового способа финансирования инновационных проектов — венчурных (т. е. "рисковых") вложений, что в дальнейшем позволило родиться на свет множеству компаний, названия которых теперь у всех на слуху. Следующим достижением Fairchild стало изобретение микросхем Робертом Нойсом, и первые образцы многих используемых и поныне их разновидностей были созданы именно тогда (например, в одном из первых суперкомпьютеров на интегральных схемах — знаменитом ILLIAC IV — были использованы микро-, схемы памяти производства Fairchild). А в 1963 г. отдел линейных интегральных схем в ней возглавил молодой специалист по имени Роберт Видлар, который стал "отцом" интегральных операционных усилителей, основав широко распространенные и поныне серии, начинающиеся с букв ц и LM (мы о нем уже упоминали в главе 10 в связи с интегральными стабилизаторами питания).' В 1965 г. знаменитый Гордон Мур, тогда— один из руководителей Fairchild входивший вместе с Нойсом в восьмерку основателей, сформулировал свой "закон Мура" о том, что производительность и число транзисторов в микросхемах удваиваются каждые 1,5 года — этот закон фактически соблюдается и по сей день! В 1968 г. Нойс с Муром увольняются из Fairchild и основывают фирму, название который теперь знает каждый школьник: Intel. Инвестором новой компании стал все тот же Артур Рок. А другой работник Fairchild, Джереми Сандерс, в следующем, 1969 г. основывает фирму почти столь же известную, как и Intel — ее "заклятого друга" AMD.
Что же дало использование интегральных микросхем, кроме очевидных преимуществ, таких, как миниатюризация схем и сокращение количества операций при проектировании и изготовлении электронных устройств? Рассмотрим прежде всего экономический аспект. Первым производителям чипов это было еще не очевидно, но экономика производства микросхем отличается от экономики других производств1. Если вы закажете архитектору проект загородного дома, то стоимость этого проекта будет сравнима со стоимостью самого дома. Даже если вы по этому проекту построите сто домов, то вы не так уж сильно выгадаете на стоимости каждого — стоимость проекта поделится на сто, но выгода ваша будет измеряться процентами, потому что построить дом дешевле, чем стоят материалы и оплата труда рабочих нельзя, а они-то и составляют значительную часть стоимости строительства. В производстве же микросхем картина меняется. Цена материалов, из которых они изготовлены, в пересчете на каждый чип настолько мала, что она составляет едва ли несколько процентов от стоимости конечного изделия. Поэтому основная часть себестоимости чипа складывается из стоимости его проектирования и стоимости самого производства, на котором они изготавливаются — фабрика для производства полупроводниковых компонентов может обойтись в сумму порядка 2—4 миллиардов долларов. Ясно, что в этой ситуации определяющим фактором стоимости чипа будет количество, которое вы заказываете: обычно, если вы заказываете меньше миллиона экземпляров, то с вами даже разговаривать не станут, а если вы будете продолжать настаивать, то один экземпляр обойдется вам во столько же, сколько и весь миллион. Именно массовость производства приводит к тому, что сложнейшие схемы, которые в дискретном виде занимали бы целые шкафы ценой в десятки тысяч долларов, продаются дешевле томика технической документации к ним. Вторая особенность экономики производства микросхем — то, что их цена мало зависит от сложности. Микросхема операционного усилителя содержит несколько десятков транзисторов, а микросхема контроллера — несколько десятков тысяч, однако их стоимости по меньшей мере сравнимы. Эта особенность тоже не имеет аналогов в дискретном мире — с увеличением сложности обычной схемы ее цена растет пропорционально количеству использованных деталей, а в микромире это совсем не так: фактически единственный фактор, который ведет к увеличению себестоимости сложных микросхем по сравнению с более простыми, кроме стоимости проектирования — это процент выхода годных изделий, который может снижаться при увеличении сложности. Если бы не это обстоятельство, то стоимость Pentium не намного бы 1 Одним из первых, кто понял, как именно нужно торговать микросхемами, был сотрудник Fairchild Джереми Сандерс.
превышала стоимость того же операционного усилителя. Однако в Pentium, извините, несколько десятков миллионов транзисторов! Это обстоятельство позволило проектировщикам без увеличения стоимости и габаритов реализовать в микросхемах такие функции, которые в дискретном виде было бы реализовать просто невозможно или крайне дорого. Кстати, выход годных — одна из причин того, что кристаллы микросхем такие малень'кие. В некоторых случаях разработчики даже рады были бы увеличить размеры, но тогда резко снижается и выход. Типичный пример такого случая — борьба производителей цифровых фотоаппаратов за увеличение размера светочувствительной матрицы. Если бы ее удалось сделать размером с пленочный кадр (24x36 мм), то это одним махом решило бы массу проблем, но на момент написания этой книги самые лучшие (и самые дорогие) матрицы имеют размер только в половину необходимого. Еще одна особенность микросхем — надежность. Дискретный аналог какого-нибудь устройства типа аналого-цифрового преобразователя содержал бы столько паек, что какая-нибудь, в конце концов, обязательно вышла бы из строя. Между тем, если вы эксплуатируете микросхему в штатном режиме, то вероятность ее выхода из строя измеряется милионными долями единицы. Это настолько редкое явление, что его можно практически не учитывать на практике — если у вас сломался какой-то прибор, ищите причину в контактах переключателей, в пайках внешних выводов, в заделке проводов в разъемах — но про возможность выхода из строя микросхемы забудьте. Разумеется, это, повторяю, относится к случаю эксплуатации в штатном режиме — если вы подали на микрофонный вход звуковой карты напряжение вольт в 30 или замкнули выход COM-порта на его вход — конечно, в первую очередь пострадает именно микросхема. Но сами по себе они практически не выходят из строя никогда. Наконец, для схемотехников микросхемы обладают еще одни бесценным свойством: все компоненты в них изготавливаются в едином технологическом процессе и находятся в строго одинаковых температурных условиях. Это совершенно недостижимо для дискретных приборов — например, пары транзисторов, для которых желательно иметь идентичные характеристики, ранее приходилось подбирать вручную (такие уже подобранные пары специально выпускались промышленно) и иногда даже ставить их на медную пластину, чтобы обеспечить одинаковый температурный режим. Рассмотрим типичный пример такого случая — так называемое токовое зеркало (рис. 12.2). Эта схема работает следующим образом. Левый по схеме транзистор представляет собой фактически диод, так как у него коллектор соединен с базой. Из характеристики диода (см. рис. 6.1) видно, что при изменении прямого тока на нем несколько меняется и напряжение (оно не'
равно точно 0,6 В). Это напряжение без изменений передается на базу второго, ведомого транзистора, в результате чего он выдает точно такой же ток — но только при условии, если характеристики транзисторов согласованы с высокой степенью точности. То есть если току 1 мА через первый транзистор соответствует напряжение на его переходе база-эмиттер, равное, к примеру, 0,623 В, то такому же напряжению на переходе второго транзистора должен соответствовать такой же ток. Мало того, это соответствие должно сохраняться во всем диапазоне рабочих температур! Естественно, столь высокая идентичность характеристик практически недостижима для дискретных приборов, а для транзисторов, входящих в состав микросхемы, она получается сама по себе, без дополнительных усилий со стороны разработчиков. Рис. 12.2. Токовое зеркало Схемы подобных токовых зеркал получили широкое распространение в интегральных операционных усилителях в качестве нагрузки входного дифференциального каскада, что значительно лучше, чем использовать простые резисторы (см. главу 6). Их применение вместо резисторов гарантирует повторяемость характеристик ОУ в широком диапазоне питающих напряжений. Отметим также, что ведомых транзисторов может быть много (на рис. 12.2 второй такой транзистор показан серым цветом), их количество ограничивается только тем обстоятельством, что базовые токи вносят погрешность в работу схемы, отбирая часть входного тока на себя. Впрочем, и с этим обстоятельством можно успешно бороться. Кстати, резисторы в микросхемах в некритичных случаях все равно предпочитают делать из транзисторов — сформировать обыкновенный резистор, как проводник с заданным сопротивлением, в процессе производства микросхем значительно труднее, чем соорудить, скажем, полевой транзистор с заданным начальным током стока. По этой причине, если точных значений номиналов резисторов не требуется согласно функциональным особенностям микросхемы, они имеют большой разброс — например, входное сопротивление портов микроконтроллеров AVR может колебаться в пределах от 35 до 100 кОм.
Если же все же точные или хотя бы согласованные номиналы резисторов иметь необходимо (как, к примеру, в микросхемах ЦАП и АЦП, которые мы будем рассматривать в главе 25), то после изготовления микросхемы их приходится специально подгонять с помощью лазера. На рис. 12.2 соединение баз транзисторов не случайно показано необычным способом: в реальности они действительно представляют собой одну структуру, на которую "навешиваются" коллекторы и эмиттеры отдельных транзисторов. В микросхемах могут использоваться такие разновидности транзисторных структур, которые в обычной дискретной жизни не имеют аналогов: скажем, многоэмиттерные или многоколлекторные транзисторы. Для примера на рис. 12.3 приведена схема входного каскада микросхемы транзисторнотранзисторной логики (ТТЛ), осуществляющей логическую функцию ИЛИ (см. главы 18 и 20). В этой схеме замыкание любого из трех эмитттеров (или двух, или всех вместе — поэтому функция и называется ИЛИ) на общий провод питания приведет к тому, что транзистор откроется и обеспечит ток через нагрузку (на самом деле нагрузка носит несколько другой характер, но сейчас мы не будем на этом заострять внимание). Вход 1 Вход 2 Вход 3 -•—+5В II Нагрузка । । (следующие ijJ каскады) Рис. 12.3. Входной каскад элемента ТТЛ Кратко рассмотрим общие особенности эксплуатации различных типов микросхем (более подробно о конкретных типах будет рассказано в соответствующих главах). Во-первых, вы, возможно, слышали о том, что микросхемы боятся статического электричества. Действительно, потенциал заряда, накапливающегося на нейлоновом халатике симпатичной монтажницы, одетой к тому же в синтетические юбочку, кофточку и колготки, может составлять тысячи вольт (правда, сама величина заряда невелика). Но не обязательно носить синтетическую одежду — достаточно походить по полу, покрытому обычным линолеумом или недорогим паласом, чтобы накопить на себе вполне достаточный заряд (в дорогих покрытиях это чаще всего предусмотрено и зарядам накапливаться не дают). Такое напряжение, конечно, может вывести из строя микросхемы и не только микросхемы — особенно чувствительны к нему полевые транзисторы с изолированным затвором. Так как заряду
на выводе затвора у них стекать некуда, то все накопленное на вас напряжение будет приложено к тоненькому промежутку между затвором и каналом, и совсем не исключено, что изолирующий слой окисла кремния не выдержит такого надругательства. Поэтому при монтаже всегда следует соблюдать несколько правил: не носить синтетическую одежду и не использовать синтетические покрытия для пола и монтажного стола (профессиональные монтажные столы вообще покрывают заземленным металлическим листом). Неплохую гарантию дает заземление корпуса паяльника, но на практике это осуществить непросто, учитывая, что заземление, как таковое, в наших домах отсутствует. Можно также привести еще несколько рекомендаций: □ не хвататься руками за выводы микросхем без нужды. При необходимости их формования взять микросхему в левую (для левшей — в правую) руку так, чтобы пальцы касались выводов питания; □ первыми всегда следует припаивать выводы питания микросхемы (для дискретных транзисторов — эмиттер или исток); □ перед началом монтажа, особенно, если вы только что переодевались, следует подержаться руками за заземленный металлический предмет (водопроводный кран); □ при стирке рабочей одежды обязательно использовать антистатик. Хорошую защиту также дает метод, при котором вы не впаиваете микросхему в плату непосредственно, а устанавливаете ее на панельку. Панельку, естественно, можно совершенно безопасно монтировать любым паяльником, а микросхема устанавливается в самый последний момент. Правда, такой метод снижает надежность конструкции. Однако случаи выхода микросхем из строя от статического электричества все же довольно редки, т. к. производители эту опасность учитывают, и для критичных случаев принимают меры по защите выводов. Самой распространенной мерой является установка защитных диодов по два на каждый вывод так, что один из них присоединен катодом к плюсу питания, а другой — анодом к минусу (рис. 12.4). Если напряжение на выводе не выходит за пределы питания, то такие диоды не оказывают никакого влияния на работу схемы (или почти никакого, см. ниже). Если же напряжение на выводе выходит за эти пределы, то оно замыкается через соответствующий диод либо на шину питания, либо на общую шину. Кстати, подобный прием позволяет иногда защитить микросхему и от неправильного включения питания — если плюс и минус питания на схеме рис. 12.4 поменять местами, то весь ток пойдет че-рез диоды , и питание упадет до двойного падения напряжения на диоде. ? В этих целях иногда ставят и еще один отдельный защитный диод — прямо от питания до питания.
Тут весь вопрос в том, насколько долго диоды могут выдерживать прямой ток от источника. В моей практике бывали случаи, когда выдерживали. +1/пит - 1/пит Рис. 12.4. Защита выводов микросхем от перенапряжения Наличие защитных диодов следует учитывать. Скажем, микросхемы с комплементарными полевыми транзисторами (КМОП), которые мы будем подробно изучать в главе 20, в статическом режиме и на низких частотах потребляют настолько малый ток, что вполне могут питаться и через защитный диод от входного сигнала, даже если напряжение питания вообще не подключено. Правда, при этом с выходным сигналом творятся всякие чудеса, но все же выглядит это довольно эффектно. Конечно, обычные КМОП-чипы никто в таком режиме не использует, но иногда в микросхему специально встраивают небольшой конденсатор по питанию, который накапливает заряд от входного сигнала и позволяет некоторое время работать — скажем, ответить на запрос. По этому принципу устроены, например, цифровые полупроводниковые датчики температуры фирмы Maxim/Dallas — они могут соединяться с показывающим прибором по двухпроводной линии, по которой передается только сигнал, тащить питание отдельно не требуется. С другой стороны, наличие защитных диодов может приводить к неприятностям. Наиболее распространенная в этом смысле ошибка разработчиков электронных схем состоит в том, что при переходе на резервное питание они в целях экономии отключают питание всех узлов, кроме центрального контроллера, или, к примеру, генератора часов реального времени, забывая при этом отключить у них внешние соединения. Тогда схема начинает потреблять даже больше, чем она потребляла в нормальном режиме: если на выходе контроллера есть напряжение, а микросхема, ко входу которой этот выход подсоединен, обесточена, то указанный выход оказывается фактически замкнутым накоротко через защитный диод на шину питания. Мне могут возразить, что на шине питания при выключенном источнике потенциала нет
и току течь некуда — действительно, если питание оборвано, то плюсовая и минусовая шины вроде бы никак не связаны между собой, и "плюс" питания обязан "висеть в воздухе". Именно так, очевидно, рассуждают и наши горе-схемотехники, однако это рассуждение справедливо только в теории. На практике же шины питания связаны между собой, как минимум, фильтрующими конденсаторами большой емкости, которые для маломощного сигнала все равно, что проволочная перемычка (если помните, мы в главе 5 об этом говорили — в момент начала процесса заряда конденсатор равносилен короткому замыканию). Обо всем этом не следует забывать, если вы хотите обеспечить действительно экономичный режим. В некоторых случаях защитные диоды не ставят: они все же имеют хотя и очень небольшой, но конечный ток утечки, который может быть важен, скажем, в случае т. н. зарядового усилителя, т. е. устройства, которое измеряет величину накопленного заряда. Часто не ставят их и в микросхемах для обработки высокочастотных сигналов или, например, в драйверах зарядки аккумуляторных батарей. Так что на всякий случай, особенно, если вы не уверены в наличии защитных диодов, меры предосторожности следует соблюдать. Некоторые характерные типы корпусов микросхем приведены на рис. 12.5 и 12.6. Вверху слева на рис. 12.5 показан пример панельки ("сокета") для корпусов типа DIP, которая позволяет не впаивать микросхему в плату. Внизу на рис. 12.6 показана аналогичная панелька для корпусов типа PLCC (пример самого корпуса выше на рисунке). PLCC специально разработаны на такой случай — их легко вынимать и вставлять обратно, не опасаясь повредить выводы. Подобные панельки особенно удобно использовать в макетах, а также их всегда применяют в случаях, если микросхему нужно иногда извлекать из устройства для ее перепрограммирования. Именно корпуса типа PLCC используются в современных компьютерах для микросхем BIOS. Понятно, что механические контакты в панельке понижают надежность конструкции, и если извлечение микросхемы не предполагается, то все же лучше панельку не использовать, а если использовать все же приходится, то тип PLCC предпочтительнее, чем DIP. Имейте в виду, что очень часто выводов в микросхеме больше, чем требует ее функциональность. В этом случае существует правило: незадействован-ные выводы никуда не присоединять! В западной документации специально даже принято для таких незадействованных выводов обозначение NC (по connected). Будет грубой ошибкой, например, присоединить незадействован-ные выводы 13 и 16 КМОП-микросхемы 561ПУ4 (см. главу 20) к "земле" или питанию, как это следует делать со входами незадействованных элементов.
Панель DIP-40 SOIC-14 DIP-40 DIP-16 DIP-16 (керамика) CERPACK (WG10) Рис. 12.5. Некоторые распространенные корпуса микросхем. Вверху слева — панелька для корпусов типа DIP Рис. 12.6. Некоторые особые типы корпусов для микросхем: слева вверху — извлекаемый тип PLCC, внизу — панелька для него; справа вверху — одна из разновидностей корпусов для микросхем с большим количеством выводов
Глава 13 А на микросхемах - проще. Звуковые усилители на микросхемах Пойми, что было бы неблагоразумно не явиться на столь определенное приглашение. А. Дюма, "Три мушкетера " В качестве первого примера применения микросхем мы попробуем построить звуковой усилитель подобный тому, что мы столь подробно разбирали в главе 9. Надо сказать, что дело это намного более простое, чем конструировать его из дискретных компонентов — нужно только следовать рекомендациям разработчика — и все гарантированно получится. Это правило касается всех микросхем без исключения. Разумеется, если вы хорошо изучили особенности соответствующей разновидности интегральных схем, то имеете полное право поэкспериментировать, но — на свой страх и риск. Такой страх и риск вполне уместен, если вы попытаетесь использовать для построения звукового усилителя отечественные микросхемы серии К174 — характеристики их настолько ужасны, что попробовать их улучшить, как говорится, сам бог велел. Мы не будем с ними разбираться, просто потому что они, по большому счету, внимания вообще не заслуживают, а рассмотрим несколько конструкций на доступных импортных микросхемах. Мощный УМЗЧ Первой мы разберем стандартную схему усилителя мощности низкой частоты (УМЗЧ) на популярной микросхеме TDA2030 производства фирмы ST Microelectronics. Схема обладает примерно такими же характеристиками, как усилитель, описанный в главе 9. Производитель гарантирует при выходной мощности 14 Вт на нагрузке 4 Ом искажение сигнала не более 0,5% (заведомо лучше нашей самодеятельной конструкции). Если снизить требования к величине искажений, то при наших ±15 В из микросхемы можно выжать и те же самые 21 Вт. Предельно допустимое значение напряжения питания для TDA2030 достигает ±18 В (или 36 В однополярного), но разумеется, при таком
питании ее эксплуатировать не рекомендуется. Увеличение искажений при повышении выходной мощности, вероятно, связано с тем, что в чип встроена защита от перегрева выходных транзисторов, которая ограничивает выходной ток, когда температура корпуса повышается. Источник питания для этого усилителя можно использовать тот же самый, что описан в главе 10. Вместе с тем схема эта обладает рядом преимуществ перед нашей дискретной конструкцией. Об искажениях мы уже упоминали, но кроме этого производитель гарантирует такие характеристики, как диапазон частот, которые передаются с заданным коэффициентом усиления и при заданных искажениях сигнала (40 Гц — 15 кГц), и коэффициент подавления влияния нестабильности источника питания на качество выходного сигнала (в 100—300 раз, что позволяет спокойно использовать наш несложный источник). Гарантируется устойчивость усилителя при использовании рекомендуемых номиналов резисторов и конденсаторов и даже приводятся рекомендации по размерам охлаждающего радиатора. Выход микросхемы защищен от короткого замыкания в нагрузке (точнее, ограничен выходной ток). Рис. 13.1. Основная схема усилителя звуковой частоты на микросхеме TDA2030
От перечисления весьма греющих душу свойств этой конструкции перейдем, наконец, к рассмотрению схемы (рис. 13.1). Собственно усилитель включает саму микросхему DA1, конденсаторы Cl, С2 и резисторы R1-R4. Если внимательно присмотреться к этой схеме, то мы увидим, что структурно она ничем не отличается от нашей схемы из главы 9. Мало того, здесь даже установлен с помощью обратной связи тот же самый коэффициент усиления, примерно равный 30. Как будто взяли нашу схему и упаковали ее в отдельный корпус, обеспечив вывод наружу входов дифференциального усилителя, выхода двухтактного (push-pull) каскада усиления мощности и, естественно, выводов питания. На самом деле так оно и есть — подавляющее большинство УМЗЧ имеет приблизительно одинаковую структуру, отличающуюся лишь в частностях, касающихся обеспечения качества или повышения эффективности работы. Скажем, в микросхеме TDA2030 коэффициент усиления по напряжению при разомкнутой цепи обратной связи, согласно уверениям производителя, равен примерно 30 000, а у нас он не более 2000—25001. Что, конечно, для "фирменной" схемы значительно увеличивает линейность усиления и уменьшает уровень искажений (почему это так, мы узнаем в следующей главе). Остальные элементы схемы — вспомогательные. Конденсаторы С4-С7 — развязывающие по питанию, у нас там тоже такие рекомендовалось устанавливать, причем разработчики фирмы ST Microelectronics хорошо затвердили тот факт, о котором я упоминал в главе 5 — емкость электролитических конденсаторов снижается с ростом частоты, поэтому в целях лучшей защиты от помех и повышения устойчивости схемы здесь рекомендуется устанавливать неполярные (например, керамические) конденсаторы (С4 и С6) параллельно с электролитическими (С5 и С7). Кстати, надеюсь, обозначения типа 100,0 и 0,1 вас не смутили, и вы помните, что они подразумевают величину емкости в микрофарадах (т. е. это равносильно обозначениям 100 мкФ и 0,1 мкФ, соответственно). Цепочка R5-C3, которой у нас не было, здесь устанавливается для повышения линейности усилителя при работе на индуктивную нагрузку. Диоды VD1-VD2 служат для предотвращения возможного выхода из строя выходных каскадов микросхемы при индуктивных выбросах напряжения (например, при включении питания) — ох, до чего же нежные эти западные транзисторы! Все электролитические конденсаторы рассчитаны на напряжение не менее 16 В. Если усилитель все же "загудит" (хотя и прямо об этом в тексте фирменной инструкции не сказано), здесь рекомендуется параллельно резистору обратной 1 Эту величину мы не считали, а лишь упоминали. Чтобы ее подсчитать, нужно углубиться в свойства транзисторных каскадов, но это отдельная тема, не очень востребованная на практике, поэтому просто поверьте мне на слово.
связи R4 установить цепочку из последовательно включенных резистора и конденсатора, которые ограничат полосу частот. При номиналах всех остальных компонентов таких, какие указаны на схеме, резистор должен быть равен 2,2 кОм, а конденсатор — не менее 0,5 нФ. Увеличение емкости конденсатора сверх этой величины ведет к ограничению полосы частот, но и к повышению устойчивости схемы. Сама микросхема TDA2030 выпускается в корпусе ТО220, знакомом нам по мощным транзисторам, только имеет он не три вывода, а пять. Разводка выводов приведена на схеме, а для того, чтобы определить расположение выводов, нужно положить микросхему маркировкой вверх, тогда вывод номер 1 будет находиться первым слева (в однорядных корпусах микросхем ключ для определения начала отсчета выводов, упомянутый в главе 8, часто отсутствует, но первый вывод всегда расположен именно так, как указано). Рекомендованная в инструкции площадь охлаждающего радиатора для выходной мощности 14 Вт должна составлять 350—400 см , однако, на мой взгляд, эта величина завышена как минимум вдвое. Впрочем, подобное заключение я могу подтвердить, кроме весьма приблизительной методики расчета из главы 9, лишь личным опытом, и оно не должно быть воспринято как руководство к действию — это совет из серии "на ваш страх и риск". Скорее всего, разработчики из фирмы ST Microelectronics взяли двукратный запас специально. Во-первых, ориентируясь на наихудший случай, когда радиатор будет стоять горизонтально в каком-нибудь тесном непроветриваемом пространстве — ведь мы говорили, что все расчеты радиаторов очень приблизительны! Во-вторых, чтобы уменьшить уровень искажений при больших мощностях из-за встроенного механизма тепловой защиты, о котором мы упоминали выше. На рис. 13.2 приведена схема аналогичного усилителя, но рассчитанного на источник питания с одним напряжением ЗОВ, вместо двух по 15 В. Добавленные в схему резисторы Ra и Rb образуют делитель напряжения, который формирует т. н. "искусственную среднюю точку" — на общей точке резисторов напряжение равно ровно половине питания, что позволяет обеспечить нормальный режим для входного дифференциального усилителя микросхемы. Для того чтобы эта средняя точка не "плавала" при изменении входного, сигнала, в схему добавлен конденсатор Са, который сглаживает его влияние. А на рис. 13.3 показано, как можно построить усилитель с удвоенной выходной мощностью при тех же напряжениях питания и используемых деталях, Это так называемая мостовая схема, которая представляет собой два идентичных усилителя, работающих на одну нагрузку в противофазе: когда на выходе одного усилителя положительный максимум напряжения— на другом отрицательный. Таким образом, амплитуда и действующее значение напряжения
Рис. 13.2. Схема усилителя звуковой частоты с одним источником питания Рис. 13.?. Схема мостового усилителя звуковой частоты
на нагрузке возрастает ровно в два раза, соответственно растет и мощность, которая здесь составит при условии неискаженного сигнала почти 30 Вт. Для того чтобы усилители работали именно так, как указано, обычный (неинвертирующий) вход второго усилителя заземляется, а входной сигнал для него поступает на другой (инвертирующий) вход, туда же, куда заведена его обратная связь. Сам этот входной сигнал берется с того места, куда поступает сигнал от первого усилителя (с левого по схеме вывода динамика) и ослабляется в той же степени, в которой оно было усилено первым усилителем — вследствие равенства резисторов цепочки обратной связи R4-R3, задающей коэффициент усиления первого усилителя, и делителя Rfl-R3'. То есть на вход 2 второго усилителя поступает фактически то же самое входное напряжение, но т. к. вход противоположной полярности, то на выходе второго усилителя получим такой же сигнал, как на выходе первого, только в противофазе, чего мы и добивались. Отметим, что для такого усилителя придется городить более мощный источник питания, чем тот, что описан в главе 10. Микроусилитель мощности Не так уж редко возникает задача вывести звуковой сигнал на маломощный динамик или на головные наушники. Кроме очевидных применений типа воспроизведения музыки, такой усилитель пригодился бы, скажем, в многочисленных конструкциях металлоискателей (их полно в Сети и радиолюбительской литературе), в сигнальных устройствах. Одно из применений его вы увцците в главе 34, когда мы заставим разговаривать ... микроконтроллер. Существует, естественно, масса типов микросхем от разных производителей, которые осуществляют усиление звукового сигнала с возможностью выхода на низкоомную нагрузку, мы остановимся на одной из самых популярных — МС34119 (выпускается не только фирмой Motorola, как можно было бы заключить из названия, но и другими фирмами, возможно, с другими буквенными префиксами). Микросхема выпускается в обычном корпусе всего с восемью выводами (DIP-8) и никаких радиаторов не требует. Усилитель обладает весьма неплохими характеристиками, основные из которых таковы: □ напряжение питания: 2—16 В (однополярное); □ сопротивление нагрузки: 8 Ом (минимально); □ частота единичного усиления: 1,5 Мгц; □ выходная мощность: 250 мВт (напряжение питания: 6 В, нагрузка: 32 Ом, коэффициент гармоник: 0,5—1%); О время готовности после включения питания: не более 0,36 с.
Рис. 13.4. Схема включения микросхемы МС34119 Самое главное — не надо ничего думать, все уже придумано за вас. Вариант типовой схемы включения приведен на рис. 13.4. Коэффициент усиления задается двумя резисторами R1 и R2 и равен их отношению R2/R1, т. е. в данном случае 25. Максимальная мощность в нагрузке (0,5 Вт) достигается при нагрузке 32 Ом (головные наушники) при питании 12 В. В других сочетаниях нагрузки и питания такая мощность не достигается, в том числе, потому что недопустимо увеличиваются искажения. Обратите внимание, что динамик не имеет соединения с "землей" (что естественно для схемы с однополярным питанием). Имеется также интересная возможность выключения усилителя с помощью сигнала от логических микросхем (например, от микроконтроллера) — если подать на вывод 1 напряжение питания, микросхема выключится и будет потреблять ток не более нескольких десятков микроампер. Другие схемы УМЗЧ на микросхемах вы, без сомнения, найдете в достаточном количестве в литературе и в Сети, а мы, наконец, вплотную займемся самыми универсальными аналоговыми микросхемами — операционными усилителями. Ведь и микросхема TDA2030, и МС34119, и даже разобранные нами в главе 10 интегральные стабилизаторы представляют собой не что иное, как узкоспециализированные ОУ.
Глава 14 Самые универсальные. Операционные усилители и их применение Нам нужны надежные исполнители наших поручений не только для того, чтобы добиться успеха, но также и для того, чтобы не потерпеть неудачи. А. Дюма, "Три мушкетера" Классическое определение гласит: операционным усилителем называется дифференциальный усилитель постоянного тока (УПТ) с большим коэффициентом усиления. "Постоянного тока" не означает, что ОУ усиливают только сигналы частотой 0 Гц, это означает, что они могут усиливать сигналы, начиная с частоты 0 Гц. "С большим коэффициентом усиления" означает, что он действительно большой — хороший ОУ имеет коэффициент усиления порядка нескольких сотен тысяч или даже миллионов (куда там микросхеме TDA2030 с ее 30-ю тысячами!). Название "операционный" закрепилось за такими усилителями исторически, потому что во времена господства ламповой техники они использовались, в основном, для моделирования различных математических операций (интегрирования, дифференцирования, суммирования и пр.) в аналоговых вычислительных машинах. Других применений тех ОУ практически не было и быть не могло, потому что для достижения приемлемых характеристик не годилась не только ламповая, но и дискретнотранзисторная схемотехника. Настоящий переворот произошел только в середине 60-х годов ХХ-века после пионерских работ по конструированию интегральных ОУ неоднократно уже упоминавшегося на этих страницах Роберта Видлара (см. главы 10 и 12). Разумеется, практически использовать ОУ можно только в схемах с отрицательной обратной связью (за одним исключением, о котором позже). Огромный коэффициент усиления приведет к тому, что без обратной связи такой усилитель будет находиться в состоянии, когда напряжение его выхода равно (или, как мы увидим дальше, почти равно) одному из напряжений питания, положительному или отрицательному— такое состояние еще называют по аналогии с транзисторами состоянием насыщения выхода. В самом деле,
чтобы получить на выходе напряжение 15 В, ОУ достаточно иметь на входе сигнал в несколько десятков микровольт, а такой сигнал всегда имеется — если это не наводка от промышленной сети или других источников, то достаточно и внутренних причин, о которых мы еще будем говорить. Впрочем, есть и исключение — так называемые компараторы представляют собой ОУ, которые предназначены для использования без отрицательной обратной связи и иногда даже наоборот, с положительной обратной связью. К компараторам мы еще вернемся в следующей главе, а пока рассмотрим некоторые общие принципы построения схем на ОУ. Рис. 14.1. Роберт Видлар (Robert J. Widlar, 1937-1991) Опасные связи Согласно определению, отрицательная обратная связь — это связь выхода со входом, при которой часть выходного сигнала вычитается из входного. В противоположность отрицательной, в случае положительной обратной связи часть выходного сигнала со входным сигналом суммируется. Эти определения справедливы не только для усилителей и других электронных устройств, но и во всех случаях, когда обратная связь имеет место. Действие обратных связей на некую систему можно описать так: наличие отрицательной обратной связи повышает ее устойчивость, наличие положительной — наоборот, ведет к неустойчивости.
Впервые использовать принцип обратной связи в электронных усилителях с целью повышения их линейности, устойчивости и других эксплуатационных характеристик предложил американский инженер, сотрудник Лабораторий Белла (Bell Labs) Харольд Блэк в 1927 г. О сложности предмета говорит тот факт, что первый патент Блэка с описанием его усилителя имел объем целых 87 страниц, а всего он получил 347 патентов. Построение общей теории обратных связей было завершено выдающимся математиком Хендриком Ваде Боде к 1945 г. В 1948 г. Норберт Винер в своей знаменитой "Кибернетике" впервые показал, как использовать принцип обратной связи при рассмотрении любых систем — технических, биологических, социальных и пр. Принцип действия обратных связей можно пояснить, скажем, на примере классической взаимосвязи спроса и предложения в экономике. Предположим, у нас имеется некая фирма, которая состоит из производственных структур и каналов сбыта. На входе такой системы — задание на производство, на выходе — объем произведенной продукции. Сколько нужно производить товара? Столько, сколько его могут потребить. В идеальной системе происходит следующее: фирма производит один экземпляр товара и, как только его покупают, немедленно выдает на прилавок следующий экземпляр. Если фирма произведет два экземпляра и один из них на прилавке задержится, то производство приостанавливается до тех пор, пока этот экземпляр не купят. Здесь мы наблюдаем типичное действие отрицательной обратной связи, роль которой играет спрос: лежащий на прилавке экземпляр товара как бы вычитается из задания на производство, и оно приостанавливается. Такая система очень устойчива и к тому же обладает множеством приятных свойств: не имеет перерасхода энергии и материалов, не приводит к перепроизводству или, в пределах мощности производства, наоборот, к дефициту. Объем перепроизводства может составить максимум один экземпляр, который придется выбросить, если спрос на него упал до нуля. Интересно, что примеры таких близких к идеалу производств можно встретить и в реальной жизни: это, скажем, торговля горячей выпечкой, когда следующий пирожок изготавливается только, если предыдущий уже купили. Но в большинстве случаев в реальной жизни все обстоит гораздо сложнее — и прямых, и обратных связей существенно больше одной, реакция на спрос не может быть мгновенной, да и система не изолирована от всей остальной экономики. Разберем, например, что произойдет с нашей идеальной системой, если производство не может остановиться и возобновить работу мгновенно, или, что то же самое, сведения об изменении спроса поступают не сразу, а с некоторым запаздыванием. Предположим, фирма делает 10 экземпляров товара в день, и указанное запаздывание составляет также 1 день. Допустим, в какой-то из дней спрос упал на 2 штуки. Из-за запаздывания реакции на изменение спроса в этот день фирма произведет по-прежнему 10 штук, так что на следующее утро на прилавке их окажется 12. Если в этот день спрос
по прежнему будет составлять 8 штук, то к следующему утру на прилавке окажется те же 12 экземпляров (8 произведенных — фирма отреагировала на изменение, плюс 4 оставшихся от предыдущего дня). В этот день фирма отреагирует, и произведет всего 4 экземпляра. Но предположим, что в этот же день спрос внезапно возрос и составил 12 экземпляров, т. е. все имеющиеся раскуплены. На следующее утро на прилавке будет всего 4 штуки (произведенных накануне)1 и 8 из 12-ти гипотетических клиентов уйдут неудовлетворенными. Им предложат зайти через сутки, и на следующий день фирма вынуждена будет произвести 8 + 12 = 20 экземпляров товара! Легко продолжить эту цепочку рассуждений дальше и сообразить, что будет происходить с производством и удовлетворением спроса: система будет раскачиваться вде сильнее и сильнее, пока в дело не вступят естественные ограничения: объем производства не может быть меньше 0 штук и больше фактической мощности производства (в случае электронных систем роль таких ограничений выполняет напряжение питания или достижимая мощность выходного каскада усиления). Работоспособность же системы будет полностью нарушена — отрицательная обратная связь превратилась в положительную. Можно ли ответить на вопрос: т. к. реальные системы не могут иметь нулевое запаздывание по цепям прямой и обратной связи, то какие меры нужно принять для того, чтобы система не раскачивалась все сильнее и сильнее? Можно, хотя для сложных систем это и не всегда просто. Обсуждение теории устойчивости систем с обратной связью (скажем, известного метода Найквиста) увело бы нас слишком далеко, однако практические меры в основном сводятся к тому, чтобы ограничить коэффициент усиления исходной системы и/или глубину обратной связи на таких частотах, когда отрицательная обратная связь начинает превращаться в положительную, т. е. при условии, чтобы фазовый сдвиг части выходного сигнала,' поступающей обратно на вход, относительно самого входного сигнала не достигал бы 180° при равной или большей входного сигнала амплитуде этой части (поглядите на графики суммирования синусоидальных сигналов в главе 4, чтобы лучше понять, в чем тут дело)1. Грубо эти частоты можно оценить следующим образом: если задержка сигнала в ОУ составляет 1 мкс, то (при мгновенной обратной связи, как это имеет место в случае ее осуществления с помощью резистивного делителя) это значит, что при подаче сигнала частотой около 1 МГц с выхода на вход усилителя фазовый сдвиг составит ровно 180° и усилитель будет раскачиваться неограничейно.' Значит, нужно сделать так, чтобы усиление самого усилителя без обратной связи еще задолго до достижения указанной частоты падало и становилось равным единице ровно на частоте, соответствующей задержке — это так называемая коррекция усилителей. Причем чем 1 На самом деле все немного сложнее, но так можно себе представить ситуацию наглядно.
выше установленный с помощью обратной связи коэффициент усиления (т. е. чем меньше глубина обратной связи), тем выше допустимый порог по предельной частоте исходного усилителя — это обусловлено тем, что на вход при росте этого коэффициента передается меньшая часть выходного сигнала. Разница между фазой входного сигнала ОУ после суммирования и 180 градусами называется "запас по фазе". Если он невелик, то при прохождении через усилитель сигнала прямоугольной формы на выходе могут наблюдаться выбросы или даже небольшие колебания по фронту и по спаду выходного напряжения. Наибольшую опасность несет в себе режим с установленным коэффициентом усиления, равным единице (т. е. использование ОУ в качестве повторителя). Роберт Видлар был сторонником того, чтобы переложить заботу о коррекции ОУ на плечи пользователей, и первые его конструкции ОУ (например, цА702, выпускавшийся в нашей стране под названием 140УД1, или получивший широкую известность |1А709) имели специальные выводы для коррекции с помощью внешних резисторов и конденсаторов, и разработчик мог в некоторых пределах выбирать ширину полосы пропускания частот в зависимости от установленного коэффициента усиления. Практически же этим никто не пользовался (подобно тому, как подавляющее большинство пользователей компьютерных программ работает с установками, введенными в них разработчиками по умолчанию), и такая возможность приводила только к необходимости введения в схему лишних компонентов, так что в настоящее время выводы для внешней коррекции сохранились лишь для некоторых моделей высокочастотных ОУ, где полоса частот действительно критичный фактор. Кстати, а каковы в свете всего изложенного могут быть рекомендации нашим предпринимателям из производственной фирмы? Они аналогичны методам для обеспечения стабильности ОУ — нужно ограничить глубину обратной связи и коэффициент усиления на высоких частотах, причем если для нашей фирмы задержка реакции в производстве составляет сутки, то высокой будет считаться частота уже несколько экземпляров в день. Проще говоря, им следует при наличии запаздывания не пытаться реагировать на каждый проданный или непроданный экземпляр, а выпускать некое среднее количество в сутки, изменяя его только тогда, когда изменился средний объем продаж за промежуток времени, значительно больший суток — это равносильно ограничению усиления на высоких частотах. Если вы попробуете повторить рассуждения про нашу фирму, введя время реакции производства, скажем, на суточное количество проданных экземпляров в среднем за неделю, а не за сутки, как ранее, то вы увидите, что система стала значительно устойчивее, хотя на выходе ее и наблюдаются некоторые высокочастотные колебания
(т. е. количество товаров на прилавке может колебаться с частотой несколько экземпляров в день). По всем этим причинам большинство ОУ представляет собой низкочастотные приборы: обычная частота единичного усиления/1 (частота, на которой собственный коэффициент усиления снижается до 1) для распространенных типов не превышает 1—3 МГц. Например, для использованного в схеме лабораторного источника (см. главу 10) типа цА741 эта частота равна 0,8 МГц, что, грубо говоря, означает, что при установленном коэффициенте усиления, равным 1, он повторяет входные сигналы вплоть до этой частоты, при 10 — усиливает в 10 раз до частоты 80 кГц, при 100 — до 8 кГц и т. д. Для некоторых моделей ОУ, специально предназначенных для усиления постоянного тока и медленно меняющихся сигналов, частота/] еще меньше — для очень хорошего прецизионного ОУ МАХ478/479 она равна всего 60 кГц. С другой стороны, есть и быстродействующие ОУ, для которых /] достигает десятков МГц. С частотой единичного усиления тесно связана другая характеристика ОУ — скорость нарастания выходного сигнала. Не забудем также, что в реальных системах часто могут иметь место многочисленные паразитные обратные связи, учет которых весьма затруднен, если вообще возможен. Именно наличие таких связей приводит к "гудению" УМЗЧ даже в том случае, если с основными связями все ‘в порядке, и для борьбы в том числе и с этим явлением ставят развязывающие конденсаторы по питанию. Основные свойства системы с отрицательной обратной связью Отрицательная обратная связь в усилителях не только позволяет точно установить коэффициент усиления, как мы уже знаем из примеров в главах 9, 10 и 13, ' но и приводит еще ко многим приятным улучшениям схемы. Попробуем разобраться, почему это так и каково влияние характеристик реальных ОУ на параметры схемы. На рис. 14.2 приведена обобщенная схема некоторой системы, охваченной отрицательной обратной связью. Коэффициент усиления К основной системы обычно больше 1 — в случае ОУ это и есть его собственный коэффициент усиления. Коэффициент передачи по обратной связи Р обычно, наоборот, меньше единицы (хотя ничто, кроме вышеуказанных частотных ограничений, не мешает нам сделать его и больше 1 — вся система тогда будет не усиливать, а ослаблять сигнал). Кружок с плюсом в нем означает устройство для суммирования сигналов — сумматор.
Если разорвать петлю обратной связи, то сигнал на выходе <7ВЫХ был бы равен Kt/BX (разумеется, в реальной системе напряжение питание его бы ограничило, но для наших рассуждений это не важно). Но при действии обратной связи это не так. На вход выходной сигнал передается с коэффициентом ослабления Р, и сигнал после сумматора, т. е. на входе основной системы, будет равен UBX - Р(7ВЬ1х (минус, т. к. обратная связь отрицательная). Этот сигнал передается на выход с коэффициентом К, т. е. <7ВЫХ = К((/вх - Р^Лых)-Отсюда <7ВЫХ = Кt/BX/( 1 + КР). Так как коэффициент передачи Кус всей системы по определению равен UBblx/UBX, то в результате для него получаем следующую формулу: IZ _ ^ВЫХ _ К^ВХ _ / 1 \ УС~ Увх "ЧхО + Кр) (1 + Кр) Отсюда следует интересный вывод: если К много больше 1 (а в случае ОУ это действительно так с огромной степенью точности, мы уже говорили, что их собственные коэффициенты усиления могут достигать значений сотен тысяч и более), то единицу в формуле (1) можно не принимать во внимание, и коэффициент передачи будет выражаться простым соотношением: Кус=1/р (2) Формула (2) и означает, что коэффициент передачи входного сигнала на выход будет определяться только параметрами обратной связи и никак не зависит от характеристик системы, причем чем выше собственный коэффициент усиления системы К, тем точнее соблюдается это положение (мы об этом упоминали в прошлой главе при сравнении характеристик УМЗЧ, построенных на фирменной микросхеме и на дискретных элементах по схеме из главы 9).
Введение отрицательной обратной связи приводит также еще к некоторым последствиям. Для практических целей достаточно их просто запомнить, не углубляясь в математические выкладки: □ входы ОУ не потребляют тока (входное сопротивление ОУ практически равно бесконечности, точнее — увеличивается по сравнению с ОУ без обратной связи в К|3 раз); □ ОУ с отрицательной обратной связью всегда стремится сделать так, чтобы потенциалы на его входах были равны между собой. Характеристики конкретной схемы определяются соотношением собственного коэффициента усиления ОУ и коэффициента передачи системы с замкнутой обратной связью — чем выше это соотношение, тем ближе схема к идеалу. Интересно, что если на практике для обеспечения фактической независимости коэффициента усиления схемы от характеристик ОУ достаточно было бы иметь собственный коэффициент усиления всего в несколько тысяч (что и демонстрируют нам схемы УМЗЧ), то для того, чтобы получить, например, действительно высокое входное сопротивление (измеряемое гигаомами и выше), приходится увеличивать К до указанных величин в сотни тысяч и более — в схемах на ОУ часто приходится иметь дело с маломощными источниками сигнала, для которых сопротивление нагрузки даже в 1 МОм может привести к серьезным искажениям. Отметим также сразу, что использование обратной связи в указанной выше степени уменьшает и выходное сопротивление всего усилителя, которое становится очень близким к нулю — точнее, примерно равным /?вых/(1 + КР), где /?вых равно собственному выходному сопротивлению ОУ, лежащему обычно в диапазоне сотен ом, так что выходное сопротивление получается порядка 1 миллиома. Только не забывайте, что мощность выходного каскада ограничена, и если вы его перегрузите, то от падения напряжения на нагрузке вас уже никакая обратная связь не спасет. Для общего образования попутно заметим, что в системе, представленной на рис. 14.2, ничего не изменится, если схему перевернуть: считать за усилитель узел обратной связи, за узел обратной связи для него — сам усилитель, за входной сигнал — выходной и наоборот. Типичный пример такой двойственности мы увидим в следующей главе. Все зависит только от терминологии, которая есть лишь вопрос удобства. Это хорошо иллюстрирует то философское положение, что мы слишком часто оперируем реальными вещами в зависимости от того, как мы их назвали, в то время как на самом деле их поведение совершенно от этого не зависит.
Эрудированный читатель, несомненно, давно отметил, что я не употребляю в этой книге такой распространенной единицы измерения, как децибелы (дБ). Децибел (одна десятая белла, названного так по имени изобретателя телефона А. Белла) есть единица, использующаяся для измерения отношений величин. Перевести отношение в децибелы и обратно можно по формуле: К (дБ) = 20 • lg(Ai/Ao), где А1/А0 есть отношение значений некоторых величин (напряжений, токов, звукового давления и т. п.). Децибелы удобно использовать для характеристики изменения величин, меняющихся по степенному закону, их широко используют при расчетах фильтров, анализе частотных и амплитудных характеристик ОУ, или, скажем, в таких случаях, как измерение уровня звукового давления. График степенной функции, которая быстро возрастает или падает в обычных координатах, в широком диапазоне значений практически невозможно изобразить, а при использовании децибел он будет выглядеть прямой линией (это часто встречающиеся вам графики, где по осям отложены величины, возрастающие не линейно, а в геометрической прогрессии: 1, 10, 100, 1000...). Звуковое давление практически всегда измеряют в децибелах (относительно порога слышимости) — это связано с тем, что наше ухо реагирует именно на отношение громкостей, а не на их абсолютное прирастание. Если отношение величин больше 1, то величина в децибелах будет положительной, если меньше — отрицательной. Для перевода децибел в обычные относительные единицы и обратно не обязательно всегда использовать указанную выше формулу, достаточно просто запомнить несколько соотношений: • 3 дБ соответствует увеличению/уменьшению на треть; • 6 дБ соответствует отношению в 2 раза; • 10 дБ соответствует отношению в 3 раза; • 20 дБ соответствует отношению в 10 раз. Руководствуясь этими соотношениями, легко перевести любую величину: например, 73 дБ есть 20 + 20 + 20 + 10 + ЗдБ, т. е. 10 10 10 • 3 • 1,33 = 4000. Собственный коэффициент микросхемы звукового усилителя TDA2030 (см. главу 13) равен 30 000, т. е. 3 • 104, или 10 + 4 20 = 90 дБ. Коэффициент ослабления синфазного сигнала (КООС), о котором речь пойдет дальше, также чаще всего измеряют в децибелах: так, его величина, равная 60 (3 20) дБ, означает, что синфазный сигнал ослабляется в 1000 раз. Крутизна характеристик простейших RC-фильтров низкой и высокой частоты из главы 5 равна соответственно -6 и +6 дБ на октаву, что означает уменьшение/увеличение сигнала в 2 раза при изменении частоты также в 2 раза. Я же предпочитаю не использовать децибелы просто по той причине, что они нам сами по себе здесь не требуются, а умножать сущности без необходимости не следует, это способно только запутать читателя. Базовые схемы усилителей на ОУ Схема неинвертирующего усилителя (рис. 14.3, а) нам хорошо знакома — именно она составляет основу лабораторного источника питания из главы 10 (см. рис. 10.9). Анализ ее элементарно прост: исходя из приведенных правил
Uoc - UBX, т. е. UBX = UBbiK • R2/(R1 + R2). Тогда коэффициент усиления Кус = UBbiX/UBX = (Rl + R2)/R2 = 1 + R1/R2, каким мы его и предполагали в главе 10. Единица, которая прибавляется к отношению резисторов обратной связи в выражении для коэффициента усиления, — очень важное дополнение, потому что если убрать в схеме неинвертирующего усилителя резистор R2, т. е. принять его равным бесконечности, то отношение резисторов станет равным нулю, а КуС равным 1. Соответствующая схема показана на рис. 14.3, в и носит название повторителя. Зачем она нужна, если ничего не усиливает? Эта схема обладает одним бесценным свойством: ее входное сопротивление равно практически бесконечности, а выходное — практически нулю (в пределах, конечно, мощности выходного каскада, как мы уже говорили). Поэтому повторитель очень часто используют в случаях, когда нужно согласовать источник сигнала с высоким выходным сопротивлением с низкоомным приемником, и мы еще увидим примеры такого согласования. Рис. 14.3. Базовые схемы на ОУ: а — неинвертирующий усилитель; б — инвертирующий усилитель; в — повторитель; г— инвертирующий усилитель с высоким коэффициентом усиления
В неинвертирующем усилителе обратная связь носит название "обратной связи по напряжению". В отличие от него, в инвертирующем усилителе (рис. 14.3, б) обратная связь имеет характер "обратной связи по току", и вот почему. Так как здесь неинвертирующий вход имеет потенциал "земли", то и инвертирующий тоже всегда будет иметь такой же потенциал. Сразу отметим, что подавать именно нулевой потенциал на неинвертирующий вход совершенно не обязательно — если вы используете однополярный источник питания, то на неинвертирующий вход подается потенциал "искусственной средней точки", как это было сделано в схеме УМЗЧ (см. главу 13). Можно и любой другой, и мы еще будем этим широко пользоваться. Но вернемся к схеме рис. 14.3, б — если инвертирующий вход имеет всегда потенциал "земли", то от входа через резистор R2 потечет некий ток (/вх). Так как мы договорились, что сам вход ОУ тока не потребляет, то этот ток должен куда-то деваться, и он потечет через резистор R1 на выход ОУ. Таким образом, входной ток (/вх) и ток обратной связи (/ос) — это один и тот же ток. Причем потенциал выхода ОУ вынужденно станет противоположным по знаку потенциалу входа — иначе току некуда будет течь. Чему равен коэффициент усиления? Так как t/BX/R2 = t/Bblx/Rl, то Кус = UBUX/UBX = R1/R2. Без всяких дополнительных единиц, как в неинвертирующей схеме, т. е. R2 в данном случае есть необходимый элемент схемы. Он не может быть равным ни нулю, ни бесконечности — за исключением того случая, если источник сигнала сам по себе представляет источник тока, а не напряжения, тогда R2 из схемы можно (и нужно) исключить и подать токовый сигнал прямо на вход ОУ. Заметьте, кстати, что похожее на вышеприведенные соотношения уравнение для коэффициента усиления мы получали при рассмотрении транзисторного усилительного каскада (см. рис. 6.7), где оно было равно отношению коллекторной нагрузки к сопротивлению в эмиттерной цепи. Это обусловлено тем, что в транзисторном каскаде также имеет место обратная связь (см. главу б). Максимальное значение выходного напряжения ОУ не всегда может быть равно положительному или отрицательному напряжению питания — как правило, оно меньше его на величину порядка 0,5—1,5 В (простейшим примером для понимания того, почему это так, служит наш звуковой усилитель из главы 9). То же самое относится и ко входным напряжениям — как правило, достигать значений питания не разрешается. Однако многие современные типы это все же позволяют, и выходное/входное допустимое напряжение у них достигает значений питания — хотя необязательно и то и другое вместе. Это свойство в западной технической документации обозначается как Rail-to-Rail ("от шины до шины"), и на него нужно обращать внимание при выборе ОУ. При этом следует учитывать, что выходное напряжение может
достигать напряжения питания только на холостом ходу, а с подключением нагрузки его предельная величина снижается. Мы сейчас ведем речь об ОУ общего применения, к которым относятся старички цА741 (К140УД7), отечественные 140УД6, 140УД8 (последний — с полевыми транзисторами на входе) или счетверенный LM324 (который поддерживает Rail-to-Rail по входу и частично — в отношении потенциала "земли" — по выходу), но, конечно, есть и более современные типы, многие из которых упоминаются далее. Если входное сопротивление неинвертирующего усилителя равно практически бесконечности, то инвертирующего — почти в точности равно R2. Почти — по ряду различных причин, и мы не будем на этом останавливаться, потому что разница эта несущественна для практических нужд. Важнее другое: входы реального ОУ все же потребляют ток, хотя и очень небольшой, называемый током смещения. Ток смещения на инвертирующем входе (в любой из двух схем) создаст падение напряжения на резисторе обратной связи, и оно воспринимается как входной сигнал: если этот ток равен, к примеру, 0,2 мкА (казалось бы, так мало!), как у нашего любимого цА741, то при сопротивлении Rl = 1 МОм напряжение на выходе при отсутствии напряжения на входе достигнет 0,2 В. Как обычно, в большинстве случаев важно не само по себе смещение, а его температурная нестабильность. Борьба с этим явлениям может вестись в трех направлениях: во-первых, не следует использовать в цепочке обратной связи сопротивления большого номинала, стандартный диапазон их — от килоом до десятков килоом. Если же при необходимости сохранить достаточно высокое входное сопротивление инвертирующего усилителя при большом коэффициенте усиления применение высокоомных резисторов желательно, то следует использовать схему, показанную на рис. 14.3, г. В данном случае вся цепочка резисторов в обратной связи работает как один резистор с номинальным сопротивлением 5,1 МОм, и коэффициент усиления равен 100 при входном сопротивлении 50 кОм. Во-вторых, в схему следует вводить компенсирующий резистор Rk (на рис. 14.3, a-e он показан пунктиром) — падение напряжения от тока смещения по неинвертирующему входу на нем отчасти компенсирует падение напряжения по входу инвертирующему. Тогда будет уже не столь важен сам ток смещения, сколько разница их, потребляемых по каждому из входов усилителя, которая определенно меньше каждого из токов. В-третьих, если наличие именно тока смещения критично, то можно выбрать ОУ с малыми токами смещения — например, с полевыми транзисторами на входе. Так как сами токи там исчезающе малы, то их разница, естественно, вообще может не приниматься во внимание.
Правда, в ОУ с полевыми транзисторами еще больше, чем в обычных ОУ, проявляется другая напасть — входное напряжение сдвига2, которое есть величина разности напряжений между входами, при котором выходной сигнал ОУ в точности равен 0. Возникает оно вследствие нестрогой идентичности транзисторов входных каскадов и для разных типов ОУ имеет довольно большой разброс — от десятков микровольт у прецизионных ОУ до единиц и даже десятков милливольт у ОУ с полевыми транзисторами. Естественно, оно, как и токи смещения, зависит от температуры. Бороться с напряжением сдвига гораздо сложнее, чем с токами смещения. В большинстве типов ОУ традиционно имеются специальные выводы, присоединив к которым переменный резистор, можно регулировать смещение нуля на выходе. Однако пользоваться этой возможностью я не рекомендую (и практические схемы, где ей пользуются, встречаются достаточно редко — подобно тому, как никто не пользуется возможностью внешней коррекции частотной характеристики, предусмотренной Видларом). Во-первых, в критичных случаях проще выбрать прецизионный ОУ с минимальным сдвигом, которых сейчас предлагается очень много типов — укажем на упоминавшиеся МАХ478 (сдвоенный) и МАХ479 (счетверенный), отличающиеся, кстати, исключительно широким диапазоном допустимых напряжений питания от ±2,2 до ±18 В, или МАХ4236, наоборот, работающий при напряжениях до 5,5 В, зато с полным Rail-to-Rail размахом напряжения по выходу. Во-вторых, это искусственное смещение нуля физически осуществляется "перекосом" входного дифференциального каскада с помощью внешнего сопротивления с характеристиками, абсолютно не согласованными с характеристиками внутренних элементов схемы ОУ. Так что применение такого способа приводит лишь к тому, что зависимость смещения нуля от температуры резко возрастает — настроив ноль при 20 °C, мы получим то же самое смещение при 10 или при 30 °C. Есть над чем поломать голову, не правда ли? Укажем — до кучи — еще один довольно экзотический, но тем не менее использовавшийся на практике до самого последнего времени способ борьбы с этими сложностями: в случаях, требующих особой точности, всю схему вместе с ОУ попросту размещали в термостате! Как проектировать термостаты, мы узнаем в следующей главе, а пока вернемся на землю — если требуется особо точное усиление некоего сигнала постоянного тока, все же имеется выход без использования подобной экзотики. Во-первых, это так называемые МДМ-усилители (от "модулятор-демодулятор", подобно "модему"). Их широко 2 Я употребляю термин "напряжение сдвига" вслед за авторами [10], но часто используется и термин "напряжение смещения". В любом случае здесь идет речь о напряжении, приведенном ко входу усилителя — если смещение измерено на выходе, как это обычно и делается, то его надо поделить на коэффициент усиления схемы.
применяли еще в ламповые времена, т. к. тогда УПТ с более-менее приемлемыми характеристиками строить было больше не из чего. В основе МДМ-усилителей лежит довольно остроумная идея — модулировать входным сигналом некое переменное напряжение относительно высокой частоты, усилить полученное переменное напряжение с меняющейся амплитудой, что значительно проще, т. к. при этом все эти сдвиги-смещения остаются за бортом, и после детектировать, опять выделив постоянную составляющую. К сожалению, в этом деле есть свои подводные камни: низкая предельная частота, невысокий коэффициент усиления, вероятность просачивания модулируемой частоты на выход, наконец, относительная дороговизна, поэтому сейчас все большее распространение получают так называемые "операционные усилители, стабилизированные прерыванием". Если кратко, то суть дела в том, что внутри таких ОУ автоматически производится периодическая компенсация смещения входных параметров. Для разработчика — это цросто обычный ОУ, имеющий весьма высокие характеристики: типичное напряжение сдвига составляет 5—10 мкВ, коэффициент усиления — более 106, очень маленький входной ток смещения порядка долей наноампера (как у ОУ с полевыми транзисторами) и т. п. при полосе единичного усиления порядка сотен килогерц или единиц мегагерц. К ним относятся отечественные 140УД21 и 149УД24, а также МАХ420, МАХ430, ICL7652 и другие.' Дифференциальные усилители Кроме всего прочего, ОУ имеют замечательное свойство подавлять синфазный входной сигнал. Синфазный сигнал, в отличие от обычного дифференциального — то напряжение, которое действует на оба входа сразу. Это свойство приводит не только к возможности выделять полезный сигнал на фоне значительных наводок, но и, что иногда еще важнее, к подавлению нестабильности источника питания — изменение напряжения питания равносильно действию синфазного входного сигнала. На рис. 14.4, а показана схема простейшего дифференциального усилителя. Делитель R3-R4 по неинвертирующему входу служит сразу двум целям: во-первых, он выравнивает входные сопротивления по входам (нетрудно показать, что т. к. потенциалы самих входов ОУ равны, то равны и входные сопротивления — естественно, при указанном на схеме равенстве соответствующих резисторов), во-вторых, что еще важнее, он делит входной сигнал ровно в такой степени, чтобы коэффициенты усиления по инвертирующему и неинвертирущему входам сравнялись между собой. Именно при этом условии коэффициент ослабления синфазного сигнала (КОСС) будет максимальным. Для того чтобы получить действительно высокий КОСС (ослабление синфазного сигнала тысяч в де-
сять раз), согласование сопротивлений должно быть как можно более точным, и в такой схеме следует применять прецизионные резисторы из ряда с погрешностью, не превышающей, по крайней мере, 0,1%, причем лучше всего их еще и дополнительно подобрать в строгом равенстве. Тогда вы действительно сможете без проблем выделить полезный сигнал в 1 мВ на фоне наводки в 1 В. Рис. 14.4. Схемы дифференциальных усилителей: а — простой дифференциальный усилитель; б — классический инструментальный усилитель; в — упрощенный инструментальный усилитель Понятно, что заниматься подобными извращениями при массовом производстве не с руки, да и входным сопротивлением наш простейший дифференциальный усилитель отличается не в лучшую сторону, поэтому на практике эту схему применяют редко. Ко всему прочему, в ней еще и почти невозможно изменять коэффициент усиления в процессе работы. Если вдруг это понадобится — для этого требуется менять одновременно два резистора, а куда денется в таком случае наше согласование? Для того чтобы увеличить входное сопротивление, целесообразно добавить еще пару ОУ по каждому входу, включенных повторителями, как показано на рис. 14.4, б. Причем к раздуванию габаритов схемы это практически не приводит, т. к. специально для таких
целей выпускают упоминавшиеся ранее сдвоенные (dial) и счетверенные (quad) ОУ в одном корпусе, почти не отличающиеся по цене от одинарных (single). Так мы добьемся увеличения входного сопротивления по обоим входам почти до бесконечности, а что с КООС? Если просто добавить повторители, то с ним ничего не произойдет и точное согласование резисторов по-прежнему требуется. Выход из этой ситуации прост — достаточно установить еще один резистор, на схеме он обозначен как R1. В результате получим классическую схему инструментального усилителя. Здесь также целесообразно применять прецизионные резисторы, но подбора уже не требуется. Коэффициент усиления такого усилителя определяется по формуле (при указанных на схеме соотношениях резисторов): Т7 /7 7 ТТ ч R5 ( _ R2 вых — (^вх+ — ^вх- ) R4 R1 Менять его, не нарушая ничего в работе усилителя, можно одним резистором R1. Кстати, резисторы компенсации тока смещения здесь не нужны — токи эти по общим для системы инвертирующему и неинвертирующему входам взаимно компенсируют влияние друг друга, тем более, если ОУ расположены на одном кристалле. Если мы люди не гордые и большой КООС нам не требуется (т. е. в случае, когда помеха мала по сравнению с полезным сигналом), то можно упростить схему инструментального усилителя. За исключением КООС, схема на рис. 14.4 с обладает всеми достоинствами классической, но содержит на один ОУ меньше (значит, можно использовать сдвоенный, а не счетверенный чип), да и резисторов там поменьше. При указанных на схеме соотношениях резисторов выходное напряжение такого усилителя будет равно: 7 7 /7 7 7 7 AR2 R2 ^вых (^ВХ+ ^вх- ^2 Rl + R3 + 1 Естественно, в этих усилителях решительно не рекомендуется подгонять ноль выходного напряжения с помощью нарушения баланса резисторов, например R4/R5 и R6/R7 в схеме рис. 14.4, б. В то же время, иногда установка нуля необходима, т. к. начальное смещение выхода может быть, например, отрицательным (и не только вследствие сдвига самих ОУ, но и по причине начального смещения у источника сигнала), и если весь диапазон изменения выходного напряжения должен располагаться в положительной области (скажем, при подаче его куда-нибудь на вход аналого-цифрового преобразователя, отрицательных напряжений не понимающего) вы можете потерять заметный кусок диапазона. Иногда для установки нуля рекомендуют воспользоваться корректирующими выводами одного из входных ОУ, но мы как
"не запали" на такую возможность, так и не будем ей пользоваться — тем более, что в сдвоенных и счетверенных вариантах эти выводы обычно отсутствуют вследствие элементарной нехватки контактов корпуса. В действительности установку нуля лучше осуществлять со стороны входов, подмешивая к одному из входных напряжений через развязывающий резистор небольшое напряжение коррекции. Как это осуществляется на практике, мы увидим в дальнейшем, а пока рассмотрим еще одну схему на ОУ, которая в известной степени может служить тем же целям: схему сумматора. Другие распространенные схемы на ОУ В начале главы я упоминал о том, что операционные усилители получили свое название от того, что они применялись для моделирования математических операций. Схема аналогового сумматора (рис. 14.5, в) есть одна из таких классических схем. Представляет она обычный инвертирующий усилитель, на который подается несколько входных напряжений — каждое от своего источника. Легко сообразить, что в этой схеме коэффициент усиления будет для каждого из входов определяться соотношением резистора обратной связи R1 и соответствующего входного резистора Rl, R2 и т. д. — так, как если бы остальных входов и не существовало. Потому сигнал на выходе будет равен (усиленной) сумме сигналов на входе (естественно, с противоположным знаком). В простейшем случае, если все резисторы (включая и R1) равны между собой, то выходное напряжение будет равно просто сумме входных. Если же значения резисторов варьировать, то можно получить взвешенную сумму — когда каждый из входных сигналов вносит вклад в общее дело в соответствии с заданным ему коэффициентом. Кстати, если взять схему простого дифференциального усилителя (рис. 14.4, а) и заменить в ней резистор R4 такой же многовходовой цепочкой, то получим неинвертирующий сумматор. А если то же самое проделать еще и на инвертирующем входе, то получим сумматор, в котором весовые коэффициенты могут иметь разные знаки. Сумматор был неотъемлемой частью систем моделирования дифференциальных уравнений, для решения которых операционные усилители в составе аналоговых машин изначально и использовались. Второй необходимой составляющей таких машин был интегратор на ОУ, схема которого приведена на рис. 14.5, а. Этот интегратор, в отличие от интегрирующей RC-цепочки из главы 5, действительно осуществляет операцию интегрирования в корректной форме. Например, если подать на его вход постоянное напряжение (отрицательное), то напряжение на выходе будет линейно возрастать (интеграл от константы есть прямая линия) с наклоном, равным U^/RC (вольт в секунду). Входной сигнал можно подать и на неин
вертирующий вход— получим неивертирующий интегратор. Можно также объединить интегратор с сумматором — тогда интегрирование будет осуществляться по сумме входных напряжений с соответствующими весовыми коэффициентами. Интеграторы, как и сумматоры, используются и по сей день в различных схемах. Рис. 14.5. Распространенные схемы на ОУ: а — интегратор; б — повторитель/инвертор; в — аналоговый сумматор; г — источник тока На рис. 14.5, б приведена любопытная схема, которая в зависимости от состояния ключа К меняет знак напряжения на выходе. Если К замкнут, то это инвертирующий усилитель с коэффициентом усиления, равным 1. Если же ключ разомкнут, то схема превращается в повторитель — попробуйте самостоятельно сообразить, почему это так! В качестве ключа очень удобно использовать, скажем, транзистор или малогабаритное электронное реле — тогда такая схема может пригодиться для автоматического изменения знака усиления при необходимости отразить отрицательную часть диапазона напряжений на входе в положительную область (такая задача может возникнуть для датчиков, показывающих температуру ниже и выше нуля градусов Цельсия. Характеристика ниже нуля тоже должна быть возрастающей, т. к. абсолютное значение величины температуры возрастает в обоих случаях, в то время как сам сигнал с выхода датчика меняется линейно в одну сторону). Еще одна давно обещанная и очень полезная схема (рис. 14.5, г) представляет собой почти идеальный источник тока с выходным сопротивлением, равным
бесконечности. Здесь может использоваться однополярное питание, как и показано на схеме. Ток можно задавать как соотношением резисторов делителя R1-R2, так и резистором R. Обратите внимание, что отрицательная обратная связь подается на неинвертирующий выход ОУ, т. к. здесь использован полевой транзистор с п-каналом, и стабилизируется его стоковое напряжение, которое есть инверсия напряжения на затворе. Если использовать транзистор с p-каналом, то его в этой схеме нужно подключить наоборот — стоком в направлении нагрузки, а обратную связь, снимаемую с истока, подавать нормально на инвертирующий вход. Для высокой стабильности тока в этой схеме требуется столь же высокая стабильность напряжения питания, поэтому если важна абсолютная величина тока, то схему приходится питать от отдельного прецизионного стабилизатора (и делитель R1-R2, и резистор R, а не отдельно делитель!). К счастью, стабильность в абсолютном понимании требуется не всегда— как мы увидим при рассмотрении ошибок измерительных схем в главе 17, часто требуется стабильность некоей величины лишь относительно других параметров схемы. Кстати, от характеристик транзистора стабильность тока никак не зависит, единственное требование — чтобы начальный ток стока превышал установленный выходной ток схемы. Если применить не полевой, а биполярный транзистор, то будет иметь место некоторая зависимость выходного тока из-за изменений базового тока транзистора (ибо коллекторный ток отличается от эмиттерного на величину тока базы), поэтому чаще в таких источниках применяют полевые транзисторы. Аналоговый генератор Еще в главе 2 я обещал, что нами будет построен генератор для домашней лаборатории. Вообще-то их нам требуется два — цифровой (выдающий прямоугольные импульсы) и аналоговый (генератор синусоидальных колебаний). Объединять их в одной конструкции, как это чаще всего делают, неудобно, потому что синусоидальный генератор должен выдавать переменное напряжение с амплитудой от минуса до плюса, а цифровой — однополярное пульсирующее, т. е. от нуля до плюса питания. Поэтому цифровым генератором мы займемся в главе 24, после изучения двоичных счетчиков, а пока сделаем для себя аналоговый. Принципиальная схема его приведена на рис. 14.6. Она сделана по широко распространенной схеме генератора Вина. Для того чтобы генератор выдавал именно синусоидальные колебания, коэффициент усиления ОУ должен быть в этой схеме равен ровно 3. Если он меньше, то генератор просто не запустится, если больше — верхушки синусоид начнут обрезаться, и в пределе выходные колебания станут прямоугольными. Разумеется, реально установить
коэффициент усиления с нужной точностью невозможно. Поэтому применяют хитрый метод: в обратную связь ставят элемент, сопротивление которого зависит от среднего значения напряжения на нем. Проще всего оказалось использовать для этой цели термозависимые резисторы. В данном случае используется термистор, у которого зависимость сопротивления от выделяющейся мощности имеет отрицательный наклон. В результате при увеличении амплитуды напряжения на выходе генератора его сопротивление падает, и нужный коэффициент устанавливается автоматически. Можно использовать также обычную маломощную лампочку — только наклон зависимости у нее положительный, поэтому ее следует ставить вместо резистора R2, a R1 тогда оставить постоянным. Для того чтобы такая обратная связь хорошо работала, от ОУ может понадобиться достаточно большой выходной ток, и тогда следует добавить к нему умощняющий выходной каскад (например, по схеме рис. 9.2). Есть и более тонкие способы (скажем, с использованием полевого транзистора), но опыт показывает, что и этот старинный рецепт, еще времен господства ламповой схемотехники, прекрасно работает. Рис. 14.6. Схема лабораторного генератора синусоидальных колебаний Схему по рис. 14.6. можно собрать всю сразу. Здесь можно использовать любой ОУ общего применения. Использованный сдвоенный ОУ типа 140УД20 представляет собой два хорошо знакомых нам |Д.А741 (140УД7), размещенных в одном корпусе. С ними генератор будет приемлемо работать до частот в несколько десятков килогерц. Напряжения питания могут составлять от ±5 до ±20 В, удобно выбрать напряжение около ±7—8 В, т. к. большие амплитуды практически никогда не требуются. Наладка будет заключаться в подборе резистора R2 под конкретный экземпляр термистора. Его нужно подобрать так, чтобы сигнал на выходе был чисто синусоидальным, без искажений.
Частота регулируется сдвоенным резистором R3-R4. При указанных на схеме номиналах минимальная частота будет около 30 Гц, а максимальная — около 1 кГц. Чтобы расширить диапазон частот, придется поставить сдвоенный переключатель на несколько положений и изменять емкости конденсаторов. Удобно, например, подобрать сопротивление резисторов R5 и R6 так, чтобы диапазон частот составлял 30—330 Гц, тогда, меняя с помощью переключателя емкости конденсаторов в десять раз (0,1 мкФ, 0,01 мкФ, 1 нФ), вы будете иметь перекрывающиеся диапазоны 30—330, 300—3300 и 3000—33 000 Гц. Обратите внимание, что никакой особой подгонки по равенству номиналов резисторов и конденсаторов не требуется, схема будет работать при любых (в разумных пределах) соотношениях номиналов, и равенство здесь выбрано только из соображений удобства расчета. Амплитуда сигнала на выходе регулируется потенциометром (R7 на схеме), чтобы иметь низкое выходное сопротивление, добавлен повторитель на втором ОУ из корпуса. Немало других интересных применений ОУ вы можете найти в многочисленной литературе, например, в классических трудах [15] и [20]. А мы на этом с рассмотрением принципов использования ОУ закончим и займемся конструированием практических схем.
Глава 15 Рыбку жалко... Конструируем термостаты Хотя был всего лишь конец сентября, в камине уже горел огонь. А. Дюма, "Три мушкетера " Термостат — простейшее техническое устройство из класса гомеостатов, т. е. систем, которые автоматически поддерживают значение некоей величины на заданном уровне. Яркий пример хорошо всем знакомого гомеостата — наш собственный организм, в котором непрерывно с высочайшей точностью поддерживаются оптимальные значения таких величин, как температура, концентрация кислорода в крови, уровень адреналина и прочих параметров, причем практически независимо от вашей воли. Эти системы продолжают работать до тех пор, пока вы живы. Многие болезни есть следствие или причина расстройств гомеостатических функций организма, типичный случай — простуда, при которой в том числе нарушается работа термостатирующей системы, и температура начинает расти. Аспирин, как известно, саму простуду не лечит — он помогает привести в порядок именно термостатирующую функцию организма, отчего вы сразу чувствуете себя лучше. Ключевой особенностью всех гомеостатов является обязательное наличие отрицательной обратной связи, на что и обратил внимание упомянутый в предыдущей главе Ноберт Винер в своей "Кибернетике". Хочу поставить читателя в известность, что, вообще говоря, теория проектирования гомеостатов — теория автоматического регулирования — весьма сложный и навороченный предмет, для изучения которого необходимо неплохо знать некоторые области прикладной математики. Мы здесь без этого обойдемся. Теория слишком часто оказывается "в дауне", если ее нижайше просят выдать конкретные рекомендации для практики. Мы уже могли наблюдать типичный пример подобной ситуации, когда пытались рассчитать охлаждающий радиатор для транзистора— весьма распространенная практическая задача, для решения которой, тем не менее, теоретически обоснованного метода не существует. Точнее, существует — можно составить всякие
там уравнения на этот случай — но он абсолютно не пригоден в реальной жизни, т. к. составленные сверхсложные уравнения решаются только в крайне приближенной форме, и проще просто взять на вооружение эмпирические зависимости, как мы это и делали. Другие примеры из серии "что такое научный подход" вы можете найти в очень толковой во многих других отношениях книжке [16] — когда зачем-то приводятся страниц пять сложнейших математических выкладок, а резюме состоит в том, что полученная формула для практических применений не годится, т. к. было сделано слишком много допущений. Так что пусть на меня не обижаются ревнители "строго научного подхода", если вы в этой главе, посвященной, в сущности, автоматическому регулированию, не встретите ни передаточных функций, ни операторных уравнений. Однако вместе с тем я совершенно не желаю воспитывать читателя, особенно читателя юного, в таком ключе, будто чистая наука есть сплошной "маст-дай"1 и никому в наше время не нужна. Вовсе нет — как известно, "нет ничего практичнее хорошей теории", и это действительно так. Только знание теории позволяет охватить предмет целиком и понять скрытые от чистого практика закономерности во всей их взаимосвязи. Не вина ученых, что, скажем, теплообмен оказался слишком крепким орешком, но знание теории может очень сильно помочь даже и в этом тяжелом случае, потому что иногда позволяет увидеть такие качественные закономерности, которые никакому практику с многолетним опытом не увидеть никогда. Простейший пример — без знания теории практически невозможно ответить на вопрос: в какой цвет красить теплоизлучающие поверхности? Оказывается, что те, что должны рассеивать тепло получше (скажем, охлаждающие радиаторы), нужно красить в черный цвет, а те, что призваны тепло сохранять (корпуса термостатов) — в белый. Между тем всем известно, что печки красят именно в белый цвет, вопреки теории! Конечно, это делается, в первую очередь, из эстетических соображений (да и не так уж и много там тепла теряется), но я сильно подозреваю, что наши предки вообще не знали о существовании этой проблемы, пока над этим не задумались ученые. Да что теплообмен — такая важнейшая в наше время область, как цифровая техника и компьютеры, вообще не могла бы возникнуть даже в мыслях, если бы для нее поколениями ученых не были бы подготовлены тщательное теоретические обоснования. Если читателю показалось, что два предыдущих абзаца противоречат друг другу, то это противоречие разрешить легко: не следует ждать от теории, что 1 От английского must die — "должно умереть", на компьютерном жаргоне часто используют как ироническое определение чего-нибудь совершенно ни к чему непригодного и ненужного, "отстойного". Например, противники продукции Microsoft так часто называют ОС Windows ("запускаю я тут как-то свой мастдай...").
она заменит практический опыт. Изучая операторные уравнения, вы рискуете ничего не узнать о том, как проектируются реальные системы регулирования. Исторический опыт говорит о том, что теоретики — очень плохие изобретатели и инженеры, редчайшие исключения только подтверждают правило. В области техники, если вы хотите что-то делать своими руками, следует обязательно идти от практики к теории, а не наоборот, но вовсе без владения теорией полноценного инженера тоже не бывает. Типичный пример — судьба аналогии между булевой алгеброй и релейными схемами, о чем будет подробно рассказано в главе 18. Только доскональное знание практики построения таких схем позволило математику Шеннону обратить внимание на то, на что не обращал внимание никто в течение почти ста лет до него. Но и без знания самой теоретической из наук — математики — у него ничего бы не вышло. Так как книга эта имеет сугубо практическую направленность, то я стараюсь по мере возможности теорию обходить — нельзя объять необъятное. Иногда это удается, иногда нет. В любом случае делается это в расчете на то, что любознательный читатель на моей книге не остановится, а, вооруженный практическими знаниями, приступит к изучению теории уже с полным пониманием того, зачем он это делает и что именно хочет в результате получить. Термостат вообще На этом с философией временно закончим и вернемся к термостатам. Конструировать термостаты одновременно и просто и сложно. Просто — потому что, по сути, они ничем не отличаются от усилителей с обратной связью, описанных в предыдущих главах, только обратная связь заводится не непосредственно, а через длинную цепочку различных устройств. А насчет сложности вы все поймете, если осилите эту главу до конца. На рис. 15.1 приведена типовая структурная схема термостата. Интересно, что она, кроме всего прочего, служит ярким примером упомянутого в предыдущей главе положения о двойственности систем с обратной связью: за объект, подлежащий регулированию (на рис. 14.2— верхний квадратик), здесь естественно принять среду, в которой мы поддерживаем температуру. В этом случае элементами обратной связи становится усилитель и остальные компоненты схемы. Но ничто нам не мешает— и с технической точки зрения это гораздо логичнее — рассматривать в качестве регулируемого объекта усилитель, и тогда наоборот, все остальное есть лишь элементы обратной связи для него! В том, что и тот и другой подходы равнозначны, вы убедитесь позже. Следует отметить, что для полноты картины в приведенной структурной схеме не хватает одного компонента — холодильного устройства. Термостат,
который показан на схеме, может поддерживать температуру только выше температуры окружающей среды — в чем, впрочем, большинство практических задач в области техники и заключается. Введение холодильного агрегата не представляет никаких трудностей теоретически, но является не всегда тривиальной задачей практически, т. к. холодильник — сами знаете, что это такое. Сейчас мы рассмотрим работу схемы, а затем поглядим, с какого бока туда можно пристроить холодильник, если вдруг это понадобится. U Рис. 15.1. Обобщенная схема термостата: 1 — объект регулирования; 2 — нагреватель; 3 — теплоизоляция; 4 - датчик температуры; 5 — исполнительное устройство; 6 — источник питания; 7 — усилитель; 8 — задающее устройство Итак, мы имеем некий объект регулирования, который условно показан на схеме как бак с водой. Пусть сначала — сразу после включения системы — температура в нем ниже необходимой. Предположим, что датчик температуры имеет характеристику с положительным наклоном — т. е. сигнал на нем увеличивается с увеличением температуры. Для того чтобы все работало, сигнал должен, естественно, представлять собой напряжение в некотором диапазоне, которое поступает на инвертирующий вход усилителя. Собственно
датчики температуры сами по себе напряжение выдают не всегда, у них от температуры зависит какой-нибудь физический параметр, скажем, сопротивление, но преобразовать этот параметр в напряжение обычно несложно, поэтому мы будем считать датчиком уже законченный конгломерат из собственно датчика и преобразователя с напряжением на выходе. Усилитель сравнивает сигнал с датчика с сигналом, поступающим с задающего устройства — так называется устройство, которым мы можем устанавливать нужную нам температуру в системе. В простейшем случае это переменный резистор, включенный по схеме потенциометра, с которого можно снимать напряжение в таком диапазоне, чтобы его крайние значения соответствовали сигналу с датчика при крайних значениях нужного нам диапазона температур. Так как в начальный момент температура, как мы договорились, меньше заданной, то напряжение с датчика ниже напряжения сигнала с задающего устройства, и на выходе усилителя будет большое положительное напряжение (меньшее напряжение, напомним, поступает на инвертирующий вход, поэтому выход положителен). Это напряжение приведет в действие исполнительное устройство, которое на схеме показано в виде контактов реле — в простейшем случае это и есть реле, электромеханическое или электронное, которое своими контактами подает напряжение от источника питания (например, прямо от бытовой сети) на нагреватель. Обратная связь для усилителя замыкается через сам объект — когда нагреватель достаточно нагреет воду в баке, сигнал с термодатчика превысит установленный с помощью задающего устройства уровень, напряжение на выходе усилителя упадет до 0 (или даже станет отрицательным — если питание усилителя двуполярное), исполнительное устройство снимет питание с нагревателя, и вода начнет остывать, пока температура датчика вновь не достигнет заданного значения — теперь уже "сверху", т. е. со стороны больших, чем заданная, значений температуры. О, сколько подводных камней кроется в такой, казалось бы, простой и понятной системе! Начнем с того общего положения, что термостат всегда поддерживает температуру в той, и только в той точке, в которой установлен датчик. Поэтому если вода в нашем баке плохо перемешивается, то обязательно возникнет ситуация локального перегрева — вплоть до того, что вокруг нагревателя вода может уже закипеть, а датчик так и останется холодным. Датчик при этом еще может быть установлен "не в том месте" — например, слишком близко ко дну, а теплая вода будет подниматься вверх. А если датчик установить, наоборот, слишком близко к нагревателю и тем более прямо над ним в потоке поднимающейся теплой воды, то все произойдет наоборот— система сработает слишком рано, когда вода вокруг еще холодная. Поэтому первое условие хорошего регулирования — как можно
более интенсивное перемешивание среды, в которой температура регулируется. На рис. 15.1 для этой цели изображена мешалка, но, конечно, перемешивать можно и другими способами. Во многих случаях — когда это возможно — бак следует также укутывать теплоизоляцией, а стенки для более равномерного распределения температур делать металлическими (последнее особенно критично в случае, если среда — воздух, а не вода). Далее. И нагреватель, и датчик, и масса воды, и стенки бака обладают некоей теплоемкостью и, соответственно, тепловой инерцией (которая на много порядков превышает время срабатывания электронных устройств). Процессы остывания и нагревания протекают во времени примерно так же, как процесс заряда-разряда конденсатора, поэтому эти процессы можно охарактеризовать подобием постоянной времени RC — она так и называется тепловой постоянной времени. В данном случае наибольшая постоянная времени будет у системы "стенки бака — вода", но нас больше даже интересует тепловая постоянная нагревателя (тепловую инерцию датчика пока учитывать не будем). Что будет происходить в реальной системе? Когда температура достигла заданной, электронные компоненты послушно выключат питание нагревателя, но из-за его инерционности он еще некоторое время будет греть воду, отдавая туда тепло, запасенное за счет его собственной теплоемкости. Чем массивнее нагреватель, тем дольше будет происходить этот процесс, мало того, чем он мощнее, тем количество лишнего отданного тепла будет больше, потому что выше будет температура внутри нагревателя. Произойдет перерегулирование — нагреватель давно выключен, а температура некоторое время продолжает расти. В точности то же самое, но в обратную сторону, повторится при остывании системы — нагреватель включится, но ему нужно некоторое время, чтобы прогреться, поэтому температура будет продолжать падать. Отсюда второе условие хорошего регулирования — масса нагревателя и его мощность должны быть минимально возможными, т. е. такими, чтобы при наихудших условиях (при максимальной разнице между установленным значением температуры и окружающей средой) только-только суметь "победить" потери тепла через стенки бака и через поверхность воды. Это положение в полной мере действительно только в релейной схеме (нагреватель или выключен, или включен полностью), потому что далее мы увидим, что можно ослабить требования, если регулировку производить другим способом: плавным изменением мощности пропорционально разнице температур (не зря же мы городили устройства плавного управления мощной нагрузкой в главе 11, правда?). Естественно, само по себе регулирование будет происходить только в определенных пределах температуры окружающей среды. Если температура среды выше или равна установленной, то бак никогда не остынет и система
будет иметь температуру окружающей среды. Наоборот, при очень низкой температуре снаружи у нас может не справиться нагреватель — потери тепла превзойдут его мощность. Холодильник в этой системе может понадобиться, если нам нужно поддерживать температуру ниже температуры окружающей среды или независимо от нее, в разобранном выше случае роль холодильника играет окружающая среда. Как же его сюда при необходимости пристроить? Это несложно — достаточно разместить охлаждающий агрегат в баке и включать его, например, в противоположной фазе с нагревателем: когда нагреватель включен — холодильник выключен и наоборот. Если же вообще нагреватель убрать, а холодильный агрегат оставить, мы получим схему обычного домашнего холодильника — он ведь и предназначен для того, чтобы поддерживать температуру всегда ниже, чем температура окружающей среды, и точно так же перестанет чего-нибудь регулировать, если эта температура выйдет за пределы диапазона регулировки. Если холодильник выставить на мороз, то он никогда не нагреется, а если поставить в горячем цеху, то никогда не выключится. Единственный путь достижения некоторой независимости от прихотей пользователя — установка и холодильника и нагревателя совместно и увеличение их мощности. В релейной схеме— а для обычного холодильного агрегата только такая и возможна — увеличение мощности возможно только за счет снижения качества регулирования, но для нагревателя, как мы говорили, есть и другой выход. Между прочим, как мы увидим в дальнейшем, можно холодильник и не выключать вовсе, оставив все регулирование на совести нагревателя — тогда качество регулирования даже может улучшиться. Естественно, при этом нагреватель должен быть как минимум мощнее холодильника. А может ли в этой системе возникнуть нечто подобное фазовому сдвигу для ОУ, который приведет к генерации? (Заметим, что слова "нечто подобное" тут даже и не очень уместны, потому что любая система с обратной связью подчиняется одним и тем же закономерностям, и это будет именно фазовый сдвиг, так же как и в электронных устройствах.) Вообще-то тепловые системы настолько инерционны, что генерацию в том смысле, в котором мы это наблюдали в случае "гудения" ОУ, вызвать достаточно сложно. Но вышеописанное явление перерегулирования — это и есть та самая генерация, только обычно она составляет небольшую часть от всего диапазона. Мы можем вызвать большую амплитуду колебаний температуры, если, скажем, будем увеличивать инерционность нагревателя или датчика или вводить искусственные задержки на включение и отключение нагревателя — полная аналогия с процессом производства в гипотетической фирме, который описан в предыдущей главе.
Термостат для аквариума До сих пор мы говорили только о физических особенностях системы и совсем забыли про электронную часть. Что за усилитель там надо использовать? То, что это ОУ, ясно даже и ежу, как говорил один из персонажей братьев Стругацких, но в каком включении? Вот тут мы вспомним, что в прошлой главе обещали продемонстрировать случай включения ОУ без обратной связи — в самом деле, зачем она здесь нужна? Вся система уже охвачена обратной связью, а исполнительное устройство представляет собой реле, которому, чтобы включиться, нужно только наличие определенного напряжения — и его отсутствие, чтобы выключиться. Поэтому ОУ здесь включается по схеме компаратора2 — без обратной связи. Так как коэффициент усиления его при этом чудовищен, то он и будет находиться в одном из двух состояний — если сигнал с задающего устройства больше сигнала датчика, на выходе ОУ будет фактически положительное напряжение питания (реле сработает), если меньше — отрицательное или ноль, если питание однополярное (реле выключится). l/пит С1 0,047 - 0,47мк Нагреватель 20-40 Вт К1 D2W202F Рис. 15.2. Принципиальная схема терморегулятора для аквариума На рис. 15.2 приведена практическая схема терморегулятора для аквариума. Устроена она, как видите, довольно просто. Датчик температуры Rt представляет собой термистор, т. е. сопротивление его падает с увеличением температуры, и сигнал на инвертирующем входе ОУ также будет падать (конденсатор С1 обеспечивает сглаживание наведенных помех). С этим связан один нюанс: в разобранной выше обобщенной схеме сигнал датчика возрастал, 2 От compare (англ.) — сравнивать.
но включен он был также в инвертирующий вход. Все дело тут в необычном устройстве выходного каскада компаратора 554САЗ (в простых ОУ все нормально). У него в качестве оконечного усилителя используется довольно мощный п-р-п-транзистор (напряжение коллектор-эмиттер до 40 В и ток коллектора до 50 мА), который соединяется с остальной схемой внутри корпуса только базой, а эмиттер и коллектор выведены наружу (эмиттер — вывод 2, коллектор — вывод 9). На самом деле так выведен только коллектор, а эмиттер подключен несколько сложнее, но это для нас не имеет значения — результат будет один и тот же. Это сделано для удобства пользования: если мы присоединим эмиттер к "земле", то получим схему с "открытым коллектором". Чтобы получить на выходе напряжение, при этом следует в коллекторную цепь установить нагрузку— в простейшем случае это резистор, но можно подсоединить и обмотку реле или, скажем, лампочку. Если же мы присоединим коллектор к положительному потенциалу, как на схеме рис. 15.2 (в данном случае— к тому же источнику питания, но можно и к источнику с иным потенциалом), то нагрузка может быть установлена в эмиттерную цепь (у нас это входной светодиод электронного реле — токоограничивающий резистор для него устанавливать не требуется, т. К. у данного типа он уже имеется внутри реле). Тогда здесь выходной транзистор используется как эмиттерный повторитель. Возникает вопрос: при таком выходном каскаде какой смысл приобретут понятия "инвертирующий" и "неинвертирующий" входы компаратора? Эти наименования были присвоены входам микросхемы 554СА33 с учетом того, что одно из основных ее назначений — преобразование аналогового сигнала в логические уровни. При этом выходной транзистор включается по первому варианту: с общим эмиттером и нагрузкой в цепи коллектора. Тогда названия входов обретают следующий смысл: при превышении напряжения на инвертирующем входе напряжения — на неинвертирующем выходе (на коллекторе выходного транзистора) будет логический 0 (транзистор открыт) и наоборот. Если мы применим это рассуждение к нашему случаю, мы увидим, что выходной транзистор откроется, когда температура станет ниже необходимой (т. е. когда сопротивление термистора велико). А нам это и надо — при этом реле включится и подключит нагреватель. При увеличении температуры сопротивление термистора упадет, и когда напряжение на делителе Rl-Rt станет меньше, чем на делителе R2-R3-R4 — транзистор закроется и отключит через реле нагреватель. Если бы мы использовали датчик с положительным наклоном характеристики, то следовало бы поменять местами либо R1 и Rt, либо входы компаратора. 3 А также полностью, за исключением корпуса и разводки выводов аналогичного изделия под названием 521 САЗ. Западный аналог их обоих — LM311.
В данном случае целесообразно использовать именно термистор, потому что у него высокая (3—4%/°С) крутизна, отсюда и чувствительность, и помехоустойчивость системы возрастают. Металлические термометры сопротивления, которые мы будем использовать в дальнейшем для измерения (а не просто регулирования) температуры, имеют значительно меньший (на порядок) температурный коэффициент, но зато у них зависимость сопротивления от температуры строго линейна (у термистора она носит экспоненциальный характер) и очень стабильна. С их использованием схему пришлось бы несколько переработать, и здесь мы эту возможность рассматривать не будем — вы сами легко сможете подключить вместо термисторного датчика металлический, если заглянете в следующую главу (но не забудьте пересчитать резисторы задающего делителя!). Здесь же нас нелинейность не волнует: в диапазоне температур для аквариума изменение крутизны датчика можно вообще не принимать во внимание, а в более широком диапазоне (как далее в схеме термостата для водонагревателя) крутизна упадет примерно в полтора раза при увеличении температуры на 60—70°. Это означает, что настолько уменьшится изначально очень высокая чувствительность. Ну и что? — спросим мы самих себя, — да пусть себе уменьшается! Здесь можно использовать термистор любого типа (например, ММТ-1) с номинальным (при 20 °C) сопротивлением от нескольких кОм до нескольких десятков кОм, при этом сопротивление резистора R1 должно быть примерно равно номинальному сопротивлению термистора при 20 °C или несколько меньше этого значения (чем оно меньше, тем хуже для термистора, т. к. он может перегреваться питающим током, однако, чем оно больше, тем меньше рабочий диапазон напряжений). Сам датчик можно изготовить следующим образом: термистор с припаянными к нему достаточно длинными выводами помещается в нержавеющую металлическую (в этом случае выводы следует изолировать) или пластмассовую трубку и заливается эпоксидной смолой (рис. 15.3). Для того чтобы смола не вытекала, пока не затвердеет, нужно временно залепить нижнюю часть трубки пластилином. Одновременно в трубке с одного конца закрепляется "ухо" для крепления датчика, которое можно изготовить из проволочной петельки. Чтобы исключить выщелачивание вредных веществ из эпоксидной смолы во время эксплуатации датчика (что возможно, если оптимальное соотношение отвердитель/смола было нарушено, а это практически всегда так, хотя бы из-за того, что отвердитель имеет тенденцию к старению), нужно дополнительно покрыть датчик водостойким лаком (подойдет рецептура для лакирования печатных плат, автомобильная эмаль горячего отверждения или, в крайнем случае, обычная олифа, которая имеет очень высокую водостойкость, но, к сожалению, сохнуть может при комнатной температуре неделями). Операции окраски можно избежать, если
использовать вместо эпоксидной смолы силиконовый герметик, которым, однако, аккуратно заполнить внутреннюю полость трубки значительно сложнее. Рис. 15.3. Датчик для терморегулятора: 1 — металлическая нержавеющая или пластмассовая трубка; 2 — "ухо" для крепления; 3 — слой водостойкого лака; 4 — место пайки вывода термистора; 5 — термистор; 6 — эпоксидная смола; 7 — выводы Электронное реле типа D2W202F (фирмы CRYDOM) можно заменить на любое другое подобное реле или даже на простое электромеханическое, только в последнем случае нужно учитывать то, что написано ниже о дребезге контактов. Блок питания — стабилизированный, подойдет конструкция по рис. 10.5, б. Настройка регулятора сводится к тому, чтобы подобрать сопротивления R2 и R4 под конкретный экземпляр термистора. Сначала мы подсоединяем вместо них переменные резисторы, выводим движок потенциометра R3 в верхнее положение по схеме, погружаем датчик в воду с температурой 18° (это будет нижний предел диапазона регулировки температуры) и, изменяя величину R2, фиксируем момент срабатывания реле (можно просто подсоединить к его контактам тестер в режиме "прозвонки", но удобнее временно вместо нагрузки подсоединить маломощную лампочку накаливания). Погружаем датчик в воду с температурой 32° (верхний предел), выводим R3 в нижнее положение и подбираем R4. При этом у нас нижний предел "уедет", поэтому придется сделать несколько итераций, чтобы добиться нужного результата. Естественно, нужно следить за температурой воды — она в обоих случаях не должна меняться от раза к разу. Чтобы не устраивать столь долгую "песню", можно просто измерить напряжение на делителе Rl-Rt при нужных температурах и рассчитать величины сопротивлений R4 и R2 заранее, а затем при необходимости их подкорректировать (хотя этого обычно не требуется — какая разница, будет у нас нижний предел 18° или 17°? Главное, чтобы мы его знали). В окончательной конструкции регулировочный резистор R2 снабжается шкалой, по которой мы будем устанавливать поддерживаемую температуру.
Следует учесть, что при использовании термистора шкала эта будет неравномерная — к концу промежутки между делениями будут короче, т. к. чувствительность термистора с температурой падает. Поэтому шкалу следует изготовить эмпирическим методом: полностью отлаженный термостат подключается к небольшой емкости с водой (чтобы нагревание и остывание шло не слишком долго), а затем отмечаются углы поворота движка резистора R2, которые соответствуют различным установившимся температурам — именно установившимся, а не температурам в момент срабатывания реле, т. к. они могут отличаться. Эта процедура носит название калибровки. Кстати, а как же здесь быть с теплоизоляцией и перемешиванием, о необходимости которых "так долго говорили большевики"? Теплоизоляцией, естественно, придется пожертвовать, но при столь небольших перепадах температур между водой и окружающей средой она не очень и требуется, а вот насчет перемешивания "большевики" совершенно правы: без него ничего не выйдет. Поэтому терморегулятор в аквариуме можно использовать только в сочетании с аэратором воды, который очень хорошо ее перемешивает, причем рассеиватель аэратора должен быть размещен на самом дне аквариума. При этом датчик подвешивают на половине высоты аквариума, а нагреватель — вблизи дна. Нагреватель указанной мощности лучше всего купить в магазинах для аквариумистов, но, в принципе, можно и изготовить самостоятельно из мощного остеклованного резистора типа ПЭВ, тщательно заизолировав выводы: сначала они покрываются лаком, затем изолируются термоусадочным кембри-ком, затем поверх него также покрываются в несколько слоев водостойким лаком или силиконовым герметиком. Помните, что тщательность при изготовлении изоляции здесь — решающий момент! После изготовления изоляцию следует проверить: погрузите нагреватель в теплый раствор соли и измерьте сопротивление между выводами и раствором — на всех пределах измерения сопротивления мультиметр должен показывать полный разрыв цепи. Сопротивление самого резистора должно быть около 1 кОм, а допустимая рассеиваемая мощность может быть не более 5 Вт — в воде коэффициент теплоотдачи возрастает во много раз, только не забудьте, что такой нагреватель, подобно обычному кипятильнику, нельзя включать на воздухе. А что произойдет, если температура воздуха в помещении сама достигнет 27—30 °C? Ничего — терморегулятор наш перестанет включаться, и температура воды будет равна температуре воздуха (точнее, она всегда будет несколько ниже ее из-за испарения с поверхности). Данный термостат предназначен только для подогрева воды и стабилизации ее температуры на некотором уровне заведомо выше, чем температура окружающей среды. И его использование наиболее актуально зимой, потому что отопление в наших квартирах работает сами знаете как.
Г истерезис Во всем этом есть еще один нюанс. Что будет происходить в момент, когда напряжения на входах компаратора сравняются? Чувствительность у компаратора огромная, а в сигнале датчика и на выводе задающего делителя всегда присутствует хоть маленькая, но помеха, и конденсатор С1 ее не устранит полностью — если даже все идеально заэкранировать, роль помехи сыграют собственные шумы компонентов схемы, которые имеются принципиально, если температура, конечно, отличается от абсолютного нуля. Поэтому в момент равенства напряжений на выходе компаратора появится "дребезг" — он будет быстро-быстро переключаться туда-сюда, переключая и реле тоже. В случаях, подобных нашему, при использовании электронного реле с zero-контролем в качестве исполнительного механизма или, скажем, в случае, когда питание всей схемы осуществляется от отдельного постоянного источника, а исполнительным механизмом служит, например, транзистор, на этот дребезг можно закрыть глаза. Отсутствует дребезг и в схемах с пропорциональным регулированием, пример чего мы увидим ниже. Но в других случаях нечеткое срабатывание приводит к разным неприятным последствиям: для обычного тиристорного реле это помехи, для электромеханических реле, сверх того, еще и быстрый износ контактов, да и просто далеко не услаждающий слух шум. Рис. 15.4. Схема компаратора с гистерезисом Для того чтобы избежать этого явления, в схему вводят так называемый гистерезис4. На рис. 15.4 показана идея того, как это делается с помощью положительной обратной связи, охватывающей компаратор, хотя, как мы увидим 4 От греческого hysteresis — отставание реакции от вызвавшего ее внешнего воздействия.
далее, делать именно так необязательно, а иногда и довольно сложно. Напряжение питания всей схемы в данном случае однополярное. Пусть напряжение UBX ниже напряжения на делителе £7зад, тогда на выходе компаратора напряжение равно положительному напряжению питания (все компараторы поддерживают полный диапазон напряжений по выходу — Rail-to-Rail). В этом случае резистор R1 шунтирует R2 и напряжение /7зад становится больше того значения, которое оно бы имело в отсутствие резистора R1: при указанных на схеме номиналах и напряжении питания оно равно 5,24 В. Когда UBX увеличится и достигнет U3aa — компаратор переключится, и напряжение на выходе станет равным нулю. Резистор R1 теперь шунтирует R3, и напряжение на делителе /7зад станет ниже — оно будет равно 4,76 В. Теперь небольшая помеха не страшна — чтобы переключиться обратно, напряжение на входе должно опуститься аж на целых 0,48 В. Состояние компаратора при переключении как бы фиксируется. Величина разницы в порогах (0,48 В в данном случае) называется зоной нечувствительности. Естественно, наличие этой зоны усугубляет влияние тепловой инерции нагревателя — включение-выключение нагревателя происходит позже, чем надо бы, и перерегулирование растет. Поэтому величину этой зоны при необходимости качественного регулирования нужно выбирать очень аккуратно. Сложность введения гистерезиса таким, если можно так выразиться, "академическим" способом в реальных схемах обусловлена тем обстоятельством, что половинки входного делителя обычно не равны друг другу, к тому же чаще всего (как в нашем случае) делитель этот есть переменное сопротивление, и зона нечувствительности будет зависеть от положения движка потенциометра. Должен сказать, что обычные электромеханические реле сами по себе имеют гистерезисную характеристику — как мы говорили в главе 7, напряжение срабатывания у них может в несколько раз превышать напряжение отпускания. Так что простое снижение чувствительности компаратора (превращенного тогда в обычный ОУ с отрицательной обратной связью), казалось бы, могло бы нам в этом случае помочь. И все же оно не поможет — дребезжать будет все равно, потому что выходное напряжение ОУ с наложенной на него помехой тогда будет нарастать очень медленно, и в момент достижения напряжения срабатывания реле будет срабатывать очень неуверенно — несколько раз пытаясь сработать, но затем откатываясь назад и издавая при этом характерное жужжание. Так что будет лучше и для нас, и для реле, если мы введем контролируемый гистерезис по всем правилам. Один из способов, как это можно сделать практически, сейчас мы и продемонстрируем.
Терморегулятор "для дома, для семьи"5 Обычное устройство для нагревания воды в условиях отсутствия центрального горячего водоснабжения (например, в дачном домике) состоит из бака на 5—20 л со встроенным электронагревателем (ТЭНом) мощностью 1—2 КВт. Использовать его без терморегулятора неудобно — приходится внимательно следить за тем, чтобы вода не закипела, да и получается она либо слишком горячая, либо наоборот — недогретая. На рис. 15.5 изображена схема термостата на этот случай. Она только на вид кажется сложной, на самом деле отличается от схемы термостата для аквариума практически только тем, что в ней выбрано значительно более мощное электронное реле (до 10 А при естественном, без обдува, охлаждении) и введены дополнительные элементы (два маломощных электронных реле и два тумблера), в основном, для обеспечения различных режимов работы. Режимы эти следующие: □ автоматический термостатирующий; □ автоматический однократный с отключением по достижении нужной температуры ("режим электрочайника"); □ ручной с подключением ТЭНа напрямую к сети. Сначала отвлечемся от режимов и посмотрим, как работает основная схема регулирования — в ней есть небольшое отличие от схемы на рис. 15.2, которое заключается в том, что в схему введен резистор R4 небольшого номинала, шунтированный контактами маломощного реле К2. После включения питания, если температура еще ниже установленной, срабатывает не только основное мощное реле К1 (оно вместе с другими реле в данном случае включено в коллекторную цепь выходного транзистора микросхемы, а не в эмиттерную, как на рис. 15.2, — но это не меняет дела), но и реле К2 (токограничивающих резисторов в реле этого типа нет, и с этой целью установлены резисторы R6 и R7). Контакты его замкнуты, и резистор R4 не участвует в работе схемы. По мере увеличения температуры напряжение на датчике падает и в какой-то момент выходной транзистор компаратора разрывает цепь питания К1 — нагреватель обесточивается. В тот же момент отключается реле К2, и резистор R4 включается в цепь делителя R2-R3-R4-R5, еще больше увеличивая разницу напряжений между выводами компаратора. По мере остывания воды напряжение на датчике повышается, и в какой-то момент компаратор снова срабатывает, подключая нагрузку через реле К1. Контакты К2 при этом опять шунтируют резистор R4, и это тоже увеличивает разницу напряжений, но в теперь "в другую сторону". Как видите, мы получили 5 Эта конструкция автора опубликована в журнале "Радио", 2004, №11.
типичную гистерезисную характеристику— хотя мы здесь и используем электронное реле с zero-коррекцией, но коммутирует оно мощную нагрузку, и слишком частые изменения тока в маломощной деревенской сети в момент включения и выключения реле нам совершенно ни к чему. Резистор R4 несколько увеличивает нестабильность поддержания температуры — при приведенных на схеме номиналах разница между температурой включения и выключения составит от 1 до 1,5° (например, при установленной температуре в 35° нагреватель включится, когда температура упадет до 34°, а выключится, когда она достигнет 35,5°), однако нам более высокая стабильность в данном случае совершенно не требуется. К1/1 Рис. 15.5. Схема термостата для нагревания воды Теперь разберемся с режимами. Сначала— с режимом "электрочайника* (однократным), для обеспечения которого в схему введено еще одно маломощное реле КЗ, включенное, как видите, довольно хитрым образом. Если тумблер S2 находится в положении "Автомат" (т. е. контакты его замкнуты), то реле КЗ никак не участвует в работе схемы. Если же его переключить
в режим "Однократный", то в момент достижения нужной температуры, вместе с отключением реле К1 (и, соответственно, нагрузки), реле КЗ, ранее включенное через диод VD1 и резистор R7 в ту же коллекторную цепь выходного транзистора микросхемы, также отключается, контакты его размыкаются, и вывод 4 компаратора оказывается подключенным через датчик температуры к потенциалу земли. Такое состояние схемы устойчиво, и для возобновления работы в режиме стабилизации температуры необходимо либо на некоторое время отключить напряжение питания, либо тумблером S2 переключить схему в режим "Термостат". А конденсатор С2 вместе с диодом VD1 служит для "правильного" запуска схемы при включении питания — если тумблер К4 разомкнут, то контакты реле КЗ должны замкнуться сразу после подачи напряжения питания, иначе компаратор не сработает. При подаче напряжения питания, как мы знаем, конденсатор представляет собой короткозамкнутый участок цепи, поэтому реле КЗ на небольшое время, пока конденсатор заряжается (примерно 100 мс), замкнет контакты. Диод VD1 на это время запирается и предохраняет от срабатывания реле К1 и К2. Если температура воды в момент включения превышает установленную, такое срабатывание реле будет кратковременным — только на время зарядки конденсатора С2. Если же температура ниже требуемой, то компаратор успеет сработать, диод VD1 откроется, и реле КЗ останется в замкнутом состоянии до момента отключения нагрузки. Кстати, опыт эксплуатации подобного устройства показал, что наиболее популярен именно режим "электрочайника", т. к. он позволяет экономить электроэнергию и не беспокоиться о том, что вы оставили включенный электроприбор без присмотра. Ручной режим (резервный, на случай выхода автоматики из строя, чтобы в случае аварии не остаться вовсе без горячей воды) обеспечивается просто: тумблер S1 в положении "Постоянно" подает сетевое питание напрямую на нагреватель (контакты К1 при этом шунтируются, схема обесточивается, а вся система работает так, будто никакой автоматики и не существует). В положении "Автомат" сетевое напряжение переключается на блок питания автоматики, а нагреватель теперь может включаться только контактами реле. Тумблер S1, естественно, должен выдерживать рабочий ток ТЭНа (подойдет импортный переключатель В1011, рассчитанный на ток до 16 А при напряжении 250 В или другой аналогичный. В крайнем случае можно использовать автомобильные переключатели, но это не очень корректно, т. к. на напряжения до 300 В они, в Принципе, не рассчитаны.). Когда сетевое напряжение поступает на нагрузку (неважно, через тумблер или контакты реле), горит включенная параллельно ей неоновая лампочка Н1, по которой можно контролировать работу схемы. Лампочка может быть любого типа, только не забудьте, что резистор R8 должен иметь мощность
не менее 0,5 Вт, т. к. работает при сетевом напряжении. Использованное си-мисторное реле PF240D25 (разводка его выводов на схеме не показана, все нарисовано прямо на его корпусе) в принципе допускает ток до 25 А, однако достаточно сильно греется уже при 10 А, поэтому возможную мощность ТЭНа лучше ограничить величиной 2 КВт, а в корпусе устройства сверху и снизу обязательно должны наличествовать вентиляционные отверстия. При этом реле К1 в рабочем положении корпуса должно быть расположено выше остальных деталей. Если вы хотите добиться большей мощности, то лучше использовать аналогичное реле типа D2425 с возможностью установки на дополнительный радиатор. Использовать здесь электромагнитное реле довольно затруднительно и не рекомендуется: придется включать мощный пускатель через промежуточное реле, и он отнюдь не будет услаждать ваш слух своим грохотом и жужжанием. А вот реле К2 и КЗ вполне можно заменить на маломощные электромеханические — например типа РЭС-60 или РЭС-49. Естественно, резисторы R6 и R7 в этом случае не требуются, а вот у конденсатора С2, возможно, придется раза в два увеличить емкость для более надежного включения устройства. В положении тумблера S1 "Автомат" сетевое напряжение поступает на простейший блок питания, сделанный по рис. 10.2. Как обычно, его можно извлечь из покупного блока со встроенной вилкой, мощности от него никакой не требуется (вся схема потребляет ток порядка 30 мА), поэтому можно выбирать любой на напряжение 10—15 В. Напряжение с него поступает на стабилизатор типа LM78L09 (в корпусе ТО-92, можно заменить на отечественный 142ЕН8Б или на аналогичный иного производителя), откуда стабилизированное напряжение +9 В поступает на питание схемы. Светодиод VD2 сигнализирует о включении схемы автоматики — его лучше выбирать зеленого свечения, чтобы обеспечить контраст с неоновой лампочкой. При указанных на схеме номиналах термостат обеспечивает установку температуры в диапазоне примерно 35—85°. Настройка его и калибровка ничем не отличаются от таковых для аквариумного термостата, кроме диапазона температур. В процессе настройки основную нагрузку можно не подсоединять, т. к. момент срабатывания и отключения вполне можно контролировать по неоновой лампочке, только следует учесть, что вовсе без нагрузки "неонка" может гореть даже при выключенном реле из-за токов утечки, и вам даже может показаться, что система не работает. Тогда придется все же подключить какую-то нагрузку— в качестве нее удобно использовать лампочку накаливания или даже просто двухваттный резистор сопротивлением около 20 кОм. С перемешиванием/теплоизоляцией здесь ситуация обратная, чем в аквариуме, т. к. перемешивание здесь обеспечить довольно сложно, но оно как раз и не очень требуется — во-первых, требования к точности поддержания темпе
ратуры невысоки, во-вторых, нагреватель обычно настолько мощный, что вода сама неплохо перемешивается за счет конвекции, т. е. естественной циркуляции нагретых водных масс. Вот в процессе калибровки хорошее перемешивание обеспечить надо обязательно! А теплоизолировать бак для воды я настоятельно рекомендую: просто обернув его старым ватным одеялом, вы можете экономить до 70% электроэнергии, причем это касается не только данной конструкции, но и вообще всех водонагревателей. Можно сделать и "фирменную6 теплоизоляцию из упаковочного пенопласта. В заключение отметим, что схемы для построения термостатов невысокого класса, подобных описаным, существуют, разумеется, и в интегральном исполнении, обычно они при этом совмещены с полупроводниковым датчиком температуры, который часто имеет и отдельный выход, что обеспечивает возможность измерения температуры. С такими устройствами все знакомы, например, по встроенным в компьютерные материнские платы системам контроля температуры процессора и регулирования оборотов вентилятора. Прецизионный лабораторный термостат Сразу скажу, что нормальному радиолюбителю воспроизвести подобное устройство по полной программе есть задача реально невыполнимая. И дело не в том, что оно — вещь вовсе не нужная (наоборот, иногда может быть довольно полезна, как мы увидим в главе 16), а в том, что она громоздкая, дорогая, потребляет кучу электроэнергии и основные конструктивы для нее изготовить в домашних условиях затруднительно. Однако все не так трагично, и в домашних условиях можно соорудить упрощенную копию такого термостата — что при этом придется делать и чем пожертвовать, рассказывается в конце главы. А в целом это описание может пригодиться, если вам потребуется подобная конструкция по работе, причем здесь есть два соображения: во-первых, обладая соответствующей производственной базой, вполне можно изготовить такой термостат самостоятельно, и это может обойтись принципиально дешевле, чем покупать фирменный, а во-вторых, даже и в последнем случае знание принципов, по которым конструируются такие устройства, сильно поможет сделать вам правильный выбор. В любом случае рассмотрение этой схемы будет весьма поучительно, т. к. в ней сведены воедино многие предыдущие наши наработки. Термостат будет иметь диапазон регулирования температуры от -2 до +50 °C, причем точность поддержания ее может достигнуть ±0,05°. Для достижения высокой точности важны не столько особенности схемы, сколько тщательное продумывание конструкции и правильный выбор мощности нагревателей.
Следует сразу отметить, что в термостате этом нельзя точно установить нужное значение температуры, он может только ее точно поддерживать, поэтому для того, чтобы измерить реально установившуюся температуру, нужен отдельный специальный прецизионный термометр. О том, как измеряют температуру, мы будем говорить позднее, в главе 16 и далее, а пока перейдем к описанию конструкции. С конструктивов мы и начнем. Бак для рабочей жидкости (чистая вода тут не подойдет, т. к. она замерзнет, поэтому нужно пользоваться либо автомобильным антифризом, либо, что еще лучше, спирто-водно-глицериновой смесью: по 10—15% спирта и глицерина, остальное вода) должен иметь емкость не менее 100 л, и в нем должно быть обеспечено очень хорошее перемешивание. Бак следует изготавливать из нержавеющей стали или, в крайнем случае, пластмассы, все остальные материалы будут корродировать. Мешалку с электроприводом пристроить к этому делу не очень удобно: она будет, извините за невольный каламбур, мешаться, занимая много места именно там, где нам в процессе эксплуатации придется располагать объекты, подлежащие термо-статированию. Поэтому эту проблему решают обычно так: берут два бака и устанавливают их один в другой (как показано на рис. 15.6). Во внутренний бак насосом нагнетается рабочая жидкость, которая перетекает через его верх и из внешнего бака поступает опять в насос. Такая схема к тому же заметно улучшает качество термостатирования, т. к. основной — внутренний — бак при этом сам находится целиком в термостатированной среде. Внешний бак помещен в кожух с теплоизоляцией. Датчик температуры помещают не прямо внутрь рабочего бака, а монтируют в трубе на выходе из системы перекачивания, нагреватели же — на входе этой системы (на рис. 15.6 датчик и нагреватели не показаны). И насос с трубами, и, желательно, нагреватель должны быть также из нержавеющей стали. Естественно, насос и подводящие трубы необходимо теплоизолировать, а оба бака в рабочем состоянии прикрываются плотной крышкой, желательно также с теплоизоляцией и необходимыми отверстиями — для термометра, размещения испытуемых приборов и т. п. Принципиальная электрическая схема устройства приведена на рис. 15.7. Рассмотрим сначала основную схему регулирования, которая построена на знакомом нам сдвоенном ОУ типа 140УД20 (его можно заменить на сдвоенный прецизионный ОУ типа МАХ478 или аналогичный— характеристики схемы при этом улучшатся, но незначительно). В целом она отдаленно похожа на предыдущие схемы, за исключением того, что в обратной связи второго усилителя (DA1/2) стоит цепочка R3-R4, которая задает ему коэффициент усиления чуть меньше 30. Первый же усилитель (DA1/1) есть просто развязывающий повторитель сигнала с датчика, т. к. при таком включении вход
ное сопротивление усилителя будет шунтировать измерительный делитель Rl- Rt. Датчиком, как и раньше, у нас здесь служит термистор (и включен он наоборот, чем в случае компаратора — к плюсу питания, т. к. здесь используется обычный ОУ), но в фирменных конструкциях обычно применяют серийный металлический (медный или платиновый) термодатчик — при этом схему его подключения, как мы уже говорили, нужно изменить. Что же будет происходить в этой схеме при изменении температуры? Рис. 15.6. Принцип конструкции прецизионного термостата: 1 — внешний бак; 2 — внутренний бак; 3 — теплоизоляция; 4 - насос Рис. 15.7. Принципиальная электрическая схема прецизионного термостата
Сначала, когда температура намного ниже заданной, разность сигнала с датчика и напряжения с делителя R5-R6-R7 велика и, т. к. датчик включен в верхнее плечо делителя, отрицательна. Более высокий потенциал поступает на неинвертирующий вход, поэтому на выходе усилителя DA1/2 будет напряжение, близкое к положительному напряжению питания (при указанных на схеме типах транзистора и ОУ — около 9,5—10 В). Это напряжение через эмиттерный повторитель на транзисторе VT1 поступает на резистор Rl 1 и формирует ток (в данном случае — около 6,5 мА) через светодиод резисторного оптрона DA1 типа АОР124Б. В ОУ нет мощного встроенного транзистора на выходе, как у компаратора, поэтому его пришлось поставить дополнительно — хотя в данном случае это и не совсем обязательно (ОУ 140УД20 выдерживает нагрузку до 1 к), но нагрузка на вольт-другой снижает выходное напряжение насыщения (а при замене на менее мощный тип, скажем, на МАХ478 — в еще большей степени), так что лучше застраховаться. Оптрон входит в схему управления мощной нагрузкой, которая идентична показанной на рис. 11.5, и поэтому на этой схеме изображена без подробностей в виде пунктирного квадратика. Ее можно заменить на схему с рис. 11.3 или 11.4, тогда оптрон может быть диодный или транзисторный6. При таком токе через управляющий светодиод сопротивление светоприемника оптрона мало, и частота управляющих импульсов будет велика — тиристор будет открываться в самом начале каждого периода, и на нагреватель 1 поступит полное напряжение сети (см. главу 11). Когда напряжение с датчика по мере повышения температуры приблизится к заданному делителем R5-R6-R7 значению, напряжение на выходе ОУ начнет падать, и ток через светодиод оптрона уменьшится, соответственно упадет и действующее значение напряжения на нагревателе — он будет греть слабее. В конце концов, при близости к равенству напряжений на входах усилителя напряжение на выходе упадет до небольшой величины, и нагреватель почти полностью выключится. В точности то же самое будет происходить, если начать с более высокой температуры — при ее снижении мощность нагревателя в определенных пределах будет возрастать постепенно. В установившемся режиме ОУ будет поддерживать такое напряжение на выходе (с некоторой, соответственно, разностью потенциалов на входе), чтобы температура оставалась все время постоян 6 Кстати, в главе 11 упомянуто, что обратная связь устраняет нестабильности схемы регулирования мощности. Это действительно так, и вот почему: ведь регулятору с обратной связью все равно, по какой причине произошло изменение регулируемой величины — оттого, что открыли форточку, оттого, что внезапно упало напряжение в сети или по внутренним причинам самого регулятора. В любом случае, если воздействие не выходит за рамки возможностей регулятора, он послушно отработает изменение и "вернет" регулируемую величину "на место".
ной — мощность нагревателя будет в точности компенсировать потери тепла в окружающую среду. Такое регулирование называется пропорциональным и, разумеется, с его помощью можно достичь значительно более высокой стабильности температуры, чем с помощью релейной схемы. Чтобы это осуществилось на практике, нужно хорошее согласование всех элементов схемы: усилитель должен вовремя (когда температура в термостате еще отличается от заданной на 2—3 градуса) переходить из режима насыщения в усилительный режим, причем начальный ток через оптрон должен быть подобран так, чтобы устройство управления нагревателем сразу начало потихоньку снижать действующее значение напряжения. Все это достигается подбором номинала Rl 1 и коэффициента усиления ОУ. Подробно излагать всю арифметику я не буду — вы уже вполне сможете справиться с этим самостоятельно, только отмечу, что номиналы, приведенные на схеме, рассчитаны из следующих условий: термистор И1\1еет номинальное значение 15 кОм с крутизной при 20 °C около 4%/°С, соответственно в середине диапазона регулировки (при 20—25 °C) изменение его сопротивления составит примерно 0,6 кОм/°С. Тогда изменение напряжения на выходе датчика составит примерно 0,3 В на желаемый диапазон в 3°, отсюда коэффициент усиления ОУ и должен составлять величину порядка 30. Как подбирать Rl 1 из условия, чтобы напряжение на нагревателе было максимальным, но начало снижаться сразу же после того, как начал снижаться ток через этот резистор, вы уже знаете (см. главу 11). Ну, а подогнать сопротивления делителей под конкретный экземпляр термистора (или металлического датчика), думаю, проблемы не составит. Но это только, как видите, часть схемы. Вторую часть составляет устройство для автоматического включения холодильника. В таком агрегате холодильник нужен обязательно, т. к. наличие хорошей теплоизоляции не позволит жидкости нормально остывать при небольшой разнице температур между ней и окружающей средой, и термостат не будет нормально работать, даже если ограничить нижний предел диапазона комнатной температурой. Поэтому в схему введен компаратор, который автоматически включит холодильный агрегат при установке температуры ниже 30°. В зависимости от температуры в помещении и реальной ситуации вы можете произвольно включать и выключать холодильник вручную с помощью выключателей S1 и S2. Но и это еще не все! Делд в том, что для стабильной работы термостата в обычном режиме (при температурах выше комнатной) необходимая и достаточная мощность нагревателя невелика — для 100-литрового бака это порядка 0,5 кВт, как у карманного кипятильника, иначе система будет очень долго устанавливаться, колеблясь вокруг заданного значения температуры — если вообще установится в обозримом будущем. Но, во-первых, и в таком
режиме время перехода от температуры, скажем, 20° к температуре 50° составит часы — представляете, сколько времени потребуется, чтобы нагреть 100 л воды вместе со всеми металлическими конструкциями бытовым кипятильником? Еще сложнее ситуация в случае включения холодильника — промышленные холодильные агрегаты имеют холодопроизводительность порядка 500—1000 ккал/час, что численно соответствует примерно такой же мощности в ваттах, поэтому нагреватель наш в одиночку определенно не справится. По всем этим причинам в схему введен второй нагреватель, который подключается параллельно первому: либо вручную — в случае необходимости быстро "погнать" температуру вверх, либо автоматически при подключении холодильника. Мощность его должна быть такой, чтобы в сумме оба нагревателя заведомо превышали холодопроизводительность холодильного агрегата, но не слишком — раза в полтора, не более. Система, при которой холодильник и нагреватель действуют совместно, "побеждая" друг друга, может показаться не очень разумной, особенно с точки зрения экономии электроэнергии, но при желании обеспечить качественное регулирование другого выхода нет — разве что установить регулируемый холодильный агрегат, но регулировать производительность компрессионных холодильников, тем более автоматически — технически весьма непростое занятие. Я обещал рассказать, как можно повторить эту конструкцию в удешевленном и уменьшенном варианте для радиолюбительских нужд — такой термостат может пригодиться не только для градуировки и калибровки датчиков, но и, например, для испытаний работоспособности электронных схем при разной температуре (т. н. "климатические испытания"). В воду (или в антифриз) схему, естественно, погружать нельзя, поэтому ее аккуратно упаковывают в несколько (один в другом) полиэтиленовых пакетиков (обязательно новых!), завязывают, выведя наружу только необходимые провода, и подвешивают в термостате. Так как же сделать такую полезную штуку? Все сказанное ранее о конструкции, электронной схеме и настройке остается в силе, за исключением того, что перекачивающая система с двумя баками здесь, конечно, будет слишком громоздкой и сложной, так что перемешивание следует обеспечить обычной мешалкой с электродвигателем (двигатель не должен быть слишком мощным и иметь слишком много оборотов, иначе содержимое просто выплеснется наружу). Емкость бака может составлять от 5 до 10 литров, он обязательно должен быть металлическим (цилиндрическое алюминиевое ведро), но с хорошей теплоизоляцией (пенопласт). Для таких количеств воды мощность нагревателей следует уменьшить и можно обойтись вообще одним нагревателем мощностью от 300 до 500 Вт. Самый серьезный вопрос — как быть с холодильником? Можно использовать агрегат от старого домашнего холодильника — обычно их выкидывают не потому, что
они ломаются, а вследствие морального и физического износа, агрегат же остается вполне работоспособным. Это отличное решение с теоретической точки зрения, но на практике оно крайне неудобно— термостат теряет мобильность, к тому же испаритель от холодильника запихать в 5—10-литровую емкость непросто. Но есть и другой метод для обеспечения принудительного охлаждения рабочей жидкости, при использовании которого придется, правда, пожертвовать частью диапазона температур: в емкости размещается змеевик (несколько витков медной трубки по диаметру емкости), через который пропускается вода из водопровода. Зимой вода имеет температуру около 4°, так что вполне можно работать вплоть до этой температуры, а вот летом она, конечно, гораздо теплее — однако при комнатных температурах и выше работать термостат будет безупречно. При этом учтите, что теплопроводность и теплоемкость воды имеют беспрецедентно высокие значения в сравнении почти со всеми остальными известными материалами7, поэтому достаточно очень слабого тока воды, чтобы обеспечить эффективное охлаждение рабочей жидкости (антифриз тут, разумеется, уже не нужен). Потеряв часть диапазона, вы зато упростите схему (компаратор и дополнительный нагреватель не потребуются) и приобретете крайне удобную возможность тонко регулировать мощность охлаждения в зависимости от нужной температуры — просто поворачивая водопроводный кран, поэтому точность поддержания температуры тут может быть ничуть не хуже, чем в "настоящем" термостате. В нерабочем состоянии такой термостат задвигается куда подальше (обязательно — в сухом состоянии, иначе у вас все быстро разъест коррозией), долой с глаз домашних, а при необходимости вы его разворачиваете, например, в ванной, подсоединяете резиновыми трубками к водопроводу и спокойно работаете. На этом краткий курс теплотехники и основ регулирования температуры можно считать законченным и перейти к другой теме: измерению этой самой температуры. 7 Для тех, кто не в курсе: именно этому факту мы обязаны тем, что на Земле существует жизнь — иначе, скажем, температуры летом и зимой отличались бы на сотни градусов, но наличие больших количеств воды в океанах сглаживает эти колебания.
Глава 16 Как измерить температуру? Электронные термометры — Господи, до чего же мне холодно!- вскричал Планше, как только господин его скрылся из виду. И, торопясь согреться, он немедленно постучался у дверей одного домика. А. Дюма, "Три мушкетера” Прежде чем познакомиться с методами измерения температуры, неплохо бы попытаться понять, что это такое — температура? Вопрос не совсем дурацкий, как это может показаться на первый взгляд, потому что понятие температуры лежит в одном ряду с такими физическими абстракциями, как время, энтропия или электромагнитное поле. В отличие от последних двух, температуру мы можем ощущать физически, подобно расстоянию или массе, но на самом деле ясности в понимании сути дела это не добавляет: течение времени мы тоже ощущаем, но на вопрос "что такое время? " сможет внятно ответить далеко не каждый — если вообще кто-нибудь знает ответ. И время, и температуру в смысле их измерения постигла похожая судьба: научились это делать с достаточной точностью совсем недавно — в исторических масштабах, конечно. Основы термометрии Определение гласит: температура есть мера внутренней энергии тела. Мельчайшие частицы (атомы и молекулы), составляющие физические тела, все время движутся либо по некоторым траекториям в пространстве (в жидкостях и газах), либо колеблются около своего положения (в твердых телах). Чем интенсивнее они движутся, тем выше температура. Если в твердом теле она достигает некоторого критического значения, то атомы-молекулы срываются со своих мест, структура тела нарушается, и оно плавится, превращаясь в жидкость. Если повышать температуру дальше, то связи между частицами уже не могут победить возросшую интенсивность их движения,
и жидкость начинает испаряться, превращаясь в газ. При высокой температуре нарушаются уже связи внутри молекул — это так называемая холодная плазма (например, пламя), при очень высокой — внутри атомов, и вещество превращается в высокотемпературную плазму. В реальности на эту упрощенную модель накладывается некоторое количество нюансов. Скажем, вещество может существовать при одних и тех же условиях в нескольких состояниях, например, как твердое тело в равновесии с жидкой и газообразной фазой — это так называемая "тройная точка". Но нам сейчас важнее другое: из нарисованной картины следует, что должно быть такое состояние вещества, когда движения нет, все частицы стоят на месте и, следовательно, внутренняя энергия равна нулю. Это состояние существует и носит название "абсолютного нуля температуры". Чему она равна при этом по шкале Цельсия, вычислил теоретически еще в середине позапрошлого века уже упоминавшийся на этих страницах лорд Кельвин. Оказалось, что абсолютный ноль, он же ноль температурной шкалы Кельвина, отстоит от точки замерзания воды на 273,15°. Так как на практике измерить внутреннюю энергию саму по себе невозможно, температуру измеряют по каким-то ее внешним проявлениям. Логично для этого использовать точки фазового перехода (плавления и кипения) химически чистых веществ. Эти точки стабильны и хорошо воспроизводятся. В настоящее время принята международная практическая температурная шкала, уточненная последний раз в 1968 г. (МПТШ-68), в которой около двух десятков таких опорных точек, охватывающих диапазон от -259,34 °C (тройная точка водорода) до +1064,43 °C (точка плавления золота). Входят туда, в том числе, и точки замерзания и кипения воды. Между опорными точками температуру в этой шкале определяют платиновым термометром, имеющим сопротивление ровно 100 или 10 Ом при температуре 0 °C. Сопротивление платины при повышении температуры возрастает с наклоном 0,39250 %/°С, и, хотя зависимость эта не очень линейна, в диапазоне от -259,34 °C до 630,74 °C она очень хорошо воспроизводится. В результате получают т. н. термодинамическую шкалу или шкалу Кельвина, температура по которой обычно обозначается заглавной Т. Эта шкала используется в научных и технических расчетах. В шкале Кельвина за ноль, как уже упоминалось, принимается абсолютный нуль температуры (поэтому отрицательных температур там не существует), а в привычной для европейцев бытовой шкале Цельсия — точка замерзания воды, при этом градусы в той и другой шкале строго равны между собой, и пересчет не представляет трудностей: Т = t - 273,15. В англоязычных странах в быту традиционно используют шкалу Фаренгейта (заглавное F), в которой и ноль другой, и градусы меньше, потому пересчет от- носительно сложный: °C = — (°F - 32).
Изложенных сведений вполне достаточно, чтобы понять, как можно на практике измерять температуру. Так как воспроизводить методику МПТШ каждый раз нереально, то надо взять некий прибор (обычно это тот же платиновый термометр сопротивлением 100 или 10 Ом), откалибровать (или точнее — отградуировать, разницу мы поймем в следующей главе) его по методике МПТШ и получить тем самым образцовый термометр — эталон температуры. Если сделать так, как написано, то эталон такой будет называться первичным. Обычно указанную процедуру изготовления первичных эталонов проводит одна-единственная уполномоченная международная организация, чтобы все градусы в мире были, по возможности, одинаковыми. Процедура, естественно, весьма дорога, поэтому таких первичных эталонов в каждой стране мира немного и хранятся они в уполномоченных организациях — только уже национальных. Эти организации изготавливают вторичные эталоны, которые рассылают по предприятиям, имеющим от этих организаций сертификат на производство метрологических поверочных измерений. А уже эти предприятия осуществляют поверку (не путать с "проверкой", хотя, по сути, это понятия близкие) обычных средств измерения по всей стране. Эта ступенчатая процедура — от получения первичного эталона и далее — действует не только в области температурных измерений, но такая же схема применяется и для любых других средств измерения физических величин, от длины и времени до диэлектрической проницаемости или влажности. Причем если некая фирма выпускает достаточно серьезную продукцию, каждый экземпляр которой подлежит обязательной поверке (например, микрометры, штангенциркули или лабораторные термометры), то, естественно, с каждым экземпляром не набегаешься в вышестоящую инстанцию, поэтому для таких случаев изготавливают отдельный эталон, получающий название поверочного или образцового. Так происходить должно, но это не значит, что так происходит на практике всегда. Совет на этот случай стандартный — остерегайтесь дешевых подделок! Датчики На практике для измерения температуры электронными методами используют в основном две разновидности датчиков: металлические термометры сопротивления и полупроводниковые датчики. Термисторы для измерения температуры применяют редко, в некоторых специфических случаях, т. к. их единственное достоинство в этом плане — высокая чувствительность — не перевешивает многочисленные недостатки, среди которых, в первую очередь, нелинейность и, кроме того, невысокая стабильность.
Термометры сопротивления представляют собой обычный резистор из металлической — медной или платиновой1 — проволоки. Платиновые датчики наиболее стабильны, но они обладают существенной нелинейностью, поэтому приходится рассчитывать значения температуры по таблицам (см., например, [8]). Использование меди обусловлено тем, что у нее зависимость сопротивления от температуры наиболее близка к линейной в широком диапазоне Температур, в диапазоне от -50 до +100 °C погрешность за счет нелинейности в пересчете на температуру не превысит 0,1°. Платиновые датчики (ТСП — "термометр сопротивления платиновый") используют в диапазоне от -260 до +1100 °C, а медные (ТСМ) от -200 до +200 °C. Доступность меди приводит к искушению изготовить такой датчик самому: и в большинстве случаев это совершенно не возбраняется, единственное исключение составляют прецизионные образцовые термометры, подобные описанному ниже, т. к. в промышленных датчиках используется особо чистая медь и, кроме того, их сопротивление точно подогнано под стандартные 10, 50 или 100 Ом. Полупроводниковые датчики удобно использовать во всех случаях, когда не требуется высокая точность. Простейший полупроводниковый датчик температуры — обычный кремниевый диод или транзистор в диодном включении (когда коллектор соединен с базой). Пресловутое прямое падение напряжения на диоде, равное 0,6 В, имеет почти линейный отрицательный температурный коэффициент, равный приблизительно 2,3 мВ/°С. Все промышленные полупроводниковые датчики тем или иным способом используют этот эффект. Они делятся на два класса: с аналоговым и цифровым выходом. Аналоговые датчики (DS60, МАХ6605) имеют обычно три вывода (питание, общий и выход), а цифровые иногда всего два (DS1721), питаясь от сигналов запроса, поступающих с внешнего контроллера (см. главу 12). Следует особо отметить довольно точный датчик LM235 (1019ЕМ1), который включается подобно диоду, но имеет третий вывод для подстройки величины температурного коэффициента, имеющего величину аж 10 мВ/°С, причем с положительным наклоном. Все полупроводниковые датчики имеют погрешности порядка 1—2°, и иногда встречающееся в характеристиках определение "прецизионный" стоит, видимо, счесть за маркетинговый прием2. 1 Пусть вас слово "платиновый" не пугает — самой платины там так мало, что стоит такой датчик не дороже медного, тем более что в датчиках используют дорогую медь высокой степени очистки (здесь, в отличие от аудиоаппаратуры, — см. главу 9 — это существенно!). 2 Когда эта глава уже была написана, автор увидел в каталоге фирмы Analog Devices недавно разработанный этой фирмой цифровой датчик ADT7301 с точностью 0,5° в диапазоне температур 0—70°. Если учесть, что это действительно в два раза лучше любого другого устройства такого типа, то, пожалуй, в данном случае определение "прецизионный" можно простить.
Средства поверки В домашней практике для поверки разрабатываемых самостоятельно приборов достаточно точности ртутного лабораторного термометра с делениями не крупнее одной-двух десятых градуса (погрешность их, однако, может быть выше и составлять 0,2 и даже 0,5°). Основной диапазон — от 0 до 50 °C, может потребоваться и еще один термометр для диапазона 50—100 °C. Это в идеале — подозреваю, что приобрести такой термометр частному лицу непросто из-за того, что сейчас ко ртути выработалось какое-то параноидальное отношение (притом, что медицинские ртутные термометры продолжают изготавливаться и продаваться). Просто удивляешься, как это ученые прошлых веков со ртутью работали постоянно и доживали до преклонных лет без особых проблем! Укажу и на те средства измерения температуры, которые использовать в качестве образцовых категорически не рекомендуется: во-первых, это все, без исключения, жидкостные (не ртутные) термометры (обычно спиртовые — с красной или синей рабочей жидкостью), во-вторых, бытовые металлические термометры расширения (с такой спиралькой, соединенной со стрелочкой, они всем знакомы по бытовым газовым плитам), в-третьих, это термометры, которыми комплектуются некоторые мультиметры на основе термопары3. Последние могут быть очень удобны для производства высокотемпературных измерений, но решительно не годятся для обычного диапазона температур. Альтернативным выходом может стать приобретение промышленного платинового или медного термометра сопротивления достаточно высокого класса (не хуже 0,05) — для таких датчиков существуют стандартизированные таблицы значений сопротивления при различных температурах, которые есть в любом справочнике по измерениям или по физическим величинам, например, в [8]. Номинал его для удобства следует выбирать повыше— не менее 100 Ом. Это решение лучше, чем ртутный термометр, хотя бы потому, что диапазон температур гораздо шире. Но в домашних условиях, как мы увидим далее, получить точность выше, чем у ртутного термометра, будет непросто. Главный вопрос: а как измерить сопротивление такого датчика с необходимой точностью? Точность обычного мультиметра явно недостаточна для наших целей, к тому же в диапазоне 100 Ом погрешность его особенно велика. Вот к этому вопросу мы сейчас и перейдем. 3 Речь идет, разумеется, о калибровке тех более-менее точных измерителей температуры, которые мы будем разрабатывать в этой и других главах. Для настройки, к примеру, бытовых термостатов из предыдущей главы вполне сгодится и спиртовой термометр.
Измерение сопротивления образцового термометра Наверняка вы уже придумали наилучший способ для измерения сопротивления образцового термометра: приобрести прецизионный измерительный цифровой прибор. Это именно так, и, безусловно, это наиболее универсальное решение. Еще лучшим решением стало бы приобретение специального измерительного прибора, который "заточен" именно под точное измерение сопротивлений термодатчиков. Да чего уж мелочиться: можно сразу метрологическую лабораторию купить, туда входят, в том числе, термостат, подобный разобранному нами в предыдущей главе, камера для климатических испытаний, грузопоршневой манометр для поверки датчиков давления, измерительный комплекс, различные поверочные эталоны (сопротивления, напряжения, времени, частоты и др.), компьютеры, химические реактивы, источники питания... Открывая свою метрологическую фирму, следует пойти по этому пути, и, между прочим, дело это весьма выгодное, несмотря на сравнительно большие начальные затраты (куда входят, кроме всего прочего, деньги на специально оборудованное помещение и приобретение многочисленных дипломов и сертификатов). При правильной постановке дела от банкротства вы гарантированы — метрологические услуги есть весьма востребованная область деятельности, тем более в нашей стране, где в этом смысле "конь не валялся". Определенную иронию вы уже почувствовали: прецизионный прибор стоит дорого, а использоваться он у нас будет по назначению редко, так что вернемся с небес на землю и попробуем все же наметить реальные пути решения нашей проблемы. Рассмотрим основную идею проведения таких измерений (рис. 16.1). Она известна еще со времен английского физика Ч. Уитстона (1802—1875), чьим именем и'названа показанная на рисунке конструкция из четырех сопротив
лений, и такой "мостик Уитстона", как мы увидим, в той или иной форме используется на практике и по сей день. Уитстон прославился еще своими работами в области телеграфии и звукотехники, но приведенная схема, без сомнения, самое выдающееся его изобретение. Для того чтобы измерить величину сопротивления Rx, положение движка потенциометра R2 устанавливается так, чтобы напряжение в выходной диагонали моста (UBbK) было равно нулю. Если положения движка R2 заранее проградуированы в единицах сопротивления и отношение сопротивлений резисторов R1 и R3 также извест- R3 но, то Rx = Rl---. Здесь есть несколько важных моментов. Во-первых, R2 в принципе работа этой схемы не зависит от напряжения питания, потому что все определяется не абсолютными значениями падений напряжения на резисторах, а их соотношением. На практике некоторая зависимость будет иметь место (т. к. чувствительность схемы со снижением питания будет падать), тем не менее, в довольно широких пределах это положение соблюдается. Во-вторых, обеспечить фиксацию момента равенства напряжения в диагонали моста нулю (при этом условии мост называется сбалансированным) несравненно проще, чем измерить с достаточной точностью абсолютное значение напряжения или сопротивления. В последнем случае необходимо иметь прецизионный прибор, о котором говорилось раньше, а для того, чтобы настроить очень точно ноль вольтметра любого класса точности, никакого специального оборудования не требуется, достаточно замкнуть накоротко его входные клеммы. От вольтметра при этом требуется только одно: как можно более высокая чувствительность. Рассмотрим, что на практике применяют в качестве резистора R2 — ведь мы должны знать его сопротивление с достаточно высокой абсолютной точностью в любом положении движка. Обычно для таких целей используют магазины сопротивлений. Их продают, и хотя стоить это дело может достаточно дорого, покупка эта целесообразна. Хочу отметить, что если вам попадется антиквариат производства советских времен в приличном состоянии (т. е. если он не валялся в какой-нибудь луже, контакты не окислены и корпус не ржавый), то можно спокойно приобретать. Изготовить самому магазин сопротивлений хотя и возможно, но в данном случае возни будет предостаточно, полученный результат характеристиками будет обладать неудовлетворительными, а дешевле получится не намного, не в последнюю очередь из-за того, что придется приобретать мощные многопозиционные переключатели. Как ни парадоксально, но малые токи можно коммутировать с высокой точностью только контактами, которые в другом случае были бы предназначены для коммутации токов в десятки и сотни ампер. На тонкостях физики этого дела мы не будем останавливаться, а просто учтем это на будущее.
Сам по себе магазин сопротивлений представляет собой, по сути дела, переменный резистор, составленный из множества постоянных, которые могут коммутироваться с помощью набора десятипозиционных переключателей, называемых декадными, причем все устроено таким образом, что каждый переключатель связан с сопротивлениями в десять раз меньшего или большего номинала, чем соседний. Количество переключателей определяет шаг установки сопротивления, обычно их не меньше шести, и весь диапазон, таким образом, делится на 106 (т. е. магазин такой эквивалентен кассе из миллиона высокоточных резисторов с различающимися номиналами!). Точность определяется классом прибора, естественно, он не должен быть хуже, чем 0,05. Причем часто магазины имеют три вывода, подобно обычному переменному резистору, и могут включаться по схеме потенциометра. На практике это удобнее, т. к. тогда резисторы R2 и R3 будут представлять собой один резистор, включенный по схеме потенциометра, движок которого будет представлять собой правый (по схеме) вывод диагонали моста. Если же мост вдруг попался двухвыводной, то придется использовать его вместо R2 или R3, а второй резистор в плече подбирать из постоянных. В дальнейшем мы будем ориентироваться на трехвыводной мост. Номинальный диапазон сопротивлений магазина (т. е. суммарное сопротивление всех его составляющих) для наших целей должен лежать в пределах от 1 до 100 кОм (минимальный шаг должен составлять не более 0,01 Ом). Кроме магазина нам потребуется еще один особо точный резистор, который сыграет роль R1 — постоянный, с точностью также не хуже, чем 0,02% (идеально подойдут проволочные резисторы типа С5-54В или, например, фольговые С5-61 с допуском 0,01%, но их непросто приобрести). Можно было бы использовать тут т. н. меру электрического сопротивления типа Р-321 или Р-331, класс точности которых равен 0,01—0,02, однако такая штука может стоить подороже магазина. Номинал R1 может лежать в пределах от 500 Ом до 1 кОм, если термометр сопротивления имеет номинал 100 Ом. Принципиальная схема измерения сопротивления образцового датчика температуры приведена на рис. 16.2. Магазин сопротивлений на ней условно показан в виде переменного резистора Rm. Все резисторы, кроме, конечно, Rt и Rm, а также, возможно, R1, типа С2-29В. Инструментальный усилитель на микросхеме DA1 здесь нужен для обеспечения достаточной чувствительности схемы. Его коэффициент усиления выбирается из следующих соображений: допустим, наш мультиметр имеет на самом маленьком пределе измерения напряжений (200 мВ) чувствительность один знак после запятой, т. е. 0,1 мВ (обычная разрешающая способность рядовых мультиметров). При коротком замыкании его щупов на шкале должны показываться все нули (нуль не сдвинут и он не "гуляет"). Некоторую погрешность при измерениях будет
out +5,0 В LM78L05 к выв 8 DA1 GND ЮОк СЗ . 100,0 хЮ В in +9-12 В DA1 МАХ478 LM79L05 GND С5 100,0 + хЮВ R4 1,10к R5 10,Ок R7 2,Ок 6 in -9-12 В к выв 4 DA1 । -5,0 В Рис. 16.2. Принципиальная схема измерителя сопротивления образцового датчика температуры Rk2 1к Rk4 Rk1 Юк Rt 100 Rk3 Юк С4 1000,0 х16 В DA1/1 DA1/2 С6 100,0 хЮВ вносить всегда наличествующая помеха, поэтому возьмем запас и примем чувствительность его равной 1 мВ. Ток через датчик при выбранных номиналах сопротивлений и напряжении питания будет составлять приблизительно 4,5 мА. Для того чтобы обеспечить необходимую разрешающую способность измерения температуры приборами, которые мы будем конструировать (для большинства применений необходимая и достаточная величина ее составляет 0,1°), нам надо обеспечить разрешающую способность нашего образцового термометра выше в два раза (т. е. 0,05 °C — выше не имеет смысла, см. далее). Зададимся на всякий случай еще меньшей величиной — 0,03°. Датчик имеет сопротивление 100 Ом, поэтому при крутизне его характеристики, равной примерно 0,4 %/°С (величина справедлива и для платины, и для меди), изменение сопротивления будет также 0,4 Ом/°С, что при указанном токе через измерительное плечо моста составит 1,8 мВ/°С, т. е. при
изменении температуры на 0,03° изменение напряжения на диагонали моста составит 0,054 мВ. Нам желательно увеличить это напряжение разбаланса до определенного выше значения в 1 мВ, отсюда коэффициент усиления инструментального усилителя должен составить примерно 20. Диапазон значений измеряемой температуры для этого устройства практически ограничен только возможностями датчика. Подробно погрешности нашей схемы мы разберем в следующей главе (они не слишком радуют, и там же мы укажем пути их снижения), а здесь только укажем, что с точки зрения точности схема обладает одним недостатком — в ней нескомпенсировано влияние соединительных проводов. Отчасти это можно было бы сделать, но мы не будем усложнять, а просто примем, что провода, соединяющие со схемой как датчик, так и магазин сопротивлений, должны быть минимально возможной длины и достаточно большой толщины — не менее 2 мм2. Эта схема критична также, кроме точности резистора R1, к выбору ОУ, и при замене следует применять только ОУ с точностными характеристиками не хуже указанного, обратите внимание также на возможность работы при напряжении питания ±5 В (впрочем, найдется довольно много аналогичных типов). Практическая работа со схемой понятна: мы устанавливаем датчик в среду, где измеряется температура, и ждем, пока он прогреется. Непосредственно перед проведением каждого измерения следует скомпенсировать сдвиг нуля усилителя: перемкнуть диагональ моста накоротко с помощью выключателя S1 и с помощью переменного резистора Rk2 установить показания мультиметра, равные нулю. Если регулировка будет слишком грубой, или, наоборот, диапазона будет не хватать, то следует или изменить номинал резистора Rk2 или подобрать Rk4. По причинам, изложенным выше, в качестве выключателя S1 следует использовать мощный тумблер, рассчитанный на токи 10 А и более. Затем мы размыкаем S1 и балансируем мост так, чтобы мультиметр показал ноль напряжения. Сразу устанавливать мультиметр на максимальную чувствительность не следует — температура обычно "ползет" и вы замучаетесь ловить ноль. Но и при установившейся температуре точного нуля не будет — мы специально увеличили чувствительность схемы до предела, и на показаниях будет сказываться помеха и дискретность установки сопротивления с помощью магазина. Нужно стараться сбалансировать мост так, чтобы "гуляние" показаний мультиметра не превышало установленного нами предела в 1 мВ. Измеряемое сопротивление /?t будет определяться по формуле: /?х /?t = /?l------, где Rx есть величина нижней по схеме части сопротивле- (Rm-Rx) ния магазина. Сравнивая Rl с табличным значением [8], можно узнать измеряемую температуру.
Схему можно украсить, если на выход усилителя параллельно мультиметру подсоединить двухцветный двухвыводной светодиод (с токоограничивающим резистором порядка 300—510 Ом). Когда мост находится в разбалансе, светодиод будет гореть, причем цвет свечения будет зависеть от знака разбаланса, а яркость — от его степени. Когда на выходе установится ноль, светодиод погаснет. Разумеется, более-менее точно проконтролировать что-нибудь будет невозможно, но это удобно при значительном уходе температуры — сразу видно, в какую сторону она ушла. Можно ли автоматизировать работу такой схемы? Естественно, можно, но на практике осуществить это весьма и весьма непросто: как минимум, потребуется калибровка ее на оборудовании с более высокими характеристиками (обеспечивающими точности до 0,01 °C), чего мы, собственно, и старались избежать, к тому же и само схемотехническое решение должно быть очень тщательно продумано. Теперь вы можете оценить, почему прецизионное оборудование стоит так дорого. Простейшие электронные термометры на батарейке Как ни странно, но такое распространенное устройство, как бытовой термометр, требует достаточно высокой точности: не хуже 0,1—0,2° по той хотя бы причине, что не очень красиво, когда изобретенный вами прибор показывает +1° в то время как лужи вокруг стойко покрылись льдом. Для обычного диапазона уличных термометров от -50 до +50 °C такая точность эквивалентна относительной погрешности в 0,1%, что достаточно низкая величина для того, чтобы отнестись к ней со всем возможным уважением: сравните с погрешностью не самых дешевых серийных мультиметров, лежащей, в лучшем случае, в пределах 0,5%. Легальный путь замять проблему — не демонстрировать десятые градуса, как это делают на уличных табло, тогда допустимая погрешность повышается, по крайней мере, до 0,5%. Однако мое убеждение состоит в том, что демонстрировать температуру без десятых градуса все равно, что делать наручные часы без секундной стрелки — вроде бы "по жизни" и не слишком требуется, но как-то... несолидно. Первое наше детское представление о температуре заключается в магической цифре "36,6", и три цифры эти навсегда переплетаются с самим понятием. Но мы пока не знаем, как делать точные аналого-цифровые схемы, и окончательно освоимся в этой области только к главе 26. Поэтому здесь мы разберем пару вариантов простейших реализаций электронного измерителя температуры, не обращая особого внимания на погрешности. Схем подобных
термометров очень много, но если что-то делать, то со смыслом, и даже в учебных целях не стоит заниматься конструированием таких вещей, которые никогда не пригодятся на практике. Поэтому наши конструкции будут иметь свою изюминку, которая компенсирует нам факт их невысокой точности: а именно, они малопотребляющие и будут работать от одной 9-вольтовой батарейки типа "Крона". Электронный термометр со стрелочным индикатором Схема со стрелочным индикатором показана на рис. 16.2. В качестве показывающего устройства здесь используется измерительная головка типа М903 с током полного отклонения 50 мкА. Можно использовать любую другую головку магнитоэлектрической системы, но если ток полного отклонения отличается от указанной величины, то придется пересчитать резистор R7. Головку придется доработать: с нее надо снять переднюю крышку со стеклом (нарушив при этом гарантийную пломбу, защищающую один из крепящих винтов) и очень аккуратно, чтобы не повредить весьма чувствительную стрелку с очень нежным поворотным механизмом, наклеить поверх имеющейся шкалы новую. Шкалу эту можно изготовить, напечатав ее на качественной бумаге с помощью струйного или лазерного принтера, а для наклейки следует использовать синтетический клей типа "Момент-кристалл" или другой — только ни в коем случае не на водной основе! Крайние деления на шкале должны совпадать с делениями на оригинальной шкале (положение ограничителей хода стрелки не должно совпадать с крайними делениями, у стрелки должен оставаться небольшой свободный ход за пределы шкалы). Крайнее левое деление будет соответствовать -50°, а крайнее правое +50°, ноль в этом случае должен быть расположен ровно по центру шкалы. Так как длина шкалы равна всего нескольким сантиметрам, то нанести разборчивые деления с шагом меньше, чем через 2 градуса, вряд ли получится, и именно этот параметр будет определять максимально требующуюся точность — снижать погрешность ниже половины деления шкалы, в данном случае, менее 1° не имеет смысла (на самом деле по всему диапазону погрешность у нас будет еще несколько больше — порядка 2—3°). Забегая вперед, заметим, что нет никаких проблем в том, чтобы отградуировать шкалу на любой другой диапазон, скажем, от -30° до 70°, или от 0° до 100°, для этого нужно будет только подобрать величину резистора R2. Датчиком температуры здесь служит транзистор в диодном включении. Можно использовать любой маломощный кремниевый п-р-п-транзистор (за исключением "супербета"-разновидностей), единственное, что желательно
(но необязательно), чтобы он был в металлическом корпусе. Для изготовления датчика подбирают подходящую по диаметру пластмассовую трубку и заклеивают в нее эпоксидной смолой транзистор с заранее подпаянными выводами так, чтобы металлический корпус соприкасался с окружающей средой— чувствительность и скорость реакции термометра сильно возрастут в сравнении с заделкой его внутрь трубки. Можно использовать и транзистор p-n-p-типа, тогда в схеме его придется перевернуть, что может быть даже предпочтительнее, т. к. соединенный с коллектором корпус окажется под потенциалом "земли". Можно использовать и кремниевый диод, но заделывать его придется по типу рис. 15.3, и прогреваться он будет значительно медленнее. Рис. 16.3. Электронный термометр со стрелочным индикатором Ток через датчик будет равен примерно 1 мА, падение напряжения на нем, естественно, около 0,6 В. Наклон температурной характеристики отрицателен и равен примерно, как мы говорили, 2,3 мВ на один градус, поэтому общее изменение напряжения на датчике составит 230 мВ на диапазон 100°. Выходное напряжение ОУ при максимальном сигнале мы хотим сделать как можно больше, чтобы минимизировать ошибки, как связанные с собственным падением напряжения на измерительной головке, так и погрешности схемы вообще (см. главу 17). Максимум, что мы можем получить от ОУ в данной схеме — это напряжение несколько ниже напряжения питания, равного 5 В, поэтому выбираем коэффициент усиления, приблизительно равный 20 (с округлением в меньшую сторону).
От ОУ здесь требуется, в первую очередь, возможность работать с малым напряжением питания и с выходными напряжениями, равными напряжению "земли". Кроме указанного типа ICL7612 подойдут ICL7614, ICL7616 (они даже совпадают по цоколевке и схеме включения), а также МАХ407, МАХ409, МАХ4162 (в корпусе SO) и многие другие типы, единственным общим недостатком которых является относительно высокая цена— более $10, однако за удовольствие надо платить. Общее потребление схемы определяется здесь, в основном, потреблением цепи датчика, а также собственным потреблением стабилизатора (потребление ОУ и делителя R1-R2 малы в сравнении с указанными) и, в худшем случае, составит в сумме около 3,5—4 мА. Емкость батарейки "Крона" алкалай-нового типа составляет порядка 1800 мА-ч, и наша схема сможет проработать от одного элемента в непрерывном режиме около трех недель. Вместо резисторов R2, R5 и R6 сначала устанавливаются подстроечные резисторы соответствующего номинала (R5 и R6 несколько больше указанных на схеме). Настройку схемы надо начинать с того, что при накоротко замкнутых между собой неинвертирующем входе ОУ (вывод 2) и нижнем по схеме выводе резистора R4 с помощью резистора R6 настроить начало шкалы измерительной головки (стрелка должна быть ровно на делении -50°). Само напряжение на выходе ОУ при этом должно быть равно нулю. От подобной штатной настройки нуля ОУ мы ранее отказались из принципа (см. главу 14), однако в этой не слишком точной схеме использовать ее целесообразно, в первую очередь, из-за простоты. Затем перемычку следует убрать, погрузить датчик в среду с температурой 0 °C (тающий снег или мелкоизмельченный лед в равновесии с водой, лучше всего поместить это дело в термос и в процессе работы периодически перемешивать) и установить с помощью резистора R2 стрелку головки на 0°. После этого датчик переносится в среду с температурой 40—50° (вот тут ой, как пригодится термостат!) и путем изменения R5 устанавливаются соответствующие показания стрелки. Ноль градусов у нас тоже при этом "уйдет", поэтому указанную процедуру следует повторить несколько раз (обычно достаточно 3—4 раза), перенося датчик из среды с температурой 0 °C в среду с более высокой и обратно. Не забывайте каждый раз выждать, пока показания установятся. Точность калибровки будет тем выше, чем больше разница между температурами в калибровочных точках, однако обязательно надо одну из точек выбирать равной или близкой к нулю градусов, потому что это критичное для практики значение. После этого переменные резисторы выпаивают и помещают на их место постоянные резисторы с точно такими же номиналами, при необходимости составляя их из нескольких параллельно
и/или последовательно включенных, особую точность при этом надо соблюдать при подборе R2 (ноль градусов). Окончательно подобранный комплект резисторов можно впаять в плату "паучком", но для того, чтобы все выглядело фирменно, на плате лучше заранее предусмотреть места для подключения параллельных и последовательных резисторов (показаны на схеме пунктиром для R2, аналогично следует поступить и для R5). Резисторы можно использовать обычные, типа МЛТ или С1-4, прецизионных резисторов типа С2-29В здесь не требуется. В схему можно добавить и светодиод, сигнализирующий о включении питания, однако это повысит потребление, поэтому лучше без этого обойтись. ...ис цифровой индикацией Другую конструкцию — с цифровой индикацией — вы можете видеть на рис. 16.4. Внешний вид используемого индикатора типа PMLCD фирмы Velleman показан на рис. 16.4 сверху. Он представляет собой фактически готовый вольтметр с диапазоном входного напряжения в пределах ±199,9 мВ (знак минус высвечивается автоматически). Соответственно входному диапазону, индикатор имеет четыре десятичных цифры, которые могут показывать число до 1999, причем положение запятой выбирается заранее перестановкой джампера на самом индикаторе. Чтобы индикатор показывал именно градусы температуры, нам придется подогнать шкалу выходных напряжений так, чтобы диапазону в 50° соответствовала величина 50 мВ на выходе ОУ (тогда при соответствующей установке джампера показания будут высвечиваться с десятыми, как на рисунке) — фактически нам придется ослабить напряжение с датчика более, чем в два раза, и использование ОУ нецелесообразно: усиливать нечего. Сам индикатор питается от нестабилизированного напряжения 9 В прямо с батарейки, ток потребления — около 1 мА. Напряжение с датчика подается на делитель R2-R3, которым ослабляется в нужное количество раз и подается на вход (+Vin) индикатора (разводка выводов индикатора на рис. 16.4 не приводится, т. к. все указано на его корпусе). Другой способ установки нужного наклона характеристики — изменение делителя в самой схеме индикатора согласно примерам, приведенным в техническом описании, тогда от делителя R2-R3 можно избавиться. Ноль показаний (соответствующий нулю температуры) устанавливается с помощью делителя R4-R5. Таким образом, процедура калибровки здесь аналогична описанной: вы устанавливаете на индикаторе ноль (подбирая резистор R5) и некоторое значение температуры (меняя резистор R3 или соотношение делителя индикатора), попеременно погружая датчик в воду с разной температурой.
Рис. 16.4. Электронный термометр с цифровым индикатором Учтите, что сам индикатор имеет погрешность измерения напряжения порядка 5%, так что отражение десятых градуса тут есть бутафория вдвойне — погрешность составила бы примерно градусов 10, если бы не наша процедура калибровки, которая позволяет избавиться от систематической составляющей и снижает погрешность раза в два-три. Если же уменьшить входное напряжение еще в десять раз, избавившись от десятых, то часть погрешности, обусловленная индикатором, пропорционально возрастет: 5% отсчитывается от полной шкалы входных напряжений (200 мВ), и термометр начнет показывать почти в прямом смысле слова "погоду на Марсе". Но в таких конструкциях от погрешности не избавишься — в принципе, надо делать все иначе, чем мы и займемся в главе 26. Общее потребление схемы здесь примерно такое же, как и у стрелочного термометра. У обеих конструкций потребление можно снизить практически раза в два, повысив тем самым время работы от батарейки, если вместо стандартного LM78L05 использовать более дорогой малопотребляющий стабилизатор, например, МАХ663 или аналогичный.
В заключение остановимся еще на одной проблеме, которая имеет решающее значение для корректных измерений температуры воздуха (для воды все проще). Напомним основополагающий физический принцип, согласно которому температуру воздуха можно измерять только в тени — "температура воздуха на солнце" не имеет никакого физического смысла, о чем часто забывают даже телевизионные ведущие. Это обусловлено тем, что воздух прозрачен и лучами солнца не прогревается, зато термометр и окружающие его поверхности на солнце прогреваются очень даже, и степень этого прогрева зависит от материала, который освещается солнечными лучами: заверните при 20-градусном морозе термометр в черную ткань при полном безветрии, и вы получите "температуру воздуха на солнце" градусов в двадцать-тридцать тепла, что к действительности не имеет никакого отношения. Поэтому место расположения датчика надо выбирать очень тщательно: он не только не должен сам подвергаться воздействию прямых солнечных лучей, но и не должен располагаться вблизи поверхностей, которые такому воздействию подвергаются (особенно над ними — скажем, в случае расположения под козырьком, но на освещенной стене дома, козырек только усугубит ситуацию из-за того, что под ним будет скапливаться поднимающийся теплый воздух). Практически выбрать место установки датчика бывает очень непросто, и именно поэтому уличные термометры-табло часто врут.
Глава 17 Ошибаются все. Немного о метрологии и ошибках аналоговых схем — На следующий день после этого события вас посетил Кавуа, — продолжал кардинал, — и просил явиться во дворец. Вы не отдали ему этого визита и сделали ошибку. А. Дюма, "Три мушкетера" Читатель, конечно, с неудовольствием заметил, что в двух предыдущих главах наблюдался заметный перекос в сторону конструктивных особенностей приборов — об этом говорилось чуть ли не больше, чем о собственно электронной части. Поделать тут ничего нельзя — успех в проектировании измерительной техники (термостаты могут быть тоже отнесены к измерительной технике) в значительной степени зависит именно от конструкции. Но в этом деле есть и еще одна сторона, которой мы касались часто, но как-то... бессистемно — это ошибки, неизбежно возникающие в любом измерительном устройстве. Пытаться проектировать измеритель любой физической величины, не проведя хотя бы поверхностного анализа возникающих погрешностей, совершенно бессмысленно — даже при самых мягких требованиях к точности можно основательно "залететь", зря потратив и время и деньги. Погрешностями занимается наука, носящая название метрологии. Метрологи — это не те, кто, согласно известной шутке, изучает столичное метро. Несмотря на внешнее сходство звучания, у слов "метр" и "метро" совершенно различное происхождение: метро (метрополитен) произошло от "metropolis", что значит "главный город", от названия областного центра Метрополь в римской провинции Фессалии (отсюда же, например, и "митрополит"). А метр — от греческого корня, означающего "мера" (и одновременно — "стихотворный размер"). Так что метрология — наука о том, как правильно проводить измерения. Все началось с того, что возникшая в середине прошлого тысячелетия рациональная наука поставила во главу угла принцип поверки теории экспериментом — а это возможно осуществить только в том случае, если эксперимент
воспроизводим, т. е. может быть повторен любым другим человеком (это положение еще называют принципом "верификации"). События, невоспроизводимые в принципе, к ведомству науки не относятся — об этом часто забывают, например, когда упрекают ученых в том, что они не интересуются НЛО. Основная же проблема воспроизводимости состоит в том, что ни один эксперимент не обходится без ошибок. Если мы представим себе экспериментальную систему наподобие объекта регулирования, изображенного на рис. 14.2, то кроме входов (входных воздействий), которые контролируются исследователем, на систему действует еще множество различных факторов, которые можно поделить на несколько различных групп. Так, есть незначимые факторы — те, которые нам известны, но для простоты мы их влиянием пренебрегаем (типичный пример — влияние базового тока в транзисторе на величину эмиттерного, туда же следует отнести и отклонения в свойствах реальных физических тел от идеализаций типа "абсолютно твердое тело" или "материальная точка"), есть факторы вполне значимые, но мы не можем ими управлять и часто даже их контролировать: скажем, разброс параметров электронных компонентов. В последнем случае приходится идти на всякие ухищрения, чтобы делать схемы, мало зависящие от конкретного экземпляра. А как бы все упростилось, если бы все транзисторы одного типа были бы совершенно одинаковыми! Наконец, во многих случаях играют роль и неизвестные нам факторы — содержание науки во многом состоит в том, чтобы такие факторы обнаруживать и влияние их исследовать. Во всяком случае, в любом эксперименте присутствует огромное количество неконтролируемых воздействий, которое не учитывать нельзя: это может привести к полной невоспроизводимости результатов эксперимента даже самим автором. Как же можно учитывать подобные воздействия? Тут на помощь приходит теория вероятностей — точнее, дочерняя прикладная дисциплина под названием математическая статистика. Основное предположение, которое при этом высказывается, состоит в том, что все неучтенные факторы можно рассматривать как равномерный шум, приводящий к чисто случайному разбросу значений измеряемой величины. Излишне говорить, что довольно часто это предположение не совсем соответствует действительности, но все же в большинстве практических случаев (по крайней мере, в технических приложениях) это есть неплохое приближение к истине, и применение методов математической статистики дает на удивление хорошие результаты — если только помнить, что статистика — не панацея от всех бед, а всего лишь инструмент. Статистика не может повысить точность измерения, если прибор этого не позволяет, она всего лишь дает нам сведения о том, чего мы достигли в действительности, и рекомендации, как можно использовать данный прибор
наилучшим образом. Об этом настолько часто забывают, что компетентные люди уже устали напоминать прописные истины: произвол, даже облеченный в наукообразную (или компьютеризованную) форму, все равно остается произволом; окончательное решение всегда остается за человеком и т. п. Удивительно, как самые разные слои общества от простых граждан до крупнейших бизнесменов и политиков уже которое десятилетие делают особо важную "морду лица" при словах "это рассчитано на компьютере". Как будто компьютерам известно что-то такое, чего мы, грешные, не знаем и не дано нам это узнать никогда в силу скудоумия нашего... Точность и разрешающая способность Несколько слов о том, насколько вообще целесообразно стремиться к высокой абсолютной точности измерений. Измерительные приборы характеризуются тремя основными параметрами: точностью, разрешающей способностью и стабильностью (временным дрейфом). Что такое точность, понятно интуитивно, и большая часть этой главы посвящена тому, чтобы это интуитивное понимание как-то формализовать. Разрешающая же способность (иногда говорят о чувствительности) — это попросту минимальная разница в значениях измеряемого параметра, которую мы еще можем различить. Для аналоговых приборов (стрелочных или, например, ртутных термометров) это половина самого мелкого деления шкалы, а для цифровых — единица самого младшего разряда (или тоже половина ее, что каждый раз специально оговаривается). Естественно, повышать точность сверх разрешающей способности бессмысленно — мы уже об этом говорили в главе 16 (но все же на практике, если это возможно, часто задаются точностью раза в два лучшей, чтобы перестраховаться). Стабильность (дрейф) — самый сложный для оценки параметр, для хороших приборов он измеряется в десятых-сотых долях процента в год и обусловлен, в основном, старением чувствительных элементов датчиков и компонентов схемы, о котором чаще всего никто ничего внятного сказать не может. Единственный более-менее надежный путь оценки дрейфа — поставить партию приборов на испытания на длительное время. Я берусь утверждать, что в большинстве практических случаев точное значение абсолютной величины — в определенных пределах, разумеется — не представляет особого интереса. При измерении температуры единственное исключение для бытовых приборов — точка замерзания воды, о чем мы говорили в главе 16. К тому же погрешность измерения будет в большинстве случаев определяться не возможностями прибора, а тщательностью выбора места установки датчика (о чем мы также говорили). Но обычно нам и не важно, 9 градусов на улице или 11, главное — весна, и можно снимать шубу.
Между тем, если мы очень сильно увеличим разрешающую способность по сравнению с точностью, то рискуем попасть в ситуацию, когда десятые просто будут мельтешить на дисплее, что еще хуже, чем если бы их не было вовсе — так что приходится подтягивать и точность. Те же рассуждения справедливы и для многих специальных, например, научных измерений: то, что температура на дне океана равна 1,53 градуса или 1,78 — само по себе представляет интерес только для составителей океанских таблиц. А для прочих гораздо больший интерес представляет факт, что эта температура не меняется круглый год, или наоборот — если она ползет вверх со скоростью сотая градуса в десять лет. Для того чтобы обнаружить такой дрейф, абсолютное значение само по себе знать не требуется, и в игру вступает не точность, а разрешающая способность (чувствительность) измерительного прибора и его высокая стабильность. С другой стороны, обычно нет никакого смысла конструировать суперстабильные, но неточные приборы — просто потому, что обеспечение стабильности и точности во многом взаимосвязаны, причем первое еще и существенно сложнее. Но не забывайте, что абсолютная точность зависит от тщательности градуировки и используемого эталона, а стабильность — никак. Кстати, об одном терминологическом нюансе. Точность и погрешность — величины взаимодополняющие, что совершенно ясно по смыслу терминов. Поэтому, вообще говоря, произнести что-то вроде ’’точность в пределах 1%" некорректно— тут идет речь о погрешности, а точность в данном случае выражалась бы числом 99%. Тем не менее, в повествовательной речи такое допустимо, и мы сами не раз прибегали к такому обороту просто потому, что совершенно ясно, о чем идет речь, и запутаться невозможно. Недопустимо же это, когда идет речь о написании официального документа, например, технических характеристик — тут уж выражение типа приведенного выше вызвало бы сомнения в технической грамотности составителя. И в описаниях приборов на русском языке такой ляп встретишь достаточно редко. А вот в англоязычных странах почему-то в соответствующих случаях принят термин именно "accuracy", что даже без обращения к словарю легко перевести, как точность (вместо отвечающего по смыслу "inaccuracy"). Мне задавали недоуменный вопрос по этому поводу даже носители языка — индусы, но я так и не смог разрешить это противоречие. Вероятно, дело в традиции — "accuracy", скорее всего, означает по смыслу нечто вроде нашего "класса точности" (см. далее), хотя, возможно, знатоки технического английского могут точнее разъяснить, в чем тут дело.
Систематические ошибки Ошибки измерения делятся на случайные (тот самый шум, о котором шла речь выше) и систематические. Прояснить, что такое систематическая ошибка, можно на следующем примере: предположим, мы немного изменим в схеме (см. рис. 16.3) сопротивление резистора R2. При этом у нас на определенную величину сдвинется вся шкала измерений: показания термометра будут соответствовать действительности, только если мы прибавим (или вычтем, неважно) некоторую константу к полученной величине: t = t' + 5, где t— "правильное" значение температуры (оно все же отличается от истинного значения из-за наличия случайной ошибки); f — показания термометра; 8— величина систематической ошибки из-за сдвига шкалы. Более сложный случай систематической погрешности — если мы оставим R2 в покое, а немного изменим R5, т. е. наклон характеристики термометра, или, как еще это называют, крутизну преобразования. Это равносильно тому, что мы умножаем показания на некий постоянный множитель к, и "правильное" значение будет тогда определяться по формуле: t-k-t'. С обеими видами систематической ошибки тесно связаны понятия аддитивной ("суммирующейся") и мультипликативной ("умножающейся") погрешности. Так, напряжение сдвига в ОУ (см. главу 14) есть типичный пример погрешности аддитивной: этот сдвиг при постоянном заданном коэффициенте усиления схемы есть величина постоянная и от величины сигнала не зависит. А вот неучет собственного коэффициента усиления ОУ, согласно формуле (1) из главы 14, приведет к погрешности мультипликативной: сдвиг выходного напряжения равен нулю при отсутствии сигнала на входе, но пропорционально увеличивается с возрастанием абсолютной величины сигнала. В мостике Уитстона (см. рис. 16.1) погрешность выходного сигнала моста при изменении напряжения питания носит типичный мультипликативный характер — именно поэтому от неё удается полностью избавиться, если все время держать мост в равновесии, т. е. соблюдать равенство выходного сигнала нулю. То же самое справедливо, если одновременно изменять сопротивления R2 и R3 в одинаковое количество раз. Но изменение сопротивления резйстора R1 или любого из R2 и R3 по отдельности приведет к аддитивной погрешности, которая от состояния моста — равновесное-неравновесное — не зависит, поэтому нам и приходится заботиться, чтобы они были как можно более точными. Тут мы немедленно сталкиваемся с ограничениями математических методов обработки ошибок: о систематических погрешностях математическая статистика "ничего не знает", она работает только с погрешностями случайными. Единственный способ избавиться от систематических погрешностей (кроме,
конечно, подбора прецизионных компонентов) — это процедуры калибровки и градуировки. Отличие этих способов заключается в следующем: при проведении калибровки мы меняем параметры схемы так, чтобы показания прибора соответствовали показаниям образцового средства измерения. При градуировке же мы в схеме ничего не меняем, а лишь фиксируем отклонения показаний и затем выводим зависимость "правильного" значения от сигнала на выходе прибора1. Чаще всего градуировку применяют в тех случаях, когда выходной сигнал прибора есть абстрактная электрическая величина— напряжение, сопротивление и т. п. Эта зависимость затем может быть представлена в виде градуировочной таблицы (ранее употребляли термин "тари-ровочная", но сейчас он практически вышел из употребления), которую вешают на стенку рядом с прибором, и по ней можно вручную вычислить значение измеряемой величины. Более современный способ с автоматизацией процесса вычислений — представить зависимость в виде уравнения и затем вычислять физическое значение на компьютере или с помощью встроенного в систему микроконтроллера. Тогда процедура градуировки, в конечном счете, превращается в калибровку, только не изменением параметров схемы, а исправлением соответствующих коэффициентов в программе. Случайные ошибки измерения и их оценка Я предполагаю, что читатель знаком с таким понятием, как вероятность. Если же нет— настоятельно рекомендую книгу [21], которая есть переиздание труда от 1946 г. Расширить кругозор вам поможет классический учебник [22], который отличает исключительная внятность изложения (автор его, известный математик Елена Сергеевна Вентцель, кроме научной и преподавательской деятельности, известна также как писательница под псевдонимом И. Грекова). Более конкретные сведения о приложении методов математической статистики к задачам метрологии и обработки экспериментальных данных, в том числе с использованием компьютера, вы можете найти, например, в [23,24]. Мы же остановимся на главном — расчете случайной погрешности. В основе математической статистики лежит понятие о нормальном распределении. Не следует думать, что это нечто заумное — вся теория вероятностей и матстатистика как прикладная дисциплина, в особенности, основаны на здравом смысле в большей степени, чем какой-либо другой раздел математи 1 Любопытно, что и здесь английский значительно беднее — хотя в нем есть слово graduation, но все же обычно в английском тексте и градуировка и калибровка обозначаются одним термином: calibration. Впрочем, в современных приборах, которые сплошь "интеллектуальные" и показывают сразу измеряемый параметр в натуральных величинах, понятия действительно перемешались, см. далее по тексту.
ки. Не составляет исключения и нормальный закон распределения. Представьте себе, что вы ждете автобус на остановке. Предположим, что автопарк работает честно, и надпись на табличке "интервал 15 мин." соответствует действительности. Пусть также известно, что предыдущий автобус отправился ровно в 10:00. Вопрос — во сколько отправится следующий? Как бы идеально ни работал автопарк, совершенно ясно, что ровно в 10:15 следующий автобус отправится вряд ли. Причем тут, кроме обстановки на дороге, возможных пробок или задержек из-за непредвиденных обстоятельств, имеет место одно абстрактное соображение: что означает "ровно в 10:15"? Это когда водитель переключил передачу для трогания с места? Или когда закрылись двери? Или когда автобус уже сдвинулся с места и проехал 1 мм? Чем точнее мы определяем момент события, тем меньше вероятность того, что оно произойдет именно в этот момент. В пределе вероятность того, что любое событие произойдет ровно в указанный момент, равна нулю. Это рассуждение относится не только к отечественным автобусам или даже к славящимся своей пунктуальностью японским железным дорогам — вообще к любой случайной величине. Такое кажущееся противоречие (на которое, между прочим, обращал внимание еще великий отечественный математик Колмогоров) на практике разрешается стандартным для математики способом: мы принимаем за момент события не именно момент времени в физическом смысле, а некий малый интервал времени Вероятность того, что событие произойдет в этом интервале, уже равна не нулю, а некоей конечной величине а их отношение SP/St при устремлении интервала времени к нулю равна для данного момента некоей постоянной величине, именуемой плотностью распределения вероятностей р. Такое определение совершенно аналогично определению плотности физического тела (в самом деле, масса исчезающе малого объема тела также стремится к нулю, но отношение массы к объему есть величина постоянная), и поэтому многие понятия математической статистики имеют названия, заимствованные из соответствующих разделов физики. Вернемся, однако, к нашей аналогии с автобусом. Теперь мы понимаем, что означает "ровно в 10:15", но вынуждены принять во внимание и обстановку на дордге. Автобус выехал из парка ровно по графику, но тут же был вынужден его нарушить из-за аварии на перекрестке. Потом его задержал перебегающий дорогу школьник. Потом он простоял на остановке из-за старушки с огромной клетчатой сумкой, которая застряла в дверях. Означает ли это, что автобус всегда только опаздывает? Отнюдь, у водителя есть план, и он заинтересован в том, чтобы двигаться побыстрее, поэтому он может кое-где и опережать график, не гнушаясь иногда и нарушением правил движения (благо "гаишники" не имеют права задерживать общественный транспорт).
Потому правильно сформулированный вопрос звучал бы так: каково распределение плотности вероятностей во времени? Зная эту закономерность, мы можем всегда сказать, какова вероятность того, что автобус отправится в определенный промежуток времени. Интуитивно форму кривой распределения плотности вероятностей определить несложно. Существует ли вероятность того, что автобус отправится, к примеру, позже 10:30 или, наоборот, даже раньше предыдущего автобуса? А почему нет— подобные ситуации в реальности представить себе очень легко. Однако ясно, что эта вероятность меньше, чем вероятность прихода "около 10:15". Чем дальше в обе стороны мы удаляемся от этого центрального наиболее вероятного срока, тем меньше плотность вероятности, пока она не станет практически равной нулю (то, что автобус задержится на сутки — событие невероятное, скорее всего, это будет уже совсем другой автобус). То есть распределение плотностей вероятностей должно иметь вид некоей колоколообразной кривой. В теории вероятностей доказывается, что при некоторых предположениях относительно вероятности конкретных исходов нашего события, эта кривая будет иметь совершенно определенный вид, который называется нормальным распределением вероятностей или распределением Гаусса. Вид кривой плотности нормального распределения и соответствующая формула показаны на рис. 17.1. (х-и)2 Р(х) = —у=-е 2<jZ суп Рис. 17.1. Плотность нормального распределения вероятностей
Ниже мы поясним смысл отдельных параметров в этой формуле, а пока ответим на вопрос: действительно ли реальные события, в частности, интересующие нас ошибки измерения, всегда имеют нормальное распределение? Строгого ответа на этот вопрос в общем случае нет, и вот по какой причине. Математики имеют дело с абстракциями, считая, что мы уже имеем сколь угодно большой набор отдельных реализаций события (в случае с автобусом это была бы бесконечная таблица пар значений "плотность вероятности — время"). В реальной жизни такой ряд невозможно получить не только потому, что для этого потребовалось бы бесконечно долго стоять около остановки и отмечать моменты отправления, но и потому, что стройная картина непрерывного ряда реализаций одного события (прихода конкретного автобуса) будет, в конце концов, нарушена совершенно не относящимися к делу вещами: маршрут могут отменить, остановку перенести, автопарк обанкротится, не выдержав конкуренции с маршрутными такси... да мало ли что может произойти такое, после чего станет бессмысленным само определение события. Однако все же интуитивно понятно, что, пока автобус ходит, какое-то, пусть теоретическое, распределение имеется. Где оно имеется? Да там же, где все остальные математические абстракции, скажем, числа или фигуры — видимо, в некоем идеальном мире (мы еще будем говорить об этом "платоновском мире идей", когда перейдем к системам счисления в главе 19). Такой идеальный бесконечный набор реализаций данного события носит название генеральной совокупности. Именно генеральная совокупность при некоторых условиях имеет, в частности, нормальное распределение. В реальности же мы имеем дело с выборкой из этой генеральной совокупности. Причем одна из важнейших задач, решаемых в математической статистике, состоит в том, чтобы, имея на руках две разных выборки, доказать, что они принадлежат одной и той же генеральной совокупности — проще говоря, что перед нами есть реализации одного и того же события. Другая задача состоит в том, чтобы по выборке определить вид кривой распределения и ее параметры. На свете сколько угодно случайных событий и процессов, имеющих распределение, совершенно отличное от нормального, однако считается, что в интересующей нас области ошибок измерений все распределения нормальные, и мы в дальнейшем будем говорить только о них2. Полученные опытным путем характеристики распределения называются оценками параметров, и естественно, что они будут соответствовать "настоящим" значениям с некоторой долей 2 На самом деле утверждение о нормальности распределения для ошибок измерений не совсем голословное и отчасти доказывается с помощью так называемой центральной предельной теоремы, однако, все же предположений при этом делается столько, что правильнее будет говорить о многовековом опыте, обосновывающем данную гипотезу. Ничего в этом страшного нет — в конце концов, закон сохранения энергии тоже всего лишь предположение, которому, однако, до сих пор не найдено ни одного опровергающего факта.
вероятности — наша задача и состоит в том, чтобы определить интервал, в котором могут находиться отклонения оценок от "истинного" значения и соответствующую ему вероятность. Но настало время все же пояснить — что же это за параметры? В формуле на рис. 17.1 таких параметров два — величины цио. Они называется моментами нормального распределения. Параметр ц называется математическим ожиданием (или моментом распределения первого порядка), а величина а— средним квадратическим отклонением. Чаще употребляют его квадрат, обозначаемый как D или просто а2, и носящий название дисперсии (или момента второго порядка). Математическое ожидание есть абсцисса максимума кривой нормального распределения (в нашей аналогии с автобусом это время 10:15), а дисперсия, как видно из рис. 17.1, характеризует "размытие" кривой относительно этого максимума — чем больше дисперсия, тем положе кривая. Эти моменты имеют прозрачный физический смысл (вспомните аналогию с физическим распределением плотностей): математическое ожидание есть аналогия центра масс некоего тела, а дисперсия характеризует распределение масс относительно этого центра3. Оценкой тх математического ожидания Ц служит хорошо знакомое нам со школы среднее арифметическое: (1) п Здесь п — число измерений; i — текущий номер измерения (г = 1..п); х, — значение измеряемой величины в г-м случае. Оценка s2 дисперсии а2 вычисляется по формуле: s2= ~~wx)2 (2) Оценка среднеквадратического отклонения, соответственно, будет: s= 4^ (3) Здесь (%, - тх) — отклонения конкретных измерений от ранее вычисленного среднего. Следует особо обратить внимание, что сумму квадратов отклоне 3 Кроме математического ожидания, средние значения распределения вероятностей характеризуют еще величинами, называемыми модой и медианой. В случае нормального распределения все три величины совпадают, но в других случаях они могут оказаться полезными: именно мода есть абсцисса наивероятнейшего значения (т. е. максимума на кривой распределения, что полностью отвечает бытовому понятию о моде), а медиана есть геометрическая середина отрезка на оси абсцисс, представляющего интервал, в который укладываются все возможные значения случайной величины — для нормального распределения этот интервал бесконечен).
ний делить следует именно на (и - 1), а не на п, как может показаться на первый взгляд, иначе оценка получится смещенной. Второе, на что следует обратить внимание, — то, что разброс относительно среднего характеризует именно среднеквадратическое отклонение, вычисленное по формулам (2) и (3), а не среднее арифметическое, как рекомендуют в некоторых школьных справочниках — последнее дает заниженную и смещенную оценку (не напоминает ли вам это аналогию со средним арифметическим и действующим значениями переменного напряжения?). Кроме того, очень важный момент при расчете по формулам (1) и (2) заключается в том, что все измерения должны представлять собой единую серию: нельзя снимать показания целый день, вечером вычислить среднее значение, потом прийти на следующий день и прибавлять к этому среднему новые результаты — среднее вычисляется по всей серии за один прием. Это легко показать на числовом примере. Допустим, мы имеет две группы измерений одной величины: 1, 2, 3, 3 и 2, 3, 1, 1. Среднее арифметическое (правильное) по всем 8-ми измерениям будет равно 2. Однако если мы вычислим среднее по первой группе из 4-х измерений (2,25), затем начнем прибавлять к нему результаты второй группы, считая среднее из первой группы за одно измерение, то получим откровенную чушь: 1,85. То же самое относится к вычислению оценки дисперсии и даже в еще большей степени: если мы вычислим средние для двух групп отдельно, затем сложим их и поделим на 2, то получим правильный результат, а вот для дисперсии такой фокус не пройдет — из-за наличия в знаменателе величины (п - 1), а не п. В принципе этими формулами для расчета случайных погрешностей можно было бы ограничиться, если бы не один важный вопрос: оценки-то мы получили, а вот в какой степени они отвечают действительности? Правильно сформулированный вопрос будет звучать так: какова вероятность того, что среднее арифметическое отклоняется от "истинного" значения (т. е. математического ожидания — мы упрямо считаем, что последнее где-то существует "на самом деле") не более, чем на некоторою величину 5 (например, на величину оценки среднего квадратического отклонения 5)? Величина 5 носит название доверительного интервала, а соответствующая вероятность — доверительной вероятности (или надежности). Обычно решают задачу, противоположную сформулированной: задаются величиной надежности и вычисляют доверительный интервал 5. В технике принято задаваться величиной надежности 95%, в более критичных случаях— 99% (большей величиной задаются только в очень уж серьезных случаях). Простейшее правило для обычных измерений в этом случае таково: при условии достаточно большого числа измерений (практически более 10—20) доверительной вероятности в 95% соответствует доверительный интервал в 2s, а доверительной вероятности в 99% — доверительный интервал в 3s
(известное правило "трех сигма", согласно которому за пределы утроенного квадратического отклонения не выйдет ни один результат измерения). Если же число измерений мало или нужно все подсчитать точнее, то приходится обращаться к критерию Стьюдента — мы здесь не будем в это углубляться, потому что методика эта описана в любом пособии по матстатистике. Если же мы не поленимся провести не менее полутора десятков отдельных измерений величины х, то с чистой совестью можем записать, что результат будет равен: х = т + 2s. Регрессия Все сказанное относилось к случаю, когда мы измеряем одну величину, имеющую некоторую случайную погрешность. Однако на практике нам часто требуется по экспериментальным данным получить оценку некоторой функции у(х) — фактически это задача построения кривой по результатам опытных данных, которую вам, несомненно, приходилось не раз решать, если вы обучались в техническом вузе. Провести кривую, аппроксимирующую4 опытные данные, можно от руки на миллиметровке, но как решать такую задачу "правильно"? Причем, как и в предыдущем случае, желательно бы иметь возможность оценить погрешности измерений. Принцип такого построения иллюстрирует рис. 17.2. Разумно было бы проводить кривую (в данном случае — прямую) так, чтобы отклонения Ду, были бы минимальными (все сразу). Однако просто минимизировать сумму отклонений не получится — они имеют разный знак, и минимум получился бы при очень больших отрицательных отклонениях. Можно минимизировать сумму абсолютных значений отклонений, однако это неудобно по ряду чисто математических причин, поэтому используют уже знакомую нам сумму квадратов отклонений — только ранее это было отклонение от среднего арифметиче 4 Процесс проведения кривой через какие-либо точки (расчетные или экспериментальные) в общем случае называется аппроксимацией, но когда речь идет о данных со случайными ошибками, употребляют термин "регрессия". Аппроксимацию следует отличать от интерполяции (когда по совокупности имеющихся значений функции и переменных рассчитывают значение функции в некоторой точке между ними) и экстраполяции (когда рассчитывают значения функции вне области, охваченной имеющимися значениями, в предположении, что там кривая ведет себя так же). Насчет последней операции следует отметить, что полиномы, полученные регрессионным способом (см. далее по тексту), за исключением разве что прямой линии, обычно для проведения экстраполяции не годятся, т. к. не несут в себе физического смысла, и вне экспериментальной области могут очень сильно расходиться с реальной картиной. Это легко проверить, если добавить одну-две точки на краю диапазона к уже имеющимся: коэффициенты полинома, особенно высокого порядка, могут измениться кардинально.
ского одной величины х, а теперь это отклонение опытных данных от кривой у(х'): W => min • Такой метод называется методом наименьших квадратов. Рис. 17.2. Проведение аппроксимирующей прямой по экспериментальным данным Кстати, а какую именно кривую выбрать? Ведь кривые бывают разные — прямая, парабола, экспонента, синусоида... Опыт показывает, что на практике можно ограничиться полиномом, соответствующим разложению функции в ряд Тейлора (в математике доказывается, что любую другую непрерывную функцию всегда можно представить в виде такого ряда): у = ао 4- арс + а2х2 4- аух3 4- ... (4) Это уравнение называется уравнением регрессии. Отметим, что здесь мы разбираем наипростейший случай — зависимость у от одного параметра х. В общем случае независимых переменных может быть несколько, но для наших целей простейшего случая достаточно (в принципе многопараметрическая задача может быть сведена к нескольким однопараметрическим, но в любом случае принцип при переходе к большему числу переменных не меняется). Итак, в качестве исходных данных у нас имеется некий набор значений х, в количестве п штук5. Надо провести кривую, соответствующую уравнению (4), так, чтобы сумма квадратов отклонений была минимальна: А?/2 = Sn(yi “ - a\xi - a2x2...)2 => min. (5) 5 „ .... Отметим, что величины x, считаются неслучайными — если в каждой z-ои точке проводится несколько измерений, то надо брать среднее. Случайными же считаются только величины у.
Какой степени полином должен быть? Из элементарной геометрии известно, что через две точки можно провести прямую (полином первой степени), через три — параболу (второй степени) и т. д., т. е. максимально возможная степень полинома на единицу меньше, чем число экспериментальных данных. Однако через две точки можно провести только одну прямую, и мы никогда не сможем оценить погрешностей, т. е. узнать, насколько наша прямая отличается от того, что имеет место в действительности. Поэтому чем избыток точек больше, тем лучше (в идеале — на те же 10—20 точек, но на практике можно обойтись и 3—5). Оптимальную же степень определяют так: строят несколько полиномов разной степени и смотрят на среднеквадратическое отклонение. Когда оно с увеличением степени полинома перестанет уменьшаться (или это уменьшение незначительно), то нужная степень достигнута. Я не буду здесь вдаваться в подробности реализации метода наименьших квадратов — это бессмысленно, т. к. его обычно реализуют в виде готовой программы. При необходимости все подробности вы легко найдете в указанных и других пособиях, я же изложу только общую идею: в уравнении (4) у нас у и х есть величины известные, а в качестве неизвестных выступают коэффициенты а,-. Поэтому записывают сумму квадратов отклонений (5), а затем в соответствии с правилом нахождения минимума приравнивают нулю частные производные этой суммы по каждому из коэффициентов. Полученная система уравнений (они называются "нормальными") относительно коэффициентов решается обычными алгебраическими методами с помощью определителей. Результирующий полином есть некоторая аналогия математического ожидания. Потом вычисляют дисперсию и среднеквадратическое отклонение (СКО) от полинома по обычным формулам (2) и (3). Для СКО действуют те же правила с доверительными вероятностями, что и в обычном случае, только доверительный интервал здесь — не отрезок на прямой, а некий коридор значений, окружающий нашу экспериментальную кривую. Следует предостеречь вот от чего: в некоторых пакетах статистики используется иной метод определения коэффициентов экспериментального полинома, основанный на методе их подбора (когда-то метод наименьших квадратов реализовывался вручную похожим способом). В самом деле — зачем возиться с матрицами и определителями, если вычислительные мощности все равно простаивают? Так что зададимся некоторыми ("от фонаря") значениями коэффициентов и начнем их менять случайным образом, каждый раз отбрасывая те значения, которые увеличивают сумму квадратов, и фиксируя те, что уменьшают. После некоторого количества (до нескольких сотен) таких итераций мы, по идее, придем к наилучшему полиному. Я не специалист в математике и не могу объяснить, что именно в этом методе "не так" (скорее
всего — плохи конкретные реализации, с которыми я сталкивался), однако во всех случаях результаты были хуже, чем полученные строгим методом с решением системы нормальных уравнений. Поэтому я бы посоветовал использовать только те пакеты, которые основаны на корректной процедуре регрессии. Классы точности и расчет погрешностей нашего образцового термометра Точность, достигаемая в процессе калибровки или градуировки, не может превысить точность применяемого образцового средства— на самом деле она, как минимум, в два раза хуже. Эта величина будет пояснена далее, а здесь мы заметим, что в измерениях по схеме рис. 16.2 нас несколько спасает тот факт, что в окончательную формулу входят не абсолютные значения сопротивлений плеч магазина, а их отношение, что вносит погрешность меньшую, чем та, которая определяется классом точности прибора для абсолютных значений (см. расчеты далее). В предположении, что чувствительность индикатора равновесия моста (в нашем случае — мультиметра) обеспечивает погрешность, много меньшую, чем остальные средства (если помните, мы специально увеличивали чувствительность сверх необходимой), класс точности нашего образцового термометра будет определяться классами термометра, резистора и магазина. Но для того чтобы подсчитать класс точности, надо сначала понять — а что это такое? Мы в предыдущих главах часто употребляли понятие погрешности, приводя его то в процентах, то в абсолютных величинах. Систематизируем эти представления и определим следующие три вида погрешностей: □ абсолютная погрешность (в единицах измеряемой величины); □ относительная погрешность (абсолютная, но выраженная в процентах от значения измеряемой величины); □ относительная приведенная погрешность (абсолютная, но выраженная в процентах либо от всего диапазона измерений, либо от номинального значения измеряемого параметра). Последняя величина и есть класс точности6. Поясним на примере: платиновый 100-омный термометр сопротивления с классом точности 0,01 имеет относительную приведенную погрешность O,Q1% от номинального значения 100 Ом, это означает, что его абсолютная ошибка составит 0,01 Ом (во всем 6 Формально это не совсем так: класс точности есть величина стандартизированная, и величины классов могут принимать только значения из ряда, определяемого стандартом, например 1,0; 0,75; 0,5; 0,25; 0,1 и т. п.
диапазоне). Относительная (не приведенная) погрешность будет при нуле градусов также 0,01%, а если температура будет равна -50°, то сопротивление термометра станет равным примерно 80 Ом, и относительная погрешность при этой температуре будет выше: 0,0125%. При определении относительной приведенной погрешности учитывают все ошибки (их абсолютные значения): и случайную7, и аддитивную, и мультипликативную погрешности. Причем в последнем случае за величину погрешности принимают значение мультипликативной погрешности в конце шкалы — ведь она зависит от измеряемой величины. Отсюда видно, что если мультипликативная погрешность доминирует, то выгоднее как можно больше "ужимать" диапазон измеряемых значений. С другой стороны, аддитивная и случайная погрешности от диапазона не зависят, и уменьшение его приведет к тому, что их вклад увеличится — в частности, именно поэтому мы старались в схеме на рис. 16.3 "раздуть" выходное напряжение ОУ до максимума. Итак, каков же будет класс точности нашего образцового термометра? Предположим, что мы используем резистор R1 с точностью 0,02% (абсолютная ошибка А/? = 0,2 Ом, т. е. 0,02% от номинала в 1 кОм), термометр сопротивления с классом 0,05 (A/?t = 0,05 Ом) и магазин также с классом 0,05. Допустим, что магазин добавляет нам ошибку на каждое из плеч, пропорциональную их сопротивлению, т. е. общая ошибка, определяемая классом точности магазина, делится между ними (А/?х = 0,5 • Rx/Rm Ом). Просто суммировать все эти значения было бы неправильно — мы получили бы сильно завышенное значение погрешности. Правильную величину мы получим из следующих соображений: пусть все наши компоненты одновременно изменились на величину их погрешности. Тогда расчетная формула будет выглядеть так (ошибки подставляются здесь в абсолютном значении): Rt = 0,05 + (R1 + 0,2) • (Rx + 0,5Rx/Rm)/[(Rm + 0,5) - (Rx + 0,5Ях/Ям)] Ом. Проще всего подсчитать результат в числах: пусть имеется в виду случай, когда температура равна ровно 0° (можно показать, что при других температурах в реальном диапазоне рассчитанные значения будут отличаться мало), тогда Rt номинально равно 100 Ом, отсюда Rx = 90,9 Ом (оставшаяся часть магазина будет 909 Ом, их отношение 1/10). Тогда получим: Rt = 0,05 + 1000,2 • (90,9 + 0,5 • 0,1)/[ 1000,5 - (90,9 + 0,5 • 0,1)] = 100,064 Ом. То есть ошибка будет составлять 0,064 Ом, что составит в пересчете на температуру 0,16°. Довольно приличная точность, хотя для наших целей недос 7 Все виды погрешностей включают в себя систематическую — за счет неточностей средств измерения — и случайную погрешность. Однако в рассуждениях, приведенных далее, случайную составляющую мы формально не учитываем — просто потому, что ее можно установить только на основе эксперимента, и в рассмотренном случае у нас нет данных.
таточная — мы же хотели обеспечить возможность градуировки приборов до 0,1°. Относительная приведенная погрешность в диапазоне от -2 до 98° (соответствующем возможному диапазону термостата) составит 0,16%. Не забудьте, что мы еще не учли случайную составляющую (за счет, например, шумов), что можно сделать только экспериментальным путем (см. сноску на предыдущей странице), так что спокойно можно было бы волюнтаристски увеличить погрешность, скажем, до 0,2°, не слишком ошибившись. Заметим, что это максимальная ошибка: в реальности может случиться даже, что все ошибки будут иметь такие знаки и величины, что скомпенсируют друг друга, и наш прибор покажет совершенно точное значение сопротивления. На практике такое совпадение, конечно, нереально, но можно показать, что наиболее вероятное значение ошибки составит половину от максимальной — 0,08°. Но метрология всяких таких вольностей не терпит — ведь мы никогда не сможем узнать, как обстоит дело в реальности. Для того чтобы увеличить класс нашего прибора, можно пойти несколькими путями: во-первых, повысить классы применяемых образцовых средств. Если увеличить их до предела, взяв наиболее дорогие компоненты с классами не хуже 0,01, то мы можем снизить ошибку раза в три — уже что-то! Другой (или параллельный первому) путь — оптимизировать схему так, чтобы использовать магазин и резистор с наименьшими возможными абсолютными значениями. Так как ток через образцовый термометр ограничен (обычно 2—5 мА), то на таком пути нет другого выхода, кроме как снижать напряжение питания, при этом на выходе придется использовать вместо обычного мультиметра что-то более приличное — скажем, чувствительный аналоговый гальванометр с зеркальной шкалой. Снизив сопротивления R1 и магазина до 100 Ом8, мы получим даже с указанными выше классами точности ошибку также примерно в три раза меньше — уже что-то! Однако кардинальным решением будет калибровка (или градуировка) прибора по образцовому эталону классом заведомо выше — при этом также не исключается применение всех остальных мер, ведь калибровка может дать неудовлетворительный результат. Природу не обманешь: иерархическая система эталонов, о которой говорилось в главе 16, придумана не зря! Причем проведение такой операции является значительно более дешевым способом убедиться в том, что ваш прибор показывает то, что надо, чем "догонять" класс используемых компонентов до предельных значений. Вопрос только в одном: иметь доступ к соответствующему оборудованию. Но эту проблему, как Говорится, каждый решает для себя самостоятельно. 8 Имейте при этом в виду, что прецизионные резисторы типов С5-54В или С5-61 с допуском 0,05% и лучше с такими маленькими номиналами вообще не выпускаются.
Доверительный интервал поверяемого средства Доверительный интервал эталона / Ось значений Значение эталона Истинное измеряемой величины (наихудший случай) значение Рис. 17.3. Погрешности поверяемого прибора и образцового средства измерения Кстати, мы обещали ответить на вопрос, почему погрешности образцового средства должны составлять не более чем половину от желаемых погрешностей поверяемого прибора. Понять это можно, например, из рис. 17.3. Если бы установленное значение образцового средства всегда совпадало с истинным, можно было бы потребовать равенства погрешностей. Однако реально установленное значение может оказаться и на краю 95%-го доверительного интервала. Тогда 95%-ный доверительный интервал поверяемого прибора, который ровно в два раза больше, займет положение, показанное на рисунке. Как мы видим, в него полностью включается доверительный интервал эталона (напомним, что истинное значение величины нам неизвестно), и при любом количестве точек градуировки мы никогда не выйдем за пределы допустимого интервала для поверяемого прибора. Разумеется, в этом рассуждении много слабых мест — но никто и не возражает против того, чтобы эталонное средство было как можно более точным. Просто в реальных условиях надо было выработать какой-то разумный критерий — вот он и перед вами. Способы снижения погрешностей аналоговых схем Предположим, мы все сделали классно и откалибровали наш датчик по самому образцовому эталону. Однако мы производили измерения при комнатной температуре, а что будет при ее изменении? В критичных случаях проводят специальные климатические испытания — т. е. градуируют схему при разных температурах, а затем учитывают это при определении "правильного" значения выходной величины. Этот путь довольно сложен — для автоматического учета, во-первых, нужно параллельно вводить схему измерения температуры самой платы (пусть даже она и не должна быть особо точной), во-вторых, где-то надо производить соответствующие расчеты, которые могут быть достаточно громоздкими (т. е. нужен, как минимум, контроллер с соот ветствующей программой). В особых случаях схему даже термостатируют
(как, например, кварцевые генераторы в эталонах времени и частоты), но обычно это лобовое решение чересчур громоздко и неэкономично. Иногда стабильность работы схемы при разных температурах можно обеспечить аналоговой компенсацией — именно так мы советовали поступать для УМЗЧ в главе 9, когда рекомендовали приклеивать диоды смещения выходного каскада к радиатору выходных транзисторов. Для простых схем, таких как измерительные мосты (например, тензомосты для измерения давления или деформации) такой способ иногда применяют еще в процессе изготовления — датчик при этом называется термокомпенсированным. Для более сложных случаев приходится вводить компенсацию в процессе разработки. Здесь очень помогает мостовая схема, придуманная Уитстоном: в самом деле, если все сопротивления моста имеют одинаковый температурный коэффициент, то в случае равновесия (и только в этом случае!) это никак не скажется на результатах. При разбалансе же температурная ошибка будет носить мультипликативный характер: чем больше разбаланс, тем она выше. Если ограничиться небольшими выходными сигналами, то можно значительно снизить влияние температуры: в R/AR раз, где R — номинальное сопротивление резистора моста, a AR— его изменение. Повторим, что это справедливо только для случая строгой одинаковости температурных коэффициентов резисторов — на практике такое бывает редко. Можно попробовать индивидуально подкорректировать температурный коэффициент, устанавливая всякие термозависимые компоненты параллельно резисторам моста (не очень хороший путь) или в обратные связи усилителей (значительно лучше). Есть и еще одна составляющая погрешности — нестабильность напряжения питания. У всех стабилизаторов конечны и выходное сопротивление, и коэффициент стабилизации, поэтому при изменении входного напряжения, а также сопротивления нагрузки, напряжение на выходе будет в той или иной степени "гулять". В случае сбалансированного моста на это наплевать, но в большинстве случаев автоматические измерения все же производятся при неравновесном состоянии моста — обеспечить автоматизированную балансировку очень сложно. Есть простой метод, позволяющий значительно — в десятки раз — снизить влияние изменений напряжения питания, но при одном условии: если датчик питается от того же источника. Как это делается? Предположим, схема состоит из двух основных узлов: измерительного полумоста (т. е. обычного делителя, включающего резистивный датчик) и аналого-цифрового преобразователя (АЦП). Между ними часто включается усилитель, но он выполняет лишь масштабирующие функции, поэтому не влияет на работу схемы. АЦП мы будем разбирать в главах 25 и 26, а здесь нам важно только то, что диапазон значений выходной величины у АЦП задается
с помощью опорного напряжения. Так вот, если запитать измерительный полумост и вход опорного напряжения АЦП от одного источника питания, легко понять, что вместе с изменением напряжения питания величины на их выходах будут изменяться пропорционально друг другу, так что общий коэффициент преобразования, равный отношению выходного диапазона ко входному, останется постоянным. Такие измерения называются относительными или логометрическими. Если же источник входного напряжения и АПЦ запитать от отдельных источников — условия нарушатся, и тогда нужно все хорошо стабилизировать, то же самое будет, если вместо АЦП поставить отдельный показывающий прибор с собственным коэффициентом преобразования — вроде стрелочного прибора на рис. 16.3. Более того, принцип относительности измерений сохранится, если мы используем вместо полумоста обычный полный мост (типа моста Уитстона) с дифференциальным выходом. Хотя, как мы говорили раньше, у него погрешность от изменения питания носит мультипликативный характер, но и в делителе для формирования опорного напряжения АЦП погрешность тоже мультипликативная (если принимать за выходную величину делителя само значение опорного напряжения). Проще говоря, когда мост сбалансирован и сигнал вместе с его погрешностью равен нулю, то и результат преобразования равен нулю независимо от значения опорного напряжения со всеми его изменениями. Когда же баланс нарушается, то погрешность вместе с выходным напряжением растет, но в процентах от его величины она такая же, как и погрешность опорного делителя в процентах от величины опорного напряжения, поэтому они компенсируют друг друга. А вот любая погрешность, которая не одинакова для обоих напряжений, здесь фатальна. Так что прецизионные резисторы приходится ставить. На всякий случай— во избежание иных ошибок— следует все же и стабилизировать напряжение питания, тем более что решение этой проблемы в современных условиях не представляет особых трудностей.
Глава 18 На пороге цифрового века. Математическая логика и ее представление в технических устройствах Нива засеяна, и нам нечего опасаться, что часть семян упала на камень или рассеялась по дороге и что птицы небесные поклюют остальную часть. А. Дюма, "Три мушкетера" Все началось, конечно, с Аристотеля, который жил в IV веке до нашей эры. Когда читаешь вступление к любой популярной книге, посвященной чему угодно — от изящных искусств до биологии, химии, физики и математики — возникает впечатление, что Аристотель был каким-то сверхчеловеком. В самом деле, гении встречаются, но нельзя же быть гением настолько, чтобы разработать основы вообще всего, на чем зиждется современная цивилизация! Тем не менее, и авторы не врут, и Аристотель сверхчеловеком не был — тут сыграли роль несколько обстоятельств. Во-первых, знаний было тогда накоплено еще не очень много, и обозреть их все — задача вполне посильная для человека острого ума и выдающихся способностей, каким Аристотель, несомненно, был. Во-вторых, он работал не один, его метод — коллективный мозговой штурм, это просто история донесла до нас только его имя. Но главное, пожалуй, в другом: древние рассматривали упомянутые нами дисциплины во взаимосвязи. Аристотель четко разделил только науку и ремесла ("техно" по-гречески), наука же делились на практические (этику и политику) и теоретические (физику и логику) дисциплины, но они рассматривались как составные части единой науки. В чем древние, конечно, были более правы, чем мы, поделившие области человеческой деятельности на множество якобы автономных разделов. И главной составной частью науки считалась именно логика— искусство рассуждения. Вот она-то и послужила той основой, из которой выросла цифровая техника и все многообразие информационных технологий, которые окружают нас теперь на каждом шагу. Раз уж мы заговорили на философские темы, уместно сделать одно замечание. Дело в том, что почти все "обычные" достижения технологического века
(паровой двигатель, телеграф, телефон, самолет, телевизор, автомобиль и т. п.) в некотором смысле изобретать было не надо — идеи передачи речи или изображения на расстояние (волшебное зеркальце) или передвижения с большой скоростью по воздуху (ковер-самолет) были выдвинуты задолго даже до Аристотеля. Нужно было придумать только способы технического воплощения этих идей, что, по классификации Аристотеля, относится к ремеслу, "техно", но не к науке. А вот никаких таких "компьютеров" не существовало и в помине — в некотором смысле, это единственное действительно "настоящее" изобретение, основанное на чисто идеальных предпосылках, в материальном мире никаких аналогов не имевших — кроме, конечно, самого человеческого разума. Чтобы особенно не углубляться в историю, а поскорее перейти к современным делам, мы аристотелевские силлогизмы рассматривать не будем, заметим только, что выдвинутые им законы логики, которые с его лихой подачи стали идентифицироваться с законами мышления вообще, неоднократно пытались привести в математическую форму. Некто Луллий в XIII веке попытался даже механизировать процесс логических рассуждений, построив "Всеобщий решатель задач" (несомненно, это была первая попытка построения "думающей машины"). Затем этим делом — формализацией логики — занимался Лейбниц и, в конце концов, все сошлось в двух работах английского математика Джорджа Буля, который жил и работал уже в середине XIX века. Любопытно название второй из этих работ— "Исследование законов мышления", первая же работа называлась поскромнее, но без "мышления" и тут не обошлось — в названии фигурировало слово "рассуждения". То есть и сам Буль, и еще почти сто лет после него, до 30-х годов XX века, и все его предшественники в течение двух с большим лишком тысяч лет, прошедших со времен Аристотеля — никто так и не усомнился, что в основе мышления лежит именно та логика, которая называется "аристотелевой". И лишь в XX веке, после работ Геделя и Тьюринга и особенно в связи с благополучно провалившимися (как и у Луллия за 700 лет до того) попытками создания "искусственного интеллекта", до ученых, наконец, начало доходить, что мышление вовсе не имеет логической природы, а логика есть лишь удобный способ сделать свои рассуждения доступными окружающим, т. е. перевести их в вербальную форму. Но для нашего повествования это лишь побочное следствие развития математической логики — главное оказалось совсем не там, где его видели Лейбниц и Буль. Главное обнаружил в своей магистерской диссертации от 1940 г. великий Клод Шеннон — оказалось, что булевские законы в точности совпадают с принципами функционирования релейных электрических схем. Что самое поразительное— все компоненты, необходимые для моделирования
На пороге цифрового века. Математическая логика и ее представление...297 законов логики с помощью электрических устройств (реле, выключатели), были известны еще до опубликования Булем своих работ, но в течение еще почти ста лет никто не обращал на это внимания (Шеннон скромно утверждал, что случилось так, что до него просто никто не владел математикой и электротехникой одновременно). Не обратил на это внимание даже Чарльз Бэббидж, сконструировавший еще задолго до работ Буля механическую вычислительную ("аналитическую") машину — а ведь был знаком и с самим Булем и с его работами! Но довольно истории, перейдем к практике. Рис. 18.1. Клод Элвуд Шеннон (Claude Elwood Shannon), 1916—2001. Фото Lucent Technologies Inc./Bell Labs Основные операции алгебры Буля Булевская алгебра имеет дело с абстрактными логическими переменными. Эти переменные можно интерпретировать по-разному, но интерпретацию мы пока отложим (далее мы найдем адекватное нашим целям и математическое, и техническое представление булевских переменных). Важно, что для этих переменных (операндов) определены некоторые операции, подчиняющиеся определенным правилам: операция логического сложения двух операндов (операция объединения, операция ИЛИ или OR, обозначается обычным знаком сложения), операция логического умножения двух операндов (операция
пересечения, операция И или AND, мы будем обозначать ее крестиком, чтобы отличить от обычного умножения)1 и операция отрицания для одного операнда (операция НЕ или NOT, обозначается черточкой над символом операнда). Остальные операции могут быть выведены из сочетания этих трех основных. Любая конкретная интерпретация булевских операндов — математическая или техническая — должна отвечать этим установленным правилам. Например, оказалось, что им отвечают множества (отсюда названия операций "пересечение" и "объединение"). Но нас множества интересуют мало, поэтому мы найдем другую интерпретацию, следует только отчетливо понимать, что сути дела это не меняет: операция пересечения множеств совершенно адекватна операции И с логическими переменными или соответствующей манипуляции с выключателями в электрической сети (это попросту одна и та же операция). В булевской алгебре многое совпадает с обычной (например, правила типа А + В = В + А; или А + (В + С) = (А + В) + С), но для нас важны как раз отличия. Вот они: А +А =А (а не 2Л, как было бы в обычной алгебре), а также А хА =А (а не А2). Последнее уравнение в обычной алгебре, впрочем, имело бы решение, причем сразу два: 0 и 1.Таким путем обычно и переходят к интерпретации булевских операндов как логических переменных, которые могут иметь только два состояния: 1 и 0 или "правда" (True) и "ложь" (False). Тогда мы действительно можем с помощью определенных выше действий записывать некоторые высказывания в виде уравнений и вычислять их значения, что дает иллюзию формального воспроизведения процесса мышления. Но сначала надо определить, как и в обычной алгебре, правила, которым подчиняются операции — т. е. таблицу логического сложения и таблицу логического умножения. Они таковы: 0 + 0 = 0 0x0 = 0 0+1 = 1 0x1=0 1+0=1 1x0 = 0 1 + 1 = 1 1X1 = 1 Операция отрицания НЕ, понятно, меняет 1 на 0, и наоборот. Примеры записи логических выражений обычно приводят для каких-нибудь бытовых высказываний (типичный пример см. в эпиграфе), но мы поступим нетрадиционно: приведем пример из области математики. Пусть высказывание состоит в следующем: "х меньше нуля или х больше 1 и у меньше 2". 1 В математике операция сложения (дизъюнкция) обозначается знаком v, а умножения (конъ-лонкция) — л, но мы не будем их применять, т. к. запомнить, что есть что, тут непросто. Кроме того, операция умножения часто обозначается знаком &, и это обозначение нам встретится, когда мы перейдем к микросхемам.
Как записать это высказывание? Введем следующие логические переменные: А = (х < 0); В = (х > 1); С = (у < 2). Как мы видим, все они могут принимать только два значения — "правда" (если условие выполняется) и "ложь" (если не выполняется). Обозначим значение всего выражения через D. Тогда высказывание записывается так: D = (A+B)xC(X) Можно записать и так: D = (AHJMB)¥LC Или так: D = (A OR В) AND С Или, наконец, так: D = ((х < 0) OR (х > 1)) AND (у < 2) Последняя запись, заметим в скобках, хорошо знакома всем, кто изучал язык программирования Pascal. Пусть х = 0,5, у = 1. Чему будет равно D в этом случае? Очевидно, что выражение (А + В) примет значение "ложь" (или 0), т. к. х не удовлетворяет ни одному из условий А и В. А переменная С примет значение "правда" (или 1), но результату это уже не поможет, т. к. произведение 0 на 1, согласно таблице логического умножения, равно 0. То есть D в данном случае есть "ложь". Если же принять значение х = -0,5, то D примет значение "правда". Интересный оборот примут события, если вместо OR между А и В подставить AND — легко догадаться, что выражение в скобках тогда не выполнится ни при каком значении х, т. к. условия "х меньше 0" и "х больше 1" взаимоисключающие. Потому результирующее условие D всегда будет принимать значение 0, т. е. "ложь". Но вот если мы изменим выражение следующим образом: D = (AxB)xC (2) т. е. инвертируем выражение в скобках с помощью операции НЕ, то получим обратный результат: D всегда будет правдой (черточкой над символом или выражением как раз и изображается инверсия). Интересно, что тот же самый результат мы получим, если запишем выражение следующим образом: D=(A + B)xC (3) Это свойство выражается в правилах де Моргана (учителя Буля): АхВ = А +В А+В-АхВ
Отметим, что из таблиц умножения и сложения вытекает одно любопытное следствие. Дело в том, что ассоциация значения "ложь" с 0, а "правды" с 1 есть действие вполне произвольное — ничто не мешает нам поступить наоборот. В первом случае логика носит название "положительной", во втором — "отрицательной". Так вот, замена положительной логики на отрицательную приводит к тому, что все операции ИЛИ заменяются на И и наоборот (рассмотрите таблицы внимательно). А вот операция НЕ к такой замене индифферентна— 0 меняется на 1 в любой логике. В дальнейшем, если это специально не оговорено, мы всегда будем иметь в виду положительную логику. Ниже приведены несколько соотношений, которые вместе с правилами де Моргана помогают создавать и оптимизировать логические схемы. Некоторые из них очевидны, некоторые же — совсем нет. АхВхС = (АхВ)хС = Ах(ВхС) (ассоциативный закон умножения) А+В + С = (А + В) + С = А + (В + С) (ассоциативный закон сложения) АхА =А А+А=А А + А~1 АхА=0 Ах 1 =А А + 1 = 1 А хО = О А + 0 = А А х (В + С) =А х В + А х С А +АхВ = А А + В х С = (А + В) х (А + В) 1=0 0=1 Булева алгебра на выключателях и реле Для того чтобы представить булевские переменные и операции над ними с помощью технических устройств (то, что сделал Клод Шеннон в своей диссертации), надо придумать схемы, которые воспроизводили бы эти операции согласно вышеизложенным правилам. Самые простые варианты таких схем показаны на рис. 18.2. Здесь операции И и ИЛИ выполняются обычными кнопками без фиксации. Каждая из них соответствует одной логической переменной, которая принимает значение 1, если контакты замкнуты, и 0 — если разомкнуты. На выходе значению 0 соответствует погасший светодиод, значению 1— горящий. Легко понять, что работать эти схемы будут именно так, как указано в правилах для соответствующих логических операций. Для технических устройств,
которые, как мы увидим далее, могут выполнять функции и отличающиеся от базового набора булевских операций, правила соответствия входов и выхода называются "таблицами истинности" (или "таблицами состояния") и оформляются в следующем виде: ИЛИ Вх1 Вх2 Вых 0 0 0 0 . 1 1 1 0 1 1 1 1 и Вх1 Вх2 Вых 0 0 0 0 1 0 1 0 0 1 1 1 + Ц1ИТ + Ц1ИТ Рис. 18.2. Схемы реализации логических функций на кнопочных выключателях Рис. 18.3. Схемы реализации логических функций на реле
Однако если разобраться поглубже, то придется констатировать, что настоящими входными логическими переменными для таких схем будут движения пальца, нажимающего кнопку. В частности, операция НЕ здесь будет означать нажатие кнопки с нормально замкнутыми контактами, а каскадное соединение таких схем для реализации сложных выражений предполагает наличие человека, транслирующего выходной сигнал одной схемы (состояние светодиода) во входной другой схемы (состояние контактов). Логично поставить вместо такого человека, тупо выполняющего предопределенные действия, техническое устройство. И здесь помогут уже хорошо нам известные электромагнитные реле. В схемах на рис. 18.3 как для входов, так и для выхода наличие напряжения соответствует логической 1, отсутствие его — логическому 0. (Можно для наглядности подключить к выходу светодиод или лампочку, но суть дела от этого не изменится.) Способ подачи входного сигнала не указан, т. к. предполагается, что источник входного напряжения может быть самый разный (разумеется, его мощность должна быть достаточной, чтобы заставить реле сработать) — в том числе и такая же схема на реле. Последний вариант представлен на рис. 18.3 справа, где изображена схема составного элемента И-НЕ на трех реле, представляющего собой объединение элемента И (такого же, как на рисунке слева) и элемента просто НЕ (инвертора), который есть не что иное, как одиночное реле с выходом через нормальнозамкнутые, а не нормальноразомкнутые контакты. Таблица истинности для элемента И-НЕ будет инверсией таблицы для элемента И: И-НЕ Вх1 Вх2 Вых 0 0 1 0 1 1 1 0 1 1 1 0 Легко видеть, что она неадекватна таблице для ИЛИ, как могло бы показаться на первый взгляд. Аналогично составляется элемент ИЛИ-НЕ — из схемы ИЛИ, показанной на рис. 18.3 посередине, и инвертора. Таблица истинности для него будет такой: ИЛИ-НЕ Вх1 Вх2 Вых 0 0 1 0 1 0 1 0 0 1 1 0
В большинстве современных серий логических микросхем используются именно элементы И-НЕ и ИЛИ-HE, а не чистые И и ИЛИ (которые часто даже вовсе отсутствуют в составе серии, см. главу 20). Для того чтобы было проще разбираться в логических схемах, не заучивая таблицы истинности, работу элементов можно запомнить следующим образом: элемент И дает единицу на выходе только если на входах одновременно есть единица ("оба одновременно"), элемент ИЛИ — если на любом из входов единица ("хотя бы один"). Возможно, вам еще проще будет запомнить так: элемент ИЛИ дает единицу на выходе, если на входах "хотя бы одна единица", а элемент И дает ноль на выходе, если на входах "хотя бы один ноль". Рассмотренные же элементы с инверсией по выходу будут давать в тех же случаях обратные значения. Интересно рассмотреть вопрос — а нельзя ли упростить схемы этих комбинированных элементов, исключив из них третье реле, выполняющее инверсию? В самом деле, большинство реле имеет перекидные контакты, так за чем же дело стало — меняем нормальноразомкнутые контакты на нормальнозамкнутые — и все! Легко заметить, что такая замена не будет адекватной — мы инвертируем здесь не общий выход элемента, а выходы каждого реле в отдельности, что равносильно инвертированию входов. Если обратиться к правилам де Моргана, то мы увидим, что такое изменение схемы приведет к тому, что элемент И превратится в ИЛИ-HE, а ИЛИ — соответственно, в И-НЕ. Или можно сказать так: мы получили желанный результат — но в отрицательной логике. Я советую читателю посидеть над этими соображениями и вывести таблицы истинности самостоятельно, чтобы убедиться, что все сказанное — правда. Второе полезное упражнение состоит в том, чтобы попытаться самому построить трехвходовые элементы, соответствующие уравнениям А+В + СпА'Х.В'Х.С (они будет состоять из трех реле). В заключение для тех, кто не разобрался как следует в этом по необходимости кратком изложении, среди прочих источников особенно порекомендую обратиться к [26] — книге, написанной простым и понятным языком, ориентированным на неподготовленного читателя, но вместе с тем излагающей предмет во всех подробностях. То же самое, но на транзисторах и диодах Ясно, что использование реле для построения логических схем — метод, мягко говоря, несовременный. Хотя в истории и отмечены случаи построения целых компьютеров на основе реле (к ним принадлежали, в частности, легендарные Магк-1 и Магк-П Говарда Эйкена, запущенные в эксплуатацию в 1944 и 1947 гг. соответственно), но слишком много у них недостатков — большое потребление
и крайне низкое быстродействие, порядка 20—30 Гц (не килогерц и тем более не мегагерц, а именно герц). Конечно, по сравнению с электромеханическими ручными калькуляторами это было просто сказкой (типовое время операции сложения у Mark-I составляло 0,3 с), поэтому и машины эти вовсе не были всего лишь экспериментальными образцами, а широко использовались на практике. Но все-таки такое быстродействие казалось уже тогда весьма недостаточным, поэтому довольно быстро перешли к использованию ламп, что позволило достичь порогов в десятки и сотни килогерц, а затем и транзисторов, с которыми частота работы возросла до единиц и десятков мегагерц. С использование реле в компьютерной технике связана легендарная история о возникновении термина "баг" как ошибки в программе. В буквальном переводе bug означает "жучок". В 1947 г. между контактами одного из реле Mark-Il застряла мошка, вызвав неисправность. Когда мошку извлекли, молодая сотрудница Эйкена Г рейс Хоппер (позднее — крупнейший авторитет в программировании и единственная женщина-адмирал флота США) приклеила ее между страницами лабораторного журнала с подписью: "первый случай выловленного бага". Страница эта сейчас хранится в музее Смитсониановского института. Рис. 18.4. Схемы реализации логических функций на диодах и транзисторах Как же можно построить наши логические элементы на транзисторах? На рис. 18.4 показаны для примера схемы диодно-транзисторной логики, которая широко использовалась в производстве гибридных микросхем (еще до изобретения Нойсом и Килби твердотельной микросхемы, см. главу 12). В элементе И-НЕ (слева) в нормальном состоянии транзистор открыт, и на выходе его логический 0, так что подача логической 1 на входы ничего не изменит. А подача логического 0 хотя бы на один из входов приведет к тому, что соответствующий диод откроется и будет шунтировать переход база-эмиттер, в результате чего транзистор закроется, и на выходе возникнет логическая 1, что соответствует функции И-НЕ. Диод в эмиттере нужен для обеспечения надежного запирания транзистора. На схеме справа наоборот, транзистор в нормальном состоянии заперт, и на выходе логическая 1, а по
дача хотя бы одной логической 1 на входы откроет соответствующий диод и через него — транзистор, на выходе тогда установится логический 0, что соответствует функции ИЛИ-НЕ. "Подпирающий" диод здесь не требуется, зато требуются токоограничивающие резисторы на входах (их номиналы могут быть примерно на величину р больше, чем у резистора в коллекторе). Схему инверсии НЕ специально рисовать не имеет смысла, т. к. любой транзистор, включенный по схеме с общим эмиттером, как мы знаем из главы 6, есть инвертор (именно по этой причине у нас получились не чистые булевские функции, а их инверсии). В случае необходимости обычные И и ИЛИ можно соорудить из этих схем, добавив к ним еще по одному транзисторному каскаду. В этих схемах всплывает один вопрос, который для релейных схем был неактуален: с какого именно уровня напряжение считать логическим 0, а с какого— 1? В релейных схемах ноль— это полный разрыв цепи, а единица — полное ее замыкание. Здесь же не совсем так: на коллекторе открытого транзистора в левой схеме будет напряжение около 0,8—1 В, в то время как в правой — всего около 0,2—0,3 В. В то же время при закрытом транзисторе вроде бы напряжение логической единицы должно быть равно напряжению питания (токами утечки пренебрегаем), однако оно тут же упадет, если мы нагрузим выход на вход другой схемы типа ИЛИ-НЕ, т. к. там требуется обеспечить определенный ток базы. В подобных схемах обычно выходят из положения, задавая не порог изменения, который, как мы видим, непостоянен, а пределы для 0 и 1: ниже определенного значения считать выход находящимся в состоянии 0 (для схем на рис. 18.4 подойдет значение 1,2—1,5 В), а выше другого значения (например, 3,5 В при питании 5 В) состояние принимать за логическую 1, в промежутке же считать схему находящейся в нерабочем режиме. При этом приходится ограничивать число устройств, подключаемых одновременно к выходу (или потребляемый по выходу ток). Для того чтобы расширить возможности таких схем, в серию одинаковых по типу применяемой схемотехники микросхем вводят специальные чипы буферов, т. е. умощнителей сигнала, которые никакой логической функции не осуществляют, а просто усиливают сигнал по току (простейший такой буфер может быть построен, например, на комплементарной паре транзисторов по рис. 9.2). Иногда такие буферы совмещают с функцией инверсии. Ну, а устройство твердотельных логических микросхем, которые в настоящее время только единственно и используются для производства логических операций, мы будем подробно разбирать в главе 20. Впрочем, "только единственно" нужно сделать одну существенную оговорку: многие другие компоненты, такие, как компараторы или транзисторы в ключевом режиме также фактически оперируют с логическими величинами, просто это не всегда явно подчеркивается. В конце концов, обычный светодиод в режиме индикации— типичное логическое устройство!
Глава 19 По основанию два. О двоичной и других системах счисления —Теперь давайте сочтем, сколько у нас всего. Портос? — Тридцать экю. — Арамис? — Десять пистолей. — У вас, д'Артаньян? — Двадцать пять. — Сколько это всего? — спросил Атос. — Четыреста семьдесят пять ливров! — сказал д'Артаньян, считавший, как Архимед. А. Дюма, "Три мушкетера" О том, что мы считаем в десятичной системе потому, что у нас десять пальцев на двух руках, осведомлены, вероятно, все. Персонажи из мультфильмов студии "Пилот ТВ"— Хрюн Моржов и Степан Капуста— считают, наверное, в восьмеричной системе, т. к. у них пальцев по четыре. У древних ацтеков и майя в ходу была двадцатеричная система (вероятно потому, что закрытая обувь в ихнем климате была не в моде). Вместе с тем, история показывает, что привязка к анатомическим особенностям строения человеческого тела совершенно необязательна. Со времен древних вавилонян у нас в быту сохранились остатки двенадцатеричной и шестидесятеричной систем, что выражается в количестве часов в сутках и минут в часах, или, скажем, в том, что столовые приборы традиционно считают дюжинами или полудюжинами (а не десятками и пятерками). Так что само по себе основание системы счисления не имеет значения — точнее, есть дело привычки и удобства. Однако такое положение справедливо лишь для ручного счета — для компьютеров выбор системы счисления имеет более важное значение. Попробуем ответить на вопрос — почему? Для этого нам придется сначала разобраться — как мы считаем, что при этом происходит, что такое вообще система счисления и ее основание. Число— одна из самых удивительных абстрактных сущностей. Нет никаких сомнений, что число, количество предметов — есть вполне объективно
существующая характеристика, т. е., в отличие от, к примеру, зрительных образов, она совершенно независима от самого факта наличия разума у считающего субъекта и даже от наличия самого субъекта— если бы (и когда) цивилизации вообще не существовало, количество планет в Солнечной системе осталось бы тем же. И тем не менее, материального воплощения числа не имеют — "количество", представленное в виде комбинации пальцев рук и ног, зарубок на палочке (вспомните, как Робинзон Крузо вел свой календарь), разложенных на земле веточек, костяшек на счетах или — что для нас самое главное! — черточек или значков на бумаге, есть всего лишь физическая модель некоего идеального абстрактного понятия "числа". Умение считать в уме, которое отличает цивилизованного человека от дикаря, состоит в том, что мы можем оторваться от такой материальной модели и оперировать непосредственно с абстракцией. Y VT W > Й? Ж 1 2 3 9 5 6 7 8 9 77 № № 10 28 30 Рис. 19.1. Вавилонские глиняные таблички с записью чисел. Вверху перевод некоторых из них в десятичную систему В связи с этим возникает вопрос, который мы уже задавали раньше в связи с существованием "теоретического" распределения вероятностей — раз числа существуют объективно, то где они существуют? Этот вопрос совсем не дурацкий, потому что число есть лишь один из подобных объектов, несомненно наличествующих в природе и, тем не менее, не имеющих материального воплощения — это и геометрические фигуры, и другие математические объекты, в том числе и булевская алгебра вместе с ее операндами (см. главу 18).
Причем если физические идеализации ("абсолютно твердое" или "абсолютно упругое" тело) есть сущности, действительно выдуманные человеком с целью упрощения изучения свойств реальных тел, и вне человеческого знания не существуют, то с математическими абстракциями вовсе не так. Это послужило основанием для того, чтобы великий греческий философ Платон, из учений которого в той или иной степени проистекает вся современная философия, предположил существование некоего идеального мира ("платоновского мира идей"), где все эти абстракции и "живут". Любопытно, что на этом основании Платона справедливо зачисляют в идеалисты, однако сказанное — хороший пример того, что часто отождествляемые понятия "идеалистического" и "божественного" вовсе не одно и то же. Позиционные и непозиционные системы счисления. Десятичная система Но вернемся к системам счисления. Из понятия числа как объективно существующей абстракции вытекает, что его материальное представление может быть произвольным, лишь бы оно подчинялось тем же правилам, что и сами числа. Проще всего считать палочками (и в детском саду нас учат именно такому счету) — в качестве которых могут выступать и пластмассовые стерженьки, и пальцы, и черточки на бумаге. Один — одна палочка, два — две палочки, десять — десять палочек. А сто палочек? Уже посчитать затруднительно, потому придумали сокращение записи: доходим до пяти палочек, ставим галочку, доходим до десяти — ставим крестик: 1 2 5 7 10 11 I II V VII X XI Узнаете? Конечно, это всем знакомая римская система, сохранившаяся до настоящих времен на циферблатах часов или в нумерации столетий. Она представляет собой пример непозиционной системы счисления — потому что значение определенного символа, обозначающего то или иное число, в ней не зависит от позиции относительно других символов — все значения в записи просто суммируются. То есть записи "XVIII" и "IIIXV" в принципе должны означать одно и то же. На самом деле, это не совсем так: в современной традиции принято в целях сокращения записи использовать и позицию: скажем, в записи "IV" факт, что палочка стоит перед галочкой, а не после нее, означает придание ей отрицательного значения, т. е. в данном случае единица не прибавляется, а вычитается из пяти (то же самое относится и к записи девятки "IX"). Если вы человек наблюдательный, то могли заметить, что на часах четверку пишут почти всегда, как "ПП", а не как "IV" (см. рис. 19.2), что,
несомненно, более отвечает духу непозиционной системы. Однако при всех возможных отклонениях главным здесь остается факт, что в основе системы лежит операция суммирования. Большие числа в римской системе записывать трудно. Поэтому были придуманы позиционные системы, к которым, в частности, принадлежала и упомянутая выше вавилонская шестидесятеричная (см. рис. 19.1). Позднее в Европе позиционную систему переоткрыл (видимо) Архимед, затем от греков она была воспринята индусами и арабами, и на рубеже I и II тысячелетий опять попала в Европу1 - с тех пор мы называем цифры арабскими, хотя по справедливости их следовало бы назвать индийскими. Это была уже современная десятичная система в том виде, в котором мы ее используем по сей день, у арабов отличается только написание цифр. С тем фактом, что заимствована она именно у арабов, связано не всеми осознаваемое несоответствие порядка записи цифр в числе и привычным нам порядком следования текста: арабы, как известно, пишут справа налево. Поэтому значение цифры в зависимости от позиции ее в записи числа возрастает именно справа налево, что в нашем случае нелогично— приходится заранее обозревать число целиком и готовить ему место в тексте. Впрочем, в быту к этому все привыкли и неудобств не испытывают, а вот для программистов, с чем мы столкнемся в дальнейшем, это приводит к некоторым сложностям: по мере чтения из памяти компьютера числа располагаются по старшинству адресов, т. е. в естественном для европейца порядке записи текста, слева направо. Между тем, сами числа (при побайтном представлении) являются двухзнаковыми, и при их записи соблюдается обычный арабский порядок — справа налево. Поэтому получаются довольно неудобные для восприятия конструкции: скажем, десятичное число 1234 в такой записи имело бы вид 3412. Рис. 19.2. Циферблат часов с римскими числами 1 Перевод соответствующего трактата арабского ученого аль. Хорезми на латынь относится к 1120 году (на самом деле его звали Мухамед аль Хорезми, т. е. "Мухамед из Хорезма"; между прочим, от его прозвища произошло слово "алгоритм").
Еще один нюанс, дошедший до нас от древнегреческих времен, связан с тем, что греки и римляне не знали нуля. Именно поэтому первым годом нового века и тысячелетия считается 2001, а не 2000 год— год с двумя нулями относится к предыдущему столетию или тысячелетию. Однако именно его логично считать первым, вдумайтесь: ведь когда мы говорим "первые годы XX века", мы имеем в виду именно 1903 или 1905, а не 1913 или 1915 — т. е. число десятков в первом десятилетии каждого века равно нулю, число сотен в первом веке каждого тысячелетия тоже равно нулю, и так далее, так почему при переходе от тысяч, сотен и десятков к единицам порядок должен быть иной? Однако после последнего года до нашей эры (минус первого) идет сразу первый год нашей эры, а не нулевой. Эти нюансы, связанные с наличием нуля в современном ряду целых чисел, имеют важное значение для производства компьютерных вычислений, как мы увидим в дальнейшем. Пока же следует всегда иметь в виду вот что: древние греки были совсем не такие дураки и ноль игнорировали не по скудоумию. Дело в том, что в последовательности объектов, нумерованных от нуля до, например, девяти, содержится не девять предметов, а десять! Чтобы избежать этой путаницы, в быту обычно нумерацию производят, начиная с 1, тогда последний номер будет одновременно означать и количество. В электронике же и в программировании обычно принято нумеровать объекты, начиная с 0, и всегда следует помнить, что номер и количество различаются на единицу (так, в байте 256 возможных символов, но номер последнего равен 255). На всякий случай всегда следует уточнять, откуда ведется нумерация, иначе можно попасть в неприятную ситуацию (скажем, элементы строки в языке Pascal нумеруются с единицы, а в языке С — с нуля). Так что такое позиционная система, и почему она позволяет записывать сколь угодно большие числа? Дело в том, что позиционные системы основаны не на простом сложении входящих в них цифр, а на сложении их с весами, которые присваиваются автоматически в зависимости от положения цифры в записи. Так, запись "3" и в римской системе и в арабской означает одно и то же, а вот запись "33" в римской системе означала бы шесть, а в арабской — совсем другое число, тридцать три. Строгое определение позиционной системы является следующим: сначала выбирается некоторое число р, которое носит название основания системы счисления. Тогда любое число в такой системе может быть представлено следующим образом: ап-р + ап_х-р + ... + а\р + а0- р (1) В самой записи числа степени основания подразумеваются, а не пишутся (и для записи основания даже нет специального значка), т. е. запись будет представлять собой просто последовательность ап...а$ (еще раз обратим
внимание на то, что запись производится справа налево по старшинству — обычная математическая запись выглядела бы наоборот). Отдельные позиции в записи числа называются разрядами. Например, в десятичной системе (т. е. в системе с основанием 10) полное представление четырехразрядного числа 1024 таково: 1 • 103 + 0- 102 4- 2 - 101 + 4- 10°. Так как любое число в нулевой степени равно 1, то степень в младшем разряде можно и не писать, но ради строгости мы ее будем воспроизводить, т. к. это позволяет нам лучше вникнуть в одно обстоятельство: степень старшего разряда всегда на единицу меньше, чем количество разрядов, т. к. нумерация степеней ведется с нуля. Ну, а как можно представить число в системе счисления с другим основанием? Для любой системы с основанием р нужно не меньше (и не больше) чем р различных цифр — т. е. значков для изображения чисел. Для десятичной системы их десять — это и есть известные всем символы от 0 до 9. Выбор начертания этих значков совершенно произволен — так, у арабов и по сей день 1 обозначается, как и у нас, палочкой. А вот цифра 2 обозначается знаком, похожим на латинскую строчную "г", причем тройка тоже имеет похожее начертание, и я плохо себе представляю, как Усама бен Ладен их там отличает — дело, впрочем, привычки, у нас тоже знаки "5" и "6" в некоторых случаях различить непросто, не говоря уж о сходстве между нулем "0" и буквой "О". В ручном написании текстов программ, а также в матричных компьютерных шрифтах, которые были в ходу до появления графического интерфейса, для этого ноль даже изображали перечеркнутым, наподобие знака диаметра: "0"2. Чтобы древним вавилонянам, несчастным, не приходилось выучивать аж 60 разных начертаний знаков, они придумали логичную систему наподобие римской (еще раз обратите внимание на рис. 19.1)— действующую, впрочем, только в пределах первых шестидесяти чисел, а далее у них система становилась вполне позиционной. Самые употребительные системы в настоящее время, кроме десятичной, связаны с электроникой и поэтому имеют непосредственное значение для нашего повествования. Это знаменитая двоичная система и менее известная широкой публике, но также очень распространенная шестнадцатеричная. 2 Попробуйте различить записи "15Ом" и "150м", если пробел забыли поставить в нужном месте — в случае матричных шрифтов или ручной записи, да и в любом случае, если символов "0" и "О" рядом нет, это неразрешимая задача, если только из контекста не ясно, когда идет речь об омах, а когда — о метрах. К одной из программ, которой я пользуюсь, производитель дал такой серийный номер: "RO-1T9O265...". Так как в одном из случаев там ноль, а во втором буква "О", то каждый раз, когда я эту программу переустанавливаю, приходится гадать на кофейной гуще.
Двоичная система В двоичной системе необходимы всего два различных знака для цифр: 0 и 1. Это и вызвало столь большое ее распространение в электронике: смоделировать два состояния электронной схемы и затем их безошибочно различить неизмеримо проще, чем три, четыре и более, не говоря уж о десяти. Правда, существовали и десятичные компьютеры, а вот с троичным компьютером, который под названием "Сетунь" был построен Н. Брусенцовым в МГУ на рубеже 60-х годов прошлого века, связана отдельная история. При разработке первых компьютеров перед конструкторами встал вопрос об экономичности систем счисления с различными основаниями. Под экономичностью системы понимается тот запас чисел, который можно записать с помощью данного количества знаков. Чтобы записать 1000 чисел (от 0 до 999) в десятичной системе, нужно 30 знаков (по десять в каждом разряде), а в двоичной системе с помощью 30 знаков можно записать 215 = 32768 чисел, что гораздо больше 1000. То есть двоичная система явно экономичнее десятичной. В общем случае, если взять п знаков в системе с основанием р, то количество чисел, которые при этом можно записать, будет равно р^. Легко найти максимум такой функции, который будет равен иррациональному числу е = 2,718282... Но поскольку система с основанием е может существовать только в воображении математиков, то самой экономичной считается система счисления с основанием 3, ближайшим к числу е. В компьютере, работающем по такой системе, число элементов, необходимых для представления числа определенной разрядности, минимально. Реализацию троичной системы в электронике можно представить себе как схему с такими, например, состояниями: напряжение отсутствует (0), напряжение положительно (1), напряжение отрицательно (-1). И все же брусенцовская "Сетунь" осталась историческим курьезом — слишком велики сложности схемной реализации3 4. Что еще важнее, двоичная система прекрасно стыкуется как с представленными в предыдущей главе логическими переменными, так и с тем фактом, что величина, могущая принимать два и только два состояния и получившая названия 6um\ есть естественная единица количества информации. Это было установлено в 1948 г. одновременно упоминавшимся уже Клодом Шенноном и Нобертом Винером, "отцом" кибернетики — меньше, чем один бит, информации не бывает. 3 Точнее, сам Николай Петрович Брусенцов как раз сложностей не испытывал, т. к. использовал для представления троичных цифр — тритов — трансформаторы, в которых наличие тока в обмотке в одном направлении принималось за 1, в другом — за -1, а отсутствие тока обозначало 0. Но реализовать на транзисторах такое представление значительно сложнее, чем двоичное. 4 Bit— по-английски "кусочек, частица чего-либо". Существует и слово bite, которое также можно перевести, как "кусок”, но с несколько другим оттенком — "кусок пищи", "укус".
Разряды двоичных чисел (т. е. чисел, представленных в двоичной системе) также стали называть битами. Хочу также отметить, что представление двоичных цифр с помощью уровней напряжения, как это делается в электронных устройствах, если точно такая же модель числа, как раскладывание на земле палочек и проведение черточек на бумаге. В последних случаях мы оперируем с числами вручную, по правилам арифметики, а в электронных схемах это происходит в автоматическом режиме, без участия человека— вот и вся разница! Это очень важный момент, который следует хорошо осмыслить, если вы действительно хотите вникнуть в суть работы цифровых электронных схем. Итак, запись числа в двоичной системе требует всего две цифры, начертание которых заимствовано из десятичной системы, и выглядит как 0 и 1. Число, например, 1101 тогда будет выглядеть как: 1 23 + 1 • 22 + 0 • 21 + 1 • 2° = 13. Чтобы отличить запись числа в различных системах, часто внизу пишут основание системы: И012= 1310. Если система не указана, то имеется в виду обычно десятичная, но не всегда — часто, когда из контекста понятно, что идет речь об электронных устройствах, не указывают не только основание два, но и под словом "разрядность" имеют в виду количество именно двоичных, а не десятичных разрядов (таков, скажем, смысл термина "24-разрядный цвет"). Шестнадцатеричная система Шестнадцатеричная система имеет, как ясно из ее названия, основание шестнадцать. Для того чтобы получить шестнадцать различных знаков, изобретать ничего нового не стали, а просто использовали те же цифры от 0 до 9 для первых десяти и заглавные латинские буквы от А до F для один над цатого-шестнадцатого знаков. Таким образом, известное нам число 13ю выразится в шестнадцатеричной системе, как просто D^. Соответствие шестнадцатеричных знаков десятичным числам следует выучить наизусть: А - 10, В - 11, С - 12, D - 13, Е - 14, F - 15. Значения больших чисел вычисляются по обычной формуле, например: A2FCi6 = 10 • 163 + 2 • 162 + 15 • 161 + 12 • 16° = = 40960 + 512 + 240 + 12 = 4172410.
Перевод из одной системы счисления в другую Как следует из вышеизложенного, перевод в десятичную систему любых форматов не представляет сложности и при надлежащей тренировке может осуществляться даже в уме. Для того чтобы быстро переводить в десятичную систему двоичные числа (и, как мы увидим, и шестнадцатеричные тоже), следует выучить наизусть таблицу степеней двойки до 16: 21 22 23 24 25 26 27 28 2 4 8 16 32 64 128 256 29 2ю 211 212 213 214 215 216 512 1024 2048 4096 8192 16384 32768 65536 На первое время достаточно запомнить верхний ряд, остальное выучится позже само. Сложнее переводить из десятичной системы, и для этого в учебниках рекомендуется устрашающая процедура, основанная на делении столбиком (см. [27]). Я сейчас попробую вам показать способ, который позволяет переводить числа в двоичную систему несколько более простым методом, причем небольшие числа можно переводить даже в уме. В сущности, это то же самое деление, но без излишних сложностей и формальностей. Для этого нужно сначала запомнить следующее правило: число, равное какой-либо степени двойки, имеет 1 в разряде с номером, на единицу большим степени, остальные все нули: 21 = 2)0 = 102 22 = 41о=10О2 23 = 8|0 = 10002 и т. д. Способ состоит в следующем: пусть мы имеем, например, десятичное число 59. Подбираем наибольшую степень двойки из таблицы выше, не превышающую этого числа: 32, что есть 5-я степень. Ставим 1 в шестом разряде: 100000. Вычитаем подобранную степень из исходного числа (59 - 32 = 27) и подбираем для остатка также степень, его не превышающую: 16 (24). Ставим единицу в 5-м разряде: 110000. Повторяем процедуру вычитания-подбора: 27 - 16 = 11, степень равна 8 (23), ставим единицу в 4-м разряде: 111000. Еще раз: 11-8 = 3, степень равна 2 (21), ставим единицу во 2-м разряде: 111010.
Последнее вычитание дает 1, которую и ставим в младший разряд, окончательно получив 59]о = 1110112- Если бы исходное число было четным, к примеру 58, то в последнем вычитании мы бы получили 0, и число в двоичной системе также оканчивалось бы на ноль: 58ю = 11IOIO2. Кстати, полезно также обратить внимание, что числа, на единицу меныпйе степени двойки, имеют количество разрядов, равное степени, и все эти разряды содержат единицы: 2'-1 = 1,0=12 22-1=3|0=112 23 - 1 =7,о= 1112 и т. д. Подобно тому, как наибольшее трехразрядное число в десятичной системе равно 999, и чисел таких всего 10 = 1000 (от 000 до 999), в двоичной системе з тех же трехразрядных чисел будет 2=8 штук, в диапазоне от 000 до 111, т. е. от 0 до 7. То есть наибольшее двоичное число с данным количеством разрядов будет всегда содержать все единицы во всех разрядах. А вот из двоичной системы в шестнадцатеричную и обратно перевод очень прост: все дело в том, что 16 есть 2 и без всяких вычислений можно утверждать, что одноразрядное шестнадцатеричное число будет иметь ровно 4 двоичных разряда. Поэтому перевод из двоичной системы в шестнадцатеричную осуществляется так: двоичное число разбивается на т. н. тетрады, т. е. группы по четыре разряда, а затем каждая тетрада переводится отдельно, и результаты выписываются в том же порядке. Так как в тетраде всего 16 вариантов, то их опять же легко выучить наизусть: 0 1 2 3 4 5 6 7 0000 0001 0010 ООН 0100 0101 ОНО 0111 8 9 А (10) в (11) с (12) 0(13) Е(14) F(15) 1000 1001 1010 1011 1100 1101 1110 1111 Например, число 59ю, т. е. 0011 10112, будет равно ЗВЬ. Точно так же осуществляется и обратный перевод— каждое шестнадцатеричное число просто записывается в виде тетрады. Так, число A2FC16 выразится как 1010 0010 1111 11002- Заметьте, что пробелы между тетрадами введены просто для удобства восприятия, подобно пробелам между тройками разрядов (классами) в записи больших десятичных чисел, и никакой иной нагрузки
не несут. При записи двоичных чисел в тексте программ, как ассемблерных, так и программ на языках высокого уровня, естественно, эти пробелы ставить запрещается. В качестве упражнения можете поразмыслить над вопросом, как переводить числа из двоичной в восьмеричную и четверичную системы и наоборот: если вы справитесь с этим самостоятельно, считайте, что вы все поняли насчет систем счисления, применяемых в электронике. Байты Точное происхождение слова байт (byte) мне неизвестно, скорее всего, это видоизмененная форма слова bite (см. сноску 4 в этой главе), которое стало писаться через "у", чтобы не путать с bit. Байт — это просто восьмиразрядное двоичное число. Соответственно, он имеет ровно два шестнадцатеричных разряда или две двоичных тетрады. Такой байт был введен фирмой IBM в конце 50-х годов прошлого века, до этого (а в СССР — и после этого, вплоть до 1969 г.) применялись байты с другим количеством разрядов — 5, 6 и 7. Почему именно 8 разрядов? Да просто потому, что так удобно: число кратно степени двойки, т. е. легко масштабируется, скажем, шестнадцатиразрядное число — просто два байта, записанные подряд, подобно тетрадам в самом байте. В то же время оно относительно невелико и одновременно достаточно емко: имеет 256 значений, которых с лихвой хватает, к примеру, для представления всех печатных знаков европейских алфавитов (во всяком случае, до нашествия фирмы Microsoft с ее системой Windows хватало — что, конечно же, следует рассматривать как шутку). Поэтому в настоящее время байт — общепринятая единица измерения информации, т. к. основную единицу — бит на практике применять неудобно из-за ее мелковатости, числа получаются слишком большими. Применяют и меньшие единицы (кроме бита, это полубайт или просто одно шестнадцатеричное число), и большие — двухбайтовые (65 536 значений), четырехбайтовые (32 двоичных разряда или 4 294 967 296 значений) и даже восьмибайтовые числа. Все они часто называются словами — "word". Однако для практических нужд большее распространение получила запись больших количеств информации по системе, слизанной с десятичной: это килобайт (1024 или 210 байта), мегабайт (1024 или 210 килобайта) и гигабайт (1024 или 210 мегабайта). Близостью значения 1024 к десятичной тысяче широко пользуются производители жестких дисков — так, емкость диска в 10 Гбайт может быть вовсе не 1024 1024 килобайта, как положено, а 1000 • 1000, что почти на пять процентов меньше. Пустячок — а ведь приятно обмануть покупателя, который потом будет с недоумением раздумывать, почему ему в настройках компьютера показывается вовсе не 10,
а 9,54 Гбайта, и куда исчезли "родные" 460 мегов? Однако имейте в виду, что подобные фокусы все же выкидываются только в отношении наивных покупателей, а в серьезной технической документации кило- и мегабайты обычно означают то, что положено. Впрочем, есть одна область, где традиционно употребляются именно биты (а также мегабиты и гигабиты), а не байты — это характеристики последовательных цифровых линий передач, к примеру, всем знакомая характеристика модемов в 56 К означает именно 56 кбит в секунду. Это связано с тем, что передача именно восьмиразрядными пакетами битов там применятся редко — скажем, стандарт RS232, который мы будем еще разбирать, содержит восемь значащих разрядов (т. е. один байт), но помимо этого передается как минимум еще два бита— столовый и стартовый, итого 10. В Интернете пакеты и вовсе могут иметь переменную длину, поэтому байтами в сетях информацию считают только, когда речь идет об отправленной или принятой информации, но не о той, которая реально передается — последняя может включать в себя достаточно много всяких служебных битов и целых байтов. Запись чисел в различных форматах Шестнадцатеричный формат записи часто еще обозначают как HEX (hexadecimal), двоичный — как BIN (binary), а десятичный — как DEC (decimal). Кроме этого, в ходу еще т. н. двоично-десятичный формат BCD (binary-coded decimal), о котором далее. Так как с помощью матричных шрифтов на компьютерах с текстовыми дисплеями воспроизводить индексы было невозможно, то вместо того, чтобы обозначать основания системы цифрой справа внизу, их стали обозначать буквами: "В" (или "Ь") означает двоичную систему, "Н" (или "h") — шестнадцатеричную, "D" (или "d") — десятичную. Отсутствие буквы также означает десятичную систему: 13= 13d = 00001101b = 0Dh. Такая запись принята, например, в языке ассемблера для процессоров Intel. Популярность языка С внесла в это дело некоторый разнобой: там десятичная система обозначается буквой "d" (или никак), двоичная буквой "Ь", а вот шестнадцатеричная буквой "х", причем запись во всех случаях предваряется нулем (чтобы не путать запись числа с идентификаторами переменных, которые всегда начинаются с буквы): 13 = 0d 13 = ObOOOOl 101 = 0x0D. Такая запись также принята в ассемблере для микроконтроллеров AVR, которыми мы будем пользоваться (запись типа ODh ассемблер AVR не понимает, зато понимает представление НЕХ-формата, принятое в языке Pascal: $0D).
Обратите внимание, что запись в НЕХ-формате обычно ведется в двухразрядном виде, даже если число имеет всего один значащий разряд, как в нашем случае, то в старшем пишется 0, то же самое относится и к двоичной записи, которая дополняется нулями до восьми разрядов. А вот для десятичного представления такой записи следует остерегаться5. Добавление незначащих нулей связано с тем обстоятельством, что запись и чтение чисел обычно ведется побайтно, а в байте именно два шестнадцатеричных разряда или восемь двоичных (см. также главу 21). Если число имеет разрядность больше байта, т. е. представляет собой слово, то для обозначения этого факта слева дописываются еще нули, так, шестнадцатиразрядное двоичное число 13 правильно записать как 0000 0000 0000 1101b, а в НЕХ-формате оно будет иметь 4 разряда, т. е. запишется как 000Dh. Поглядев на эти две записи, вы можете понять, для чего придумали использовать шестнадцатеричную систему — запись получается намного компактней. Несколько слов о формате BCD. Электронные устройства "заточены" под использование двоичных и родственных им систем счисления, потому что основой являются два состояния, т. е. двоичная цифра. Так что, соединив несколько устройств вместе с целью оперирования с многоразрядными числами, мы всегда будем получать именно двоичное число. При этом четыре двоичных разряда могут представлять шестнадцать различных состояний, и использовать их для представления десятичных чисел было бы попросту неэкономично: часть возможного диапазона осталась бы неиспользованной. Подсчитайте сами: для представления числа с шестью десятичными разрядами в десятичном виде нужно 6 • 4 = 24 двоичных разряда, а для представления того же числа в двоичном виде с избытком хватит 20 разрядов (2 = 1048576). А меньше, чем четыре двоичных разряда, для представления одного десятичного числа не хватит (2 = 8). К тому же с чисто двоичными числами, как мы увидим в дальнейшем, оперировать значительно проще. И все же применять двоично-десятичный формат приходится всегда, когда речь идет о выводе чисел, например, на цифровой дисплей — двоичные или шестнадцатеричные числа человеку воспринимать, естественно, тяжело: представьте, что мы показываем температуру в виде 1E,D градуса по Цельсию! Многие ли сразу подсчитают, что это означает (примерно) 30,81 градуса? (В качестве упражнения попробуйте сообразить, почему именно так.) 5 Чтобы еще больше запутать пользователя, разработчики AVR-ассемблера приняли для представления редко употребляемых восьмеричных чисел запись просто с ведущим нулем, без букв: например, 77 означает просто десятичное 77, а вот 077 будет означать 7 • 8 + 7 = 63 ю-Нет, чтобы уж сделать и здесь, как в С, где восьмеричные числа записываются по аналогии со всем остальными, как ОоХХ.
Поэтому приходится преобразовывать шестнадцатеричные числа в десятичные и хранить их в таких же байтовых регистрах или ячейках памяти. Это можно делать двумя путями: в виде упакованного и неупакованного BCD. Неупакованный формат попросту означает, что мы тратим на каждую десятичную цифру не тетраду, как необходимо, а целый байт. Зато при этом не возникает разночтений: 05h = 05ю и никаких проблем. Однако ясно, что это крайне неэкономично — байтов требуется в два раза больше, а старший полубайт при этом все равно всегда ноль. Потому BCD-числа всегда упаковывают, занимая и старший разряд второй десятичной цифрой: скажем, число 59 при этом и запишется как просто 59. Однако это не 59h! 59 в шестнадцатеричной форме есть 3Bh, как мы установили ранее, а наше 59 процессор прочтет как 5 • 16 + 9 = 89, что вообще ни в какие ворота не лезет! Поэтому перед проведением операций с упакованными BCD-числами их обязательно распаковывают, перемещая старший разряд в отдельный байт и заменяя в обоих байтах старшие полубайты нулями. Иногда для проведения операций с BCD в микропроцессоре или микроконтроллере предусмотрены специальные команды, так что отдельно заниматься упаковкой-распаковкой не требуется. В качестве примера хранения чисел в BCD-формате можно привести значения часов, минут и секунд в энергонезависимых часах компьютера. Двоичная арифметика Правила двоичной арифметики значительно проще, чем десятичной, и включают две таблицы — сложения и умножения — несколько похожие на те же таблицы для логических переменных, однако немного отличающиеся от них: 0 + 0 = 0 0-0 = 0 0+1 = 1 0-1=0 1+0=1 1 -0 = 0 1 + 1 = 10 1-1 = 1 Как мы видим, правила обычного умножения одноразрядных двоичных величин совпадают с таковыми для логического умножения. Однако правила сложения отличаются, т. к. в случае сложения двух единиц результат равен 2, и у нас появляется перенос в следующий разряд. Так как умножение многоразрядных чисел сводится к сложению отдельных произведений, то там придется этот перенос учитывать (как это делается на практике, мы увидим в следующей главе). Возможно, вы удивитесь, но любая электронная схема (и микропроцессор не исключение) умеет только складывать. Свести умножение к сложению легко. А как свести к сложению вычитание и деление? Для этого придется познако-
миться с тем, как в электронике представляют отрицательные числа. А заодно узнаем и насчет дробных, точнее — действительных чисел: ведь до сих пор все наши рассуждения относились только к целым. Отрицательные числа Самый простой метод представления отрицательных чисел — отвести один бит (логичнее всего — старший) для хранения знака. По причинам, которые вы поймете далее, значение 1 в этом бите означает знак "минус", а 0 — знак "плюс". Что произойдет с нашим числом при таком представлении? В области положительных чисел не произойдет ничего, кроме того, что их диапазон сократится вдвое: например, для числа в байтовом представлении вместо диапазона 0...255 мы получим всего лишь 0...127 (0000 0000— 0111 1111). А отрицательные числа будут иметь тот же диапазон, только старший бит у них будет равен 1. Все просто, не правда ли? Нет, неправда. Такое представление отрицательных чисел совершенно не соответствует обычной числовой оси, на которой влево от нуля идет минус единица, а затем числа по абсолютной величине увеличиваются. Здесь же мы получаем, во-первых, два разных нуля ("обычный" 0000 0000 и "отрицательный" 1000 0000), во-вторых, оси отрицательных и положительных чисел никак не стыкуются, и производство арифметических операций превратится в головоломку. Поэтому поступим так: договоримся, что -1 соответствует число 255 (1111 1111), -2 — число 254 (1111 1110) и т. д., вниз до 128 (1000 0000), которое будет соответствовать -128 (и общий диапазон всех чисел получится от -128 до 127). Очевидно, что если вы при таком представлении хотите получить отрицательное число в обычном виде, то надо из значения числа (например, 240) вычесть максимальное значение диапазона (255) плюс 1 (256). Если отбросить знак, то результат такого вычитания (16 в данном случае) называется еще дополнением до 2 для исходного числа (а само исходное число 240 — дополнением до 2 для 16). Название "дополнение до 2" используется независимо от разрядности числа, потому что верхней границей всегда служит степень двойки (в десятичной системе аналогичная операция называется "дополнение до 10"). Что произойдет в такой системе, если вычесть, например, 2 из 1? Запишем это действие в двоичной системе обычным столбиком: 00000001 -00000010 В первом разряде результата мы без проблем получаем 1, а уже для второго нам придется занимать 1 из старших, которые сплошь нули, поэтому пред
ставим себе, что у нас будто бы есть девятый разряд, равный 1, из которого заем в конечном итоге и происходит: (1)00000001 - 00000010 11111111 На самом деле девятиразрядное число 1 0000 0000 есть не что иное, как 256, т. е. то же самое максимальное значение диапазона + 1, и мы здесь выполнили две операции: прибавили к вычитаемому эти самые 256, а затем выполнили вычитание, но уже в положительной области для всех участвующих чисел. А что результат? Он будет равен 255, т. е. тому самому числу, которое, как мы договорились, представляет собой -1. То есть вычитание в такой системе происходит автоматически правильно, независимо от знака участвующих чисел. Если хотите, можете потренироваться и проверить: скажем, что будет, если мы вычтем 240 из 100? Дополняем 100 значением 256 и получаем: 356-240=116. Но ведь это равносильно тому, что произвести действие 100 - (-16), т. е. 100 + 16, как и должно быть, потому что 240 в нашем представлении именно -16 и есть. Именно таким образом вычитание сводится к сложению: мы вычисляем дополнение до 2 для вычитаемого (с положительным знаком, естественно), а затем складываем уменьшаемое с этим дополнением. Посмотрим, как это выглядит для примера выше: 1 -2= 1 + (256 - 2) = 1 + 254 = 255. Все правильно! Немного смущает только эта самая операция нахождения дополнения до 2, точнее, в данном случае до 256 — как ее осуществить на практике, если схема всего имеет 8 разрядов? В дальнейшем мы увидим, что иногда ее осуществлять вовсе не надо: некоторые электронные схемы ведут себя так, что при осуществлении вычитания все сказанное осуществляется автоматически. Особенно наглядно это выглядит для двоичных реверсивных счетчиков, которые мы будем разбирать в главе 24. В точности так же ведут себя и соответствующие команды в микропроцессорах: так, если вы захотите произвести операцию вычитания числа 2 из содержимого восьмибитового регистра, содержащего число 1, то в регистре окажется число 255 (все единицы). А как интерпретировать результат — это уже ваши трудности. Впрочем, в микропроцессорах есть обычно и команда, которая возвращает дополнение до 2, в большинстве ассемблеров она называется NEG, от слова "негативный", потому что меняет знак, если мы договариваемся считать числа "со знаком". А как ее можно было бы осуществить "вручную", не обращаясь в действительности к 9-му разряду? Вернемся к примерам выше и выпишем столбиком исходные числа, результаты операции нахождения дополнения до 2, и результат еще одной манипуляции, которая представляет собой вычитание
единицы из дополнения до 2, что то же самое, просто вычитания исходного числа из наивысшего числа диапазона (255): 2 00000010 256 - 2 = 254 11111110 255 - 2 = 253 11111101 240 11110000 256 - 240 = 16 00010000 255-240= 15 00001111 Если мы сравним двоичные представления в верхней и нижней строках в каждом случае, то увидим, что они могут быть получены друг из друга путем инверсии каждого из битов. Эта операция называется нахождением "дополнения до 1" (потому что число, из которого вычитается, содержит все 1 во всех разрядах; для десятичной системы аналогичная операция называется "дополнение до 9"). Для нахождения дополнения до 1 девятый разряд не требуется, да и схему можно построить так, чтобы никаких вычитаний не производить, а просто переворачивать биты (так и делается, однако в микроконтроллерах для инверсии битов вызывается именно команда нахождения дополнения до 1, определяемая как операция вычитания из FFh, а что уж там происходит на самом деле — тайна, покрытая мраком). То есть для полного сведения вычитания к сложению надо проделать три операции: 1. Найти дополнение до 1 для вычитаемого (инвертировать его биты). 2. Прибавить к результату 1, чтобы найти дополнение до 2. 3. Сложить уменьшаемое и дополнение до 2 для вычитаемого. Заметим, что все сложности с этими многочисленными дополнениями связаны с наличием нуля в ряду натуральных чисел — если бы его не было, дополнение было бы всего одно и операция вычитания упростилась. Так может, греки все же были в чем-то правы? В заключение обратим внимание на еще одно замечательное свойство двоичных чисел, которое часто позволяет значительно облегчить операции умножения и деления: а именно, умножению на 2 соответствует операция сдвига всех разрядов числа на один разряд влево, а операции деления на 2 — вправо. Крайние разряды (старший при умножении и младший при делении) в общем случае при этом должны теряться, но в микропроцессорах есть специальный регистр, в один из битов которого (бит переноса) эти "потерянные" разряды помещаются. Противоположные крайние разряды (младший при умножении и старший при делении) в общем случае замещаются нулями, но могут и замещаться значением бита переноса, что позволяет без лишних проблем делить и умножать числа с разрядностью больше одного байта. Как можно догадаться, умножению и делению на более высокие степени двойки будет
соответствовать операция сдвига в нужную сторону на иное (равное степени) число разрядов. Я предоставляю читателю самому сообразить, почему это происходит. Излишне говорить, что операцию сдвига разрядов в электронных схемах производить неизмеримо проще, чем операции деления и умножения. Дробные числа Сразу заметим, что в некомпьютерной электронике дробными числами стараются не пользоваться. При необходимости их переводят в целые, умножая на соответствующую степень десяти (а чаще — даже на степень 2, что много проще, как мы видели ранее), при этом все остальные участвующие в расчетах величины также масштабируются в нужное число раз. Затем при выводе, к примеру, на цифровой дисплей запятая просто устанавливается в нужном месте: для цифровой схемы не существует значения температуры, равного 30,81°, а есть число 3081 в BCD-формате, запятая же устанавливается отдельно и чаще всего имеет фиксированное положение (хотя и не всегда, конечно). Примерно те же действия мы производили, когда конструировали цифровой термометр в главе 16— на самом деле он показывает целое число милливольт в нужном масштабе. И все же — как мы можем при необходимости представить дробные числа, если двоичные разряды ничего о таковых не знают и могут воспроизводить только целые числа в соответствии с формулой (1)? Мы не будем рассматривать расширение этой формулы, включающее в себя представление в позиционной системе не только целых, но и всех действительных чисел "с плавающей запятой", т. к. в электронике такой вариант не используется (надеюсь, вы разобрались с примером насчет 1E,D градусов и уже сами сообразили, как это можно сделать при необходимости). В электронике и компьютерной технике используют другой способ представления действительных чисел: с помощью мантиссы и порядка в так называемом нормализованном виде. При этом место запятой фиксируется: 0,0125 = 0,125- 10-1 1254,81 =0,125481 • 104 Разумеется, в электронных схемах все это лучше делать в двоичной форме, записывая порядок как степень двух (скажем, операция выравнивания порядков при сложении таких чисел сведется просто к сдвигу мантиссы, как мы видели выше). Легко заметить, что и саму запятую, и основание степени тут можно опустить, записывая в память лишь мантиссу и порядок— конечно, если всегда помнить, что мы имеем в виду. Например, можно сделать так: отвести в памяти
три байта, из которых первые два хранят цифры мантиссы, а третий отведен под порядок. Легко также подсчитать, каков будет диапазон чисел, могущих быть представленными таким образом: число, которое представляет мантиссу, будет укладываться в диапазон от -32 768 до 32 767, т. е. иметь от 4 до 5 значащих десятичных цифр. Последнюю величину надо пояснить. Число, к примеру, 51 324 мы записать с помощью двух байт со знаком не сможем: нам придется записать его в виде 5 132 • 101, т. е. младший разряд "обрежется" (степень десятки тут приведена лишь для иллюстрации, напомним, что на самом деле там будет степень двойки). То есть тут будет всего четыре значащих цифры, а вот число 21 324 обрезать не придется, и в нем будет уже 5 цифр. Гораздо лучше дело обстоит с порядком: он может принимать значения от -128 до 127, что равносильно десятичному порядку примерно от 10~39 до 1038. Казалось бы, четырех-пяти знаков мантиссы вполне достаточно для большинства практических применений, однако все дело в том, что при выполнении арифметических действий будут накапливаться ошибки и реальная разрядность результатов вычислений значительно понизится. Поэтому мантиссу действительных чисел в компьютерной технике представляют обычно не менее чем тремя байтами, а общее представление действительного числа в самом экономном виде будет занимать 4 байта6. Если учесть, что для повышения точности вычислений (особенно при делении) приходится в процессе работы увеличивать разрядность чисел, как минимум, вдвое и при этом еще заниматься операциями типа выравнивания порядков при сложении чисел, то вы поймете, во-первых, почему от действий с действительными числами в обычной некомпьютерной электронике стараются по мере возможности отказаться, а во-вторых, почему именно скорость работы при операциях с "плавающей запятой" является одним из самых важных показателей быстродействия компьютерных микропроцессоров. Более подробно мы на этом вопросе останавливаться не будем. 6 Что соответствует разрядности регистров в большинстве современных компьютерных 32-разрядных микропроцессоров.
Глава 20 Математическая электроника или игра в квадратики. Устройство логических микросхем и двоичные операции Трактирщик отворил дверь большой комнаты, где совсем недавно вместо прежней дрянной печурки поставили прекрасный большой камин. А. Дюма, "Три мушкетера" Разновидностей логических (или цифровых — будем считать, что это синонимы) микросхем не так уж и много, и подавляющее большинство из них относится к одной из двух разновидностей — ТТЛ (TTL, Транзисторнотранзисторная логика) и КМОП (CMOS, Комплементарные [транзисторы типа] металл-окисел-полупроводник). Сразу следует усвоить, что различие между ними чисто технологическое, функционально одноименные элементы из этих серий делают одно и то же и на схемах обозначаются одинаково. С точки же зрения электрических параметров они довольно сильно различаются, хотя и не настолько, чтобы можно было бы заявить об их полной несовместимости. Транзисторно-транзисторная логика возникла раньше и явилась наследницей диодно-транзисторной логики (ДТЛ), примеры которой мы приводили в главе 18, и резисторно-транзисторной логики (РТЛ). Основной родовой признак ТТЛ— использование биполярных транзисторов, причем структуры только п-р-п. КМОП же, как следует из ее названия, основана на полевых транзисторах с изолированным затвором структуры МОП, причем комплементарных, т. е. обоих полярностей — и с п- и с p-каналом. Есть и другие логические серии, отличающиеся по технологии от этих двух основных, но они либо используются исключительно в составе больших интегральных схем (БИС), таких, как микропроцессоры, либо имеют достаточно узкий и специфический диапазон применения, поэтому мы рассматривать их не будем. Заметим, что и ТТЛ мы тоже рассмотрим исключительно ввиду их практической важности и необходимости в связи с этим знать присущие им специфические особенности, а на практике в наших устройствах будем пользоваться только КМОП-микросхемами. Почему — вы поймете чуть позже.
Сравнение основных характеристик ТТЛ и КМОП Схемотехника базовых логических элементов ТТЛ и КМОП приведена на рис. 20.1. На западе их еще называют вентилями — чем можно оправдать такое название, мы увидим в конце главы. Входной многоэмиттерный транзистор ТТЛ мы уже рисовали в главе 12 — он может иметь сколько угодно (на практике — до 8-ми) эмиттеров, и элемент тогда будет иметь соответствующее число входов. Если любой из эмиттеров VT1 замкнуть на "землю", то транзистор откроется, и фазорасщепляющий транзистор VT2 (с его работой мы знакомы по рис. 6.7) закроется. Соответственно, выходной транзистор VT3 откроется, a VT4— закроется, на выходе будет высокий логический уровень или уровень 1. Если же все эмиттеры присоединены к высокому потенциалу (или просто "висят в воздухе"), то ситуация будет обратная — VT2 откроется током через переход база-коллектор VT1 (такое включение называется "инверсным") и на выходе установится 0 за счет открытого транзистора VT4. Таким образом такой ТТЛ-элемент будет осуществлять функцию И-НЕ (лог. 0 на выходе только при единицах на всех входах). Выходной каскад такого элемента представляет собой некое подобие комплементарного ("пушпульного") каскада класса В, хорошо знакомого нам по аналоговым усилителям (см. рис. 9.2 и приложение 3), однако воспроизведение р-п-р-транзисторов оказалось для ТТЛ-технологии слишком сложным, поэтому такой каскад носит еще название псевдокомплементарного — верхний транзистор VT3 работает в режиме эмиттерного повторителя, а нижний — в схеме с общим эмиттером*. Кстати, заметим, что из-за недоступности р-п-р-транзисторов воспроизведение схемы ИЛИ для ТТЛ-технологии оказалось крепким орешком, и ее схемотехника довольно существенно отличается от показанной на рис. 20.1 базовой схемы элемента И-НЕ, хотя по входам и выходам они, естественно, ведут себя одинаково. Как видно из схемы, ТТЛ-элемент существенно несимметричен. Во-первых, по входу напряжение логического 0 должно быть достаточно близко к "земле", при напряжении на эмиттере около 1,5 В входной транзистор уже запирается. Причем при подаче 0 нужно обеспечить отвод довольно значительного 1 На заре транзисторной техники такие псевдокомплементарные каскады использовались — о ужас! — для усиления звука. Это дало основания для многочисленных попыток приспособить логические элементы, которые, в сущности, представляют собой усилитель с довольно большим (несколько десятков) коэффициентом усиления для усиления аналоговых сигналов. Излишне говорить, что результаты довольно плачевные даже с КМОП-каскадом, который построен куда более симметрично, но все же в некоторых случаях логические элементы в аналоговом режиме используются, на чем мы немного остановимся в главе 21.
ТТЛ "И-НЕ" Рис. 20.1. Схемы базовых элементов ТТЛ и КМОП +1/ПИТ Вых КМОП "НЕ" тока база-эмиттер (около 1,6 мА для каскада на рис. 20.1, причем, что любопытно, количество входов, на которые подан логический 0, почти не влияет на суммарную величину этого тока), в то время как логическую единицу можно не подавать вовсе (практически, однако, подавать следует — по правилам незадействованные входы ТТЛ должны быть присоединены к питанию через резисторы 1кОм, хотя входного тока при логической 1 на входе у ТТЛ практически и нет). Еще хуже дела обстоят на выходе: если напряжение логического 0 обеспечивается открытым транзистором и действительно довольно близко к нулю (даже при нагрузке в виде десятка входов других таких же элементов оно не превышает 0,5 В, в нормах же на сигнал ТТЛ оговорена величина не более 0,8 В), то напряжение логической 1 довольно далеко отстоит от питания и, в лучшем случае (без нагрузки), составляет от 3,5 до 4 В, практически же в нормах оговаривается величина 2,4 В. Такое балансирование десятыми вольта (напряжение нуля 0,8 В, напряжение порога переключения от 1,2 до 2 В, напряжение единицы 2,4 В) приводит к тому, что все ТТЛ-микросхемы могут работать в довольно узком диапазоне напряжений питания— практически от 4,5 до 5,5 В, или даже от 4,75 до 5,25, т. е. 5 В ±5%. Максимально допустимое напряжение питания составляет для разных ТТЛ-серий от 6 до 7 В, при превышении его они обычно горят ясным пламенем. Низкий и несимметричный относительно питания порог срабатывания элемента приводит и к низкой помехоустойчивости. Другим крупным (и даже более серьезным, чем остальные) недостатком ТТЛ является высокое потребление (до 2,5 мА на один такой элемент, так что приходится только удивляться, почему микросхемы ТТЛ, содержащие много базовых элементов, скажем, счетчики, не требуют охлаждающего радиатора). Сочетание низкой помехоустойчивости с высоким потреблением — смесь
довольно гремучая, и при разводке плат с ТТЛ-микросхемами приходится ставить фактически по развязывающему конденсатору на каждый корпус, как мы говорили в главе 10. Все перечисленное в совокупности давно бы заставило отказаться от технологии ТТЛ вообще, однако у них есть одно неоспоримое преимущество: высокое быстродействие, которое для базового элемента в виде, показанном на рис. 20.1, может достигать десятков МГц. В дальнейшем развитие ТТЛ шло по линии уменьшения потребления и улучшения электрических характеристик, в основном, за счет использования т. н. переходов Шоттки, на которых падение напряжения может составлять 0,2—0,3 В, а не обычные 0,6—0,7 В (технология ТТЛШ, обозначается буквой S в наименовании серии). Базовая технология, которая составляла основу широко распространенной в 70-х годах серии 74хх (отечественные серии 155 и 133), сейчас практически не используется. ТТЛ-микросхемы в настоящее время можно выбирать из вариантов, представленных малопотребляющими сериями типа 74LSxx или быстродействующими типа 74Fxx, причем потребление последних практически равно потреблению старых базовых серий при более высоком (до 100 МГц) быстродействии, а для первых все наоборот — быстродействие сохранено на уровне базового (10—30 МГц), зато потребление питания снижено раза в три. Нормативные уровни логического сигнала ТТЛ остались прежними (0,8—2,4 В), но практически всегда можно считать, что выходной сигнал логической 1 составляет при ненагруженном выходе от 3,5 В и выше. КМОП-элементы намного ближе к представлению о том, каким должен быть идеальный логический элемент. Во-первых, как можно видеть из рис. 20.1, они практически симметричны, как по входу, так и по выходу. Открытый полевой транзистор на выходе (либо p-типа для логической 1, либо n-типа для логического 0) фактически представляет собой, как мы знаем, сопротивление, которое для обычных КМОП-элементов может составлять от 500 до 1000 Ом (в зависимости от величины напряжения питания; у умощненных элементов эта величина составляет от 100 до 300 Ом), причем для дополнительной симметрии на выходе обычно ставят последовательно два инвертора, подобных показанному на рис. 20.1 справа (жалко, что ли, транзисторов?). Поэтому симметрию не нарушает даже то, что в нижнем плече для схемы И-НЕ стоят два таких транзистора последовательно (для схемы ИЛИ они будут стоять в верхнем плече— она полностью симметрична схеме И, что тоже плюс для технологии КМОП в отличие от ТТЛ). Обратите внимание, что выходной каскад инвертора построен не по схеме "пушпульного" каскада, т. е. это не истоковые повторители напряжения, а транзисторы в схеме с общим истоком, соединенные стоками, что позволяет получить дополнительный
Математическая электроника или игра в квадратики. Устройство логических... 331 коэффициент усиления по напряжению. На практике особенности построения элемента приводит к тому, что в КМОП-микросхемах: □ напряжение логической 1 практически равно напряжению питания, а напряжение логического 0 практически равно потенциалу "земли" (при нена-груженных выходах); □ порог переключения практически равен половине напряжения питания; □ входы практически не потребляют тока, т. к. представляют собой изолированные затворы МОП-транзисторов; □ в статическом режиме весь элемент также не потребляет тока от источника питания. Представляете: схема любой степени сложности, построенная с помощью КМОП-элементов, в "застывшем" состоянии или при малых рабочих частотах, не превышающих десятка-другого килогерц, практически не потребляет энергии! Отсюда ясно, как стали возможными такие фокусы, как наручные часы, которые способны идти от малюсенькой батарейки годами (лично у меня часы Casio идут от одного элемента РЦ вот уже шестой год) или sleep-режим микроконтроллеров, в котором они потребляют от 1 до 50 мкА. Другое следствие вышеперечисленных особенностей — исключительная помехоустойчивость, достигающая половины напряжения питания. Но это еще не все преимущества — обычные КМОП-микросхемы, подобно многим операционным усилителям, могут работать в диапазоне напряжений питания от 3 до 15 В! Единственное, что при этом происходит— при снижении питания довольно резко — в разы — падает быстродействие. Между прочим, выходные транзисторы КМОП, как и любые другие полевые транзисторы, при перегрузке, например, в режиме короткого замыкания, работают как источники тока — при напряжении питания 15 В этот ток составит около 30 мА, при 5 В — около 5 мА. Причем это штатный долгосрочный режим работы таких элементов, единственное, что при этом надо проверить — не превышается ли предельно допустимое значение рассеиваемой мощности для корпуса (0,5—0,7 Вт), т. е., возможно, придется ограничить число выходов, одновременно подключенных к низкоомной нагрузке. Естественно, о логических уровнях тут уже речи не идет, только о втекающем или вытекающем токе. И тут мы плавно переходим к основному недостатку КМОП-технологии — низкому (в сравнении с ТТЛ) быстродействию. Это обусловлено тем, что изолированный затвор МОП-транзистора представляет собой конденсатор довольно большой емкости — в базовом элементе до 10—15 пФ. В совокупности с выходным резистивным сопротивлением предыдущей схемы такой конденсатор образует фильтр нижних частот. Обычно рассматривают не про
сто частотные свойства, а время задержки распространения сигнала на один логический элемент. Задержка возникает из-за того, что фронт сигнала не строго вертикальный, а наклонный и напряжение на выходе еще только начнет нарастать (или снижаться) тогда, когда напряжение на входе достигнет уже значительной величины (в идеале — половины напряжения питания). Время задержки может достигать у стандартного КМОП величины 250 нс (сравните— у базовой серии ТТЛ всего 10 нс), что соответствует одному периоду частоты 4 МГц. На практике при напряжении питания 5 В быстродействие стандартного КМОП не превышает 1—3 МГц— попробуйте соорудить на логических элементах генератор прямоугольных сигналов по любой из схем, которые будут разобраны в главе 23, и вы увидите, что уже при частоте 1 МГц форма сигнала будет скорее напоминать синусоиду, чем прямоугольник. Другим следствием наличия высокой входной емкости является то, что при переключении возникает импульс тока перезарядки этой емкости, т. е. чем выше рабочая частота, тем больше потребляет микросхема, и при максимальных рабочих частотах ее потребление может сравниться с потреблением ТТЛ (по крайней мере, ТТЛ серии 74LS). Дело еще усугубляется тем, что из-за затянутых фронтов импульсов элемент достаточно длительное время находится в активном состоянии, когда оба выходных транзистора приоткрыты (т. е. возникает так называемый эффект "сквозного тока"). Это же затягивание фронтов в сочетании с высокоомным входом приводит к снижению помехоустойчивости при переключении — если на фронте сигнала "сидит" высокочастотная помеха, то это может приводить к многократным переключениям выхода, как это было у компаратора (см. главу 15). Незадействованные входы элемента КМОП нужно обязательно подключать куда-нибудь — либо к земле, либо к питанию (без всяких, конечно, резисторов), либо объединять с соседним входом — иначе наводки на столь высокоомном входе полностью нарушат работу схемы. Причем в целях снижения потребления следует делать это и по отношению к незадействованным элементам в том же корпусе (но не выводам'.). "Голый" вход КМОП из-за своей вы-сокоомности может стать причиной повышенной "смертности" чипов при воздействии статического электричества, однако на практике входы всегда шунтируют диодами, как показано на рис. 12.4. Развитие КМОП было, естественно, направлено в сторону устранения или хотя бы сглаживания этих недостатков. Однако в отличие от ТТЛ, базовый вариант которой сейчас практически совершенно забыт, оригинальная серия 4000В (у крупнейшего производителя этих микросхем, уже упоминавшейся в главе 12 фирмы Fairchild Semiconductor, принято название CD4000B, и мы тоже так ее будем называть, а отечественные аналоги — это "бытовая" серия
К5612 в корпусе DIP или "военная" 564 в планарном корпусе SOIC или SOT3) применяется и по сей день — в основном, из-за неприхотливости и беспрецедентно широкого диапазона питающих напряжений, что позволяет без излишних проблем совмещать цифровые и аналоговые узлы в одной схеме. Справедливости ради следует упомянуть, что до этого была еще серия 4000А (советский аналог — К176), однако она менее удачна, т. к. быстродействие ее было еще ниже, а диапазон питания (около 9 В) значительно уже и не пересекался с ТТЛ-диапазоном, причем для совместимости пришлось придумывать специальные "преобразователи уровня". Вместе с тем, эту серию стоит помянуть добрым словом, т. к. в ней были реализованы некоторые устройства, которые в более продвинутых сериях отсутствуют и по сей день (скажем, десятичный счетчик с одновременной дешифрацией сигналов в "семисегментный" код, т. е. пригодный для прямого управления ЖК или иными семисегментными цифровыми индикаторами — см. главу 21). В настоящее время доступны как упомянутая стандартная серия CD4000B (561 или 564), так и, например, быстродействующая КМОП с крайне неудачным названием 74НСхх (отечественный аналог называется логичнее— 1564 или КР1564). Номер серии, совпадающий с номером для ТТЛ, был, вероятно, первоначально выбран из маркетинговых соображений, чтобы подчеркнуть ее быстродействие, сравнимое с ТТЛ, однако это совсем не ТТЛ. Чтобы не запутаться, имейте в виду, что если в наименовании серии присутствует буква С (от "комплементарный", кроме НС; это, к примеру, серии АС и просто С), то это КМОП, все остальные многочисленные представители семейства 74 есть ТТЛ-микросхемы. Серия 74НС совмещает в себе некоторые удобства КМОП (симметричность уровней, отсутствие потребления в статическом режиме) и быстродействие ТТЛ, достигающее десятков МГц. Пожертвовать, однако, пришлось расширенным диапазоном питания — номинальный диапазон напряжения питания для 74НС начинается, правда, от 2, но простирается всего до 6 В. Относительно электрической совместимости КМОП и ТТЛ: при едином напряжении питания 5 В особых мер принимать не нужно за исключением того, что количество входов ТТЛ, работающих от микросхемы КМОП, ограничено одним-двумя, иначе падение напряжения на выходном МОП-транзисторе в открытом состоянии (в состоянии логического 0) может превысить ТТЛов-ский порог в 0,8 В. Для того чтобы усилить выходы КМОП, применяют специальные буферные элементы с мощным выходом: с инверсией— 561ЛН1 и ЛН2— или без нее— 561ПУ4. А так, кроме указанных выше различий по электрической части, ничего особенного в совместном применении этих 2 В дальнейшем букву К в наименовании серии мы будем опускать. Наименования аналогов КМОП отечественного и зарубежного производства см. в приложении 5. 3 По поводу наименований корпусов микросхем см. сноску 1 в главе 8.
серий нет — правда, и смысла особенного тоже нет, если только это не стыковка узлов различной конструкции. Следует отметить, что наименования одинаковых по функциональности элементов для КМОП и ТТЛ различаются — так, микросхема, содержащая в одном корпусе четыре элемента И-НЕ, подобных показанным на рис. 20.1, в отечественном варианте КМОП носит имя 561ЛА7 (CD4011 для западного аналога), а в ТТЛ — 155ЛАЗ (7400, причем последнее наименование соблюдается не только для многочисленных типов ТТЛ из 74-й серии, но и для быстродействующих КМОП типа 74НС или АС — создается впечатление, что производители всеми силами старались скрыть КМОП-происхождение этих серий). Традиционно отличается и разводка выводов. Правда, для выводов питания разработчики старались по мере возможности придерживаться единого принципа (это же касается и многих аналоговых микросхем): "земля" присоединяется к последнему выводу в первом ряду, а питание — к последнему во втором, т. е. к выводу с наибольшим номером для данного корпуса (скажем, для корпуса с 14-ю выводами это будут, соответственно, 7 и 14, для корпуса с 16-ю — 8 и 16 и т. д.), но это правило действует далеко не всегда. "И-НЕ" "ИЛИ-НЕ" "НЕ" "Исключающее ИЛИ" Рис. 20.2. Обозначения основных логических элементов на схемах: вверху — отечественное, внизу — западное На рис. 20.2 показаны условные обозначения основных логических элементов на электрических схемах, причем нельзя не согласиться, что отечественные обозначения намного логичнее, легче запоминаются и проще выполняются графически, чем западные, поэтому западные обозначения логических элементов у нас так и не прижились (как, кстати, и многие другие, например, обозначения резисторов и электролитических конденсаторов) и приведены здесь только для справки. Крайний справа элемент под наименованием ИСКЛЮЧАЮЩЕЕ ИЛИ нам еще неизвестен, но скоро мы его будем изучать. Далее в таблице приведена разводка выводов микросхем, содержащих логи
ческие элементы— она одинакова для всех трех наиболее употребляемых логических типов (напомним еще раз, что для серий ТТЛ и быстродействующей КМОП разводка будет другая). Естественно, все элементы абсолютно идентичны и взаимозаменяемы, поэтому для таких микросхем часто избегают размещения номеров выводов корпуса на конкретной схеме, чаще всего не указывают и расположение выводов питания. Разводка выводов КМОП-микросхем с четырьмя двухвходовыми логическими элементами И-НЕ CD4011, 561ЛА7 (корпус DIP-14), 564ЛА7 (корпус SOP-14) ИЛИ-НЕ CD4001, 561ЛЕ5 (корпус DIP-14), 564ЛЕ5 (корпус SOP-14) Исключающее ИЛИ CD4030, 561ЛП2 (корпус DIP-14), 564ЛП2 (корпус SOP-14) Выв. 1 2 3 4 5 6 7 Функц. Вх1/1 Вх1/2 Вых1 Вых2 Вх2/1 Вх2/2 Общ Выв. 8 9 10 11 12 13 14 Функц. ВхЗ/1 ВхЗ/2 ВыхЗ Вых4 Вх4/1 Вх4/2 + пит Мы будем использовать в схемах и простые одновходовые инверторы — это микросхема 561ЛН2, содержащая 6 таких инверторов в одном корпусе DIP-14. Разводка выводов у нее такая (первая цифра — вход, вторая — выход): 1-2, 3-4, 5-6, 9-8, 11-10, 13-12, питание обычное, т. е. + к выводу 14, "земля" — к выводу 7. Отметим, что точного импортного аналога этой микросхемы не существует, есть микросхема CD4049 в корпусе DIP-16, у которой разводка несколько другая и идентична разводке микросхемы, содержащей 6 просто буферных усилителей без инверсии (561ПУ4 или CD4050): питание (внимание!) к выводу 1, "земля" к выводу 8, сами же элементы расположены так: 3-2, 5-4, 7-6, 9-10, 11-12, 14-15, выводы 13 и 16— не задействованы (и, напомним, не должны никуда присоединяться!). Есть, разумеется, элементы с большим количеством входов, и пример их применения мы увидим в следующей главе. Я не буду приводить здесь разводку выводов других типов логических микросхем, т. к. наличие отдельного справочника по ним в любом случае обязательно, в дальнейшем будет показана разводка выводов на законченных конкретных схемах. В качестве справочника, в котором приведены не только основные сведения и разводка выводов, но и подробно объясняется работа всех микросхем базовых серий с многочисленными примерами, я бы рекомендовал разыскать у букинистов книгу [29] — это суперпопулярное пособие вышло в свое время несколькими изданиями, но, к сожалению, давно не переиздавалось, хотя почти не устарело.
Отдельно следует упомянуть, что многие микросхемы КМОП прекрасно коммутируют аналоговые сигналы наподобие реле, иногда даже специально делается отдельный вывод для подключения отрицательного напряжения питания, чтобы можно было пропускать двуполярное напряжение, причем пропускание это осуществляется как в направлении от входа к выходу, так и в обратном направлении (таковы микросхемы 561КТЗ, КП1 и КП2 или, скажем, специально для этого предназначенные микросхемы серии 590КНх). При этом указанные микросхемы прекрасно работают также и с цифровыми сигналами, т. е. являются универсальными. Рис. 20.3. Объединение элементов с открытым коллектором по схеме "проводное ИЛИ" Другой широко употребляемой разновидностью логических микросхем являются элементы, имеющие выход с открытым коллектором (или с открытым истоком). Такой выход, как мы помним, имеет компаратор 521 САЗ (см. главу 15). Есть такие элементы и с чисто логическими функциями— в КМОП-серии это CD40107 (561 ЛАЮ), а в ТТЛ— 7403 (133ЛА7). Как правило, они могут коммутировать значительный ток (до 50 мА, причем интересно, что для схемы с открытым истоком типа ЛАЮ нагрузочная способность по току с увеличением напряжения питания растет). Эти элементы используют не только для коммутации мощной нагрузки, но и для объединения на общей шине в так называемое "проводное" или "монтажное ИЛИ" (рис. 20.3). Название
Математическая электроника или игра в квадратики. Устройство логических... 337 это несколько неудачное, ибо соответствует отрицательной логике — на общей шине логическая единица будет только тогда, когда выходы всех элементов установятся в 1, а если хотя бы один выход находится в нуле, то и на шине будет 0, что в положительной логике соответствует операции И. Относительно входов вся система будет выполнять ту же операцию, что и каждый отдельный элемент— И-НЕ. Для объединения выходов служат и так называемые элементы с третьим состоянием выхода (что соответствует не логическому понятию состояния, а электрическому— третье состояние в данном случае обозначает просто обрыв, отключение выхода элемента от вывода микросхемы). Такие элементы часто применяются в составе более сложных микросхем, например микроконтроллеров. Выходы обычных логических элементов тоже можно объединять с целью умощнения; например, выход одного инвертора в составе упомянутой выше микросхемы ЛН2 номинально "тянет" ток до 3,2 мА (на самом деле гораздо больше, если выйти за пределы ограничений, накладываемых ТТЛ-уровнями), и если соединить выходы всех шести входящих в состав микросхемы элементов, то можно подключать нагрузку до 20 мА. Однако, естественно, что при этом необходимо также объединить и входы, превратив всю микросхему как бы в один мощный инвертор, иначе могут возникнуть всякие электрические коллизии. Еще одно обстоятельство, которое хорошо бы сразу иметь в виду — мы часто будем усиливать выходы микросхем с помощью отдельного ключевого транзистора (т. к. вышеописанные микросхемы с общим коллектором (о.к.) не всегда можно и целесообразно использовать), и схема его включения представляет собой в данном случае исключение из того правила, что в ключевом режиме обязательно "привязывать" базу к "земле", как это было оговорено в главе 6 (см. рис. 6.3 и относящийся к нему текст). Дело в том, что подключенная к выходу логического элемента база транзистора всегда будет привязана (обычно через токоограничивающий резистор) к какому-нибудь потенциалу и в воздухе никогда не "повиснет", поэтому и запирающий резистор можно не ставить. Однако это не относится к случаю, если база управляется от выхода ТТЛ-микросхемы через диод, включенный в прямом направлении, как это часто делают, чтобы обеспечить надежное запирание транзистора (см., например, уже упоминавшуюся в главе 6 книгу [9]) — на мой взгляд, ставить такой диод совершенно не требуется, но если уж вы построили схему именно так, то нужно ставить и запирающий резистор, потому что при нулевом потенциале на выходе микросхемы диод запирается и база тогда "повисает" в воздухе. Между прочим, для КМОП-микросхем можно даже и токоограничивающий резистор не ставить, т. к. выходы их, как мы видели выше, ограничивают ток короткого замыкания, но тогда резко возрастает потребление, и базовые резисторы ставить все же следует (более подробно см. описание "семисегментного" дешифратора в главе 21).
В заключение этого затянувшегося обзора следует упомянуть, что серии 74хх и CD4000 (последнюю часто именуют 4К, как сейчас модно), естественно, были не единственные, существовали и другие аналогичные по функциональности и технологии серии цифровых микросхем, но в настоящее время множеством производителей во всем мире выпускаются именно эти серии (различные буквенные префиксы вместо CD не должны вас смущать). Исключение составляют разве что супермалопотребляющие логические микросхемы или, скажем, микросхемы с очень низким напряжением питания, где общепринятых названий нет. Двоичный сумматор на логических микросхемах Заметим сразу, что схема этого устройства в том виде, в котором мы ее сейчас будем конструировать, сама по себе довольно бесполезна — если вы, конечно, не хотите повторить подвиг советского конструктора Михаила Александровича Карцева, создавшего в 1970-х годах на микросхемах малой степени интеграции (т. е. фактически на отдельных логических элементах) очень удачную ЭВМ под названием М-10, отличавшуюся тем, что отдельные ее экземпляры в нашем оборонном комплексе, по слухам, продержались аж до начала нового тысячелетия. Учтите только, что основная проблема, которую вам придется решать при использовании микросхем малой степени интеграции, состоит вовсе не в том, чтобы такую машину сконструировать схемотехнически— это не самая трудная часть работы. Самое трудное для подобных суперконструкций— решить проблему отвода тепла. В качестве примера можно привести построенный в 2003 г. в Вирджинском университете суперкомпьютер на основе 1100 серийных компьютеров G5 фирмы Apple, в каждом из которых в отдельности, казалось бы, проблема отвода тепла уже решена (и расчет разработчиков был именно на то, чтобы максимально удешевить проект и не заниматься лишними изысканиями). Однако если все "железо", включая компьютеры, кабели, коммуникаторы и т. п. обошлось организаторам в $5 миллионов, то система охлаждения к этому хозяйству стоила еще почти $3 миллиона. Пришлось строить специальную холодильную установку! А ведь в серийных процессорах для ПК проблемой тепловыделения занимаются уже десятилетиями. Если же попробовать построить нечто подобное хотя бы одному процессору G5 на обычной логике, то тепловыделение вырастет на много порядков (не говоря уж о том, что достичь быстродействия порядка гигагерц и выше заведомо не удастся даже в первом приближении). Так что в настоящее время схемы сумматоров применяют исключительно в составе больших интегральных схем, БИС.
Зачем мы тогда будем конструировать сумматор? А затем, что его устройство очень хорошо иллюстрирует две вещи: во-первых, использование логических микросхем, во-вторых, — разве не любопытно знать, как устроен самый главный узел компьютера, арифметико-логическое устройство, АЛУ? Знание этого вам очень пригодится для лучшего понимания работы микроконтроллеров и принципов их программирования. Так как схема, которую мы сейчас будем разбирать, не предназначена для того, чтобы ее воспроизводить физически, все технологические подробности мы опустим — если кто-то захочет воспроизвести такую схему, то это сделать очень просто, если использовать любую из тех серий логических микросхем, которые мы разбирали ранее. Для определенности примем, что мы используем КМОП, и все названия микросхем будут именно для этой серии (в отечественном варианте). Итак, вспомним, что нам, собственно, нужно делать — а именно, воспроизвести таблицу сложения двоичных чисел, которая была показана для одноразрядных чисел в предыдущей главе. Так как при сложении единиц получается двухразрядное число, то перепишем эту таблицу в двухразрядном представлении: Вх1 Вх2 Вых 0 0 00 0 1 01 1 0 01 1 1 10 Теперь разобьем таблицу на две: одну для разряда собственно суммы, другую для значения переноса в следующий разряд: Сумма Вх1 Вх2 Вых 0 0 0 0 1 1 1 0 1 1 1 0 Перенос Вх1 Вх2 Вых 0 0 0 0 1 0 1 0 0 1 1 1
Сравним вторую таблицу с таблицей состояний для базовых логических функций (таблицы для И и ИЛИ приведены в главе 18, но я их повторю для того, чтобы не приходилось листать книгу туда-сюда): ИЛИ Вх1 Вх2 Вых 0 0 0 0 1 1 1 0 1 1 1 1 и Вх1 Вх2 Вых 0 0 0 0 1 0 1 0 0 1 1 1 Имеем полное совпадение с функцией И: итак, для того, чтобы обеспечить перенос, нам нужно всего лишь один логический элемент И, который получается из стандартного И-НЕ плюс инвертор4. Не то с разрядом суммы: первые три значения обеспечивает элемент ИЛИ, однако при сложении единиц возникает несоответствие (логическое и арифметическое сложения все же неадекватны друг другу). Нужен специальный элемент, который мог бы получить название "элемент несовпадения": в самом деле, у него логическая единица на выходе тогда, когда входы имеют разное состояние, а если они одинаковы — на выходе 0. Для того чтобы его изобрести, взглянем на таблицу истинности элемента И-НЕ (для наглядности я ее тоже повторю): И-НЕ Вх1 Вх2 Вых 0 0 1 0 1 1 1 0 1 1 1 0 4 Вообще-то, например, в ТТЛ-сериях, есть и непосредственно элементы И без инверсии, н< уже для ИЛИ таких элементов нет, а в КМОП вообще существуют элементы только с инверси ей, так что в целях унификации мы будем пользоваться только элементами И-НЕ и ИЛИ-HI (для КМОП это 561ЛА7 и 561ЛЕ5 соответственно).
Сравним таблицы ИЛИ, И-НЕ и необходимой нам суммы — в первом случае мы получаем то, что надо, в верхних трех строках, во втором — в нижних. Как бы их объединить? Да очень просто — через функцию И: Сумма Вх1 Вх2 Вых ИЛИ Вых И-НЕ ИЛИ + И-НЕ (Исключающее ИЛИ) 0 0 0 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 0 0 Вх1 Вх2 & Рис. 20.4. Варианты реализации элемента Исключающее ИЛИ и его таблица истинности «Исключающее ИЛИ» Вх1 Вх2 Вых 0 0 0 0 1 1 1 0 1 1 1 0
Элемент, который осуществляет функцию "несовпадения", носит название "Исключающее ИЛИ", и его обозначение уже было показано на рис. 20.25. Как это будет выглядеть на элементах И-НЕ и ИЛИ-НЕ, показано на рис. 20.4. Вариант вверху полностью соответствует нашим рассуждениям и потребует двух корпусов микросхем, а вариант внизу— пример того, как можно построить Исключающее ИЛИ с использованием только одного типа элементов, в данном случае — И-НЕ, что позволяет еще и сэкономить один элемент, так что этот вариант потребует всего одного корпуса типа 561ЛА7. Попробуйте построить таблицу истинности для второго варианта— и вы убедитесь, что он работает "как заказывали" (есть и много других способов). Отметьте, что в первом варианте специальных элементов-инверторов мы не используем, а с целью экономии корпусов микросхем образуем их из элементов И-НЕ или ИЛИ-НЕ путем объединения входов (как вы можете убедиться, построив соответствующие таблицы состояний, такое объединение превратит в инвертор любой из этих элементов). Впрочем, как мы видели в таблице с разводкой выводов основных элементов, в любой логической серии есть и специальные микросхемы Исключающее ИЛИ (561ЛП2). Элемент Исключающее ИЛИ, помимо способности выдавать сумму одноразрядных чисел, обладает многими интересными свойствами, к которым мы обратимся далее. Все, одноразрядный сумматор мы построили. Его схема приведена на рис. 20.5 вверху. Разумеется, Исключающее ИЛИ можно заменить на одну из схем по рис. 20.4 или использовать отдельную микросхему, как больше понравится. Внизу на рис. 20.5 мы обозначили все устройство одним квадратиком. Однако почему "полусумматор"? Такой одноразрядный сумматор носит название полусумматора, потому что он не умеет одной важной вещи: а именно разряд-то переноса он выдает, а вот учесть перенос от предыдущего разряда он не может. Поэтому, чтобы складывать настоящие многоразрядные числа, нужно в каждом разряде поставить по два таких полусумматора, причем объединить их выходы переносов через ИЛИ (рис. 20.6). Так мы получили одноразрядный полный сумматор, объединением которых несложно соорудить устройство для сложения чисел любой разрядности (на рис. 20.6 это условно показано тем, что данный сумматор складывает разряды с номером i — подразумевается, что таких разрядов как бы много). Если вы попробуете разрисовать схему сумматора для, скажем, восьми разрядов 5 Признаюсь, что я никогда не мог понять, почему в отечественной практике Исключающее ИЛИ обозначают значком "=1". По смыслу это обозначение больше подошло бы обратному элементу "совпадения", который представляет собой инверсию выхода Исключающего ИЛИ и носит название Включающего ИЛИ.
Рис. 20.5. Схема одноразрядного полусумматора Рис. 20.6. Схема многоразрядного сумматора полностью, с использованием принципиальных схем логических элементов по рис. 20.1, то ужаснетесь— это же сколько транзисторов надо, чтобы построить такое устройство? Много— в восьмибитном КМОП-сумматоре их получается 480 штук! И это без учета того, что в систему должны входить еще, как минимум, два регистра6 для хранения исходных чисел и результата 6 Регистры мы будем разбирать в главе 24.
(в целях экономии результат помещают в регистр одного из слагаемых, тем самым уничтожая это слагаемое ), а также другие логические схемы (для сдвига, для инверсии битов). То есть общее количество транзисторов составляет порядка тысячи. Теперь понятно, почему микросхемы высокой степени интеграции содержат миллионы транзисторов и почему проблема отвода тепла стоит так остро! Один логический элемент КМОП-типа из четырех транзисторов выделяет всего-навсего 4 мкВт тепла (при максимальной частоте в единицы мегагерц), но что будет, если таких элементов приходится ставить в количестве миллион штук? И еще при этом повышать рабочую частоту до предела? Сумматоры, построенные по описанной схеме, выпускают, естественно, в интегральном исполнении (в КМОП это микросхема четырехразрядного сумматора 561ИМ1, есть и схема более универсального АЛУ — арифметико-логического устройства— 561ИПЗ). В связи с многоразрядным сумматором возникает только один вопрос: а что делать со входом переноса самого первого, младшего разряда? Тут можно поступить двояко в зависимости от того, что мы делаем. Если просто складываем двоичные числа разрядности, соответствующей возможностям нашего сумматора (например, восьмиразрядные, т. е. длиной в один байт), то вход переноса младшего разряда присоединяется к логическому 0, так что переноса "снизу" никогда не возникнет. Соответственно, выход переноса старшего разряда остается "висеть в воздухе". Легко сообразить, что при этом, если мы складываем числа, в сумме составляющие более величины диапазона, старший разряд суммы "потеряется". Это явление при всей своей очевидности стоит того, чтобы разобрать его подробнее. Предположим, мы имеем байтовый сумматор и под числами имеем в виду обычные беззнаковые положительные числа, диапазон которых составит 0—255. Если мы сложим 128 (1000 0000) и 128 (1000 0000), то получим число 256 (1 0000 0000), которое имеет единицу в 9-м, отсутствующем у нас разряде (заодно отметим этот результат как хорошую иллюстрацию к положению, гласящему, что умножение на 2 есть просто сдвиг всех разрядов влево). Таким образом, мы получаем просто 0, что, конечно, есть результат некорректный. То есть имеем правило: числа, дающие в сумме больше разрядов, чем имеется в сумматоре, складывать нельзя — надо наращивать разрядность (на самом деле для операции сложения достаточно добавить всего один разряд — сумма максимальных чисел 255 + 255 есть 510, что не выходит за рамки девятиразрядного числа, укладывающегося в диапазон 0—511; не то, однако, для операции умножения, о чем мы поговорим позже). Если мы будем считать числа со знаками (см. главу 19), то все будет несколько запутаннее, но, в принципе, корректного сложения при ограничении числа разрядов мы все равно не получим — природу не обманешь. А как наращивать разряды,
Математическая электроника или игра в квадратики. Устройство логических...345 если, например, в микроконтроллере, все регистры восьмиразрядные? Да очень просто — надо взять два таких регистра и соединить выход переноса одного со входом переноса другого. Тогда мы получим двубайтовое число (или слово, как его чаще называют). В микропроцессорах, в том числе и в микроконтроллерах, мы, конечно, физически такое объединение сделать не можем — схема уже сделана заранее7, но в них зато есть упоминавшийся нами бит переноса (carry bit), в который автоматически (если мы только не отменили эту операцию) помещается перенос в результате операций сложения, умножения и, кстати, вычитания и деления тоже. Так как операции сдвига битов есть, в сущности, как мы знаем, тоже умножение и деление, то и при этих операциях бит переноса также участвует. Чтобы перенести значение переноса из бита переноса в старший байт двухбайтового слова, надо просто, например, сложить этот старший байт с 0, тогда бит переноса автоматически окажется в младшем двоичном разряде старшего байта (если мы выполнили операцию сложения именно с переносом). Точно так же складываются и двухбайтовые слова— в два приема, сначала младшие байты с переносом, а затем старшие, только теперь уже для них будет действовать правило, согласно которому сумма не должна превышать диапазона. В общем случае корректно сложатся два числа (беззнаковых), каждое из которых имеет на один разряд меньше, чем позволяет разрядность сумматора и регистра для размещения результата (практически это может показаться слишком жестким требованием — в самом деле, две единицы сложатся корректно в любом представлении, но мы "закладываемся" на оба числа, потому что заранее не знаем, каково будет их конкретное значение). Для умножения требования жестче: каждый из сомножителей должен иметь не более чем половинную разрядность от результата. Именно так происходит оперирование с многоразрядными числами в процессорах, и мы видим, что операция сложения с двубайтовым числом требует как минимум вдвое больше времени, чем с однобайтовым (а в случае перемножения двухбайтовых чисел все еще сложнее), что может выливаться в непростительные временные затраты, и потому производители процессоров стараются наращивать их разрядность. В случае с микроконтроллерами это может быть и не так критично, поэтому большинство распространенных контроллеров и по сей день восьмиразрядные. 7 Но есть и целый класс устройств, в которых саму схему можно менять в процессе программирования произвольным образом — они носят название "программируемые логические интегральные схемы" (ПЛИС). 12 Зак. 710
Обработка двоичных сигналов с помощью логических элементов В начале главы мы упоминали, что логические элементы носят еще название вентилей. На самом деле вентиль — это устройство для регулирования потока жидкости или газа. Каким же образом оправданно это название в приложении к нашим схемам? Оказывается, если на один из входов логического элемента подавать последовательность прямоугольных импульсов (некую аналогию потока), а на другой — логические уровни, то в этом случае элемент будет себя вести совершенно аналогично вентилю настоящему. Вх1 Вх2 Выход "И-НЕ" Выход "ИЛИ-НЕ" Выход "Пекл. ИЛИ" Рис. 20.7. Обработка цифровых сигналов при помощи логических элементов: а — диаграммы прохождения сигналов через основные типы логических элементов; б — "анитидребезг” на основе элемента Исключающее ИЛИ; виг— использование элемента Исключающее ИЛИ для выявления разности фаз (в) и частот (г) сигналов
Соответствующие диаграммы показаны на рис. 20.7, а. Из них вытекают следующие правила: □ для элемента И-НЕ логический уровень 1 является "разрешающим", т. е. в этом случае последовательность на другом входе пропускается на выход без изменения (за исключением того, что она инвертируется, т. к. элемент у нас И-НЕ, а не просто И). При логическом уровне 0 вентиль запирается, на выходе будет логическая 1; □ для элемента ИЛИ-НЕ ситуация полностью обратная: "разрешающим" является логический уровень 0, т. е. в этом случае последовательность на другом входе пропускается на выход (также с инверсией). При логическом уровне 1 вентиль запирается, на выходе будет логический 0; □ для Исключающего ИЛИ все еще интересней: в зависимости от того, 0 на входе или 1, относительно другого входа элемент ведет себя, соответственно, как повторитель или как инвертор, что дает довольно широкие возможности для управления двоичными последовательностями. На рис. 20.7, б показана интересная схема на основе элемента Исключающее ИЛИ. Эта схема устраняет неизбежный дребезг механических контактов, который может вызвать (более того, вызывает обязательно) многократное срабатывание некоторых электронных схем, например, триггеров или счетчиков. Обычно с этим явлением борются с помощью RS-триггеров, и мы рассмотрим, как это делается, в главе 24. Однако при наличии свободного элемента Исключающее ИЛИ устранить дребезг, как видите, очень просто. Чтобы понять, как это работает, надо учесть, что подвижные контакты кнопки, тумблера или реле никогда не пролетают несколько раз расстояние от одного неподвижного контакта до другого— подвижной контакт только несколько (иногда до нескольких десятков) раз за короткое время оказывается "висящим в воздухе" (представьте себе, что он как бы подпрыгивает на неподвижном контакте, причем как при размыкании, так и при замыкании). При этом подачи напряжения, соответствующего противоположному логическому уровню, не происходит, но этого достаточно, чтобы на выходе микросхемы вызвать нечто, похожее на дребезг выхода компаратора при наличии помехи. В схеме по рис. 20.7, б обязательно требуется именно перекидной контакт, для простой кнопки с двумя выводами нужно использовать иные способы (например, одновибратор, см. главу 23). В данном же случае происходит вот что. При наличии 0 на одном из входов Исключающее ИЛИ работает как повторитель. Если контакт был замкнут (надежно) с потенциалом питания (лог. 1), то на выходе будет также 1. Когда контакт в процессе дребезга разомкнется и "повиснет в воздухе", то потенциал на выходе все равно останется равным 1, т. к. поддерживается обратной связью, замыкающей выход со входом. Сколько бы контакт не дребезжал таким образом, потенциал останется равным 1
до первого касания контактом "земли", когда элемент перебросится в другое состояние и будет в нем пребывать опять независимо от того, дребезжит контакт или нет. Разумеется, можно и инвертировать сигнал, если присоединить второй вход к питанию, а не к "земле". Самое, однако, интересное будет, если на входы Исключающего ИЛИ подать две последовательности импульсов с разными частотами и/или фазами. На рис. 20.7, в показано, что произойдет, если обе последовательности имеют одинаковую частоту, но фазы при этом сдвинуты на полпериода. На выходе при этом возникнет колебание с удвоенной частотой! Попробуйте изменить фазу— вы увидите, что скважность результирующего колебания будет меняться, пока фазы не совпадут, и тогда сигнал на выходе исчезнет — одинаковые состояния выходов дают на выходе Исключающего ИЛИ всегда логический 0. Это позволяет использовать такой элемент в качестве "фазового компаратора", что широко используется в фазовых модуляторах и демодуляторах сигнала. Не менее интересный случай показан на рис. 20.7, г— здесь на входы подаются последовательности с различающейся частотой. Мы видим, что на выходе возникнет сигнал с изменяющейся скважностью, причем легко показать, что период изменения этой скважности от минимума к максимуму и обратно будет в точности равен периоду сигнала с частотой, равной разности исходных частот. Если при этом поставить на выходе элемента фильтр низкой частоты (если разность частот невелика в сравнении с исходными частотами, то достаточно простой RC-цепочки), то мы получим синусоидальное колебание с частотой, равной этой разности! Это колебание можно как-то использовать (сравните с принципом работы усилителей в режиме D, приведенным в приложении 3) или, например, можно его подать в качестве сигнала обратной связи на генератор, управляемый напряжением (ГУН), который тогда изменит частоту одного из сигналов так, чтобы она в точности совпадала со второй (опорной). Так, скажем, делают схемы умножителей частоты, получая целый набор точных частот с использованием одного-единственного опорного кварцевого генератора. Другие, не менее интересные применения логических элементов мы разберем в следующих главах.
Глава 21 Закодированные. Коды, шифры и дешифраторы — Итак... — ответил д'Артаньян, нагибаясь к уху Атоса и понижая голос, — итак, миледи заклеймена на плече цветком лилии. А. Дюма, "Три мушкетера" Начнем с того, что с кодами вы имеете дело каждый день — все, что записано, есть код. Например, запись "48" есть не что иное, как код числа 48. Не правда ли, довольно необычно звучит? Между тем, это же самое утверждение уже не будет выглядеть столь же странно, если мы скажем, что запись "00110000" или "30" есть, соответственно, двоичный или шестнадцатеричный код числа 48, правда? Но с формальной точки зрения это одно и то же — есть некий объект — число, — который можно закодировать по-разному. Более того, код этот, как мы отмечали ранее, будет совершенно произвольным и является предметом договора между людьми, причем в одних случаях удобно употреблять одни коды, в других— другие. Скажем, то же самое число 48 есть не что иное, как код символа цифры 0 в таблице символов ASCII1. А "0011 0001" (49) в этой таблице есть код единицы (подчеркнем — не цифры 1, а символа этой цифры в европейской записи арабских цифр. Для символа той же 1 в арабской записи будет употребляться уже совершенно иной код). Поэтому, например, запись "ООН 0001 ООН 0000" может быть проинтерпретирована как: О запись числа 11 000 100 110 000 ю (11 биллионов 100 миллионов 110 тысяч); О запись числа 31ЗОЬ = 12592ю (проверьте!); О запись последовательности символов "1" и "0", т. е. просто как запись числа 10; и многими другими различными способами. 1 ASCII — American Standard Code for Information Interchange ("американский стандартный код для обмена информацией"). Базовый код ASCII является семибитным, т. е. включает только 128 символов. Все остальные современные кодировки (например, Win-1251 или Unicode) включают в себя ASCII как составную часть.
Любой абстрактный или даже реальный объект можно закодировать для его представления в человеческом сознании любым способом, вспомните из фильмов о войне "Чайка, Чайка, я — Ласточка, прием...". Здесь "Чайка" есть код, который обозначает конкретного командира конкретного взвода. А может и изображать не конкретного командира, но конкретного взвода. А может, наоборот, конкретного человека безотносительно к тому, каким взводом он командует. В эпиграфе приведен другой пример кода: клеймо в виде знака лилии, зафиксированное на теле жертвы палача, в данном случае, есть код, который обозначает, что уважаемая миледи в молодости занималась проституцией. Подобными способами на Диком Западе широко пользовались для клеймения рогатого скота и лошадей — чтобы не украли. Но самый удобный и часто употребляемый на практике — числовой код ("первый, я — третий, какие указания?"). Интересно, что к числовому коду прибегают даже для выражения совершенно неисчислимых сущностей, таких, как эмоции и чувства, вспомните обыденные выражения: "от страха я наполовину потерял способность соображать" или "я уверен на все сто процентов". Главное же предназначение любого кода, как вы, наверное, уже поняли — передача информации. Обыкновенный разговорный язык — тоже код. А мимика и жесты кодируют и передают собеседнику информацию о вашем состоянии, причем, отметьте две вещи: во-первых, таким кодом хорошо умеют пользоваться и животные, априорно лишенные возможности разговаривать, во-вторых, эти коды тоже часто есть результат договоренности, хрестоматийный пример— покачивание головой в горизонтальной плоскости, которое у нас обозначает "нет", а у болгар — наоборот, "да". Но вернемся к числовым кодам, которые, естественно, получили особое распространение с развитием компьютерных технологий. Но и не только — еще задолго до всяких компьютеров числами кодировали, скажем, письменную речь. Основная задача при этом — чтобы текст никто не мог прочесть, кроме тех, кому это предназначено. Такое кодирование называется шифрованием. То есть шифр — это специальный код, который есть результат договоренности между получателем и отправителем сообщения. Конечно, шифр может быть и не цифровым, что хорошо известно из шпионских романов: фраза "Тетушка Полли шлет вам новогодние поздравления" может означать, к примеру, "приступайте к выполнению задания". Когда вы слышите в новостях, что был приведен в действие план "Вулкан-5", то это тоже шифр, причем в данном случае подразумевается, что все знают, что это обозначает (а на самом деле — найдите мне хоть одного такого, если он, конечно, не служит в милиции). Или вот яркий пример словесного шифра — попробуйте разгадать фразу: "Федька Костров обсморкнулся на штатских,
президенты разрешил". Даю слово, что, если вы не вращались в кругах московской шпаны, то вам нипочем не понять, о чем здесь вообще речь— на самом деле эта фраза на арго (т. е. на специфическом языке определенной социальной группы, в данном случае, приблатненной московской молодежи) утверждает, что Фидель Кастро перепугался американцев и разрешил хождение долларов. Очень эффективный шифр, не правда ли? Но все же настоящий шифр может быть только цифровым. Под "настоящим" тут имеется в виду шифр, обладающий следующими свойствами: □ его сложно разгадать; □ исходное сообщение восстанавливается однозначно. Буквенный шифр — когда одни буквы заменяют на другие или их сочетания— относится также к цифровым, потому что букву можно не только представлять ее цифровым кодом (например, ASCII), но и рассматривать как число, представленное в системе счисления с основанием, равным количеству букв в алфавите. Шифры есть предмет специальной и интереснейшей науки — криптографии, и остается только пожалеть, что рассмотрение ее принципов выходит за рамки этой книги. Шифрование производится не только для скрытия информации — обычное архивирование компьютерных файлов (архиваторы типа ZIP, RAR и др.) есть тоже шифрование, которое в данном случае ни от кого ничего не скрывает, а просто позволяет уменьшить избыточность информации и, тем самым, ее объем. Про избыточность мы поговорим в следующей главе, а пока вернемся к двоичным кодам. Различные двоичные коды Двоичным кодом является отнюдь не только запись числа в двоичной системе (которую мы здесь будем называть простым или обычным двоичным кодом) — это всего лишь одна из разновидностей. Как мы видели, символы тоже можно представлять в двоичном коде. Например, известная азбука Брайля для слепых— типичный двоичный код. Двоичным часто называют и код Морзе — однако это, строго говоря, не так. В азбуке Морзе двух символов (точки и тире) недостаточно, там используется как минимум еще один знак— пауза. Его можно было бы и не считать за отдельный знак, т. к. он просто разделяет точки и тире между собой — если бы только не необходимость разделять буквы и слова. В азбуке Морзе количество точек и тире в коде отдельных символов не фиксировано, оно может быть равно всего одному, а может— двум, трем, вплоть до пяти, так что если вы просто фор
мально запишете подряд точки и тире как единицы и нули, то прочесть ничего не сможете, не зная, где именно в данном случае заканчивается одна буква и начинается другая. Поэтому коды Морзе в двоичный вид переводят так: пусть 1 обозначает точку, а 0 — паузу (что удобно с точки зрения интерпретации их, как уровней напряжения или наличия-отсутствия тока в электрической цепи). При этом две единицы подряд будут обозначать тире, а два нуля — паузу между буквами. Скажем, буква А (точка-тире-пауза) запишется как 101100 — как видите, здесь разрядов намного больше, чем требуется для простого двоичного представления комбинации одних только точек и тире. Между словами вставляют еще дополнительную пару нулей. Фактически, двоичное представление кода Морзе есть не простое переобозначение одних символов с помощью других (как это происходит, когда мы переводим, например, число из арабской записи в европейскую), а отдельная разновидность двоичной кодировки для письменной речи, существующая наряду с ASCII или, к примеру, азбукой Брайля. Кстати, последняя отображается в двоичных кодах совершенно однозначно, если выпуклые точки обозначить за 1, а их отсутствие за ноль. Буква Азбука Морзе Азбука Брайля Коды ASCII точка-тире в двоими, записи прописная строчная А •им 101100 • • 0100 0001 (65) 0110 0001 (97) В 1101010100 • • • • 0100 0010 (66) 0110 0010(98) С мм»мм» 11010110100 • • 0100 0011 (67) 0110 0011 (99) D мм»» 11010100 *• 0100 0100 (68) 0110 0100 (100) Е • 100 • • * • 0100 0101 (69) 0110 0101 (101) F 1010110100 0100 0110(70) 0110 0110(102) G мм мм» 110110100 • • 0100 0111 (71) 0110 0111 (103) Н •••• 101010100 • • 01001000(72) 01101000(104) 1 • • 10100 • • • • 0100 1001 (73) 01101001 (105) Рис. 21.1. Некоторые коды первых десяти латинских букв. Для кодировки ASCII в скобках дано десятичное значение На рис. 21.1 показаны некоторые коды первых десяти латинских букв. Отметим, что, кроме всего прочего, кодировки эти отличаются следующим: в азбуке Морзе
Закодированные. Коды, шифры и дешифраторы 353 определены только заглавные (прописные) буквы, а в азбуке Брайля— наоборот. Причем в азбуке Морзе строчные буквы не могут быть закодированы вообще, в то время как у Брайля заглавные буквы определяются отдельным специальным символом, код которого должен предшествовать коду буквы (такие символы носят название escape-переключателя). В кодах же ASCII, которые составляют основу любой современной компьютерной кодировки, присутствуют отдельно и строчные и прописные буквы, причем при внимательном рассмотрении вы можете определить, что код строчной буквы равен коду заглавной + 32. Почему это так? Очень просто — и Брайль и Морзе при составлении своих азбук экономили, стараясь использовать как можно меньше отдельных знаков для передачи сообщения. В шестибитном коде Брайля может быть закодировано всего 26 = 64 комбинации, чего для представления всех букв, строчных и заглавных (всего 52 в латинском алфавите), а также цифр и знаков препинания не хватит. А в семибитном ASCII имеется 128 возможных комбинаций и этого уже хватает с избытком — но только для одного алфавита. Кстати, коды, в которых число кодирующих бит (или иных знаков, если их больше двух) фиксировано, подобно кодам Брайля или ASCII — в отличие от кода Морзе — называются равномерными. Именно для того, чтобы выделить эту особенность, в двоичном представлении принято слева дописывать незначащие нули до нужного количества символов (см. главу 19). Равномерные коды являются очень удобными для расшифровки и поэтому распространены на практике, но они не самые экономичные в смысле нужного количества знаков (об экономичности систем счисления также см. главу 19). Вполне можно создать гораздо более экономичный код, причем совершенно не обязательно он будет троичным, т. е. с использованием "паузы". В следующей главе мы покажем, как это можно осуществить на практике. Код для управления цифровыми индикаторами В электронике для разных целей используют и другие двоичные коды. Мы сейчас рассмотрим код, который для краткости будем называть "семисегментным" — т. е. код, использующийся для отображения численной информации на цифровых семисегментных индикаторах. Такой индикатор (или один десятичный разряд его — часто употребляются и многоразрядные индикаторы) состоит обычно из семи сегментов-полосок (на светодиодах или жидких кристаллах), расположенных в пространстве определенным образом. На рис. 21.2 показано расположение и общепринятые обозначения этих сегментов буквами (а, Ь, с и т. д.), а также соответствующий семисегментный код,
в котором 1 обозначает светящийся сегмент, а 0 — несветящийся. Сегмент h, который представляет собой запятую, в формировании цифры не участвует, управляется отдельно, и поэтому мы его не рассматриваем. Разумеется, на семисегментных индикаторах можно отобразить и некоторые другие символы (знак минус, буквы С, A, F, П, Н или Р), но эти возможности мы также оставим пока в стороне. Для того чтобы отобразить больше символов, есть и другие типы цифровых индикаторов, например, шестнадцатисегментные или матричные, но управление ими сложнее, и мы пока остановимся на семисегментных. DEC BIN а ь с d е f 9 0 0000 1 1 1 1 1 1 0 1 0001 0 1 1 0 0 0 0 2 0010 1 1 0 1 1 0 1 3 0011 1 1 1 1 0 0 1 4 0100 0 1 1 0 0 1 1 5 0101 1 0 1 1 0 1 1 6 0110 1 0 1 1 1 1 1 7 0111 1 1 1 0 0 0 0 8 1000 1 1 1 1 1 1 1 9 1001 1 1 1 1 0 1 1 Рис. 21.2. Обозначения сегментов и таблица состояний семисегментного индикатора Нас сейчас интересует вопрос: как заставить электронную схему показывать цифру на семисегментном индикаторе? Ведь изначально мы всегда имеем цифру в двоичном представлении, причем чаще всего именно в двоичном, а не двоично-десятичном. Четырехразрядное двоичное число имеет диапазон от 0 до 16, что на одном семисегментном индикаторе отобразить невозможно, даже с привлечением шестнадцатеричных цифр, т. к. букву "В" нельзя будет отличить от восьмерки, a "D" — от нуля. Это означает, что, вообще говоря, мы должны провести нашу перекодировку в два этапа — сначала представить число в распакованном двоично-десятичном виде (см. главу 19), затем преобразовать четырехразрядный двоично-десятичный код в семисегментный. Здесь мы ограничимся рассмотрением только последней задачи, т. к. первая практически всегда уже решена— двоично-десятичное число предстает либо, как результат счета с помощью двоично-десятичного же счетчика (см. главу 24), либо формируется в регистрах микроконтроллера программно. К тому же решить задачу двоичного/двоично-десятичного преобразования на основе только логических микросхем не так уж и просто — решение получается весьма громоздким, и на практике стараются это дело обойти — теми же самыми двоично-десятичными счетчиками, к примеру.
Задача формирования семисегментного кода в некоторых устройствах также часто решена — кроме так называемых драйверов цифровых дисплеев, один из которых описан ниже, выпускаются, к примеру, чипы, представляющие законченный цифровой вольтметр с выходом на семисегментные индикаторы (мы будем разбирать такое устройство в главе 25). Но мы все же рассмотрим, как ее можно решить самостоятельно — это поможет нам понять, как вообще проектируют логические схемы и как они устроены. Нам предстоит создать устройство из класса дешифраторов (хотя это в данном случае и не совсем точное название, но так принято их называть), т. е. дешифратор двоичнодесятичного кода в семисегментный, который осуществляет операцию в соответствии с таблицей на рис. 21.2. Как проектируются такие устройства? В соответствии с моей принципиальной установкой все максимально упрощать и без нужды во всякие теории не углубляться, мы не будем рассматривать "научные" методы типа "карт Карно", а построим дешифратор "в лоб" —т. е. составим логические уравнения и 2 затем нарисуем схему, которая их моделирует . Так как выходов у нас не один, а много — целых семь, то для каждого выхода придется писать свое уравнение. Входов четыре, и уравнение для каждого выхода должно выражать его состояние в зависимости от состояния этих четырех входов. По ходу дела придется вспомнить правила логического сложения и умножения, а также правила де Моргана (см. главу 18). Итак, обозначим логическое состояние выходов через А, В, С и т. д., а состояния входов — через Х\, х2, х^ и х4 (где — младший разряд исходного двоичного кода, ах4 — старший). Сформулируем вслух первое уравнение, используя эти обозначения: "Выход А равен 0 тогда, когда х^ = 1 И х2 = О, И х?, = О, И х4 = О, ИЛИ тогда, когда %] = О И х2 = О, И х$ = 1, И х4 = 0" (см. таблицу на рис. 21.1). Можно сформулировать и соответствующее, притом равносильное предыдущему утверждение для состояния А = 1, но оно получилось бы неоправданно длинным — у нас А принимает значение 0 только в двух из десяти случаев, а так пришлось бы расписывать все для восьми вариантов. Запишем полученное словесное выражение в виде уравнения: А = (%! х х2 х х3 х х4) + (%i х х2 х х3 х х4). 2 Использование метода, известного под названием "карты Карно", не упрощает процедуру, даже усложняет ее, но зато оно позволяет сразу получить оптимальный (минимизированный) вид логических уравнений для каждого из выходов. Однако оптимальный вид для каждого выхода еще не означает оптимального вида для всей схемы с точки зрения экономии количества и номенклатуры корпусов, кроме того, здесь мне важно разобрать сам принцип построения логических схем без лишних "наворотов".
Так как фактически наличествуют элементы с инверсией по выходу, то вспомним правила де Моргана и преобразуем: А = (JCj х х2 х х3 х х4) х (jiq х х2 х х3 х х4). Давайте сразу нарисуем по этому уравнению схему для управления сегментом "а" (рис. 21.3). Заметьте, что мы не стараемся использовать только двухвходовые элементы, как в предыдущей главе. 1 Рис. 21.3. Схема дешифратора для управления сегментом "а" Распишем уравнения для остальных выходов (я привожу только их окончательный вид, без промежуточных выкладок): В = (%! Хх2 Хт3 Xl4)x(lj Хх2 X%3 ХХ4) С = ( X] X х2 X Х3 X х4) D = (Xj X х2 X Х3 X х4 ) X (Xj X х2 X Х3 X Х4 ) X (Xj X х2 X Х3 X х4) Е = (xlxx2xx3xx4)x(xlxx2xx3xx4)x (х} хх2 хх3 xx4)x(xt Хх2 Хх3 Хх4) F = (Х1ХХ2ХХ3ХХ4)Х(Х1ХХ2ХХ3ХХ4)Х (Xj X х2 х х3 X х4 ) X (Xj х х2 х х3 х х4) G = (Xj X х2 X х3 X х4 ) X (Х| X х2 X х3 X х4 ) X (Xj х х2 X х3 X х4 ) Для выхода Е число единиц меньше, чем нулей, поэтому уравнение получилось "наоборот". Можно было бы его оставить в виде логической суммы, а не произведения, подобно самому первому уравнению для выхода А, но в целях экономии типов элементов я его привел к виду, аналогичному всем остальным.
Рис. 21.4. Полная схема дешифратора для управления семисегментным индикатором
Обратим внимание, что у нас встречаются одинаковые произведения четырех переменных в скобках, и типов этих произведений всего 9. Некоторые встречаются всего по одному разу, некоторые — по два и даже по три. С учетом этого обстоятельства и нарисуем полную схему дешифратора (рис. 21.4). Как видим, она довольно громоздкая. Нам требуется: 10 инверторов, 11 четырехвходовых И-НЕ, 2 трехвходовых И-НЕ, 2 двухвходовых И-НЕ. Подсчитаем количество необходимых корпусов микросхем с учетом того, что в одном корпусе размещается 6 инверторов (561ЛН2, корпус DIP-16), по четыре двухвходовых элемента И-НЕ (561ЛА7, корпус DIP-14), по три трехвходовых элемента И-НЕ (561ЛА9, корпус DIP-14) и по два четырехвходовых элемента И-НЕ (561ЛА8, корпус DIP-14). Считаем: 2 корпуса ЛН2 (12 инверторов, 10 нужно по схеме, один используем, см. далее, один останется), 5 корпусов ЛА8 (10 четырехвходовых И-НЕ), 1 корпус ЛА7 (2 двухвходовых И-НЕ, еще один используем, см. далее, один останется), 1 корпус ЛА9 (2 трехвходовых И-НЕ, оставшийся элемент используем, см. далее). Из свободных одного двухвходового, одного трехвходового элементов И-НЕ и одного инвертора соорудим недостающий 11-й четырехвходовой элемент (рис. 21.5) — не вводить же еще один корпус только ради этого! Итого— 9 корпусов. Не забудем свободные входы незадействован-ных элементов (их осталось два — инвертор и элемент И-НЕ) присоединить к "земле" (или питанию) — если мы их не будем использовать (см. далее). Заметим, что схему можно оптимизировать, сэкономив несколько элементов, но мы не будем этим заниматься, т. к. практически, надеюсь, ее никому воспроизводить не придется. По этой же причине мы здесь не приводим разводку выводов микросхем — в случае чего ее легко выяснить из таблицы в главе 20 и по справочнику. Рис. 21.5. Схема четырехвходового элемента И-НЕ, собранного на основе двух- и трехвходового элементов
Впрочем, один из напрашивающихся способов сокращения количества элементов я укажу — если убрать инверторы по выходам (а для выходов С и Е, наоборот, поставить, причем для С лучше поставить отдельный инвертор, а не использовать имеющийся в схеме инвертированный сигнал, причину см. далее), то все выходы станут инвертированными, и светящемуся элементу будет соответствовать состояние 0, а не 1. Это позволит сэкономить целый корпус с инверторами (для инвертирования выходов С и Е у нас есть свободные элементы). Для управления цифровыми индикаторами изменение полярности выхода принципиальной роли не играет — на случай таких "переворотов" специально выпускаются индикаторы двух видов, с общим катодом (т. е. зажигаемые подачей положительного напряжения) и с общим анодом (зажигаемые коммутацией на "землю"). Любопытно исследовать, что будет показывать индикатор, если подать на вход такого дешифратора комбинацию бит, выходящих за пределы двоичнодесятичного представления числа. В самом деле, никто нам не запрещает подать на все четыре входа все единицы, правда? Для решения этой задачи надо просто подставить значения в выписанные выше уравнения. Я не буду здесь приводить все вычисления, изложу только конечный результат: при любом коде, который содержит 1 в старшем разряде, кроме кода 8 (1000), индикатор будет показывать цифру 9. Любопытно, не так ли? Но это прямое следствие того, что мы составляли уравнения для совершенно определенных комбинаций, остальные комбинации просто игнорируются, приводя к тому, что суммы в скобках будут всегда равны 0 (а их инверсии — 1). Если бы мы захотели интерпретировать "лишние" комбинации каким-то определенным образом (скажем, присвоить значение "1111" символу минус — одному из светящихся сегментов "g"), нам надо было бы расширить наши уравнения и, соответственно, добавить логических элементов. Отметим, что напрямую управлять сегментами светодиодного индикатора от этой схемы, т. е. прямо с выходов КМОП, вообще говоря, не рекомендуется. Хотя мне известны прецеденты, когда умельцы использовали свойство полевых транзисторов переходить в режим источника тока (см. главу 20) при перегрузке и запускали сегменты индикаторов напрямую от выхода КМОП-дешифратора даже без ограничительных резисторов. И все работало! Но тут следует учесть, что ток в таком режиме устанавливается довольно большой: от 5 мА при 5 В питания до 30 мА при 15 В (последнее, кстати, может быть выше предельно допустимого тока для целого ряда светодиодных индикаторов). Если мы примем значение тока одного вывода 20 мА при 12—13 В питания, например, от автомобильного аккумулятора, то легко подсчитать рассеиваемую кристаллом мощность при всех семи зажженных сегментах: она составит почти 2 Вт, что много превышает предельно допустимое значение для микросхем в корпусе DIP. Причем учтите, что выходы инверторов типа
ЛН2 более мощные3, чем у обычных логических элементов, так что ток может быть еще выше — но вот рассеиваемая мощность кристалла у них такая же. Резюме: режим включения светодиодов напрямую (или с небольшим ограничительным резистором) использовать можно, но: □ на свой страх и риск; □ при этом надо тщательно все считать. Учтите еще, что при токе через сегмент 20 мА яркость любого индикатора будет запредельной, и к тому же в схеме с четырьмя, к примеру, индикаторами общий потребляемый ток (при индикации восьмерок во всех разрядах) составит более 500 мА, что приведет к лишним затратам. Однако никто не запрещает подключать светодиоды и сегменты индикаторов к выходу КМОП через достаточно большие ограничительные резисторы (несколько сотен Ом), т. е. использовать их при токах 3—5 мА, что обеспечивает нормальную яркость у большинства импортных светодиодов и индикаторов. Разумеется, при этом те же самые выходы использовать для управления входами других элементов нужно с осторожностью — "просадка" напряжения может быть слишком велика (в данной схеме это касается выхода С, поэтому лучше ставить для выхода С отдельный буферный элемент, как указано выше). Если же вы хотите все сделать совсем грамотно, то лучше устанавливать дополнительные ключевые транзисторы, причем это становится обязательным, если вы управляете достаточно большим по размерам индикатором от схемы с основным напряжением питания 5 В, как чаще всего и бывает. Падение напряжения на сегменте такого индикатора может достигать 4,5 В и более (т. к. там в каждом сегменте установлено по два LED последовательно), поэтому от напряжения на выходе микросхемы с учетом "просадки" он просто не будет светиться. Как правильно подключать управляющие транзисторы в таких случаях, мы разберем в главе 32, когда будем управлять индикатором при помощи микроконтроллера. Управлять же ЖК-индикаторами, которые тока практически не потребляют, естественно, можно напрямую, но следует учесть, что питать их сегменты следует от пульсирующего напряжения, иначе они "застынут" в одном состоянии — поэтому все равно придется ставить какие-то управляющие элементы по выходу нашей схемы4. 3 На самом деле микросхемы ЛН1 (шесть инверторов с разрешением), ЛН2 (просто шесть инверторов) и ПУ4 (шесть буферных элементов без инверсии) обеспечивают больший ток (до 40 мА в режиме к.з.) только при нулевом уровне на выходе, т. к., в принципе, они предназначены для управления ТТЛ-микросхемами, которые при уровне лог. 1 тока практически не потребляют (см. главу 20). И в состоянии лог. 1 выходной каскад у них идентичен обычному. 4 Можно, например, использовать на выходе стробируемые (т. е. управляемые отдельным внешним импульсным сигналом) инверторы типа 561ЛН1, принудительно периодически переключая их из активного состояния в состояние 0 и обратно с частотой 20—50 Гц.
+ ^ПИТ “ ^пит 16| 7| 8Т , 5 1 х2 2 Х3“ К561 ИД5 1^ь 11 _ 12-d 13 _ 15—f 1*-9 4 9 -— а 3 6 1 —— с ---- е Рис. 21.6. Разводка выводов дешифратора 561ИД5 В качестве примера дешифраторов двоичный/семисегментный код в интегральном исполнении можно привести микросхему 561ИД5, которая "заточена" под управление ЖК-дисплеями и обладает несколько расширенной функциональностью по сравнению с построенной нами схемой: так, она подает пульсирующий, как это полагается, сигнал на ЖК-сегменты, причем может быть использован расширенный в отрицательную сторону диапазон питания, так что микросхема может управлять большими люминесцентными индикаторами, для которых требуется повышенное напряжение. Кроме этого, в ней имеется возможность "защелки" состояния выходов, что важно, как мы увидим в главе 24, при использовании ее для управления индикацией состояния счетчиков, а также может осуществляться индикация букв L, R, Р, Н и знака минус. Несложно приспособить эту микросхему и для управления светодиодными индикаторами — для этого придется поставить ключевые транзисторы по выходу, как описано выше. Разводка выводов этой микросхемы показана на рис. 21.6. На вход "защелки" Е следует подавать высокий уровень (лог. 1), когда нужно, чтобы результаты сменились, в противном случае состояние выходов a-g "зависнет" независимо от входных кодов. На вход F подают частоту несколько десятков герц. Если нужно управлять светодиодными индикаторами, для которых частота не требуется, то на вход F подают напряжение лог. 1.
Двоичный/десятичный дешифратор Среди дешифраторов мы познакомимся еще с одной разновидностью, которая позволяет избавиться от надоевших двоичных величин и представить результат в привычным десятичном виде. То есть мы должны иметь устройство, имеющее десять различных и однозначно интерпретируемых состояний. Но, спросите вы, а разве семисегментный дешифратор не делает того же самого? В общем, да, — ответим мы, — но он преобразует двоичное представление числа не в десятичный код, а именно в семисегментный, т. е. в представление десятичной цифры в виде принятого в европейской традиции символа, причем для отображения его на конкретном устройстве. Для получения же однозначного десятичного кода удобнее всего иметь устройство, в котором есть десять выходов, нумерованных от 0 до 9, которые все находятся в состоянии лог. О, кроме выхода, номер которого соответствует входному коду. Это легко интерпретировать как табло с десятью лампочками, подсвечивающими нужные цифры — в каждый момент только одну. Так мы будем иметь то, что "заказывали" — устройство, имеющее десять состояний выхода. 2 2 — К561 ИД1 — + 1Л1ИТ 1®3 1*1 13 — х2 х3 10 v ~ Х1 — 8 а Рис. 21.7. Дешифратор 561 ИД: а — разводка выводов; б — схема двоично/шестнадцатеричного дешифратора Мы не будем городить принципиальную схему, т. к. особенности построения таких схем вы уже достаточно изучили на примере управления семисегмент
ным индикатором, и сразу обратимся к благословенным производителям микросхем, которые за нас уже все, как водится, придумали. Это микросхема 561ИД1, разводка выводов которой приведена на рис. 21.7, а. Здесь цифрами 1—2—4—8 внутри прямоугольника, обозначающего микросхему, условно обозначены веса двоичных разрядов х\ - хд, что является общепринятым обозначением для выводов микросхем, представляющих двоичное число. Снаружи цифрами 0—9 обозначены десятичные выходы. Ниже приведена таблица состояний для микросхемы 561ИД1, в том числе и для состояний выхода при входном коде, превышающем девятку (пустые клеточки означают нулевое состояние выхода). Мы наблюдаем тут почти ту же самую картину, что и в нашем дешифраторе — при бессмысленной с точки зрения двоично-десятичного числа комбинации на входе выходы повторяют то восьмерку, то девятку, так что такой режим не представляет ничего интересного. Состояния дешифратора К561ИД1 Входы Выходы *2 *3 х4 0 1 2 3 4 5 6 7 8 9 0 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 0 1 1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1
На двух дешифраторах ИД1 можно построить аналогичный преобразователь двоичного кода в шестнадцатеричный. Его схема приведена на рис. 21.7, б. При значении входного кода менее 8 работает только верхняя микросхема — по таблице легко убедиться, что подача единицы на разряд равносильна запрету на дешифрацию состояний входов jq -ху Эту функцию выполняет инвертор, который во входном диапазоне чисел от 0 до 7 на выходе всегда имеет 1 и запрещает функционирование второй — нижней — микросхемы. Когда же входной код принимает значения 8 и выше, то на входе второй микросхемы оказывается фактически код, соответствующий тому же диапазону 0—7 (из входного кода вычитается восьмерка), и она выдает состояния для выходов 8—F всей схемы. При этом верхняя микросхема, в свою очередь, заперта состоянием единицы на хд, и неоднозначности не возникает. Выходы 8 и 9 у каждой из микросхем, естественно, не используются. Другие употребляющиеся в электронике двоичные коды мы частично рассмотрим в главе 22, но следует отметить, что вообще их вариантов довольно много, и чаще всего эти варианты "заточены" под конкретные задачи, подобно семисегментному коду. Так что все, даже только широко известные, коды в этой книге рассмотреть нет возможности. Частично этот пробел может восполнить уже упоминавшаяся книга [10].
Глава 22 Страхуемся от ошибок. Как хранить и передавать информацию без искажений — Черт возьми, вы правы, Атос! — сказал Арамис. — Сочинить такое письмо — задача очень щекотливая. Сам господин канцлер затруднился бы составить столь многозначительное послание, а господин канцлер очень мило сочиняет протоколы. А. Дюма, "Три мушкетера" В 1948 году уже упоминавшийся на этих страницах Клод Шеннон (см. главу 18) опубликовал работу "Математическая теория связи" (Mathematical Theory of Communication). Шеннон поставил себе задачу проанализировать условия, при которых возможна передача информации без потерь (или с заранее оговоренными потерями) по линиям связи в условиях помех, т, е. по так называемым "зашумленным" линиям. Для начала ему пришлось придумать численную меру для информации — именно так возникло понятие бита (см. главу 19). Величина, противоположная информации, была названа термином, пришедшим из термодинамики (где она означает меру неупорядоченности системы молекул газа)— энтропия. Чем больше информации, тем меньше энтропия, и наоборот. Позднее была показана строгая эквивалентность понятий физической и информационной энтропии — они означают одно и то же, только в разных областях человеческого знания. Окончательно теория информации была оформлена в работах Шеннона 1957—60 гг., и некоторое время была очень модной во всех областях знания — от лингвистики до биологии. Сам Шеннон, впрочем, предупреждал насчет неправомерности излишне широкого толкования понятий информации и энтропии, но тогда его никто не слушал. В 1949 г. Шеннон опубликовал другой эпохальный труд под названием "Communication Theory of Secrecy Systems" ("Теория связи в секретных системах"), который положил начало современной криптографии (см. главу 21). Все эти идеи работают в настоящее время
повсюду, где передается и используется информация, так что за все заслуги Клод Шеннон, вероятно, более чем кто-либо другой, имеет право считаться основоположником века информационных технологий. Что, впрочем, ни в коей мере не должно умалять заслуг других великих — Чарльза Бэббиджа, Алана Тьюринга, фон Неймана, С. А. Лебедева... Идеи, легшие в основание "Математической теории связи" служат яркой иллюстрацией положения, которое было мной озвучено при рассказе о теоретических основах построения систем регулирования (см. главу 15). А именно — теория, как бы она ни была далека от практической жизни, часто может нам указать на нечто, о чем мы не могли даже и подозревать, если бы этой теории не существовало. Причем в данном случае речь идет о более чем практических делах. Десятилетиями инженеры считали, что чем хуже качество канала связи (т. е. чем больше в нем шумов), тем медленнее нужно передавать данные— и все образуется. Например, если передавать точки-тире азбукой Морзе (фактически— прямоугольные импульсы напряжения) по проводам на расстояния от Европы до Америки, то при быстрой передаче они могут просто потеряться — как мы знаем, проводная линия есть распределенный интегрирующий RC-фильтр, да еще на это дело накладываются шумы, которые могут быть приняты за точки и тире. Так давайте удлиним каждый импульс насколько возможно — и вероятность что-то перепутать или потерять резко уменьшится. Разве это не очевидно? Оказалось, что на самом деле все не так — точнее, не совсем так. Каждая линия имеет свой физический предел пропускной способности — если частота импульсов выше, чем частота среза соответствующего ФНЧ, естественно, мы ничего передать не сможем, и тут против природы не попрешь. Однако в линии с шумами совершенно нет никакой необходимости снижать саму по себе скорости передачи — Шеннон указал метод, который в принципе позволяет приблизиться к физическому пределу сколь угодно близко. Практических реализаций этого метода очень много, но все они основаны на одном: а именно на понятии избыточности информации. Понять, что такое избыточность, очень легко на примере обычной разговорной или письменной речи. Классический пример передачи избыточной информации по зашумленному (в прямом смысле) каналу представляет собой передача слова по буквам при диктовке по телефону: "... запишите фамилию ученого — Шеннон, повторяю по буквам: Шура, Евгения, Николай, Николай, Ольга, Николай". Информация тут очень избыточна, и перепутать практически ничего нельзя — даже если вы не расслышите половину букв ("...ура, Е...ген..., Н...ко..., ...олай, Оль..., ...кол..."), исходный текст сообщения восстановить достаточно просто. В крайнем случае, можно попро
сить повторить — вероятность того, что при повторе потеряются в точности те же буквы, исчезающе мала. Повтор — один из методов внесения избыточности. Сама по себе человеческая речь с точки зрения теории информации очень избыточна— сможете ли вы расшифровать фразу "пшт псьм д встрбвн"? Конечно, это означает "пишите письма до востребования" — только без единой гласной буквы! Теоретики подсчитали, что русский язык избыточен более чем на 50, а английский — даже на 60%. Кроме того, в речи огромную роль играет контекст, который сам по себе есть очень важная избыточная информация, которой, как предполагается, мы уже обладаем: например, само по себе словосочетание "тридцать шесть и тридцать две" вообще не несет в себе информации, пока мы не узнаем, что это последняя котировка нефти марки "Брент" на лондонской бирже. Но и тут эта информация бесполезна, пока нам не объяснят, что это цена за баррель в USD. Причем еще надо знать, что баррель — это 180 литров, a USD — американские доллары. И все же и тогда для нас это малоинформативное сообщение, пока мы не узнаем как минимум еще несколько вещей: что вчера котировки были меньше, а месяц назад вообще не превышали тридцати долларов, что Россия живет за счет нефти, и потому котировки эти напрямую сказываются на нашем благосостоянии и притом двояким образом..., но довольно читать политинформацию, надеюсь, вы уяснили главное: чтобы передать информацию, которая представляет собой человеческие знания адекватно, недостаточно просто передать сообщение. Формально нужно одновременно с ним передать и весь контекст, что задача эта едва ли практически разрешима, т. к. контекст этот есть в пределе весь опыт, который человек накапливает за жизнь. Именно на этот счет предостерегал ученое сообщество сам Шеннон, когда выступал против слишком широкого толкования понятия информации, именно этим обусловлены, к примеру, трудности машинного перевода, и именно поэтому термин "базы знаний" из научного термина постепенно стал просто расхожим рекламным слоганом для производителей соответствующего ПО — создать их так и не удалось. Обратите внимание, что сама по себе фраза "тридцать шесть и тридцать две" при этом подходе обладает минимальной избыточностью — если, конечно, не считать собственной избыточности языка в смысле наличия "необязательных" букв. Цели сокращения избыточности служат и различные профессиональные жаргоны и арго, как в примере фразы на языке московской шпаны из главы 21, но в любом случае в этом участвует скрытая избыточная информация в виде знаний конкретного человека.
Экономичные коды Но вернемся к информации, представленной в цифровом виде. Об аналоговых ее разновидностях мы говорить не будем, считая, что все аналоговое можно представить в виде набора цифр (подробнее мы остановимся на этом вопросе в главе 25 при рассказе про АЦП и ЦАП). Итак, для представления символов обычно используются равномерные коды типа ASCII (см. главу 21). Легко подсчитать, что для представления 52 латинских букв (прописных и строчных), 10 цифр и примерно полутора десятков специальных знаков (прежде всего, пробела, а также точки, запятой, кавычек, плюса, минуса и т. п.) с запасом хватит 128-ми вариантов, т. е. числа 2 — двоичного семиразрядного числа. Именно поэтому код ASCII — семибитный. Но кроме английского языка есть и другие, поэтому очень удобно в качестве равномерного кода использовать байт, который имеет 256 вариантов. Для того чтобы уместить в представлении символа все языки сразу, используют и большее количество разрядов (пример — двухбайтовый Unicode), но их все равно передают побайтно, поэтому мы остановимся на восьмиразрядном коде. Неэкономичность равномерного кода легко понять из-за наличия незначащих нулей — в самом деле, при посылке, скажем, кода символа " 1" — "ООП 0000", два нуля слева в принципе можно было бы и не посылать. Но, как мы видели на примере азбуки Морзе, при этом коды имели бы неодинаковую длину, и пришлось бы вводить знак "пауза" для разделения кодов, что еще хуже, чем избыточность равномерного кода, т. к. пришлось бы посылать его каждый раз. Другая причина неэкономичности кодов типа байтового двоичного — они сами по себе избыточны, т. к. число допустимых комбинаций обычно больше необходимого, в результате чего, например, код "0000 0000", как и некоторые другие, практически не используют— точнее, нулевой код как раз очень даже используют, но не для представления символов как таковых. Хорошо бы кодировать символы последовательностями переменной длины и, кроме того, именно столько символов, сколько нужно. Решить эту задачу несложно — надо только кодировать символы так, чтобы более короткие последовательности, в отличие от случая азбуки Морзе, никогда не повторяли начало более длинных. (Морзе простим — он изобретал свою азбуку тогда, когда не только этого решения, но самой постановки задачи не существовало.) Жертва, которую придется при этом принести— большая сложность расшифровки, чем в случае равномерных кодов. Далее в таблице приведен пример экономичного кодирования алфавита из шести символов с различными частотами, который взят из книги [28].
Номер буквы Частота встречаемости Код 1 0,4 1 2 0,2 01 3 0,2 001 4 0,1 0001 5 0,05 00001 6 0,05 00000 Это так называемый код Шеннона — Фано, который строится по следующей методике: сначала нужно расположить буквы в порядке убывания частоты (вообще-то частота встречаемости букв есть оценка соответствующей вероятности, но мы будем пользоваться термином частота, что более корректно). Затем на первом шаге все буквы разбиваются на две группы — верхнюю и нижнюю — так, чтобы суммы частот для каждой из этих групп были приблизительно одинаковыми (не нарушая порядка). В данном случае в одну группу попадает всего один самый верхний символ, во вторую — все остальные. Для букв первой группы в качестве первого символа кода используется 1, для второй— 0 (в принципе можно и наоборот). Затем каждую из двух групп опять делим по тому же принципу примерного равенства частот на две и для каждой из получившихся более мелких групп выбираем второй символ кода— для верхней 1, для нижней 0. Если бы группы у нас были равными, то на этом этапе получились бы коды 11, 10, 01 и 00, но в нашем случае на самом первом шаге в верхней группе всего один символ (и на последующих шагах будет то же самое), так что код с первой 1 у нас всего один. Такие шаги повторяют до того момента, пока в любой из групп не останется всего один символ. Метод Шеннона — Фано дает код, обладающий следующим свойством — количество информации, которое содержится в каждой цифре кода, максимально. Хотя в нем встречаются, как видим, и пятизначные коды, но среднее число бит, которое мы должны будем пересылать, равно 2,3. Если мы учтем, что теоретический предел равен 2,22, а при использовании равномерного кода нам пришлось бы пересылать 3 бита (т. е. примерно на 25% больше), то поймем, зачем нужно использовать такой код. Причем можно построить еще более экономичный код (и еще более трудный для расшифровки) — если кодировать не символы, а их сочетания. Известно, что, скажем, сочетание "про" встречается куда чаще, чем "пру" (загляните в словарь), а многие сочетания ("щйк") вообще не встречаются. Дело тут осложняется тем, что для получения действительно экономичного кода нужно определить частоты для этих сочетаний, что еще для двухбуквенных вариан
тов сделать реально, но уже для трехбуквенных и выше — очень сложно. Поэтому я даже не могу с уверенностью сказать, используются ли подобные вещи на практике. Метод Шеннона — Фано не единственный для построения экономичных кодов, кроме него известен еще более общий метод Хаффмана. Передача в линии с помехами Все сказанное относится к передаче по линиям без помех. Отметим, что на практике вы будете иметь дело большей частью именно с такими случаями, т. к. вероятность возникновения ошибки при передаче бита по проводникам на одной плате между микросхемами очень мала, и при этом борются с самой помехой, а не с ее последствиями — правильной разводкой питания (см. главу 10) и увеличением помехоустойчивости самих микросхем (см. главу 20). При передаче информации на большие расстояния через компьютер вы сами обычно дела с избыточностью не имеете, а просто посылаете нужный символ — остальное делает за вас аппаратура. Однако при проектировании электронных устройств вам придется, как правило, делать все самому— скажем, микроконтроллеры могут обеспечивать передачу данных по последовательному порту, но организовывать при необходимости проверку на четность (см. далее) и на приемном и на передающем конце вам придется, что называется "ручками". Поэтому разберем, как это в принципе делается — хотя бы в простейших случаях. Разумеется, передавать хоть равномерные, хоть экономичные коды в чистом виде в случае наличия помех уже не удастся — если мы, конечно, хотим избежать ошибок. Но, как мы говорили ранее, саму по себе скорость передачи снижать при этом не требуется — придется просто передавать больше бит. Это, конечно, равносильно некоторому Снижению скорости (т. к. доля полезной информации в общем объеме передаваемых данных при этом снижается), однако такое изменение прежде всего намного удобнее тем, что результат будет гораздо более предсказуем и мало зависим — в определенных пределах — от особенностей конкретной линии передачи. Мало того, увеличением избыточности можно даже добиться того, что значительную часть ошибок можно будет исправить, не прибегая к повторной передаче! Великий фон Нейман в одной из своих статей так проиллюстрировал принцип избыточности в применении к представлению цифр (я излагаю его идею своими словами): предположим, что мы считаем в простейшей непозиционной системе счисления. Напомним (см. главу 19), что в непозиционной системе счисления мы просто суммируем результаты счета без всяких разрядов, и в простейшем случае это просто палочки или черточки на бумаге. Допустим, мы хотим досчитать до миллиона. Для этого нам придется выложить
Страхуемся от ошибок. Как хранить и передавать информацию без искажений 371 миллион палочек, однако результаты счета будут очень устойчивы к возможным ошибкам: действительно, от того, что мы недоложим или переложим с десяток-другой палочек, результат изменится крайне незначительно. Совершенно другая картина будет, если использовать позиционную, например, двоичную систему: в ней число миллион выразится намного экономнее, с помощью всего 20 разрядов (как "11110100 0010 0100 0000"), но одна-единственная ошибка в старших разрядах может исказить результат принципиально, скажем, число "0111 0100 0010 0100 0000", которое отличается от исходного всего одним битом, будет совсем не миллион, а всего-навсего 475 712. Какой же выход— пересылать миллион битов вместо 20? К счастью, этого не требуется. Вместо этого используются разные методы, которые сводятся к тому, что мы добавляем к исходному числу (или к целой совокупности таких чисел) несколько "лишних" битов, но не просто так, а по определенному закону. А на приемном конце мы, пользуясь тем же законом, эти числа проверяем. В простейшем случае это позволяет нам установить наличие ошибки и, например, послать повторный запрос, в более сложных — мы даже можем восстановить ошибочные биты, не прибегая к повторному запросу. Рассмотрим простейший вариант, который применяется (или до недавнего времени применялся) почти во всех системах передачи данных, где ошибки достаточно редки, но очень критичны. К таким системам относится, скажем, обмен данными между памятью (как ОЗУ, так и жестким диском) и процессором в компьютере. Вероятность ошибок там очень невелика— примем, что она составляет порядка одной на миллион (т. е. 10-6), хотя на самом деле она существенно меньше. Однако учтите огромный объем перекачиваемых данных — даже относительно медленные жесткие диски могут обмениваться информацией со скоростью, не меньшей, чем десятки мегабайт в секунду, так что ошибки будут возникать довольно часто. Между тем, сбой даже в одном бите из сотен миллиардов передаваемых может привести к зависанию программы или к чему еще похуже. Разбираемый нами метод известен под названием "проверка на четность" и заключается в следующем: к каждым восьми битам, составляющими байт, добавляется еще один — девятый — бит четности, таким образом, чтобы общее количество бит, равных 1, было бы всегда четным (или, наоборот, нечетным, это неважно). На приемном конце мы проверяем четность принятого числа и, таким образом, знаем, что если пришел девятиразрядный код с нечетным количеством битов, то в нем ошибка, потому что этого не может быть. Увеличение количества передаваемых данных, т. е. избыточность, здесь получается равной всего 12,5%. Конечно, остается вероятность того, что ошибки возникнут одновременно в двух разрядах девятибитного числа
и компенсируют друг друга, однако эта вероятность на много порядков меньше, чем у однократной ошибки. Я не буду углубляться в теорию вероятностей, а просто приведу результат: при исходной вероятности ошибки 10’6 вероятность необнаруженной ошибки при использовании проверки на четность будет равна 3,8 • 10-П, т. е. снизится в 30 тысяч раз! Причем чем меньше сама исходная ошибка, тем более эффективным становится метод проверки на четность. Метод не обнаруживает примерно половину двойных ошибок, которые заключаются в том, что одновременно изменились два бита. Если это произошло одновременно с нулями или одновременно с единицами, то четность не изменится и ошибка будет пропущена. Рис. 22.1. Схема проверки на четность для девятибитного числа Если вы сталкивались вплотную с компьютерами, то, вероятно, помните, что еще недавно модули памяти содержали не 8, а 9 микросхем — лишняя микросхема как раз и предназначена была для хранения битов четности (см. главу 28). Теперь же, в связи с увеличением объема памяти, ее разрядности и скоростей передачи метод проверки на четность себя исчерпал, и используются другие, более эффективные методы.
Простейшая схема для проверки на четность — элемент Исключающее ИЛИ, если вы внимательно посмотрите на таблицу его состояний, то увидите, что он это самое и делает, т. к. на выходе у него 1 тогда, когда сумма входов нечетна и 0 — когда она четна. На рис. 22.1 приведена схема простого девятиразрядного устройства для проверки четности, которое может использоваться как на приемном конце для проверки, так и на передающем для того, чтобы формировать девятый бит. На выходе схемы будет лог. О, если число единиц во входном коде четно и лог. 1 — если нечетно. Подобное устройство в серии 561 реализовано в виде отдельной микросхемы, работающей с тринадцатью разрядами — 561СА1. При проверке девятиразрядных чисел незадей-ствованные входы надо присоединить к лог. 0. А как можно построить код с исправлением ошибок? Догадаться, как это сделать, непросто, но теория в лице К. Шеннона и другого замечательного ученого — Р. Хэмминга нам поможет. Шеннон еще в "Теории связи" рассмотрел пример с четырьмя информационными битами, который я сейчас буду разбирать, а Хэмминг в 1950 г. решил задачу в общем виде для любых кодов. Предположим, мы используем четырехзначный двоичный код (т. е. полубайт— с его помощью можно закодировать 16 различных символов). Обозначим его биты как а^, щ, «2 и as. Добавим к нему еще три контрольных бита а4, as и ас, таким образом, чтобы в каждом случае были четными три суммы1: Sj — а$ + а\ + а2 + а^ ^2 = «о + + as + as S3 — а$ + а2 + а^ + а^ Вот 16 семизначных кодов, которые удовлетворяют этому условию: ООО 0000 101 0100 011 1000 011 1100 111 0001 001 0101 001 1001 100 1101 0110010 110 0110 101 1010 000 1110 100 ООП 001 0111 010 1011 1111111 На приемном конце мы будем проверять на четность все три суммы S. Если хотя бы один из 7-ми сигналов был принят неправильно, то хотя бы одна из сумм окажется нечетной, поэтому: □ если все суммы четные, то либо все правильно, либо произошла необна-руживаемая двойная ошибка; 1 Я вперемешку употребляю выражения "четная сумма" и "четное количество единиц" — легко понять, что это одно и то же.
□ если нечетная одна сумма, то неверно принят один из контрольных битов («4, С15 ИЛИ Яб); □ если нечетные две суммы, то неверно принят тот из битов, который входит одновременно в эти две суммы (ai, сь или аз); □ если нечетные все три суммы, то неверно принят бит а0- Как видим, во всех вариантах ошибку легко исправить — если только это не была необнаруживаемая двойная ошибка. Увеличением количества контрольных битов можно справиться и с этой ситуацией. Я не привожу варианты кодов для восьмиразрядных чисел — при нужде их легко подсмотреть в литературе или получить самому с учетом того обстоятельства, что контрольных битов при этом должно быть пять (т. е. результирующий код будет тринадцатиразрядным, что и объясняет количество разрядов, с которыми может действовать микросхема 561СА1 — ее разработчики оказались весьма предусмотрительны). Вообще эта глава по необходимости носит скорее ознакомительный, чем практический характер — тема уж больно обширна, а на любительском уровне, к счастью, приходится сталкиваться с подобными вещами редко. Но если вдруг вам придется изобретать подобные системы передачи, то теперь вы знаете, как это делается.
Глава 23 Импульсные устройства. Генераторы, формирователи и одновибраторы Сердце молодого гасконца билось так сильно, что готово было разорвать ему грудь. Видит бог, не от страха — он и тени страха не испытывал — а от возбуждения. А. Дюма, "Три мушкетера" Из описания устройства логических элементов (см. главу 20) ясно, что любой логический элемент есть, в сущности, не что иное, как усилитель. Мы даже упоминали там, что логические микросхемы иногда используют в качестве аналогового усилителя. В самом деле, с формальной точки зрения, между инвертирующим усилителем на ОУ без обратной связи (т. е. включенным в режиме компаратора) и логическим инвертором разницы нет никакой, кроме того, что инвертор имеет всего один (инвертирующий) вход, а не два (инвертирующий и неинвертирующий), как у ОУ. Входной сигнал у логического инвертора при этом сравнивается с одним наперед заданным порогом (порогом переключения, который у КМОП-элементов будет равен примерно половине напряжения питания), так что не будет большой ошибкой представлять логический элемент компаратором, у которого неинвертирующий вход раз и навсегда присоединен к определенному напряжению. Правда, операционным усилителем логический элемент будет очень плохим — коэффициент усиления у КМОП-элементов составляет всего несколько десятков в отличие от сотен тысяч и миллионов у ОУ и компараторов. И все же, если ввести стабилизирующую обратную связь, которая выводит логический элемент в линейный режим, то он вполне способен усиливать аналоговые сигналы. На схеме рис. 23.1 в таком усилителе используется три инвертора, включенных последовательно с целью увеличения собственного коэффициента усиления без обратной связи. Разумеется, как мы и говорили в главе 20, выдающихся характеристик от такого усилителя ждать не приходится, но схема вполне работоспособна. В схеме можно использовать как инверторы из микросхемы 561ЛН2, так и объединенные по входам .элементы И-НЕ или ИЛИ-НЕ (561ЛА7 или ЛЕ5), причем последние предпочтительнее из-за большей симметричности выхода.
Рис. 23.1. Схема аналогового усилителя на КМОП-инверторах Генераторы Если логический элемент с помощью обратной связи можно вывести в линейный режим, то этот прием можно применять и в других случаях, традиционно требующих аналоговой техники. До сих пор мы рассматривали только два способа построения генераторов колебаний — один раз это был релаксационный генератор коротких импульсов на однопереходном транзисторе (рис. 11.3) для фазового управления тиристорами, второй раз — чисто аналоговый генератор синусоидальных колебаний на ОУ (рис. 14.6). Так как синусоидальные колебания в цифровой технике не нужны, то рассмотрим релаксационные генераторы прямоугольных импульсов. Не составляет сложностей построить такой генератор на ОУ (рис. 23.2, а). Работает он следующим образом. Мы помним, что в первый момент заряжающийся конденсатор эквивалентен короткозамкнутой цепи. Поэтому после включения питания коэффициент усиления по инвертирующему входу будет равен бесконечности, и на выходе ОУ будет фактически положительное напряжение питания. Конденсатор начнет заряжаться через резистор R1, но в силу большого коэффициента усиления ОУ напряжение на выходе останется вблизи напряжения питания, пока потенциал на конденсаторе не достигнет порога, заданного делителем R2/R3 — в данном случае, половины положительного напряжения питания. Тогда выход ОУ скачком перебросится в состояние, близкое к отрицательному напряжению питания, и конденсатор начнет разряжаться через тот же резистор R1. Напряжение на неинвертирующем входе окажется равным половине отрицательного напряжения питания, и, чтобы привести схему в первоначальное состояние, конденсатору придется перезарядиться до этого напряжения. Затем все повторится сначала. Таким образом на выходе мы получим меандр с периодом, который определяется параметрами RC-цепочки (см. формулу на рис. 23.2, а)1. Здесь можно 1 А на инвертирующем входе, между прочим, напряжение, очень близкое к треугольной форме, которое можно где-нибудь использовать (например, см. приложение 3, работу усилителей класса D). если подключить потребителя через отдельный развязывающий повторитель.
применять любой ОУ или компаратор, который способен работать в нужном диапазоне напряжений питания. Отметьте, что если исключить из рассмотрения интегрирующую цепочку R1C1, то остальная часть схемы есть упрощенный вариант компаратора с гистерезисом, приведенного на рис. 15.4. Для того чтобы генератор работал от одного напряжения питания, придется неинвертирующий вход подключить в точности так же, как там — к искусственной средней точке. Подобные генераторы ранее были широко распространены, и поныне разными производителями выпускается специальная микросхема, которая известна под названием "таймер 555" и может служить как в качестве генератора, так и одновибратора, т. е. формирователя однократных импульсов, в том числе большой длительности. Вообще для микросхемы 555 было в свое время придумано около 500 различных применений! Но с появлением микроконтроллеров и дешевых кварцевых резонаторов это дело сошло на нет — с их помощью можно получить все то же самое, но гораздо точнее. Рис. 23.2. Схемы релаксационных генераторов: а — на ОУ, б — зуммер на реле б На схеме рис. 23.2, б приведена схема генератора на одном реле, которую мы уже один раз рисовали (рис. 7.3) — это не что иное, как простейший электромеханический зуммер, т. е. звонок. Естественно, здесь частота на выходе схемы не регулируется и зависит, как мы указывали в главе 7, только от механической инерции подвижных деталей реле (ее грубо можно оценить, зная время срабатывания для конкретного типа реле, один полупериод колебаний зуммера будет равен именно этому времени). Перерисовывал я эту схему не зря — в виде, показанном на рис. 23.2, б в ней легко узнать релейный инвертор с рис. 18.3, у которого выход управляет входом. Не получится ли провести тот же самый фокус, если замкнуть вход с выходом у обычного инвертора 13 Зак. 710
в интегральном исполнении? К сожалению, нет — ранее мы видели, что такое включение просто выведет инвертор в режим усилителя. Что же надо предпринять, чтобы логический элемент тоже "загенерил"? Очевидно, в него надо дополнительно ввести элемент положительной обратной связи (ПОС), как это сделано с помощью гистерезиса в схеме на рис. 12.2, а. Причем теория гласит, что для получения устойчивых колебаний необходимо, чтобы действие отрицательной обратной связи (ООС) отставало от действия ПОС — именно это и происходит в схеме на компараторе за счет использования RC-цепочки и в зуммере за счет механической инерции деталей. Действие только одной ПОС приведет к тому, что выход устройства "зависнет" в одном из крайних положений, а одной только ООС — как мы знаем, к тому, что на выходе установится некое среднее состояние равновесия2. Вместе они дадут то, что надо. Существует огромное количество схем мультивибраторов, т. е. генераторов прямоугольных колебаний, реализующих вышеуказанные теоретические положения. Признаюсь, что мне даже невдомек, зачем в пособиях их обычно приводится так много, если они все равно делают в принципе одно и то же, и нет никакого смысла городить схемы с двумя RC-цепочками на пяти инверторах, если можно обойтись всего двумя инверторами и одной цепочкой. Если кому любопытно, то не меньше десятка разнообразных схем можно найти только в одной книге [15], и этим их многообразие далеко не исчерпывается. Я приведу только одну из них, выбранную из многих с точки зрения минимального количества используемых компонентов, и два ее варианта, разница между которыми заключается в используемых элементах (И-НЕ или ИЛИ-НЕ). Схема по рис. 23.3, а — базовая. При включении питания она начинает работать сразу и, как и остальные схемы подобного рода, выдает меандр с размахом от 0 до t/пит- Частота на выходе определяется параметрами R1 и С1: период Т ~ 2R1C1. Резистор R2 в этом деле практически не участвует и нужен только для того, чтобы оградить защитные диоды микросхемы от перегрузки током разряда конденсатора С1. Величина его может изменяться от сотен Ом до нескольких кОм, при условии, что он много меньше R1 (о необходимости установки этого резистора см. далее). Величина же резистора R1 может изменяться от единиц кОм до 10 МОм, что есть достаточный диапазон для того, чтобы избежать искушения при малых частотах использовать электролитические конденсаторы — напомним, что они очень нестабильны при работе во времязадающих цепях. Поэтому конденсатор С1 может применяться любой, с емкостью, начиная от нескольких десятков пФ, только неэлектролити- 2 Сравните поведение одновибраторов (конец этой главы), в которых ООС наличествует, и RS-триггеров (см. главу 23), в которых присутствует только ПОС.
ческий. Практически указанные параметры элементов позволяют получить частоты от сотых долей герца вплоть до верхней границы рабочей частоты КМОП-микросхем в 1—2 МГц. Для получения более высоких частот целесообразно использовать быстродействующие КМОП-серии, а не ТТЛ, т. к. там ограничения совсем другие — например, резистор R1 не должен выходить за пределы 0,5—2 кОм. Рис. 23.3. Схемы мультивибратора на логических элементах: а — базовая схема на инверторах, б — схема на двухвходовых элементах с управлением; в — диаграмма состояний схемы на двухвходовых элементах И-НЕ; г — диаграмма состояний схемы на двухвходовых элементах ИЛИ-НЕ Если в схеме на рис. 23.3, б объединить входы логических элементов между собой, она превратится в схему по рис. 23.3, а (чаще всего именно так базовую схему и делают). Но дополнительные входы можно и использовать для управления генерацией. Нередко возникает задача на время остановить генерацию и при этом обеспечить совершенно определенный логический уровень на выходе генератора. Эти задачи как раз и решаются с помощью дополнительных входов. Диаграммы состояния выхода в зависимости от состояния входов при использовании разных типов логических элементов приведены на рис. 23.3, виг. Запоминать эти диаграммы нет необходимости, если обратиться к рис. 20.7. Из него следует, как описано в главе 20, что единица на входе И-НЕ и ноль на входе ИЛИ-HE являются разрешающими уровнями, следовательно, при этих уровнях на управляющих входах наша схема будет функционировать, как если бы эти входы были объединены, т. е. подобно
схеме на рис. 23.1, а. При запрещающих же уровнях на входе уровень на выходе будет устанавливаться так, как если бы никаких RC-цепочек не существовало. Рис. 23.4. Схема звуковой сигнализации с динамиком на выходе Простейшие применения схемы с управлением — генерация пачек импульсов (если управляющий вход одного генератора присоединить к выходу другого, с меньшей частотой) либо решение задачи приостановки генератора на время переходных процессов при включении питания, для чего по управляющему входу нужно поставить простейшую интегрирующую RC-цепочку, как в схеме задержки (см. далее). На рис. 23.4 показана схема звуковой сигнализации на одной микросхеме 561ЛА7 и одном транзисторе— пример случая, когда требуется определенный логический уровень при выключенной генерации, чтобы избежать протекания постоянного тока через динамик и не ставить при этом разделительный конденсатор. Схема выдает сигнал около 500 Гц с периодом повторения около 0,5 с, если на управляющий вход подать сигнал высокого уровня. При сигнале низкого уровня на управляющем входе, на выходе также низкий уровень, и постоянный ток через динамик не течет. Транзисторный каскад лучше питать нестабилизированным напряжением от входа стабилизатора питания микросхем, потому что тогда достаточно мощные импульсы тока через динамик будут фильтроваться стабилизатором и не окажут вредного воздействия на остальные элементы схемы. Кроме того, коллекторное напряжение насыщения транзистора КТ972 составляет около 1,5 В,
поэтому при питании от 5-вольтового источника звук может быть достаточно тихим. В случае же питания цепи динамика и микросхем от одного и того же источника нужно разделить их RC-фильтром, как показано пунктиром на рис. 23.4. Номинал базового резистора выбран в расчете на напряжение питания микросхем 5 В, тогда ток на выходе логического элемента составит около 1 мА, и выходной каскад не будет перегружаться. Динамик можно заменить и на пьезоэлектрический звуковой излучатель, тогда дарлингтонов-ский транзистор ставить не обязательно. А о пьезоэффекте мы сейчас подробнее и поговорим. Кварцы Точность поддержания частоты в вышеприведенных схемах невысока. Частота "уходит" примерно на 10—20% при изменении напряжения питания от 5 до 15 В и в достаточно большой степени зависит от температуры (использование высокостабильных резисторов и конденсаторов не поможет и потому нецелесообразно). Чтобы избавиться от этого, необходимо использовать кварцевый резонатор (в просторечии— просто кварц). Здесь не место для того, чтобы подробно излагать принципы работы кварцевого (или реже употребляемого керамического, который обладает несколько меньшей стабильностью) резонатора — это нужно делать в курсе радиотехники в сравнении со свойствами колебательного контура. Вкратце дело заключается в следующем: если приложить к кварцевому параллелепипеду, выпиленному из целого кристалла в определенной ориентации относительно его осей, напряжение, то кристалл деформируется (очень не намного, но все же достаточно, чтобы на этом принципе даже делать прецизионные манипуляторы, например, для электронных микроскопов). Имеет место и обратный эффект— если такой кристалл деформировать, то у него на гранях появляется разность потенциалов. Получается, что если мы включим такой кристалл в схему с обратной связью, то она начнет генерировать, причем частота генерации будет зависеть исключительно от размеров кристалла— и ни от чего больше! Как, спросите вы, даже от температуры не будет зависеть? Да от нее же зависит вообще все на свете— и геометрические размеры в первую очередь! Вот именно— пьезоэлектриков, как называют вещества, ведущие себя подобно кварцу, много, но используют именно кварц, т. к. он помимо пьезоэлектрических свойств, обладает еще и одним из самых низких температурных коэффициентов расширения. В результате кварцевые генераторы без каких-либо дополнительных ухищрений дают погрешности порядка 10-5 — т. е. уход часов с таким генератором составляет не более 1 секунды в сутки. Именно распространение кварцевых генераторов привело к тому, что все измерения сейчас стараются свести к измерению интервалов времени — к этому вопро
су мы еще не раз вернемся. Но помимо этого на кварцах работают все бытовые электронные часы, и вообще, в любом современном бытовом электронном устройстве вы обязательно найдете кварц. Причем природа приготовила здесь и еще один подарок — т. к. сам кварц является полным изолятором, то никаких токов через него не течет, и кварцевые генераторы в сочетании с КМОП-микросхемами почти не потребляют энергии, кроме описанных в предыдущей главе потерь в самом элементе. 62 пф Рис. 23.5. Схема кварцевого генератора на КМОП-инверторе Все почти без исключения кварцевые генераторы в цифровой технике строят по одной и той же схеме, которая очень проста и требует всего один инвертор, резистор и два конденсатора. Схема эта показана на рис. 23.5, и вы убедитесь в дальнейшем, что в точности так же, например, устроен тактовый генератор у некоторых микроконтроллеров. Параметры всех элементов можно менять в довольно больших пределах — так, емкость конденсаторов может меняться от 20 до 200 пФ (причем они не обязательно должны быть одинаковыми), а сопротивление резистора — от 100 кОм до 10 МОм. Однако целесообразно использовать как можно меньшие емкости и как можно большие сопротивления, иначе возрастает потребление от источника питания. Иногда для дополнительного снижения потребления последовательно с кварцем со стороны выхода инвертора ставят еще один резистор в несколько сотен кОм. Естественно, инвертор при таких сопротивлениях может быть только КМОП-типа (ТТЛ-генераторы с кварцевым возбуждением строят по иным схемам). Частота кварца снизу ограничена только их номенклатурой (для низких частот обычно употребляют т. н. часовой кварц с частотой 32 768 Гц, почему именно такой — мы увидим в главе 24), верхний же предел при использовании серии CD4000 ограничивается 1 МГц. Для более высоких частот нужно использовать быстродействующие КМОП-серии 74АС и 74НС (К 1564). Инвертор, естественно, может представлять собой и просто инвертор, и многовходовой логический элемент с объединенными входами.
Кварцы выпускают на определенные частоты, причем если нужна повышенная точность, то можно приобрести специализированные очень стабильные резонаторы с погрешностью до 10 . Выпускаются и готовые генераторы на разные частоты (особенно большой выбор предлагает в этом отношении фирма, название которой обычно ассоциируется совсем с другими продуктами— Epson, которая приобрела в свое время компанию, известную своей часовой торговой маркой Seiko). Установив вместо одного из постоянных конденсаторов подстроечный, можно менять частоту в очень небольших пределах (порядка 0,01% от номинала), но сейчас этим почти никто не пользуется, т. к. подстройку лучше осуществить цифровым способом или можно просто приобрести высокостабильный кварц. Кстати, мало кто знает, что если под рукой нет подходящего кварца, то схему на рис. 23.4 вполне можно "завести", заменив резонатор на малогабаритную индуктивность (частоту можно грубо прикинуть, если учесть, что постоянная времени LC-контура равна л/LC, причем в качестве величины С нужно подставить сумму емкостей обоих конденсаторов, тогда частота будет примерно равна единице, деленной на удвоенную величину этой постоянной). Естественно, главное преимущество кварца — высокая стабильность — при этом пропадет, зато могут резко снизиться габариты, т. к. кварцевые резонаторы далеко не всегда отличаются миниатюрностью. И такая замена вполне допустима, если высокой точности в отношении времени от схемы не требуется. Кстати, не спешите "кидаться" на миниатюрные кварцевые резонаторы, подобные часовым — кроме номинальной частоты кварцы характеризуются предельно допустимым напряжением, и если резонатор, предназначенный для наручных часов с питанием от литиевой батарейки 3 В, включить в схему с напряжением питания даже 5 В, он вполне может треснуть от механических перегрузок — в моей практике такие случаи бывали. Формирователи импульсов Все эти схемы выдают "чистый" меандр, в котором длительность паузы строго равна длительности импульса (с точностью, конечно, до "гуляния" порога переключения элемента в течение одного периода, которое на самом деле крайне мало). А как можно получить импульсы с другим значением скважности? На рис. 12.6, а показана схема, которая формирует импульсы со скважностью 4 из исходного меандра. В ней используется делитель частоты на два (счетный триггер)— элемент, который мы еще "не проходили", но будем разбирать в следующей главе, а пока он приводится без пояснений, функция его ясна из диаграммы на рис. 23.6, б. Следует отметить, что за счет задержки сигнала в триггере в момент, соответствующий фронту второго сигнала,
на выходе может возникнуть короткая "иголка", т. к. спад импульса на выходе триггера наступит несколько позже наступления этого фронта. Она не страшна для статических схем (например, дешифраторов с выводом на индикаторы) или для управления внешними достаточно инерционными устройствами, но может вызвать срабатывание другого триггера или одновибратора (см. далее), если к его входу подключить выход этой схемы. Если это критично, то в таких схемах обычно используют синхронные счетчики, которые мы будем рассматривать в следующей главе. Использованная микросхема 561ТМ2 (CD4013) содержит два триггера, поэтому схему легко дополнить, получив на выходе скважность 8. Применяя дополнительные логические элементы, можно получить 4 выхода, на каждом из которых фаза сдвинута ровно на полпериода — такие схемы применяют, например, для управления шаговыми двигателями или для управления елочной гирляндой "бегущие огни" (попробуйте составить такую схему сами!). Большое значение на практике имеют формирователи коротких импульсов, называемые еще "схемы выделения фронтов"3. На рис. 23.7, а приведена схема, которая делает это как положено. При поступлении положительного фронта на вход он сразу же переключает выход последнего элемента И-НЕ в состояние лог. 0. На выходе цепочки из трех инверторов также возникнет лог. 0, который вернет выход в состояние лог. 1, но это произойдет не сразу, а спустя время, равное утроенной задержке срабатывания логических элементов. Поэтому на выходе возникнет короткая "иголка", достаточная по длительности (задержка-то тройная!) для надежного срабатывания других элементов схемы. Длительность таких импульсов составит для КМОП несколько сотен наносекунд. При желании можно выделить не фронт, а спад импульса (и получить при этом на выходе "иголку" положительной полярности4), для этого нужно использовать элементы ИЛИ-HE. А если использовать Исключающее ИЛИ, то можно получать положительные импульсы при каждом переключении сигнала — и по фронту и по спаду. 3 В интуитивно понятном термине "фронт импульса" имеется некоторая неоднозначность, связанная с тем, что термином этим иногда обозначают только положительный перепад напряжения (т. е. переход из состояния лог. 0 в лог. 1), чтобы отличить его от отрицательного (перехода из состояния лог. 1 в лог. 0), который тогда называют "спадом импульса", а иногда вообще любой перепад напряжения (чтобы уточнить, о чем конкретно идет речь, говорят о положительном или отрицательном фронте или перепаде). В западной литературе соответствующие термины звучат, как "rising edge" и "falling edge" (букв, "возрастающая кромка" и "падающая кромка"), что более соответствует смыслу. См. также сноску 4. 4 Подобно тому, как термин "отрицательный перепад" (см. сноску 3) отнюдь не означает наличия отрицательного напряжения относительно "земли", так и "полярность сигнала" в приложении к логическим уровням означает не полярность напряжения относительно той же "земли", а просто состояние лог. 1 (положительный сигнал, высокий уровень) или лог. 0 (отрицательный сигнал, низкий уровень).
Вход Выход триггера Выход Рис. 23.6. Схема формирователя последовательности со скважностью 4: а — принципиальная схема; б — диаграмма работы Рис. 23.7. Схемы формирователей коротких импульсов: а — стандартная схема; б, в, г — схемы с использованием дифференциальных RC-цепочек
Все здорово, но схема уж больно громоздкая для такой простой функции — целый корпус! На рис. 23.4 мы использовали один корпус вон для какого сложного устройства, а тут — всего только выделение фронта. К тому же такие короткие импульсы очень сложно наблюдать на осциллографе. Поэтому на рис. 23.7, б и рис. 23.7, в приведены гораздо более экономные схемы, которые делают то же самое, но неправильно. Почему неправильно? Потому что разработчики микросхем не рекомендуют использовать аналоговые узлы для построения цифровых схем. Вообще говоря, схемы генераторов выше (рис. 23.3) и одновибраторов ниже (рис. 23.8) тоже неправильные схемы. Но все же они широко используются, и нет причин для того, чтобы не использовать те же принципы и при построении схем выделения фронтов. С одним только условием — если вы знаете, что делаете. В схемах генераторов на рис. 23.3 это знание вылилось в установку дополнительного резистора R2, ограничивающего ток через защитные диоды микросхемы. Здесь также требуется применить этот прием, и для этого в схемах на рис. 23.7, б и 23.7, в установлены ограничительные резисторы 1 к, которые с функциональной точки зрения не требуются. Дело в том, что дифференцирующая RC-цепочка, составляющая основу этих схем, вырабатывает импульсы не только по нужному переключению сигнала, но и по противоположному, и при этом импульсы выходят за пределы питания, в чем вы можете убедиться, если взглянете на рис. 5.7. Замечу, что во всех этих схемах (и мультивибраторов выше, и одновибраторов ниже) можно обойтись и без токоограничивающих резисторов — как мы знаем, у диодов достаточно высокая перегрузочная способность, если только они не перегреваются, Обязательно же такой резистор ставить при больших выдержках времени, т. е. при низких частотах, которые предполагают использование конденсатора большой емкости, а при обычных емкостях порядка 0,1 мкФ и менее резистор можно не использовать. Длительность импульса на выходе схем выделения фронтов при указанных на схеме номиналах составит около 10 микросекунд. А на рис. 23.7, г показано использование интегрирующей цепочки для задержки импульса на фиксированное время. Диаграмм я не привожу, т. к. работа схемы понятна— импульс задерживается на время, необходимое для заряда конденсатора до порога срабатывания инвертора. Задний фронт импульса, соответственно, задерживается на время разряда. Если при этом входной импульс сравним по длительности с постоянной времени RC, то на выходе импульс может быть уменьшенной длительности. А если входной импульс короткий — выходной может вообще пропасть, поэтому такой схемой на практике пользуются редко, предпочитая чисто цифровые методы. Однако ничто не мешает использовать такую задержку в схемах для выделения фронта или спада по схеме рис. 23.7, а вместо цепочки из трех инверторов.
Одновибраторы Одновибратор — это устройство, которое по внешнему сигналу выдает один-единственный импульс определенной длительности, не зависящей от длительности входного импульса. Запуск происходит либо по фронту, либо по спаду входного импульса и до возникновения на входе нового перепада напряжений той же полярности уровень на входе больше не будет оказывать влияния на выход. Как и в случае мультивибраторов, существует огромное количество схемотехнических реализаций этого устройства. Мы изучим вариант, который получается небольшой модификацией схем выделения фронта — нужно только ввести в них положительную обратную связь, которая будет фиксировать состояние выхода на время заряда конденсатора. Рис. 23.8. Одновибраторы Схема на рис. 23.8, а работает следующим образом: в состоянии покоя на выходе схемы состояние лог. 1, т. к. вход второго (выходного) элемента И-НЕ заземлен через резистор. Так как на входе тоже лог. 1, то на выходе первого (входного) элемента И-НЕ лог. О, конденсатор разряжен. При поступлении на вход положительного уровня на выходе первого элемента типа И-НЕ возникает состояние лог. 1, которое через дифференцирующую цепочку RC передается на вход второго элемента, так что на выходе схемы и на втором входе первого элемента оказывается лог. 0. Это состояние схемы, уже независимо от уровня входного сигнала, будет устойчиво (обратная связь как бы перехватила и зафиксировала уровень нуля на выходе) — пока конденсатор
заряжается от выхода первого элемента через резистор R. Через время, примерно равное произведению R • С, конденсатор зарядится до порога срабатывания выходного элемента И-НЕ и схема скачком перейдет обратно в состояние логической единицы по выходу. Так как по входу уже давно уровень лог. 1, то первый элемент также перебросится в начальное состояние, и конденсатор С быстро разрядится через ограничительное сопротивление 1 кОм (если оно установлено) и входные защитные диоды второго элемента. Схема придет в начальное состояние в ожидании следующего запускающего импульса. Длительность импульса на выходе всегда будет примерно равна RC, даже если входной импульс длиннее (в этом случае конденсатор просто разрядится не сразу, а только тогда, когда закончится входной импульс). Аналогично работает схема на рис. 23.8, б, только с противоположными полярностями импульсов. Основное применение одновибраторов — в качестве таймера, который формирует сигнал определенной длительности вне зависимости от работы всей остальной схемы. Естественно, о высокой точности выдержки времени тут говорить не приходится, но часто это и не требуется. Например, если вы хотите ограничить по времени тревожный сигнал, подающийся с помощью устройства по рис. 23.4, то целесообразно управлять им от одновибратора, который запускается, скажем, нажатием кнопки. В одновибраторах для больших выдержек не возбраняется использовать электролитические конденсаторы, хотя даже при использовании только керамических или полимерных типов с максимальными емкостями порядка 1—3 мкФ вполне достижимы выдержки в несколько десятков секунд (напоминаю, что использование токоограничивающего резистора при этом обязательно). Разобранные одновибраторы представляют собой схемы "без перезапуска", т. е. длительность импульса не зависит от того, пришел ли еще раз входной импульс во время действия выходного или нет. Одновибраторы "с перезапуском", в которых выходной импульс в этом случае продлевается (отсчет времени как бы начинается заново с нового импульса, когда бы он ни пришел), мы проектировать не будем, потому что в этом случае проще использовать готовую микросхему (561АГ1, см. главу 27). Возможно, вы уже сообразили, что одновибратор может служить довольно эффективным средством подавления дребезга механических контактов (см. главы 20 и 24), т. к. будет запускаться только от первого перепада уровней, причем даже независимо от того, пролетают подвижные контакты весь промежуток "туда-обратно" или нет (впрочем, на практике такого "пролета" и не случается). Главным его преимуществом в этом качестве, несмотря на довольно сложную схему, является возможность использования двухвыводной кнопки, а не переключающей, как в схемах по рис. 20.7, б или с использова
нием RS-триггеров. Вход одновибратора при этом соединяют с питанием (в схеме рис. 28.8, а) или с "землей" (в схеме рис. 28.8, б) через резистор, а кнопкой замыкают этот вход, соответственно, на "землю" или на питание. Недостатком такого варианта является то, что приходится четко рассчитывать необходимую длительность импульса, иначе дребезг можно пропустить. Вторым недостатком схемы с одновибратором является неясность ситуации с размыканием ранее замкнутой кнопки, т. к. если кнопка удерживается в замкнутом состоянии дольше, чем длится импульс, то из-за дребезга одновибратор может выдать импульс повторно. Для борьбы с этим явлением можно попробовать присоединить кнопку ко входу одновибратора не напрямую, а через одну из дифференцирующих цепочек по рис. 23.6, б или 23.6, в, а также поставить защитный резистор увеличенного сопротивления. Укажем, кстати, на недопустимость использования часто рекомендуемых и заманчивых по своей простоте схем "антидребезга" с использованием интегрирующей цепочки, т. е. элементарного ФНЧ (см., например, [15, рис. 5.11]). Опыт показывает, что такие схемы крайне ненадежны даже при использовании так называемого триггера Шмидта, который представляет собой обычный логический элемент с гистерезисной характеристикой, подобно компаратору на рис. 15.4. Гистерезис в случае логических элементов чаще всего не защищает от дребезга вообще, т. к. помеха располагается обычно вблизи питания или "земли" за пределами зоны нечувствительности. А что касается ФНЧ, то даже если вы умудритесь подобрать параметры фильтра так, что данная конкретная кнопка, как вам кажется, не дребезжит, то это не гарантирует, что в случае очень короткого или, наоборот, долгого нажатия схема сработает как надо или что другая аналогичная кнопка будет так же нормально работать с теми же параметрами RC-фильтра.
Глава 24 Электронные счеты. Триггеры, счетчики, регистры... Атос выпросил у г-на де Тревиля шесть дней вместо четырех и присоединил к ним еще две ночи — они уехали двадцать четвертого в пять часов вечера, а г-н де Тревиль любезно пометил отпуск двадцать пятым числом. А. Дюма, "Три мушкетера" Хотя по названию можно подумать, что счетчики и сумматоры предназначены для выполнения похожих функций, но это совершенно не так. Отличие заключается в том, что сумматор оперирует с числами вообще, с числами как абстрактными сущностями — именно этим обстоятельством, которое мы уже неоднократно подчеркивали (см. главу 19), и объясняется пресловутая универсальность микропроцессоров, которым все равно, что считать — деньги на банковском счету или координаты опорных вершин трехмерной фактуры в очередной "стрелялке". Счетчики же только суммируют импульсы, приходящие с течением времени, представляют их в виде двоичного числа и фактически больше ничего не умеют, хотя, как мы увидим далее, и это очень неплохо. В состав процессора, кроме собственно АЛУ с сумматорами, входит и другие составляющие, в том числе регистры и память, которые являются прямыми родственниками счетчиков — потому что для построения тех и других используются триггеры. Вот со знакомства с классическими типами триггеров мы и начнем. Потом познакомимся со счетчиками и регистрами — а несколько позднее, в других главах, перейдем уже и к микропроцессорам, и к устройствам памяти. Триггер1 — это устройство для записи и хранения информации в количестве одного бита2. Любая элементарная ячейка памяти, будь то магнитный домен 1 Между прочим, одно из главных "неэлектронных" значений слова "trigger" — спусковой крючок у огнестрельного оружия. 2 Существуют— по большей части в теории— и многостабильные триггеры, которые могут хранить более одного бита, но на практике они не используются, кроме очень экзотических конструкций, вроде упоминавшейся в главе 19 ЭВМ "Сетунь".
на пластинах жесткого диска, отражающая область на поверхности CD-ROM или конденсаторная ячейка электронного ОЗУ, обязательно обладает триггерными свойствами, т. е. может хранить информацию спустя еще долгое время после того, как она была в нее введена. Самый простой Самый простой триггер можно получить, если в схемах одновибраторов на рис. 23.8 удалить RC-цепочку и соединить напрямую выход первого элемента со входом второго. Если схема находится в состоянии, при котором на выходе уровень лог. 1, то кратковременная подача отрицательного уровня на вход, как и в случае одновибратора, перебросит выход в состояние лог. О, но теперь уже нет конденсатора, который осуществляет отрицательную обратную связь и, в конце концов, возвращает схему в исходное состояние, поэтому в таком состоянии схема останется навечно, если мы что-то(не предпримем. Чтобы вернуть ее в исходное состояние, надо подать точно такой же сигнал, но на вход второго элемента, который (вход) в схеме одновибратора у нас отсутствует. Если мы его введем, то получим симметричную схему с двумя входами, которые обозначаются буквами R и S (от слов Reset и Set, т. е. "сброс" и "установка"). Само же устройство носит название RS-триггера. Оба варианта такой схемы на элементах И-НЕ и ИЛИ-HE показаны на рис. 24.1. а б Рис. 24.1. Схемы триггеров: а — на элементах И-НЕ; б — на элементах ИЛИ-НЕ Нет нужды перебирать все состояния этих схем и приводить соответствующие таблицы истинности, нужно только твердо запомнить, что подача им-
пульса на вход R всегда устанавливает на выходе Q состояние лог. О3. Причем соответствующий вход у любого устройства, его имеющего — от микропроцессоров до счетчиков — является асинхронным, т. е. вся система обнуляется в момент подачи импульса по входу R независимо от того, что в этот момент она делает (говорят еще, что вход Reset — вход обнуления — имеет "наивысший приоритет"). Именно это происходит, скажем, когда вы нажимаете на кнопку Reset на системном блоке вашего компьютера. Вход S, естественно, означает ровно противоположное — установку выхода Q в состояние лог. 1, но в отличие от входа R, который всегда означает обнуление, вход S в различных устройствах может использоваться и в немного других целях, а чаще вообще отсутствует. Суть дела не меняется от того, что входы R и S могут управляться различными полярностями сигнала в зависимости от построения триггера — для схемы на элементах И-НЕ по рис. 24.1, а это низкий уровень, поэтому входы R и S обозначены с инверсией (уровни, которые меняют состояние триггера, называются "активными", так, для схемы по рис. 24.1, а активным является низкий уровень). "Более правильная" схема в этом смысле— на элементах ИЛИ-НЕ по рис. 24.1, б. Обратите внимание, что установка дополнительных инверторов по входу, казалось бы, превращает схему по рис. 24.1, а в схему по рис. 24.1, б, но только в смысле полярности активных уровней, прямой и инверсный выходы при этом останутся на своих местах. а б Рис. 24.2. Схемы триггеров с предустановкой при включении питания В схемах RS-триггеров подача активного уровня на R-вход ничего не меняет, если выход Q уже был в состоянии лог. О, то же самое справедливо для 3 Естественно, на инверсном выходе Q при этом будет лог. 1. Легко сообразить, что если поменять все обозначения местами (R на S, а прямой выход на инверсный), то в схеме ничего не изменится.
S-входа при выходе в состоянии лог. 1. Однако пока на соответствующем входе действует напряжение активного уровня, подача активного уровня на второй вход запрещена. Это не означает, что триггер при этом сгорит, просто он потеряет свои триггерные свойства — на обоих выходах установится один и тот же уровень, а после одновременного снятия активного уровня со входов состояние будет неопределенным (точнее, будет определяться тем элементом, который переключится чуть позже другого). Неопределенное состояние будет и после подачи питания, поэтому нужно принимать специальные меры для установки схемы в нужное состояние после включения. Наиболее распространенной мерой является подача определенного уровня в начальный момент на один из нужных входов с помощью RC-цепочки. Ввиду практической важности этого способа я приведу вариант соответствующей схемы, несмотря на ее очевидность (рис. 24.2, а). В ней конденсатор в первый момент после подачи питания разряжен, и на входе логического элемента оказывается положительный уровень (еще раз напомним, что разряженный конденсатор при подаче напряжения в первый момент равносилен короткому замыканию цепи), который устанавливает триггер в состояние лог. О на выходе Q. Затем конденсатор заряжается, и в дальнейшем RC-цепочка больше не оказывает влияния на работу схемы. Постоянную времени RC лучше выбирать побольше, чтобы к моменту зарядки конденсатора успели пройти все переходные процессы, на схемах по рис. 24.2 она равна примерно 0,5 мс. Естественно, при этом следует позаботиться, чтобы на "настоящих" RS-входах к моменту окончания заряда конденсатора был неактивный уровень, иначе все пойдет насмарку. Чтобы избежать нагромождения инверторов, можно в этой схеме использовать трехвходовые элементы (561 ЛЕ 10), как показано на рис. 24.2, б. Естественно, RS-триггеры выпускают и в интегральном исполнении (561ТР2 содержит четыре простых RS-триггера). Все более сложные триггеры, а также счетчики в интегральном исполнении обязательно имеют отдельные RS-или хотя бы только R-асинхронные входы. Использование RS-триггера является самым капитальным способом решения проблемы дребезга контактов (см. главы 20 и 23). Стандартная схема включения показана на рис. 24.3, а, однако нет никакой нужды городить такую схему с резисторами, относительно которых еще нужно соображать, к чему их подключать (для варианта с ИЛИ-ИЕ их пришлось бы присоединять с "земле"). На рис. 24.3, б показана упрощенная схема, которая работает точно так же, и при этом в ней можно использовать любые инверторы, в том числе и одновходовые. Общим недостатком схем "антидребезга" как с RS-триггерами, так и с использованием элемента Исключающее ИЛИ (рис. 20.7, б), является необходимость использования переключающей кнопки с тремя выводами,
Электронные счеты. Триггеры, счетчики, регистры...395 которых на рынке предлагается гораздо меньше, чем обычных замыкающих и размыкающих с двумя контактами. Попробуйте приспособить двухвыводную кнопку к любой из указанных схем, и вы сами придете к выводу, что это невозможно. Поэтому на практике часто приходится использовать схему "антидребезга" с использованием одновибратора (в том числе реализованного программными способами в микроконтроллерах) — при всех ее недостатках. 4Л1ит а Рис. 24.3. Схемы "антидребезга" на RS-триггерах D-триггеры D-триггеры получили свое название от слова "delay", что означает "задержка". На самом деле существует две их разновидности, формально различающиеся только тем, что первая из них (статический D-триггер или триггер-защелка) управляется уровнем сигнала, как и все схемы, рассмотренные ранее, а вторая (динамический D-триггер) управляется фронтом импульса. Фактически же это разные по устройству и области использования схемы, поэтому объединение их под одним названием представляется неудачным. Для того чтобы отличить статический D-триггер от динамического, мы будем в обозначении на схемах для первого ставить букву L (от слова "level" — уровень), а для второго — букву "Е" (от слова "edge" — фронт). Эти обозначения не являются общепринятыми, но лучше так, чем никак. Если же такая буква будет отсутствовать, то определить тип триггера можно по типу микросхемы: 561ТМЗ содержит четыре статических триггера-защелки, а ТМ2 — два динамических D-триггера с дополнительными входами R и S (см. рис. 23.6).
Если тип вообще не указывается, то обычно по умолчанию предполагается, что речь идет о динамических D-триггерах. Рис. 24.4. D-триггеры: а — схема статического D-триггера; б — схема динамического D-триггера на основе двух статических; в — счетный триггер на основе динамического D-триггера Статический D-триггер легко получить из RS-триггера путем небольшой модификации его схемы (рис. 24.4, а). Если из приведенной схемы исключить вход С (например, объединив входы каждого элемента и превратив их тем самым в простые инверторы), то получится довольно бесполезное устройство, которое на выходе Q будет просто повторять входные сигналы, а на втором выходе, соответственно — выдавать их инверсии. Наличие тактового входа С (от слова "clock", которое в цифровой электронике значит "тактовый импульс") все меняет. Если мы обратимся к диаграммам на рис. 20.7, а, мы увидим, что при наличии на этом входе уровня лог. 1 входные сигналы будут пропускаться на вход RS-триггера и схема будет повторять на выходе Q уровни на входе D, как и выше. Если же мы установим на входе С уровень лог. О, то схема немедленно "зависнет" в состоянии выхода, соответствующем входному уровню непосредственно перед приходом отрицательного фронта на вход С — т. е. запомнит его! Поэтому такой триггер и называют "защелкой" — при подаче на вход С короткого тактового импульса он как бы "защелкивает" состояние входа. Мы увидим в дальнейшем, как можно использовать статический D-триггер в качестве буферного регистра для хранения результатов счета импульсов, т. е. на то время, пока идет сам процесс счета. Динамические D-триггеры более универсальны, и область применения у них куда шире, чем у статических. Динамический триггер сложнее по устройству. Один из способов построения динамического D-триггера из двух статических
показан на рис. 24.4, б. Эта схема работает следующим образом: когда на общем входе С наличествует отрицательный уровень, состояние входа D переписывается на выход первого (слева) триггера, при этом второй триггер заперт. Сразу после положительного фронта на входе С это состояние переписывается во второй триггер и появляется на выходе Q, а первый триггер запирается. Таким образом, запоминание состояния общего D-входа происходит в точности в момент положительного перепада уровней и никогда больше. Если изменить местоположение инвертора и присоединить его ко входу второго триггера, а на первый триггер подавать тактовые импульсы напрямую, то срабатывание будет происходить по отрицательному фронту, и такой тактовый вход будет считаться инверсным. Для того чтобы вывести дополнительные входы асинхронной принудительной установки триггера в нулевое и единичное состояние (R- и S-входы), нужно оба статических триггера реализовать на трехвходовых элементах и объединить соответствующие входы у обоих триггеров — устанавливать по входам R и S только выходной триггер недостаточно (подумайте почему?). На рис. 24.4, в показана самая простая схема счетного триггера на основе динамического D-триггера, уже знакомая нам по рис. 23.6. Из вышеописанного ясно, как она работает — при каждом положительном перепаде на выход Q будет переписываться состояние противоположного выхода Q, т. е. система будет с приходом каждого тактового импульса менять свое состояние на противоположное, в результате чего на выходе будет симметричный (независимо от скважности входных импульсов) меандр с частотой вдвое меньшей, чем входная. Такой триггер можно считать делителем частоты на два или одноразрядным двоичным счетчиком — в зависимости от того, для чего он используется. В отличие от всех остальных типов триггеров (а кроме описанных, распространены еще и т. н. JK-триггеры, но мы их разбирать не будем), счетные триггеры в интегральном исполнении отдельно не выпускаются (при случае их легко, как вы видели, соорудить, например, из D-триггеров), а выпускаются только готовые многоразрядные двоичные счетчики, из таких триггеров составленные. К рассмотрению счетчиков мы перейдем чуть позднее, а пока кратко остановимся на регистрах. Регистры Регистрами называют устройства для хранения одного двоичного числа. Количество разрядов в регистрах, выпускаемых отдельно, обычно не превышает восьми, но в составе других микросхем могут быть и регистры с большей разрядностью — вплоть до 64 и даже 128 бит в процессорах типа Intel Itanium. Большинство типов электронных ЗУ, вообще говоря, можно рассматривать
как совокупность регистров4, но собственно регистры, как входящие в состав процессоров, так и выпускаемые отдельно, отличаются тем, что позволяют не только записывать и считывать информацию, но и производить некоторые простейшие операции, например, сдвиг разрядов. Простейший регистр — это упомянутый выше статический D-триггер. Четыре таких триггера, входящие в микросхему 561ТМЗ, образуют четырехразрядный регистр с параллельной записью и считыванием, причем тактовый вход в этой микросхеме у всех четырех разрядов общий. Как и сам триггер, такой регистр называют "защелкой". Мы еще столкнемся с этой микросхемой, а пока рассмотрим другие типы регистров. Если регистр-защелка позволяет осуществлять только параллельную запись, то последовательный регистр (пример— 561ИР2), наоборот, имеет возможность записи только через один вход, который является D-входом самого младшего разряда. Последовательный регистр является неким обобщением конструкции D-триггера. Работу динамического D-триггера можно рассматривать как процесс сдвига информации от входа через первый триггер ко второму при поступлении соответствующих перепадов на тактовом входе. В последовательном регистре, который в простейшем случае представляет собой последовательное соединение таких триггеров, происходит нечто подобное— с каждым фронтом тактового импульса информация сдвигается от младшего разряда к старшему, при этом в младший разряд записывается состояние входа. Считывать информацию при этом можно из каждого разряда в отдельности, как и в случае регистра-защелки. Такие регистры получили еще название сдвиговых. Они широко используются для последовательного ввода и вывода информации — скажем, для вывода восьми бит через последовательный порт RS-232 достаточно записать их в такой регистр, а потом подать на него восемь тактовых импульсов с нужной частотой. Сдвиговый регистр можно закольцевать — соединить выход старшего разряда со входом и получить нечто подобное слону из анекдота, который засунул хобот себе в известное место. Однако в случае простого сдвигового регистра такое соединение приведет к тому же результату, что и для слона, т. е. довольно бесполезно практически, ибо мы без дополнительных ухищрений запись информации производить уже не сможем. Большее распространение получило объединение возможностей параллельной и последовательной записи/считывания в одном устройстве (пример — четырехразрядный регистр 561ИР9 или восьмиразрядный 561ИР6). Обычно эти регистры также делаются на D-триггерах. Они являются наиболее универсальными устройст 4 Но не такие устройства, как магнитные диски, которые представляют собой просто набор отдельных битов.
вами, которые позволяют изменять и читать каждый бит отдельно, а также сдвигать всю информацию с записью ее с одного последовательного входа и чтением с одного последовательного выхода. Такие регистры— неотъемлемая часть устройств памяти большой емкости, без них чтение и запись были бы невозможны. Рис. 24.5. Схема использования сдвиговых регистров для последовательного вывода информации из устройства с матричной организацией На рис. 24.5 схематически показан один из способов, как с помощью сдвиговых регистров можно организовать чтение информации из устройства, организованного по матричному типу, через единственный выход. Это могут быть устройства памяти или, например, светочувствительные матрицы ПЗС5. На этой схеме матрица условно показана, как массив точек 8x8, хотя на деле она обычно гораздо больше. Все строки матрицы представляют собой сдвиговые регистры, а справа стоит последовательно/параллельный сдвиговый регистр, в который запись информации производится во все разряды сразу, а вывод — последовательным сдвигом. В схеме по рис. 24.5 сначала подается сигнал сдвига на все строки одновременно (вход Сстр), после чего информация оказывается на входах сдвигового регистра справа, после чего подается 5 ПЗС-матрицы (CCD, от "приборы с зарядовой связью") — устройства, которые под действием света накапливают в ячейках определенный заряд. ПЗС (и похожие на них КМОП-матрицы) являются основным компонентом теле- и видеокамер, а также цифровых фотоаппаратов и могут служить типичным примером аналого-цифровых устройств, потому что содержат информацию в виде дискретного массива, который, однако, состоит не из двоичных единиц (битов), а из зарядов, величина каждого из которых пропорциональна освещенности данной точки (пиксела). Аналоговый принцип представления информации сути дела не меняет, если выходной регистр умеет оперировать с отдельными зарядами, а не просто с логическими уровнями.
сигнал параллельной записи в этот регистр (вход Р), а затем восемь тактов для сдвига информации на выход (вход Срег). Легко подсчитать, что для чтения всех 64 ячеек нужно 64 + 8 = 72 такта времени. Это может показаться слишком медленным процессом, поэтому на практике в подобных устройствах используют более сложную организацию, позволяющую "выплевывать" наружу за один такт по 8, 16 и более разрядов одновременно. Самым быстрым способом считывания информации из устройств, организованных по принципу матрицы, является полностью параллельное чтение. Мы его будем рассматривать в главе 28 вместе с устройствами памяти. Подробнее регистры мы изучать не будем, а перейдем к другим широко применяемым динамическим устройствам — счетчикам. Счетчики Самый простой счетчик можно получить, если соединить последовательно ряд счетных триггеров, как показано на рис. 24.6, а (мы уже упоминали этот способ в главе 23). В этой схеме есть две особенности. В первой из них легко разобраться, если построить диаграмму работы этого счетчика, начиная с состояния, в котором все триггеры находятся в состоянии низкого уровня на выходе ("0000"). В самом деле, при подаче первого же импульса триггеры перейдут в состояние со всеми единицами ("111 1")! Если строить диаграмму дальше, то мы увидим, что последовательные состояния будут такими: "1110", "1101" и т. д. В этом легко узнать последовательный ряд чисел 15, 14, 13 — т. е. счетчик получился вычитающим, а не суммирующим. А как можно получить суммирующий счетчик? Очень просто — надо ко входу каждого следующего триггера подсоединить не прямой выход предыдущего, а инверсный. Порядка ради можно тактовые импульсы подавать также через инвертор (рис. 24.6, б), тогда счетчик будет срабатывать по заднему (отрицательному) фронту входного импульса, а не по переднему. Разумеется, можно использовать просто триггеры с инверсным тактовым входом. В этом случае будет все в порядке — входные импульсы будут суммироваться (см. диаграмму) и мы получим ряд последовательных состояний: "0000", "0001", "00010", "0011" и т. д. Удивительная все же штука— электроника! Сначала мы получили полную аналогию между абстрактной математической теорией и состояниями переключателей на реле, теперь вот — между не менее абстрактным арифметическим счетом и последовательными состояниями счетчика на триггерах. Чем этот счетчик отличается от дикаря, раскладывающего на земле палочки? Ничем, кроме того, что он раскладывает не палочки, а уровни напряжений, причем выгодно отличается от первобытного сознания тем, что еще владеет позиционной системой счисления. Начинаешь понимать, почему ученые
середины прошлого века были так обольщены возможностями электронных схем, что даже заговорили о "машинном разуме". Но это уже другая тема... сЩШШШЛШШП ао JTTIJTrLn.J си ц_1тШХЦГ Q3 н : Н н I Рис. 24.6. Схемы счетчиков на D-триггерах: а — вычитающего; б — суммирующего У счетчиков, построенных по такой простейшей схеме, есть еще один крупный недостаток, которого мы также отчасти касались в предыдущей главе. А именно — переключение триггеров происходит асинхронно, сигнал от входа должен пройти всю цепочку, пока на выходе также изменится уровень. Эти, казалось бы, незначительные задержки, могут, однако, привести к зна-
читальным неприятностям, типа возникновения лишних "иголок" при дешифрировании состояний выхода. А при больших частотах входных импульсов на пределе возможностей конкретных логических элементов, фронты сигналов на выходах вообще могут приобрести совершенно хаотическое расположение относительно входного сигнала так, что дешифрировать состояние счетчика будет невозможно. Поэтому практически все счетчики в интегральном исполнении делают по иным, синхронным, схемам, когда входной тактовый сигнал подается одновременно на все разряды, и фронты выстраиваются строго "по линеечке", независимо от задержек в том или ином триггере. Подробно разбирать мы такие схемы не будем, т. к. самим их строить не придется, а для понимания сущности происходящих в счетчиках процессов достаточно и вышеизложенного. Обратимся лучше к конкретным типам серийно выпускаемых счетчиков. Все типы счетчиков, входящих в КМОП-серии, мы не рассмотрим — их довольно много. Подробно мы обратимся только к нескольким микросхемам, функциональность которых, пожалуй, может перекрыть большинство потребностей разработчика, а другие типы рассмотрим по мере необходимости, при описании соответствующих схем с их использованием. Первый из счетчиков, который мы рассмотрим подробно,— 561ИЕ10. Микросхема включает два одинаковых четырехразрядных синхронных счетчика в одном корпусе. Разводка выводов ее показана на рис. 24.7, а, где вроде бы все понятно, кроме назначения вывода Е. Четырехразрядный счетчик, входящий в состав этой микросхемы, работает так: если на выводе Е присутствует напряжение высокого уровня, то счетчик будет переключаться по положительному фронту на входе С, однако это касается только первого триггера, все остальные будут работать в соответствии с диаграммой по рис. 24.6, б, т. е. счетчик будет суммировать импульсы. Общая диаграмма будет выглядеть так, как если бы мы взяли строку входных импульсов от диаграммы на рис. 24.6, а, и подставили бы ее в диаграмму на рис. 24.6, б. Вывод Е тут является разрешающим ("enable") для тактового входа С. Однако если же оставить на входе С напряжение лог. О, а тактовые импульсы подавать на вход Е, то счетчик будет срабатывать от отрицательного перепада напряжений на этом входе, т. е. диаграмма его окажется в полном соответствии с диаграммой на рис. 24.6, б. Как видите, можно было бы поменять обозначения Е и С местами, однако в этом случае их следует дополнить знаком инверсии. Поэтому если вы хотите каскадировать два счетчика из этой микросхемы, получив в результате один восьмиразрядный счетчик, то выход Q3 первого счетчика нужно присоединить именно ко входу Е второго, подав на вход С потенциал лог. 0. Учтите, однако, что при этом обе половинки результирующей конструкции (старшая и младшая тетрады) будут работать асинхронно
относительно друг друга, и срабатывание разряда номер 4 (выход Q0 второго счетчика), как и всех остальных трех старших разрядов, будет происходить позднее, чем срабатывание младших. Это обычно, впрочем, не так чувствительно, как если бы все разряды работали асинхронно. Так как вывод обнуления R обозначен без инверсии, то установка всех разрядов в состояние О будет происходить при подаче высокого уровня на этот вход, и пока этот уровень присутствует, счетчик будет игнорировать любые изменения на тактовых входах. Максимальная рабочая частота микросхемы ИЕ10 при напряжении питания 5 В— 1,5 МГц, минимальная длительность импульса сброса — 250 нс. с,- К561 — + VflMT SE - K561 — +^ПИТ см | ИЕ10 —r2 Q3 - ИЕ11 15 _ — ооД —Q32 S3 — —Q2 снД SO — — S2 О2Д —Q12 - 5 Pbx"“ — S1 Q3,- —qo2 Q0 - — Q1 Ri — 15 E, _ 7_ Рвых — U/D £ — c2 I1 9-R Рис. 24.7. Разводка выводов счетчиков: а — 561ИЕ10; б — 561ИЕ11; в — организация автоматической предустановки счетчиков типа ИЕ11 Счетчик 561ИЕ11 — более универсальный, и управляющих выводов у него значительно больше, поэтому в 16-выводном DIP'e умещается только один четырехразрядный счетчик. Разводка и обозначение выводов для него показаны на рис. 24.7, б. Не правда ли, запутаться можно? Однако на самом деле все гораздо проще, чем выглядит.
Если на выводах R, SE, Рвх присутствуют низкие уровни напряжения, а на входе U/D — высокий, то счетчик считает по положительному фронту на входе С в точности так же, как это делает половинка ИЕК) при высоком уровне на входе Е. Со входом обнуления R все понятно — при подаче на него высокого уровня все обнуляется. Вход U/D служит для реверсии (поэтому такой счетчик еще называется реверсивным): если на него подать напряжение лог. О, то счетчик будет не суммировать, а вычитать подобно тому, как это делает счетчик, показанный на рис. 24.6, а. Самый интересный — вход SE ("set enable" — разрешение установки). Если на него подать напряжение логической единицы, то в триггеры счетчика запишутся значения, установленные на входах SO-S3. Возможность такой параллельной предустановки, как мы увидим дальше, значительно расширяет возможности счетчика. А вход и выход переноса Рвх и Рвых предназначены для каскадирования счетчиков — для получения синхронного (в отличие от ИЕ10) счетчика большей разрядности надо входы С у всех микросхем объединить, а выход Рвых предыдущего счетчика соединить со входом Рвх следующего. У самого первого счетчика, естественно, Рвх присоединяется к "земле". Сколько удовольствия можно получить от этой схемы! Я покажу только пару вариантов того, как ее использовать. Начнем с того, что наличие возможности предустановки произвольного значения позволяет соорудить из этой микросхемы счетчик с любым коэффициентом деления входной частоты (в пределах емкости исходного счетчика, если используется один корпус ИЕ11, то это значения от 1 до 16). В самом деле, если счетчик считает в стандартном режиме, то частота на выходе Q3 будет равна 1/16 частоты на входе, т. е. коэффициент деления составит 16. Принцип установки другого коэффициента проще всего показать на примере обратного (вычитающего) режима счета. Арифметика тут простая: предположим, мы установили на входах предустановки число 3 (0011) и организовали схему так, чтобы в состоянии, когда все выходы Qj равны нулю, это число каждый раз записывалось бы в счетчик. Так как режим вычитающий, то при подаче тактовых импульсов на вход счетчик будет последовательно проходить состояния: предустановка — "ООП" — фронт тактового импульса — "0010" — фронт тактового импульса — "0001" — фронт тактового импульса — "0000" — предустановка — "ООН"— фронт тактового импульса— "0010" и т. д. по новой. После каждых трех тактовых импульсов счетчик будет возвращаться в исходное состояние (если предустановки нет, то он это делает после каждых 16 импульсов). То есть мы получили коэффициент деления, равный 3. Можно
резюмировать: в вычитающем режиме коэффициент деления будет такой, каково число на входах предустановки. Сразу и подумаем — а что будет, если запустить счетчик в обычном режиме, суммирующем? Нетрудно подсчитать, что коэффициент деления при этом будет равен разности между максимально возможным коэффициентом (16) и установленным числом (3) — в данном случае 13. Я так подробно на этом останавливаюсь, кроме всего прочего еще и потому, что счетчики-таймеры в микропроцессорных системах (и в составе микроконтроллеров типа AVR, и в других микроконтроллерах, и системный счетчик в IBM PC, который без изменений воспроизводится во всех системах от Intel) работают совершенно аналогично описанному. И для того, чтобы успешно программировать микроконтроллерные системы, необходимо очень хорошо понимать принцип их работы — без таймеров микроконтроллеры, можно сказать, вообще не нужны. Но в микроконтролерах все остальное за нас уже сделали, а если вернуться к обычной интегральной логике, то сразу встают два вопроса. Первый их них звучит так: а откуда, собственно, считывать эту поделенную частоту? При использовании вычитающего режима считывать частоту придется с того выхода счетчика, который соответствует реальной разрядности делителя — по приведенной "диаграмме" видно, что в случае коэффициента, равного 3, старшие разряды вообще не используются. Это приемлемо, если мы хотим иметь раз и навсегда установленный коэффициент, но в общем случае неудобно — если коэффициент по ходу дела меняется. Поэтому нужно либо: использовать суммирующий режим, при котором старший разряд всегда задействован, и результирующая частота снимается именно с него (например, при значениях, приведенных выше, счетчик будет все время считать от 3 до 15), либо... либо есть еще одна возможность, для знакомства с которой придется ответить сначала на второй вопрос: как организовать предустановку значения счетчика каждый раз при достижении им состояния "0000"? На схеме рис. 24.7, в показано, как это можно сделать (это не единственный вариант, но нам подойдет). Диаграмма работы схемы (справа) показана начиная с момента, когда вот-вот должен прийти такт, при котором счетчик установится в состояние "0000". В любом другом состоянии на входе четырехвходового элемента ИЛИ-HE присутствует хотя бы одна единица и на выходе его, соответственно, логический ноль. Выход же элемента И-НЕ пребывает по этой причине в состоянии лог. 1, а на входе SE— лог. 0. Как только с очередным положительным тактовым перепадом счетчик установится в состояние "0000", то на выходе элемента ИЛИ-HE появится лог. 1. Так как тактовый импульс пропускается через инвертор, то на нижнем по схеме входе И-НЕ в этот момент лог. 0 и на выходе его по-прежнему 1. И только после отрицательного
перепада на тактовом входе С (который для остальной схемы является нерабочим) на обоих входах И-НЕ установится лог. 1, на выходе — лог. О, и на SE появится, наконец, долгожданный высокий уровень, разрешающий запись значений, установленных по входам SO-S3. Как только запись произойдет, все немедленно отработает назад, т. к. на выходе ИЛИ-НЕ высокого уровня уже не будет. Импульс на входе SE окажется очень кратковременным, но нам длиннее и не надо. Заметим вскользь, что в этой схеме можно было бы обойтись без инвертора для тактовых импульсов — тогда предустановка бы происходила сразу после того, как на выходах счетчика установится "0000", однако это состояние было бы очень кратковременным. Теоретически это безразлично, т. к. состояние "0000" в любом случае присутствует некоторое время, но могут возникнуть сложности с дешифрацией этого состояния и вообще... так красивее. Так вот, легко сообразить, что частота коротких импульсов перезаписи на входе SE как раз в точности равна частному от деления входной частоты на установленный коэффициент. И ее в этом качестве использовать удобнее, чем выходы разрядов, потому что не нужно гадать, с какого разряда снимать частоту при вычитающем режиме. Но самое интересное впереди: что такое частота? Частота— это количество импульсов в единицу времени. Поэтому, если взять определенный интервал времени, то количество импульсов X на выходе счетчика в таком режиме будет равно частному от деления количества входных импульсов п\ на установленный коэффициент деления пг. Но никто нас не оговаривает— откуда именно брать информацию для входов перезаписи SO-S3. Это может быть состояние точно такого же счетчика (именно поэтому я обозначил число входных импульсов и коэффициент одинаковыми буквами). Типичная задача, которая решается в этом случае: если количества импульсов И] и «2 есть результат измерения неких временных интервалов (т. е. заполнения их известной частотой — подробности см. далее), то описанная методика позволяет получить их отношение. А такая задача возникает сплошь и рядом — например, результат работы интегрирующих АЦП, описанных в следующей главе, есть именно интервал времени, пропорциональный измеряемой аналоговой величине, и нередко — обратно пропорциональный. Для переворота характеристики с целью получения линейной зависимости в этом случае нужно произвести операцию деления, и пришлось бы использовать не иначе, как микропроцессор, однако счетчики, как видите, дают возможность обойтись и без него. Выпускается и микросхема 561ИЕ14, которая аналогична ИЕН за исключением того, что у нее есть еще вход переключения двоичного/десятичного счета. Так как все выводы корпуса DIP-16 у ИЕН заняты, для этого пришлось пожертвовать входом R, вместо которого имеется вывод В/D. Если
на этом входе напряжение низкого уровня, счетчик ИЕ14 считает в двоичнодесятичном коде, если высокого — становится полностью аналогичным ИЕ11. Постойте, а как же обнулять, если вход R отсутствует? Очень просто — надо подать на все входы предустановки SO-S3 потенциал "земли", а импульс обнуления подавать на вход SE вместо R. Напоследок мы разберем две типичных практических схемы на счетчиках. Одна из них — давно обещанный (см. главы 2 и 14) цифровой лабораторный генератор, для которого нам придется использовать еще один тип счетчика, "заточенного" для работы именно в качестве делителя частоты. Цифровой лабораторный генератор Счетчик 561ИЕ16, который мы будем использовать, ничего особенного не представляет, и является простым асинхронным счетчиком, подобным показанному на рис. 24.6, б. Мы могли бы спокойно соорудить его сами из отдельных триггеров, но для этого их понадобилось бы целых 14 штук, т. е. семь корпусов. А микросхема 561ИЕ16 в 16-выводном корпусе не только заключает в себе 14-разрядный счетчик, но и включает специальные буферные усилители по выходу каждого каскада деления, для того чтобы случайная перегрузка одного каскада не привела к остановке всех последующих. Кроме выходов Q0-Q13, наружу выведен вход С и вход сброса R. Позвольте, спросите вы, но ведь еще два вывода заняты под питание, так что из 16 выводов на выходы приходится всего 12, а не 14, куда же девать еще два? Разработчики пошли по пути наименьшего сопротивления — почему-то вместо того, чтобы использовать корпус, например, DIP-20 (заодно еще и вход S вывести, и еще что-нибудь, например, поставить буферный усилитель для входной частоты), они просто исключили выходы второго и третьего каскадов Q1 и Q2. Ну, да ладно, обойдемся и тем, что дают. Итак, с помощью этого счетчика мы получим генератор, который выдает 13 значений частоты (считая входную), каждая в два раза меньше предыдущей, за исключением небольшого "провала". Чтобы получить при этом самые низкие частоты, кратные целым, без дробных частей, значениям, выраженным в герцах, нужно на входе использовать генератор с частотой, равной какой-нибудь степени двойки. Генератор можно, конечно, соорудить по одной из приведенных выше схем мультивибраторов, но это не есть приемлемое решение для лабораторного прибора. Для цифрового генератора в данном случае важна именно стабильность частоты, т. к. мы собираемся испытывать с его помощью разные измерительные схемы — это одна из главных причин, почему лучше сделать для себя такой генератор, а не использовать аналоговые серийные приборы с плавной перестройкой частоты. Есть, разумеется,
в продаже и кварцованные генераторы промышленного производства, но они на много порядков дороже того, что мы можем соорудить на двух микросхемах и пяти навесных деталях— одним, как говорится, взмахом паяльника. И при этом функциональность полученного генератора будет перекрывать наши потребности если и не на все 100, то, по крайней мере, на 99% совершенно точно. Мы возьмем кварц, который в народе называют часовым, потому что точно такие же кварцы употребляют во всех без исключения электронных часах. Он имеет частоту ровно 32 768 Гц, что есть, как вы догадались, 215. Применив двоичный счетчик из пятнадцати каскадов, мы получим на выходе частоту ровно 1 Гц, которукГможно использовать для отсчета времени в привычных нам секундах. Учтите, кстати, что продолжительность положительного или отрицательного импульса с частотой 1 Гц, полученной на выходе счетчика, составляет не секунду, а полсекунды, так что для получения интервала длительностью в 1 секунду, надо поделить частоту еще раз пополам. Но это мы отвлеклись, тем более что в нашем случае мы 1 Гц все равно не получим, ибо разрядов у нас только 14. Но и минимальной частоты в 2 Гц будет вполне достаточно. Кстати, немаловажной и очень удобной особенностью нашего генератора будет то, что частоты будут точно (ну, почти точно, т. к. счетчик асинхронный) сфазированы, что позволит нам получать импульсы разной скважности, если использовать дополнительные логические элементы. Прежде чем представить вам схему, которую вы, надеюсь, уже и сами почти придумали, несколько слов о часовых кварцах. То, что они бывают рассчитаны на пониженное напряжение в целях миниатюризации, я уже рассказывал в предыдущей главе. Миниатюрные кварцы нам не годятся заведомо, т. к. мы хотим использовать свойство КМОП-микросхем работать в диапазоне питания 3—15 В на полную катушку. Самые ходовые часовые кварцы, выдерживающие такой диапазон напряжений, выпускают в корпусах длиной порядка 12 мм, высотой и шириной миллиметра по три-четыре— в народе такие корпуса зовут "гробиками". Они обычно имеют точность частоты ±1 Гц в при комнатной температуре. Сама схема представлена на рис. 24.8. Как видите, она крайне проста. Если вы не достанете резистор 5,1 МОм — не упирайтесь рогом, поставьте 1—2 МОм, все будет работать отлично. То же касается и емкости конденсаторов— совершенно не обязательно использовать именно 62 пФ, подойдут и другие близкие номиналы. Не забудьте, что остаются свободные элементы И-НЕ, и если вы их не планируете использовать (см. далее), их входы надо присоединить к "земле". Схему следует собрать на макетной плате и вывести все тринадцать значений частоты на ее край, оформив в виде клеммника с соединениями под винт. Внешний вид такого клеммника показан на рис. 24.8 сбоку.
Они бывают несколько разной конструкции и разных размеров, а также сдвоенные (как на рисунке), строенные или счетверенные, но все отличаются тем, что их можно соединять друг с другом в одну линейку наподобие деталей конструктора "Лего", получая таким образом клеммники с любым количеством выводов. Естественно, каждую клемму следует надписать, чтобы не заниматься каждый раз отсчетом выводов от края. Да, а питание? А отдельного блока питания для этой конструкции делать вовсе не надо — т. к. предполагается использовать генератор для проверки разных других схем, то целесообразно будет питать его от того же напряжения, что и эти схемы, чтобы сразу получить нужные логические уровни. Но обязательно нужно поставить развязывающий конденсатор по питанию, как указано на схеме. 5,1 м к выв. 14 DD1 К выв. 7 DD1 32768 Гц Рис. 24.8. Схема цифрового лабораторного генератора Если вы хотите сразу несколько расширить функциональность генератора, добавьте микросхему 561ТМ2 с двумя триггерами, которые нужно превра- 14 Зак. 710
тить в счетные по схеме рис. 24.4, в и присоединить один к выводу частоты 2 Гц (получив таким образом частоту в 1 Гц), а второй можно к первому (чтобы получить интервал 1 с), а можно— к выходу частоты 16384 Гц, чтобы хоть частично заполнить "провал". При этом нужно иметь в виду, что триггеры в ТМ2 работают по фронту, а не по спаду, поэтому чтобы сохранить правильную фазировку, выходные частоты надо брать с инверсного выхода— того же, куда присоединяется вход D (фазировка входной частоты у нас правильная за счет использования инвертора). Можно, конечно, поставить и инверторы по входу С, для чего задействовать свободные два элемента ЛА7 — так будет даже "правильнее". Однако логические элементы лучше иметь еще и отдельно — они позволят собирать выходы счетчика для получения нужной скважности для разных других целей. Так что удобно добавить еще одну микросхему типа ЛА7 или ЛЕ5, выводы которой также выведены на отдельный клеммник. Можно добавить к схеме и ключевой транзистор, т. к. довольно часто приходится подключать различные мощные нагрузки типа динамика или светодиодов. В общем, творите, как сумеете. Частотомер Частотомер в радиолюбительской практике прибор очень полезный, но не позарез необходимый. Мы отчасти именно для того и городили "кварцова-ный" генератор, чтобы заранее всегда знать точно, какая у нас частота и длительность импульса. А приблизительно померить частоту всегда можно осциллографом. Иное дело с аналоговым генератором, который мы конструировали в главе 14 — там частотомер может понадобиться хотя бы для того, чтобы генератор этот откалибровать. Он может иногда оказаться полезен и для измерения интервалов времени, например, при отладке управления мощной нагрузкой (см. главу 11) или получаемых с интегрирующих АЦП (см. главу 25). Так что если вы его сделаете— лишним он отнюдь не окажется. Однако конструкция хорошего частотомера (а плохой делать не имеет смысла), как вы увидите, куда сложнее генератора. Причем главная трудность заключается не в принципе— он очень прост— а в том, чтобы обеспечить универсальность, удобство и корректность работы и достаточную разрешающую способность во всех диапазонах. В результате конструкция получается довольно громоздкая. Эту громоздкость можно было бы свести к минимуму, если использовать микропроцессор в совокупности с многоразрядным драйвером семисегментных индикаторов (типа, скажем, МАХ7219). Тогда все трудности построения такой схемы, кроме аналогового входного формирователя, перешли бы в область программирования. Однако тут есть один подводный камень— обычный универсальный микропроцессор типа
популярных PIC или AVR скорее всего не справится с такой задачей из-за относительно медленной работы. Придется брать и осваивать быстродействующие типы, и еще не факт, что вам сразу удастся среди них подобрать чип, удобный для нашей задачи. Как видите, везде свои трудности, и поскольку мы еще микропроцессоров "не проходили", то остановимся на "сермяжном" варианте на основе микросхем средней степени интеграции, тем более, что при проектировании на более современной основе принципы работы будут те же, а знание "кухни" никогда не помешает. Начнем с технического задания. При его составлении мы не будем слишком сильно раздувать функциональность, чтобы не усложнять схему сверх необходимости. Однако не будем и жаться, иначе устройство получится бесполезное на практике. За основу возьмем КМОП стандартной серии, которые нормально работают до частоты 1 МГц, поэтому ограничимся индикатором в 6 десятичных разрядов. Если хотите расширить пределы измеряемых частот, то можете использовать серию 74НС, которая позволит работать до 10 МГц и выше, но тогда и количество разрядов индикатора придется увеличить, а также расширить и доработать некоторые другие узлы. Здесь же мы остановимся на базовой серии КМОП. Итак, наш частотомер будет уметь: □ измерять частоту в пределах 0,1—99 999,9 Гц с разрешающей способностью 0,1 Гц; □ измерять частоту в пределах 1—999 999 Гц с разрешающей способностью 1 Гц; □ измерять период колебания в пределах 1 мкс—999 999 мкс; □ измерять длительность временного интервала в пределах 1 мкс—999 999 мкс. Погрешности здесь зависят практически только от применяемого кварца и отчасти от построения схемы. Если считать кварц совершенно точным, то погрешность составит половину разрешающей способности. На самом деле обычные кварцы имеют, как мы уже неоднократно упоминали, при комнатной температуре погрешность порядка 10~5, т. е. в этом случае частоту 999 999 Гц можно измерить с систематической погрешностью ±10 Гц, а в нашем случае некоторое упрощение схемы добавит еще случайную погрешность +30 Гц (максимально, причем знак + означает, что ошибка всегда в сторону увеличения), но и такая погрешность (0,003% от полной шкалы) более чем приемлема для практических целей. О причинах появления случайной погрешности при измерении частоты см. сноску 6 в этой главе. В случае же измерения периода и временного интервала указанная случайная ошибка пропадет, а систематическая (от разброса частоты кварца) станет относительной, т. е. в процентах от измеренной величины, а не от полной шкалы — с учетом ограничений по разрешающей способности, конечно.
Сам принцип измерения очень прост: частота есть количество колебаний в секунду, поэтому мы, не долго думая, берем импульс длительностью в 1 секунду и подсчитываем счетчиком число импульсов за время этого интервала. Полученный результат и будет частота. Чтобы повысить разрешающую способность в 10 раз, надо подсчитать число импульсов за 10 секунд и при индикации не забыть высветить запятую перед младшим разрядом. Получим частоту с точностью до долей герца (импульсов получится, естественно, в 10 раз больше, поэтому мы ограничили в этом случае измеряемую частоту значением 99 999,9 Гц, иначе число не влезет в индикатор). Можно, в принципе, и не задаваться таким большим временем счета, а повысить разрешающую способность, используя "принцип нониуса", как у штангенциркуля, но это усложнит схему и любопытствующих я отсылаю к [10], а мы сочтем 10 секунд приемлемым временем. Аналогично измеряется и интервал времени (длительность импульса), только наоборот: подсчетом числа импульсов 1 МГц, которые прошли за это время, мы получаем время в микросекундах. Период будем измерять, как и интервал времени, только останавливать счетчик придется не по следующему противоположному перепаду входного сигнала, а по перепаду той же полярности. Следует предусмотреть и возможность измерения длительности как положительных импульсов (от фронта до спада), так и отрицательных (от спада до фронта). При измерении периода, кстати, проще обеспечить высокую разрешающую способность, чем при измерении частоты, т. к. можно взять 10, 100 и более периодов, получая при этом в общем случае не слишком большое время счета. Можно даже автоматизировать выбор количества периодов с целью достижения максимальной разрешающей способности. Можно и частоту измерять по периоду, а затем "переворачивать" результат с помощью реверсивного счетчика с предустановкой, как описано выше. Много чего можно, но мы все же пойдем самым простым путем. Проектирование мы начнем со входного формирователя импульсов. Это очень важный узел, т. к. мы собираемся измерять частоту сигналов произвольной формы и амплитуды, и любой такой сигнал надо превратить в прямоугольный с амплитудой, соответствующей напряжению питания цифровой части. Можно сказать, что половина успеха в проектировании частотомера зависит от этого узла — все остальное есть лишь соединение стандартных кирпичиков нужным образом. Вариант его построения с помощью компаратора показан на рис. 24.9. Как видите, он получился не таким уж и простым. Формирователь имеет входное сопротивление около 300 кОм (минимально). Потенциометр "Уровень" служит для регулирования амплитуды входного сигнала. Если она все же превышает напряжение питания (от пика до пика), то защитные диоды, присоединенные к "земле" и питанию, не позволят ей
выйти за его пределы. Резистор 10 кОм служит для ограничения тока через эти диоды. Потенциометром "Порог" можно регулировать уровень срабатывания (почти от нуля до примерно +2,2 В, считая от среднего значения входного напряжения). Делители по входам должны быть настроены так, чтобы в нижнем по схеме положении этого потенциометра напряжение на отрицательном входе примерно на 0,1 В превышало напряжение на положительном (при полном отсутствии, естественно, сигнала на входе, т. е. при замыкании входа на "землю"), для чего суммы сопротивлений в верхнем и нижнем плече сделаны не совсем равными. В этом случае на выходе компаратора при отсутствии сигнала будет всегда лог. 0. Величина 0,1 В при этом будет характеризовать максимальную чувствительность частотомера, меньше ее делать не следует во избежание ложных срабатываний. Конденсатор входного фильтра, показанный пунктиром, для повышения четкости срабатывания лучше не устанавливать вообще, однако в этом случае также возможны ложные срабатывания, и лучше его установить, подобрав величину емкости так, чтобы при частоте 1 МГц форма прямоугольных импульсов на входе компаратора не слишком искажалась по сравнению с исходной. Переключатель на выходе, условно обозначенный символами фронта и спада, переключает выход формирователя с прямого представления полученного сигнала на инверсное — в целях обеспечения возможности работы как с положительными, так и с отрицательными импульсами. В дальнейшем мы будем считать, что работаем с импульсами только положительной полярности. +9 в Рис. 24.9. Схема входного формирователя импульсов для частотомера Заметьте, что я уже задался напряжением питания схемы. 9 В у меня выбрано потому, что такое напряжение удобно для управления светодиодными индикаторами, кроме того, быстродействие КМОП при этом напряжении будет выше, стабильность работы компаратора также повысится. Если вы захотите
использовать быстродействующую КМОП-логику, вам придется снизить питание до стандартных 5 В, использовать отдельное напряжение для управления индикаторами и потому ввести дополнительные ключи (см. главу 32). Второе, что мы сделаем — сконструируем узел индикации. Его можно построить самым различным образом. Условия такие: на входе имеется двоичнодесятичный код (6 десятичных разрядов по 4 бита каждый). На выходе мы должны иметь светящиеся индикаторы — также 6 штук. В принципе можно достать старинные микросхемы 176ИЕ4, в которых семисегментный дешифратор совмещен с десятичным счетчиком (забудем пока про то, что серия 176 менее быстродействующая). Но такое лобовое решение не будет корректным. Во-первых, т. ^к. счет у нас долгий (да и в любом другом случае), грамотное построение узла индикации обязательно включает в себя регистр-защелку, чтобы на то время, пока идет счет, информация на индикаторах не менялась. Можно тогда тупо подключить к выходу каждого десятичного разряда дешифратор 561ИД5 (см. рис. 21.6), а к нему— индикатор (этот дешифратор умеет "защелкивать" данные). Итого 6 корпусов дешифраторов. Годится? В общем, да, но подсчитаем количество внешних соединений: 7 • 6 = 42 проводочка только для соединения сегментов с дешифраторами, и еще — питание. Да, мы же забыли, что напрямую подключать к выходам дешифраторов светодиоды не рекомендуется, и потому еще понадобится либо 42 транзистора (и 84 резистора к ним) либо соответствующее количество буферных элементов типа ЛН2 или ПУ4 (7 корпусов)! Нельзя ли это дело как-то подсократить? Можно, но при этом схема усложнится, т. к. придется добавить на каждый разряд по корпусу "защелок" 561ТМЗ и сооружать еще схему управления, но транзисторов понадобится меньше, и схема соединений самих индикаторов окажется проще. Такая схема, которую мы будем сейчас изобретать, называется "динамической индикацией". Забегая вперед, заметим, что ее целесообразно применять, если количество разрядов индикации четыре и выше. Смысл ее в следующем: в каждый отдельный момент напряжение питания подается только на один разряд индикаторов. В это же время на сегменты, которые все соединены между собой параллельно, подается код, соответствующий именно этому разряду. В следующем такте код меняется, а напряжение подается на следующий разряд, и так все время. Чтобы мигание было незаметно для глаза, полный цикл смены разрядов должен повторяться с частотой не менее 150—200 Гц. Естественно, потребуется увеличение мгновенного значения тока через сегменты по сравнению со статическим режимом. При таком режиме требуется всего семь соединений для управления сегментами и столько для управления разрядами, сколько разрядов— т. е., в данном случае, шесть. Итого— 13 вместо 42. Неплохо! А почему эту схему невыгодно использовать при числе индикато
ров, меньшем четырех? Потому что при двух индикаторах нам хотя и потребуется меньше соединений (9 против 14), но усложнение схемы себя не оправдает — число корпусов окажется слишком большим. А в случае управления от микропроцессора, соответственно, усложнится программа. Случай трех индикаторов пограничный: динамический режим целесообразно затевать, если вы управляете от микропроцессора, где может элементарно не хватить управляющих выводов. В случае же использования микросхем средней степени интеграции это опять же невыгодно. Однозначно выгодно это только при большом числе разрядов. Для обеспечения такого режима нам потребуется один дешифратор, четыре корпуса мультиплексоров/демультиплексоров, счетчик-распределитель до 6 (два корпуса + логика), шесть транзисторов для управления разрядами и семь транзисторов для управления сегментами. Сначала разберемся, что такое мультиплексоры. Это микросхема, которая коммутирует единственный вход-ной/выходной вывод с одним их восьми других (нам потребуется 6). Номер коммутируемого вывода определяется трехразрядным кодом на управляющих выводах. Такова микросхема 561КП2 (561 КП 1 делает то же самое, но содержит два четырехразрядных мультиплексора). Кстати, мы упоминали уже (см. главу 20), что эти микросхемы прекрасно коммутируют аналоговые сигналы. Это происходит потому, что здесь выход и вход просто соединяются между собой с помощью ключа, подобно электронному реле. По этой же причине микросхемы эти можно использовать и как мультиплексор (8 —» 1) и в обратном направлении, как демультиплексор (1 —» 8), что, впрочем, требуется значительно реже. Для работы с аналоговыми сигналами у них предусмотрен дополнительный вывод для подключения отрицательного питания (как у дешифратора ИД5), который в нашем случае коммутируется просто на "землю". Теперь разберемся со счетчиком-распределителем. По функциональности это расширенный вариант рассмотренного нами в главе 21 дешифратора 4 —> 10 (561ИД1), только счетчик выдает сигнал не по комбинации бит на входе^ а перебирает выходы по мере поступления тактовых импульсов. То есть это не что иное, как двоично-десятичный счетчик, объединенный с дешифратором. Такая конструкция выпускается в виде отдельной микросхемы (561ИЕ8 или ИЕ9), но нам потребуется не только дешифрованный сигнал для управления разрядами, но и сам двоичный код для управления мультиплексорами, поэтому мы ее соорудим сами из знакомых нам счетчиков 561ИЕ10 и дешифратора 561ИД1, а чтобы считать именно до 6, применим дешифратор на логических элементах. Если бы число разрядов было кратно 8, дешифратор бы не понадобился. Теперь рассчитаем параметры схемы управления. Выберем индикаторы с общим катодом (дешифратор ИД5 выдает низкие уровни на выходах управления сегментами, поэтому ими удобно управлять через р-п-р-транзисторы,
подключенные к питанию). Получается, что нужны семь р-п-р-транзисторов и шесть n-p-п, более мощных. Кстати, о токе — а сколько будет потреблять такая индикация? Положим средний ток через сегмент 3 мА (для современных импортных индикаторов этого более, чем достаточно), всего у нас 42 сегмента, итого почти 130 мА (крайний случай, когда горят все восьмерки). Заодно прикинем общее потребление схемы — с учетом остальных элементов примем его равным примерно 150 мА. Будем использовать стабилизатор LM7809 в корпусе ТО-220 (при входном напряжении 12—14 В радиатор не потребуется). Импульсный ток через сегмент при этом должен быть на уровне 6-3=18 мА. Если вычесть из 9 В примерно 2 В падения на управляющих транзисторах и еще 2 В на самом сегменте, то токоограничивающий резистор для сегмента должен составить 270 Ом (если вы захотите использовать индикаторы большого размера, где в каждом сегменте по два светодиода, его придется уменьшить до 160 Ом). В базе управляющего транзистора для сегмента (выберем тип КТЗ 107) поставим резистор 9,1 кОм, в базу транзистора управления разрядом (импульсный ток до 130 мА, потому выбираем п-р-п-транзисторы средней мощности с "супербетой", типа КТ972) ставим такой же резистор. Все, параметры схемы индикации мы рассчитали. Теперь ее можно нарисовать (см. рис. 24.10). На чертеже для сокращения числа линий соединений между устройствами применен широко употребляемый прием объединения проводников в так называемую "шину". Шина обозначается более толстой линией, и все выходные и входные концы у нее нумеруются — у каждой из шин нумерация своя. Точки на пересечении не ставятся. Сверху справа на рис. 24.10 нарисован стабилизатор питания для всего устройства. Он ничем не примечателен, кроме RC-фильтра, который на всякий случай разделяет питание измерительной части и индикаторов. Нумерация микросхем на рис. 24.10 продолжена с рис. 24.9. Заметьте, что в совокупности у нас остаются свободными три двухвходовых элемента И-НЕ (DD1), два трехвходовых И-НЕ (DD3) и один двухвходовой ИЛИ-НЕ (DD4) — мы их потом постараемся использовать. Второй счетчик в корпусе ИЕ10 (DD2) мы также используем. Не забудьте при раскладке плат присоединить свободные входы оставшихся элементов к шине "земли" — я этого на схемах не указываю, чтобы их не загромождать. Иногда удобно при раскладке поменять элементы из одного корпуса местами — не забудьте при этом изменить нумерацию выводов на схеме, иначе разобраться в дальнейшем будет очень сложно. Если вы будете модернизировать схему с использованием быстродействующей логики типа 74НС (1564), не забудьте также, что разводка выводов аналогичных микросхем там другая.
1 1 *9 В DD4/3 1000,0 х16 В Питание микросхем ---------------~+9В Питание индикаторов (к эмиттерам VT1-VT7) ------------------^+9 в- 33 1000,0 х16 В выход вход LM7809 Общий .4-12-14 В 1000,0 х16 В ХО, — Х0: Х0,— Х0. — Х0,— Х0,— 10 DD2 561ИЕ10 DD3 561ЛА8 DD4 561Л Е5 DD5-DD8 561КП2 DD9 561ИД1 DD10 561ИД5 4-9 В - к выв. 16 DD2, DD5 -DD10, к выв 14 DD3, DD4 -L. к выв. 8 DD2, DD5 -DD10, к выв 7 DD3, DD4, DD5 -DD8, DD10 Х2,— 15 Х2,— Х2.— Х2,— Х2,— Х2.— Рис. 24.10. Схема блока индикации и стабилизатора питания для частотомера Схема узла индикации работает так: счетчик DD2/1 считает непрерывно при поступлении на его вход частоты 1024 Гц (которую мы возьмем от основного счетчика-делителя, см. далее). Когда на выходе счетчика оказывается код 101, соответствующий пятому пришедшему тактовому импульсу, если считать за начальное состояние код 000, то на выходе трехвходового элемента И-НЕ (DD3/1) оказывается лог. 0. Так как на втором входе элемента ИЛИ-НЕ (DD4/2) при этом еще действует положительный уровень входного тактового
сигнала (счетчик ИЕК), напомним, срабатывает по положительному фронту), то на выходе ее также лог. О, который сменяется единицей, когда тактовый импульс закончится. В момент прихода следующего (шестого) тактового импульса, который должен был бы привести счетчик в состояние 110, выход ИЛИ-HE переключается в состояние лог. 0, а счетчик обнуляется по входу R через дифференцирующую цепочку и элемент DD4/3. Гарантированно избежать конфликта между фронтом тактового и обнуляющего импульса позволяет тот факт, что задержка в триггерах асинхронного счетчика однозначно больше, чем задержка в отдельном логическом элементе (впрочем, если даже на выходах и возникнет вдруг "иголка", это в данном случае никак не повлияет на работу нашей схемы, во-первых, потому что вся остальная логика — статическая, а не динамическая, и кратковременное состояние 110 пройдет просто незамеченным, во-вторых, потому что состояние 110 вообще не дешифрируется, см. далее). Импульс на выходе дифференцирующей цепочки составляет примерно 1/100 такта или около 10 мкс. После этого счетчик начинает считать сначала, пробегая таким образом равномерно по времени шесть состояний от 000 до 101. Эти состояния подаются на управляющие входы мультиплексоров DD5-DD8, которые подключают к своим выходам двоичные разряды каждого из 6 десятичных знаков — при комбинации 000 подключается четыре бита самого младшего знака и так далее, до комбинации 101, когда подключается самый старший. Эти биты поступают на дешифратор DD10, который превращает двоичный код в семисегментный. Выходы дешифратора управляют транзисторами VT1-VT7, подключенными, в свою очередь, к объединенным выводам a-g индикаторов. Одновременно код с выхода счетчика поступает на дешифратор DD9, который выдает лог. 1 на том из 6 выходов, номер которого совпадает со значением кода. Эти выходы управляют транзисторами VT8-VT13, коммутирующими катод соответствующего индикатора на "землю". Таким образом, в каждый момент времени включен тот индикатор, номер которого соответствует коду счетчика, и на него при этом подается код цифры знака, также соответствующего коду. Частота смены индикаторов составит при этом 1024/6 = 170 Гц и глаз не заметит мерцания. При раскладке платы следует обратить внимание на то, чтобы не перепутать порядок расположения индикаторов — они должны располагаться слева направо как на схеме, самому старшему знаку соответствует индикатор с номером Н6, код "Х0|, XI ь Х2ц Х3|" при этом должен соответствовать самому младшему, а код "Х06, Х16, Х2б, ХЗб" — самому старшему десятичному разряду. Обратите внимание, что запятая на индикаторе Н2, которая загорается в случае измерения частоты с точностью до 0,1 Гц, с целью выравнивания яркостей подключается через резистор несколько большего номинала, чем остальные сегменты, т. к. при этом нет падения напряжения
на ключах. Сами индикаторы SC05-11H (фирмы Kingbright) имеют высоту цифры полдюйма (05 в обозначении), т. е. 12,7 мм, и красный цвет свечения (буква Н в обозначении). Можно без каких-то переделок, кроме разводки выводов самих индикаторов, заменить их на любые другие (с общим катодом), только в случае индикаторов большого размера (размер цифры 20 мм и более) нужно не забыть уменьшить номиналы ограничительных резисторов (см. выше). Теперь все вспомогательное мы сделали и, наконец, перейдем к конструкции собственно частотомера. В него должны входить: генератор частот, основной счетчик для формирования двоично-десятичного шестизначного кода, управляющая логика и переключатель режимов. Начнем с основного счетчика — его мы сделаем на шести корпусах 561ИЕ14, включенных для работы в двоичнодесятичном режиме. Не забудем, что обнуление у ИЕ14 ненормальное, поэтому сигнал обнуления придется подавать на вход SE. К счетчику необходимо добавить регистр-защелку (6 микросхем 561ТМЗ). Теперь о генераторе частот. Основной генератор мы сделаем на кварце 1 МГц. Однако нам еще потребуются импульсы длительностью 1 с и 10 с — для измерения частоты (и, кстати, частота 1 кГц для индикации). Тут мы поступим нестандартно — сделаем еще один генератор на кварце 32768 Гц, подобный тому, что мы уже делали ранее. Это позволит нам сэкономить корпуса, иначе пришлось бы ставить семь делителей на 10 или вообще переходить на другую элементную базу. Наше же решение имеет тот недостаток, что оба генератора не синхронизированы и вносят каждый свою ошибку, но суммарная ошибка будет невелика. Итак, нам понадобится счетчик ИЕ16, с одного из выходов которого мы возьмем частоту 1024 Гц для индикации. (Кстати, если вам покажется, что индикаторы все же мерцают, то просто подайте на узел индикации частоту 2048 Гц с другого выхода.) Выход частоты 2 Гц мы подсоединим ко входу оставшегося двоичного счетчика из микросхемы ИЕ10 (DD2) и с его выхода Q1 получим частоту 0,5 Гц, т. е. импульсы продолжительностью 1 с. Для получения импульсов 10 с будем использовать десятичный счетчик 561ИЕ8, на вход которого подадим частоту 0,5 Гц, а с выхода переноса получим как раз то, что надо — ИЕ8 представляет собой десятичный счетчик-распределитель с симметричным меандром на выходе переноса. Осталось построить устройство управления. Причем надо учесть одно обстоятельство — в случае измерения периода и длительности импульса необходимо предусмотреть ситуацию, когда измеряемая частота вдруг пропадает или имеет недопустимо большой период — иначе наш частотомер так и зависнет в режиме счета. Это можно сделать, принудительно обнуляя основной счетчик по прошествии некоего заданного интервала.
В общих чертах схема управления будет выглядеть так. В режиме измерения частоты на вход SE основного счетчика подается импульс длительностью либо 1 с, либо 10 с (т. н. "ворота"), во втором случае одновременно нужно подсоединить вывод запятой индикатора Н2 в схеме индикации к питанию + 9 В. На вход С счетчика при этом подается измеряемая частота. По окончании интервала времени содержимое разрядов счетчика переписывается в регистр-защелку, а сам счетчик вслед за этим должен быть обнулен. Одновременно должны быть обнулены и счетчики-делители ИЕ16, ИЕ10 и ИЕ8. В этом случае новый счет начнется сразу6. В режиме измерения длительности интервала времени надо просто сделать наоборот —на вход SE счетчика подать измеряемую частоту, а на вход С — частоту 1 МГц. Весь остальной алгоритм остался бы тем же, но остается вышеуказанный нюанс с пропаданием входной частоты. Это усложняет дело, но никуда не денешься, иначе наш частотомер будет работать некорректно. Для того чтобы уберечься от "зависания", нужно подавать обнуляющие импульсы на вход SE через логический элемент, на второй вход которого завести импульс, формируемый по окончании секундного интервала с выхода Q1 счетчика ИЕ10. Счетчик будет обнуляться либо по входному фронту, либо по этому импульсу. Естественно, в режиме измерения частоты этот импульс следует отключать. При измерении периода входной частоты проще всего поделить входную частоту на два с помощью одного счетного триггера, получив "ворота" в один период, и далее использовать алгоритм для измерения длительности интервала времени. Укажем и недостаток придуманного нами алгоритма — первое измерение как при включении питания, так и при переключении режимов будет некорректным. Для режимов измерения частоты от ошибок при включении питания, когда счетчики оказываются в произвольном состоянии, избавиться легко (см. ранее об установке RS-триггеров), а вот для измерения периода и интервала куда сложнее, т. к. мы попадаем в неизвестный момент относительно 6 Так как обнуление наступает в момент между фронтами частоты генератора 32 768 Гц, то при этом интервал 1 или 10 с может быть чуть-чуть длиннее заданного— в пределах 30 мкс, т. е. одного периода частоты 32 768 Гц (более точной оценке мешает то, что длительность обнуляющего импульса нестабильна и неизвестны величины задержек в счетчиках, тем более что они асинхронные). Мы могли бы синхронизировать импульс обнуления с частотой генератора или сделать задающий генератор от одной частоты 1 МГц (тогда "гуляние" происходило бы в пределах 1 мкс, а не 30), но не имеет смысла возиться, т. к. ошибка составит максимум 3 • 10-5 от полной шкалы. Это приведет к вышеуказанной погрешности +30 Гц на пределе измерения 1 МГц и +3 Гц на пределе измерения 100 кГц. Учтите, что это максимальная случайная погрешность, средняя будет равна ровно половине этих величин.
входной частоты. Если делать все корректно, то надо бы на это время запирать индикацию, но мы не будем усложнять нашу и без того громоздкую схему. Осталось все эти замечательные придумки реализовать в виде готовой схемы. При ее составлении учтем, что нам надо при переключении режимов одновременно коммутировать много всяких мест, и есть два пути реализации переключателя: обойтись простым переключателем на одно направление и четыре положения, а все остальное реализовать на логических элементах, а можно взять сложный переключатель на много направлений, но сократить при этом количество корпусов микросхем. Мы пойдем по второму пути, хотя задача приобретения нужного переключателя (4 положения, 4 направления) может оказаться непростой. В случае использования быстродействующих микросхем лучше было бы все организовать по первому способу, чтобы не тащить мегагерцовые сигналы к переключателю через весь корпус прибора (это относится и к механическому переключателю полярности входа). Но конструкция и так получается сложной, потому остановимся на этом. Получившаяся в результате схема показана на рис. 24.11. В верхней части ее расположен основной счетчик на 6 микросхемах 561ИЕ14 (DD11—DD16) и регистр-защелка на 6 корпусах 561ТМЗ (DD17—DD22). Выходы "защелки" должны присоединяться к соответствующим входам мультиплексоров (DD5—DD8) на схеме индикации. Генераторы собраны в соответствии с описанным, каждый на одном элементе из корпусов DD23 и DD24. В теории рекомендуется не использовать оставшиеся элементы из корпуса, который использован для построения схемы релаксационного генератора любого типа, в особенности кварцевого — могут наблюдаться помехи (по тем же соображениям генераторы собраны на разных корпусах). Однако опыт показывает, что для обычной КМОП на низких частотах это не критично, поэтому мы все же использовали в схеме управления оставшиеся два инвертора из корпуса DD24, на первом элементе из которого собран генератор 32768 Гц. Главный персонаж схемы управления— переключатель S1 на 4 положения и 4 направления. Первое направление используется для переключения частот, а второе — для переключения "ворот". Оба этих сигнала затем смешиваются на элементе ИЛИ-НЕ (DD4/4), и заполненные нужной частотой "ворота" поступают на вход счетчика. Как только "ворота" заканчиваются, формирователь на элементе DD1/2 (использованы оставшиеся элементы из корпуса DD1 на рис. 24.9) выдает импульс длительностью около 100 мкс, по которому происходит перезапись состояния счетчика в регистр-защелку. По окончании этого импульса следующий формирователь (DD1/3) выдает импульс обнуления длительностью около 10 мкс, который, однако, подается на счетчики не напрямую, а через два дополнительных логических элемента. Первый из них (DD1/4), кроме функции инверсии, осуществляет начальную установку всех счетчиков
при включении питания. Второй (DD24/3) передает сигнал обнуления либо с выхода DD1/4, либо с выхода элемента DD24/4, который работает следующим образом. Если переключатель S1 установлен в одно из положений для измерения частоты, то на входе (вывод 12) напряжение "земли" и элемент заперт. Если же производится измерение интервала времени или периода, то по заднему фронту импульса 1 с на выходе DD24/4 формируется импульс длительностью 10 мкс, который передается на обнуление счетчиков, если к тому времени задний фронт входных "ворот" этого еще не сделал. Оставшееся направление переключателя S1 используется для того, чтобы в режиме "Частота 10 с" подключать питание на запятую в индикаторе Н2 (рис. 24.10). S1 S2 S3 B/D SE SO D, LT О, D, Оз D, Оз 0. Q. Р S DD11 D, LT Q, d2 Оз D, Q, о. 0. Р S DD12 D, LT Q, Оз Оз О, Оз 04 О. Р и DD16 DD11 -DD16 561ТМЗ DD17-DD22 561ИЕ14 3 13 з 13 — Х2. DD23 DD26 561ЛА7 DD27 561ТМ2 J5 6 5 5 СТ S0 СТ S0 Q0 S1 Q1 S1 Q1 Q1 Q2 Q2 Q2 S2 S2 S3 Q3 S3 B/D U/D DD22 Г1 SE DD18 3,0 M & & 10 DD1/2 DD1/3 DD23/1 10 DD24/3 DD24/1 +9 В- к выв. 16 DD11-DD22, к выв. 14 DD23-DD27 10 +9 В J. -к выв. 8 DD11 -DD22, к выв. 7 DD23-DD27 —хз; 1S-X3. 15-хз, —хо, 1Р-Х1. 11X2, 3 6- 3 р- Q0 И 11 2 Q0 — •1-ХОг 12-Х1, •1-хо, 11X1, — Х2, Q3 B/D U/D & 5 DD4/4 DD23/2 H 'Частоте 1 c" DD1/4 "Интервал" “Период" 4 DD27/1 & & 5 СТ DD24/4 3 14 DD24/2 Q13 Q4 DD26 DD2/2 Рис. 24.11. Схема измерительной части частотомера Q3 — U/D 10 +9 В 1 МГц . 62 пф 62пф Вх.частота 3,0 м . 32768Гц -А-62 пф 62 пф 5 13 1024 Гц Kynp запятой & &
Вот, собственно, и все. Хочу заметить, что хотя схема частотомера действительно довольно громоздкая (и то мы еще везде упрощали, как могли), на самом деле использование цифровых микросхем отличается от аналоговой техники в выгодную сторону тем, что схемы на них можно не макетировать (в данном случае, за исключением аналогового узла входного формирователя). Если вы не допускали ошибок, то все должно заработать сразу. Для улучшения схемы можно только придумать, как уменьшить количество корпусов микросхем и тем самым сложность печатных плат, раскладка которых в данной конструкции будет самым трудоемким и дорогим процессом. Именно для этого и предназначены микропроцессоры, которые являются универсальными логическими устройствами. Но прежде чем мы перейдем к их изучению, надо рассмотреть еще один класс электронных устройств — аналого-цифровые преобразователи.
Глава 25 Откуда берутся цифры. Цифроаналоговые и аналого-цифровые преобразователи Орудуйте мушкетом и шпагой, мой милый, в этих двух занятиях вы проявляете большое искусство, а перо предоставьте господину аббату, это по его части. А. Дюма, "Три мушкетера" Все природные явления носят непрерывный, аналоговый характер. За двумя большими оговорками — о первой из них мы уже осведомлены, и касается она такой категории, как количество (см. главу 19). Но, несмотря на свою универсальность и вездесущность, дискретное "количество" лежит все же в области абстрактных понятий, а не физических свойств и явлений, а вот другое исключение немало потрясло ученых, когда его обнаружили. Речь идет об атомно-молекулярной структуре вещества и всей огромной совокупности явлений, которые являются следствием этого феномена. И все же даже это универсальное свойство материи нашими органами чувств непосредственно не обнаруживается, для нас все протекает так, как если бы явления природы были полностью непрерывными и характеризовались бы рядом действительных чисел, отстоящих друг от друга по числовой оси на бесконечно малые отрезки. Природа даже устроила нам некоторые препятствия на пути к полной дискретизации всего и вся — так, все элементарные частицы, как известно, могут вести себя и как дискретные частицы, и как непрерывные волны — в зависимости от условий эксперимента. Показательным в этом смысле являются попытки получить идеальные дискретные величины в таких условиях, когда, казалось бы, аналоговым величинам нет места вообще. Одна из таких попыток — построение лазеров: теоретически они должны выдавать электромагнитную волну одной строго определенной частоты, потому что излучение их связано с квантовыми переходами электронов с одной орбиты на другую, а орбиты эти в каждом случае строго фиксированы. Между тем, можно легко показать, что излучение с одной точно определенной длиной волны при ненулевой мощности должно иметь бесконечную амплитуду. Это несколько
напоминает процесс заряда или разряда конденсатора через нулевое сопротивление, при котором, как мы помним, величина тока в цепи в первый момент также обязана быть бесконечно большой. В реальности частота излучения лазера не является абсолютно точной величиной, а занимает некоторую, хотя и очень узкую, непрерывную полосу частот. Точно так же обстоит дело и с резонансной частотой изученного нами в главе 23 кварцевого резонатора. По понятным причинам наши органы чувств за время эволюции отлично приспособились к восприятию аналоговых величин, но плохо воспринимают дискретные. Почему вредны для глаз старые компьютерные мониторы? Экраны и компьютеров, и телевизоров, и традиционных кинотеатров отличаются тем, что на них изображение принципиально дискретное. Глаз пытается распознать в калейдоскопе мелькающих кадров отдельные сцены, никак не желая "понять", что перед ним одно движущееся изображение. (Братья Люмьеры, изобретатели кинематографа, были, среди прочих, провозвестниками цифрового века.) Частота 80 Гц, которая считается порогом безопасного восприятия, есть просто предел, выше которого перестает хватать быстродействия канала передачи глаз-мозг, он работает подобно фильтру низких частот, отрезая пульсации, и мозгу кажется, что перед ним действительно непрерывный процесс. Но в природе, повторим, все величины и процессы действительно непрерывные — вплоть до масштабов, которыми занимается уже атомная физика. В этих масштабах все обстоит совершенно по-другому, чем в привычном нам мире — например, такие характеристики, как температура или давление, теряют смысл, ибо они применимы только к очень большому, непрерывному ансамблю частиц. В то же время мы обнаружили, что считать и обрабатывать информацию лучше все-таки в цифровой форме, которая является универсальной и не зависит от природы физической величины, с которой мы манипулируем. Встает задача преобразования аналоговой величины в дискретную. Между прочим, термин "аналоговый" не слишком хорошо отражает сущность явления (что чему там "аналогично"?) — точнее сказать "непрерывный", а "аналоговый" есть лишь дань традиции, подобно "операционному" усилителю. Естественно, когда мы хотим, чтобы преобразованная информация опять предстала перед нами в форме, воспринимаемой нашими органами чувств, то мы вынуждены делать и обратное преобразование — цифроаналоговое. Именно этим занимаются звуковые или видеокарты в компьютере. Однако такая задача возникает далеко не всегда, потому что во многих случаях информацию можно оставить в цифровом виде, так ее и отобразив — в виде совокупности цифр, к примеру, на семисегментном индикаторе. Интересно,
Откуда берутся цифры. Цифроаналоговые и аналого-цифровые преобразователи 427 что такой способ отображения, хотя и значительно более корректный, чем аналоговый (мы не теряем информации), но не всегда оказывается более правильным. Если вглядеться в пульт управления каким-нибудь сложным устройством — не обязательно атомной электростанцией, достаточно торпеды обычного автомобиля, — увидим, что большинство показывающих приборов там — стрелочные. Хотя, как вы понимаете, нет никаких проблем в современном автомобиле демонстрировать скорость, уровень топлива или температуру двигателя непосредственно в цифрах, но этого не делают сознательно, потому что в очень многих случаях человека не интересует точное значение того или иного параметра. Его интересует только отклонение от некоторого значения, или превышение некоторого порога, или тенденция изменения величины — но не сама эта величина и не сам порог. Информация о том, что температура двигателя составляет 80 °C, для водителя лишняя, ему важно знать, что если вот эта стрелочка не достигла вот этой красненькой черточки — значит, все в порядке. Но бывают и другие случаи: например, отсчет пробега того же автомобиля имеет смысл только будучи представленным именно в цифровом виде, поэтому еще на заре автомобилестроения пришлось придумывать разные — тогда еще, конечно, механические — счетчики, отображающие число пройденных километров. Все это следует учитывать при проектировании различных показывающих устройств и при необходимости приходится даже идти на усложнение схемы, причем, что обидно, нередко с заведомой потерей информации или даже с ее искажением. Типичный пример из этой области — датчик количества топлива в том же автомобиле, который проектировщики традиционно заставляют врать, занижая показания, иначе слишком много водителей оказывалось бы на дороге с сухими баками в полукилометре от ближайшей заправочной станции. Как видите, проектирование показывающих устройств— не слишком простое дело, т. к. не может производиться только из соображений компактности схемы или высокой точности измерений, а непременно должно учитывать требования эргономики и "usability". Последний термин трудно перевести одним словом, он означает что-то вроде "удобства пользования". Но как много нарушений этого правила мы встречаем в современном электронном мире! Начнем с того, что обычные часы с цифровым дисплеем — крайне неудобная вещь. Все мы уже к этому привыкли, но ведь большинство практических задач заключаются не в определении точного времени, а в определении интервала— сколько мы уже ждем или сколько осталось до некоторого момента. Для этого знание самого значения часов и минут не требуется, и обладателю часов с цифровым дисплеем приходится в уме производить довольно сложные арифметические действия, вычисляя этот интервал вместо того, чтобы просто мысленно передвинуть стрелки на циферблате. Но, повторяю, мы
к этому привыкли, как привыкли к ненормальной для европейца "арабской" записи чисел (см. главу 19) и перестали это неудобство замечать. Но проектировщику электронных приборов подобные вещи всегда нужно иметь в виду и хорошо понимать, что именно и для чего он делает. Если читателю кажется, что меня очередной раз занесло несколько в сторону от темы книги, то это не так, потому что проектирование аналого-цифровых и особенно цифроаналоговых устройств неразрывно связано с проблемами человеко-машинного взаимодействия, ибо не будь потребителя, незачем все это было бы и затевать. Компьютеры в общении между собой спокойно обойдутся и двоичным кодом. Оцифровка Основной принцип оцифровки любых сигналов прост, он показан на рис. 25.1, а. В некоторые моменты времени t\, t-2, /3 мы берем мгновенное значение аналогового сигнала и как бы прикладываем к нему некоторую меру, линейку, проградуированную в двоичном масштабе. Обычная линейка у нас содержит крупные деления (метры), поделенные каждое на десять частей (дециметры), каждая из которых также поделена на десять частей (сантиметры), и так далее. Двоичная линейка содержала бы деления, поделенные пополам, затем еще раз пополам и так далее — сколько хватит разрешающей способности. Если вся длина такой линейки составляет, допустим, 2,56 метра, а самое мелкое деление 1 см (т. е. мы можем померить ей длину с точностью не хуже 1 см, точнее, даже половины его), то таких делений будет ровно 256 и их можно представить двоичным числом размером 1 байт или 8 двоичных разрядов. Ничего не изменится, если мы меряем не длину, а напряжение или сопротивление, только смысл понятия "линейка" будет несколько иной. Так мы получаем последовательные отсчеты величины сигнала X], л2, Х3. Причем заметьте, что при выбранной разрешающей способности и числе разрядов мы можем померить величину не больше некоторого значения, которое соответствует максимальному числу, в данном случае, 255. Иначе придется или увеличивать число разрядов (длину линейки), или менять разрешающую способность в сторону ухудшения (растягивать линейку). Все изложенное и есть сущность работы аналогово-цифрового преобразователя — АЦП. На рис. 25.1, а график демонстрирует этот процесс во времени. Если мы измеряем меняющуюся во времени величину, то приходится производить измерения регулярно. Если стоит задача восстановить первоначальный сигнал, то эти измерения удобно проводить со строго равными промежутками времени между ними — иначе нам будет трудно узнать, какому измерению какой момент сигнала соответствует. Получаем массив чисел, который и есть наш исходный
сигнал в цифровом виде. Зная частоту дискретизации (частоту оцифровки) и принятый масштаб (т. е. какому значению физической величины соответствует максимальное число в принятом диапазоне двоичных чисел), мы всегда можем восстановить исходный сигнал, отложив точки на графике и соединив их плавной линией. б Рис. 25.1. Оцифровка аналоговых сигналов: а — основной принцип; б — к теореме Котельникова — Найквиста Но что-то мы при этом теряем? Посмотрите на рис. 25.1, б, который иллюстрирует знаменитую теорему Котельникова (как водится, за рубежом она носит другое имя — Найквиста, на самом деле они оба придумали ее независимо друг от друга). На этом рисунке показана синусоида предельной частоты, которую мы еще можем восстановить, располагая массивом точек, полученных с частотой дискретизации/д. Так как в выражении для синуса y4sin(27T/T) имеется два независимых коэффициента (А — амплитуда и f— частота),
то для того, чтобы его вид восстановить однозначно, нужно как минимум две точки на каждый период1, т. е. частота оцифровки должна быть как минимум в два раза больше, чем самая высокая частота в спектре исходного аналогового сигнала. Это и есть теорема Котельникова — Найквиста. В уравнении синусоиды может быть и третий коэффициент, определяющий фазу колебаний (см. главу 4), но в данном случае принимается, что фаза равна нулю (исходное колебание — именно синусоида). Попробуйте сами нарисовать другую синусоиду без сдвига по фазе, проходящую через указанные на графике точки — и вы убедитесь, что это невозможно. В то же время можно нарисовать сколько угодно разных синусоид, проходящих через эти точки, если их частота в целое число раз выше частоты дискретизации /д. В сумме эти синусоиды. или гармоники (т. е. члены разложения сигнала в ряд Фурье, см. главу 5) дадут сигнал любой сложной формы, но восстановить их нельзя, и если такие гармоники присутствуют в исходном сигнале, то они пропадут навсегда. Гармонические же составляющие с частотами ниже предельной восстанавливаются однозначно. То есть процесс оцифровки равносилен действию ФНЧ с прямоугольным срезом характеристики на частоте, равной ровно половине частоты дискретизации. Углубляться в особенности дискретизации аналоговых периодических сигналов мы не будем, т. к. это обширная область в современной инженерии, связанная в первую очередь с оцифровкой, хранением, тиражированием и воспроизведением звука, и об этом нужно, как минимум, писать отдельную книгу. Для наших же целей достаточно изложенных сведений, а теперь мы перейдем непосредственно к задаче оцифровки и обратного преобразования отдельного значения сигнала и способам ее решения. Не забывая, впрочем, что любой сигнал, не только звуковой — это процесс, который происходит во времени. ЦАП Начнем мы с конца, т. е. с цифроаналоговых преобразователей. Будем считать, что на входе мы имеем числа в двоичной форме — неважно, результат оцифровки сигнала или синтезированный код. Нам его нужно преобразовать в аналоговый уровень напряжения в соответствии с выбранным масштабом. 1 Если сами параметры синусоиды А и /не меняются во времени, то достаточно вообще двух точек на все время. Именно такой случай показан на графике рис. 25.1, б.
В сущности, никакого преобразования цифра-аналог в ЦАП, которые мы будем здесь рассматривать, на самом деле не происходит2, просто мы выражаем двоичное число в виде пропорциональной величины напряжения, т. е. занимаемся, с точки зрения теории, всего лишь преобразованием масштабов. Вся аналоговая шкала поделена на кванты— градации, соответствующие разрешающей способности нашей двоичной "линейки". Кроме этого, отсчеты отстоят друг от друга по времени. Если максимальное значение сигнала равно, к примеру, 2,56 В, то при восьмиразрядном коде мы получим квант в 10 мВ, и что происходит с сигналом между этими значениями и в промежутки времени между отсчетами, мы не знаем и узнать не можем. Если взять ряд последовательных отсчетов некоего сигнала, например, тех, что показаны на рис. 25.1, а, то в результате получим ступенчатую картину, показанную на рис. 25.2. Рис. 25.2. Восстановление оцифрованного сигнала с рис. 25.1, а Если вы сравните графики на рис. 25.1, а и на рис. 25.2, то увидите, что второй график представляет первый, мягко говоря, весьма приблизительно. Для того чтобы повысить степень достоверности полученной кривой, следует, во-первых, брать отсчеты почаще, во-вторых, увеличивать разрядность. Тогда ступеньки будут все меньше и меньше, и есть надежда, что при некотором достаточно высоком разрешении как по времени, так и по квантованию, кривая станет, в конце концов, неотличима от непрерывной аналоговой линии. Есть и еще один способ получения гладкой кривой — пропустить полученный сигнал через ФНЧ, в результате чего ступеньки сгладятся. (Практически равносильно тому, как если бы мы вычисляли промежуточные значения методом интерполяции, считая, что от отсчета к отсчету кривая меняется по 2 Напомним, что под аналоговым сигналом мы понимаем сигнал непрерывный. В описанных в этом разделе ЦАП непрерывного сигнала не получается, этого приходится достигать дополнительными мерами.
линейному или какому-нибудь еще закону.) В этом случае сигнал уже обретает право называться действительно аналоговым, а не только приближением к нему. Но применение ФНЧ вносит свои особенности, и не всегда в лучшую сторону, поэтому их стараются избегать, руководствуясь тем, что при соблюдении условий теоремы Котельникова — Найквиста и при достаточно мелком квантовании всякие ухищрения и не требуются. Правда, это только теоретически так, на деле многие люди с хорошим музыкальным слухом утверждают, что они безошибочно отличают цифровой звук CD-качества (полностью соответствующий указанным выше условиям "правильной" дискретизации) от настоящего аналогового звука, например, с виниловой пластинки или с магнитофонной ленты, но это уже тонкости, которые мы опустим. Самыйдфостой ЦАП — десятичный или шестнадцатеричный дешифратор-распределитель, подобный 561ИД1 (рис. 21.7). В самом деле, если на него подать четырехразрядный код, то на выходе мы получим значения в десятичной или hex-форме — для каждого значения кода на отдельном выводе. Присоединив к выходам этого дешифратора линейку светодиодов, получаем полосковый (шкальный) индикатор, который с разрешением в 10 или 16 ступеней на весь диапазон будет показывать уровень некоей величины. Причем очень часто для практики такого относительно грубого индикатора, заменяющего стрелочные приборы, вполне достаточно. Выпускаются специальные микросхемы для управления дискретными шкальными индикаторами, которые позволяют показывать значение не в виде отдельной точки или полоски, а в виде светящегося столбика. Есть и микросхемы, которые могут управлять не дискретными, а линейными вакуумными индикаторами (они, в сущности, представляют собой полноценные ЦАП, которые мы будем рассматривать далее). Есть даже микросхема К1003ПП1 (аналог зарубежной UAA180), которая преобразует аналоговую величину (напряжение) сразу в код для вывода на шкальный индикатор. Довольно эффектная конструкция может получиться, если в схеме термометра по рис. 16.3 или 16.4 заменить показывающую головку на такую микросхему и шкальный индикатор — как бы полноценная имитация термометра традиционного! У такого примитивного ЦАП есть два недостатка— во-первых, повысить его разрешение свыше 16—20 градаций нереально, т. к. выходов тогда получится чересчур много. Но главное, что он предназначен для узкой задачи управления шкальными индикаторами и за пределами этой области беспомощен. Куда более широкое применение имел бы преобразователь, осуществляющий функцию по рис. 25.2, т. е. выдающий на выходе напряжение, пропорциональное коду на входе. "Тупой" метод получения такого напряжения состоял бы в модификации вышеописанного метода с дешифратором. Для этого надо выстроить делитель из цепочки одинаковых резисторов, подключить его
к источнику опорного напряжения и коммутировать отводы этого делителя ключами, управляемыми от дешифратора-распределителя. Для двух-трехразрядного кода можно использовать описанные в главе 24 мультиплексоры типа 561 КП 1 и 561КП2. Но для большего количества разрядов такой ЦАП с непосредственным преобразованием превращается в совершенно чудовищную конструкцию. Для восьмиразрядного кода потребовалось бы 256 резисторов (строго одинаковых!), столько же ключей и дешифратор с таким же количеством выходов, а ведь восьмиразрядный код — довольно грубая "линейка", разрешающая способность ее не превышает четверти процента. Поэтому на практике такой метод употребляют для построения АЦП, а не ЦАП (потому что, несмотря на сложность, он обладает одним уникальным свойством, о котором скажем позже), а здесь мы даже не будем рисовать такую схему. Рассмотрим один из самых распространенных методов, который позволяет осуществлять преобразование код-напряжение без использования подобных монструозных конструкций. Рис. 25.3. ЦАП: а — двухразрядный с отрицательным выходом; б — цепочка R-2R произвольной длины; в — с положительным выходом На рис. 25.3, а показан вариант реализации ЦАП на основе ОУ с коммутируемыми резисторами в цепи обратной связи. В качестве коммутирующих ключей можно применить, например, малогабаритные электронные реле серии 293 того типа, что мы применяли в конструкции термостата по рис. 15.5, или специализированные ключи из серии 590. Однако для осуществления переключающего контакта потребовалось бы ставить по два таких ключа на каждый разряд, поэтому в серии 561 предусмотрена специальная микросхема 561 КТЗ, которая содержит четыре одинаковых ключа, работающие именно так, как показано на данной схеме, т. е. если подать на вход управления сиг
нал лог. 1, то выход ключа коммутируется на вход, а если сигнал управления равен лог. О, то выход замыкается на "землю". Самим нам строить такие ЦАП, конечно, вряд ли придется. Хотя никто и не запрещает— это тот самый случай, когда дискретная схемотехника может достичь ничуть не худших результатов, чем интегральная, если, конечно, не брать во внимание габариты. Для лучшего уяснения принципов я нарисовал всего лишь двухразрядный вариант. Два разряда — это четыре градации, т. е. выходное напряжение ОУ должно принимать 4 значения с равными промежутками, в данном случае эти напряжения равны 0, а также %, Уг и % от опорного напряжения t/on. Как это происходит? Рассмотрим сначала цепочку резисторов с номиналами R и 2R. Так как оба нижних по схеме резистора 2R в исходном состоянии присоединены к "земле", т. е? включены параллельно, то их суммарное сопротивление равно R. Тогда верхний по схеме резистор R и эти два резистора образуют делитель, напряжение на котором равно ровно половине от Uon. Предположим, на входах управления ключами оба разряда имеют нулевые значения, т. е. код принимает значения "00". В этом случае цепочка резисторов отсоединена от входа и на выходе ОУ будет напряжение, равное 0. Пусть теперь код примет значение "01". В этом случае резистор с номиналом 2R младшего разряда переключается ко входу усилителя. Для самой цепочки "все равно" — к "земле" присоединен этот резистор или ко входу, потому что потенциал инвертирующего входа ОУ равен потенциалу неинвертирующего, т. е. тому же потенциалу "земли". Ко входу ОУ через сопротивление с номиналом 2R потечет ток, величина которого будет равна величине напряжения на его входе, т. е. £70П/2, деленной на величину этого резистора (2R). Итого значение тока будет Uonl4R, и ток этот создаст на резисторе обратной связи ОУ, сопротивление которого также R, падение напряжения, равное С/оп/4. Можно считать и по-другому — рассматривать инвертирующий усилитель с коэффициентом усиления 0,5, что определяется отношением сопротивлений R/2R, и напряжением на входе £/оп/2. Итого на выходе всей схемы будет напряжение £/оп/4 (но с обратным знаком, т. к. усилитель инвертирующий). Пусть теперь код принимает значение "10". Тогда все еще проще — ко входу ОУ подключается напряжение Uon через резистор 2R. Коэффициент усиления тот же самый, так что на выходе будет напряжение £/оп/2. Самый сложный случай, когда код принимает значение "11", и подключаются оба резистора. В этом случае ОУ надо рассматривать как сумматор (см. главу 14, рис. 14.5, в). Напряжение на выходе будет определяться суммой токов через резисторы 2R, умноженной на величину сопротивления обратной связи R, т. е. будет равен (Uon/2R + £70П/4/?) • R или просто 3t/on/4.
Я так подробно рассмотрел этот довольно искусственный пример, чтобы наглядно продемонстрировать свойства цепочки R-2R. Способ ее построения с любым количеством звеньев ясен и показан на рис. 25.3, б. Крайние резисторы 2R включены параллельно и в сумме дают сопротивление R, поэтому следующее звено оказывается состоящим из тех же номиналов по 2R и в сумме тоже даст R и так далее. Какой бы длины цепочку не сделать, она будет делить входное напряжение в двоичном соотношении: на самом правом по схеме конце цепочки будет напряжение t/on' на следующем отводе £/оп/2, на следующем f/on/4 и так далее. Поэтому можно малой кровью, всего с помощью двух типономиналов резисторов, отличающихся ровно в два раза, строить ЦАП в принципе любой разрядности. Так, восьмиразрядный ЦАП будет содержать всего 16 резисторов и 8 ключей (с переключением), не считая резистора обратной связи, который у нас для наглядности был равен также R, но может быть любого удобного номинала. В интегральных ЦАП часто этот резистор вообще не устанавливают, а выносят соответствующие выводы наружу, так что можно легко получать любой масштаб напряжения по выходу. Например, если в нашей схеме сделать этот резистор равным 1,33/?, то на выходе мы получим напряжения, равные Uon, 2t/on/3, Uon/3 и 0. Правда, неудобство в такой простейшей схеме заключается в том, что выходные напряжения будут с обратным знаком, но эта проблема легко решается. На рис. 25.3, в показан простейший вариант ЦАП с "нормальным" выходом. Проанализировать работу этой схемы я предоставляю читателю самостоятельно. Как обычно, подсказка: выходные напряжения по абсолютной величине у нее будут такими же, как и в варианте по рис. 25.3, а. Недостатком этого варианта, в отличие от инвертирующего, будет то, что коэффициент усиления не регулируется, и масштаб будет определяться только величиной Uon. Но и этот недостаток легко исправить небольшим усложнением схемы. Я не буду рассматривать серийные интегральные схемы ЦАП, основанные на этом принципе, потому что в основе они работают так же, а ЦАП требуются сами по себе, без использования в составе других микросхем, нечасто. Несколько слов о проблемах, связанных с метрологией. Ясно, что получить точные значения резисторов при изготовлении микросхемы такого ЦАП непросто, поэтому на практике абсолютные величины R могут иметь довольно большой разброс, хотя между собой номиналы их тщательно согласовывают с помощью лазерной подгонки. Собственное сопротивление ключей также может оказывать большое влияние на работу схемы, особенно в старших разрядах, где токи значительно больше, чем в младших. Для этого в интегральном исполнении даже делают эти ключи разными — в старших разрядах ставят более мощные с меньшим сопротивлением. Еще один момент связан с получением стабильного опорного напряжения, т. к. это непосредственно сказывается на точности преобразования. В на
стоящее время успехи электроники позволили почти забыть про эту проблему— все крупные производители выпускают источники опорного напряжения, позволяющие достигать стабильности порядка 16 разрядов (т. е. 65536 градаций сигнала). К тому же всегда можно исхитриться построить схему так, чтобы измерения стали относительными, как описано в главе 17. При необходимости же достижения точности в абсолютном выражении приходится применять калибровку по эталонам высокого класса, что недешево — но отнюдь не всегда и требуется. Впрочем, я уже забегаю вперед— все эти проблемы более актуальны для АЦП, а не для ЦАП. Быстродействие ЦАП разобранного типа в основном определяется быстродействием ключей и типом применяемой логики, и в случае КМОП не слишком высокое — примерно такое же, как у обычных КМОП-элементов. Большинство интегральных ЦАП построено с использованием описанного принципа суммирования взвешенных токов или напряжений. Другой класс цифроаналоговых преобразователей составляют интегрирующие ЦАП, которые используются для преобразования величин, меняющихся во времени. Эти ЦАП в идеале позволяют сразу получить действительно аналоговый непрерывный сигнал без признаков ступенек. В дальнейшем мы рассмотрим один из широко распространенных методов такого преобразования, использующихся для воспроизведения цифрового звука (см. главу 34 и приложение 3). АЦП Номенклатура аналого-цифровых преобразователей существенно больше, чем ЦАП. Однако все разнообразие их типов можно свести к трем разновидностям: это АЦП параллельного действия, АЦП последовательного приближения и интегрирующие АЦП. АЦП параллельного действия АЦП параллельного действия — это зеркально отраженный простейший ЦАП на основе дешифратора. В таких АЦП имеется делитель из к одинаковых резисторов, к каждой ступени которого подключен компаратор, сравнивающий напряжение на делителе со входным сигналом. Выходы компараторов образуют равномерный код типа того, что используется для управления шкальными индикаторами в описанном ранее ЦАП. Они подключены к шифратору с к входами, который преобразует этот код в двоичный с числом разрядов п, равным log(&). Естественно, трудности тут те же, что и при построении основанных на подобном принципе ЦАП — для и-разрядного кода требуется к = 2Н резисторов и компараторов, причем резисторов, точно
Откуда берутся цифры. Цифроаналоговые и аналого-цифровые преобразователи 437 согласованных между собой, и компараторов также с как можно более идентичными характеристиками. Поэтому более, чем 8-разрядные, такие АЦП почти и не делают. А зачем их делают вообще? По одной простой причине— этот тип АЦП является самым быстродействующим из всех, преобразование происходит фактически мгновенно и лимитируется только быстродействием применяемых компараторов и логики. На практике быстродействие АЦП такого типа может составлять десятки и сотни мегагерц (наиболее экстремальные типы, как МАХ 108, даже до 2,2 ГГц). Все остальные типы АЦП, как мы увидим, значительно медленнее. АЦП последовательного приближения АЦП последовательного приближения мы рассмотрим чуть подробнее ввиду их практической важности. Хотя самим в настоящее время такие АЦП строить не приходится, но для успешного использования их в интегральном исполнении следует хорошо понимать, как они работают. Именно такого типа АЦП встроены в микроконтроллеры семейства AVR (см. главу 33). Такой АЦП работает по следующему принципу. Берется ЦАП нужной разрядности (именно поэтому мы рассматривали ЦАП раньше, чем АЦП). На его цифровые входы подается код по определенному правилу, о котором ниже. Выход ЦАП соединяется с одним из входов компаратора, на другой вход которого подается преобразуемое напряжение. Результат сравнения подается на схему управления, которая связана с регистром — формирователем кодов. Есть несколько вариантов реализации процедуры преобразования. Самый простой выглядит следующим образом: сначала все разряды кода равны нулю. В первом такте самый старший разряд устанавливается в единицу. Если выход ЦАП при этом превысил входное напряжение, т. е. компаратор перебросился в противоположное состояние, то разряд возвращается в состояние лог. 0, в противном же случае он остается в состоянии лог. 1. В следующем такте процедуру повторяют для следующего по старшинству разряда. Такой метод позволяет за число тактов, равное числу разрядов, сформировать в регистре код, соответствующий входному напряжению. Способ довольно экономичен в смысле временных затрат, однако имеет один существенный недостаток— если за время преобразования входное напряжение меняется, то схема может ошибаться, причем иногда вплоть до полного сбоя. Поэтому в такой схеме обязательно приходится использовать устройство выборки-хранения (УВХ). В другой модификации этой же схемы для формирования кодов используется реверсивный счетчик, подобный 561ИЕ11, с нужным числом разрядов. Выход
компаратора попросту подключают к выводу переключения направления счета. Изначально счетчик полностью сбрасывают, после чего подают на него тактовые импульсы. Как только счетчик досчитает до соответствующего значения кода и выход ЦАП превысит входное напряжение, компаратор переключает направление счета, и счетчик отрабатывает назад. После окончания этого периода установления, в идеале, если напряжение на входе меняется мало, величина кода все время колеблется в пределах младшего разряда. Здесь выбросы не так страшны, но большое время установления и неизвестное заранее время реакции на быстрые изменения входного сигнала являются недостатком такого АЦП, получившего название "следящего". В большинстве случаев для АЦП последовательного приближения приходится использовать на входе устройства выборки-хранения. В простейшем случае это аналоговый электронный ключ, на вход которого подается измеряемый сигнал, а на выходе стоит конденсатор. До начала измерения ключ открыт, и напряжение на конденсаторе равно входному напряжению со всеми его изменениями. По команде начала измерения ключ запирается, и в дальнейшем в качестве измеряемого фигурирует уже напряжение, запасенное на конденсаторе, изменения на входе на измерительную схему не влияют. Все, казалось бы, просто, но наличие УВХ, прежде всего, достаточно сильно замедляет процесс, т. к. ключ имеет конечное сопротивление и конденсатор должен иметь время для зарядки. Кроме того, ключ вместе с конденсатором образует ФНЧ, который может искажать форму сигнала. Как бы ни было велико входное сопротивление компаратора, оно конечно, и притом ключ также имеет не бесконечно большое сопротивление в закрытом состоянии. В схеме обычно присутствует и элемент для сброса конденсатора, наконец, конденсатор также имеет собственные утечки — все это вынуждает увеличивать емкость конденсатора и еще больше снижать быстродействие схемы. В интегральных АЦП подобного рода иногда даже предоставляется выбор между точностью и быстродействием. Кроме выборки-хранения, в АЦП последовательного приближения требуется также время на вывод данных и подготовку к следующему циклу измерения. Все указанные причины приводят к тому, что наиболее распространенные 12-разрядные АЦП последовательного приближения имеют реальное быстродействие не выше 50—200 кГц. Как пример достаточно продвинутой модели приведем МАХ1132, который имеет разрешение 16 бит при частоте выборок 200 кГц. И, тем не менее, АЦП последовательного приближения очень распространены и применяются там, где требуется средняя точность (до 12 разрядов) при достаточно высоком быстродействии.
Интегрирующие АЦП Наиболее точными и одновременно самыми медленными являются интегрирующие АЦП. Их мы разберем наиболее подробно, потому что, во-первых, они могут быть достаточно просты, и иногда даже целесообразно самому соорудить такой узел схемы, чем подбирать подходящий чип, во-вторых, потому что это наиболее часто применяемый тип АЦП в радиолюбительской практике. В главе 26 мы сконструируем на основе готового АЦП такого типа цифровой термометр с довольно приличными характеристиками, а пока рассмотрим подробно несколько вариантов построения интегрирующего АЦП на дискретных элементах. Разных типов интегрирующих АЦП существует не меньше десятка, но здесь мы подробно рассмотрим только три разновидности. Кстати, интегрирующие АЦП являются примером того, что цифровая техника не всегда достигает наивысшей точности по сравнению с аналоговой — центральным узлом этих, как мы уже сказали, наиболее точных преобразователей, является чисто аналоговый интегратор на ОУ. Рис. 25.4. АЦП однократного интегрирования Схема самого простого интегрирующего АЦП показана на рис. 25.4. Это так называемый АЦП с однократным интегрированием. В начале преобразования на С-вход динамического D-триггера поступает положительный фронт, который устанавливает выход Q в состояние лог. 1. Она является разрешающим уровнем для элемента И-НЕ, и на вход счетчика поступают импульсы. Одновременно через выход Q запирается транзистор VT1. Конденсатор начинает заряжаться от источника стабильного тока. При равенстве значения входного измеряемого напряжения и напряжения на конденсаторе компаратор срабатывает и обнуляет триггер ("ворота" на логическом элементе И-НЕ запира
ются, транзистор открывается и разряжает конденсатор, счетчик обнуляется). Количество импульсов, накопленных в счетчике к этому моменту, пропорционально входному напряжению. Источник тока вместе с конденсатором в данном случае образуют так называемый ГЛИН — генератор линейно изменяющегося напряжения. Схему можно упростить, если в качестве источника стабильного тока поставить простой резистор, питающийся от стабильного источника напряжения, но т. к. форма кривой нарастания напряжения при этом не линейная, а экспоненциальная (см. рис. 5.6), то придется ограничиться небольшим диапазоном входных напряжений, где форма кривой еще близка к прямой линии. На практике так часто и поступают, поэтому источник тока я подробно не рисовал. Если все же задаться целью расширения входного диапазона вплоть до значений, близких к напряжению питания, то придется делать "нормальный" источник тока. Использование простого полевого транзистора, как мы делали в схеме лабораторного источника питания (рис. 10.8), не выход, т. к. он все же является достаточно грубым источником. С другой стороны, чем городить источник тока (например, по варианту 14.5, г), проще вообще построить ГЛИН по-иному, в виде обычного интегратора по рис. 14.5, а, добавив к нему ключ для сброса по окончании преобразования. У схемы по рис. 25.4 много недостатков и единственное достоинство— простота. При взгляде на нее непонятно, чего это я распинался насчет супервысоких характеристик интегрирующих АЦП. Главным ее недостатком является то, что результат преобразования тут зависит от всего на свете — от источника тока, от стабильности ГЛИН (и каждого его элемента в отдельности, в первую очередь — конденсатора), от стабильности порога компаратора, от неидеальности ключа для сброса и т. п. Еще хуже то, что схема в данном варианте срабатывает от мгновенного значения входного сигнала и поэтому весьма восприимчива к его дребезгу и вообще любым помехам. Если тактовая частота случайно окажется кратной частоте помехи (в первую очередь сетевой с частотой 50 Гц), то мы вообще можем получать каждый раз значения, весьма далекие от истины3. В то же время преобразование длится все равно достаточно долго, т. к. обычные значения тактовой частоты, при которых схема еще работает приемлемо, лежат в диапазоне максимум десятков килогерц (если, конечно, специально не использовать быстродействующие компараторы и логику), т. е. для достижения разрешающей способности 3 На практике добиться полной некратности частоты измерения и помехи можно только, если сделать тактовую частоту изменяющейся по случайному закону. Так как отношения обычных чисел всегда образуют периодическую дробь, то на выходе мы получим биения выходной величины с частотой повторения периода этой дроби.
Откуда берутся цифры. Цифроаналоговые и аналого-цифровые преобразователи 441 в восемь разрядов (больше все равно не выжмешь) частота отсчетов составит в лучшем случае 100 Гц, на практике же— гораздо меньше. Может быть, можно использовать этот факт, раз уж все равно измерения медленные, и измерять среднее значение сигнала за время преобразования? Сделать это несложно —- достаточно подать измеряемое напряжение на вход ГЛИН, а опорное—- на компаратор. Тогда сигнал будет интегрироваться за время преобразования, причем интегрироваться очень точно, мы будем получать истинное среднее арифметическое значение сигнала за это время. Но легко увидеть, что сама функция преобразования при этом окажется обратной — т. е. время заряда (и значение выходного кода на счетчике) окажется обратно пропорциональным значению входного напряжения. Это неудобно, т. к. сильно усложняет обработку результата. Можно использовать метод деления частоты с использованием реверсивного счетчика с параллельной записью, как это предложено в главе 24, можно также попробовать инвертировать входной сигнал и затем сдвинуть его в положительную область (инвертированный сигнал будет возрастать, когда оригинальный сигнал уменьшается, проверьте!). Все это приводит к усложнению схемы, причем неоправданному — сама по себе точность преобразования в любом случае не увеличится, избавляемся мы только от помехи. По всем этим причинам АЦП с однократным интегрированием, несмотря на его простоту, в настоящее время не употребляют вообще и даже не выпускают в виде специализированных микросхем. Единственная область, где можно было бы рекомендовать использовать такой метод— использование микропроцессоров, имеющих встроенный компаратор. В этом случае с помощью одного внешнего резистора, конденсатора и транзистора для сброса можно получить простейший преобразователь аналогового сигнала в код, организуя процесс обработки уже в самом микропроцессоре с использованием его таймеров-счетчиков и возможности проведения любых преобразований полученного кода. Но и эта рекомендация потеряла в настоящее время всякий смысл, т. к. доступны микроконтроллеры со встроенными "нормальными" АЦП, без всяких внешних элементов, причем мультиканальные с гарантированной точностью и разрешением до 10-ти или даже 12-ти разрядов, чего для большинства практических нужд более чем достаточно. Единственное мне известное массовое применение АЦП, построенного именно по приведенной примитивной схеме (и при этом вполне справляющегося со своими обязанностями) —- это схема считывания координат положения рукоятки джойстика на входе игрового порта PC. Правда, я не совсем уверен, что эта схема в современных материнских платах в действительности осталась той же, какой ее сделали еще в начале 80-х (впервые — в малоизвестной "домашней" модели IBM PC под названием PCj), но интерфейс для внешнего мира остался тем же.
Пожалуй, рассказ об АЦП однократного интегрирования получился чересчур затянутым, но это оправданно, т. к. мы теперь знаем, к чему нам стремиться. И я предвкушаю изумление читателя, когда он узнает, как можно преодолеть чуть ли не все перечисленные ранее недостатки, как говорится, одним махом, и притом не слишком усложняя схему. Интегрирующие АЦП не получили бы такого распространения и заслуженной репутации "самых стабильных", если бы не это обстоятельство. Рис. 25.5. Цикл работы АЦП двойного интегрирования: 1 — идеальный случай; 2 — при сдвиге порога компаратора; 3 — при изменении емкости конденсатора Идея метода, который называется "двойным" или "двухстадийным" интегрированием, показана на рис. 25.5. Посмотрим сначала на график, обозначенный цифрой 1. В первую часть цикла работы за фиксированное время такта Ц — t\ конденсатор интегратора заряжается током, который определяется входным напряжением £/вх. Во второй части этот конденсатор разряжается точно известным током, определяющимся опорным напряжением Uon, до момента t2 равенства напряжения 0. Чем больше входное напряжение, тем до большей величины зарядится конденсатор в первой части, и тем дольше он будет разряжаться во второй. Легко показать, что отношение интервала времени /3 — t2 к известному времени такта t2 — будет равно отношению входного напряжения t/BX к опорному t/on, таким образом, измерив полученный интервал времени — t2 обычным методом с помощью счетчика, как это сделано в схеме на рис. 25.4, мы получим на выходе код, пропорциональный входному напряжению. На самом деле напряжение, до которого разряжается конденсатор, задается порогом компаратора и может в общем случае быть отличным от нуля на величину 5 за счет "гуляния" порога, например, при изменении температуры. Но т. к. следующий цикл измерения начнется в точности с того же значения порога, то, как вы видите из графика 2, в данном случае имеет значение только изменение порога за время преобразования, которое обычно не превышает долей секунды. На результате не скажется
Откуда берутся цифры. Цифроаналоговые и аналого-цифровые преобразователи 443 и изменение емкости конденсатора (при тех же условиях), т. к. при этом наклон прямой и заряда и разряда изменится в одинаковой степени (график 3). В самых точных АЦП такого типа дополнительно проводят цикл "автокоррекции нуля", когда на вход подают нулевое напряжение и результат потом вычитают из значения кода, полученного в рабочем цикле. Мало того, здесь даже не требуется "кварцованная" частота, и всю схему можно заводить от любого RC-генератора — при условии, что время такта — t\ и частота заполнения "ворот" для подсчета длительности результирующего интервала Ц — Ц задаются от одного и того же генератора. Но чудес не бывает — точность и стабильность преобразования здесь полностью определяются точностью и стабильностью значения Uon. От этого никуда не денешься, и это общее условие для всех без исключения конструкций АЦП и ЦАП. Между прочим, обратите внимание, что Ц!Х и Uon образуют в совокупности нечто вроде неинвертирующего и инвертирующего входа ОУ. Эта аналогия куда более полная, чем кажется, и, манипулируя этими величинами, можно выделывать с выходным кодом всякие штуки, в частности — подгонять масштаб преобразования к нужному диапазону. Другое облегчение, которое можно получить от этой связи, заключается в возможности проведения относительных измерений, когда входное и опорное напряжения получаются от одного источника и тем самым имеют одинаковую относительную погрешность (см. главу 17). Получается нечто вроде явления ослабления синфазного сигнала в ОУ. В идеале тогда мы получаем очень точные измерения, однако идеал этот, к сожалению, редко достижим на практике — в отличие от указанной выше независимости результата от характеристик элементов самой схемы. Кстати, в интегрирующих АЦП такого рода для более полного подавления помех нужно делать первую часть цикла интегрирования именно кратным периоду помехи. Тогда в цикле укладывается целое число периодов помехи, и она усредняется. Практически наибольшее влияние оказывает сетевая помеха частотой 50 Гц, поэтому частоту циклов стараются делать в круглых числах. Простой вариант практической схемы АЦП двойного интегрирования показан на рис. 25.6. Счетная часть на схеме не показана. Для понимания того, как работает схема, следует обратить внимание, что управляющий вход у ключей типа 590КН2 (D1) инверсный, т. е. при низком уровне на управляющем входе ключ распахнут, при высоком — заперт. Рассмотрим диаграмму работы (рис. 25.6, справа). В момент отрицательного перепада на тактовом входе Т, RS-триггер устанавливается в единицу по выходу Q. Так как на входе Т в этот момент отрицательный уровень, ключ D1/1 открывается, остальные ключи заперты. Конденсатор подключается в обратную связь верхнего ОУ (DA1/1) и начинается цикл интегрирования входного напряжения (напряжение на кон
денсаторе возрастает по абсолютной величине, т. е. на выходе DA1/1 падает, т. к. интегратор инвертирующий). В момент окончания отрицательного полупериода тактовой частоты ключ D1/1 запирается, а ключ Dl/З открывается, заряженный конденсатор оказывается подключенным в обратную связь второго ОУ (DA1/2). Начинается цикл интегрирования опорного напряжения (изменение напряжения на конденсаторе показано на диаграмме пунктирной линией). Так как обратная связь в первом ОУ теперь отсутствует, то он сработает как компаратор — сначала на его выходе установится напряжение, равное отрицательному питанию (или близкое к нему), а в момент равенства напряжения на конденсаторе нулю выход резко устремится от отрицательного к положительному питанию (но его ограничит на уровне примерно +0,6 В диод, включенный в обратную связь, который нужен для того, чтобы не затягивать переходной процесс).'Положительный перепад передастся на обнуляющий вход RS-триггера и установит его выход Q в состояние лог. 0. При этом откроется ключ Ц1/2 и закоротит конденсатор, прерывая таким образом процесс интегрирования. На входе верхнего ОУ установится напряжение, равное 0, а на выходе, вообще говоря, т. к. обратная связь по-прежнему отсутствует, оно станет неопределенным (на диаграмме оно показано условно в виде нулевого уровня). Это состояние длится до конца периода тактовой частоты, а с отрицательным перепадом на входе Т ключи Dl/З и D1/2 закроются и все начнется сначала. На выходе схемы возникает положительный импульс напряжения, длительность которого /3— /2 пропорциональна входному напряжению, согласно соотношению, сформулированному выше. Рис. 25.6. Простой вариант АЦП двойного интегрирования (ПНВ)
Схема рассчитана для получения разрешающей способности 12 разрядов или 4096 градаций. Стабильность схемы напрямую зависит от стабильности резисторов, поэтому их нужно выбирать с точностью не хуже 0,1 %, в этом случае абсолютная точность может достигнуть 10 разрядов без дополнительной калибровки. Однако Uon тоже должно иметь не меньшую стабильность, поэтому для его получения следует использовать прецизионные источники опорного напряжения. В данном случае подойдет микросхема МАХ875, дающая на выходе 5 В с точностью 0,04%. Подробный анализ всех погрешностей этой схемы, в том числе температурных, занял бы слишком много места, поэтому рассмотрим еще только принцип выбора частоты преобразования и требования к ОУ. Максимальная частота отсчетов может быть подсчитана из следующих соображений. Так как мы имеем дело с КМОП, то максимальную частоту счетных импульсов примем равной 1 МГц. Нам требуется обеспечить 12 разрядов, т. е. число импульсов за время "ворот" при максимально возможном входном напряжении, равном опорному, должно составить как минимум 4096 штук. Поделив 1 МГц на это число, мы получим частоту около 244 Гц, однако ее еще надо уменьшить вдвое, т. к. у нас в рабочем периоде должно быть два таких такта— прямого и обратного интегрирования. Итого получаем 122 Гц, что и есть максимальная частота при выбранной элементной базе. Исходя из этого, выбраны величины сопротивлений и емкость конденсатора. При указанных на схеме их величинах, напряжение на выходе интегратора при входном напряжении 5 В достигнет примерно 9 В за время интегрирования, равное половине периода частоты 122 Гц. Входное напряжение ограничено для данной схемы диапазоном от 0 до примерно 4,95 В. Напряжение выше этого значения расстроит работу схемы, потому что импульс обнуления за счет RC-цепочки будет еще длиться, когда уже придет импульс установки. Его можно сократить за счет введения "корректной" дифференцирующей цепочки по рис. 23.7, а. В этом случае следует на выходе ОУ поставить согласователь-формирователь уровня для получения более четкого фронта (я его не показал, чтобы не усложнять схему). В качестве такого согласователя удобнее всего использовать компаратор типа 521 САЗ. Но к ограничению уровня входного напряжения ведет и другое обстоятельство — а именно конечное время разряда конденсатора через ключ при приведении схемы в исходное состояние. При использованных на схеме элементах и при условии достаточно полного разряда оно составит не менее 2—3 десятков микросекунд (сопротивление ключа около 50 Ом), т. е. до 1% от максимальной длительности, что и ограничивает время рабочего импульса и максимальное напряжение примерно на эту величину. Избавиться от этого можно только усложнением схемы и введением дополнительного интервала
специально для обнуления — в серийных АЦП, как мы увидим в следующей главе, так и поступают. О выборе элементов. При указанных частотах скорость нарастания сигнала на выходе верхнего по схеме ОУ, служащего компаратором, должны быть такой, чтобы она изменялась от напряжения насыщения до 0 не более чем в пределах одного импульса счетной частоты, длящегося 1 мкс. То есть скорость нарастания должна быть не меньше 10 В/мкс, иначе получим ошибку за счет неточного определения момента окончания интегрирования (то же требование справедливо и для скорости срабатывания ключей). Второе требование к ОУ — для более точного интегрирования желателен достаточно малый входной ток смещения, не более нескольких нА (он рассчитывается, исходя из величины максимального тока интегрирования, в данном случае около 250 мкА, деленного на ту же величину в 12 разрядов, т. е. 4096. Входной ток ОУ должен удовлетворять условию "много меньше", чем полученная величина около 60 нА). Если принять во внимание допустимое напряжение питания (не менее 12 В), то не так уж и много ОУ удовлетворят указанным требованиям. Микросхема ОРА2132 (два ОРА132 в одном корпусе DIP-8) фирмы Texas Instruments представляет собой прецизионный ОУ с высоким быстродействием (полоса 8 МГц, скорость нарастания до 20 В/мкс), очень малым входным током смещения (50 пикоампер) и допустимым напряжением питания до ±18 В. Ни наш классический цА741, ни даже любимый МАХ478 сюда решительно не подойдут (у последнего подкачало быстродействие). Из классических отечественных ОУ в коридор требований с некоторой натугой влезет 544УД2 или ОУ серии 574. Впрочем, номенклатуру пригодных чипов можно значительно расширить, если снизить напряжение питания до ±5 В (при этом допустимый диапазон входного напряжения необязательно снизится, т. к. оно может превышать напряжение питания ОУ, просто манипулировать многими питаниями неудобно) и/или уменьшить частоту счета, например, до 100 кГц (частота отсчетов снизится до 12 Гц, а требования к быстродействию ОУ соответственно упадут). Все это иллюстрирует сложности, которые приходится преодолевать разработчикам при проектировании подобных АЦП в интегральном исполнении, и объясняет, почему интегрирующие АЦП обычно работают так медленно — у большинства прецизионных АЦП частота отсчетов не превышает величины несколько десятков или сотен Гц. Сконструированное нами АЦП относится к типу ПНВ — преобразователей напряжение-время. Ранее широко использовались ПНЧ— преобразователи напряжение-частота (в основном на основе микросхемы 555, см. главу 23), однако большинство их реализаций обладает тем же недостатком, что и однократный интегратор, т. е. в них точность зависит от качества компонентов
напрямую. Куда лучше будет результат, если в основе лежит "кварцованная" частота, как мы видим на примере ПНВ. Сейчас мы рассмотрим интегрирующий преобразователь, который также использует двойное интегрирование, но на выходе его получается не интервал времени, который еще нужно сосчитать, а число-импульсный код, т. е. число импульсов за определенный промежуток времени, пропорциональное входному напряжению. Это не частота, как можно бы подумать, точнее, не совсем частота. АЦП такого типа (ПНК) называются еще дельта-сигма-преобразователями или АЦП с уравновешиванием заряда. Они широко распространены в интегральном исполнении, большинство наиболее высокоразрядных АЦП построены именно так. Я не буду рисовать подробную схему с указанием типов компонентов и разводкой выводов, потому что принципы подбора комплектующих сильно зависят от необходимой точности и разрешающей способности (разрядности), ниже мы эти принципы укажем. Принципиальная же схема работы ПНК показана на рис. 25.7. Рис. 25.7. Принцип работы АЦП с уравновешиванием заряда Работает она следующим образом. Как только напряжение на выходе интегратора DA1 становится меньше нуля, компаратор D1 переключается и тактовые импульсы начинают поступать на вход счетчика и одновременно на ключ, коммутируя источник опорного тока к суммирующей точке интегратора. Входной ток /вх и опорный /оп имеют разные знаки, поэтому с каждым тактовым импульсом напряжение на конденсаторе будет уменьшаться, а на выходе интегратора— стремиться обратно к нулю. Как только оно опять сравняется с нулем, компаратор опять переключится и тактовые импульсы перестанут поступать на счетчик и на ключ. Заряд, который сообщается интегратору за каждый тактовый импульс, строго одинаков, поэтому количество таких тактовых импульсов N в единицу времени, необходимых для уравновешивания заряда, сообщаемого источником входного напряжения, будет в точности пропорционально входному напряжению. Разумеется, токоза
дающие резисторы в цепи входного и опорного напряжения вовсе не обязаны быть равны друг другу, но в любом случае число N будет пропорционально входному току и обратно пропорционально опорному, поэтому должно соблюдаться соотношение /оп > /вх. При их равенстве число импульсов N за секунду будет равно тактовой частоте. Манипулируя величиной Uon и номиналами резисторов, можно получать различный масштаб. Отметьте, что импульсы на входе счетчика, представляющие число N, могут быть неравномерно распределены во времени, и тем самым ПНК отличается от ПНЧ. Здесь точность преобразования зависит практически только от стабильности 4п (^оп)— при условии, конечно, выбора остальных компонентов по быстродействию в соответствии с рекомендациями для АЦП двойного интегрирования выше. Автор этих строк строил схему подобного ПНК на самых что ни на есть рядовых элементах---ключах 590КН2, ОУ 544УД1 и КМОП 561-й сери^, в качестве источника тока использовалась схема по типу рис. 14.5, г на ОУ 140УД20 и стабилитроне КС 170. Тем не менее, при тактовой частоте 2048 Гц (т. е. разрешающей способности 11 разрядов при времени измерения 1 с), стабильность схемы составляла не хуже 3 единиц кода (0,15%) в диапазоне от -18 до +40 градусов! А если тщательно проработать вопрос стабильности и быстродействия элементов, то можно получить нечто вроде МАХ 1400— прецизионного 18-разрядного АЦП с быстродействием 4800 отсч./сек.
Глава 26 Продолжаем измерять температуру. Конструируем цифровой термометр Это обеспечит вам счастье в вашей семейной жизни и, не сомневаюсь, укрепит вашу славу за рубежом. Л. Дюма, "Три мушкетера" Эта глава будет посвящена одной-единственной конструкции, которая суммирует многое из изложенного ранее. Цифровые термометры конструировать самостоятельно имеет смысл по крайней мере по двум причинам: во-первых, фирменные приборы для расположения на стенке комнаты или производственного помещения обычно имеют невзрачный дизайн с корпусами белого или "компьютерного" серого цвета и с ЖК-индикаторами, которые из-за их "слепоты" я бы категорически не рекомендовал применять в бытовых приборах, особенно тех, что предназначены для разглядывания издалека. При всех этих явных признаках массовой продукции приборы эти не так уж и дешевы. Второй же недостаток — измеритель "заточен" под то, чтобы повесить его на стенке в офисе или в цехе, и приспособить его под иные нужды очень непросто. Рынок подобных бытовых устройств вообще достаточно беден, чему есть одна веская причина — сделать дешевый и при этом достаточно точный цифровой термометр, притом термометр универсальный, который, подобно традиционным цифровым или ртутным, можно и в воду опускать, и на мороз зимой выставить, очень непросто. Определенный успех достигнут только разве что в области медицинских термометров, но исключительно в силу массовости их применения. По всем этим причинам терпеливый радиолюбитель вполне может сделать конструкцию куда лучше фирменной — удобную, красивую и приспособленную под свои нужды, а "приставить" к такому термометру измеритель влажности, давления и еще чего угодно — вопрос только денег, и мы займемся этим в главе 27.
АЦП 572ПВ2 и ПВ5 Основой принципиальной схемы нашего термометра будет выпускающаяся уже более 20 лет очень удачная разработка 572ПВ2 (ICL7107), которая представляет собой АЦП двойного интегрирования с выходом в параллельном семисегментном коде с расчетом на 3,5 десятичных разряда. Что означает цифра 3,5 — не может же использоваться полразряда? Действительно, при использовании полного выходного диапазона этой микросхемы, который составляет число ±1999, нужно подключать 4 индикатора, однако последний (старший) из них будет использоваться только для индикации цифры 1 (и, при необходимости, знака минус)— число 3,5 и означает, что старший разряд используется не полностью. Заметим, что разрешающая способность (а при соблюдении некоторых требований — и точность) этого АЦП эквивалентна приблизительно 11 двоичным разрядам, т. е. приведенная погрешность составит 0,05%, что очень неплохо. Рис. 26.1, Типовое включение микросхемы 572ПВ2 (ICL7107) в корпусе DIP-40
Основная (типовая) схема включения микросхемы 572ПВ2 показана на рис. 26.1. Микросхема имеет два собственных питания (LED-индикаторы целесообразно подключать к отдельному источнику) — положительное 5 В (от 4,5 до 6 В) и отрицательное, которое может варьироваться в довольно большом диапазоне от -9 до -3,5 В (последнее обстоятельство позволяет при необходимости использовать для отрицательного питания не слишком стабильные преобразователи-инверторы). LED-индикаторы можно подключать напрямую без каких-либо дополнительных резисторов (ток через сегмент при этом равен 5—8 мА). Управление индикаторами осуществляется коммутацией на "землю", поэтому нужен индикатор с общим анодом. Однако выходы управления дисплеем не являются выходами с открытым коллектором (точнее — истоком), а есть обычный псевдокомплементарный КМОП-выход (см. рис. 20.1, схему инвертора справа), у которого вытекающий ток в состоянии лог. 1 может составить примерно 0,5 мА, а в лог. 0, как уже говорилось, примерно 5—8 мА (для вывода 19, который управляет одновременно двумя сегментами при засветке 1 в старшем разряде, этот ток составляет 10— 16 мА). Это обстоятельство можно использовать для управления индикаторами через внешние ключи. Дело в том, что для питания LED, потребляющих достаточно большой ток (при максимальном количестве зажженных сегментов, т. е. при индикации-1888, он может составить в сумме от 120 до 200 мА), естественно было бы использовать нестабилизированное повышенное напряжение, например, от входа положительного стабилизатора +5 В. Это особенно актуально при подключении крупных индикаторов с повышенным падением напряжения, т. к. иначе они будут светиться очень тускло (если загорятся вообще). К сожалению, в технической документации ни один из производителей не упоминает о возможности подключения LED-индикатора к повышенному напряжению напрямую, и как будет вести себя выходной каскад в состоянии лог. 1 при подаче на него напряжения выше напряжения питания — неизвестно. В то же время ставить более 20 штук ключей (по схеме, аналогичной рис. 24.10) очень не хочется. Автор этих строк на свой страх и риск провел долгосрочный эксперимент по питанию LED в такой схеме от пульсирующего напряжения 7 В с амплитудным значением, соответственно, около 10 В (от отдельной обмотки трансформатора через один диод в качестве выпрямителя). Опыт показал, что такой режим микросхема вполне выдерживает. При этом из-за "однополупериодности" напряжения средний ток через сегменты примерно в полтора раза ниже номинального, чего вполне достаточно для нормальной яркости горения. Здесь мы также применим этот режим питания, однако в некоторых случаях это неудобно, и приходится ставить мощный стабилизатор, как и положено. Выпускается идентичная по функциональности и разводке выводов микросхема 572ПВ5 (ICL7106), которая отличается только тем, что она предназна-
чена для управления ЖК-индикаторами, а не светодиодными, так что, если вам душу греет малое потребление (или есть такая необходимость), можно почти без изменений основной схемы использовать такой вариант. Просто заменить LED-индикатор на ЖК и наоборот нельзя не только из-за тока потребления, различающегося на порядки, но и потому, что для управления ЖК-индикаторами требуется переменное напряжение, иначе отключенные сегменты "зависнут" в поглощающем свет состоянии. Поэтому при замене ПВ2 на ПВ5 отличие в схеме заключается в том, что вывод 21 представляет собой не "цифровую землю" (GNDu), а подсоединяется к общему выводу ЖК-индикатора. При этом отдельное питание, естественно, не требуется. Управление сегментами происходит так— на общем выводе 21 все время присутствует меандр, а на тот сегмент, который нужно засветить, подается тО)Чно такой же меандр, но в противофазе. При отключении сегмента фаза на выводе его управления меняется на противоположную и становится такой же, как на выводе 21, таким образом, постоянное напряжение на сегмент никогда не подается. Отдельный вопрос в этом случае представляет засветка запятой, если ее по ходу дела надо гасить. В LED-варианте это несложно, а для ЖК нужно для нее также обеспечить подобный режим управления, при подаче постоянного напряжения она просто засветится навсегда и к тому же будет резко выделяться большим контрастом. Разработчики рекомендуют использовать для этой цели инвертор, подключенный к выходу 21. При этом (как и в случае подключения внешнего генератора, см. ниже), в качестве "цифровой земли" в ПВ5 следует использовать вывод 37 (TEST). Ввиду отсутствия у микросхемы ПВ5 "цифровой земли" как таковой, эту микросхему можно питать от одного источника, напряжение которого может составлять от 9 до 15 В (что эквивалентно диапазону от ±4,5 до ±7,5 В). Только при этом не следует забывать, что для обеих микросхем опорное и входное напряжения не должны выходить за пределы, на 1 В отступающие от потенциалов +£/пит и -t/nHT- Для микросхемы ПВ2, вообще говоря, требуется двуполярное питание, т. к. "цифровая земля" GNDn должна иметь общую точку с аналоговой частью для внутреннего согласования уровней управляющих сигналов. Однако можно обойтись одним питанием +5 В (подсоединив вход -t/пит к "земле"), если, в соответствии со сказанным, опорное и измеряемое напряжения по абсолютной величине не превышают 1,5 В, причем эта величина должна отсчитываться от середины t/riHT. Есть и более современные варианты этих разработок — например, с очень малым потреблением, но параметры разобранных выше микросхем и так достаточно хороши— при тактовой частоте 50 кГц время преобразования составляет 0,32 секунды (16000 периодов тактовой частоты), а потребление
при этом не превышает 0,6 мА (не считая, конечно, потребления индикаторов в LED-варианте). Удобство микросхем ПВ2 и ПВ5 заключается и в том, что они оперируют с двуполярными входными напряжениями, автоматически определяя и высвечивая знак. На схеме рис. 26.1 показан вариант с общими "землями". Диапазон входного измеряемого напряжения определяется опорным, с помощью которого и задается масштаб, при этом опорное должно находиться в пределах 0,1—1 В, а измеряемое может по абсолютной величине превышать его в соответствии с разрешающей способностью ровно в два раза. Если, например, опорное напряжение равно 1 В, то измеряемое может быть в пределах ±2 В (точнее ±1,999 В), а в общем случае выходной код определяется выражением N= 1000—^- При превышении значением входного напряжения предела +2£/оп три младших разряда гаснут, а при снижении ниже -2£/оп — гаснет все, кроме знака минус. Однако оба входных напряжения — опорное и измеряемое — могут быть "плавающими" без общей "земли", единственное требование — чтобы их значения не выходили за пределы питания (а по абсолютной величине они, естественно, должны соответствовать указанным выше требованиям). В этом случае вывод 32 ("аналоговая земля") не используется. На этом выводе тогда присутствует напряжение, равное (£/+пит-2,8) В. Если очень надо, его можно использовать в качестве опорного (не само напряжение относительно "земли", которая в данном случае есть довольно условное понятие, а именно разность между положительным питанием и выводом 32). Однако стабильность этого напряжения невелика, и так рекомендуется поступать только в уж очень экономичных схемах. Особенно это плохо в случае ПВ2, в которой выходные каскады за счет большого тока сильно (и неравномерно по времени из-за разного количества подключенных сегментов) нагревают кристалл и напряжение это начинает "плавать". Ошибка при этом может составить до 0,5%, т. е. точность снижается до 9 разрядов вместо 11. Тактовую частоту микросхем следует выбирать из ряда 200, 100, 50 и 40 кГц, при этом частота помехи 50 Гц будет укладываться в длительность фазы интегрирования входного напряжения целое число раз, и такая помеха будет интегрироваться полностью. Тактовую частоту можно задавать тремя способами — с помощью RC-цепочки, как показано на рис. 26.1, с помощью кварца, подключаемого к выводам 39 и 40, а также внешним генератором, выход которого подключается в выводу 40 (в ПВ2 в качестве общего провода используется выв. 21 "цифровая земля", а в ПВ5 — вывод 37 "TEST"). На практике используется чаще всего первый способ, при этом частота примерно будет равна 0,457?гСг. В фирменной документации на этот счет есть некоторая
неясность, т. к. рекомендуется /?г = 100 кОм при Сг = 100 пФ, и тогда согласно вышеприведенной формуле частота должна составить 45 кГц. Это далеко и от 40 и от 50 кГц, рекомендуемых для частоты помехи 50 Гц, и не очень совпадает с 48 кГц, рекомендуемыми для помехи 60 Гц. Все отечественные описания микросхем ПВ2—ПВ5 изящно обходят этот вопрос, просто повторяя фирменные рекомендации. Думается, что составители документации имели в виду все же 60-герцовую помеху (т. е. тактовую частоту 48 кГц), поэтому в отечественных пенатах следует снизить емкость Сг до 91 пФ — так будет корректнее. Вообще, ошибка в ±5%, конечно, тут вполне допустима. Из особенностей внутреннего функционирования этих микросхем нам интересен вот какой момент. Цикл работы ПВ2-ПВ5 состоит из трех фаз, первые две из которых идентичны циклу работы ПНВ по рис. 25.5. После окончания фазы интегрирования опорного напряжения и формирования собственно измерительного интервала, начинается последняя (или первая для следующего измерения) часть цикла, носящая название фазы автокоррекции. В этой фазе происходит не только сброс интегрирующей емкости (который у нас в схеме по рис. 25.6 занимал некоторое время из отведенного для фазы интегрирования), но и, кроме этого, на конденсаторе Сак происходит накопление напряжения смещения всех участвующих в процессе ОУ и компараторов. В рабочих циклах это напряжение учитывается. Но для нас еще интереснее, что в этой фазе одновременно происходит заряд емкости Соп до значения опорного напряжения, и последующее интегрирование в рабочем цикле оперирует именно с этой величиной, а вход опорного напряжения при этом отключается. Собственно, сделано это для того, чтобы была возможность автоматического внутреннего инвертирования опорного напряжения при смене знака измеряемого. Однако для нас это важно потому, что позволяет сгладить наличие высокочастотных помех на входе опорного напряжения. К сожалению, длительность фазы автокоррекции является неопределенной (т. к. она занимает всю оставшуюся часть фазы интегрирования опорного напряжения плюс фиксированный интервал времени в 4000 периодов тактовой частоты), и низкочастотная помеха при этом интегрируется плохо. Номиналы емкостей и резисторов на рис. 26.1 приведены для случая опорного напряжения, равного 1В (и тактовой частоты 50 кГц). При опорном напряжении 0,1 В Сак нужно увеличить до 0,47 мкФ, Синт уменьшить до 0,1 мкФ, а /?инт уменьшить до 47 кОм. В остальных случаях эти номиналы должны быть изменены в указанных пределах примерно пропорционально изменению опорного напряжения. К выбору типов компонентов следует подходить весьма тщательно, от этого сильно зависит в первую очередь линейность преобразования. Резисторы все могут быть С1-4, хотя при наличии
стоит предпочесть металлопленочные МЛТ. Конденсатор тактового генератора Сген может быть керамическим (типа КМ-5, КМ-6). Остальные конденсаторы (Синт, Соп и Сак) должны быть с органическим диэлектриком, лучше всего фторопластовые (К72П-6, К72-9) или полистироловые (К71-4, К71-5), но сойдут и полиэтилентерефталатные (К73-16, К73-17). Эти конденсаторы могут ужаснуть вас своими размерами, но ничего не поделаешь — такова плата за стабильность. Высокие конденсаторы (как К73-17) следует устанавливать лежа — хотя при этом площадь платы увеличивается, но зато конденсаторы не торчат над всеми остальными компонентами, что, кроме всего прочего, повышает надежность монтажа, ибо меньше вероятность выкорчевать конденсатор с корнем, случайно положив поверх платы каталог продукции фирмы MAXIM. Практическая схема термометра Теперь, вооружившись всеми этими знаниями, приступим, наконец, к нашему термометру. И сначала нам нужно посчитать, что мы имеем на входе и что мы хотим при этом получить на выходе? Начнем с выхода — температура традиционно демонстрируется в виде "XX,X". Таким образом, мы должны использовать только три младших разряда, при этом диапазон температур получится от -99,9 до +99,9 градусов. Собственно говоря, такой диапазон чересчур широкий — измерять температуру ниже, скажем, -40 °C вряд ли когда-нибудь случится. Практически для "погодного" термометра хватило бы и диапазона от -50 до +50 °C. В чем и состоит недостаток использования готовых микросхем — мы вынуждены устанавливать диапазон в соответствии с возможностями отображения чисел с помощью ПВ2. И при этом теряем ровно два точностных разряда, ужимая диапазон в 4 раза, ведь без какого-либо изменения в измерительной части никто нам не запретит подключить все четыре индикатора и демонстрировать температуру от-199,9° до 199,9°. И если диапазон выше 100° еще может пригодиться в быту (скажем, признаком готовности варенья служит температура 105—106°), то отрицательный диапазон аж до минус 200° вряд ли потребуется даже для самых специфических производственных нужд, а для научных задач такие температуры измеряются совсем другими способами. Если бы мы проектировали АЦП сами, то нам бы ничего не стоило растянуть 11 разрядов разрешения на нужный выходной диапазон отображаемой величины и таким образом максимально использовать возможности данного АЦП, а здесь приходится смириться с тем, что мы фактически будем использовать только четверть возможного диапазона. Но, конечно, никто не запрещает вам использовать диапазон полностью, или, скажем, половину его
со сдвигом: от -50 до +150 — все будет определяться возможностями калибровки. Мы здесь ограничимся тем, что калибровку будем производить от 0 до 50°, полагая (и это оправдывается на практике), что датчик при не слишком большом углублении в отрицательную область ведет себя линейно (см. главу 16). Однако считать придется на весь возможный диапазон — исходя из того, что входное напряжение АЦП £/вх при изменении температуры от 0 до +99,9° должно изменяться от 0 до Uon в соответствии с приведенной формулой для отображаемого числа N. О выборе датчиков см. главу 16. Так как мы собираемся делать более-менее точный прибор, то выберем медный датчик и прикинем, какое было бы желательно иметь его сопротивление. Обычные токи через датчик должны составлять порядка 1—3 мА, иначе медная катушка приемлемых размеров будет сама нагреваться. Если взять серийный датчик ТСМ 100 Ом1, то в интервале 100° изменение его сопротивления составит 40 Ом (у меди, напомним, ТКС составляет примерно 0,4%/°). Таким образом, мы получим минимально рекомендуемую величину t/on = 0,1 В, если зададим через датчик ток, равный 2,5 мА. Это подходит для наших целей, однако нет никакого смысла приобретать дорогой серийный датчик— калибровку производить придется так и так. Проще всего в качестве датчика использовать обмотку малогабаритного реле из серий, например, РЭС-60, РЭС-80, РЭС-79 или РЭС-49 — какое окажется под рукой, и чем старше возрастом, тем лучше, т. к. медь при хранении стабилизирует свои характеристики. Нет проблем использовать и любое другое реле, только крупные конструкции будут иметь значительную тепловую инерцию, к тому же многие, особенно старые реле не герметизированы. Указанные мной типы имеют полностью герметизированный металлический корпус, остается только изолировать от внешней среды выводы. У меня "под рукой" оказалось реле типа РЭС-60 с обмоткой 800±120 0м (пасп. РС4.569.435-01). Изменения на диапазон 100° составят в среднем 320 Ом. Выберем Uon = 0,5 В, тогда ток через датчик-обмотку должен составить 0,5 В/320 Ом = 1,5 мА. Так как рабочие напряжения здесь не превышают по абсолютной величине 0,5 В, то мы сможем обойтись для АЦП одним питанием +5 В, только надо будет постараться, чтобы величины этих напряжений располагались вблизи середины питания. Общая схема термометра показана на рис. 26.2. Рассмотрим сначала включение датчика. Для того чтобы при нуле градусов термометр показывал 0, нужно на вход АЦП подавать разность текущего напряжения на датчике и значения его при нулевой температуре. В данном случае это делается с помощью 1 Платиновый ТСП выбирать не имеет смысла из-за его нелинейности.
мостовой схемы. Два идентичных источника тока 1,5 мА (ОУ DA1, транзисторы VT1-VT2 и резисторы R16-R19) образуют верхнюю половину моста, а нижняя состоит из датчика температуры Rt и опорного резистора R20, сопротивление которого равно сопротивлению датчика при О °C. Разность этих напряжений подается на АЦП в качестве входного напряжения. Фильтр R22-C6 нужен для лучшего сглаживания помех (конденсатор С6 может быть керамическим). Н1-Н5 SA05-11G Рис. 26.2. Прецизионный цифровой термометр на микросхеме 572ПВ2 Обратим теперь внимание на хитрую схему включения самого датчика, которая носит название "трехпроводной". Такая схема позволяет избежать влияния соединительных проводов и, главное, помех, которые наводятся на них. Сами по себе провода влияют слабо, т. к. в данном случае достаточно, чтобы
они имели сопротивление, меньшее, чем 1/2000 сопротивления датчика,2 что составляет примерно 0,4 Ом. Это вполне обеспечит провод МГТФ-0,35, если его суммарная длина не превысит 40 м. Конечно, у нас провод будет много короче, даже если вы будете выносить датчик за окно. Однако в этой схеме и столь малые изменения нивелируются тем, что два одинаковых провода, соединяющие опорный резистор с датчиком и датчик с источником тока, оказываются включенными в разные плечи моста, потому их изменения взаимно компенсируются. Наведенные на этих проводах помехи ведут себя точно так же. А третий провод, соединяющий датчик с "землей", оказывается включенным в оба плеча сразу и создает чисто синфазную помеху. Дополнительный резистор R23, включенный в этот провод, "подтягивает" напряжение разбаланса моста к середине напряжения питания (падение напряжения на R23 составляет около 1 В). При возможном изменении напряжения питания опорное напряжение и сигнал с выхода моста будут меняться пропорционально, поэтому ошибки не возникнет (см. главу 17). Цепочка R21-C7 есть дополнительный фильтр по питанию ОУ в источниках тока. Остальные компоненты схемы вызвать вопросов не должны. Все резисторы, закрашенные на схеме темным цветом, должны быть с точностью не хуже 1%, например, типа С2-29В. Номиналы их, естественно, необязательно должны быть именно такими, как указано на схеме, и могут меняться в очень широких пределах, но соотношения должны быть выдержаны точно. При ином сопротивлении датчика соотношения этих резисторов, а также сопротивления резисторов R20 и R23 придется пересчитать, при этом желательно приблизительно сохранить значения напряжений в схеме, особенно это касается близости к середине напряжения питания. Индикаторная часть также не должна вызвать вопросов. Питание индикаторов в этой схеме обязательно должно осуществляться от отдельной обмотки трансформатора. Индикаторы зеленого свечения (с буквой G) можно заменить на любые другие по вкусу, однако напомню, что индикаторы больших размеров, чем указаны на схеме (с цифрой высотой более 0,5 дюйма) придется подключать через дополнительные ключи с повышенным напряжением питания подобно тому, как это сделано в схеме частотомера (см. главу 24). Так как мы четвертый разряд не используем, то не имеет смысла ставить целый индикатор для одного только знака минус, и его индикация производится с помощью одного плоского светодиода. Они бывают разных размеров, и чтобы схема выглядела красиво, следует подогнать светящуюся полоску по ширине сегментов индикатора. В данном случае светодиод L113 имеет раз 2 На самом деле это даже слишком жесткое требование, т. к. не само сопротивление подводящих проводов вносит погрешность, а только его температурные изменения.
меры 5x2 мм, но сегменты заметно уже, поэтому часть торцевой поверхности нужно аккуратно закрасить любой непрозрачной краской. Залить такой краской следует и боковые поверхности светодиода, иначе вместо минуса вы получите неопределенное светящееся пятно. Лучше всего использовать густую нитроэмаль, если она очень жидкая — дайте ей постоять на воздухе несколько часов. Жидкая краска, например, из баллончика, обязательно будет просвечивать, даже будучи положенной в три слоя. Если яркость минуса, запятой (выв. 5 индикатора Н2) и индикаторов Н4-Н5, постоянно демонстрирующих знак "°C", будет отличаться от яркости основных разрядов, нужно подобрать резисторы R1-R10. Источник питания нужно рассчитывать на 250 мА по напряжению ~6,3 В (по напряжению +5 В потребление не достигает и 10 мА). Конечно, в целях экономии места, стоимости и потребления тока индикаторы Н4-Н5 можно исключить. Рис. 26.3. Конструкция датчика на основе реле РЭС-49, РЭС-60, РЭС-79, РЭС-80 и аналогичных: 1 — реле; 2— места пайки выводов; 3 — пластмассовая трубка; 4 — эпоксидная смола; 5 — кембрик Датчик можно изготовить следующим образом (рис. 26.3). Берется трубка (лучше пластмассовая) длиной примерно 10 см и такого диаметра, чтобы все выводы реле, в том числе, выводы обмотки с припаянными проводами, свободно помещались внутри. Места пайки на всякий случай следует изолировать термоусадочным кембриком. Затем нужно пропустить провода через трубку и обязательно в месте выхода из трубки также надеть на них отрезок кембрика, чтобы ограничить радиус перегиба (позиция 5 на рис. 26.3). Потом нужно залепить пластилином щели между корпусом реле и торцом трубки и залить внутренность ее эпоксидной смолой. Пластилин удаляется начисто с помощью бензина. Схему следует собрать всю сразу (проверив отдельно, конечно, источник питания). Измерив величину сопротивления датчика при комнатной температуре, следует рассчитать необходимую величину резистора R20 (на схеме дана его величина, исходя из сопротивления датчика ровно 800 Ом при 20 °C). Затем на место калибровочных резисторов R14 и R20 следует впаять резисторы
большего номинала, а параллельно им — переменные резисторы с таким значением сопротивления, чтобы вместе они составляли номинал примерно на 5—10% больший расчетного. Вместо параллельных резисторов большого номинала можно наоборот, взять последовательные небольшого номинала (при этом основной резистор должен быть изначально, естественно, несколько меньше необходимого), но параллельные резисторы удобнее впаивать в готовую схему — прямо к выводам основного. Наладку надо начинать с проверки правильности разводки индикаторов. Для этого вывод "TEST" следует замкнуть с напряжением питания — индикаторы должны загореться все, показав значение "888". Затем можно приступать к процедуре калибровки. Набейте термос толченым льдом (зимой лучше использовать для этой цели снег) пополам с водой — это будет первая калибровочная точка. Вторая может быть обеспечена просто теплой водой с температурой от 40 до 60 °C, причем поддерживать точную температуру необязательно, только за ней нужно все время следить, хотя, разумеется, наличие термостата предпочтительнее. Помещая датчик в смесь льда и воды, с помощью резистора R20 устанавливают нулевые показания термометра. Затем датчик помещают в теплую воду вместе с образцовым термометром и с помощью резистора R14 устанавливают показания, соответствующие показаниям этого термометра. В обоих случаях размещать датчик нужно так, чтобы и он, и эталонный термометр не касались стенок, причем воду и смесь в термосе при этом следует обязательно перемешивать. Так как у нас при 0 °C мост находится в равновесии, то в принципе корректировки нуля и крутизны независимы, и одной итерации достаточно, но на всякий случай следует несколько раз перенести датчик из нулевой температуры в теплую воду и обратно и при необходимости подкорректировать показания. Не забывайте, что каждый раз датчик следует выдерживать при соответствующей температуре не менее нескольких минут. Окончательно переменные резисторы заменяют на постоянные (на схеме они показаны пунктиром). Эти дополнительные резисторы могут быть типа С1-4 или МЛТ — при условии, что основной резистор не слишком отличается от окончательного номинала. Если все сделано аккуратно, то погрешность такого термометра в диапазоне от-50 до +50 °C не превысит его разрешающей способности, равной 0,1 °C. При использовании иных типов датчиков, например, полупроводниковых, отрицательное напряжение питания в 572ПВ2 может все же понадобиться. Самый лучший способ, безусловно, — сделать нормальный двуполярный источник ±5 В. На рис. 26.4 приведены различные варианты паллиативных решений. Первый вариант (рис. 26.4, а) представляет собой однополярный источник +10 В с искусственным расщеплением. Расщепитель представляет собой просто повторитель напряжения на ОУ с умощненным выходом
на комплементарных транзисторах. Обратите внимание на включение стабилизатора LM78L09, которое позволяет получить напряжение большее, чем номинальное. Излишне предупреждать, что питание индикаторов при такой схеме обязательно должно осуществляться от отдельного источника. Вторая схема (рис. 26.4, б) представляет собой инвертор-преобразователь положительного питания +5 В в отрицательное. Различных типов таких инверторов выпускается очень много, здесь выбран простейший нестабилизиро-ванный вариант. Преимущество преобразователя 1168ЕП1 (ICL7660, МАХ 1044) в простоте включения, недостаток — высокое выходное сопротивление, так что при входном напряжении +5 В уже при потребляемом токе 20 мА отрицательное выходное напряжение снижается по абсолютной величине до 4,0 В (величина -4,4 В показана условно). Однако для нужд микросхемы 572ПВ2 этого вполне достаточно. Это вполне иллюстрирует рис. 26.4, б, на котором приведена схема инвертора напряжения, рекомендуемая разработчиками АЦП. Это на самом деле просто ухудшенный вариант того же инвертора, работающий от тактовой частоты АЦП. Микросхема CD4009 может быть заменена на 561ПУ4 (или CD4050; т. к. она содержит усилители без инверсии, все шесть можно просто включить параллельно) или на 561ЛН2 с соответствующей коррекцией разводки выводов. Подобные схемы могут особенно пригодиться и для ПВ2 и для ПВ5 в случае батарейного питания, ведь обеспечить напряжение порядка 12—14 В, требующееся для нормального двуполярного источника ±5 В, в этом случае непросто, а схемы по рис. 26.4, б и 26.4, б, в, кроме всего прочего, отличаются высокой экономичностью (у ICL7660 КПД достигает 99%).
Глава 27 Метеорологическая лаборатория. Измерение физических величин Назовите тех из подмастерьев, которые могут вам понадобиться, и укажите, какие инструменты они должны принести. А. Дюма, "Три мушкетера" Еще недавно проектирование измерителей различных физических величин требовало незаурядных физических знаний, потому что даже имеющиеся универсальные датчики приходилось приспосабливать к конкретным нуждам каждый раз заново. Нередко серийно выпускающихся датчиков вообще не было, и в этом случае достаточно глубокое физическое образование было просто необходимо. Во mhoi их специфических случаях и сейчас так, однако промышленность шагнула далеко вперед и чаще всего датчик нужного параметра можно найти в продаже. Можно и купить готовую метеорологическую лабораторию, только стоимость ее будет сравнима со стоимостью престижной иномарки типа BMW 5-й серии. Нам же интересно — можно ли попробовать самому соорудить такую лабораторию? Заметьте, что даже в случае успеха этого мероприятия официальный метеопункт организовать вряд ли удастся — для этого нужно пройти дорогостоящую сертификацию ваших средств измерений, в результате чего вы выясните в конце концов, что дешевле было бы купить готовые. Но отчего бы не сделать метеолабораторию для себя, любимого? Измеряемые параметры Сначала выясним, что же именно мы хотим и можем измерять. Стандартная метеорологическая лаборатория (ее еще называют обсерваторией) должна включать в себя измерители таких параметров, как температура воздуха, атмосферное давление, влажность, скорость и направление ветра. Кроме этого, желательно измерять различные характеристики солнечного излучения: общее его количество по часам дня, а также долю времени прямого солнца (что характеризует степень облачности). Неплохо, в соответствии с последними
веяниями, приставить к такой лаборатории и некоторые экологические измерители — например, радиационного фона. Некоторые из датчиков перечисленных величин соорудить самому очень сложно. Так, мы не будем рассматривать задачу определения солнечного излучения прежде всего потому, что хоть как-то калибровать такой измеритель в домашних условиях представляется решительно невозможным. Что же касается радиационного фона, то в Интернете можно найти огромное количество радиолюбительских конструкций, единственная сложность при воспроизведении которых— приобретение собственно чувствительного элемента, счетчика элементарных частиц. Но это задача также решаемая. Мы же рассмотрим остальные параметры. Давление Измерителей давления существует довольно много разновидностей, и практически все они используют один и тот же принцип — измеряется изменение какого-либо физического параметра под действием деформации, вызванной механическим воздействием давления на некую мембрану. Мембрана делается чаще всего из не подверженных коррозии металлов, и ее упругость определяет диапазон измерения. А вот собственно воспринимающие деформацию сенсоры могут быть основаны на различных физических принципах, среди которых есть очень остроумные — скажем, под действием деформации некая струна меняет натяжение, от чего ее собственная частота колебаний меняется, подобно тому, как это происходит при подтяжке колков у гитары. Колебания струны, которая выполняется из ферромагнитного материала, возбуждаются с помощью катушек индуктивности, и частота полученного электронномеханического генератора и есть мера давления. Другой принцип, распространенный и по сей день — приклеить к мембране кварц, который также под действием деформации будет менять свою частоту колебаний. Еще один грубый, но надежный принцип — когда под действием деформации меняется зазор в магнитопроводе катушки индуктивности, отчего индуктивность ее меняется, также меняется частота колебаний LC-генератора, построенного на основе этой катушки. Есть и другие принципы. Самый главный враг разработчиков таких измерителей — температура. Струна меняет свои размеры, частота LC-контура и параметры магнитопровода также зависят от температуры. Казалось бы, использование кварца решает проблему (отчасти), но у него есть другая особенность — такие кварцы подвержены старению. Не одна сотня диссертаций посвящена тому, как увеличить точность подобных преобразователей. В результате в промышленных масштабах победил принцип, который еще лет двадцать назад казался
неприметной золушкой среди своих сестер. Почти все выпускаемые сегодня датчики давления для любых применений построены по одному принципу — на мембрану наклеивается кристалл, содержащий тензометрический мост. Тензометр — это резистор, который меняет свое сопротивление в зависимости от деформации, в принципе, любая металлическая пластинка обладает тензометрическими свойствами. Естественно, для металлов эффект очень мал и на практике применяют его только в мостовой схеме измерения (см. главу 16), когда два противоположных резистора моста растягиваются, а вторые два — сокращаются в размерах. Все современные датчики используют не металлические тензометры, а полупроводниковые, у которых эффект на порядки выше, именно поэтому ранее шла речь о кристалле. Рассмотрим этот эффект подробнее. Когда все резисторы моста одинаковы, как мы знаем, температурные изменения их на выходном дифференциальном сигнале не сказываются. Но, во-первых, строго одинаковыми (не только по тензо- и термочувствительности, но и по всем остальным характеристикам) сделать их на практике не представляется возможным. Во-вторых, в режиме измерения, когда номиналы резисторов моста изменяются, мост выходит из баланса, и теперь температурные изменения присутствуют на выходе в полной мере, смешиваясь с полезным сигналом. Как мы уже уяснили, полупроводники крайне чувствительны к температуре, скажем, термисторы имеют на порядок большую крутизну температурной характеристики, чем обычные металлические термосопротивления, да еще и нелинейного характера. Именно вследствие этих причин тензометрический метод мало применялся до некоторого времени, в чистом виде тензометрический полупроводниковый датчик может давать единицы процентов приведенной погрешности в рабочем диапазоне температур, причем погрешности, нелинейно зависящей от температуры. В нашем случае для измерения атмосферного давления это совершенно неприемлемые значения — вся шкала датчика так или иначе начинается от 0, но используется только узкий участок, примерно от 700 до 800 мм рт. ст. При этом всего 1% приведенной погрешности даст нам ошибку в 8 единиц, что для метеорологии запредельная величина — разница между 740 и 748 мм рт. ст. весьма и весьма существенна. Для удобства мы будем и далее пользоваться величиной мм рт. ст., хотя характеристики датчиков обычно указывают в барах или паскалях: 1 мм рт. ст. равен ровно 4/3 (1,3332) бара или гектопаскаля (сотни паскалей, гПа). То есть нормальное давление на уровне Москвы (750 мм рт. ст.) равно при этом ровно 1000 бар или гПа, или 105 Па. Приблизительно также можно считать, что это давление равно 1 атм, или 10 метрам водяного столба. В западной документации часто указывают давление в фунтах (pounds или 1b, от древнеримской единицы веса "либре")
на квадратный дюйм (inches), обозначается оно тогда, соответственно, Ibi или psi, но самим нам переводить эти единицы в бары вряд ли придется. Для того чтобы победить температурную зависимость сигнала тензомоста, напрашивается простой способ: надо поместить рядом с кристаллом полупроводниковое сопротивление, которое имеет такие же температурные характеристики, как и сам мост, и как-то вычитать его показания из показаний моста. Дело несколько осложняется тем, что температурная ошибка тензомоста представляет собой сложную смесь аддитивной и мультипликативной составляющих, но не будем углубляться — эта задача в настоящее время почти решена за нас. Почти — потому, что в массовом производстве, естественно, полной компенсации достичь сложно. Но в большинстве случаев того, что достигается в серийных датчиках, например, фирм Honeywell или Motorola, вполне достаточно. А оставшуюся погрешность за счет производственного разброса вполне можно скомпенсировать калибровкой. Рис. 27.1. Датчик атмосферного давления МРХ4115 фирмы Motorola Для измерения атмосферного давления подойдет, например, датчик МРХ4115 фирмы Motorola с диапазоном 1150 гПа (примерно 860 мм рт. ст.). Внешний вид его показан на рис. 27.1. Шесть выводов его имеют шаг 2,5 (2,54) мм и легко влезают в любую панельку под микросхемы в DIP-корпусах. Из выводов задействованы только первые три (вывод №1 — с ключом в виде выреза), которые представляют собой, соответственно, выход, "землю" и питание. Питание должно составлять от 4,85 до 5,35 В (типовое почему-то равно 5,1 В), при этом ошибка без дополнительной калибровки не превышает 1,5% (на практике сдвиг нуля примерно раза в два меньше). В датчик встроен усилитель (с термокомпенсацией), поэтому выходной сигнал его составляет от 0 до примерно 4,8 В при максимальном значении давления, для включения
в АЦП типа 572ПВ2 его надо поделить с помощью резистивного делителя. Так как сигнал не дифференциальный, то схема включения будет совпадать с основной схемой включения АЦП (рис. 26.1), причем опорное напряжение тут можно формировать тоже от основного питания +5 В с помощью делителя, ибо выходной сигнал датчика меняется пропорционально питанию (хотя и в ослабленной степени, но общая ошибка в комнатном диапазоне температур будет невелика). Если подгонка нуля потребуется, то отрицательный вывод входного напряжения следует подсоединить не к "земле", а к делителю напряжения, подключенному между плюсом и минусом питания. Само питание при этом, естественно, должно быть двуполярным. Я не буду рисовать всю схему ввиду ее тривиальности. Калибровку же можно выполнить, если сравнивать показания датчика с данными по давлению, которые публикуются в Интернете (есть сайты, которые публикуют погоду каждые 3 часа — это так называемый метеорологический интервал), причем лучше не ограничиваться данными одной какой-то службы,* а обращаться к нескольким, отбрасывая явные ошибки и усредняя правдоподобные данные. Используя данные, сообщаемые по радио и телевидению, следует учитывать, что они могут сообщаться с большим запаздыванием. Еще один момент, который следует учесть при калибровке — атмосферное давление падает примерно на 1 мм рт. ст. на каждые 20 метров высоты над уровнем моря. Скажем, для Москвы, как и для большей части территории Европейской части России, превышение над уровнем моря составляет в среднем 200 м, и нормальное давление равно 750 мм рт. ст., но разброс может составлять 100—150 м даже в пределах территории столицы, поэтому ошибка может достигать 4-х единиц. Для выполнения калибровки дождитесь, пока давление на улице не станет достаточно низким, а затем, наоборот, высоким — экстремальные значения давления в регионе Москвы составляют примерно 720 и 770 мм рт. ст. — и постройте калибровочную прямую в координатах показания датчика— действительное давление, из которой вы сможете вычислить поправку для сдвига нуля и крутизны (последняя регулируется с помощью величины опорного напряжения). Влажность Влажность— это количество паров воды, которое содержится в воздухе. Различают абсолютную влажность и относительную. Абсолютная влажность— концентрация воды, например, в граммах в кубическом метре воздуха. Это величина лимитирована так называемой точкой росы — концентрацией насыщения, когда дальнейшее добавление водяных паров уже не приводит к их распределению в воздухе, а вызывает выпадение влаги в виде
тумана. Эта величина зависит от температуры воздуха и тем меньше, чем ниже температура, поэтому на холодных поверхностях всегда происходит выделение влаги в первую очередь. Для практики имеет большее значение не абсолютная, а относительная влажность — концентрация паров по отношение к концентрации в точке росы при данной температуре. Она выражается в процентах, и чем она выше, тем медленнее идет испарение, например, хуже сохнет белье. Для точки росы относительная влажность равна 100%. Простейший психрометр (так называют традиционный измеритель влажности, к психологии это не имеет отношения) основан на измерении разности показаний термометров, смоченного водой и сухого. Чем выше относительная влажность, тем меньше разнятся эти показания (т. к. при испарении смоченный водой термометр охлаждается, а с повышением влажности испарение замедляется). Для автоматизированного измерения это очень неудобный метод (приходится все время следить, чтобы один из термометров был влажным) и к тому же неточный. Поэтому большинство промышленных методов используют изменения электрических свойств воздуха при изменении влажности — удобнее всего, диэлектрической проницаемости, от которой, как мы знаем из главы 5, зависит емкость конденсатора. Например, датчики серии HIH фирмы Honeywell устроены так: между обкладками из платины находится пористый полимерный материал с доступом наружного воздуха, емкость такого конденсатора измеряется и преобразуется в аналоговый сигнал. Один бог ведает, почему не сделать его сразу цифровым (например, в виде частоты или интервала времени), возможно, это сделано в целях унификации средств измерения. Чувствительность датчиков составляет примерно 0,044 В/% влажности, т. е. выходной сигнал равен примерно 4,4 В при влажности 100%. Для термокомпенсации на том же кристалле расположен терморезистор. Схему включения я приводить также не буду, т. к. особых сложностей там нет, нужно просто следовать рекомендациям производителя. Но один подводный камень имеется: датчик влажности ни в коем случае нельзя располагать внутри корпуса прибора, т. к. даже при небольшом нагреве элементов значения влажности внутри и снаружи будут существенно отличаться, не говоря уж о термозависимости самого датчика. Ветер "Ветер, ветер, ты могуч..."— в этих знакомых нам с детства строчках заключено больше правды, чем виделось поэту. Неизвестно, растают ли ледники Антарктиды в результате глобального потепления, но факт, что это потепление сказывается уже сейчас в том, что климат начинает все больше "раскачиваться"— ни о каких ураганах в средней полосе России во времена
моего детства и не слыхивали, в то же время только за последние несколько лет в Москве их было как минимум три, самый памятный— летом 1998-го года, второй, затопивший город — в 2001 году. Во время этого урагана мне случилось ехать по только что построенной трассе третьего транспортного кольца, и машину буквально сдувало с дороги. Какова скорость ветра при таких аномалиях? При сильной буре порывы могут достигать 20 м/с, при скорости в 30 м/с уже сдувает крыши с домов. Последнее значение характерно только для тропических циклонов, в нашей полосе такое наблюдать вроде бы не приходилось, но кто знает... Построить измеритель скорости ветра— анемометр— довольно просто, сложно его отградуировать. А вот измеритель направления ветра (флюгер), наоборот, построить сложно, а градуировать и вовсе не надо, достаточно ориентировать его по компасу. Попробуем понять, как можно самому сделать и то и другое. Имейте в виду, что направление ветра (северный N, или, к примеру, юго-западный SW) означает то, откуда ветер дует (в противоположность морским течениям, для которых "северное" означает, что течение направлено на север). Анемометр Устройство самого распространенного чашечного анемометра хорошо видно из рис. 27.2, а. Его преимущество состоит в том, что показания мало зависят от ориентации прибора в пространстве — как ни крути, а вертеться он будет одинаково и тем быстрее, чем выше скорость ветра. Единственное положение, в котором он будет врать — когда ось направлена навстречу ветру, но чтобы этого избежать, достаточно расположить ее вертикально. Для самодельной конструкции не обязательно выпиливать чашки, достаточно изготовить крыльчатку с загнутыми лопастями по типу показанной на рис. 27.2, б, хотя такая "вертушка" будет менее чувствительна, и ее показания будут больше зависеть от положения в пространстве. Еще проще изготовить пропеллер1, в простейшем случае это круг из жести, надрезанный на четыре сектора, которые немного развернуты в одном направлении. Такой пропеллер правильно будет показывать, только если он развернут навстречу потоку ветра, поэтому его целесообразно совместить с флюгером. Я не буду загромождать книгу по электронике описаниями вариантов изготовления таких вертушек, сведения по этому делу вы можете найти в любом пособии, например, по авиамоделизму. Хочу только отметить, что для успеха мероприятия необходимо очень тщательно продумать конст 1 Более правильное название в данном случае — импеллер, т. к. не он гонит воздух своим вращением, а наоборот, воздух его вращает.
рукцию крепления вала вертушки, который должен обязательно вращаться как можно более свободно, например, во фторопластовых подшипниках скольжения, причем момент его трогания не должен меняться со временем из-за коррозии, попадания грязи и т. п. Мы же сосредоточимся на том, как автоматически измерять скорость вращения. Рис. 27.2. Анемометр: а — ручной серийной конструкции, б — вариант самодельной крыльчатки Обычный метод измерения скорости вращения состоит в том, что на вал надевается диск с отверстиями, равномерно расположенными по окружности. В одной из точек закрепляется оптический датчик "на просвет", который выдает импульс каждый раз, когда между приемником и источником света проходит отверстие. Так как число отверстий п на окружности известно, то скорость вращения ф будет равна попросту fin оборотов в секунду, где f — частота следования импульсов на выходе оптического датчика в Гц. Если отверстие всего одно, то скорость вращения равна/. Оптический датчик может быть и не "на просвет", а "на отражение", причем отверстия можно оставить (отражение будет от поверхности диска) или заменить их чередующимися темными и светлыми участками. Кроме оптических, есть и другие конструкции датчиков, например, индукционный или герконовый (в последнем случае по окружности вместо отверстий приклеиваются маленькие магнитики) или датчик на основе эффекта Холла, как в распределителе зажигания "Жигулей" 8-й модели и старше. Следует отметить, что самое сложное в этом деле — обеспечить хорошую форму импульсов на выходе датчика при всех возможных скоростях вращения, т. к. при слишком медленном пересечении границы отверстия возможен дребезг, неважно, какой при этом используется принцип. Далее мы используем один из вариантов с использованием оптического датчика "на просвет".
Рис. 27.3. Схема формирования импульсов для измерения скорости вращения анемометра с помощью оптического датчика На рис. 27.3 показана схема этого варианта. Излучающий инфракрасный светодиод АЛ107Б выдерживает очень большие импульсные токи (до 1 А), и если его питать короткими мощными импульсами, то чувствительность схемы повысится, а если при этом сделать скважность импульсов достаточно большой, то будет экономиться питание. Мы сделаем частоту следования импульсов через него такой, чтобы она превышала возможную частоту следования отверстий при самой высокой скорости вращения. В данном случае мы ориентируемся на число отверстий, равное 10. Пусть наибольшая скорость вращения вертушки составляет 20об/с, тогда частота составит 200 Гц. Выберем частоту импульсов через светодиод с запасом, равной 1 кГц (после градуировки, о которой далее, можно в случае чего подкорректировать). Пусть время самого импульса составит 10 мкс, т. е. скважность будет равна 100. При включении светодиода, как показано на рисунке, без ограничительного сопротивления, импульсный ток через него будет достигать 40 мА, в то время как средний потребляемый ток составит всего 0,4 мА. Кстати, никто не мешает включить все шесть инверторов в корпусе ЛН2 параллельно и получить импульс тока через светодиод на уровне 200—250 мА, просто здесь это не требуется ввиду близкого расположения фотоприемника. Предположим, что ширина отверстия и промежутка между ними по окружности совпадают (это, впрочем, не очень существенно, просто так удобнее считать). Тогда полупериод одного входного импульса при максимальной частоте будет равен 2,5 мс, т. е. за это время уложится в среднем не меньше 2,5 импульсов от светодиода. Как наличие пачек таких импульсов преобразовать в частоту вращения? Для этого мы воспользуемся серийной микросхемой одновибратора 561АГ1 (CD4098), который представляет собой т. н. одновибратор с перезапуском. Это означает, что если во время действия выходного сигнала такого одновибратора пришел еще один запускающий фронт, то он перезапустится и начнет отсчет времени как бы заново (наши конструкции по рис. 23.8 являются одновибраторами без перезапуска— пришедший во время действия импульса фронт будет просто проигнорирован). Время импульса на выходе одновибратора выберем несколько превышающим период импульсов
со светодиода, тогда у нас на выходе получится один непрерывный импульс, действующий все время, пока светоприемник находится напротив отверстия, и даже еще немного сверх того. Расчет в плане защиты от дребезга делается на то, что столь короткий (10 мкс) импульс просто не успеет расщепиться на два и более — либо пройдет полный импульс, либо вообще никакого, но даже если это расщепление и произойдет, то одновибратор в подавляющем большинстве случаев все, как говорится, спишет. Частота импульсов светодиода и привязанная к ней длительность импульса на выходе одновибратора будут определять верхнюю границу диапазона скорости вращения вертушки. При налаживании схемы надо сначала подобрать резистор R4 так, чтобы обеспечить четкое срабатывание фотоприемника (погрейте его рукой, чтобы убедиться, что он не выходит из диапазона при повышении температуры), а затем — резистор R6 так, чтобы длительность импульса на выходе АП составляла примерно 1,3—1,5 мс. ИК-светодиод АЛ107Б можно заменить на любой другой подобный, отечественный или импортный, а фотодиод ФД2 также можно заменить на любой другой фотодиод, фототранзистор или даже использовать в качестве приемника такой же светодиод, как и излучающий. Конечно же, имеются серийные конструкции фотоисточник-приемник (или фотоприемники отдельно), которые формируют готовый логический сигнал, но их не всегда просто приспособить к нашим нуждам. Полученная на выходе одновибратора частота импульсов измеряется обычным методом с помощью счетчика. Измерительная часть и задающий делитель частот на схеме не показаны, т. к. если вы одолели описание работы частотомера в главе 24, то, без сомнения, знаете, как это делается. Так как отверстий 10, то за время измерения 1 с мы получим частоту вращения с разрешением в десятые доли герца. Ее можно прямо вывести на индикатор, но в готовом приборе удобно сразу показывать скорость ветра в метрах в секунду. Для этого следует сначала прибор отградуировать. Как же это сделать? Лучше всего взять серийный чашечный анемометр и, сняв несколько точек зависимости скорости вращения от скорости ветра при разной погоде, затем подогнать время измерения частоты вращения так, чтобы получить на индикаторе метры в секунду2. Если доступа к серийному анемометру у вас нет, “ При этом необходимо обеспечить учет порога трогания вертушки, т. к. из-за него диапазон показаний прибора должен начинаться не с нуля. Простейший способ преодолеть эту трудность— использовать счетчик с предзагрузкой, например, 561ИЕ14, который в начале каждого измерения устанавливается не в нулевое состояние, а в состояние с уже загруженным числом, равным порогу трогания, и оно суммируется с последующими импульсами. Сложнее будет обеспечить "ворота" произвольной длительности, которая понадобится для индикации скорости в м/с. Это можно сделать путем комбинирования выходов делителя времязадающей частоты (счетчика ИЕ16) с помощью логических элементов. Капитальным выходом, конечно, будет использование микропроцессора.
то отградуировать можно так: погрузить всю конструкцию в автомобиль, выехать на прямой участок шоссе в безветренную погоду, выставить вертушку в окно и произвести градуировку по спидометру машины. Скорость 36 км/час при этом будет соответствовать скорости ветра 10 м/с. Конечно, это довольно грубый способ (спидометры обычно врут, особенно на малых скоростях), но зато доступный. Если применить в качестве показывающего ЖК-индикатор, то всю конструкцию можно питать от одной батарейки "Крона" (ток потребления измерительной части не превышает нескольких миллиампер). Флюгер Как уже говорилось, флюгер изготовить сложнее анемометра. К нему предъявляются все те же требования в части механической конструкции, причем с учетом значительных боковых нагрузок на вал, т. к. флюгер обычно на валу этом располагается консольно. Но опять же не будем заострять внимание на механике, а подумаем, как мы можем обеспечить автоматизированный съем информации. В данном случае первичной измеряемой величиной является угол поворота вала, который нужно преобразовать в цифровой код. Для этого используется кодирующий диск, закрепленный на валу, подобный тому, что в измерителе скорости вращения, но не с одним рядом отверстий, а с несколькими, где сами отверстия расположены по определенному закону. Есть несколько способов расположения отверстий, отличительной чертой которых служит то, что при переходе от одного кода к другому не должно одновременно меняться несколько разрядов кода, иначе может возникать неоднозначность. В самом деле, представим, что у нас диск поделен на четыре ряда, в каждом из которых размеры отверстий меняются по двоичному закону (разверткой такого диска может служить временная диаграмма четырехразрядного счетчика, см. рис. 24.6). Тогда при переходе от состояния "0000" (нет отверстий ни в одном ряду) к состоянию "ИИ" (отверстия во всех рядах) из-за разницы в порогах срабатывания фотодатчиков на выходе может возникать в принципе любой код. Если же при переходе от одного состояния к другому меняется только один разряд (или система отслеживает предыдущее состояние, как это сделано в некоторых конструкциях), то такой неопределенности не возникает. Код, который обладает таким свойством, называется кодом Грея, и четырехразрядный его вариант приведен в таблице (читать нужно сверху вниз, слева направо). Четырехразрядный код Г рея 0000 0110 1100 1010 0001 0111 1101 1011 0011 0101 1111 1001 0010 0100 1110 1000
Как видите, с двоичным кодом он почти не совпадает, кроме старшего разряда. Однако все коды разные, так что состояния легко различаются. А хватит ли нам 16 состояний? Для наших целей вполне — если поделить 360° на 16, то мы получим 22,5°, или одну четвертушку каждого из четырех секторов по 90°, соответствующих сторонам света. Это соответствует принятому словесному обозначению направления ("север", "северо-северо-восток", "северо-восток", "северо-восток-восток", "восток" и т. д.) и для практических целей более чем достаточно. Рис. 27.4. а — кодирующий диск для измерения угла поворота; б — преобразователь кода Грея в двоичный код б Чертеж кодирующего диска приведен на рис. 27.4, а, им можно воспользоваться как шаблоном. Для съема информации целесообразно использовать ту7 же самую экономичную схему, что и для измерения частоты в анемометре, только в четырех экземплярах. На выходе четырех каналов будет получаться код Грея. Перекодировать его в двоичный код можно, например, по схеме, показанной на рис. 27.4, б. Вопрос, однако — а что с ним делать дальше? Полученный двоичный код можно пропустить через дешифратор по рис. 21.7, б и подключить к его выходам светодиоды, расположенные по окружности с нанесенными сторонами света (имейте при этом в виду, что направление на север принимается за 0°, и далее отсчет ведется по часовой стрелке, т. е. вое-
ток— это 90°). На самом деле в результате получится не столько измерение (стороны света можно нанести и на лимб вокруг самого флюгера, как обычно и делают), сколько дистанционная передача информации. Удобно, чтобы эта информация отображалась на некоем дисплее в привычном для восприятия виде, например, в виде принятых буквенных обозначений направления ("N", "NNE", "NE" и т. п.) или хотя бы в виде числа градусов направления. Дешифратор, который может осуществлять такие функции, на логических элементах получится очень громоздким, поэтому придется либо применить микропроцессор, либо... А вот как еще можно выйти из положения, мы рассмотрим в следующей главе.
Глава 28 Лечение амнезии. О памяти и ее разновидностях Право, у вас чудесная память, любезный шевалье! Кстати, прибавьте еще кое-что. А. Дюма, "Три мушкетера" Микросхемы памяти — самая, пожалуй, бурно развивающаяся отрасль полупроводниковой промышленности. Конкуренцию ей в этом плане могут составить только микропроцессоры для ПК и еще, пожалуй, видео- и аудиопроцессоры. Если для операционных усилителей или дискретной логики считается нормальным использовать в современных разработках чипы, в своей основе разработанные 20 и 30 лет назад1, то с памятью это не имеет никакого смысла. В 1965 г. в Иллинойском университете был запущен один из самых передовых компьютеров по тому времени ILLIAC-IV. Это был первый компьютер, в котором была использована быстрая память на микросхемах — каждый чип (производства Fairchild Semiconductor) имел емкость 256 бит, а всего было набрано 1 Мбайт. Стоимость этой памяти составила ощутимую часть от всей стоимости устройства, обошедшегося заказчику — NASA — в $31 млн. А один из первых персональных ПК Altair 8800 (1975 г.), продававшийся в виде набора "сделай сам", при стоимости порядка $500 имел всего 256 байт (именно байт, а не килобайт) памяти. В том же году для распространения языка Basic for Altair Биллом Гейтсом и Полом Алленом была создана фирма, получившая первоначальное название Micro-Soft. Одна из самых серьезных проблем, которую пришлось решать— нехватка памяти, потому что созданный ими интерпретатор Basic требовал аж 4 Кбайт! Проблема объемов памяти и ее дороговизна преследовала разработчиков до самого последнего времени, еще в конце 90-х стоимость памяти для ПК можно было смело прикидывать на уровне $1/Мбайт, что при требовавшихся уже 1 Они — точнее, в большинстве случаев их более продвинутые аналоги — только резко подешевели. К примеру, 16-разрядный АЦП последовательного приближения с быстродействием около 2 МГц в конце 70-х мог стоить почти $2000. Сейчас, конечно, цены на аналогичные изделия примерно на два порядка ниже.
тогда для комфортной работы объемах ОЗУ порядка 128—256 Мбайт могло составлять значительную часть стоимости устройства. И сейчас (не улыбайтесь те, кому вдруг случится читать эти строки лет этак через 10) необычайно перспективное направление в производстве долговременной памяти на замену не очень надежным и относительно медленным магнитным хард-дискам под названием "твердотельные диски" или "флэш-диски" сдерживается относительно высокой стоимостью твердотельных ПЗУ— порядка $300—500 и выше за 1 Гбайт. Все это хорошо иллюстрирует необходимость соблюдения одного из основных принципов фон Неймана, которые до сих пор являются основополагающими для разработчиков компьютерных систем. Принципы эти были выведены великим математиком в 1946 г. на основе опыта эксплуатации ЭВМ ENIAC, и в 1948 г. переоткрыты С. А. Лебедевым в СССР. Один из этих принципов гласит: память должна быть организована иерархически, от памяти малого объема, но с высоким быстродействием, до медленной памяти большой емкости. Именно так и проектируют современные компьютеры, которые содержат очень быструю кэш-память на одном кристалле с процессором (а иногда два или три уровня такой памяти), затем идет быстродействующее ОЗУ (оперативное запоминающее устройство, та самая память, которая указывается в характеристиках ПК), а затем более медленные устройства типа хард-дисков или CD- и DVD-ROM. Кроме этого, в любом компьютере обязательно присутствует ПЗУ (постоянное запоминающее устройство), которое хранит базовые программы для взаимодействия с системой. В основном в соответствии с этими задачами и выработана классификация различных устройств памяти. И мы начнем с самого простого — ПЗУ, но сначала рассмотрим принципы организации запоминающих устройств (ЗУ) вообще. Устройство ЗУ Любая память имеет матричную структуру по типу показаной на рис. 24.5. Матрица имеет в данном случае 8x8 = 64 ячейки. Доступ к каждой ячейке может производиться так, как показано на рис. 24.5, но это слишком неудобный и медленный способ, поэтому его применяют при большом числе ячеек, как в светочувствительных матрицах для цифровых фотоаппаратов. Обычно же вывод и загрузку информации в память производят с помощью мульти-плексоров/демультиплексоров (вроде 561КП2, что мы использовали в схеме частотомера, см. рис. 24.10). На рис. 28.1 в первом приближении показано, как это делается. Код, поступающий на мультиплексор слева (Х3-Х5) подключает к строке с номером, соответствующим этому коду, активирующий уро
вень напряжения (это может быть лог. I или 0, неважно). Код на верхнем мультиплексоре (xq-xi) выбирает столбец, в результате к выходу этого мультиплексора подключается ячейка, стоящая на пересечении выбранных строки и столбца. Легко заметить, что сама по себе организация матрицы при таком однобитовом доступе для внешнего мира не имеет значения. Если она будет выглядеть как 4x16 или 32x2 или даже 64x1 — в любом случае код доступа (он называется адресным кодом) будет 6-разрядным, а выход один-единственный. Поэтому всем таким ЗУ приписывается организация Ух1 бит, где N— общее число битов. Для того чтобы получить байтную организацию, надо просто взять 8 таких микросхем и добавить к адресной линии еще три разряда, которыми через отдельный мультиплексор можно управлять выборкой одной из этих микросхем (для этого каждая такая микросхема имеет специальный вывод, называемый "выбор кристалла" — chip select, или CS). В данном примере мы получим в сумме 9 адресных разрядов, что соответствует емкости памяти (64 • 8 = 512 бит или 29). Большинство выпускаемых интегральных ЗУ имеют 8 или 16 параллельных выходов. Вход- Рис. 28.1. Схематическое устройство ЗУ с однобитным выходом Как же можно обустроить ячейку памяти? Давайте сконструируем простейшее ПЗУ сами.
ROM Всем известное благодаря распространению лазерных дисков сокращение ROM — Read Only Memory — и есть не что иное, как западное название ПЗУ. На самом деле это название ("память только для чтения") не очень точно характеризует суть дела, отечественное "постоянное запоминающее устройство" есть более корректный термин, самое же правильное называть такую память "энергонезависимой". ПЗУ отличается от других типов памяти не тем, что его можно только читать, а записывать нельзя (хотя встречаются и такие разновидности), а тем, что информация в нем не пропадает при выключении питания. Сама по себе невозможность записи теперь нехарактерна даже для компакт-дисков, однако название ROM сохранилось. Простейший вариант ПЗУ представлен на рис. 28.2. В данном случае он представляет собой не что иное, как преобразователь из десятичного кода в семисегментный (сравните с таблицей рис. 21.2 с учетом того, что здесь входной код должен быть в отрицательной логике, т. е. уровень на выбранной входной линии — лог.О). Если на входе поставить дешифратор типа 561ИД1 (инвертировав его выходы), то мы получим аналог микросхемы 561ИД5. Преобразователь не содержит активных элементов и потому возможности таких схем ограничены — например, создать преобразователь непосредственно из двоичного кода в семисегментный было бы затруднительно без привлечения транзисторов. Обычная микросхема ПЗУ построена на транзисторных ячейках и поэтому без всяких хитростей (вроде нагрузочных резисторов) принимает и выдает обычные логические уровни. Постойте, а при чем тут ПЗУ? Дело в том, что любое ПЗУ есть не что иное, как универсальный преобразователь кодов. Адресный код можно рассматривать как входной, а код, получающийся при обращении к нужной ячейке — как выходной. Причем удобство состоит в том, что изначально в ПЗУ не записано ничего (одни нули или единицы), и мы можем реализовать на нем любую логическую функцию, все зависит только от емкости. В том числе, такую простую, как преобразователь кодов. Или такую сложную, как операционная система Windows. Последнее мы каждый раз и делаем, когда устанавливаем Windows на компьютер, причем в качестве ПЗУ выступает жесткий диск. Из этого примера отчетливо видно, что каким бы сложным не был алгоритм, он все равно в конечном итоге сводится к совокупности однозначных логических уравнений, которые можно реализовать как через ПЗУ, так и с помощью устройства памяти любого другого типа.
Для примера мы можем сконструировать дешифратор, который преобразовывал бы код Грея, полученный с выхода флюгера, разработанного нами в прошлой главе, в код для отображения направления ветра в буквенной форме на шестнадцатисегментном индикаторе. Для этого надо составить сначала таблицу, в которой будет отражено, что мы имеем на входе и что бы мы хотели получить на выходе. Сам шестнадцатисегментный индикатор и обозначения его сегментов показаны на рис. 28.3, для отображения направления
нам понадобится их три, в соответствии со следующей таблицей (буквой "х" показаны несветящиеся индикаторы): Код 0000 0001 0011 0010 0110 0111 0101 0100 Направление xNx NNE NEx NEE xEx SEE SEx SSE Код 1100 1101 1111 1110 1010 1011 1001 1000 Направление xSx SSW SWx SWW xWx NWW NWx NNW Рис. 28.3. Шестнадцатисегментный индикатор Таблицы соответствия кодов входа и выхода дешифратора для каждого из трех индикаторов приведены ниже. Лог. 1 соответствует светящемуся сегменту. Для сегментов здесь приведено состояние только тех, которые задействованы в написании букв N, S, Е и W, остальные (m, п и s) просто остаются неприсоединенными. Таблицы я разбил на три части в соответствии с количеством индикаторов. Сами индикаторы могут быть типа, например, PSC05 фирмы Kingbright. Индикатор 0 (левый) Код Знак a b c d e f g h u p k t r 0000 — 0 0 0 0 0 0 0 0 0 0 0 0 0 0001 N 0 0 1 1 0 0 1 1 0 0 1 0 1 0011 N 0 0 1 1 0 0 1 1 0 0 1 0 1 0010 N 0 0 1 1 0 0 1 1 0 0 1 0 1 0110 — 0 0 0 0 0 0 0 0 0 0 0 0 0
(окончание) Индикатор 0 (левый) 0111 S 1 1 0 1 1 1 0 1 1 1 0 0 0 0101 S 1 1 0 1 1 1 0 1 1 1 0 0 0 0100 S 1 1 0 1 1 1 0 1 1 1 0 0 0 1100 — 0 0 0 0 0 0 0 0 0 0 0 0 0 1101 S 1 1 0 1 1 1 0 1 1 1 0 0 0 1111 S 1 1 0 1 1 1 0 1 1 1 0 0 0 1110 S 1 1 0 1 1 1 0 1 1 1 0 0 0 1010 — 0 0 0 0 0 0 0 0 0 0 0 0 0 1011 N 0 0 1 1 0 0 1 1 0 0 1 0 1 1001 N 0 0 1 1 0 0 1 1 0 0 1 0 1 1000 N 0 0 1 1 0 0 1 1 0 0 1 0 1 Индикатор 1 (посередине) Код Знак а ь с d е f g h u p k t r 0000 N 0 0 1 1 0 0 1 1 0 0 1 0 1 0001 N 0 0 1 1 0 0 1 1 0 0 1 0 1 0011 Е 1 1 0 0 1 1 1 1 1 0 0 0 0 0010 Е 1 1 0 0 1 1 1 1 1 0 0 0 0 0110 Е 1 1 0 0 1 1 1 1 1 0 0 0 0 0111 Е 1 1 0 0 1 1 1 1 1 0 0 0 0 0101 Е 1 1 0 0 1 1 1 1 1 0 0 0 0 0100 S 1 1 0 1 1 1 ' 0 1 1 1 0 0 0 1100 S 1 1 0 1 1 1 0 1 1 1 0 0 0 1101 S 1 1 0 1 1 1 0 1 1 1 0 0 0 1111 W 0 0 1 1 0 0 1 1 0 0 0 1 1 1110 W 0 0 1 1 0 0 1 1 0 0 0 1 1 1010 W 0 0 1 1 0 0 1 1 0 0 0 1 1 1011 W 0 0 1 1 0 0 1 1 0 0 0 1 1 1001 W 0 0 1 1 0 0 1 1 0 0 0 1 1 1000 N 0 0 1 1 0 0 1 1 0 0 1 0 1
Индикатор 2 (правый) Код Знак а ь с d е f g h u p k t r 0000 — 0 0 0 0 0 0 0 0 0 0 0 0 0 0001 Е 1 1 0 0 1 1 1 1 1 0 0 0 0 0011 — 0 0 0 0 0 0 0 0 0 0 0 0 0 0010 Е 1 1 0 0 1 1 1 1 1 0 0 0 0 0110 — 0 0 0 0 0 0 0 0 0 0 0 0 0 0111 Е 1 1 0 0 1 1 1 1 1 0 0 0 0 0101 — 0 0 0 0 0 0 0 0 0 0 0 0 0 0100 Е 1 1 0 0 1 1 1 1 1 0 . 0 0 0 1100 — 0 0 0 0 0 0 0 0 0 0 0 0 0 1101 W 0 0 1 1 0 0 1 1 0 0 0 1 1 1111 — 0 0 0 0 0 0 0 0 0 0 0 0 0 1110 W 0 0 1 1 0 0 1 1 0 0 0 1 1 1010 — 0 0 0 0 0 0 0 0 0 0 0 0 0 1011 W 0 0 1 1 0 0 1 1 0 0 0 1 1 1001 — 0 0 0 0 0 0 0 0 0 0 0 0 0 1000 W 0 0 1 1 0 0 1 1 0 0 0 1 1 Осталось разобраться, как это реализовать на практике. Во-первых, заметим, что у нас 13 управляющих линий, так что желательно выбрать микросхему памяти, которая бы выдавала на выходе параллельный код с не меньшим числом разрядов, иначе таблицы придется разбивать на более мелкие части. Большинство микросхем памяти имеют байтовую организацию (например, 64кх8, где к обозначает килобиты, микросхемы памяти вообще обычно маркируются в килобитах), но есть и микросхемы, которые выдают параллельный двухбайтовый код, тогда выходных линцй получится 16. Таких микросхем понадобится также три. Объем памяти нам годится самый минимальный. Так как у нас всего 16 управляющих кодов, то объем этот по минимуму равен 16 • 13 = 208 бит, на самом же деле в любом случае он получится не менее чем 256 бит (13 выходных линий не бывает, только— 16). Заманчиво было бы решить дело одной микросхемой, но представляете, сколько у нее должно быть выводов? Таких микросхем, конечно, не делают. Поэтому выбор только такой — либо шесть по 8 бит (с соответствующим разбиением таблиц), либо три по 16. В принципе по объему нам достаточно микросхем типа той, что применялась еще в ILLIAC-IV, но в настоящее время микро
схем с таким маленьким объемом памяти не выпускают, и из имеющихся нам подойдет, скажем, ПЗУ с организацией 64кх16 типа АТ27С1024 фирмы At-mel. Это однократно программируемое КМОП ПЗУ с напряжением питания 5 В (к сожалению, насчет питания выбора особого не предлагают). Следует отметить, что в области микросхем памяти сложилась счастливая ситуация, когда все они, независимо от производителя и даже технологии, совпадают по выводам, разводка которых зависит только от организации матрицы (даже не от объема) и, соответственно, от применяемого корпуса (в данном случае — DIP-40). Для разных типов (RAM, ROM, EEPROM и т. д.) разводка различается в части выводов, управляющих процессом программирования, но можно спокойно заменять одну микросхему на другую (с той же организацией и, соответственно, в таком же корпусе) без переделки платы. Разводка выводов АТ27С1024 и порядок их соединения для нашего случая показаны на рис. 28.4. Разумеется, в нашем случае можно применять только те ЗУ, которые могут работать в статическом режиме. Сама по себе схема нашего дешифратора понятна — мы подсоединяем младшие четыре адресных разряда АО-АЗ к выходу нашего флюгера (у всех трех микросхем параллельно), а выходные разряды (младшие 13 из 16, от ОО до 012) осуществляют управление сегментами (характеристики выходного каскада соответствуют ТТЛ, потому придется подключать дополнительные ключи или буферные микросхемы типа ПУ4 или ЛН2 — в зависимости от типа индикаторов — с общим катодом или общим анодом). Рисовать я эту схему ввиду тривиальности не буду, зададимся лучше вопросом: а как же запрограммировать эти микросхемы? Если вы возьмете фирменную техническую документацию, то увидите, что алгоритм программирования не так уж и прост. Но вам не придется осуществлять его самим — любой универсальный программатор из имеющихся в продаже может программировать подобные микросхемы (любого типа и производителя). Конечно, на один раз программатор покупать накладно, но вы можете, предварительно проконсультировавшись, попросить запрограммировать вам их в той фирме, которая продаст вам микросхемы (или в любой другой подобной за небольшую плату). Обычно для этого требуется бинарный файл (т. ,е. файл, состоящий только из чисел в двоичном коде), составленный в соответствии с вашими таблицами. Как его составлять — отдельная история, для разных программаторов эта процедура может различаться, поэтому мы оставим этот вопрос, тем более что по ходу нашего дальнейшего повествования в этой книге универсальным программатором мы пользоваться почти не будем. Подобным образом, например, в серии 155 были реализованы дешифраторы двоичного кода в двоично-десятичный и обратно (ПР6 и ПР7), которые, как мы помним, представляют непростую задачу для обычной комбинационной логики. Рассмотрим, какие типы ПЗУ бывают вообще.
Масочные (PROM — от слова "Programmable" — программируемые) и однократно программируемые (ОТР— "One Time Programmable", АТ27С1024 относится именно к этому типу) ПЗУ как раз и дали название всему классу, потому что в них информация записывается действительно один раз и больше изменяться не может. Отличаются они тем, что масочные программируют прямо в процессе производства с помощью шаблона-маски (ясно, что это делается только, когда нужно выпустить пару десятков миллионов одинаковых ПЗУ), а в однократно программируемые информация может быть записана самим пользователем. Наше ПЗУ на диодах может быть отнесено, очевидно, к первому типу. ОТР (иногда еще называемые BPROM, от слова "bipolar") обычно представляют собой устройства с плавкими перемычками. Представьте себе наше диодное ПЗУ, в котором изначально во всех ячейках стоят диоды, один из выводов каждого из которых сделан из тоненькой проволочки. При программировании на нужную строку подают напряжение логического нуля, а непосредственно на нужный столбец (минуя резисторы) — специально повышенное напряжение питания. Тонкая перемычка при этом сгорает, и соответствующий диод исключается из матрицы. Ячейки, пропущенные в ходе подобной операции, будут определять записанный в ПЗУ код. ППЗУ (перепрограммируемые ПЗУ)— наиболее распространенный в настоящее время тип ПЗУ. На Западе они получили название EPROM — Erasable (стираемая) Programmable Read Only Memory. Исторически первым их типом, и еще недавно очень распространенным, было так называемое УФППЗУ, т. е. перепрограммируемое ПЗУ, стираемое ультрафиолетом, и на Западе именно за ним сохранилось аббревиатура EPROM. В таком ПЗУ информация находилась в виде заряда на конденсаторах, которые при обычных условиях могли сохраняться годами. Но стоило осветить такой кристалл ультрафиолетом через специально сделанное для этой цели кварцевое окошечко, как заряды рассасывались и информация стиралась. Освещать, впрочем, приходилось довольно долго (несколько минут). Естественно, заряды могли медленно рассасываться и при обычном освещении, поэтому после программирования окошечко рекомендовалось заклеивать. В настоящее время наиболее распространены микросхемы EEPROM (Electricaly Eraseable Programmable Read Only Memory) или, по-нашему — ЭСППЗУ (электрически стираемое ППЗУ). Кроме этих названий, к такому типу ПЗУ прочно приклеилось название Flash memory, которое по-русски даже не переводится, а так и звучит как флэш-память. Существует, как минимум, две разновидности такой памяти (на самом деле их больше, но с точки зрения интерфейса они делятся именно на два класса)— собственно EEPROM (иногда называемая еще NVRAM) и Flash EEPROM. Первая позволяет записывать/читать в произвольную ячейку памяти, правда, это происходит довольно медленно, единицы миллисекунд. Вторая стирается и програм
мируется очень быстро (flash — молния), но только сразу целыми блоками, первоначально даже приходилось очищать весь кристалл, а затем его заново программировать. Ясно, что каким бы ни было медленным — в разумных, конечно, пределах— перепрограммирование одного отдельно взятого бита, сложности, подстерегающие разработчика при необходимости записывать содержимое в буфер, стирать всю память, менять в буфере необходимый бит и затем записывать все заново, не всегда были оправданны. Дело усугублялось двумя обстоятельствами: во-первых, для программирования/стирания требовалось повышенное напряжение, во-вторых, число циклов перезаписи обычно было ограничено величиной порядка 1000 из-за деградации полевых транзисторов на кристалле. К счастью, в настоящее время пользователь может почти не заморачивать себе голову этими трудностями, именно поэтому любую память такого рода называют одинаково — флэшью. ПЗУ, с которыми придется иметь дело радиолюбителю (обычно это память программ и пользовательская часть EEPROM в микроконтроллерах), позволяют программировать произвольную ячейку в один прием при одном напряжении питания 5 В, причем прямо в системе без необходимости извлечения. А если кто хочет понять, как эти типы различать — то обычно устройства большой емкости (128 кбайт и более) с параллельным (например, побайтным) интерфейсом — это именно флэш, а менее емкие чипы (64 кбайт и менее) с последовательным интерфейсом — это чистая EEPROM. Но что там на самом деле происходит — один черт разберет, потому что ввиду востребованности продукта, особенно в связи с распространением всякой цифровой фотовидеотехники, новые технологии появляются каждый день. Одной из самых распространенных областей применения ПЗУ (после флэш-карточек для фотоаппаратов или МРЗ-плееров и SIM-карт для мобильных телефонов) является изготовление микросхем, содержащих BIOS (basic input/ output system, базовую систему ввода-вывода) компьютеров. В разное время для этого дела использовали все, вероятно, технологии, включая масочное ПЗУ и УФППЗУ. Сейчас остановились на флэши, что позволяет обновлять BIOS прямо в системе. Вы можете задать вопрос — почему же для пользовательских установок (например, даты и времени и установок BIOS) традиционно используют энергозависимую память в комплекте с резервной батарейкой? Во-первых, потому что там идут часы реального времени, для которых батарейка нужна в любом случае. Во-вторых, потому что адреса этих установок к BIOS не относятся, а с самого начала хранились в автономной микросхеме (в IBM PC АТ это была микросхема MCI46818, которая совмещала в себе функции часов и небольшого ЗУ). Теперь эти функции интегрированы в чипсет. Отметим, что такие вещи, как, скажем, обычное энергозависимое статическое ЗУ, но со встроенной прямо в чип литиевой батарейкой (такие модели традиционно выпускает фирма Dallas, ныне объединенная с MAXIM), также иногда попадают под название flash memory.
RAM Традиционное название энергозависимых типов памяти, как и в случае ROM, следует признать довольно неудачным. RAM значит Random Access Memory, т. е. "память с произвольным доступом", по-русски это звучит как ЗУПВ — "запоминающее устройство с произвольной выборкой". При чем тут произвольная выборка, неясно, когда главным признаком класса является то, что при выключении питания память стирается. EEPROM, к примеру, тоже позволяет произвольную выборку и при записи, и при чтении. Но так сложилось исторически, и не нам нарушать традиции. Устройства RAM делятся на две больших разновидности — статические и динамические ЗУПВ. Простейшее статическое ЗУПВ (SRAM, от слова "static") — это обычный триггер. И "защелки" из микросхемы 561ТМЗ, и регистры типа 561ИР2, и даже счетчик с предзагрузкой типа ИЕ11 (см. главу 24) — все это статические ЗУПВ с различными дополнительными функциями или без них. Регистры и доступная пользователю область ОЗУ (оперативного запоминающего устройства) микроконтроллеров — все они также относятся к классу SRAM, и мы с ними познакомимся позже. По счастью, с динамическими разновидностями RAM (DRAM) нам в схемотехническом плане иметь дело не придется, а если вам все же приспичит, то для этого нужно читать совсем другую литературу. Но кратко остановимся на этом ввиду того, что если не строить, то использовать схемы на основе DRAM приходится ежедневно. Вся основная компьютерная память всегда построена на DRAM, так было сделано еще в самом первом IBM PC и даже до него. Почему? А потому что динамические ЗУ — самый простой, а потому самый дешевый, но одновременно и самый емкий и самый "скорострельный" тип памяти. Ей-богу, за это стоит пожертвовать некоторыми неудобствами. Сравните — модуль DIMM объемом в 256 Мбайт на момент, когда пишутся эти строки, стоит порядка $50, а такая же по объему флэш-карточка— раза в два дороже при несравнимых скоростях чтения/записи, которые различаются как минимум на два порядка. К слову, самым дешевым устройством ЗУ в расчете на единицу емкости уже давно являются жесткие диски, в которых стоимость 1 Мбайта на данный момент примерно в сто раз ниже, чем у указанных выше типов, но быстродействие, естественно, оставляет желать много лучшего. Вернемся к динамическим ЗУПВ. Что же в них такого неудобного? Дело в том, что DRAM хранят информацию подобно УФППЗУ на конденсаторах, но даже при включенном питании быстро ее теряют— менее чем за секунду. Поэтому каждые несколько миллисекунд на такую память приходится подавать т. н. регенерирующий импульс, который восстанавливает информацию в ячейках, где имеется заряд. Это неудобно, но что поделаешь! В канониче
ской структуре IBM PC для этого был предусмотрен специальный счетчик-таймер (точнее, один из трех каналов имевшегося в системе счетчика-таймера i8253), который производил регенерацию памяти каждые 2 мс. Но это не очень хороший способ, т. к. в течение регенерации обращение к памяти запрещено, и программе приходится ждать. В настоящее время за регенерацией следит специальный контроллер памяти, который синхронизирует циклы регенерации и обращения к памяти так, чтобы они не мешали друг другу. Современные модули памяти DRAM делятся также на две разновидности: уже устаревшую просто DRAM (модули SIMM) и более продвинутую синхронную SDRAM (модули DIMM). Есть и другие разновидности DRAM, которые, как и типы флэш-памяти, плодятся подобно грибам в дождливое лето. Интересно, что самую первую память на конденсаторах с регенерацией применил в своей машине АВС еще Дж. Анатасов, которого принято считать создателем первого электронного компьютера (1941 г.). Сейчас же прогресс технологий достиг такого уровня, что в модули памяти для ПК перестали встраивать специальные средства контроля типа битов четности (см. главу 22) ввиду ненадобности, проще и дешевле осуществлять сквозной контроль на производстве. К тому же проверка на четность в старых моделях материнских плат все равно часто либо вообще отсутствовала, либо была фиктивной, "для видимости". Но для более ответственных применений, типа серверов, применяют микросхемы DIMM, содержащие средства контроля ошибок (метод ЕСС). Отметим, что при использовании современных дорогих быстродействующих модулей памяти успех в равной степени зависит от самой памяти и от применяемого чипсета, если это дешевая материнская плата, то разницу между типами памяти можно и не заметить. В то же время сама целесообразность этого мероприятия — использования супербыстродействующих процессоров, чипсетов и памяти — в подавляющем большинстве случаев весьма сомнительна, т. к. современные компьютеры среднего уровня для традиционного применения уже имеют более чем достаточное быстродействие. Если заводить речь об имеющихся недостатках, то они кроются, в первую очередь, в интерфейсных устройствах, в линиях передач данных, в непомерном тепловыделении, а отнюдь не в собственно быстродействии компьютеров. А для тех применений, которые хотелось бы увидеть (действительно живая натуральная графика, трехмерные изображения и т. п.) этого самого быстродействия не хватает настолько катастрофически, что путь повышения тактовых частот еще на 5 или даже 10?/о с каждой новой моделью представляется тупиковым — нужны совершенно иные принципы. Интересно, как будут восприняты эти строки через, скажем, 10 лет?
Глава 29 Как работает микропроцессор. Анатомия микропроцессора Людовик XIV поглотил все мелкие созвездия своего двора, затмив их своим ослепительным сиянием. А. Дюма, "Три мушкетера" В предыдущей главе было сказано, что любой алгоритм можно реализовать через память. Но память сама по себе ничего не делает — нужно некое устройство, которое бы занималось именно реализацией этого алгоритма шаг за шагом по времени. В примере с дешифратором-преобразователем десятичного кода в семисегментный роль такого устройства играет источник входного кода. А в общем случае? Так возникла идея процессора— универсального логического устройства, которое, руководствуясь командами, поступающими из памяти, осуществляло бы нужные действия. Хочется отметить, что в музыкальных автоматах, механических счетных машинах или, скажем, в ткацких станках Жаккарда (начало XIX века, они явились первым в истории примером станков с ЧПУ) процессора как такового не было — или, если угодно, все устройство можно считать специализированным процессором. Особенностью всех этих устройств было то, что они спроектированы для производства совершенно определенных действий, в то время как процессор — универсальная вещь. В аналитической машине Бэббиджа, которая была настоящим компьютером, процессор уже был, как и в первых ЭВМ на дискретных элементах, но по-настоящему этот термин стал ключевым, когда выделение единицы под названием "процессор" на основе функционального признака совпало с выделением по признаку физическому — в виде отдельной микросхемы. Первоначально корпорация Intel не помышляла ни о каких процессорах и занималась разработкой и продажами микросхем памяти, на которые тогда как раз начиналось увеличение спроса. В 1969 г. в Intel появились несколько человек из Busicom — молодой японской компании, занимающейся производством калькуляторов. Им требовался набор из 12 интегральных схем в качестве основного элемента нового дешевого настольного калькулятора. Проект был раз
работай Масатоши Шима, который и представлял японскую сторону. Тед Хофф (Marcian Е. "Ted" Hoff, р. 1937), руководитель отдела, занимавшегося разработкой применений для продукции Intel, ознакомившись с проектом, понял, что вместо того, чтобы создать калькулятор с некоторыми возможностями программирования, можно сделать наоборот, компьютер, программируемый для работы в качестве калькулятора. Развивая идею, в течение осени 1969 г. Хофф определился с архитектурой будущего микропроцессора. Весной в отдел Хоффа пришел (все из той же уже известной нам Fairchild) новый сотрудник Фредерик Фэггин (Federico Faggin), который и придумал название для всей системы: "семейство 4000". Семейство состояло из четырех 16-выводных микросхем: 4001 содержал ROM на 2 Кбайта; 4002 содержал RAM с 4-битным выходным портом для загрузки программ; 4003 представлял собой 10-битный расширитель ввода-вывода с последовательным вводом и параллельным выводом для связи с клавиатурой, индикатором и другими внешними устройствами; наконец 4004 был 4-битным ЦПУ (центральным процессорным устройством). Он состоял из 2300 транзисторов и работал с тактовой частотой 108 кГц. 15 ноября 1971 г. было объявлено о создании первого микропроцессора. Busicom приобрела разработку, заплатив Intel $60 000. Но в Intel решили возвратить Busicom эти деньги, чтобы вернуть себе права на микропроцессор. 14004 обладал вычислительной мощностью, сравнимой с первым электронным компьютером ENIAC. Свое первое практическое применение 4004-й нашел в таких системах, как устройства управления дорожными светофорами и анализаторы крови. Он использован в бортовой аппаратуре межпланетного зонда Pioneer-Ю, который поставил рекорд долгожительства среди подобных аппаратов: он был запущен NASA в 1972 г., а к 1 сентября 2001 г. Pioneer-Ю удалился от Земли на 11,78 млрд км и все еще работал. Рис. 29.1. Микропроцессор 4004 Для того чтобы понять, как работает микропроцессор, зададим себе вопрос — а как он должен работать? Есть теория (в основном созданная постфактум: после того как первые ЭВМ были уже построены и функционировали).
которая указывает, как именно строить алгоритмы и что процессор в соответствии с этим должен делать. Мы, естественно, углубляться в это не будем, просто констатируем, что любой алгоритм есть последовательность неких действий, записанных в виде набора последовательно выполняемых команд (операторов). При этом среди таких команд могут встречаться команды перехода, которые в некоторых случаях нарушают исходную последовательность выполнения операторов строго друг за другом. Среди прочих должны быть также команды ввода и вывода данных (программа должна как-то общаться с внешним миром?), а также команды выполнения арифметических и логических операций. Результаты выполнения одних команд должны быть доступны последующим командам. Команды должны где-то храниться, поэтому неотъемлемой частью всей системы должно быть устройство памяти. Где-то надо складывать и данные, как исходные, так и результаты работы программы, поэтому должно быть устройство памяти данных. Так как команды и данные, в конечном счете, все равно есть числа, то память может быть общая, только надо не забывать, где именно у нас команды, а где — данные. Это есть один из упомянутых в прошлой главе принципов фон Неймана, хотя и в микроконтроллерах, скажем, традиционно используют не фоннеймановскую, а так называемую гарвардскую архитектуру, когда память данных и программ разделены (это разделение, впрочем, может нарушаться в обе стороны). В соответствии со сказанным основной цикл работы процессора должен быть таким: выборка очередной команды (из памяти), если необходимо— выборка исходных данных для нее, выполнение команды, размещение результатов в памяти (опять же если это необходимо). Вся работа в этом цикле должна происходить автоматически по командам некоторого устройства управления, содержащего тактовый генератор — системные часы, по которым все синхронизируется. Кроме того, где-то это все должно происходить — складирование данных, кода команды, выполнение действий и т. п., так что процессор должен содержать некий набор регистров, определенным образом связанных между собой, а также с устройством управления и АЛУ, которое неизбежно должно присутствовать. Заметим, что команды вместе с исходными данными, вообще говоря, могут быть неодинаковой длины. Так, часто используемая и присутствующая во всех микропроцессорных системах команда запрета внешних прерываний (т. е. реакции на события от внешних устройств), не требует указания каких-либо адресов или других данных для своего выполнения — это просто число (в тех системах, с которыми мы будем иметь дело, — однобайтовое число). Естественно, цикл работы при этом будет максимально упрощенным: выборка команды, ее выполнение и все— можно приступать к выполнению еле-
дующей команды. Другой пример— команда, например, сдвига разрядов некоторого числа (что эквивалентно, как мы знаем из главы 19, умножению или делению на два в зависимости от направления сдвига). Эта команда (сама по себе — такое же число) требует загрузки операнда — адреса регистра, в котором хранится число, подлежащее сдвигу (в некоторых системах данная операция может быть упрощена, если заранее указать, что все подобные операции выполняются в одном и том же регистре). То есть процессор теперь должен загрузить команду, определить, что ей нужен операнд, загрузить этот операнд (адрес регистра, который, как правило, хранится в памяти сразу после собственно кода команды), потом только проделать нужные действия. Еще пример — сложение чисел, при котором нужно уже два операнда, адреса первого и второго слагаемых. Опять же в некоторых системах это может быть упрощено, если слагаемые могут находиться только в определенных регистрах. Но даже и в таких системах есть команда обмена с памятью, которая, как ни крути, требует указания адреса в памяти. В таких случаях возникает искушение сделать все команды одинаковой длины (например, по три байта), чтобы не тратить драгоценное процессорное время на определение типа команды и последующую дополнительную загрузку, а считывать сразу три байта, а там уже разбираться, все они нужны или нет. Легко понять, что время-то при этом экономится, а память — не очень. В микроконтроллерах AVR эта задача решена похожим способом — там все команды являются 16-разрядными словами, но сам код команды имеет переменную длину; другую часть этого слова занимают операнды. Правда, особо памятью там не разбрасываются, и все разряды обычно нужны для дела. Усложнение устройства управления позволило за один такт считывать команду и выполнять ее. Но это не касается обмена с памятью, который в таких случаях должен, как правило, осуществляться отдельно, и занимает больше тактов, чем операции с регистрами. Впрочем, в разных системах устроено по-разному, скажем, в популярном до сих пор процессоре 8051 команда обычно занимает 12 тактов, в PIC-процессорах — четыре, а в микроконтроллерах Atmel AVR — всего один. Можно, конечно, просто завести 51-й процессор от тактовой частоты 24 МГц, PIC— от 8 МГц, a AVR— от 2 МГц и считать, что они работают одинаково быстро... Познакомившись теперь с тем, как процессор выполняет команды, мы можем нарисовать блок-схему типичного микропроцессора (МП). Она показана на рис. 29.2. Сразу отметим, что мы включили в состав процессора память программ, которая у ПК-процессоров находится всегда отдельно — сами знаете, программы какого объема бывают в персональных компьютерах. В то же время в большинстве современных микроконтроллеров ПЗУ программ входит в состав чипа и обычно составляет от 1 до 8 кбайт, чего для подавляющего большинства применений вполне достаточно, а если вдруг не хва
тит— всегда можно подключить внешнюю память. А вот внутреннее ОЗУ в том или ином количестве имеется во всех современных процессорах, у процессоров для ПК это называется кэш-памятью (иногда— нескольких уровней). Типичный размер ОЗУ у микроконтроллеров — от 256 байт до 1 Кбайта. Рис. 29.2. Блок-схема типичного микропроцессора Главное устройство в МП, которое связывает все узлы в единую систему — внутренняя шина данных. По ней все устройства обмениваются сигналами. Например, если МП требуется обратиться к внешней памяти, то при исполнении соответствующей команды на шину данных выставляется нужный адрес, от устройства управления поступает через нее же запрос на обращение к нужным портам ввода/вывода. Если порты готовы, адрес поступает на выходы портов, затем принимающий порт выставляет на шину данных принятые из внешней памяти данные, которые загружаются в нужный регистр, после чего шина данных свободна. Для того чтобы все устройства не мешали
друг другу, все это строго синхронизировано, при этом каждое устройство имеет, во-первых, собственный адрес, во-вторых, может находиться в трех состояниях— работать на ввод, на вывод или находиться в третьем состоянии, не мешая другим работать. Другой вариант организации общей шины, не требующий третьего состояния — так называемое "монтажное ИЛИ", когда активным является только низкий уровень (см. главу 20, рис. 20.3). Микроконтроллер (МК) отличается от микропроцессора вообще тем, что он предназначен для управления другими устройствами, и поэтому имеет встроенную развитую систему ввода-вывода, но относительно более слабое АЛУ. Большинство микроконтроллеров — 8-разрядные, т. е. они оперируют данными в один байт, хотя есть и 16-разрядные типы. Если же необходимо увеличить разрядность, как при операциях умножения и деления, то приходится писать специальные подпрограммы с участием нескольких регистров. Разрядность регистров как раз и определяет разрядность МП, которая у ПК-процессоров, как известно, может достигать 32 и даже 64 разрядов. Интересная штука получилась с процессором i8086, который послужил, как известно, прототипом всех современных МП для Wintel-компьютеров. Разработчики IBM PC в 1981 г. остановились сначала на восьмиразрядном 18088. К тому времени Intel уже год как выпускала и 16-разрядную модификацию под названием 8086, но то ли это показалось излишеством, то ли распространенные тогда повсеместно восьмиразрядные системы просто были роднее. Так что на самом деле прототипом-то является он, а на 8086 выпускались только некоторые IBM-совместимые клоны. Однако это большой роли не играет, потому что разницы между 8086 и 8088 практически никакой нет— 16-разрядной у 8086 является только внутренняя шина данных, а по внешним выводам и системе команд они полностью совместимы. А вот данные, с которыми манипулировали операционные системы DOS и Windows 3.x, были 16-разрядными, и этому требованию отвечал 286 процессор. Число 65 536, естественно, маловато для практики, но первым 32-разрядным процессором стал только 386-й (любопытно, что при этом сами ОС оставались 16-разрядными довольно долго). С тех пор на этой величине ПК фактически и застряли (232 = 4 294 967 296, и большее целое число требуется очень нечасто). 64-разрядные процессоры (например, Intel Itanium) пока еще используются исключительно в серверах, но с удешевлением МП и чипсетов, несомненно, в конце концов, окажутся у нас на столе. Только не совсем ясно — а надо ли? Если вернуться к микроконтроллерам, то в них 8-разрядные системы занимают, пожалуй, большую долю рынка. Число разрядов не имеет отношения к числу адресных линий, которое, в принципе, должно быть чем больше, тем лучше — оно определяет количество внешней памяти, которое может адресовать процессор. Обычная ширина
адресной линии для 8-разрядных МК— 16 разрядов, т. е. количество непосредственно адресуемой внешней памяти (адресное пространство) может максимально составлять 64 Кбайт. Впрочем, большинство МК позволяют при нужде обойти это ограничение. А как вообще начинается работа МП при включении питания? Очень просто — большинство МП обращаются к ячейке номер 0 в памяти программ (последняя обычно организована так, что внутренняя и внешняя память имеют общее адресное пространство, в котором младшие адреса занимает внутренняя память, а по ее истечении начинается память внешняя, так что нулевая ячейка физически имеется всегда). Что именно бывает записано в этой ячейке — мы увидим далее, а сейчас укажем только на одно, но важное исключение. У микропроцессора 8088 и 8086 адресное пространство составляло 1 Мбайт (20 адресных линий), и разработчики заставили его после инициализации обращаться по адресу, расположенному за 16 байт до конца этого пространства: а именно по адресу FFFFOh, который был зарезервирован под BIOS. Зачем это было сделано — понятно, а именно затем, чтобы не отъедать BIOSom драгоценную основную память. На то, что в ПК будут устанавливать весь мегабайт полностью, они и не рассчитывали, поэтому, например, под видеоадаптер также отводились адреса ближе к концу адресного пространства. В МК все проще — обычно внутренняя и внешняя память программ имеют одно и то же адресное пространство, так что первые адреса внешней памяти "пропадают". Точно так же там обстоит дело с памятью данных (в ПК, напомним, они объединены) — регистры, порты ввода-вывода, внутренняя и внешняя SRAM имеют общую адресацию. А вот внутренняя EEPROM, если она имеется, имеет отдельное адресное пространство, и доступ к ней осуществляется через порты. Несколько слов о счетчике команд. Он автоматически устанавливается на ноль в начале работы, что соответствует начальному адресу памяти, и автоматически же инкременируется (т. е. увеличивается на единицу) с каждой выполненной командой. (В некоторых системах он инкременируется не на единицу, а на число байт, содержащихся в команде, но для нас это не существенно). Если по ходу дела порядок команд нарушается, например, встречается команда перехода (ветвления), то в счетчик загружается соответствующий номер команды (или, соответственно, байта) от начала программы. К счастью, нам самим фактически не придется иметь дело со счетчиком команд, потому что все указания на этот счет содержатся в самой команде и процессор все делает автоматически. Если подробности внутреннего функционирования МП нас волнуют не очень (достаточно иметь общее представление о структуре, чтобы понимать, что именно происходит при выполнении команд), то обмен с внешней средой нас как раз интересует во всех деталях. Для этого служат порты ввода/вывода,
которые на схеме рис. 29.2 показаны в количестве трех — А, В и С. В разных МП их может быть и больше, и меньше, еще важнее число выводов этих портов, которое чаще всего совпадает с разрядностью процессора (но не всегда, как это было у 8086). Если мы заставим эти порты общаться с внешней памятью, то на двух из них можно выставить 16-разрядный адрес, а на оставшемся — принимать данные. А как быть, если портов два или вообще один? (К примеру, в микроконтроллере AVR 2313 портов формально два, но один усеченный, так что общее число линий составляет 15.) Для этого все порты в МП всегда двунаправленные. Скажем, если портов два, то можно сначала выставить адрес, а затем переключить их на вход и принимать данные. Естественно, для этого порты должны позволять работу на общую шину — т. е. либо иметь третье состояние, либо выход с общим коллектором для объединения в Монтажное ИЛИ. Варианты для обоих случаев организации выходной линии порта показаны на рис. 29.3, где приведены упрощенные схемы выходных линий микроконтроллеров (МК) семейства 8048 — широко использовавшегося ранее (например, он был выбран в качестве контроллера клавиатуры в IBM PC) предшественника суперпопулярного МК 8051. В самом 8051 построение портов несколько сложнее (в частности, вместо резистора там полевой транзистор), но для уяснения принципов работы это несущественно. Рис. 29.3. Упрощенные схемы портов ввода/вывода МК 8048: а — портов 1 и 2; б — порта 0 По первому варианту (рис. 29.3, а) в МК 8048 построены порты 1, 2 (всего там три порта). Когда в порт производится запись, то логический уровень поступает с прямого выхода защелки на статическом D-триггере на вход схемы И, а с инверсного— на затвор транзистора VT2. Если этот уровень равен лог. 0, то транзистор VT1 заперт, a VT2 открыт, на выходе также лог. 0. Если уровень равен лог. 1, то на время действия импульса "Запись" транзи
стор VT1 открывается, а транзистор VT2 запирается (они одинаковой полярности). На самом деле VT1 должен находиться в "непонятном" состоянии, т. к. при запертом VT2 неподключенный выход фактически "висит в воздухе". Если на выходе присутствует емкость (а она всегда имеется в виде распределенной емкости проводников и емкости входов других компонентов), то через VT1 протекает достаточно большой ток заряда этой емкости, позволяющий сформировать хороший фронт перехода из 0 в 1. Как только импульс "Запись" заканчивается, оба транзистора отключаются, и лог. 1 на выходе поддерживается резистором R1. Выходное сопротивление открытого транзистора VT1 примерно 5 кОм, а резистора — 50 кОм. Любое другое устройство, подключенное к этой шине, при работе на выход может лишь либо поддержать лог. 1, включив свой подобный резистор параллельно R1, либо занять линию своим логическим нулем — это, как видите, и есть схема Монтажное ИЛИ. При работе на вход состояние линии просто считывается со входного буфера (элемент "В" на рис. 29.3, а). Второй же вариант, по которому устроен порт 0, (рис. 29.3, б) есть обычный выходной каскад КМОП с третьим состоянием, т. е. такой порт может работать на выход, только полностью занимая линию, остальные подключенные к линии устройства при этом должны смиренно внимать монополисту, воспринимая сигналы. Это обычно не создает особых трудностей и схемотехнически даже предпочтительно (ввиду симметрии выходных сигналов и высокого сопротивления для входных). Единственная сложность возникает при сопряжении такого порта с линией, работающей по первому варианту, т. к. при лог. 1 на выходе могут возникнуть электрические конфликты, если кто-то попытается выдать в линию лог. 0. Для обеспечения работы трехстабильного порта по схеме "монтажное ИЛИ" (в том числе для их параллельной работы) применяют хитрый прием: всю линию "подтягивают" к напряжению питания с помощью внешнего резистора (во многих МК существует встроенный отключаемый резистор, установленный аналогично R1 в схеме рис. 29.3, а), и нормальное состояние всех участвующих трехстабильных портов — работа на вход в третьем состоянии, тогда на линии всегда будет лог. 1. На выход же линию переключают только, когда надо выдать лог. 0, в этом случае, даже при одновременной активности нескольких портов, конфликтов не возникнет. Многих устройств, имеющихся в большинстве современных микропроцессоров, мы не показали. Для ПК-процессоров важным узлом является аппаратный блок производства операций с плавающей точкой — т. е. с действительными числами, который иногда оказывает решающее влияние на быстродействие всей системы. У микроконтроллеров подобные весьма сложные узлы обычно отсутствуют (кроме специализированных типов), зато имеются встроенные
таймеры, последовательные порты, встроенный контроллер прерываний, АЦП и другие полезные дополнения, отчего МК еще часто называют микро-ЭВМ или "computer-on-chip". Чип МК является полнофункциональной системой, в принципе не требующей для своей работы других компонентов, кроме некоторых навесных деталей типа кварцевого резонатора. Для ПК-процессоров это совсем не так. они "заточены" под выполнение арифметико-логических операций, а весь обмен с внешней средой, включая память, возложен на окружение, называемое чипсетом. Потому чипсет и платы расширения часто играют решающую роль в функциональности конкретного ПК, зато такая система является более гибкой и быстродействующей. Самый главный вопрос — как же программировать микропроцессор? К счастью, эта процедура в настоящее время значительно облегчена, и мы познакомимся с ней в главе 31. Но сначала рассмотрим более подробно устройство одного из самых распространенных типов микроконтроллеров — Atmel AVR.
Глава 30 Знакомство с микроконтроллером. Микроконтроллер Atmel AVR 8515 Кроме утреннего приема у короля и у кардинала, в Париже происходило больше двухсот таких "утренних приемов", пользовавшихся особым вниманием. А. Дюма, "Три мушкетера " Программирование и схемотехника, как и, к примеру, вождение автомобиля, относятся к искусствам, которые могут быть постигнуты только на практике. Подобно тому как вождению можно учиться на любом автомобиле, так и постигать премудрости обращения с микропроцессорами можно на примере любого процессора. При этом еще лет десять назад я бы обязательно выбрал в качестве учебной платформы процессор х86, т. к. программирование на ассемблере для ПК не замутнено различными практическими сложностями, которые можно научиться преодолевать позднее, уже умея писать сами программы. Однако с тех пор обстоятельства изменились: во-первых, ассемблер для платформы Wintel почти полностью потерял свою практическую актуальность, и конкретные знания, которые вы можете приобрести, останутся невостребованными, а учиться, как я неоднократно повторял в этой книге, следует по возможности на практически значимых примерах. Во-вторых, процесс программирования контроллеров теперь, благодаря наличию флэш-памяти программ и удобному интерфейсу для программирования, значительно облегчен. Теперь вам не нужно для малейшего исправления программы вынимать микросхему из панельки, долго стирать ее под кварцевой лампой, перепрограммировать, вставлять обратно, рискуя повредить тонкие ножки DIP-корпуса или перепутать полярность питания. Так что будем учиться на живом примере, ъ качестве которого выберем Atmel AVR— модель 8515, которая занимает среднее положение в продуктовой линейке фирмы Atmel. AT9OS8515— так полностью называется данный контроллер, чем вводит пользователей в некоторое заблуждение, ибо букву "S" хочется прочесть как
обозначающую ТТЛ-логику на диодах Шоттки, в то время как на самом деле контроллеры AVR сделаны по КМОП-технологии. Что, впрочем, имеет небольшое практическое значение, если вы внимательно читаете характеристики и руководствуетесь именно ими. Но и "общие соображения" тоже не помешают — так, можно предположить, что выходные порты имеют симметричный выход, будут спокойно переносить к. з., ограничивая ток, а при работе на вход сопротивление будет высоким. Все это действительно так, ключевые электрические характеристики контроллеров вы можете узнать из приложения 4. Все контроллеры семейства AVR имеют одинаковое ядро, к которому добавляются те или иные "навороты", так, контроллер 2313 имеет меньше портов (всего 2, причем один "недоделанный" — но и корпус у этой модели всего с 20-выводами), а также на один таймер меньше некоторых других моделей. Модель 8535 есть почти тот же самый 8515, к которому добавлено восьмиканальное 10-разрядное АЦП (разводка выводов, в том числе питания, несмотря на идентичный 40-выводной корпус, у него другая). Наиболее "навороченным" является Atmegal28, но в радиолюбительской практике я бы не рекомендовал им пользоваться без крайней нужды, т. к. выпускается он только в 64-выводном планарном корпусе с шагом 1,27 мм между выводами, и развести под него плату вручную практически невозможно. Вся линейка, естественно, непрерывно обновляется (хотя, к счастью, не так часто, как это случается в мире ПК-процессоров). AT90S8515, наряду с некоторыми другими AVR-контроллерами, рассматриваемыми в этой книге, относится к семейству "AVR Classic", которое постепенно выходит из употребления, и заменяется на семейства "AVR Mega" и "AVR Tiny". Отличаются новые контроллеры в основном возможностью эксплуатации при повышенной частоте и/или сниженном напряжении питания, а также некоторыми дополнительными командами (например, в "mega" — аппаратного умножения). Однако новые микроконтроллеры с соответствующими названиями (Например, ATmega8515) совместимы со старыми по выводам и обратно совместимы по программному коду— т. е. все наработанное для "классики" можно применять для новых контроллеров без изменения. Если в мире ПК долго соблюдавшаяся совместимость программного обеспечения "сверху вниз" (когда ранее разработанные программы "идут" и на модернизированном оборудовании более позднего выпуска) была, в общем, удобной прихотью производителей, то в мире микроконтроллеров это, как и электрическая совместимость, есть обязательный закон. Так, и сейчас программы, разработанные для контроллера i8051 в начале 80-х годов XX века, без переделок можно запускать на современной модели AT89S51 производства той же Atmel или Philips.
8 о г* (ч m v 3 £ § § I 3 s tn tn 2 tn о Il a i $ I I3 tn Рис- 30-1. Структура AT90S8515
На рис. 30.1 показана внутренняя структура МК 8515. Нумерация выводов приведена для корпуса D1P-40, кроме этого, процессор выпускается в 44-выводных корпусах PLCC и TQFP (рис. 12.6). Даже короткого взгляда на рисунок достаточно, чтобы понять, что для подробного рассмотрения структуры этого МК здесь просто не хватит места. Поэтому мы не будем переписывать фирменное описание (с некоторыми подробностями мы познакомимся по ходу дальнейшего изложения), а рассмотрим только некоторые ключевые узлы этой структуры и особенности их функционирования. Начнем с портов. В этой модели их четыре, и если подсчитать выводы (8 • 4 = 32), прибавить к ним обязательные выводы питания (контакты 20 и 40), тактового генератора (контакты 18 и 19) и вывод Reset (контакт 9), также присутствующий во всех моделях МК без исключения, то получится, что на все остальное остается три вывода. Это, конечно, недостаточно, поэтому почти все выводы портов, кроме своей основной функции (двунаправленного ввода/вывода), несут также и дополнительную. А как они (функции) разбираются между собой? А никак. Никакого специального переключения выводов портов не требуется, просто, если вы, к примеру, в своей программе инициализируете последовательный порт UART, то соответствующие выводы порта D (PD0 и PD1, выводы 10 и И микросхемы) будут работать именно в альтернативной функции как ввод и вывод UART. При этом считается, что вы — разумный человек и иных устройств, кроме драйвера RS232, туда подключать не будете (хотя особо ничего страшного и не случится, если подключите, просто система не будет работать как надо). Аналогично со всеми остальными альтернативными функциями — они начинают работать, когда инициализированы соответствующие устройства МК в программе. По умолчанию все дополнительные устройства отключены, а порты работают на вход, причем находятся в состоянии с высоким импедансом (т. е. высоким входным сопротивлением). Работа на выход требует специального указания, для чего в программе нужно установить соответствующий нужному выводу бит в регистре направления данных (обозначается DDRx, где х — буква, обозначающая конкретный порт). Если бит сброшен (т. е. равен лог. 0), то вывод работает на вход (это и есть установка по умолчанию), если установлен (т. е. равен лог. 1) — то на выход. Причем для установки выхода в состояние 1 нужно установить соответствующий бит в регистре данных порта (обозначается PORTx), а для установки в 0 — сбросить этот бит, т. е. регистр данных фактически есть просто выходной буфер, все, что в него записывается, тут же оказывается на выходе. Но если установить вывод порта на вход (т. е. записать в регистр направления лог. 0), как это сделано по умолчанию, то регистр данных будет играть несколько иную роль — установка его в 0 (она такая опять же по умолчанию) означает, что вход находится
в третьем состоянии с высоким сопротивлением, а установка в 1 подключит к выводу "подтягивающий" pull-up-резистор сопротивлением около 35 кОм (подобно рис. 29.3, я; вернитесь в главе 29 к описанию работы подобного выходного каскада на "общую шину" — и вы поймете, зачем он нужен). Сразу здесь и отметим, что встроенный pull-up-резистор можно употреблять при работе на "общую шину" в пределах одной платы, но в большинстве случаев, когда требуется такой резистор (например, если вы подключаете ко входу кнопку с двумя выводами, которая коммутируется на "землю", или при работе на "общую шину" с удаленными устройствами), лучше устанавливать дополнительный внешний резистор параллельно этому внутреннему, с сопротивлением от 1 до 5 кОм. Для "общей шины" достаточно одного такого резистора на всю шину, естественно. В ответственных устройствах, во-первых, такой резистор следует устанавливать на выводе 9 (Reset), во-вторых, если выводы 6, 7 и 8, которые используются для программирования, подключены к программирующему разъему (особенно, если они используются в вашем устройстве в качестве входных, см. главу ЗГ), то их также следует "подтягивать" к напряжению питания таким резистором. Этих рекомендаций вы не найдете в технической документации, но жизнь показала необходимость их выполнения из-за того, что сопротивление "родного" резистора слишком велико для того, чтобы электромагнитные помехи ("наводки") на нем эффективно "садились", и у вас могут происходить ложные срабатывания, перезапуски системы, а при очень мощных помехах— даже порча программы в памяти программ из-за наводок на выводы программирования и Reset. Это, конечно, не касается ситуации, когда вход порта подсоединен к низкоомному выходу другой микросхемы или, скажем, транзисторного ключа, т. к. у них на выходе всегда имеется какой-то сигнал, и резистор тогда не требуется вообще, лучше всего ставить вывод микросхемы в третье состояние. Не забывайте только об этих резисторах в ситуации, когда используете один из режимов экономии питания — все выводы тогда следует установить в состояние, при котором через эти резисторы не протекает тока. Добавим еще, что, как вы, очевидно, уже поняли из изложенного, выводы портов в достаточной степени автономны, и их режим может устанавливаться независимо друг от друга. Кстати, а как прочесть состояние порта, если он находится в состоянии работы на вход? Возникает искушение прочесть данные из регистра данных PORTx, но это ничего не даст— вы прочтете только то, что там записано вами же. А для чтения того, что действительно имеется на входе (непосредственно на выводе микросхемы) предусмотрена другая возможность. Чтение происходит из буферного элемента, который в первом приближении соответствует элементу В на схемах по рис. 29.3, т. е. для чтения нужно обратиться к некоторому массиву, который обозначается PINx.
Обращение осуществляется так же, как и к регистрам (см. главу 31), но PINx не есть регистр, это просто некий диапазон адресов, чтение по которым предоставляет доступ к информации из буферных элементов на входе порта. Записывать что-то по адресам PINx, естественно, нельзя. Теперь об экономии питания. AVR предлагает три вида такой экономии, которые мы подробно описывать не будем, чтобы не дублировать инструкцию. Но хочу отметить, что при использовании любого из Sleep-режимов нужно быть очень аккуратным и предусмотрительным, иначе вся затея обессмыслится. В нормальном режиме (без учета потребления по выходам портов) МК 8515 потребляет до 10 мА (при 5 В питания и частоте тактового генератора 4—8 МГц). В режиме Sleep он будет потреблять от 1 до 50 мкА (в зависимости от типа режима: Power Down или Power Save; есть и третий режим Idle, при котором экономится только около трети питания) — но только он сам, т. е. его внутренности! Если у вас при этом к выходу, скажем, порта А подключены семь транзисторных ключей для управления цифровым индикатором с базовыми резисторами, к примеру, 5 кОм, то они все вместе в состоянии лог. 1 на выходах будут потреблять примерно столько же, сколько МК в нормальном режиме, и от режима микросхемы это не зависит никак. Поэтому в программе команде Sleep, которая вводит МК в режим экономии, должна предшествовать процедура, в которой все внешние соединения устанавливаются в соответствующее состояние. Кое-что нужно сделать и по внутренностям (например, отключить аналоговый компаратор, если он был включен). Поскольку обычно такой режим используется в случае отключения основного (сетевого) питания и перехода на питание резервное (от батареек), то для полного успеха этого мероприятия нужно очень тщательно проектировать всю остальную схему, внимательно просматривая ее на предмет того, что будет происходить в ней при таком отключении. Так, следует отключать (например, переводить в третье состояние) выходы, которые окажутся подключенными к обесточенным КМОП-микросхемам (об этом мы уже писали в главе 12). Теперь о других функциях МК. Рассмотрим еще три, ввиду их наибольшей практической важности и некоторых особенностей практического применения. Сначала о прерываниях (interrupts). Как и в ПК, прерывания в микроконтроллерах бывают двух видов. Но если в ПК прерывания делятся на аппаратные (например, от таймера) и программные (фактически не прерывания, а процедуры, т. е. подпрограммы, записанные в BIOS), то в МК, естественно, все прерывания — аппаратные, а делятся они на внутренние и внешние. Внутренние прерывания могут (если их специально включить, конечно) возникать от любого устройства, которое является дополнительным по отношению к ядру системы — от таймеров, от аналоге-
вого компаратора, от последовательного порта и т. д. Внутреннее прерывание— это событие, которое возникает в системе и прерывает выполнение основной программы. Система внутренних прерываний в AVR довольно разветвленная и представляет собой основную систему взаимодействия устройств с ядром системы, и мы еще к этому вопросу будем неоднократно возвращаться. Кстати, а что вообще происходит в МК, когда возникает то или иное прерывание? Очень просто: процессор обращается по адресу, который зарезервирован у данного типа МК именно для данного прерывания. По этому адресу должен быть записан оператор перехода на процедуру, которую вы хотите выполнить при возникновении прерывания, которая носит название обработчика прерывания. Этот вопрос мы более подробно рассмотрим в следующей главе. Внешних же прерываний у МК типа 8515 два, INTO и INT1 (а вот в mega 128 — целых восемь), естественно, они могут возникать независимо друг от друга. Внешнее прерывание — событие, которое возникает при появлении сигнала на одном из входов, специально предназначенных для этого (контакт 12 или 13). Различаются три вида событий, вызывающих прерывание, и их можно устанавливать в программе: это может быть низкий уровень напряжения, а также положительный или отрицательный фронт на соответствующем выводе. Кратко рассмотрим особенности использования этих режимов. Учтите, что для инициализации прерываний надо в программе сделать два действия: разрешить соответствующее прерывание и установить для него режим. И, конечно, написать подпрограмму-обработчик, иначе все это будет происходить вхолостую. Прерывание по низкому уровню (режим установлен по умолчанию, для его инициализации достаточно разрешить соответствующее прерывание) возникает всякий раз, когда на соответствующем входе присутствует низкий уровень. "Всякий раз" — это действительно всякий, т. е. если отрицательный импульс длится какое-то время, то прерывание, закончившись (т. е. когда выполнится соответствующая процедура), повторится снова и снова, не давая основной программе работать. В отличие от этого, прерывания по фронту или спаду выполняются один раз на импульс. (Любопытно, что прерывания по всем этим событиям выполняются, даже если соответствующий вывод порта сконфигурирован на выход, хотя зачем это может понадобиться, я представляю с трудом.) Конечно, от дребезга контактов там никакой защиты нет и быть не может, потому что МК не способен отличить дребезг от серии коротких импульсов. В связи с этим, если это критично, нужно либо принимать внешние меры по защите от дребезга, либо проделать следующее: внутри процедуры обработчика прерывания первой же командой запретить
само прерывание (процедура при этом, раз уж началась, выполнится до конца), а через некоторое время в другой процедуре (по таймеру, например, или по иному событию) опять его разрешить (способ "антидребезга", фактически идентичный применению одновибратора, см. главу 23). А когда же это критично — выполнение процедуры прерывания несколько раз? Например, если мы по нажатию кнопки хотим что-то считать, тогда из-за дребезга счет произойдет произвольное число раз. А если по нажатию кнопки просто что-то устанавливается в фиксированное состояние, то ничего страшного не случится, если оно установится несколько раз подряд, просто окончание этого процесса совпадет с отпусканием кнопки. В МК 8515 два таймера-счетчика, один 8-разрядный (Timer 0), второй — 16-разрядный (Timer 1). Оба счетчика представляют собой счетчики с пред-загрузкой и могут работать от тактовой частоты процессора непосредственно или поделенной на 8, 64, 256 или 1024, представляя собой таймеры. Могут они работать и как счетчики, т. е. от внешних импульсов с выводов ТО (выв. 1) для Timer 0 и Т1 (выв. 2) для Timer 1 (по спаду или по фронту), частота которых не должна превышать частоты тактового генератора МК. При наступлении переполнения счетчика возникает событие, которое может вызывать соответствующее прерывание. Счетчик Timer 0 фактически этим и ограничивается. 16-разрядный счетчик Timer 1 — более продвинутая штука и может вызывать прерывания по совпадению с определенным заранее заданным числом (точнее, даже два отдельных прерывания с двумя разными числами А и В), при этом счетчик может обнуляться или продолжать счет, и на специальных выводах OSC1A (выв. 15) или OSC1B (выв. 29) могут возникать импульсы (автоматически, без участия программы). Также возможно прерывание по внешнему событию на специальном выводе ICP (31), при этом содержимое счетчика помещается в некий регистр ICR1, а счетчик может обнуляться и начинать счет заново или просто продолжать счет. Источником таких событий может быть встроенный аналоговый компаратор — удобная "фича" для того, чтобы построить на основе МК частотомер. В общем, все во имя человека, все во благо человека. В AVR 8535 и mega есть третий таймер, который может выполнять еще более интересные вещи (например, работать автономно от остальной системы, когда весь процессор находится в режиме экономии, что позволяет этот таймер использовать в качестве часов реального времени, RTC). С помощью всех этих примочек можно осуществлять самые заковыристые временные алгоритмы. Но и это не все. Эти таймеры могут работать в т. н. PWM-режиме, специально сделанном для того, чтобы использовать их в качестве широтно-импульсных модуляторов (ШИМ). Некоторые из этих функций мы разберем при рассмотрении конкретных конструкций в дальнейшем.
Кроме таймеров-счетчиков в любом AVR-контроллере есть сторожевой (Wathcdog) таймер. Он предназначен для вывода МК из состояния Power Down через определенный интервал времени или просто периодического перезапуска МК и для других целей обычно не используется. Наконец, поговорим еще об одной важнейшей функции — UART (Universal Asynchronous Receiver-Transmitter, универсальный асинхронный приемопередатчик). Он имеет еще другое название — последовательный (serial) порт или последовательный интерфейс. Его подробное описание можно встретить во всех технических пособиях по IBM-совместимым компьютерам, где он известен как RS-232 (RS означает "recommended standard"), serial port, или COM-порт. На самом деле все это немного разные вещи, и ввиду важности вопроса нам придется рассмотреть его подробнее. Идея передачи по этому порту заключается в передаче целого байта по одному проводу в виде последовательных импульсов, каждый из которых может быть 0 или 1. Если в определенные моменты считывать состояние линии, то можно восстановить то, что было послано. Однако эта простая идея натыкается на определенные трудности. Первоначально для приемника и передатчика, связанных между собой двумя проводами ("земля" и сигнальный провод), задаются скорости передачи и приема, которые должны быть одинаковы для обоих концов линии. Эти скорости стандартизированы и выбираются из ряда 1200, 2400, 4800, 9600, 14 400, 19 200, 28 800, 38 400, 57 600, 115 200 (более медленные скорости я опустил, а более быстрые не стандартизированы и для RS-232 обычно не употребляются), это число обозначает количество пере-даваемых/принимаемых бит в секунду (бод). Проблема состоит в том, что приемник и передатчик — это физически совершенно разные системы, и скорости эти для них не могут быть строго одинаковыми в принципе (из-за разброса параметров тактовых генераторов), и даже если их каким-то фантастическим образом синхронизировать в начале, то они в любом случае быстро "разъедутся". Поэтому такая передача всегда сопровождается начальным (стартовым) битом, который служит для синхронизации. После него идут восемь (или девять, если используется проверка на четность) информационных битов, а затем стоповые биты, которых может быть один, два и более, но это уже не имеет принципиального значения — почему, мы сейчас увидим. Общая диаграмма передачи таких последовательностей показана на рис. 30.2. Хитрость заключается в том, что состояния линии передачи, называемые стартовый и столовый бит, имеют разные уровни. В данном случае стартовый бит передается высоким уровнем, а столовый— низким, потому фронт стартового бита всегда однозначно распознается. В этот-то момент и проис
ходит синхронизация. Приемник отсчитывает время от фронта стартового бита, равное % периода заданной частоты обмена (чтобы попасть примерно в середину следующего бита), и затем восемь (или девять, если это задано заранее) раз подряд с заданным периодом регистрирует состояние линии. После этого линия переходит в состояние стопового бита (в данном случае нулевое) и может в нем пребывать сколь угодно долго, пока не придет следующий стартовый бит. Задание минимального количества стоповых битов, однако, производится тоже — для того, чтобы приемник знал, сколько времени минимально ему нужно ожидать следующего стартового бита (как минимум, это может быть один период частоты обмена, т. е. один столовый бит). Если по истечении этого времени стартовый бит не придет, приемник может регистрировать так называемый timeout, т. е. перерыв, и заняться своими делами. Обычная схема, по которой мы будем работать, обозначается 8N1, что читается так: 8 информационных бит, no parity, 1 столовый бит. "No parity" означает, что проверка на четность не производится. Это самая распространенная схема работы такого порта, причем т. к. никакими таймаутами мы себе голову забивать не будем, то нам все равно, сколько стоповых битов будет, но во избежание излишних сложностей следует их устанавливать всегда одинаково — у передатчика и у приемника. На диаграмме рис. 30.2 показана передача некоего кода, а также, для наглядности, передача байта, состоящего из всех единиц и из всех нулей в режиме, опять же для наглядности, 8N2. Причем, как вы можете заметить, передача осуществляется в отрицательной логике, т. е. лог. 1 соответствует низкий уровень напряжения. Рис. 30.2. Диаграмма передачи данных по последовательному интерфейсу RS232 в формате 8N2
Для работы в обе стороны нужно две линии, которые у каждого приемопередатчика обозначаются RxD (приемная) и TxD (передающая). В каждый момент времени может работать только одна из линий, т. е. приемопередатчик либо передает, либо принимает данные, но не одновременно (это сделано потому, что у UART-микросхем обычно один регистр и на прием, и на передачу). Для нормальной работы выводы эти, естественно, нужно соединять накрест — TxD одного устройства с RxD второго и наоборот. Кабели RS-232, которые устроены именно таким образом, называются еще нуль-модемными (в отличие от простых удлинительных). Из описанного алгоритма работы понятно, что погрешность несовпадения скоростей обмена может быть такой, чтобы фронты не "разъезжались" за время передачи/приема всех десятидвенадцати бит более чем на полпериода, т. е. в принципе фактическая разница скоростей может достигать 4—5%, но на практике их стараются все же сделать как можно ближе к стандартным величинам. Однако во всем этом деле есть еще один крупный нюанс. На диаграмме рис. 30.2 мы показали работу линии при передаче данных, а для UART-порта уровни, во-первых, нормальные (т. е. лог. 1 соответствует высокий уровень), во-вторых, они находятся в пределах напряжения питания схемы (обычно 5 В, но может быть и 3,3 В или другая величина) — короче, это обычные однополярные логические уровни КМОП или ТТЛ. А передача в стандарте RS-232 подразумевает, что логическая единица в нем передается уровнем напряжения, номинально равным -12 В, а логический ноль уровнем +12 В, в отрицательной логике, как на диаграмме. (Кстати, в компьютерах питание -12 В существует исключительно для этой цели.) Стандарт оговаривает, что любой из этих уровней может меняться (независимо друг от друга) по абсолютной величине от 3 до 15 В. Именно такие уровни воспринимает, например, СОМ-порт компьютера. Это сделано для надежности передачи — фактически для регистрации стартового бита тогда достаточно компаратора, который бы зафиксировал переход через ноль. Если скорость передачи не выбирать слишком высокой (фактический стандарт для МК — 9 600 бод, что составляет примерно 1000 байт в секунду, хотя этой величины придерживаться совершенно не обязательно), то на практике такая линия может надежно работать на десятки метров (автору этих строк удавалось без дополнительных ухищрений наладить обмен с компьютером на скорости 4800 по кабелю, правда, довольно толстому, длиной около полукилометра). Приемник RS-232 часто дополнительно снабжают схемой, которая фиксирует уровень не единожды за период действия бита, а трижды, при этом за окончательный результат принимается уровень двух одинаковых из трех полученных состояний линии, таким образом, удается избежать случайных помех. В контроллерах AVR такая же процедура происходит уже прямо на входе порта UART.
Рис. 30.3. Вариант самодельного преобразователя уровней RS232 — UART при соединении контроллера с компьютером Встает вопрос о том, как преобразовать уровни UART в уровни RS-2321. Заметим, что RS-232, кроме всего прочего, устанавливает стандарты на разъемы для обмена— во-первых, это всем известный 9-контактный разъем типа DB-9, который стоит в большинстве компьютеров. (Это если они вообще имеют COM-порты, потому что во многих современных системах решили "комами" пожертвовать, т. к. USB, без сомнения, куда более продвинутый последовательный интерфейс, вот только МК пока с ним почти не умеют общаться). Есть и 25-контактный разъем DB-25 (он был принят изначально, но потом от него постарались избавиться ввиду ненадобности такого количества контактов). На обоих этих разъемах имеются, кроме указанных трех линий RxD, TxD и "общего", дополнительные линии, позволяющие организовать синхронный обмен "по запросу". На практике этой возможностью пользовались редко, однако наличие таких линий оказалось очень кстати — скажем, все мыши, которые еще не так давно подключались исключительно через СОМ, питались именно от этих линий. Можно наладить отрицательное питание передающей схемы от этих линий (если у вас в системе такого питания нет и если, конечно, у вас соответствующий кабель). Есть и более уни 1 Есть еще стандарты R.S-485 (более помехоустойчивый) и R.S-422 (более быстрый), которые позволяют использовать UART в качестве приемопередатчика, но мы здесь не будем ими за ниматься.
версальная, хотя и еще менее "официальная" возможность — запасать отрицательное напряжение, поступающее с линии связи TxD, находящейся большую часть времени в состоянии лог. 1 (т. е. с уровнем стопового бита, равным 12 В) на конденсаторе, а затем его использовать для передачи, оставив положительный уровень равным +5 В. Поскольку UART и RS232 оперируют с логикой противоположной полярности, то и для приема и передачи при этом удобно использовать простые транзисторные ключи, которые инвертируют сигнал (ах, как разработчики стандарта были предусмотрительны!). Такая схема преобразователя уровня показана на рис. 30.3. И это все прекрасно работает, поэтому используется довольно часто, но "официальный" путь все же состоит с том, чтобы применять специальные микросхемы приемопередатчиков RS232 (правильнее их было бы называть преобразователями уровня, это, например, МАХ202 и подобные), которые содержат внутри преобразователь-инвертор напряжения, подобный тому, что показан на рис. 26.4, б. Микроконтроллер 8515, как следует из первой цифры названия, имеет память программ 8 Кбайт (это достаточно много, как мы увидим из главы 31). Доступное пользователю ОЗУ (SRAM) для хранения данных составляет 512 байт, но самое главное, что в AVR-контроллерах аж 32 регистра общего назначения (больше, чем в каком-либо другом процессоре или контроллере), что позволяет во многих случаях не использовать ОЗУ вообще и резко ускоряет выполнение программы (работа с регистрами занимает один такт, а обращение к памяти — минимум два). Обращение с EEPROM пользователя (512 байт) — отдельная "песня". В принципе это полезная штука, с помощью которой, например, можно сохранять константы, загруженные или вычисленные в процессе работы, чтобы при включении питания система не требовала каждый раз инициализации. Но все дело в том, что при выключении питания оно обычно не снижается до нуля скачком, и в какой-то момент контроллер начинает выполнять непредсказуемые операции. Если в программе имеется процедура записи в EEPROM, то с высокой степенью вероятности информация в ней может быть испорчена. Кардинальным методом разрешения проблемы является просто не писать в EEPROM из программы (тогда информация, конечно, не испортится), а заполнять ее заранее, при программировании, но это не имеет большого смысла, потому что в этом случае нужные константы можно просто зафиксировать в самой программе2. А если все же писать из программы в EEPROM требуется — приходится осуществлять внешний мониторинг питания и при его снижении ниже допус 2 Исключение из этого правила — например, когда вы хотите пронумеровать ваши серийные приборы с присвоением каждому уникального номера. Тогда удобно записывать этот номер в EEPROM отдельно при программировании каждого прибора, не меняя саму программу.
тимых пределов как-то останавливать процессор. Для этого есть специальные микросхемы-мониторы — например, у МС34064 в трехвыводном корпусе ТО-92 при снижении питания ниже 4,6 В на выходе с открытым коллектором появляется напряжение лог. 0. Остановить процессор по такому сигналу можно разными способами — например, "загнать" его в режим Power Down, но я предпочитаю самый простой способ, когда выход такого монитора питания подсоединяется к выводу Reset. При нулевом уровне на Reset процессор приходит в исходное состояние и выполнять какие-то команды не может. Естественно, такой монитор можно сделать и самому с использованием стабилитрона и транзистора или, например, использовать встроенный в процессор аналоговый компаратор. На этом мы закончим краткое знакомство с микроконтроллером и перейдем к вопросу о том, как его программировать.
Глава 31 Персональный компьютер вместо паяльника. О программировании МК — Чтобы найти дорогу в Лондон, надо уметь говорить по-английски. По-моему, дело это очень трудное. А. Дюма, «Три мушкетера» Внедрение любой новой технологии требует начальных затрат. Не составляет исключения и микропроцессорная технология. В данном случае прямые затраты будут состоять в том, что вам, во-первых, придется приобрести программатор, во-вторых, компьютер — если по какой-то непостижимой случайности вы до сих пор его не имеете. Имейте в виду, что затраты эти могут быть сведены к минимуму— программатор лучше приобрести специализированный, а он стоит на порядок меньше универсального, а компьютер для наших целей сгодится любой, лишь бы он был из семейства PC, т. е. умел бы работать с DOS или Windows. Сойдут даже IBM PC XT или ЕС-1840, если вдруг вы такую древность раскопаете, а уж 386-486-е подойдут просто идеально. Более того, многие современные модели, особенно ноутбуки, как раз не подойдут— прежде всего, из-за отсутствия в них COM-портов. СОМ-порты нужны обязательно, в количестве не менее 2-х штук (при одном вам придется все время переключаться между программатором и схемой). Если COM-портов нет, а также если вы человек бережливый и предусмотрительный, то лучше купить специальную карту с дополнительными портами, которая вставляется в свободный PCI-слот. Нагло пользуясь тем, что производители материнских плат от COM-портов повсеместно отказываются, продавцы таких плат задрали цену за них до небес (шутка ли — плата с четырьмя портами FireWare стоит в три раза дешевле, чем с двумя СОМ, притом что первая по себестоимости существенно дороже). Но даже с учетом этого обстоятельства лучше поступить именно так — при наличии такой платы вы застрахованы от того, чтобы случайно вывести из строя COM-порты на материнской плате. В моей практике был один-единственный случай, когда мне
случилось вывести COM-порт из строя, и надо же так случиться, что компьютер при этом оказался ноутбуком, где ни дополнительную плату не вставишь, ни материнскую плату не заменишь. Но моей вины в том не было — прибор, который я подключал, был до этого неоднократно проверен, так что это чистая случайность (возможно, виновато пресловутое отсутствие нормального заземления). Железо Раз уж мы начали с необходимого "железа", то закончим эту тему, а потом перейдем к собственно программированию. Программатор, о котором идет речь, называется ISP-программатором (in system programming). Лучше всего покупать, естественно, фирменный, от Atmel, но его может и не быть прямо в продаже, так что придется заказывать и ждать, пока привезут. Фирменный программатор удобен тем, что он работает с фирменным же софтом непосредственно из-под Windows (впрочем, обязательно прилагаются и DOS-программы — недаром было отмечено, что сгодится даже XT). Однако в продаже есть и "самопальные" отечественные разработки. У некоторых из них софт работает в DOS-режиме, так что для них требуется Windows 95/98/МЕ. Под другими ОС, начиная с 2000-й, эти программаторы эксплуатировать не получится. Конечно, продается и множество универсальных программаторов, среди которых есть весьма продвинутые, но мы будем ориентироваться на специализированный ISP под контроллеры AVR. Для того чтобы работать с ISP-программатором, естественно, его надо куда-то подключать. Для этого на плате специально устанавливают разъем. Все известные мне программаторы используют один и тот же тип разъема — PLD (PL double, т. е. двухрядный), который хорошо знаком всем, кто когда-нибудь подсоединял жесткий диск с IDE-интерфейсом к материнской плате. Естественно, для ISP-программаторов требуется гораздо меньше контактов, чем для жесткого диска. Минимальное их количество равно 6. и они должны быть соединены со следующими контактами МК (в скобках указана разводка для 8515): MOST (6), MISO (7), SLK (8) и Reset (9). Оставшиеся два вывода подсоединяются к питанию +5 В и "земле" (ISP-программаторы питаются от схемы). Некоторые программаторы имеют больше контактов1. Имейте в виду, 1 Фирменная разводка для ISP-программаторов Atmel предполагает два стандарта— минимальный 6-выводной, который мы будем использовать в этой книге, а также 10-выводной в котором для лучшей помехоустойчивости добавлены 3 дополнительных "земли", разделяющих сигнальные проводники, и один еще вывод под названием "LED", который чаще всего не используется.
что нумерация контактов PLD-разъемов отличается от обычной и делается не в обход, как у микросхем, а так: если глядеть на "папу" сверху, то вывод номер 1, как и положено, находится слева внизу, вывод 2 — над ним, вывод 3 — следующий за первым в нижнем ряду и так далее, т. е. нижний ряд — это все нечетные, а верхний — все четные контакты (это сделано потому, что разъемы PL могут иметь не строго фиксированное количество контактов, а при любом их количестве имеющиеся контакты будут нумероваться одинаково). Если не поняли, то посмотрите на разводку разъема IDE на материнской плате. Разводку выводов программирующего разъема указывать бессмысленно, т. к. она зависит от типа программатора, но мы в своих схемах будем ориентироваться на фирменный ISP-программатор от Atmel (см. сноску 1) с 6-контактным разъемом в надежде, что они разводку в ближайшее время не сменят. А как быть, если все же сменят, или вы перешли на другой тип? В этом случае легко сделать переходник, потому что сами используемые контакты остаются те же, меняется только их порядок. Наверняка читатели зададут вопрос — а как быть, если указанные выше выводы в схеме используются как просто выводы порта В и они к чему-то присоединены? Отвечаю: в большинстве случаев это неважно. Единственный вариант, который приведет к конфликту между программатором и схемой, это если выводы MOSI, MISO и SLK подсоединены к активным выходам других микросхем (или, например, к коллектору открытого транзистора) или к конденсатору большой емкости. Поэтому в схеме эти контакты лучше использовать в качестве выходных линий, а если хватает других портов — вообще эти контакты не использовать. Кстати, сама по себе конфигурация в рабочем состоянии (на вход или на выход) никакого значения не имеет, т. к. цикл программирования начинается с того, что "зажимается" (т. е. коммутируется на "землю") контакт Reset, от чего процессор приходит в начальное состояние, в котором все контакты сконфигурированы на вход. Естественно, при работе схемы программатор лучше отключать. А если вы работаете с универсальным программатором, то в большинстве случаев они используют параллельное программирование, и МК приходится вставлять в специальную колодку на корпусе программатора, а в схеме, естественно, они тогда устанавливаются на панельку, а ISP-разъем вообще не требуется. Преимущество универсальных программаторов в том, что можно легко переходить с одного семейства процессоров на другое, причем независимо от типа корпуса, а также программировать любые микросхемы памяти. Но в процессе отладки сложной программы пользоваться универсальным программатором неудобно — МК все время приходится вынимать и вставлять, что сильно замедляет процесс, к тому же есть риск повредить выводы.
Поэтому универсальный программатор следует рекомендовать в тех случаях, когда программа уже более-менее отлажена, например, при тиражировании 2 конструкции . Софт Если мы имеем какой-то программатор с софтом, то, в сущности, нам нужна еще только одна специальная программа— ассемблер (assembler значит "сборщик"). Ее можно бесплатно скачать с сайта Atmel. DOS-версия AVR-ассемблера запускается из командной строки. В качестве параметров там указывается имя файла с исходным текстом программы и имена выходных файлов. Чтобы каждый раз не вводить длинную командную строку, пишется соответствующий bat-файл. Рассказывать об этом я подробно не буду, т. к. опыт показывает бесполезность подобных быстро устаревающих сведений — при всей консервативности разработчиков электронной техники, им также приходится идти в ногу с прогрессом, хотя они всячески этому сопротивляются. Из полученных в результате ассемблирования файлов нас будет интересовать только hex-файл (все остальные можно удалять). Это текстовый файл (а не бинарный, как обычные исполняемые компьютерные файлы), но содержащий только числа в байтовом представлении, в шестнадцатеричной записи. Он имеет строго определенную структуру, разработанную в свое время фирмой Intel, и его можно править вручную, но для начинающего эти сведения необязательны, в случае чего, их несложно раздобыть в Интернете или, например, в журнале "Радио". Для нас же важно то, что полученный hex-файл — это и есть та программа в процессорных кодах, которую мы загружаем в МК с помощью программатора. При этом программатор автоматически располагает ее в памяти программ МК, начиная с нулевого адреса. С помощью программатора можно также записать информацию и в пользовательскую флэш-память (EEPROM) МК. То есть вы при загрузке программы в МК проводите следующие операции: ассемблируете исходный текст, затем полученный hex-файл загружаете в МК. Если это происходит в режиме ISP, то процессор сразу же должен заработать. Вернемся к тексту программ. Atmel предлагает свой редактор, но можно использовать любой, который умеет создавать чистые текстовые файлы. Коди- 2 Естественно, что какой бы программатор вы не использовали, в случае тиражирования изделий с отработанной программой программирующий разъем устанавливать не имеет смысла — он будет только занимать место на плате и снижать общую помехоустойчивость (см. главу 30). Поэтому в этом случае не лишним будет изготовить маленькую плату с панелькой, ISP-разъемом и кварцевым резонатором, и использовать ее вместо универсального программатора, если у вас его нет.
ровка тоже не имеет значения, т. к. по-русски в программе будут только комментарии. Microsoft Word, между прочим, не подойдет, т. к. чистого текста по неясной причине он создавать не умеет — в конец файла могут включаться лишние символы. Это, пожалуй, единственное известное мне исключение, но, несмотря на широкий выбор, можно найти, по крайней мере, три причины, по которым лучше все же использовать специализированные редакторы. Эти причины хотя и второстепенные (текст— он и есть текст), но их учет может сильно облегчить жизнь. Первая причина — это т. н. highlighting (буквально— "выделение"), проще говоря, это то, что называют "подсветкой синтаксиса". Те, кто пользовался любыми средами высокоуровневого программирования (от Turbo Pascal до Delphi или Visual Basic), хорошо знают, что это такое. Служебные слова, комментарии, разные типы выражений могут выделяться каждый своим цветом, что сильно облегчает чтение текста и служит неплохим средством проверки правильности написания. Но если эту опцию предлагают множество фирменных и не очень редакторов, то вот вторая желательная функция есть лишь у считанных единиц. Я имею в виду возможность прямо из редактора с помощью "горячих" клавиш запускать процесс ассемблирования (почему это встречается так редко, мне совершенно непонятно, ибо обеспечить такую возможность проще простого — и уж куда проще, чем возиться с "подсветкой"). В этом случае вы можете "не отходя от кассы", т. е. не покидая редактор, одним нажатием клавиши сразу же ассемблировать написанный текст и ознакомиться с сообщениями об ошибках. Это экономит много времени и даже важнее "подсветки". Еще одна причина для использования специализированных редакторов — они автоматически нумеруют строки. Причем пустые строки также входят в нумерацию — так проще считать. Фирменный редактор от Atmel это делает превосходно, но, к сожалению, у него есть другие неудобства, отчего я в свое время даже подумывал написать свой собственный редактор, пока не наткнулся на один из "самопальных" вариантов под названием Asmedit, который сделан на удивление профессионально, хотя и не без некоторых досадных огрехов. Все это относится к программированию на языке ассемблера, но программы для AVR-контроллеров можно писать и на С. Для тех, кто владеет этим языком, это может показаться более удобным способом, но для начинающих я бы его не стал рекомендовать — не столь важно то, что в результате на ассемблере получается более быстрый и компактный код, сколько то, что любой посредник (а компилятор С есть именно посредник) в этом деле только мешает. Не так уж и сложно освоить несколько приемов написания, например, циклов или условных переходов, которые на С уже сделаны за вас, зато вы живете своим умом и не полагаетесь на чужого дядю. Красиво написанная программа— это примерно то же, что красивый самолет, конструкторы авиационной техники утверждают, что они лучше летают. Ну, а красивая
программа лучше работает, это проверено. На С можно тоже написать красивую программу, но это будет именно программа на С, а не для контроллера AVR. Есть огромная разница между программированием для ПК и для микроконтроллера— для современных ПК писать нормальные программы на ассемблере (по крайней мере, целиком на ассемблере) неудобно и глупо, потому что вы все равно используете чужие (микрософтовские) библиотеки, и сама идея полностью вырождается. Исполняемые файлы современных программ для ПК занимают сотни и тысячи килобайт и еще используют объем библиотек гораздо большей величины. В то же время программа для МК редко превышает несколько килобайт (занимаемых в памяти контроллера, а не в исходном тексте, конечно) — причем это уже должна быть довольно большая и "навороченная" программа, типичный размер же составляет от нескольких сотен байт до 2-х килобайт (точный размер сообщается при ассемблировании, по hex-файлу судить нельзя). И написать такую программу на ассемблере не только несложно, но и вполне целесообразно. Мне рассказывал один разработчик, что им пришлось написать для некоей системы контроля нефтяных скважин целую операционную систему — так вот, эта сйстема вполне влезла в 16 Кбайт собственной памяти программ микроконтроллера от фирмы Phillips. Но не исключаю, что насчет предпочтения ассемблеру многие со мной не согласятся, и потому оставляю читателю самому сделать окончательный вывод, а для того, чтобы он был осознанным, я и рекомендую начинать изучение именно с ассемблера. Пожалуй, это и все, что нужно знать до того, как вы приступите к собственно программированию, конкретные вещи вы доберете из руководств к программаторам и софту, которые нужно изучить обязательно. Программирование Написание программ — целое искусство, поэтому здесь можно на конкретных примерах попытаться дать только общее представление о том, как это делается, заостряя внимание на специфических особенностях программирования для МК, а не программирования вообще. Полного обзора команд вы также здесь не увидите, это лучше делать, читая инструкцию, а переписывать ее нет никакого смысла. Прежде всего, нужно твердо уяснить, что программирование процессора и составление логических схем есть в полном смысле слова один и тот же процесс, только выраженный на разных языках — либо в виде последовательности команд процессора, либо в виде схемы. Грубо говоря, при переходе на МК вы заменяете паяльник персональным компьютером. Причем программировать еще и проще, потому что гораздо легче поправить ошибку. Между
программированием и аппаратными средствами есть некоторая взаимозаменяемость. Скажем, если контроллер не имеет порта UART, то его несложно сымитировать с помощью специальной подпрограммы, если не имеет таймеров — их тоже можно воспроизвести, тактовый-то генератор всегда имеется. Так мы будем в дальнейшем имитировать интерфейс 12С, который у AVR семейства "classic" отсутствует. С другой стороны, именно таким образом, с помощью подпрограмм, процессор 8086 выполнял операции с действительными числами, но выполнение программы всегда медленнее, чем работа "железок", поэтому к нему сначала добавили арифметический сопроцессор (8087), а потом (начиная с 486-х) и вовсе интегрировали блок обработки чисел "с плавающей точкой" внутрь процессора. В результате программы упростились, а процессор усложнился, но с точки зрения пользователя ничего (кроме ускорения работы) не произошло. Давайте напишем самую простую программу, которая будет включать светодиод сразу при включении питания и больше ничего не делать. Светодиод мы подключим к выводу, например PD4 (т. е. к контакту 14, здесь и далее в скобках будут даваться номера для 8515), и управляться он будет от лог. 1 (т. е. при лог. 1 он горит, при лог. 0 — погашен). В принципе программа должна состоять из двух команд: первая конфигурирует этот вывод порта на выход, записывая в регистр направления лог. 1 (по умолчанию все выводы, как вы помните, сконфигурированы на вход), вторая — записывает в регистр данных значение лог. 1. Однако не все так просто. Дело в том, что в регистры портов записывать непосредственное значение нельзя, можно только информацию из какого-нибудь рабочего регистра. Поэтому добавится третья команда — сначала мы установим в 1 нужный бит в выбранном рабочем регистре, затем загрузим весь полученный байт в регистр порта. Причем установить непосредственное значение можно также не в любом из рабочих регистров, а только в номерах с 16 по 32. Выберем себе регистр rl 6 в качестве рабочего. Тогда последовательность команд будет выглядеть так: Idi г16,ОЬОООЮООО /устанавливаем бит номер 4 в регистре г16 out DDRD,rl6 /выводим это значение в регистр направления порта D out PortD,rl6 /выводим это же значение в регистр данных порта D Здесь Idi — команда загрузки непосредственного значения (load immediate), out— команда вывода в какой-либо порт ввода/вывода (не путать с внешними портами ввода/вывода А, В, С и D: I/O ports — так называются все регистры, которые не входят в ядро, кроме рабочих и некоторых вспомогательных). А что означает запись ОЬОООЮООО? Это хорошо знакомое нам двоичное представление числа, 0Ь впереди означает, что это именно двоичная запись (см. главу 19). Так в данном случае удобнее отсчитывать биты, но если мы запишем 0x10 (или $10 — в hex-форме) или просто 16 (т. е. в десятичном виде), ничего не изменится.
Обратите внимание на синтаксис — сначала пишется, куда писать, а потом через запятую откуда или что. Это справедливо для всех команд и для всех ассемблеров. То, что после точки с запятой, ассемблером игнорируется, и представляет собой комментарии, которые нужно писать обязательно, иначе вы через пару месяцев и сами в программе не разберетесь. Если комментарий переходит на другую строку, то точку с запятой нужно ставить заново — в начале строки. Каждая команда пишется в отдельной строке. В отличие от знака перевода строки, все пробелы и табуляции игнорируются (а там, где есть другой разделительный знак, в данном случае запятая, как видите, пробелов вообще может не быть), так что украшать текст отступами можно, а для удобства чтения и нужно. Строчные и прописные буквы не различаются: запись LDI, Ldi и ldi есть одно и то же. Ну и все? Можно компилировать? Ишь разбежались — нет, не все. Во-первых, никаких таких DDRD и PortD AVR-ассемблер не понимает. Если соответствия мнемонических обозначений команд (ldi) и их кодов, а также рабочих регистров (rl 6) и их адресов "зашиты" в ассемблере, то названия и само наличие регистров портов ввода/вывода могут меняться от модели к модели, и поэтому ассемблер понимает только конкретные числа, представляющие собой адреса этих регистров. Но писать без мнемонических обозначений было бы неудобно, т. к. портов много, запомнить их все невозможно, и программа оказалась бы совершенно нечитаемой (первая команда out, к примеру, тогда выглядела бы так: out $11, rl 6). Поэтому к нашей программе надо "пристегнуть" файл с мнемоническими обозначениями, который поставляется Atmel, и в данном случае называется "8515def.inc" (при компиляции он должен находиться в одной директории с файлом программы). Это делается почти в точности, как в языке С, строкой: .include "8535def.inc" /точка впереди обязательна Этот файл состоит из строк, начинающихся с директивы . equ (точка также обязательна), и мы могли бы не включать его (хотя в память процессора он все равно не записывается), а в данном случае просто дописать к программе в начале текста строки: .equ DDRD = $11 .equ PortD = $12 Другая полезная директива — дефиниция, т. е. определение переменной. Неудобно каждый раз писать г1б и помнить, что это у нас рабочая переменная для всяких текущих надобностей, а лучше дописать еще такую строку: .def temp = г16 /рабочая переменная, от слова temporary - временный Тогда окончательно исходный текст программы будет выглядеть так: /программа зажигания светодиода /процессор 8515, частота 4 Мгц
.include "8535def.inc" .def temp = rl6 ;рабочая переменная ldi temp,ОЬОООЮООО /устанавливаем бит номер 4 в рабочем регистре out DDRD,temp /выводим это значение в регистр направления порта D out PortD,temp /выводим это же значение в регистр данных порта D sleep . exit Программа займет в памяти программ контроллера ровно 8 байт. Последняя команда sleep означает выход в режим экономии— ведь должен процессор что-то делать по окончании программы? Директива .exit предназначена для ассемблера и означает конец программы, указывать ее необязательно. А зачем мы указали тактовую частоту процессора? В данном случае это также не обязательно, но при использовании любых процедур, связанных со временем, это критично, и в дальнейшем можно просто забыть, на какую частоту мы рассчитывали, поэтому следует ее на всякий случай указывать в комментариях. Кстати, команду ldi можно было бы заменить на sbr ("set bits in register") в том же самом виде. Мало того, в данном случае можно было бы избежать применения лишней команды с участием temp и установить нужный бит в регистрах DDRD и PortD командой sbi ("set bit in I/O register" — число в порты I/O записывать непосредственно нельзя, а вот биты устанавливать — вполне), но она, во-первых, действует не на все регистры ввода/вывода, а во-вторых, с ее помощью можно менять только по одному биту за раз (указывается номер бита, а не загружаемое число, т. е. команды sbi и sbr, несмотря на внешнее сходство, работают по-разному), поэтому использование temp оказывается более универсальным приемом. При использовании команд sbi и sbr не портятся остальные биты, но если, к примеру, нужно вывести все единицы во всех выводах порта D, то лучше просто загрузить в temp число $ff и делать, как указано выше. Мутно? Мутно, но не огорчайтесь, дальше будет еще мутнее. Одно облегчение, впрочем, есть: запоминать все особенности типа, в какой регистр можно писать непосредственное число, в какой — нельзя, первое время необязательно. Если вы допустили где-то синтаксическую ошибку, при компиляции вам на нее укажут, с указанием номера строки и типа ошибки. Разбираясь с ними, вы быстро все выучите. Давайте теперь заставим наш процессор управлять этим светодиодом так, чтобы он мигал с частотой примерно I раз в секунду. Для этого придется воспользоваться таймером, а значит— прерываниями. А значит— текст программы придется оформить несколько по-иному. Если помните, я говорил, что при возникновении прерывания процессор обращается по некоторому
фиксированному адресу. Для каждой модели МК количество и типы прерываний несколько различаются, поэтому они зафиксированы именно для данного типа процессоров. На самом деле это первые адреса памяти программ, начиная с адреса 0:0 и дальше, столько адресов, сколько имеется прерываний. В МК 8515 имеется 12 прерываний, соответственно, они занимают первые 12 адресов памяти программ. Следует указать на одну тонкость в нумерации этих адресов — т. к. коды команд все двухбайтовые, то память программ организована по 16-битовым словам, а не по байтам, поэтому адреса в памяти программ означают адреса слов, а байтовый адрес будет в два раза больше (не 0, 1, 2 ..., а 0, 2, 4...). Это вас ни в коей мере не должно волновать, потому что при обращении по абсолютным адресам памяти программ используется команда 1pm ("load program memory") — она организована так умно, что делает преобразование адресов автоматически (можно обращаться как к словам, так и к байтам), просто иногда в техдокументации указывают байтовый адрес, а иногда — адрес по ячейкам памяти, и тут можно запутаться. Мы здесь этими адресами морочить голову себе не будем, а просто укажем, как оформлять первые 12 строк программы (напоминаю, что для других моделей AVR количество и расположение адресов прерываний будет другим). С учетом сказанного, ваша программа всегда должна начинаться с такой последовательности команд (их еще называют векторами прерываний): rjmp RESET ; обработчик прерывания по Reset rjmp EXT_INT0 ; обработчик внешнего прерывания 0 rjmp EXT_INT1 ; обработчик внешнего прерывания 1 rjmp Т1М1_САРТ ; обработчик прерывания захвата внешнего события ;Timer 1 rjmp TIM1_COMPA ; обработчик прерывания сравнения A Timer 1 rjmp TIMl—COMPB ; обработчик прерывания сравнения В Timer 1 rjmp TIMl—OVF ; обработчик прерывания переполнения Timer 1 rjmp TIMO_OVF ; обработчик прерывания переполнения Timer 0 rjmp SPI_STC; ; обработчик прерывания интерфейса SPI rjmp UART__RXC ; UART прием закончен rjmp UART_DRE ; регистр данных UDR в UART пуст rjmp UART__TXC ; UART передача закончена rjmp ANA_COMP ; прерывание аналогового компаратора Здесь rjmp— команда безусловного перехода, a reset, ext_into и т. п. — метки в тексте программы, откуда начинается текст процедуры (подпрограммы) обработки прерывания. Метки могут выглядеть и по-иному, тут полный произвол. Подобным образом должна выглядеть программа, если вы используете все 12 прерываний, чего на самом деле, конечно, не бывает. Но каждой записи rjmp <метка> должно соответствовать наличие метки далее в тексте,
иначе вам укажут на ошибку (посылать по неизвестному адресу нехорошо). Поэтому если некоторые прерывания не используются, то, вообще говоря, можно вместо г jmp'oe наставить в соответствующих строках команд пор (по operation — ее код равен просто нулям во всех разрядах), но на практике вместо них ставят команду reti, которая означает возврат из процедуры прерывания к выполнению основной программы. Какие команды в этих строках ставить — в общем случае не имеет значения, т. к. они выполняться никогда не будут, если соответствующие прерывания не активированы, нам только нужно занять память, чтобы нужный г jmp используемого прерывания оказался по нужному адресу. Особое место занимает вектор, расположенный по самому первому, нулевому адресу. Вообще говоря, Reset — это даже не прерывание (хотя его и можно вызвать программным путем), мы ведь неоднократно говорили, что МК начинает выполнение программы с нулевого адреса. В коротенькой программе выше процессор больше ничего не делал, поэтому мы просто расположили нашу программу, начиная с нулевого адреса. А в более сложных программах так делать нельзя, потому что процессор начнет выполнять команды по порядку и выйдет неизвестно что. Поэтому в самой первой строке программы обязательно должен стоять указатель на процедуру, которая осуществляется в самом начале работы и обычно так и называется — Reset. Эта процедура должна начинаться со следующих обязательных строк RESET: ldi temp,low(RAMEND) /загрузка указателя стека out SPL,temp ldi temp, high (RAMEND) ,-загрузка указателя стека out SPH, temp Этими командами вы загружаете в соответствующие регистры (SPL и SPH) т. н. указатель стека— область памяти, куда будут записываться адреса точек возврата. Если этих строк нет, то МК с использованием прерываний не заработает (по умолчанию во всех регистрах 0, а указатель стека не может указывать на самый первый адрес памяти). Происходит там вот что: когда некое прерывание начинает выполняться, то первым делом по адресу, записанному в регистрах указателя стека, запоминается адрес, на котором было остановлено выполнение основной программы (т. е. в стек заносится содержимое программного счетчика). По окончании процедуры обработки (по команде reti) этот адрес считывается в программный счетчик, и выполнение основной программы продолжается. Если во время выполнения обработчика данного прерывания происходит другое прерывание с большим приоритетом (это нужно специально устанавливать, в AVR по умолчанию любое прерывание будет ожидать окончания обработки предыдущего), то в стек записыва
ется также и этот текущий адрес команды, таким образом ошибиться при последовательном возврате невозможно. Вы и сами можете использовать стек (командами push и pull — например, для сохранения текущего значения рабочих регистров3), но неопытным программистам лучше этого не делать, иначе могут быть всяческие коллизии, ramend означает "конец памяти RAM", т. е. адрес последнего слова в памяти (соответствие реальному адресу зафиксировано в файле с расширением inc), а т. к. он в случае 8515 двухбайтовый, то команды две — для старшего (high) и младшего (low) байта (в AVR 2313, например, адрес этот однобайтовый, и соответствующая команда всего одна). С учетом сказанного напишем программу, переключающую светодиод. В данном случае она будет это делать по событию переполнения таймера-счетчика Timer 1. Так как счетчик 16-разрядный, то событие переполнения будет возникать при каждом 65536-м импульсе входной частоты. Для того чтобы светодиод переключался раз в секунду, зададим коэффициент деления тактовой частоты на входе Timer 1 равным 64, и при 4 МГц частоты генератора мы получим примерно то, что надо: 4000000/64/65536 = 0,953674 Гц. К тому, как сделать частоту равной точно 1 Гц, мы вернемся, а пока подумаем: как, собственно, осуществить само переключение? Для того чтобы с каждым прерыванием от таймера выход порта переключался в противоположное состояние, программа должна "помнить" его предыдущее состояние или каждый раз "выяснять" его. В последнем варианте при каждом прерывании мы должны считывать состояние нужного бита порта D и менять его на противоположное, например, так: TIM1_OVF: /процедура обработки прерывания по переполнению таймера in temp,PortD /загружаем в temp регистр данных порта D sbrc temp,4 /если бит 4 в temp обнулен, /то пропустить следующий оператор rjmp SET_0 /если не обнулен, то переход на метку SET_0 sbi PortD,4 /установить в регистре данных порта бит 4 rjmp END__I /и перейти на конец процедуры SET_0: cbi PortD,4 /очистить в регистре данных порта бит 4 END_I: reti /выход из прерывания Тот, кто изучал высокоуровневое программирование, несомненно, заметит, что вся эта конструкция есть не что иное, как реализация оператора IF ... THEN ... ELSE. Словами это можно выразить примерно так: "ЕСЛИ бит 4 в переменной temp равен 0, ТО установить его, ИНАЧЕ сбросить". Есть и другой метод. Мы запоминаем состояние порта в специальной переменной, которую назовем flag (флагами называют биты или целые перемен 3 Именно с этой целью стек широко используется в IBM PC — но там не 32 рабочих регистра, а всего 4, так что это жизненная необходимость.
ные, которые сигнализируют нам о некоем состоянии). Тогда процедура может выглядеть так: TIM1_OVF: sbrc г jmp sbi sbr r jmp SET_0: cbi cbr END_I: reti flag,0 SET_0 PortD,4 flag,0 END_I PortD,4 flag,0 Как видите, и команд здесь больше, да еще и лишний регистр заняли. Можем поступить немного хитрее. В данном случае мы используем всего один (самый первый) бит переменной flag, остальные можно использовать еще для чего-нибудь, но если мы пожертвуем этой возможностью, то мы можем с каждым прерыванием просто увеличивать flag на 1. Тогда любой из битов этого регистра будет попеременно меняться с 0 на 1 и обратно. После 256 циклов регистр переполнится— ну и что, счет просто начнется с начала. Тогда процедура будет выглядеть так: TIM1_OVF: flag,0 SET_0 PortD,4 END_I sbrc r jmp sbi r jmp SET_0: cbi PortD,4 END_I: inc reti flag Для инициализации переменной flag (пусть это будет регистр г!7) в начале текста должна быть строка .def flag = г 17. Любопытно, что если сделать так, чтобы и flag, и temp указывали на один и тот же регистр, то на ошибку вам не укажут — эти переменные будут занимать одну и ту же область памяти (один и тот же регистр), в результате чего все действия с temp будут изменять и flag, и наоборот. Это может иногда приводить к довольно странным результатам, если это действительно ошибка, но иногда это делают специально. Конечно, если мы используем порт D только для управления светодиодами, то можно вообще просто выводить в порт значение flag без всяких хитростей. При этом на первом выводе порта (PD0) переключение будет происходить примерно раз в секунду, на втором (PD1) —= в два раза реже и так далее. Все эти последние варианты я привел скорее для иллюстрации, правильней всего будет поступить по первому варианту. Полностью программа тогда будет выглядеть так: /программа мигания светодиода /процессор 8515, частота 4 Мгц .include "8535def.inc"
.def temp = rl6 /рабочий регистр rjmp RESET /на обработчик прерывания по Reset reti /обработчик внешнего прерывания 0 отсутствует reti /обработчик внешнего прерывания 1 отсутствует reti /обработчик прерывания захвата Timer 1 отсутствует reti /обработчик прерывания сравнения A Timer 1 отсутствует reti /обработчик прерывания сравнения В Timer 1 отсутствует rjmp TIM1_OVF /на обработчик прерывания переполнения Timer 1 reti /обработчик прерывания переполнения Timer 0 отсутствует reti /обработчик прерывания интерфейса SPI отсутствует reti /UART прием закончен - обработчик отсутствует reti /регистр данных UDR в UART пуст - обработчик отсутствует reti /UART передача закончена - обработчик отсутствует reti /прерывание аналогового компаратора - обработчик отсутствует TIM1—OVF: /процедура обработки прерывания по переполнению таймера in temp,PortD /загружаем в temp регистр данных порта D sbrc temp,4 /если бит 4 в temp обнулен, /то пропустить следующий оператор rjmp SET__0 /если не обнулен, то переход на метку SET_0 sbi PortD,4 /установить в регистре данных порта бит 4 rjmp END_I /и перейти на конец процедуры SET_0: cbi PortD,4 /очистить в регистре данных порта бит 4 END_I: reti /выход из прерывания RESET: /процедура при запуске Idi temp,low(RAMEND) /загрузка указателя стека out SPL,temp Idi temp,high(RAMEND) /загрузка указателя стека out SPH,temp Idi temp,ОЬОООЮООО /устанавливаем бит номер 4 в temp out DDRD,temp /выводим это значение в /регистр направления порта D Idi temp,ObOOOOOOll /устанавливаем нужные биты в temp out TCCRlB,temp /запускаем Timer 1 с делителем 1/64 Idi temp,(1<<ТО1Е1) /устанавливаем бит TOIE1 out TIMSK,temp /разрешаем прерывание /Timer 1 по переполнению Cykle: rjmp Cykle /зацикливаем процессор
Я не буду комментировать подробно каждый оператор, т. к. в данном случае это нецелесообразно — абсолютно все команды при обращении ко всем регистрам я все равно прокомментировать не смогу, а останавливаться только на приведенных случаях не имеет смысла. Единственное, на что стоит обратить внимание— на запись ldi temp, (1<<toiei). Поскольку бит, обозначаемый как T0IE1, в регистре TIMSK имеет номер 7, то эта запись эквивалентна записи ldi temp, оыооооооо — можно писать так и так. Для того чтобы разобраться как следует, нужно взять описание AVR 8515, а также команд AVR-ассемблера и посидеть с ним над этим текстом. Разберем логику самой программы. Вначале выполняется все то, что написано после метки reset (при компилировании ассемблер заменяет обозначения меток в командах на реальные адреса). После того как все установки будут выполнены, процессор зациклится, выполняя пустой цикл перехода на адрес самой команды перехода (метка cykie), и поэтому ничего не будет делать. Как только запущенный таймер-счетчик переполнится, программа перейдет к процедуре прерывания по метке timi_ovf и выполнит переключение светодиода. Затем опять начнется выполнение пустого цикла— и так далее. А как можно переключать светодиод точно 1 раз в сек? Для этого надо задействовать другое прерывание таймера — по сравнению. Для того чтобы получить точно одну секунду из частоты 4 МГц/64, нам надо сделать так, чтобы прерывание возникало при появлении в счетчике числа 62 500 (посчитайте!), затем счетчик бы обнулялся и начинал считать заново. Это можно сделать следующим образом (строки нужно включить в Reset в качестве строк инициализации таймера): ldi temp,high(62500) /значение делителя для 1 сек out OCR1AH,temp /старший байт делителя ldi temp,low(62500) out OCRlAL,temp /младший байт делителя ldi temp,ObOOOOlOll out TCCRlB,temp /запуск таймера с пред, делителем 1/64 /уст. бит 3=1 означает / "очищать счетчик при совпадении" Осталось изменить само прерывание: ldi temp,(1<<ОС1Е1А) /разрешение прерывания /по сравнению A Timer 1 out TIMSK,temp Наконец, не забудьте переставить вектор обработки этого прерывания в начале программы на две строки выше, чем старого. Фактически в таком режиме счетчик-таймер Timer 1 по функциональности идентичен счетчикам с пред-загрузкой типа 5 61ИЕ11.
Естественно, значение, загружаемое в регистры сравнения ocriah-l, не обязательно должно быть равно в точности 62 500, и это дает удобный способ для точной подстройки интервала времени, могущего иметь определенный разброс из-за неточностей используемого кварца. К сожалению, подстройка получается достаточно грубая: 1/62500 часть соответствует уходу часов примерно на 1 с за 18 часов, т. е. более чем на 1 с за сутки, и попасть в точное значение можно только случайно. Если это критично, то единственный способ увеличить разрешающую способность подстройки заключается в следующем. Вы делаете все то же самое, но частота на входе счетчика должна составлять не 1/64 часть тактовой частоты, а частоту кварца напрямую (младшие три бита в регистре TCCR1B при этом должны быть установлены в величину 001). Тогда вы получаете прерывание с частотой 64 Гц. Заведите переменную-счетчик counter (.def counter = г17, вместо ri7 может быть любой другой незанятый регистр) и заставьте его увеличиваться на единицу с каждым прерыванием (inc counter). Как только он достигает величины 63 (cpi counter, 63— команда cpi означает "сравнить с непосредственным значением", как и idi, она годится не для всех регистров), вы его обнуляете и делаете то, что требуется (в данном случае переключаете светодиод). Получается искусственное деление на 64. Тогда, варьируя эту величину, с которой counter сравнивается, вы получите как бы переключение диапазонов подстройки с помощью изменения числа, загружаемого в регистр сравнения. Скажем, если изменить это число с 62 500 на 62 499, то при отсчете 64 прерываний вы получите общий коэффициент деления 3 999 936 вместо ровно 4 000 000 — что эквивалентно изменению исходной частоты сразу на 64 Гц. Но измените количество прерываний на 63, а число в счетчик загрузите, равное 63 492, — и вы получите общий коэффициент деления, равный 3 999 996— изменение частоты всего на 4 Гц. А при сочетании 62/64516 вы получите 3 999 992 — еще на 4 Гц. А вот еще меньшее значение числа прерываний вам взять не удастся — превысится емкость регистров сравнения, зато в большую сторону вы можете увеличивать как угодно. Чтобы расширить диапазон, можно счетчику для сравнения предлагать число вдвое меньшее, зато число прерываний отсчитывать равное 128. Так что, "играя" этими величинами, можно в конце концов добиться почти абсолютного совпадения коэффициента деления с частотой кварца, и все это я привел не только в качестве примера — при продаже прецизионного кварца вам гарантируют его долговременную и температурную стабильность, но абсолютную точность получить на производстве очень сложно, поэтому саму частоту придется при необходимости так или иначе подстраивать. В заключение укажем несколько неожиданную вещь: весь пример в некотором роде чересчур усложнен, потому что в данной задаче можно обойтись вовсе без процедуры обработки прерывания, если подключить светодиод
к определенному выходу, а именно ocia (15). Нужно сделать тогда все то же самое, но вместо ссылки на процедуру прерывания подставить просто reti (в этом случае действительно эту команду, а не что-то еще), а в начале программы (после Reset) добавить строки: ldi temp, ОЬОЮООООО ; это означает переключающую моду out TCCR1A,temp ;для выхода PD5 (ОС1А) То же самое можно сделать через второе прерывание сравнения (В), для которого имеется вообще отдельный выход: ocib (29). Можно одновременно сделать и то и другое — например, со сдвигом по фазе. Но пример выше все же не совсем зряшный и искусственный, потому что процедуру, подобную нашему обработчику, приходится использовать довольно часто, и она великолепно иллюстрирует некоторые приемы программирования для AVR. Так что советую разобраться в ней как следует и повторить, меняя различные параметры для лучшего понимания работы. Программирование UART Основной своей задачей в этой главе я поставил дать читателю представление о том, как делаются реальные программы для AVR. Тонкости работы с регистрами и командами, повторяю, можно прочесть в описании, но не всегда ясно, как полученные сведения объединить между собой в одной программе. Но книга не резиновая, и мы остановимся еще только на одной важной вещи: программировании UART. Дело в том, что даже если вы не собираетесь использовать коммуникацию с компьютером в своем устройстве, при отладке программ UART — незаменимая штука, я недаром в прошлой главе так подробно останавливался на его схемотехнике и практических реализациях. На практике это выглядит так: вы соединяете схему с компьютером через RS232, занимая один СОМ, а ко второму подсоединяете программатор. В нужные места программы вы вставляете команды посылки байт через UART и на экране компьютера наблюдаете результаты работы программы живьем. Все это несколько напоминает отладку в средах программирования для ПК (т. н. прогон программы в отладочном режиме с контрольными точками). Альтернативный способ отладки — использование AVR Studio, где вы с реальной схемой практически не работаете, моделируя ее на ПК. Излишне говорить, что этот вариант гораздо медленнее. Конечно, можно приобрести и некий "kit" — одну из специальных плат для отладки программ, но они весьма недешевы и в радиолюбительской практике не используются. Начнем опять с конца — как принять результаты обмена через COM-порт на компьютере? Для этого нужна программа, которая традиционно носит название "эмулятор терминала". В режиме DOS можно было воспользоваться пре
красной программой term90 (или term95), которая входила в состав пакета Norton Commander, а в Windows (по крайней мере, в Windows 95-98) предлагается программа HyperTerminal, которая сделана настолько "криво", что я не знаю ни одного человека, который сумел бы ей на практике воспользоваться. После долгих поисков я сам написал такую программу, "заточенную" именно под указанные задачи (так, она "умеет" принимать и посылать байты в кодировке шестнадцатеричной, десятичной или ASCII, в том числе, посылать из файла, ведет журнал обмена, поддерживает различные скорости и т. п.). Эту программу, а также компонент Delphi для работы с COM-портом (с исходными текстами и описанием) вы можете скачать со странички автора: http://uproar.fortunecity.com/puzzler/292/programm.htm. Отмечу, что в некоторых случаях при использовании этой программы пришлось столкнуться с недоступностью COM-портов в некоторых Wintel-системах, но в каждом таком случае эта проблема решается по-своему и к предмету данной книги отношения не имеет. Теперь о собственно программировании UART. Как вы видите из перечисления прерываний, за UART зарезервировано аж три прерывания. Пусть нужно принять один байт команды сверху (из компьютера) и передать в ответ несколько байт данных. На практике правильно организованный протокол приема/передачи может, например, выглядеть следующим образом. Задача (довольно типичная) состоит в том, чтобы принять команду (1 байт) от компьютера и послать в ответ нужную последовательность байт. Прежде всего, надо установить скорость обмена (сама величина устанавливается только по договоренности, и автоматизировать этот процесс довольно сложно, хотя в отдельных случаях и возможно, но обычно игра не стоит свеч). Она устанавливается, например, в процедуре по Reset сразу после запуска и последовательность команд выглядит так: ldi temp,25 /скорость передачи 9600 при 4 МГц out UBRR,temp /устанавливаем ldi temp, (1«RXEN | 1«TXEN | 1«RXB8 | 1<<TXB8 ) out UCR,temp / разрешение приема/передачи 8 бит Выбор делителя тактовой частоты (25 в данном случае) делается по таблице или по формуле, которая приведена в руководстве. Далее вы инициализируете прерывание "прием закончен" (все три прерывания uart инициализируются старшими битами rxcie, txcie и udrie в регистре ucr). Возникновение этого прерывания означает, что в регистре данных udr имеется принятый байт. Процедура обработки этого прерывания тогда выглядит так: UART_RXC: in temp,UDR ;принятый байт - в переменной temp cbi UCR,RXCIE /запрещаем прерывание "прием закончен"
<готовим данные, самый первый посылаемый байт должен быть в переменной temp> sbi UCR,UDRIE /разрешение прерывания "регистр данных пуст" reti Далее у нас почти немедленно возникает прерывание "регистр данных пуст". Обработчик этого прерывания состоит в том, что мы посылаем байт, содержащийся в переменной temp, и готовим следующие данные: UART_DRE: out UDR,temp /посылаем байт cbi UCR,UDRIE /запрещаем прерывание "регистр данных пуст" сготовим данные, следующий байт - в temp. Если же был отправлен последний нужный байт, то опять разрешаем прерывание "прием закончен" и далее rjmp на метку END__, иначе выполняем следующий оператор:> sbi UCR,TXCIE /разрешаем прерывание "передача закончена" END_: reti Обратите внимание на то, что переменная temp не должна в промежутках между прерываниями использоваться еще где-то, в противном случае ее надо сохранять, например, в стеке, но удобнее все же отвести для этого дела специальный регистр. Осталось только написать обработчик прерывания "передача закончена", он будет состоять из следующих двух команд: UART_TXC: cbi UCR,TXCIE /запрещаем прерывание "передача закончена" sbi UCR,UDRIE /разрешаем прерывание "регистр данных пуст" reti Такой относительно навороченный алгоритм хорошо работает, если мы должны организовать штатный протокол обмена с компьютером — при такой организации действий у нас контроллер не простаивает зря в ожидании, пока отправка (или прием) очередного байта закончится — в самом деле, т. к. при скорости 9600 отправка одного байта занимает более миллисекунды, то за это время можно успеть выполнить много полезной работы — несколько тысяч команд. Но когда экономия времени не критична, то хорошо работает упрощенный алгоритм, который вообще не использует прерывания. Он состоит в следующем: в начале программы (например, после перечисления векторов прерываний) вы записываете две коротких процедуры: Out_com: /посылка байта из temp с ожиданием готовности sbis USR,UDRE /ждем готовности буфера передатчика
rjmp out_com out UDR,temp /собственно посылка байта ret /возврат из процедуры Out_com In_com: /прием байта в temp с ожиданием готовности sbis USR,RXC /ждем готовности буфера приемника rjmp in_com in temp,UDR /собственно прием байта ret /возврат из процедуры In_com Обращение к процедуре in_com при этом вставляется в пустой цикл в конце программы: Cykle: rcall In_.com <анализируем полученный в temp байт и что-то с ним делаем, например, посылаем ответ через процедуру Out_com> rjmp Cykle /зацикливаем процессор При таком способе контроллер большую часть времени ожидает приема, выполняя проверку регистра udr (в процедуре in_.com), этот процесс прерывается только на время выполнения настоящих прерываний. Прерывания все равно должны выполняться много быстрее, чем байт, если он пришел, успевает в udr смениться следующим, так что мы ничего особо не потеряем. А процедура посылки Out_.com сама по себе может выполняться долго (если посылать несколько байт подряд), но также в основном будет заключаться в том, что контроллер будет ожидать очищения udr, и т. к. это не прерывание, то процедура в любой момент может быть прервана настоящим прерыванием, и мы опять же ничего не теряем. Но чтобы ничего действительно не потерять, при таком способе нужно быть очень внимательным: так, нужно следить за использованием temp. Правда, если мы будем применять процедуру out_com внутри процедуры прерывания, куда другое прерывание "влезть" не может, то temp меняться не будет, но тогда контроллер будет терять время на ожидание, так что лучше, кроме разве что расстановки контрольных точек при отладке программы, так не поступать. На этом мы закончим тему программирования для AVR "в общем" — надеюсь, читатель получил представление, как это делается, ну, а постичь эту премудрость в полной мере можно только на практике, к чему мы и перейдем в следующей главе. Кстати, с сайта Atmel можно скачать т. н. "applicaiton notes" — т. е. описания реализаций некоторых типичных процедур, например, 16-битовой арифметики, деления и умножения, преобразования двоичный/
двоично-десятичный, записи в EEPROM и т. п. К сожалению, те "аппноты", которые доступны в настоящее время, для практического применения не слишком полезны, ибо содержат просто описание алгоритма в виде блок-схемы в "квадратиках". Ранее они представляли собой исходные asm-тексты, и это было намного удобнее. Забавно, что все ошибки, содержавшиеся в ис-ходных текстах (в процедуре умножения, в реализации интерфейса I С), перекочевали в новые "аппноты" без изменения, а на все недоуменные письма (в том числе от собственных дилеров) в Atmel просто не отвечают — сказывается бюрократическая структура крупной корпорации. Так, с ошибками, эти "аппноты" и существует уже много лет, так что при их изучении нужно быть предельно внимательным и относиться к их содержанию критично.
Глава 32 Изобретаем велосипед. Настольные часы на микроконтроллере — В таком случае, купите мне, сударь, часы, — попросил Планше. — Возьми вот эти, — сказал Атос, со свойственной ему беспечной щедростью отдавая Планше свои часы. А. Дюма, "Три мушкетера" "Изобретением велосипеда" я назвал занятие по конструированию часов потому, что готовых часов предлагается много и на все вкусы, включая даже такие экзотические конструкции, как наручные часы, объединенные с мобильником или с флэш-драйвом. Сконструировать свои первые часы "для дома для семьи" меня заставила судьба: ЖК-индикаторы я не переношу как вообще, так и в частности — надо, чтобы часы было видно и ночью, т. к. будильником пользоваться не привык, а знать, стоит ли вставать или можно еще поваляться, следует. Между тем, я тогда попал в неудачный момент, когда во всей Москве не было часов со светящимися индикаторами — старинные советские конструкции, в которых малюсенькие голубенькие цифирки были еле видны за густой сеткой анода (такие люминесцентные индикаторы сделаны по технологии на основе сульфидов, которую применял еще Резерфорд в начале XX века для наблюдения за радиоактивным распадом), уже исчезли из продажи, а импортных на светодиодах еще "не завезли". В результате пришлось делать самому такие, какие нравится. Хотя я потом сделал еще пару конструкций, но эти часы безотказно работают уже вот скоро — на момент написания этих строк — седьмой год. И слава богу, что я их сделал, потому что то, что, наконец, появилось в продаже, проигрывает моей самодельной конструкции, по крайней мере, по двум статьям: по точности хода и по тому обстоятельству, что имеет ядовито-красные индикаторы без какой-либо возможности выбора. Правда, фирменные несколько меньше размерами и обладают функциями будильника, но последние мне без надобности, а реализовать их при надобности ничего не стоит. Причем выбор, как ни странно, по-прежнему очень мал. Так что, как видите, часы конструировать самостоятельно 183ак. 710
стоит. В дальнейшем мы попробуем объединить их с термометром, который мы сконструируем заново, на той же элементной базе. Кстати, отдельный вопрос — на какой же именно элементной базе все это делать? Во-первых, существуют, естественно, специальные микросхемы для часов. Мы их рассматривать не будем, потому что, как все специализированное, они "заточены" под определенную конструкцию (например, под ЖК-индикаторы), и изображать из себя Кулибина, подстраивая их под свои нужды, мы не будем — получится однозначно плохо. Есть и неспециализированные микросхемы часов, называемые еще RTC (Real Time Clock), которые умеют отсчитывать время (включая календарь и функции будильника), потребляют очень мало (типичная величина — 0,8 мкА), обладают встроенным прямо в чип кварцем (иногда — с возможностью подстройки) и выпускаются с самыми разнообразными интерфейсами: от параллельного до I С. Особенно преуспели в этом деле две фирмы: Dallas, он же MAXIM, и бывшая Seiko, ныне Epson. Это очень заманчивая возможность, т. к. за вас все сделано, и в то же время вам не навязывают саму конструкцию, которую вы можете сделать любой: от простых индикаторов до стрелочного варианта с шаговым двигателем. Как ни странно, несмотря на гибридную начинку, микросхемы эти не очень дороги — видимо, сказывается большой спрос. Альтернативой является реализация функций часов прямо на микропроцессоре, что проще в части проектирования системы и ее программирования. Такую конструкцию мы и рассмотрим. Наши часы будут простейшими, т. е. не будут осуществлять функции будильника и индикацию секунд (последняя в настольных часах не нужна и только раздражает своим постоянным миганием). Для того чтобы выбрать микроконтроллер из предлагаемых фирмой Atmel, подсчитаем, сколько нам надо выводов. Нам надо, во-первых, управлять четырьмя разрядами индикации (ЧЧ:ММ). Это мы будем делать в динамическом режиме, т. к. непосредственное управление предполагает 28 задействованных выводов, а динамическое всего 7 + 4=11. Затем нам надо засвечивать разделительный символ — в часах это традиционно двоеточие. Его, конечно, можно засветить постоянно, но лучше, когда оно мигает с не слишком высокой частотой (иногда можно увидеть конструкции, где разделительное двоеточие мигает быстро-быстро — это, конечно, недоработка, оно должно показывать недостающие на дисплее секунды). Наконец, нам надо часы устанавливать. Для этого минимально необходимо две кнопки (включение режима установки и собственно установка). Итого получилось по минимуму 14 выводов. Обратим внимание на МК 2313 — он выпускается в 20-выводном корпусе, в котором минимум 5 выводов должно быть занято под системные нужды (мы их перечисляли в главе 30 — это два питания, Reset и два вывода для подключе
ния кварца). Итого нам остается на все про все 15 выводов, что нас устраивает. Мы даже вроде получаем 1 резервный вывод, но ниже увидим, что на самом деле под все желательные дополнительные функции выводов нам будет не хватать, и придется изворачиваться. Итак, намечаем общий план действий. Во-первых, внешняя схема. Выбираем индикаторы большого размера (цифра 1" или 25,4 мм высотой) с общим анодом, т. е. типа SA10, если брать продукцию Kingbright. Лично я предпочитаю желтого свечения (например, SC10-21Y), но это не имеет значения. Поскольку падение напряжения у них может достигать 4 В, то от того же питания, что требует МК (5 В) питать их нельзя, и это даже удобно, как мы увидим в дальнейшем. Нам потребуется два питания: одно стабилизированное +5 В и второе нестабилизированное +12 В. Управлять разрядами индикаторов мы будем от транзисторных ключей с преобразованием уровня, а сегментами — от простых транзисторных ключей (т. к. питание индикаторов повышенное, то, к сожалению, управлять прямо от выводов процессора не получится). Эти ключи будут инвертировать сигнал, поэтому мы и выбрали индикатор с общим анодом — разряды нужно коммутировать на "землю", так что на транзисторы придется подавать лог. 1, чтобы их открыть. В то же время двойной ключ с преобразованием уровня сигнал инвертировать не будет, и выбранному разряду также будет соответствовать лог. 1, так что в обоих случаях управление получается в положительной логике (что совершенно не принципиально, но удобно для простоты понимания, что мы делаем). Резисторы в управлении сегментами (будем ориентироваться на напряжение питания 12 В) примем равными 470 Ом, тогда пиковый ток через сегмент составит примерно 20 мА, а средний — 5 мА (при динамическом управлении 4-мя разрядами). Всех восьмерок у нас быть не может, максимальное число одновременно горящих разрядов равно 24 ("20:08"), поэтому общее максимальное потребление схемы составит 24 • 5 = 120 мА + 10 мА схема управления, итого 130 мА. В качестве блока питания используем внутренности блока питания со встроенной вилкой с номинальным напряжением питания 10 В и током не менее 500 мА (такие продаются для некоторых игровых консолей). Напряжение на холостом ходу у него будет составлять примерно 13—14 В, под нагрузкой 130 мА оно сядет как раз до 11—12 В. Еще нам понадобится монитор питания и переключатель с сетевого питания на батарейки. Чтобы сделать схему совсем "юзабельной", добавим небольшую схему для сигнализации при необходимости замены резервной батарейки — пусть это будет наше ноу-хау, т. к. такого ни у кого нет. Эту схему удобно реализовать, "не отходя от процессора", на встроенном компараторе, но тогда нужно задействовать аж 18 выводов (12 под индикацию, 2 кнопки, 2 входа компаратора, 1 для его
выхода и еще 1 для монитора питания), а использовать процессор большего размера только для этой цели не хочется. Но еще больше не хочется добавлять какие-то внешние схемы. Поэтому мы поступим так. Мы используем один из входов компаратора также и под вторую кнопку. А на второй вход компаратора "повесим" дополнительно функцию монитора— сигнализировать о пропадании внешнего питания. Остается придумать, как обеспечить сигнализацию разряда батареи (т. е. обеспечить выход компаратора) — тут мы сделаем просто: пусть разделительный символ (двоеточие) мигает, когда все нормально, а когда батарея разряжена — горит постоянно. Таким образом мы получим наиболее экономичную схему с минимумом внешних элементов. Все это можно сделать проще, если использовать МК с большим числом портов (тот же 8515), но он и потреблять будет в два раза больше, и места займет немеряно — и все только потому, что мы захотели контролировать батарейку, которая, может быть, сядет этак лет через пять. 4 5 6 10 Reset PD0 PD1 XTAL2 XTAL1 INT0(PD2) PD3(INT1) PD4 PD5 GND t/пит (SLK) PB7 (MISO) PB6 (MOSI) PB5 PB4 (PB3) OC1 PB2 (PB1) AIN-(PBO) AIN + PD6 20 19 18 17 16 15 14 13 12 11 +5 В 1 2 з 7 8 9 AT90S2313 Рис. 32.1. Разводка выводов МК AT90S2313 (функции показаны применительно к нашей задаче) Теперь посмотрим на схему разводки выводов AT90S2313 (рис. 32.1) и выберем, что и к чему мы будем коммутировать. Во-первых, удобно использовать вход внешнего прерывания, например, INT1 (7) под кнопку, которая будет вводить часы в режим установки. От порта D (портов А и С в этом микроконтроллере нет) осталось шесть разрядов, четыре из которых мы задействуем под управление разрядами индикаторов: PD0 (2), PD1 (3), PD2 (6) и PD4 (8). Из восьми выводов порта В два задействованы под входы компаратора AIN+
(12— к нему мы подсоединим опорный источник для контроля батареи и с него будем снимать информацию о состоянии питающего напряжения и второй кнопки) и A1N- (13 — к нему подключим батарейку). Для управления миганием разделительного двоеточия удобно использовать вывод ОС1 (15), который управляется автоматически от таймера (см. главу 31). Под управление сегментами мы задействуем оставшиеся выводы: PD5 (9), PD6 (11), РВ2 (14) и РВ4—РВ7 (16—19). То, что выводы для управления индикаторами расположены не по порядку— это, конечно, не здорово, нам фактически придется управлять каждым разрядом по отдельности, но обойдемся. Режим Sleep мы использовать не будем, т. к. во всех его вариантах все замирает, и его применение обессмысливается — нам нужно, чтобы часы шли и при отключении от сети, иначе при малейшем сбое в подаче электроэнергии их придется устанавливать заново. При питании 4—5 В 2313 потребляет около 5 мА, так что можно рассчитывать на непрерывную работу от алкалайновой батарейки (трех экземпляров типа ААА) с емкостью порядка 1,5—2 А • ч в течение не менее 3-х недель. Кстати, именно этими сроками простейшая схема на микропроцессоре отличается в худшую сторону от схемы с использованием RTC. Там часы идут отдельно до тех пор, пока есть хоть какое-то питание (типичное минимально допустимое значение — 2 В). МК, который используется только в качестве устройства управления индикацией и установкой времени, спокойно можно "загонять" в Power Down, в результате при грамотном проектировании можно обеспечить время работы от батарейки в сотни раз большее, чем у нас. Но мы все же пока ограничимся простейшим вариантом — дело в том, что настольные часы и не предназначены для работы в автономном режиме, а для того, чтобы перенести их из комнаты в комнату или "пережить" отключение электричества на пару часов, возможностей нашей системы вполне хватит. Схема Вот, собственно, и все предварительные наметки, можно рисовать схему платы управления. Она показана на рис. 32.2. Схема проста, правда, некоторую громоздкость ей придают ключи управления индикаторами, однако все равно ее (без блока питания) можно без напряжения сил уместить на плату примерно 70x100 мм, а с некоторым напряжением — на меньшую. Игольчатый разъем XI типа PLD с 6 контактами — программирующий (в главе 31 мы договаривались, что я буду разводить его в соответствии с фирменным ISP-программатором Atmel). Все остальные внешние соединения, кроме питания — через такой же разъем, но с 16 контактами, два из которых — контакты "земля" и питание. Обратите внимание, что "подтягивающие" резисторы
по программирующим входам (кроме Reset, где он и так имеется) здесь не требуются, т. к. в нормальном режиме эти входы работают как выходы на достаточно низкоомную нагрузку. Рис. 32.2. Схема часов на МК AT90S2313 (плата управления) Х2 (PLD-16) 16 +12 В 15 GND 14 Кн2 13 Кн1 12 LED 11 Сегмент g 10 Сегмент( 9 Сегмент е 8 Сегмент d 7 Сегменте 6 Сегмент b 5 Сегмент а 4 Ед мин 3 Дес мин 2 Ед часов 1 Дес часов Плату индикации мы делаем отдельно (рис. 32.3). На ней мы ставим четыре индикатора и две управляющих кнопки, а также в точности такой же разъем PLD-16, как и на плате контроллера, причем он должен стоять на стороне платы, противоположной индикаторам. Разводка у него также должна быть идентичной. Эти разъемы мы соединим плоским кабелем наподобие того, что употребляется для подключения IDE-дисков в компьютере, только поуже — на 16 линий. Можно употребить и любой готовый кабель с равным или большим количеством линий, т. к. гнездовые части под разъемы PLD с любым количеством контактов можно надеть хоть всего на два контакта (если, конечно, не установлен чехол-направляющая, но нам вроде это ни к чему). Это решение не очень красивое, т. к. при этом кабельная часть разъема будет выходить за пределы ответной на плате, и это нужно предусмотреть в разводке, иначе такой большой разъем может во что-нибудь упереться. Изготовить же плоский кабель с разъемами самостоятельно без наличия специаль
ного инструмента практически невозможно, потому либо придется такой инструмент приобрести, либо попросить установить разъемы на кабель в любой фирме, которая занимается сборкой и ремонтом компьютеров. Минимальный стандартный разъем на кабель, подходящий под наш случай, будет скорее всего иметь 16 контактов, именно столько мы и предусмотрели. Рис. 32.3. Схема часов на МК AT90S2313 (плата индикации) Схема должна работать следующим образом. При включении питания цепочка R1C1 обеспечивает надежный Reset. Ставить эту цепочку необязательно— производитель МК гарантирует нормальный Reset и без каких-либо внешних элементов, однако для лучшей защиты от помех это не помешает, ведь часы у нас должны работать по идее годами в круглосуточном режиме. После установления питания диод VD2 "запрет" батарею, которая имеет напряжение заведомо ниже, чем на выходе стабилизатора. Оба диода — с переходом Шоттки, падение напряжения на них не превышает 0,2—0,4 В. Собственно часы заработают сразу, однако их надо установить. Для этого надо кратковременно нажать кнопку Кн1 (S1 на рис. 32.3). Тогда младший
разряд ("ед. минут", индикатор Н4) начнет мигать. При длительном нажатии кнопки Кн2 (S2) цифры на этом разряде будут меняться с частотой раз в секунду. "Поймав" нужное число, отпустите кнопку Кн2, еще раз кратко нажмите Кн1, тогда начнет мигать следующий разряд и т. п. Чтобы выйти из режима установки, надо "пройти" все разряды. Чтобы установить часы точно на нужное время, установите число минут равным текущему, "пройдите" все разряды и, когда последний разряд десятков часов еще мигает, коротко нажмите кнопку Кн1 примерно за секунду до момента, когда должна произойти смена минут (если нажимать долго, то часы опять перейдут в режим установки с начала). В момент следующего после нажатия отсчета времени в наших часах — в пределах секунды — эта смена тоже произойдет, и часы продолжат идти синхронно с теми, по которым производилась установка. В действительности происходит следующее: когда вы нажимаете кнопку Кн1 первый раз, ход часов прекращается, и начнется он только после последнего в цикле установки (пятого по счету) нажатия кнопки Кн1, при этом число секунд во внутренних регистрах часов устанавливается равным 59 и через секунду часы начинают ход со следующей минуты. С кнопками разобрались, теперь разберемся с нашими компараторными "примочками". В нормальном режиме кнопка Кн2 разомкнута и на работу схемы не влияет. Напряжение батареи фактически напрямую (делитель R4/R5 делит сигнал в отношении ЗОО/ЗО1, и эта ошибка не имеет значения) попадает на инвертирующий вход компаратора. Это напряжение сравнивается с напряжением на стабилитроне VD3, равном примерно 3,9 В (стабилитрон обязательно используем маломощный в стеклянном корпусе или соответствующий импортный, в другом случае сопротивление резистора R35 надо снизить примерно в два-три раза). Когда напряжение батареи упадет ниже этого уровня (выбранного с некоторым запасом, т. к. часть напряжения батареи упадет на диоде VD2, кроме того, смена батарейки может произойти не сразу), то компаратор перебросится в состояние лог. 1 по выходу, программа МК это зарегистрирует, и разделительная точка (пара светодиодов VD1 и VD2, рис. 32.3) перестанет мигать и будет гореть постоянно. Восстановление произойдет, как только батарею сменят на свежую. Та же реакция будет, если отключить батарею тумблером "Бат" (S1 на рис. 32.2) или удалить ее. Для того чтобы в этих случаях вход компаратора не оказывался "висящим в воздухе", предназначен резистор R5. Ток через него настолько мал (около 1,5 мкА), что на разряд батареи это не оказывает влияния. С7 защищает вход от наведенных помех. При пропадании внешнего питания запирается диод VD1, а диод VD2 открывается, и напряжение батареи попадает на питание МК. Резистор R6 вкупе с развязывающим конденсатором С2 служат для большей устойчивости
работы МК в момент перепада напряжений при переключении питания, для той же цели служит конденсатор С7, установленный параллельно кнопке Кн1 (иначе может спонтанно возникать прерывание, и часы войдут в режим установки). Одновременно с переключением питания становится равным нулю напряжение на стабилитроне, а т. к. при этом стабилитрон представляет собой обрыв в цепи, то установлен резистор R36, который служит тем же целям, что и резистор R5. Компаратор работать перестает (точнее, он всегда будет показывать "нормальную" батарею), но нас это не волнует, т. к. индикации все равно нет. Программа контроллера периодически опрашивает значение логического уровня на этом выводе (3,9 В эквивалентно лог. 1) и, когда оно становится равным нулю, принимает меры к снижению потребления, в первую очередь за счет отключения внешних портов. Как только внешнее питание восстанавливается, автоматически возобновляется нормальный режим работы. Тумблер "Бат" нужен для отключения батареи, если вы хотите остановить часы надолго, а вот тумблер для включения питания ставить не следует (разве что на время отладки). Рис. 32.4. Кнопка с лапкой-рычагом В качестве псевдосенсорных кнопок с легким нажатием удобно использовать обычные микропереключатели (известные в отечественном варианте под названием МП-1), но со специальной металлической лапкой-рычагом, которая предназначена для того, чтобы уменьшить усилия нажатия и увеличить его зону (вообще эти кнопки предназначены для использования в качестве концевых выключателей). Подойдут импортные кнопки типа SM5 (см. рис. 32.4). Тогда нам не придется портить внешний вид фальшпанели кнопками или устанавливать их где-то сзади, а можно установить их прямо на плату индикаторов и просверлить в дымчатом оргстекле напротив них маленькие отверстия, через которые кнопку можно нажимать зубочисткой или другим острым предметом. Чтобы отверстие в оргстекле выглядело "фирменно", сверлить следует осторожно, на малых оборотах, затем вручную сверлом сделать аккуратную фаску с лицевой стороны и обработать отверстие мае-
лом, чтобы оно не белело. Подобное решение еще хорошо тем, что случайное нажатие кнопок совершенно исключено. После изготовления платы индикации сначала следует установить с обратной стороны разъем, а затем "обдуть" лицевую часть платы черной автомобильной эмалью из баллончика не слишком густо (достаточно одного слоя), чтобы краска не затекла в отверстия. Потом на черную плату уже монтируются индикаторы, светодиоды разделительной точки и кнопки. Светодиоды нужно выбирать того же цвета, что и индикаторы (имейте в виду, что сама по себе характеристика "желтый" или "зеленый" еще ни о чем не говорит— только в таблице, приведенной в главе 7, два зеленых цвета и три красных, а у разных фирм их может быть еще больше, и чтобы разница не бросалась в глаза, приготовьтесь к тому, что покупать придется несколько разновидностей и подбирать оттенок по месту). Под индикаторы указанного выше типоразмера подойдут светодиоды диаметром 3 мм, обычные 5-миллиметровые будут слишком выделяться, а под меньшие индикаторы потребуются светодиоды с еще меньшим диаметром. "Суперяркие" светодиоды сюда не подойдут решительно. Светодиод при этом желательно иметь с диффузным рассеиванием, чтобы было одинаково видно со всех углов зрения. Так что вопрос подбора LED может оказаться непростым — так, в упомянутой выше конструкции мне так и не удалось подобрать тип, удовлетворяющий всем перечисленным требованиям, и пришлось устанавливать светодиоды в прозрачном корпусе. Для каждого типа светодиодов придется подобрать резистор R34 (см. рис. 32.2) согласно необходимой яркости (для прозрачных светодиодов номинал его будет больше, для диффузных— меньше). Устанавливать эту пару диодов следует не прямо друг над другом, а с некоторым наклоном соответственно наклону цифры индикатора. Неплохо будет выглядеть использование прямоугольных (5x2 мм) светодиодов под наклоном. Я останавливаюсь на всех этих подробностях потому, что они имеют решающее значение для того, будет ли ваша конструкция выглядеть фирменно или напоминать продукт творчества членов кружка юных техников из деревни Гадюкино. Затрачивать столько сил и средств на конструирование и пренебречь при этом внешним видом просто не имеет смысла — если вы, конечно, конструируете бытовой прибор, а не утилитарную схему для рабочих нужд, но и в последнем случае гораздо удобнее брать в руки аккуратную и удобную в работе конструкцию, а не голую плату с болтающимися проводами. Когда мы соединим плату управления с платой индикации кабелем и подключим питание, схема заработать сразу не может, потому что нужно запрограммировать МК. Для этого вы должны подключить к разъему XI программатор (пометьте на плате первый вывод разъема, чтобы не перепутать при подключении) и загрузить hex-файл с программой. К написанию последней мы и перейдем.
Программа Полностью текст программы приведен в приложении 6. Здесь мы опишем на словах общую логику ее работы. При включении питания процессора все регистры обнулены, программа начинает работу с команды по метке RESET. Здесь она устанавливает соответствующие порты на выход (все, кроме двух входов компаратора и входа кнопки Кн1), затем делает нужные установки для таймеров и разрешает соответствующие прерывания. Timer 0 у нас будет по событию переполнения управлять разрядами в режиме динамической индикации. При заданной частоте на входе счетчика Timer 0, равной 1/8 от тактовой частоты (4 МГц), частота управления разрядами получится равной 4 МГц/8 = 500 кГц/256 (емкость счетчика), т. е. чуть меньше 2 кГц, а сами разряды (4 шт.) будут сменяться с частотой почти 500 Гц, что однозначно превышает порог восприятия мигания. Timer 1 у нас будет управлять собственно отсчетом времени по прерыванию сравнения. Для этого в регистр сравнения загружается число 62 500, а предварительный коэффициент деления задается равным 1/64, тогда прерывание таймера будет возникать с частотой 1 Гц (см. главу 31). Кроме этого, разрешается прерывание от кнопки Кн1 (INT1). По окончании всех установок МК переходит в непрерывный замкнутый цикл, в котором он отслеживает состояние вывода 12, куда подключен стабилитрон. Если на этом выводе лог. 0, то для МК это означает, что внешнее питание пропало, и он выполняет процедуру Disable, в которой все порты переводятся в состояние "на вход" и обнуляются (чтобы не остался подключенным "подтягивающий" резистор). При этом устанавливается бит 1 регистра Flag, и при установленном этом бите процедура управления разрядами через прерывание Timer 0 начавшись, ничего не делая, сразу же заканчивается. Запрещается также переход в режим установки. Как только питание восстанавливается, МК выполняет процедуру Restore и часы начинают работать как ни в чем не бывало. Проверяется работа этой части очень просто: если режим установки не инициализирован кнопкой Кн1, то нажатие кнопки Кн2 имитирует пропадание питания, при этом все индикаторы должны погаснуть и восстановиться после ее отпускания. В режиме же установки пропадание питания не может отслеживаться, поэтому, если вдруг (невероятный случай) это произойдет, то придется, видимо, доделывать установку после восстановления питания (при этом потребление от батарейки будет повышенным). Состояние компаратора отслеживается через его прерывание. Имейте в виду, что аналоговый компаратор (почему-то) изначально включен, так что для этого никаких специальных действий производить не надо. Достаточно разрешить прерывание (по умолчанию оно возникает при любом переключении
компаратора в обе стороны), в котором затем отслеживать состояние выхода, т. е. бита 5 (АСО) в регистре ACSR. Если указанный бит равен лог. 1 (батарейка села, компаратор переключился из 0 в 1), то мы вместо переключающего режима для выхода ОС1 заставляем при каждом прерывании Timer 1 записываться туда лог. 1, и двоеточие горит все время. При обнулении бита (компаратор переключился из 1 в 0) восстанавливаем переключающий режим, и двоеточие опять станет мигать. Проверить эту процедуру тоже легко — отключением батарейки с помощью тумблера. В нормальном режиме сразу после включения питания каждые 0,5 мс будет выполняться процедура управления индикаторами по прерыванию Timer 0. Счетчик разрядов POS увеличивает свое значение с каждым этим прерыванием (в конце процедуры), но реально считает лишь в пределах двух бит (т. е. принимает значения 0, 1, 2 и 3), т. к. остальные биты каждый раз обнуляются командой andi POS,3. Сначала все выводы портов (управляющие и разрядами, и сегментами) обнуляются, затем устанавливается в лог. 1 разряд, соответствующий текущему значению счетчика POS. Однако в режиме установки для разряда, выбранного состоянием регистра set_up (т. е. того, над которым производятся манипуляции), это происходит только, если младший бит счетчика count = 0. Так как счетчик count инкременируется в процедуре Timer 1 (если задан режим установки), то выбранный разряд каждую вторую секунду не зажигается, в результате чего мигает с частотой в 0,5 Гц. В свою очередь это происходит только, если не нажата кнопка Кн2 (бит 0 порта В равен лог. 1), в противном случае индикация происходит нормально (иначе установка была бы неудобна). Далее в процедуре происходит определение того, чему соответствует текущий разряд (единицы минут, десятки минут и т. д.), и вызывается процедура установки бит в выводах портов, управляющих сегментами, в соответствии с текущим значением разряда. Сама процедура установки сегментов в три этапа (вызов SEG SET, перебор значений и вызов одной из процедур OUT x, наконец, собственно установка) может показаться слишком громоздкой, но поскольку у нас разряды управления разрознены, лучше придумать что-то трудно. Два слова о том, как можно было бы организовать эту процедуру, если бы семь сегментов соответствовали бы, к примеру, семи первым битам одного порта (В). В этом случае можно было бы разместить прямо в программе (побайтно) так называемые маски битов, соответствующие включенным сегментам для каждой цифры подряд по возрастающей от 0 до 9, тогда каждой цифре бы соответствовал адрес в памяти, равный адресу маски для 0, плюс сама цифра. Загружая такой байт-константу из памяти программ (для этого есть специальная команда LPM), его можно было бы сразу помещать в. порт В, т. е. устанавливать сегменты буквально двумя-тремя командами. Однако в нашем случае пришлось бы такую маску еще распределять между разными битами разных портов, так что вся красота пропала
бы, а фактическое сокращение времени выполнения было бы небольшим, т. к. реально в нашей программе выполняются только несколько команд ветвления подряд (плюс, конечно, вызовы процедур). Причем для нашей программы время выполнения в таких пределах вообще несущественно. Впрочем, пытливый читатель, несомненно, укажет мне на еще одну, прямую возможность: реализовать программный дешифратор в соответствии с уравнениями в главе 21 (зря что ли старались?). Это, разумеется, возможно, но хотел бы я посмотреть на того программиста, который будет писать программы для МК (и не только для МК) в таком стиле. Попробуйте — попытка не пытка. Процедура посекундного отсчета времени по Timer 1 сначала отслеживает режимы (есть ли питание и задан ли режим установки). Если режим установки задан (предварительным нажатием кнопки Кн1), то осуществляется процедура установки с отслеживанием состояния кнопки Кн2 и количества предварительных нажатий Кн1, которыми через состояние регистра set_up задается текущий номер устанавливаемого разряда. Счета времени при этом не происходит. Прерывание INT1 задано по уровню лог. О, т. е. должно происходить все время, пока нажата кнопка Кн1. Чтобы этого не произошло, при возникновении прерывание тут же запрещается и разрешается только по прошествии двух прерываний от Timer 1, т. е. минимум через 1, максимум через 2 с — смотря в какой момент между прерываниями вы попали. При последнем (пятом) нажатии режим установки отменяется, и число секунд устанавливается равным 59. Если никаких режимов не задано, то происходит отсчет времени в соответствии с двадцатичетырехчасовым циклом, и каждый раз устанавливаются значения единиц и десятков минут и часов. Двенадцатичасовым циклом, когда еще надо указывать "AM" и "РМ", пусть развлекаются супостаты. Без сомнения, вы легко сможете доделать эту конструкцию, добавив в нее, к примеру, функции будильника. Причем это можно сделать даже без переделки схемы, если "повесить" функции установки и включения будильника на те же кнопки, разделив их с простой установкой за счет отсчета времени удержания кнопки (т. е. между нажатием и отпусканием). Сложнее, правда, будет обеспечить выход на "пищалку", но его можно "повесить" на ту же мигалку (управление разделительными светодиодами), если при срабатывании будильника заполнять включенное состояние мигалки частотой 2 кГц управления разрядами — например, переключая с этой частотой вывод ОС 1 то на вход, то на выход (при этом в обычном режиме "пищалка" будет еле слышно тикать). Но, разумеется, никто вас не заставляет жаться и применять именно МК 2313 — возьмите 8515, где выводов гораздо больше и все окажется куда проще. Тем более что в этом случае можно придумать и еще что-то, например, добавить маленькие разряды секундомера в углу передней панели. А мы сейчас перейдем к другой "примочке": как грамотно добавить к таким часам термометр.
Глава 33 Шампунь и кондиционер в одном флаконе. Как соединить часы с термометром ... но подробности мне неизвестны,— договорил Арамис. А. Дюма, "Три мушкетера" Собственно, в чем проблема, спросите вы: вставьте в один корпус с часами тот весьма достойный термометр, который мы конструировали в главе 26, и все дела. Но такое решение некрасиво, и вот почему: а если вы захотите добавить еще и датчик давления? Измеритель влажности? Тоже делать для каждого из них отдельную схему? Это, как говорил один мой начальник, есть "неконцептуальное" решение. Концептуальным здесь было бы использование многоканального общего АЦП, которое управляется от МК. Таких АЦП предлагается очень много, но в данном случае, самое удобное — использовать АЦП, прямо встроенное в контроллер. Почему в данном случае, а не вообще и всегда? Потому что такие АЦП имеют довольно средненькие характеристики: всего 8 или 10 разрядов, чего в целом ряде случаев может оказаться недостаточно (10 разрядов— это 1024 градации или 0,1% разрешающей способности). К тому же рядом процессор шумит, что не здорово. Но поскольку мы не конструируем "супер-пупер"-измерительную систему, нас это устроит. Итак, выбираем МК AVR 8535 со встроенным 8-канальным 10-разрядным АЦП. Восьми каналов нам хватит хоть на целую измерительную лабораторию. Второй вопрос: как организовать индикацию? Если мы пойдем традиционным путем, т. е. организуем индикатор термометра отдельно, то тут и обсуждать нечего: просто добавится еще три (соответственно числу разрядов в термометре) линии управления разрядами и несколько расширится процедура управления индикаторами по Timer 0. Однако добавление еще одной тройки индикаторов (давления) такая система еще выдержит (получится десять управляемых разрядов), а вот с дальнейшим расширением (влажность,
два разряда) может получиться уже не очень хорошо: при динамическом управлении с частотой 2 кГц каждый разряд будет меняться с частотой 166 Гц, и это может быть заметным для глаза. Есть несколько путей выхода из этого положения, причем решение с увеличением частоты включения разрядов отбросим как неэффективное: при 4 МГц МК может уже не справиться (надо ведь еще и АЦП опрашивать и обсчитывать результаты для каждого канала). Более приемлемый выход из положения: разделить индикаторы на две группы, управляя одновременно двумя разрядами, причем чем больше индикаторов, тем выгоднее такое управление: при 12 разрядах нам понадобится только один лишний вывод управления (было 12 разрядных и 7 сегментных, стало 6 разрядных и 14 сегментных), при 14 — их количество останется тем же, а при 16 — даже один выигрываем. В случае 17 разрядов (часы с секундами, температура внутри и снаружи, давление и влажность) это вообще единственный путь, но не забудьте, что нам банально может не хватить выводов: как минимум 2 под кнопки установки часов, 2 под RS232-nopT (коэффициенты для датчиков корректировать удобно через компьютер), 1 под светодиоды для разделительной точки (при наличии секунд необязательна), 2 под знаки "минус"/"плюс" для температуры (хотя для внутреннего термометра это и необязательно), наконец, 5 под входы АЦП (четыре датчика и контроль батарейки). Итого (без отдельных кнопок для будильника и с вычетом необязательных) 10 выводов, да еще 9 + 14 = 23 вывода управления индикацией, всего 33, и одного вывода нам уже не хватает (в 8535 всего 40 выводов, причем под системные нужды занято целых 8: кроме тех, что и в 2313, еще 2 отдельных питания и опорное напряжение АЦП). Так что без внешнего демультиплексора (лучше всего на управление разрядами) в такой системе не обойтись. А если еще захочется использовать внешнюю микросхему RTC (самое грамотное решение, вообще-то), да вдруг и с параллельным выходом, с которым иметь дело куда проще, чем с последовательным... Придется переходить на mega!03 или mega 128, а с ними иметь дело из-за планарного корпуса несколько сложнее. Впрочем, есть и еще один путь, традиционный для уличных табло: все вывести на один индикатор (4-разрядный) и подключать к нему попеременно все величины. Это удобное решение с точки зрения построения системы и ее компактности, но результат нельзя назвать красивым: индикатор для часов должен отличаться промежутком между разрядами, даже если разделительная точка не используется. Можно, наконец, как-то скомбинировать эти решения. В общем, простор для творчества имеется. Ввиду такого большого количества вариантов описывать схему полностью я не буду, простейший вариант индикации с одним каналом измерения температуры читатель сам сможет реализовать несложной модификацией программы часов из предыдущей главы. Остановимся на том, как реализовать функции АЦП и какие подводные камни тут могут встретиться.
Подключение датчиков давления и влажности проблемы не представляет ввиду их однополярного выхода со стандартизированным диапазоном, укладывающимся в напряжение питания 5 В (см. главу 27), остается только преобразовать масштабы, чтобы получить физические величины. Правда, с этим связан один нюанс, который также справедлив и для контроля батарейки — если датчик температуры мы конструируем сами и нам несложно (и даже предпочтительно) в нем реализовать принцип относительных (логометрических) измерений, заведя опорное напряжение АЦП от того же питания, что и датчики, то в измерителях давления и влажности влияние изменения напряжения питания на выходной сигнал, естественно, специально ослаблено. Не говоря уж о батарейке, в которой оно вообще не зависит от питания схемы. Поэтому в этих случаях нам бы следовало устанавливать отдельный прецизионный источник опорного напряжения. Однако опыт показывает, что можно вполне обойтись и одним напряжением питания 5 В в качестве питания цифровой части, аналоговой и опорного сигнала АЦП, если аккуратно развязать питание цифры и аналога и не питать от этого напряжения сильно потребляющие схемы вроде индикации. Если вы уж очень въедливый, то можно поставить отдельный источник для аналоговой части (он же опорное напряжение), как мы и поступим в дальнейшем. Использовать прецизионные опорные источники типа МАХ875 для этой цели не получится, т. к. они не позволяют получить большой выходной ток из-за перегрева кристалла (он ограничен величиной порядка 10 мА) и для питания нескольких датчиков их выход придется умощнять, что сводит на нет всю прецизионность. Практически проще поставить что-то типа обычного LM78L05 в надежде, что температура внутри корпуса не будет слишком меняться. Вариант схемы по минимуму — датчик температуры и контроль батареи — показан на рис. 33.1. Показана только аналоговая часть и блок питания (из функциональности выводов процессора показано только то, что может потребоваться в нуждах обсуждаемой схемы). Она обеспечивает для канала температуры достаточно малую (из-за относительности измерений) погрешность порядка 0,2—0,3 °C на диапазон от -50 до +50°, а для батареи погрешность, сами понимаете, нам не столь уж и важна, пусть будет хоть 5% (реально это гораздо меньше, в пределах 1—2% без дополнительной калибровки). Сначала о блоке питания. Он выдает четыре напряжения, два из которых (+5 Ва и -5 В) используются для питания аналоговой части, +5 Вц используется для питания цифровой части, а +12 В (нестабилизированное и даже без сглаживающего фильтра, т. е. пульсирующее) — для пйтания индикаторов. Решение с отсутствием фильтра по напряжению для питания индикаторов не только экономит место, но и ведет к уменьшению влияния бросков тока (при заряде емкости фильтра в канале с большим током потребления) через сетевой
трансформатор на остальные напряжения питания (броски, естественно, останутся, но они будут носить не импульсный, а синусоидальный характер с частотой 100 Гц, что отрабатывается стабилизаторами несравненно лучше). Учтите, что напряжение питания индикаторов при этом надо считать по действующему значению на выходе трансформатора, как для переменного тока, за вычетом падения напряжения на выпрямительном мосте, поэтому напряжение обмотки должно быть на уровне 14 В. Рис. 33.1. Схема датчика температуры и контроля батареи на МК AT90S8535 и блок питания для нее "Земель" образуется целых три, все они, как вы видите, объединены в одной точке — у источника питания, там, где расположены сглаживающие конденсаторы фильтров на выходе выпрямительных мостов, далее их нужно "тащить" раздельно. Привычным знаком "±" при этом обозначена аналоговая земля (GNDa). Чтобы отслеживать пропадание сетевого питания, нужно либо ставить монитор питания, либо делитель напряжения, подсоединенный ко входу стабилизатора +5 Вц, так, чтобы на выходе этого делителя напряжение
составляло около 4 В, и подсоединять его к отдельному входу МК. Штатное решение с монитором (типа, например, МС34064) хорошо тем, что в случае, если вам требуется только сохранять содержимое EEPROM, то можно его прямо присоединить к выводу Reset, экономя драгоценные выводы. Зато делитель срабатывает раньше (т. к. присоединен ко входу стабилизатора). Вывод, к которому присоединен делитель, следует защитить от случайного перенапряжения диодом (мало ли что с сетью бывает), катод которого присоединить к напряжению на выходе стабилизатора. Стабилизаторы типа LM2931 вместо любимых LM7805 выбраны не случайно — выход такого стабилизатора запирается при исчезновении напряжения на входе, что позволяет обойтись без лишнего диода при переключении на батарейное питание (сравните со схемой на рис. 32.2). Выбрать готовый трансформатор для такого блока питания — не совсем простое дело. Поэтому, если вам обмоток не будет хватать, смело выбирайте тороидальный трансформатор на напряжение 10—14 В (которое будет использоваться для индикаторов), измерьте на нем количество витков на вольт (как описано в главе 10) и поверх существующих обмоток домотайте три одинаковых обмотки на 7—8 В каждая, проводом не меньше, чем 0,3 мм в диаметре. Удобнее всего их мотать одновременно сложенным втрое проводом заранее рассчитанной длины. Батарея подключена ко входу АЦП напрямую. Аналоговая часть схемы включает токовый мост для датчика температуры (идентичный тому, что мы использовали в главе 26, но с несколько иными параметрами) и измерительный усилитель, все это построено на счетверенном операционном усилителе МАХ479. Как и в схеме на рис. 26.2, темным цветом выделены прецизионные резисторы (типа, например, С2-29В). Схема рассчитана на использование такого же датчика, как и там (т. е. обмотка малогабаритного реле с сопротивлением примерно 800 Ом при 20 °C). Ток задан на уровне 1,33 мА, тогда весь диапазон изменения напряжений на выходе моста при диапазоне 100 °C составит 400 мВ. Коэффициент усиления измерительного усилителя мы устанавливаем чуть больше 12, тогда диапазон выходных напряжений всей схемы составит около 4,9 В, т. е. мы будем использовать весь диапазон АЦП (от 0 до Uon) в полной мере с некоторым запасом. Резистор R4, который устанавливает нижнюю границу диапазона, нужно выбирать равным не сопротивлению датчика при 0°, как в той схеме, а равным сопротивлению его при нижней требуемой температуре, т. к. АЦП контроллера не умеет работать с отрицательными (относительно (/оп) напряжениями. При указанных на схеме номиналах нижняя граница диапазона температур будет около -47°, а верхняя — около 55 °C. Разумеется, все эти величины придется пересчитать
на реальный датчик, но высокой точности не требуется, достаточно установить все с некоторым (минимальным) запасом, потому что окончательную калибровку мы будем производить путем изменения коэффициентов пересчета в программе МК. С подобной схемой объединенного устройства часы-термометр-барометр можно ознакомиться в публикации автора [30]. Программа Поскольку МК у нас 8-разрядный, а АЦП — 10-разрядный, то коды на его выходе в диапазоне от 0 до 1023 будут содержаться в двух байтах: назовем их AregLB (младший) и AregHB (старший) для батареи и AregLT (младший) и AregHT (старший) для температуры и выберем для их хранения регистры от roi до г04. Как организовать получение кодов АЦП и запись их в эти регистры, мы узнаем далее, а пока предположим, что они имеются, и начнем с их обработки. Для этого мы также предположим, что уже есть программа часов, организованная так же, как и в предыдущей главе, и в ней есть процедуры TIM1 (раз в секунду) и ттмо (примерно каждые 0,5 мс). Итак, АЦП будет нам выдавать числа в диапазоне от 0 до 1023 при изменении входного напряжения от 0 до Uon, т. е. в данной схеме примерно до 5 В. Для датчика температуры точное значение Uon не имеет значения, т. к. калибровка будет производиться по показаниям прибора ("сквозным каналом"), но для батареи, строго говоря, надо измерить точное значение на выходе стабилизатора +5 Ва. Мы будем здесь предполагать, что оно равно ровно 5 В. Батарейка Для батарейки расчет процедуры преобразования в физические величины элементарно прост. Пяти вольтам будет соответствовать код 1023, что с погрешностью менее 2,5% равно удвоенному значению этого напряжения в милливольтах. Просто поделим число на выходе АЦП на 2 (сдвигом разрядов вправо командой isr) и получим почти то, что надо. Вся "фишка", однако, заключается в том, что нам это не требуется вообще — не будем же мы ставить индикаторы для того, чтобы показывать напряжение? Контролировать полученную величину удобно трехпозиционным индикатором, например, двухцветным светодиодом, который горит зеленым — если с батарейкой все в порядке, красным — если она полностью села и ее надо менять, и мигает с красного на зеленый — если она подсела, но еще работоспособна. Пороги выберем такие: норма— если напряжение выше примерно 4 В, нижний допустимый предел — примерно 3 В (предельно допустимое минимальное
напряжение для обычного AVR составляет 2,7 В), в промежутке надо бы озаботиться заменой. Вообще-то, несложно ввести и четвертое состояние — когда батарейка полностью отсутствует— и гасить при этом светодиод вообще, но мы не будем усложнять. Имейте в виду, что при отсутствующей батарейке на высокоомном входе АЦП может накапливаться потенциал за счет токов утечки диода VD5 и система будет "делать вид", что батарейка имеется. Для устранения этого эффекта достаточно зашунтировать конденсатор СЮ резистором примерно в 3 МОм, как и в схеме из предыдущей главы. Соответствующие значениям порогов коды рассчитываются по формуле: U 1023/5, т. е. они будут равны 614= 266h = 0010 ОНО ОНОЬ(ЗВ) и 818 = 332h = ООН ООН 0010b (4 В). Вот как можно организовать обработку этих значений. Светодиод (двухцветный) подключен к выводам 20 (PD6 — горит красным) и 21 (PD7 — горит зеленым), установленный бит 3 в регистре Flag означает, что в процедуре Т1М1 эти биты надо попеременно переключать. Естественно, их заранее нужно сконфигурировать на выход. Для регистров от 0 до 15 нельзя осуществлять операции с непосредственным значением, потому сравнение делается через рабочий регистр temp. Куда именно вставлять эту процедуру, мы обсудим позже. ADC_proc: ;обработка кода батареи cbr Flag, ОЬООООЮОО /сбрасываем бит мигалки mov temp,AregLB /загружаем в temp младший АЦП cpi temp,0x66 /сравниваем с младшим от 3 В ldi temp,0x02 /загружаем в temp старший от 3 В ср с AregHB,temp /сравниваем старшие brsh contC /если больше или равно, то далее cbi PortD,7 / гасим, если горел зеленым sbi PortD,6 / горим красным rjmp contT /на обработку температуры contC: mov temp,AregLB mov ’ temp,AregLB /загружаем в temp младший АЦП cpi temp,0x32 /сравниваем с младшим от 4 В ldi temp,0x03 /старший от 4 В cpc AregHB,temp /сравниваем старшие brsh contG /если больше, то далее sbr Flag, ОЬООООЮОО /напр. упало - мигать будем rjmp contT /на обработку температуры contG: cbi PortD,6 sbi PortD,7 /если норма, будем гореть зеленым
COntT: <обработка температуры> ret ;конец процедуры ADC_proc Процедура мигания (в процедуре по таймеру 1): sbrs Flag,3 /если флаг стоит, будем мигать г jmp TIME__calc /иначе на продолжение sbis PinD,7 /PD7=1, если горели зеленым г jmp GREEN sbi PortD,6 ;горим красным cbi PortD,7 r jmp TIME_calc / на продолжение GREEN: sbi PortD,7 /горим зеленым cbi PortD,6 Т1МЕ_са1с: <счет времени> Температура Теперь обратимся к тому фрагменту, который в процедуре выше обозначен как <обработка температуры>. Здесь все куда сложнее не только потому, что нам нужно преобразовывать код в физическую величину для отображения на индикаторе, но и потому, что характеристика выходного кода в зависимости от показаний АЦП должна "ломаться" в нуле — она симметрично возрастает слева и справа от 0°, причем слева нам еще нужно высвечивать знак "минус" в то время, как коды АЦП возрастают равномерно от 0 до 1023. Как же нам справиться с этой проблемой? Оказывается, это элементарно просто: нужно без всяких хитростей вычесть из текущего значения кода АЦП код, который соответствует 0 °C, если текущий код АЦП больше, и наоборот, из нулевого кода текущий — если меньше, причем сравнивать все равно надо, чтобы определить знак. В данном случае код при нулевой температуре будет равен примерно середине диапазона, предположим, числу 486. Теперь после вычитания полученный код будет равномерно возрастать в обе стороны от нулевого значения, которое и соответствует нулевой температуре. Но дальше сложностей будет больше. Во-первых, с какой крутизной возрастает код в зависимости от температуры?
Очень просто: числу 537 (1023—486) будет соответствовать температура 55 °C, как мы выяснили ранее, поэтому для преобразования в физическую величину с тремя разрядами (с десятыми, но без учета запятой) нам надо умножить код на величину 550/531 = 1,036. А как это сделать, если дробных чисел процессор не понимает? Поступим так: увеличим этот коэффициент в 1024 раза. Теперь он представляет собой также двухбайтовое целое. 16-разрядные числа МК перемножать умеет (см. далее), при нашем диапазоне мы в результате получим не более, чем 220, т. е. трехбайтовое число. Его мы поделим на 1024 (сдвигом на 10 разрядов вправо) и получим опять двухбайтовое значение, равное тому, что мы получили бы, если бы просто умножили код на 1,036. Итак, необходимые нам для расчетов значения кодов коэффициента для 0 (tZ) и коэффициента для крутизны преобразования (tK) будут такими: tZ = 486 = 01E6h и tK = 1,036 • 1024 = 1061 = 0425h. Для того чтобы произвести расчеты, надо эти коды коэффициентов где-то хранить. Так как доступные рабочие регистры по мере написания программы будут таять с устрашающей быстротой, то отводить под хранение двухбайтовых констант целых четыре регистра — это роскошь. Поэтому мы будем tZ и tK хранить в памяти SRAM. При инициализации программы (при включении питания) туда будут записываться предопределенные значения, которые можно изменить перепрограммированием, а по ходу дела (при калибровке) их легко изменить, подключившись к внешнему компьютеру через COM-порт (как это делается, вы уже знаете, см. главу 3J). Стоит ли хранить их в EEPROM? В данном случае, на мой взгляд, это нецелесообразно, т. к. процедура чтения их оттуда много дольше, чем из памяти SRAM; надо применять специальные меры к сохранности EEPROM при выключении питания, иначе это вообще бессмысленно, а после первичной калибровки вам уже вряд ли потребуется менять коэффициенты в скором времени, так что, все отладив, можно разок и перепрограммировать, изменив начальные значения прямо в программе. Следует отметить, что перед использованием SRAM полезно изучить ее структуру, чтобы не получить непредсказуемых результатов. Дело в том, что пространство адресов у SRAM и у регистров общее, поэтому, если вы попытаетесь записать в SRAM по адресу 0:0, то попадете аккурат в регистр г0 (ни на какие ошибки при этом, естественно, не указывается — а вдруг вы именно этого и хотели?). Свободная часть SRAM начинается во всех МК семейства AVR с адреса 00:60h (кроме самых навороченных, типа Atmegal28, у которого оно начинается с адреса 01:00h). Если вам не нужно все пространство этой памяти, то удобно писать, начиная с адреса 01:00h (т. е. с ячейки номер 256), заодно вы избавляетесь от необходимости исправлять программу при смене
процессора на более "крутой". Тогда вы просто устанавливаете старший байт адреса в значение 01 навсегда, а через младший пишете по адресам, начинающимся с нуля. При этом вам доступно в 2313-м 96 байт, а в большинстве остальных (кроме семейства tiny) 256 и более байт SRAM (если не менять значение старшего адреса, конечно). Сами адреса устанавливаются через один из трех объединенных попарно регистров, последних по номерам в регистровом файле, которые в этом случае называются х (г2б + г27), Y (г28 + г29) и z (гЗО + г31). Их можно использовать и как обычные регистры по отдельности, но мы зарезервируем, к примеру, регистр Y за памятью и установим старший байт равным 1 в самом начале выполнения программы в процедуре Reset: idi г29,01. Другой вариант записи той же команды: idi yh,oi. Перед записью теперь нужно указать однобайтовый адрес в регистре r2 8 (yl). Адреса мы распределим так (это надо вставить в начало программы): . equ Tram = 0x0 ;0x0,0x01 старш. и младш. байт темп, в НЕХ-формате . equ TdH = 0x02 /температура старший BCD .equ TdM = 0x03 /температура средний BCD .equ TdL = 0x04 /температура младший BCD equ tZH = 0x20 / CT . разряд коэффициента tz температуры equ tZL ~ 0x21 / МЛ . разряд коэффициента tz температуры equ tKH = 0x22 / CT . разряд коэффициента tK температуры equ tKL = 0x23 / МЛ . разряд коэффициента tK температуры По адресу, начиная с 01:00, в двух байтах будет храниться физическое значение температуры в шестнадцатеричном представлении, а по трем адресам далее — в распакованном BCD-коде, подготовленные для индикации. Все это мы получим далее. Начиная с адреса 01:20h будут храниться вожделенные коэффициенты. Запись в память производится командой st, обозначение Y+ означает, что запись производится с постинкрементом, т. е. после записи адрес в yl автоматически увеличивается на 1: /запись коэффициентов tZ = 461 = lE6h и tK = 1061 = 425h Idi r28,tZH /начальный адрес Idi temp,0x01 /старший tZ st Y+,temp / записываем Idi temp,ОхЕб /младший tZ st Y+,temp /записываем Idi temp,0x04 /старший tK st Y+,temp /записываем Idi temp,0x57 /младший tK st Y,temp /записываем
Эту процедуру надо включить в начало программы при выполнении Reset. Во время калибровки вы через uart записываете по этим адресам другие значения, а потом, когда убедитесь, что все верно, запишите в эти строки программы окончательные значения коэффициентов и перепрограммируйте МК. Кстати, точно так же можно поступить с числом в регистре сравнения Timer 1 для подстройки хода часов. Чтение производится командой id, во всем аналогичной команде st. Рабочие регистры обозначим как Koeffb и KoeffH (пусть это будут г05-г0б). Процедуры вычитания для значения кода выше и ниже 0° будут немного различаться, заодно мы определяем и высвечиваем, если надо, знак (через РВ6): ldi r28,tZH /установка начального адреса Id temp,Y+ mov KoeffH,temp Id temp,Y mov KoeffL,temp /получили из памяти коэфф. tZ температуры ср AregLT,KoeffL /сравнили младшие cpc AregHT,KoeffH /сравнили старшие с переносом brsh Ь0 /если больше, то далее sub KoeffL,AregLT sbc KoeffH,AregHT /вычли код АЦП из коэффициента mov AregLT,KoeffL /записали обратно в регистры mov AregHT,KoeffH sbi PortB,6 / знак - rjmp mO ЬО: /если больше sub AregLT,KoeffL /вычли наоборот sbc AregHT,KoeffH cbi PortB,6 /знак + mO : /продолжение Перед тем как писать продолжение, надо сконструировать процедуру умножения двух 16-разрядных чисел. Она стандартная, но, как я уже говорил, в Application Notes от Atmel есть ошибка, которую мы исправим. В общем случае, в результате будет 4-байтовое число, и хотя у нас старший регистр всегда будет равен 0, а младший пропадет при последующем делении на 1024, все же нам придется их задействовать. Поскольку процедура у нас предназначена для конкретной цели, то мы сразу укажем рабочие регистры
сомножителей. В тексте я сохранил оригинальные комментарии от Atmel подробно разбирать эту процедуру я не буду: Мр16: /умножение двух 16-разрядных величин ;AregLT (гОЗ) множимое low byte /AregHT (г04) множимое high byte /KoeffL (r05) множитель low byte ;KoeffH (r06) множитель high byte ;ResL (г07) результат byte 0 (LSB) ;ResM (г08) результат byte 1 ;ResH (г09) результат byte 2 ;temp (г16) результат byte 3 (MSB) ;count_m (r27) счетчик clr temp ;clear 2 highest bytes of result clr ResH ldi count_m,16 ;init loop counter ml6u_l:Isr KoeffH ror KoeffL brcc noad8 /if bit 0 of multiplier set add ResH,AregLT ;add multiplicand Low to byte 2 of res adc temp ,AregHT ;add multiplicand high to byte 3 of res noad8: ror temp /shift right result byte 3 ror ResH /rotate right result byte 2 ror ResM /rotate result byte 1 and multiplier High ror ResL /rotate result byte 0 and multiplier Low dec countjn /decrement loop counter brne ml6u_l /if not done, loop more ret ;выход их процедуры умножения Регистр temp у нас везде задействован, но в данном случае его использование безопасно, потому что сама процедура используется внутри прерывания и никакое другое прерывание нам ничего испортить между делом не может. Итак, вот, наконец, полная процедура обработки данных АЦП: ADC_proc : <обработка батарейки> contT: <определение знака и симметрирование кода>
mO: /умножение на коэффициент tK ldi r28,tKH /установка адреса Id temp,Y+ mov KoeffH,temp Id temp,Y mov KoeffL,temp /получили из памяти tK температуры rcall Mpl6 /умножили /деление на 1024 mov AregLT,ResM /загрузили в мл. байт температуры ResM mov AregHT,ResH /а в старший - ResH /тем самым сразу поделили результат на 256 Isr AregHT /сдвинули старший вправо ror AregLT /сдвинули младший - поделили еще на 2 Isr AregHT /еще раз: сдвинули старший гог AregLT /сдвинули младший, еще на 2, всего на 1024 ldi r28,TdH /установка адреса Т для BCD-кода rcall bin2BCD16 /преобразование в упакованный BCD (см. ниже) st Y+,ResH /запоминаем в памяти старший разряд mov temp,ResL /младший распаковываем: swap temp /меняем тетрады местами andi temp,ObOOOOllll st Y+,temp /средний разряд mov temp,ResL /еще раз andi temp,ObOOOOllll st Y,temp /младший разряд ret /конец процедуры ADC_proc Ниже приведена процедура преобразования в двоично-десятичный код bin2BCDi6, которая целиком взята из рекомендаций Atmel (только названия регистров приспособлены под наш случай), оригинальные комментарии сохранены. В отличие от умножения, здесь ошибок нет и все надежно работает. Обратите внимание, что команда возврата из процедуры ret стоит в середине текста, а не в конце, как обычно: bin2BCD16: /преобразование 16-разрядного hex в упакованный BCD /input: hex value low=AregL hex value high = AregH /output: BCD value digits 1 and 0 ResL /BCD value digits 2 and 3(=0) ResH ldi clr clr tempi, 16 ,-Init loop counter ResH ResL
clr ZH /clear ZH (not needed for AT90Sxx0x) bBCDx_l:Isl AregL ;shift input value rol AregH ;through all bytes rol ResL rol ResH dec tempi /decrement loop counter brne bBCDx_2 /if counter not zero ret ;return to program bBCDx_2:Idi bBCDx_3: r30,AtBCD2+l ;Z points to result MSB + 1 Id temp,-Z /get (Z) with pre-decrement subi temp,-$03 ;add 0x03 sbrc temp,3 /if bit 3 not clear st Z,temp /store back Id temp,Z /get (Z) subi temp,-$30 /add 0x30 sbrc temp,7 /if bit 7 not clear st Z,temp /store back cpi ZL,AtBCD0 /done all three? brne bBCDx_3 /loop again if not rjmp bBCDx_l Процедуру Ып2всп1б, как и Мр1б, можно помещать в начало или в конец текста программы, это понятно. В процедуре индикации по Timer о программа должна просто извлекать данные из памяти (по адресам тан, там и таь) и демонстрировать их на дисплее в режиме динамической индикации так же, как и часы-минуты. Обсудим теперь вопрос, куда "воткнуть" основную процедуру обработки данных. В том виде, как это написано, ее лучше всего вставить в обработчик события по Timer 1, тогда измерение будет ежесекундным. На этом можно и остановиться, но есть один нюанс: АЦП может работать достаточно быстро (от 70 до 280 мкс на преобразование, т. е. от 3,5 до 14 тысяч измерений в секунду), а мы из этого потока данных выделяем один-единственный результат и думаем, что он и есть то, что надо. Это может быть не так: допустим, мы-то приняли все меры для устранения шума, но ведь и сам процессор контроллера шумит, а он расположен на одном кристалле с АЦП. Переводить на время преобразования контроллер в режим idle, как советуют разработчики, — слишком большая роскошь, не одно АЦП у нас работает, а мы вообще-то и время должны отсчитывать. Потому лучше будет, если мы сделаем несколько измерений — например, 64 — и возьмем среднее. Это делается так: мы запускаем АЦП на однократное преобразование 64 раза и по адресу Tram (именно для этого он нам и понадобился) склады
ваем сумму отдельных значений кода. Так как мы выбрали 64 значения, то двухбайтового числа сумма 10-разрядных чисел не превысит. Это удобно делать в процедуре по Timer о, вставив в конец обработчика вот такую процедуру: TIMO : Спроцедура индикации> rADC: inc countCyk /обработка АЦП sbrs countCyk,5 /если бит 5 в countCyk равен 1, / TO 1 прошло 32 такта таймера 0, инициализируем АЦП reti /иначе выход из обработчика clr countCyk / обнуляем счетчик тактов inc count /счет измерений cpi count,65 /если прошло 64 измер., breq ADC_bat /то на отсчет батареи ldi temp,0 /0 - канал температуры out ADMUX,temp /установили канал АЦП sbi ADCSR,ADSC /запуск нов. преобразования для температуры reti /выход из обработчика ADC_bat: ldi temp,1 /1 - канал батареи out ADMUX, temp /установили канал АЦП sbi ADCSR,ADSC /запуск нов. преобразования для батареи sbi Flag,0 /если битО установлен - чтение батареи /а далее будем обрабатывать текущие данные -/для батареи то, что было измерено в предыдущий раз. /Обработка данных температуры: ldi r28,Tram /установка адреса Id AregHT,Y+ /загрузка суммы из памяти Id AregLT,Y clr count div64L: /деление на 64 - осреднение Isr AregHT /сдвинули старший ror AregLT/сдвинули младший inc count cpi count,6 brne div64L subi r28,1 / /сдвинули-поделили на 64 вычесть из адреса единицу
clr temp st Y+,temp st Y,temp /очистили память для следующего цикла rcall ADC_proc reti /выход из TIMO Мы привели здесь простейший вариант, когда усредняются только значения температуры, батарею, как видите, мы считываем отдельно и однократно. Само измерение температуры происходит каждое 32-е прерывание таймера О, т. е. если прерывания идут с частотой примерно 2 кГц (см. главу 32), то это случается с частотой примерно 64 Гц, а расчет и обновление величины температуры тогда происходит примерно раз в секунду. Теперь, когда мы завели АЦП, наконец, поговорим о том, как получать из него собственно данные. Это делается по прерыванию, которое мы разрешаем, как обычно, в процедуре Reset (и заодно производим всякие установки): /установка АЦП, разр. прерывания, /такт, частота 1/32 частоты МК = 128 кГц, однократный запуск Idi temp, (1«ADEN) | (1«ADIE) | (1«ADPS2) | (1«ADPSO) out ADCSR,temp He забудьте записать адрес обработчика в начале программы (третий снизу, т. е. пятнадцатое прерывание для 8535): rjmp readADC / преобразование АЦП закончено Наконец, сама процедура обработчика: readADC: /чтение АЦП по прерыванию sbrc Flag,0 /если битО установлен rjmp R_batt /сразу на чтение канала батареи Idi r28,Tram /иначе установка адреса температуры Id AregHT,Y+ /читаем из памяти Id AregLT,Y in ’tempi,ADCL /получаем из АЦП младший in temp,ADCH /получаем из АЦП старший add AregLT,tempi /суммируем adc AregHT,temp dec r28 /вычитаем из адреса 1 st Y+,AregHT /запоминаем сумму st Y,AregLT /в памяти rjmp END_adc /выход из обработчика R_batt: cbr Flag,0 /сбрасываем бит 0 в регистре Flag in AregLB,ADCL /получаем из АЦП младший
in AregHB,ADCH /получаем из АЦП старший END_adc: reti /конец обработчика прерывания АЦП Познакомившись со всем этим процессом, вы можете подумать, что МК просто не будет успевать выполнять такие громоздкие процедуры, но это не так: опыт показывает, что 8535 вполне справляется, ведь большинство команд у нас выполняются за один такт, т. е. за 0,25 мкс, если частота кварца равна 4 МГц. Исключение составляют команды записи в память и чтения из памяти, а также переходы, но их все же сравнительно немного. Даже если принять время выполнения одной команды за 0,5 мкс в среднем, то за время цикла индикации Timo успеет выполниться 1000 команд— больше, чем вся наша программа. Более того, в моей конструкции [30] этот процессор справлялся и с обработкой трех каналов (дополнительно к температуре и батарейке измерялось еще и давление), причем все каналы усреднялись, правда, счет происходил попеременно, так, что показания обновлялись по каждому каналу через 3 с, иначе контроллер и правда мог бы не справиться с обработкой. Второй вывод, который вы можете сделать, — что все это очень сложно. Что ж, не зря на ПО в проектах часто отпускают куда большие суммы, чем на "желе-зо^но назначение у них другое — в основном они уходят на зарплату программистов, а не на изготовление плат и макетов. А в чем вы выигрываете? В универсальности, надежности, потреблении, габаритах. Экономите вы и на макетах, потому что тут ничего макетировать не надо. Причем когда надо измерять что-то другое, то не надо принципиально переделывать ни схему, ни программу, и вот тут разработка ускоряется в разы (особенно, если вы не забыли вставить в свои старые программы комментарии). Между прочим, именно указанным обстоятельством обусловлена консервативность разработчиков микроконтроллерных систем, ведь новый процессор еще надо освоить, запастись проверенной библиотекой процедур, изучить его тонкости — а какая, собственно, разница? Старый справляется не хуже, а в рекламе системы не напишешь, что, мол, "в нашей последней модели пылесоса использовано новое быстродействующее семейство микроконтроллеров", т. к. пользователю на это глубоко плевать — внешне никакой разницы нет, не то, что с компьютерами. Типичный пример— редкостная живучесть семейства 18051, которое сама Intel бросила поддерживать еще в середине 90-х, но они до сих пор выпускаются чуть ли не всеми основными производителями (в том числе, кстати, и Atmel) — модернизированные, с флэш-памятью, АЦП и прочими современными "примочками", но по-прежнему упорно выполняющие по одной инструкции за 12 тактов. И это в то время, когда уже в начальники соответствующих подразделений полупроводниковых фирм выходят ровесники этого контроллера...
Глава 34 Заставить камни заговорить. Микроконтроллер и голосовая сигнализация Он издал слабый крик, который можно было принять за последний стон умирающего, и лишился чувств. А. Дюма, "Три мушкетера" Все вы, вероятно, встречались с приборчиками, которые выдают осмысленные фразы или отрывки музыкальных мелодий. К чему далеко ходить — производители сотовых телефонов просто замучили своей "полифонией". Сидя в маршрутке, невольно вздрагиваешь, когда у соседки в сумочке вдруг то ребенок заплачет, то котенок замяукает. Не многие, однако, задавались вопросом —а как это делается? Всякие декодеры МР-3 и флэш-карты с записью музыки появились лишь недавно, но это довольно сложные и относительно дорогие устройства, не говоря уж. о цифровой музыке вообще — всех этих CD- и DVD-плеерах. Неужели в мобильник встраивают настоящий цифровой тракт, со всеми этими ЦАПами, фильтрами и усилителями? Вовсе нет. Главная идея, которая заложена в простую реализацию воспроизведения цифрового звука, изложена в приложении 3 и называется "усилитель в режиме D", от слова digital — цифровой. Ознакомившись с необычайно простым принципом действия этого режима, вы вправе задаться вопросом: а если у меня уже есть оцифрованная музыка, зачем мне компаратор и прочие аналоговые штучки, если в микроконтроллере я могу просто сравнить два числа и, в зависимости от этого, выдать наружу импульс нужной длительности? Действительно, так можно поступать, причем программу реализации такого ШИМ'-режима писать самому не надо — разработчики МК уже решили эту проблему за вас. Счетчики-таймеры в МК семейства AVR могут работать в PWM-режиме. В этой главе мы рассмотрим простейшую реализацию такого режима и воспроизведем какую-нибудь фразу или отрывок мелодии. 1 Широтно-импульсная модуляция — pulse-wide modulation, PWM. 19 Зак. 710
Рис. 34.1. Диаграмма работы счетчика таймера Timer 1 в PWM-режиме В дальнейшем мы будем ориентироваться на контроллер 85152. Работа счетчика Timer 1 в режиме ШИМ состоит в следующем. Счетчик все время работает как реверсивный с заданной разрядностью. Если это 8 бит, то он считает от 0 до 255 и обратно. Если в регистр сравнения OCR1А заносится некоторое число в этих пределах, то при счете на увеличение в момент совпадения содержимого счетчика с этим числом на выходе ОС1А появится высокий уровень, который сбросится при том же значении при обратном счете. Все это показано на диаграмме (рис. 34.1). Регистр сравнения OCR1A двухбайтовый, поэтому при 8-разрядных данных старший разряд OCR 1 АН нужно обнулить и записывать данные в младший OCR1AL. Максимальное число разрядов, с которым может работать Timer 1 в режиме PWM, равно 10, но мы остановимся на 8-разрядном звуке, потому что большее число градаций использовать нецелесообразно — как мы увидим, качество при этом способе получится не ахти, и разрядность тут нам не поможет. Прежде чем писать программу и рисовать схему, разберемся, откуда можно взять звук. Нам требуется чистый 8-битный оцифрованный звук (без сжатия), т. е. набор байт должен соответствовать картинке на рис. 25.1. Частота оцифровки (т. е. то, что называется битрейтом) не должна быть высокой — если она будет выше 8 кГц, то придется использовать, например, каждый второй отсчет и расходовать память зазря. Практически достаточно 4 кГц. Эти значения для аудиофилов могут показаться возмутительно низкими, но в нашем случае спроектировать hi-end-плеер все равно не выйдет, а практически все реальные звуки (особенно речь) в этот диапазон укладываются (например, обычный телефон работает именно в такой полосе частот). Итак, мы берем любой звуковой редактор, который позволяет регулировать указанные выше параметры (типа, скажем, Sound Forge), и записываем звук (моно!) в формате WAV. А сколько можно по длительности? Это зависит от 2 В некоторых современных моделях семейства tiny ШИМ-режим таймеров реализован несколько по-иному, в частности, там не требуется выбирать тактовую частоту контроллера как можно выше (см. дальше по тексту). Но я специально остановился на "классической" реализации, т. к. для остальных AVR-контроллеров, в том числе и семейства mega, приходится действовать именно так, как описано ниже.
объема памяти, которую вы будете использовать. Подсчитать очень просто: если битрейт равен 4 кГц, то на секунду звучания необходим объем памяти в 4 Кбайт. Тогда память объемом 256 Кбайт даст нам чуть больше минуты звучания. Этого достаточно, чтобы произнести стандартную предвыборную речь кандидата в президенты, если предварительно ее отредактировать и выбросить все фразы, не несущие смысловой нагрузки. Хорошо, а какую память использовать? Проще всего взять флэш-память с двухпроводным интерфейсом I С, которая занимает мало места— например, АТ24С256 от той же Atmel в корпусе LAP-8 ("под панельку") или DIP-8. Программировать ее придется с помощью какого-нибудь универсального программатора, поэтому без панельки в схеме тут не обойдешься. Просто перепишите содержимое полученного WAV-файла в память, и все. К сожалению, процедура доступа к устройствам, работающим по интерфейсу I С, довольно сложна (и, кстати, в атмеловских Application Notes есть, как водится, ошибка в реализации этой процедуры). Я без дополнительных комментариев привожу полный текст проверенной процедуры работы с интер-фейсом I С в приложении 7 . Она рассчитана на использование выводов РА6 и РА7, но ничто не мешает использовать любые другие выводы. Просто вставьте приведенный текст процедуры чтения read_i2c (и все остальные подпрограммы, на которые она ссылается, приведенные ниже по тексту) в свою программу. Можно создать отдельный файл с этими подпрограммами и включить его в вашу программу директивой . include, как вы включаете inc-файлы с определениями имен. Там же имеется процедура записи write_i2c, которая в данном случае не требуется, но может использоваться, например, при "общении" микроконтроллера с часами реального времени с таким интерфейсом. Теперь нарисуем схему — она очень проста (рис. 34.2). Цепи питания тут не показаны, все микросхемы питаются от +5 В, включая микросхему усилителя МС64119 (полная схема включения этого мини-усилителя показана на рис. 13.4). Вместо этого усилителя можно взять любой другой аналогичный, только отечественные из серии 174 лучше не использовать, т. к. у них низкое входное сопротивление и они будут шунтировать фильтр НЧ. Вот как раз RC-фильтр тут играет довольно важную роль, и выбирать его параметры нужно достаточно аккуратно. Этот вопрос мы сейчас и обсудим. 3 В большинстве последних mega-контроллеров интерфейс 12С реализован аппаратно, и работа с ним несколько напоминает работу с портом UART (хотя и сложнее — описание этого интерфейса занимает' в руководстве страниц 30), но, тем не менее, процедура, которая приведена здесь, может пригодиться не только при использовании старого семейства classic, но и других современных типов, аппаратным ГС не обладающих.
Рис. 34.2. Схема воспроизведения цифрового звука с помощью AVR-контроллера Тактовую частоту МК для такой схемы нужно выбирать максимально возможной, для обычного AT90S8515 это 8 мГц. Легко подсчитать, что реверсивный 8-разрядный счетчик будет при такой входной частоте считать туда и обратно с частотой/такт/510, т. е. в данном случае около 16 кГц. Это и будет несущая частота на выходе ШИМ. Чтобы ее отфильтровать простой RC-цепочкой, нам желательно, чтобы частота среза (она равна 1/2л/?С) не превышала ее четверти, в данном случае частота 16 кГц будет затухать в 4 раза быстрее по сравнению с верхней частотой диапазона 4 кГц. Этому условию удовлетворяют параметры R = 10 кОм и С = 3,9 нФ. Для воспроизведения речи это удовлетворительно, хотя люди с развитым высокочастотным слухом будут слышать непрерывный свист. Выйти из этого положения можно, если использовать либо фильтр НЧ с более высокими характеристиками (с большей крутизной), либо использовать AVR из более современной серии mega, например, mega8515, который имеет тактовую частоту до 16 МГц, соответственно несущая тогда будет иметь частоту примерно 31—32 кГц и выйдет за пределы восприятия. Интерфейс 12С— довольно капризная вещь, поэтому лучше пользоваться контроллерами, в которые он встроен (из серии mega). В данном же случае, если после загрузки программы схема сразу не заработает, то следует добавить "подтягивающие" резисторы 3—5 кОм по выводам 33 и 32 контроллера, подсоединив их к напряжению питания. Наконец, разберем программу. В начале нужно установить Timer 1 в PWM-режим и задать ему переключающий режим по выходу ОС1А такой, чтобы там устанавливался низкий уровень, а также запустить его со входной частотой, равной тактовой. Прерываний от Timer 1 никаких не требуется, он будет работать непрерывно, пока мы его не выключим. Управление битрейтом мы будем осуществлять по прерыванию переполнения Timer 0. Если каждый раз в него записывать некоторое число, то можно регулировать частоту таких прерываний. Включим его с частотой на входе, равной 1/8 тактовой (послед
няя должна быть равна 8 МГц), тогда минимальная частота на выходе будет равна почти 4 кГц (3906 Гц = 8 МГц/8/256). Мы хотим частоту ровно 4 кГц (не следует окончательно портить звук еще и растяжением битрейта), поэтому мы будем записывать каждый раз в него число 6, и он будет считать от 6 до 255, т. е. отсчитывать ровно 250 тактов, тогда прерывание будет происходить с частотой ровно 4 кГц. Меняя эти параметры (указанное число и частоту на входе Timer 0), можно устанавливать любой битрейт. В процедуре прерывания мы производим загрузку очередного байта в Timer 1 и будем устанавливать некий флаг, а в основной программе заведем непрерывный цикл, в котором, если этот флаг установлен, производится чтение из памяти следующего байта. Текст этой несложной программы приведен ниже, при этом программа для чтения памяти находится в отдельном файле с именем i2c.prg. В этой программе число воспроизводимых байт ограничено 65 536 (64 Кбайт), т. к. для упрощения мы используем для их отсчета 16-разрядный регистр X, но при необходимости несложно добавить еще один регистр счетчика и задействовать любую емкость памяти. ;==== программа вывода цифрового звука ==== /процессор 8515, частота 8 Мгц .include "8535def.inc" .equ T_Sample - б /предварительное значение для Timer 0 при 4 кГц .equ bSample = 0 /бит готовности к чтению /регистры temp и DATA определены в "12С.ргд" (Прилож. 8) .def FLAGS = rl9 rjmp RESET /на обработчик прерывания по Reset reti reti reti reti reti reti rjmp TIMO /обработчик прерывания переполнения Timer 0 reti reti reti reti reti .include "I2C.prg" RESET:
ldi temp,ObOOlOOOOO out DDRD,temp /ОС1А - на выход ldi temp,(1«COM1A1)|(1<<PWM1O) /инициализация РИМ out TCCR1A,temp ldi temp,1<<CS1O /включаем Timerl, 1/1 out TCCRlB,temp ldi temp,1<<CSO1 ; включаем TimerO, 1/8 out TCCRO,temp out TCNTO,T_Sample ;T_Sample=6, заряжаем таймер на 4 kHz ldi temp, (1«TOIEO) /разрешаем прерывание TimerO out TIMSK,temp clr temp /очищаем все регистры out OCRlAH,temp out OCRlAL,temp out OCRlBH,temp out OCRlBL,temp ldi XH,high(Nbytes) ldi XL,low(Nbytes) /зарядка счетчика выводимых байт /вместо Nbytes подставить объем записи в байтах, не более 64К ldi YH,high(ADrWord) ldi YL,low(ADrWord) /вместо ADrWord подставить начальный адрес байт во флэши, /он может быть отличен от 0:0 loop_voice: /читаем байт для последующего вывода rcall read_i2c /чтение памяти, в YL,YH - адрес, в DATA - получ. байт sleep /Idle-mode, проснется по прерыванию TimerO sbrs FLAGS,bSample / бит встает в 1 в обработчике прер. TIM0 r jmp loop_voice /если еще не установлен, то на начало цикла adiw YL,1 /иначе увеличиваем адрес на 1 cbr FLAGS,l<<bSample /сбрасываем бит готовности к чтению sleep /Idle-mode, проснется по прерыванию TimerO in temp,TCCRO /проверяем, не остановлен ли таймер tst temp brne loop_voice /если не остановлен, то следующий цикл /иначе вывод звука закончен - делаем что-то еще /========= обработчик прерывания от Timer 0 ============ TIMO : out TCNTO,T_Sample /перезаряжаем TimerO
clr temp out OCR1AH,temp out OCR1AL,DATA /занесение байта в PWM sbr FLAGS,l<<bSample /бит готовности к чтению - в 1 sbiw XL,1 /уменьшаем счетчик прочитанных байт brne rt_pwm_ /если он равен 0 out TCCR0,XL /то выключаем таймер 0 out TCCR1B,XL /и Timer 1 также rt_pwm_: reti /возврат из обработчика TimerO Кстати, нетрудно организовать даже стереозвук, если подключить второй переключающий вывод— ОС1В. При этом данные второго канала надо подавать одновременно на регистр OCR1B. Надеюсь, читатель сам сообразит, как из этой программы попробовать соорудить, например, говорящие часы или часы с боем. В память записываются фрагменты звучания, и в нужный момент программа обращается по нужному адресу. Единственная сложность— нехватка таймеров, так что непрерывный счет времени становится затруднительным. Проще всего это препятствие преодолеть использованием МК 8535 или семейства mega, в которых есть еще один, третий таймер — ему и надо поручить счет на время "разговора". Еще лучше использовать внешнюю микросхему RTC. Несомненно, читатели также придумают что-то свое.
Глава 35 Страна советов. Некоторые полезные схемы — Мне нужно знать, по какой дороге ехать, — сказал д'Артаньян. А. Дюма, "Три мушкетера” В заключение этого изложения приведу несколько схем, которые либо не вошли в соответствующие разделы, либо не укладываются ни в один из них. Общей отличительной чертой их является неочевидность — самому такое придумать трудно, а между тем схемы эти могут быть полезны для использования в радиолюбительской практике. Схема мультивибратора на транзисторах Это классическая схема мультивибратора, которая ранее разбиралась в каждом учебнике по электронике, а (сейчас почти забыта ввиду распространения микросхем (рис. 35.1). Не привести ее в книге, посвященной началам схемотехники, было бы просто неприлично. Однако она представляет собой не только историческую ценность, но и может понадобиться на практике, в основном, потому, что компактна, разводка ее на плате не привязана к сетке с шагом 2,5 или 1,25 мм и в устройстве, где микросхемы не используются вообще, удобнее применять именно ее. Другим плюсом схемы является то, что напряжение питания здесь, вообще говоря, может быть любым в пределах допустимого для применяемых транзисторов, хотя и на базах транзисторов возникают отрицательные выбросы, но на надежность схемы это, как показывает практика, не влияет. Частота работы зависит только от транзисторов и может колебаться в широких пределах от долей герца до десятков мегагерц. При очень низких частотах, естественно, потребуются электролитические индикаторы, тогда полярность их должна быть такой, как указана на рисунке. Обычно применяют симметричный мультивибратор, при этом /?2 = Дз = а Q = ^2 = С (коллекторные резисторы могут и несколько различаться, но должно соблюдаться
известное соотношение Rq/Rk < р), тогда рабочая частота будет равна -1/2RC. Если взять разные конденсаторы и резисторы в базовых цепях, то выходной сигнал будет несимметричным. Подсчитать частоту на выходе мультивибратора в зависимости от параметров тогда проще всего из тех соображений, что каждый полупериод будет длиться соответственно постоянной времени своего плеча и не зависит от противоположного: так, при /?3 = R2= 10 кОм, С| =0,1 мкФ и С2= 1 мкФ один полупериод будет равен R2C2 = 0,01 с, а второй /?3С] = 0,001 с, и сигнал на выходе будет иметь скважность 10 с частотой 1/(0,01 + 0,001) ~ 100 Гц (т. е. частота в данном случае фактически будет определяться одним плечом). Скважность можно менять плавно одним из резисторов, но в небольших пределах, чтобы не выйти за усилительные возможности транзистора. Трудность плавного изменения частоты, особенно при сохранении скважности, равной 2, является недостатком этой схемы. Рис. 35.1. Простейший мультивибратор на двух транзисторах Чувствительный детектор Детектор— это другое название выпрямителя, одно- или двуполупериодно-го. Обычно оно употребляется там, где идет речь не о силовом напряжении, а о сигналах более высокой частоты, например, в радиоприемниках. Простой диодный детектор обладает тем недостатком, что нечувствителен к малым напряжениям, попадающим на начальный участок вольтамперной характеристики, поэтому, кстати, в детекторах обычные кремниевые диоды чаще всего не ставят, а используют германиевые или диоды с переходом Шоттки, у которых прямое падение меньше. Но принципиально это не решает проблемы — малых напряжений порядка десятков милливольт такой детектор просто не чувствует (посмотрите на схему защиты входа усилителя на рис. 7.5). Для того чтобы детектировать такие сигналы, используются разные методы,
из которых мы рассмотрим два варианта однополупериодных детекторов, годящиеся для низкочастотных сигналов и могущие быть примененными, например, в схеме мультиметра для измерения переменных напряжений. Рис. 35.2. Чувствительные детекторы: а — с диодом; б — с n-канальным полевым транзистором Схема на рис. 35.2, а является самой простой. Работа ее несложна: для положительных сигналов это фактически повторитель, причем напряжение на выходе на 0,6 В превышает входное (обратите внимание, что выход схемы не является выходом ОУ). Вблизи нуля они сравниваются, а ниже нуля выходное напряжение равно практически точно нулю, т. к. диод при этом заперт и на работу схемы не влияет. Недостатка у схемы два. Первый — высокое выходное сопротивление, которое /равно сопротивлению резистора, т. е. в данном случае 10 кОм. Поэтому либо воспринимающая схема должна иметь очень высокое входное сопротивление, либо необходим дополнительный буферный повторитель. Второй недостаток состоит в том, что при переходе от отрицательного напряжения к положительному, ОУ выходит из состояния отрицательного насыщения, и это может длиться довольно долго— если скорость нарастания равна 0,5 В/мкс, как для нашего любимого цА741, то при напряжении питания ±10 В время выхода составит 20 мкс, что соответствует полному отрезанию частот выше 50 кГц и сильному искажению более низких. Если это несущественно (например, при детектировании напряжения с частотой промышленной сети 50 Гц), то можно наплевать, но лучше, во-первых, здесь использовать быстродействующие усилители, во-вторых, усложнить схему введением второго диода. При этом детектор придется делать инвертирующим, и у него упадет на этот раз входное сопротивление, так что мы эту схему рассматривать не будем. Частично свободный от этих недостатков вариант дву полу периодного детектора подробно разобран в [20]. Второй вариант детектора, причем очень чувствительного, показан на рис. 35.2, б. Здесь ОУ фактически представляет собой компаратор (коэффи
циент усиления его ограничен на уровне 1000 для повышения стабильности работы, в принципе цепочку обратной связи можно убрать), который управляет ключом на полевом МОП-транзисторе с n-каналом. Если напряжение на входе отрицательное, транзистор заперт, если положительное— открыт и пропускает на выход входное напряжение. Этот детектор в принципе может "ловить" входные напряжения хоть в единицы милливольт, все зависит только от используемого ОУ. Подстройка нуля, как понимаете, здесь обязательна, особенно при необходимости "ловли блох", и поэтому на схеме показан соответствующий переменный резистор, подключение которого зависит от типа ОУ. Подстройка нуля также может понадобиться, если транзистор не обогащенного, а обычного типа и у него полное запирание происходит при отрицательном напряжении на затворе (например, КП305). Все требования по быстродействию ОУ здесь те же самые, что и в предыдущей схеме. Электронное реле Самодельное электронное реле можно получить, если использовать тиристорный (точнее его назвать динисторным, но так уж принято) оптрон в совокупности с симистором. Схема реле показана на рис. 35.3. ззо г-* ~ 220 в АОУЮЗВ КЦ407 Рис. 35.3. Самодельное электронное реле переменного тока 220 В на нагрузку 1 кВт Особых пояснений схема не требует: при подаче тока через светодиод оптрона тиристор включается при любой полярности напряжения на симисторе и тем самым обеспечивает ток управляющего электрода в обоих полупериодах. Если ток выключить, то по окончании очередного полупериода и тиристор, и симистор закроются. Разумеется, никакой zero-коррекции здесь нет. Величина управляющего тока— порядка 5—10 мА. Чтобы сделать схему более экономичной по управляющим цепям, вместо одного длительного импульса можно подавать пачку коротких, с частотой не менее нескольких сотен герц. Можно приспособить эту схему и к фазовому управлению нагрузкой (см. главу 11). Между прочим, на резистор 330 Ом отнюдь не действует полное сетевое напряжение, как может показаться на первый взгляд, т. к. в ра
зомкнутом состоянии тиристора оптрона мост представляет собой обрыв цепи, а при замыкании его посреди полупериода, симистор открывается практически мгновенно, так что на резистор действует только очень небольшое напряжение. И все же следует его выбирать не менее чем полуваттным — так положено при работе в высоковольтных цепях. Реле при указанных на схеме типономиналах может обеспечить мощность в нагрузке до 1 кВт, тиристор, однако, при этом следует поставить на радиатор порядка 50—100 см2. Схема реле с управлением одной кнопкой Эта схема по выполняемым функциям представляет собой кнопку с фиксацией. Однако сами по себе кнопки с фиксацией употребляют нечасто, т. к. они менее надежны и удобны, чем обычные подпружиненные. Реализовать такую функцию можно, если объединить схему антидребезга, например, на RS-триггере (см. рис. 24.3) и счетный триггер. Решается это на одной микросхеме 561ТМ2, но: во-первых, требуется переключающая кнопка (с тремя выводами), во-вторых, выход такой схемы для управления мощной нагрузкой требуется умощнять — ставить транзистор и реле. Приведенная на рис. 35.4 конструкция, как видите, очень проста и реализована на самом реле и одном транзисторе. При первом нажатии на кнопку транзистор открывается током разряда конденсатора, реле замыкается и блокируется по базовой цепи транзистора своими же контактами. Конденсатор при этом отключается от питания и, если отпустить кнопку, быстро разряжается через диод и резистор 1,6 кОм. Если теперь нажать кнопку вторично, то транзистор запрется (конденсатор в первый момент представляет собой к. з., как мы помним) и отключит реле. Естественно, чтобы делать еще что-то полезное, реле должно иметь вторую пару контактов. J Рис. 35.4. Управление реле одной кнопкой
Если вы хотите таким образом управлять включением сетевого питания, то возникает проблема, заключающаяся в том, что в начале работы схема обесточена. В телевизорах для включения их от пульта или в компьютерах с корпусами АТХ это решается тем, что при подключении шнура питания подобная схема сразу получает питание, а уж включать основное питание или нет — ваше дело. Однако это довольно заковыристый метод и не очень корректный с точки зрения пожарной безопасности (инструкция к телевизору советует отключать его от сети при длительном перерыве в эксплуатации). Решить это можно гораздо изящнее: надо использовать кнопку с двумя парами контактов, такую, у которой есть ощутимый дополнительный ход между замыканием одной пары контактов и другой. Подойдут сдвоенные отечественные кнопки на микропереключателях МП-1. Через ту пару, которая замыкается раньше, нужно завести напряжение сети и подать его на блок питания, а вторую включить в приведенную схему. Тогда процедура включения становится такой: вы слегка нажимаете кнопку, питание при этом включается, но, чтобы зафиксировать его, надо кнопку дожать до конца, иначе при отпускании питание выключится. Необходимая пауза зависит от мощности трансформатора и емкости конденсаторов фильтров. Если вам кажется, что такая процедура слишком заумная, то вы ошибаетесь: во-первых, вы гарантированы от случайного включения (например, детьми), во-вторых, привыкнуть к двухступенчатому нажатию довольно просто, как показывает опыт обращения с цифровыми фотокамерами. Датчик воды В том смысле "датчик воды", что он показывает наличие воды, омывающей его контакты. Датчик прост (рис. 35.5), и схема его особых пояснений не требует (логический элемент— любой из серии 561, а диод нужен на всякий случай, чтобы продублировать защитные диоды по входу микросхемы), но в нем есть два нюанса. Нюанс первый заключается в том, что вода бывает разная: дистиллированная, талая, дождевая, речная, водопроводная, морская, наконец. У всех этих разновидностей электропроводность может различаться на порядки. Измерить ее очень сложно (из-за процессов электролиза и сопутствующей поляризации контактов), поэтому придется настраивать датчик подбором сопротивления резисторов делителя прямо на готовой конструкции так, чтобы при наличии воды элемент уверенно перебрасывался в состояние лог. 1, а при ее отсутствии, но при смоченном промежутке между контактами — так же надежно устанавливался в 0. Для того чтобы смачивание было меньше, следует контакты поместить в обрамление из полиэтилена (который водой не смачивается). Второй нюанс— вопрос стабильности при длительной работе. Как ни малы здесь токи, но электролиз неизбежно будет идти,
что, в конце концов, вызовет коррозию контактов, причем в первую очередь того, что подсоединен к более высокому потенциалу. Кроме того, что еще важнее, контакты в стоячей воде летом могут обрастать всякими микроорганизмами. Самый хороший выбор материала для контакта в этой ситуации — свинец или сплавы меди, которые выделяют микроскопические (незаметные для человека) количества вредных веществ и тем препятствуют обрастанию, и в то же время достаточно химически инертны, чтобы долгое время противостоять коррозии. Рис. 35.5. Датчик наличия воды Датчик может быть использован в регуляторе для автоматического поддержания постоянного запаса воды. Расположив два таких датчика вверху и внизу резервной емкости, по нижнему— мы включаем насос, по верхнему — отключаем. Если корпус емкости с водой металлический и некрашеный, то, естественно, специальный нижний контакт не требуется. Детектор электромагнитного поля Слово "детектор" здесь употребляется в несколько ином смысле, чем ранее — а именно в изначальном его значении, как "определитель", "датчик". Это единственная, пожалуй, в этой книге схема, которая (штатно) работает в радиочастотном диапазоне, но вы увидите, что ничего особенного в ней, кроме выбора транзисторов, нет. Устройство относится к разряду антишпи-онских штучек и предназначено для поиска в помещении источников радиосигнала— радиомикрофонов. Собственно говоря, защита от подобных вещей (а заодно и от многих других, например, от сканирования компьютерных излучений) довольно проста — нужно поставить в помещении источник "белого" (т. е. чисто случайного) радиочастотного шума, проще говоря — глушилку,
действие которых памятно нам по советским временам. Однако делать это без крайней надобности не рекомендуется — маломощная глушилка неэффективна, а достаточно эффективная не только заткнет все радиоприемники и мобильники в ближайших окрестностях, но и вызовет обоснованный интерес со стороны органов, контролирующих радиочастотный спектр. Кстати, чтобы защитить компьютеры с критичной информацией от радиопрослушивания, можно рекомендовать дорогой, но эффективный метод: установите их в помещении без окон, в стены, полы и потолки которого заштукатурена достаточно мелкая металлическая сетка. Рис. 35.6. Детектор электромагнитных излучений А вот такое пассивное поисковое устройство недорого и не требует никаких разрешений. Можно придумать много его модификаций разной степени сложности, и я остановился на одной наиболее универсальной и надежной, хотя и достаточно громоздкой реализации. Сама схема (рис. 35.6) заимствована из книги [31]1. В данном варианте схема немного модернизирована, и в ней исправлены некоторые ошибки, содержавшиеся в оригинале. Питается схема от батарейки типоразмера "Крона". Входные каскады усилителя ВЧ питаются от дополнительного стабилизатора на стабилитроне КС156Г, генератор прерывистого сигнала на микросхеме 561ЛА7 (см. главу 23), естественно, следует питать прямо от батарейки. В качестве антенны лучше всего использовать телескопическую антенну от радиоприемника. Наведенный в антенне сигнал усиливается транзисторами VT1-VT3 и поступает на детектор, собранный на диодах VD1-VD2 (по схеме с удвоением напряжения). Эти диоды следует выбирать высокочастотные либо германиевые (Д9), 1 В целом довольно малосодержательной, несмотря на громкое название, и изрядно устаревшей, но пару-тройку интересных вещей там найти можно: например устройство направленных микрофонов различных типов.
либо с переходом Шоттки (КД922). Если сигнала нет, то конденсатор на выходе детектора заряжен, а транзистор VT4 открыт током через регулирующий потенциометр и остальные резисторы в базовой цепи. На его коллекторе лог. О, и генератор "заткнут". Когда высокочастотный сигнал появляется, напряжение на выходе детектора снижается, и транзистор запирается, генератор начинает выдавать сигналы прерывистого тона 1 кГц через пьезокерамическую "пищалку" Q1. Потенциометром можно регулировать чувствительность, которую следует сделать такой, чтобы в отсутствие излучений приборчик "молчал". Низкочастотные наводки (сетевые) отфильтровываются за счет малости переходных конденсаторов усилительного каскада. Граница частоты, до которой работает детектор, обусловлена в основном выбором транзисторов VT1-VT3 (VT4 может быть любым маломощным, например, из серий КТЗ 15 или КТЗ 102). Авторы рекомендуют ставить супервысокочастотные транзисторы КТ3101 (4 ГГц!) с полосковыми выводами и утверждают, что граница частоты при этом (с учетом "любительского" характера монтажа и без тщательного выбора остальных деталей) составит примерно 1 ГГц. Лично я не стал бы гнаться за сверхвысокими частотами по той причине, что радиомикрофоны работают обычно на частотах в диапазоне 28—30 МГц, иногда на других, но того же порядка, зато сейчас существует множество вполне мирных СВЧ-устройств, которые будут сбивать вас с толку: это сотовые телефоны (GZM900 и CDMA), беспроводные телефоны DECT, беспроводные мыши и клавиатуры, WiFi и Bluetooth-устройства и т. п. Конечно, в том, что касается шпионского оборудования, уверенным нельзя быть ни в чем (лично я бы сделал радиомикрофон на основе мобильника, если бы передо мной поставили такую задачу), поэтому окончательный выбор — за вами. Если очень высокая частота не требуется, то можно обойтись и транзисторами типа КТЗ 15 или КТЗ 102 (диапазон тогда составит порядка 200—300 Мгц). Если продолжить эту тему, то можно привести идею еще одного антишпион-ского устройства, конкретную схему которого я рисовать не буду ввиду ее тривиальности и большого количества возможных вариантов реализации. Это устройство сможет защитить вас от такого распространенного метода прослушивания помещений, как регистрация звуковых колебаний по дрожанию оконных стекол. Сам метод был, кстати, еще в 50-х годах XX века придуман Львом Терменом, более известным как изобретатель первого электронного музыкального инструмента под названием "терменвокс". Настоящее второе рождение метод получил с распространением лазеров — ваше окно облучается ИК-лазером, и частота отраженного излучения оказывается модулированной колебаниями стекла. Чтобы защититься от этого, можно просто... открыть окно. Но, во-первых, это не всегда возможно, во-вторых, тогда вас
могут прослушивать направленным микрофоном. Поэтому проще всего установить глушилку, причем, в отличие от радиоглушилок, никаких неудобств она никому практически не доставит— будет себе тихонько зудеть. Идея состоит в том, что вы берете схему генератора качающейся частоты (ГКЧ) и присоединяете к его выходу несколько "пищалок", соединенных последовательно. Никаких усилителей не требуется, достаточно выхода простой КМОП-микросхемы, работающей от 5—10 В. "Пищалки" расклеиваются по стеклам окон (внутренним), желательно в самом их центре. ГКЧ должен выдавать меняющуюся частоту в диапазоне от 100—200 Гц до примерно 2—4 кГц. Его можно соорудить из генератора, управляемого напряжением, схемы которых многочисленны (есть и специальные микросхемы — МАХ654, к примеру), и генератора треугольных импульсов, который делается из мультивибратора и интегрирующей RC-цепочки. Причем чем нестабильнее составляющие ГКЧ, тем, в данном случае, лучше.
ПРИЛОЖЕНИЯ
Резисторы Международная цветная маркировка резисторов 1 — первая цифра, 2 — вторая цифра, 3 — множитель, 4 — допуск (красный — 2%, золотистый— 5%, серебряный — 10%, отсутствует — 20%), 5 — необязательный элемент (надежность). Цифра 1 и 2 Цвет Множитель Серебряный 0,01 Ом Золотистый 0,1 Ом 0 Черный 1 Ом 1 Коричневый 10 Ом 2 Красный 100 Ом 3 Оранжевый 1 К 4 Желтый 10 К 5 Зеленый 100 К 6 Голубой 1 М 7 Фиолетовый 10 М 8 Серый 9 Белый Пример: красно-желто-оранжево-золотистый — резистор на 24 кОм с допуском 5%
Таблица номиналов резисторов и конденсаторов с допуском 5% (ряд Е24) и 10% (ряд Е12) 10 16 27 43 68 11 18 30 47 75 12 20 33 51 82 13 22 36 56 91 15 24 39 62 Примечание: Ряд Е12 выделен жирным. Таблица номиналов 1%-ных резисторов (ряд Е96) 100 140 196 274 383 536 750 102 143 200 280 392 549 763 105 147 205 287 402 562 787 107 150 210 294 412 576 806 110 154 215 301 422 590 825 113 158 221 309 432 604 845 115 162 226 316 442 619 866 118 165 232 324 453 634 887 121 169 237 332 464 649 903 124 174 243 340 475 665 931 127 178 249 348 487 681 953 130 182 255 357 499 698 976 133 187 261 365 511 715 137 191 267 374 523 732
Стандартные обозначения и размеры некоторых гальванических элементов Тип Обозначение Размеры, мм Масса, г Междунар. Отечествен. Диаметр Длина 6F22 6LR61 Крона 17.5x26.0 48 40 ААА R03, LR03 286 10.5 45 8,5 АА R6, LR6 316 14.5 50,5 16.5 С R14, LR14 343 26.2 50 49 D R20, LR20 373 34.2 61.8 90
Классы усилителей В зависимости от режима работы выходных транзисторов усилители (не только УМЗЧ) делятся на классы. Различают классы А, В, АВ, С, D, G и Н, недавно был также предложен еще один класс — Т. Классы D и Т относятся к дискретным (цифровым) усилителям, остальные — к линейным (аналоговым). Рассмотрим особенности режимов работы выходного каскада для этих классов. Для того чтобы в дальнейшем рассмотрении важнейшего (особенно в случае УМЗЧ) вопроса о КПД для различных классов сделать более понятным, приведем точное определение действующего значения напряжения переменного тока ил (именно действующее значение определяет мощность на нагрузке и выходных транзисторах, а следовательно, и КПД): I i т ил=и — f:<2(T)dr (1) V У0 о Здесь Ua— амплитудное значение напряжения u(t), Т— период (в данном случае мы рассматриваем полпериода от 0 до тс). Для синусоидального напряжения z/(0 = sin(r): ,, ГТ f • 2/XJ ГТ Ц|Tt sin 2t LL L'a=L'ai -Jsm (0Л=1/ -Io-,, --------T- =-A (2) у я Q у 71 ( 2. J у/2 Г 2 При выводе учитывается, что Jsin (t)dt = t/2 + sin(2r)/4. Это соотношение для действующего значения (без вывода) уже приводилось в главе 4. Итак, рассмотрим классы усилителей. Класс А (рис. П3.1) — это фактически режим, соответствующий усилительному каскаду с общим эмиттером (см. рис. 6.7). В классе А на коллекторе транзистора устанавливается ровно половина питания. Если считать переходную характеристику каскада строго линейной (сплошная линия на рис. П3.1), то амплитуда выходного сигнала может достигать напряжения питания. Для оценки КПД в этом идеализированном случае обратим внимание, что незатемненная область на графике выходного напряжения соответствует
мгновенным (в каждый момент времени) значениям напряжения на нагрузке, а затемненная — напряжениям на выходном транзисторе. Как мы видим из графика, эти области строго равны друг другу по площади, поэтому соответствующие интегралы (1) и действующие значения напряжения на нагрузке и на транзисторе также будут равны, так что КПД будет равен ровно 50% — половина затрачиваемой мощности выделяется на нагрузке, половина— на транзисторе. В реальности же переходная характеристика имеет S-образный вид (пунктир на рис. П3.1), поэтому во избежание искажений приходится ограничивать амплитуду сигнала, так что в действительности КПД может быть значительно меньше. Да и реальный сигнал никогда не достигает максимальных амплитудных значений. Другим крупнейшим недостатком класса А является то, что в отсутствие входного сигнала через транзистор течет большой ток (причем легко показать, что именно в отсутствие сигнала мощность, выделяющаяся на транзисторе, будет максимальной, и в этом случае КПД фактически равен 0). Вместе с тем режим класса А позволяет без лишних проблем получить неискаженный сигнал, усиленный как по току, так и по напряжению, и поэтому широко используется в маломощных каскадах, где КПД не имеет существенного значения. Например, в этом режиме работает "раскачивающий" каскад на транзисторе VT3 в УМЗЧ из главы 9. Рис. П3.1. Режим работы усилителя класса А
Режим усилителя класса В фактически используется только в двухтактных схемах эмитгерных повторителей, подобных показанной на рис. 9.2. На рис. П3.2 изображены соответствующие графики для одной (положительной) половины такого каскада (для второй половины все— в случае идеального согласования характеристик выходных транзисторов— строго симметрично). Как мы видим, выходное напряжение представляет собой половину синусоиды, и в отсутствие входного сигнала ток через транзистор(ы) равен нулю. Примем, как и выше для класса А, что переходная характеристика строго линейна, и попробуем оценить теоретический КПД. Рис. П3.2. Режим работы усилителя класса В Действующее значение напряжения на нагрузке равно, как следует из формулы (2), UH = Ua /д/2 (в общем случае Ua Ф £/пит), отсюда мощность в нагрузке будет равна U 2 NH = —— (R — сопротивление нагрузки). 27?
Мгновенное значение напряжения на транзисторе можно определить как "остаток" от того, что выделяется на нагрузке (затемненная область на рис. П3.2), то есть ит = £/пит - (Маленькими буквами мы здесь обозначаем мгновенные значения.) Ток через транзистор тот же самый, что и через нагрузку, и его величина будет равна гн = uH(t)/R. Тогда мгновенная мощность на транзисторе выразится формулой: «Т = мтгн = Кит - мн • Средняя же мощность в одном плече определится формулой (обратите внимание, что хотя мы считаем для одного плеча, осреднение происходит по полному значению периода 2л, просто в течение второго полупериода плечо не работает): 1 л 7VT ~ ~ ~ J[^пит “ мн (0]ин (t)dt. 2лк J Для синусоидального напряжения подставим ин(г) = £/asin(r), fsin(?)^ = - cos(z), f 2 а также выражение для J sin (t) (см. выше), и получим: Ат 1 и и и 1 а*-7 пит _ а R л 4 к 7 Суммарная мощность, потребляемая от источника, будет равна сумме мощностей на обоих транзисторах и нагрузке, а КПД выразится формулой (величина сопротивления нагрузки R в числителе и знаменателе сокращается): N КПД =------У--- (7VH+27VT) л/7а2 а___ 4^пит Учтем, что в данном случае £/пит = Ua, и окончательно получим, что теоретический КПД для усилителя класса В составляет л/4 = 0,785 = 78,5%. Практически же КПД будет существенно меньше псУуелому ряду причин. Первая причина — та, что мы считали для максимального значения сигнала, а в реальности, как и для случая класса А, сигналы достигают этой величины только изредка. На рис. ПЗ.З приведены графики распределения мощностей и изменения КПД в зависимости от амплитуды сигнала. Интересно, что в отсутствие сигнала КПД, как и для класса А, равен 0, но есть одно существенное различие— сама мощность, потребляемая от источника питания, при этом также равна 0.
Кроме этого, есть и другие.причины снижения КПД. Во-первых, переходная характеристика, как и для случая класса А, не является прямой линией — практически это выражается в том, что напряжение на выходе будет ограничиваться величинами, меньшими, чем напряжение питания. Напряжение на выходе будет всегда ниже входного, по крайней мере, на величину падения напряжения база-эмиттер. Все это само по себе уменьшит незатемненную область на графике и увеличит затемненную. Рис. ПЗ.З. Распределение мощностей и величина КПД в зависимости от относительной амплитуды выходного сигнала в усилителях класса В: 1 — мощность на каждом из транзисторов; 2 — мощность в нагрузке; 3 — суммарная мощность, потребляемая от источника; 4 — КПД Главное же, что в чистом виде класс В для усиления аналоговых сигналов не используют— из-за больших искажений типа "ступенька" (см. главу 9). Поэтому практически классы В и А объединяют, создавая некоторый начальный ток смещения комплементарной пары — такой режим усилителя известен как класс АВ, и большинство аналоговых схем построено по этому принципу (в главе 9 мы обеспечивали режим АВ с помощью цепочки диодов). Все это касается случая, когда выходной каскад составлен из биполярных транзисторов. Применение комплементарных полевых транзисторов может существенно снизить искажения, однако там появится новая напасть — в момент равенства сигнала нулю оба транзистора пары будут приоткрыты (эффект "сквозного тока", аналогичный тому, что происходит при переключении в КМОП-микросхемах), что равносильно принудительному смещению биполярных транзисторов. Все это приводит к тому, что КПД "хороших" усилителей класса АВ составляет от силы 60%, а часто еще меньше (именно поэтому в главе 9 мы рассматривали схемы с величиной мощности на выходных транзисторах, равной мощности в нагрузке).
На остальных аналоговых классах мы подробно останавливаться не будем. Класс С есть "усугубленный" класс В — то есть выходной сигнал может быть обрезан как сверху, так и снизу. Излишне говорить, что такой режим приводит к очень большим искажениям, однако усилители класса С все же находят применение— в основном там, где наличие гармоник в спектре либо не имеет значения, либо, наоборот, используются именно гармоники (скажем, в некоторых радиочастотных конструкциях). Классы G и Н есть вариации на тему АВ — в них обоих, несколько по-разному, с целью повышения КПД происходит изменение напряжения питания в соответствии с уровнем выходного сигнала (примерно так же, как в главе 10 было предложено управлять им для повышения КПД аналоговых стабилизаторов). Очень популярен в настоящее время класс D. Аналоговый сигнал там не усиливается сам по себе— сначала он переводится в цифровую форму, то есть в последовательность прямоугольных импульсов, для усиления которых не нужно никаких ухищрений — чаще всего используют комплементарную пару подобно режиму В (так же, как усиливается сигнал на выходе логических КМОП-микросхем, см. главу 20). Выгода заключается в том, что теоретически КПД импульсного усилителя может быть равен 100%. Это происходит потому, что какой-то из транзисторов пары всегда заперт, а второй транзистор в это время полностью открыт, и мощности на них не выделяется. Это, конечно, в теории, потому что из глав, посвященных транзисторам, вы знаете, что, во-первых, падение напряжения на открытом транзисторе все же имеет место (у биполярного транзистора оно может составлять от 0,3 до 1 В в зависимости от мощности, а у полевых оно происходит за счет конечного сопротивления канала), во-вторых, как мы уже говорили, при использовании полевых транзисторов имеют место и сквозные токи. Еще одно важное обстоятельство, снижающее КПД, — то, что переключение не происходит мгновенно и транзисторы некоторое время находятся в линейном режиме, тогда на них также теряется энергия. Так что реальный КПД составляет 85—90%, что, конечно, все равно много лучше аналоговых режимов, особенно учитывая то обстоятельство, что КПД здесь никак не зависит от уровня входного аналогового сигнала. Так что большинство современных "ширпотребовских" усилителей, в том числе очень мощных, выполняют именно в классе D. Рассмотрим подробнее, как это происходит — ведь мы еще ни слова не сказали о том, как именно кодируется аналоговый сигнал и как его потом "извлекают обратно". В классе D используется т. н. ШИМ— широтно-импульсная модуляция, когда скважность импульсов некоторой частоты (заведомо более высокой, чем высшая частота аналогового сигнала) зависит от амплитуды аналогового сигнала. Традиционный способ такого преобразования показан на рис. П3.4.
Рис. П3.4. Блок-схема классического усилителя класса D Опорная частота (/оп на рис. П3.4) обычно составляет порядка 200—500 кГц. Чем она выше, тем меньше искажения сигнала, причем при возможности использования более простого ФНЧ (в данном случае— обычной интегрирующей RC-цепи, хотя часто используют и LC-фильтры1), но и тем выше требования к быстродействию компаратора и потери при переключении мощных транзисторов двухтактного каскада. Сигнал опорной частоты имеет треугольную форму, и обычно его получают из прямоугольного меандра с помощью интегратора на ОУ (см. рис. 14.5, а) — требования к стабильности частоты невысоки, а вот форма сигнала должна быть как можно ближе к треугольной, иначе возникнут искажения. Искажения особенно заметны при малых сигналах, так как в дело вступают неидеальности компаратора и наложенные на сигналы шумы. Класс Т, предложенный фирмой Tripath Technology, позволяет существенно улучшить характеристики усилителя класса D — там опорная частота изменяется в зависимости от величины входного напряжения (аналогично тому, как в усилителях класса Н и G изменяется напряжение питания). Усилители класса D широко распространены в современной рядовой аппаратуре из-за простоты реализации, экономичности (что особенно важно при батарейном питании) и еще одного обстоятельства, на котором мы здесь кратко остановимся. Дело в том, что при условии наличия уже оцифрованного аналогового сигнала (например, считанного с аудио-CD или загруженного из WAV-файла) весь цифровой узел, включая источник опорного сигнала и компаратор, можно смоделировать внутри микроконтроллера с помощью реверсивного счетчика, которые в состав МК обычно и так входят. Такая модель будет значительно дешевле обычной схемы, но для получения высоких характеристик нужен достаточно быстрый микроконтроллер (см. главу 34). 1 Теоретически фильтр можно не ставить вообще, так как динамическая головка все равно воспроизводит только слышимые частоты, практически же ставить в большинстве случаев приходится.
Приложение 4 Справочные данные компонентов Ниже приведены справочные данные некоторых компонентов, которые мы использовали в схемах, размещенных в этой книге. Разумеется, поместить данные всех упомянутых в тексте компонентов, и к тому же в полном объеме невозможно, поэтому были выбраны лишь самые характерные и часто упоминающиеся полупроводниковые приборы, таким образом, что они в совокупности образуют некий базовый набор, достаточный, чтобы повторить примерно 9 из 10 радиолюбительских конструкций. Данные о некоторых типах приводятся также при описании соответствующей конструкции в тексте глав. Данные профильтрованы на предмет реальной информативности — к примеру, нет никакой необходимости размещать информацию о прямом падении напряжения на кремниевых диодах, т. к. оно одно и то же для всех без исключения низковольтных типов, в то же время такие, к примеру, параметры, как емкость коллекторного перехода или граничное напряжение1 транзисторов просто бесполезны для радиолюбителя и, поэтому, также не приводятся. Такие характеристики, как предельно допустимая мощность рассеяния для транзисторов малой (но не средней и не большой!) мощности, также на практике требуются очень редко — можете спокойно принимать ее равной примерно 0,2—0,4 Вт, в зависимости от корпуса. Не привожу я и данные логических микросхем, т. к. характеристики для них в целом одинаковы и описаны в главе 20, а самая важная характеристика — разводка выводов — приведена на ряде схем и в тексте. Источники, откуда взяты приведенные данные, слишком многочисленны (это неофициальные справочники, и справочные данные, размещенные в литературе и Интернете, и информация из каталогов торгующих организаций, и фирменная документация как в виде бумажных каталогов, так и в формате PDF), чтобы их перечислить — вы не поверите, сколько бумажной макулатуры пришлось перелопатить и сколько интернет-часов потратить, чтобы найти, систематизировать и привести к более-менее единому знаменателю данные даже о таком небольшом количестве 1 Характеристика, фактически дублирующая значение предельно допустимого напряжения эмиттер-коллектор.
компонентов. Производители (и зарубежные не исключение) просто сговорились в своем стремлении скрыть от пользователя как можно больше критически важных параметров. Часто для компонентов, аналогичных по назначению, но от разных производителей, приводится разный набор параметров, из-за чего сравнение приборов становится довольно нетривиальной задачей2 — этот недостаток я по мере возможности также постарался устранить. Следует учесть, что упор я делаю на отечественные компоненты, т. к. нахождение справочных данных для них представляет наибольшие трудности. Конечно, информация о производителе того или иного компонента, особенно отечественного, является ориентировочной: кроме приведенных, это могут быть и другие фирмы, а отечественные заводы могли и позакрываться с тех пор, когда была собрана информация. Обращаю внимание, что это издание ни в коем случае не является официальным, и поэтому помещенные ниже данные не могут служить основанием для претензий к тому или иному производителю в случае несоответствия данных реальным характеристикам того или иного компонента. Диоды КД521 Рис. П4.1. Габаритные размеры диодов КД521 2 Яркий пример такой ситуации, к нашему изложению, правда, отношения не имеющий: характеристики чувствительности светочувствительных матриц для цифровых фотоаппаратов приводятся в единицах ISO, как для фотопленок, а для цифровых видеокамер — в единицах освещенности, хотя матрицы часто одни и те же! В нашем же случае, можно привести пример статического коэффициента передачи тока для транзисторов, который у одних типов приводится для режима, близкого к насыщению, для других — для активного режима, есть и третьи, не очень понятные случаи, поэтому я величину t/к, при которой производились измерения [3, опускаю, т. к. это только запутывает пользователя, не давая никакой реальной информации, ибо справочная величина коэффициента все равно есть величина ориентировочная.
Кремниевые диоды. Производитель: неизвестен (СНГ). Назначение: предназначены для применения в импульсных устройствах. Выпускаются в стеклянном корпусе с гибкими выводами. Для обозначения типа и полярности диодов используется условная маркировка— одна широкая и две узкие цветные полоски на корпусе со стороны положительного (анодного) вывода: КД521А— полосы синие; КД521Б— серые; КД521В — желтые; КД521Г — белые; КД521Д — зеленые. Тип КД521А КД521Б КД521В КД521Г КД521Д Макс, постоянное обратное напряжение, В 75 60 50 30 12 Постоянный или средний прямой ток при Т° = -60...+50 °C— не более 50 мА. Перегрузка по прямому току не более 5 мин при Т° = -60.. .+50 °C — 200 мА. Постоянный обратный ток при Uoqp = UMax: при Т ° = -60 и +25 °C ... 1 мкА; при Т° = +125 °C ... 100 мкА. 1 Nxxxx 1N54xx 1N400X Рис. П4.2. Габаритные размеры и разводка выводов диодов 1 Nxxxx Кремниевые диоды. Производитель: Fairchild Semiconductor (США) и др. Назначение: выпрямление переменного тока. 20 Зак. 7I0
Максимальные режимы: и, в 1, А 50 100 200 400 600 800 1000 1,0 1N4001 1N4002 1N4003 1N4004 1N4005 1N4006 1N4007 3,0 1N5400 1N5401 1N5402 1N5404 1N5406 1N5407 1N5408 Примечание 1. Частота выпрямления — до 1 МГц. Примечание 2. Для диодов lN54xx максимальная рассеиваемая мощность 6,25 Вт, макс, импульсный ток (одиночная синусоидальная полуволна 8,3 мс) — 200 А. КД202 Рис. П4.3. Габаритные размеры и разводка выводов диодов КД202 Кремниевые диоды. Производитель: неизвестен (СНГ). Назначение: выпрямление переменного тока. Тип КД202 А КД202 В КД202 Д КД202 Ж КД202 К КД202 М КД202 Р Макс, обратное напряжение, В 50 100 200 300 400 500 600
Постоянное обратное напряжение — 0,7 t/обр. макс. Постоянный (средний) прямой ток при Г ° = -60 до +75 °C — 5 А. Макс, импульсный ток (одиночная синусоидальная полуволна 10 мс) — 30 А. Частота выпрямления — до 1,2 кГц. КЦ407А Рис. П4.4. Габаритные размеры и разводка выводов выпрямительного моста КЦ407А Кремниевый выпрямительный мост. Производитель: неизвестен (СНГ). Назначение: выпрямление переменного тока. Максимальное обратное напряжение — 400 В. Средний выпрямленный ток при Т° = -60...+55 °C — не более 500 мА. Частота выпрямления — до 20 кГц. КУ202Н Рис. П4.5. Габаритные размеры и разводка выводов тиристора КУ202Н
Кремниевый тиристор. Производитель: неизвестен (СНГ). Назначение: ключи средней мощности. Напряжение в открытом состоянии — 1,5 В. Импульсное отпирающее напряжение на управляющем электроде при /отп > 10 мс — 7 В. Импульсный отпирающий ток управляющего электрода при ?отп > 10 мс — не более 200 мА. Постоянное прямое напряжение в закрытом состоянии — не более 400 В. Постоянный ток в открытом состоянии при Т° <50 °C — не более 10 А. Транзисторы КТ315, КТ361 Рис. П4.6. Габаритные размеры и разводка выводов транзисторов КТ315, КТ361 Транзисторы кремниевые малой мощности высокочастотные. Производитель: "Кремний" (г. Брянск, Россия), НИИПП (г. Томск, Россия). Структура: п-р-п (КТЗ 15), p-n-p (КТ361). Тип прибора указывается на корпусе в виде буквы номинала: для КТЗ 15 буква слева, для КТ361 увеличенная и посередине корпуса. Назначение: усилители НЧ и ВЧ. Тип корпуса: КТ-13.
Статический коэффициент передачи тока (/к = 1мА): □ КТЗ 15А, КТЗ 15В — 30—120; □ КТ315Б, КТ315Г, КТ315Е, КТ361Б, КТ361Г, КТ361Е — 50—350; П КТ315Д, КТ361 А, КТ361Д — 20—90; □ КТ315Ж —30—250; П КТ315И —>30; □ КТ361В —40—160. Максимальное постоянное напряжение коллектор-эмиттер, В: П КТ315А, КТ361А—25; □ КТ315Б, КТ315Ж, КТ361Б — 20; □ КТЗ15В, КТЗ15Д, КТЗ61 В, КТ361Д — 40; □ КТ315Г, КТ315Е, КТ361Г, КТ361Е — 35; П КТ315И —60. Максимальный постоянный ток коллектора, мА: □ КТЗ 15А, КТЗ 15Б, КТЗ 15В, КТЗ 15Г, КТЗ 15Д, КТЗ 15Е — 100; П КТ361 (все буквы), КТЗ 15Ж, КТЗ 15И — 50. Граничная частота — 250 МГц. КТ3102, KT3107 Рис. П4.7. Габаритные размеры и разводка выводов транзисторов КТ3102, КТ3107 Транзисторы кремниевые малой мощности высокочастотные. Производитель: АО "Светлана" (Санкт-Петербург, Россия), АО "Кремний" (г. Брянск, Россия), Нальчикский завод полупроводниковых приборов (г. Нальчик, Россия).
Структура: n-p-n (КТЗ102), р-п-р (КТЗ107). Тип прибора указывается на корпусе или непосредственно, или на торце корпуса наносится метка: КТ3102А— темно-красная, КТ3102Б— желтая, КТЗ 102В— темно-зеленая, КТ3102Г— голубая, КТ3102Д— синяя, КТЗ 102Е — белая, КТЗ 102Ж — две темно-красные, КТЗ 102И — две желтые, КТ3102К— две темно-зеленые, КТ3107А— голубая и розовая, КТ3107Б — голубая и желтая; КТЗ 107В— голубая и синяя; КТ3107Г — голубая и бежевая; КТЗ 107Д — голубая и оранжевая; КТЗ 107Е — голубая и цвета электрик; КТ3107Ж— голубая и салатовая; КТ3107И— голубая и зеленая; КТ3107К— голубая и красная; КТ3107Л— голубая и серая. Другой способ маркировки состоит в том, что тип транзистора указывается условным значком-треугольником (см. рис. П4.7). Иногда вместо этих значков ставится просто цифра (2 или 7). Кроме этого, на маркировочной поверхности ставится буква, соответствующая группе (А, Б, В и т. п.) и иногда еще дополнительно два значка, условно означающие год и месяц выпуска (например, М 6 означает июнь 2000 г.). Назначение: для низкочастотных устройств с малым уровнем шумов, переключающих, усилительных и генераторных устройств средней и высокой частоты. Тип корпуса: КТ-26 (ТО-92). Статический коэффициент передачи тока при (/э = 2 мА: Т°= +25 °C): □ КТЗ 102А, КТЗ 102Ж —100—250; □ КТЗ 102Б, КТЗ 102В, КТЗ 102Г, КТЗ 102И, КТЗ 102К — 200—500; П КТ3102Г, КТ3102Е — 400—1000; □ КТ3107А, КТ3107В —70—140; □ КТЗ 107Б, КТЗ 107Г, КТЗ 107Е — 120—220; П КТЗ 107Д, КТЗ 107Ж, КТЗ 107И — 180—460; П КТЗ 107К, КТЗ 107Л —380—800. Максимальное постоянное напряжение коллектор-эмиттер, В: П КТЗ 102А, КТЗ 102Б, КТЗ 102Ж, КТЗ 102И — 50; □ КТЗ 102В, КТ3102Д, КТ3102К — 30; П КТЗ 102Г, КТЗ 102Е, КТЗ 107Е, КТЗ 107Ж, КТЗ 107Л — 20; П КТ3107А, КТ3107Б, КТ3107И —45; П КТЗ 107В, КТЗ 107Г, КТЗ 107Д, КТЗ 107К — 25. Максимальный постоянный ток коллектора, мА — 100. Граничная частота — 200 МГц (КТЗ 102А-Е — 150 Мгц).
КТ814, КТ815, КТ816, КТ817 Рис. П4.8. Габаритные размеры и разводка выводов транзисторов КТ814—К817 Транзисторы кремниевые средней мощности низкочастотные. Производитель: АО "Кремний" (г. Брянск, Россия), "Искра" (г. Ульяновск, Россия). Структура: n-p-n (КТ815, КТ817), p-n-p (КТ814, КТ816). Тип прибора указывается на корпусе. Назначение: усилители низкой частоты, импульсные устройства. Тип корпуса: КТ-27 (ТО-126). Статический коэффициент передачи тока при (/э = 1 А: Т°= +25 °C): □ КТ814А-В, КТ815А-В —40; □ КТ814Г, КТ815Г —30; □ КТ816А-Г, КТ817А-Г — 25. Максимальное постоянное напряжение коллектор-эмиттер, В: □ КТ814А, КТ816А, КТ817А — 25; □ КТ814Б, КТ815А —40; □ КТ816Б, КТ817Б — 45; П КТ815Б —50; П КТ814В, КТ816В, КТ817В — 60; П КТ815В —70; П КТ814Г, КТ816Г, КТ817Г — 80; П КТ815Г — 100.
Максимальный постоянный ток коллектора, А: КТ814, КТ815 — 1,5 А; КТ816, КТ817 — 3 А. Постоянная рассеиваемая мощность коллектора, Вт: П без теплоотвода КТ814—КТ817 — 1 Вт; □ с теплоотводом КТ814, КТ815 — 10Вт; □ с теплоотводом КТ816, КТ817 — 25 Вт. Граничная частота — 3 МГц. KT972, KT973 Чертеж корпуса и разводку выводов см. КТ814 - КТ817. Транзисторы кремниевые средней мощности высокочастотные структуры Дарлингтона. Производитель: "Транзистор" (г. Минск, Белоруссия). Структура: n-p-n (КТ972), p-n-p (КТ973). Тип прибора указывается на корпусе3. Назначение: управление импульсными устройствами. Тип корпуса: КТ-27 (ТО-126). Статический коэффициент передачи тока при (/э = 1 А: Т° = +25 °C): КТ972А,Б, КТ973А,Б — 750. Максимальное постоянное напряжение коллектор-эмиттер, В: П КТ972А, КТ973А — 60; П КТ972Б, КТ973Б — 45. Максимальный постоянный ток коллектора — 4 А. Постоянная рассеиваемая мощность коллектора (с теплоотводом) — 8 Вт. Напряжение насыщения коллектор-эмиттер— 1,5 В. Напряжение насыщения база-эмиттер — 2,5 В. Граничная частота — 100 МГц. 3 У других производителей — не всегда.
КТ818, КТ819 Рис. П4.9. Габаритные размеры и разводка выводов транзисторов КТ818, КТ819 Транзисторы кремниевые большой мощности низкочастотные. Производитель: АО "Кремний" (г. Брянск, Россия). Структура: n-p-n (КТ819), p-n-p (КТ818). Тип прибора указывается на корпусе. Назначение: усилители НЧ и переключающие устройства. Тип корпуса: КТ-28 (ТО-220)4. Минимальный статический коэффициент передачи тока при (7Э = 5 А: Т° = +25 °C): П КТ818А, КТ818В, КТ819А, КТ819В — 15; П КТ818Б, КТ819Б —20; П КТ818Г, КТ819Г — 12. Максимальное постоянное напряжение коллектор-эмиттер, В: П КТ818А, КТ819А —40; П КТ818Б, КТ819Б —50; 4 Есть модификации в корпусах типа ТО-3 (металлическом), а также ТО-218 (с шагом выводов 5,5 мм).
П КТ818В, КТ819В — 70; П КТ818Г — 90; □ КТ819Г—100. Максимальный постоянный ток коллектора — 10 А. Постоянная рассеиваемая мощность коллектора (с теплоотводом) — 60 Вт. Граничная частота — 3 МГц. КТ829 Чертеж корпуса и разводку выводов см. КТ818, КТ819. Транзистор кремниевый большой мощности низкочастотный структуры Дарлингтона. Производитель: АО "Элиз" (г. Фрязино, Россия). Структура: п-р-п. Тип прибора указывается на корпусе. Назначение: усилители НЧ и переключающие устройства. Тип корпуса: КТ-28 (ТО-220). Статический коэффициент передачи тока при (/э = 3 А: Т°= +25 °C) — 750. Макс, постоянное напряжение коллектор-эмиттер, В: П КТ829А — 100; □ КТ829Б —80; П КТ829В —60; П КТ829Г —45. Максимальный постоянный ток коллектора — 8 А. Постоянная рассеиваемая мощность коллектора (с теплоотводом) — 60 Вт. Напряжение насыщения коллектор-эмиттер — 2 В. Напряжение насыщения база-эмиттер — 2,5 В. Граничная частота — 10 МГц.
BDW93, BDW94 # ' ' 1 2 3 I.Base 2.Collector 3.Emitter Рис. П4.10. Разводка выводов транзисторов BDW93, BDW94 Транзисторы кремниевые большой мощности низкочастотные структуры Дарлингтона. Производитель: Fairchild Semiconductor (США), ST Microelectronics (Европа). Структура: n-p-n (BDW93), p-n-p (BDW94). Тип прибора указывается на корпусе. Тип корпуса: ТО-220. Минимальный статический коэффициент передачи тока: □ при 1К = 3 А — 1000; □ при 7К = 10 А — 100. Максимальный статический коэффициент передачи тока — 20 000. Максимальное постоянное напряжение коллектор-эмиттер, В: □ BDW93,BDW94 — 45; □ BDW93A, BDW94A — 60; □ BDW93B, BDW94B — 80; □ BDW93C, BDW94C — 100. Максимальный постоянный ток коллектора — 12 А. Постоянная рассеиваемая мощность коллектора (с теплоотводом): □ при Т°=+25 °C —60 Вт; □ при Т°= +100 °C — 35 Вт.
Напряжение насыщения коллектор-эмиттер (мах) — ЗВ. Напряжение насыщения база-эмиттер (мах) — 4 В. Граничная частота5 — 1 МГц. кпзоз Корпус Рис. П4.11. Габаритные размеры и разводка выводов транзисторов КПЗОЗ Транзистор кремниевый полевой малой мощности с затвором на основе р-п-перехода и каналом п-типа. Производитель: АООТ "Элекс" (г. Александров, Россия). 5 На основе косвенных данных.
Тип прибора указывается на корпусе. Назначение: общего назначения. Тип корпуса: КТ-1-12 (ТО-17). Начальный ток стока при U3ii = 0, мА: □ КПЗОЗА, КПЗОЗБ — 0,5—2,5; □ КПЗОЗВ, КПЗОЗИ — 1,5—5; □ КПЗОЗГ — 3—12; □ КПЗОЗД —3—9; □ КПЗОЗЕ —5—20; □ КПЗОЗЖ —0,3—3. Напряжение отсечки при /с = 10 мкА, В: □ КПЗОЗА, КПЗОЗБ — 0,5—3; □ КПЗОЗВ — 1—4; □ КПЗОЗГ, КПЗОЗД, КПЗОЗЕ <8; □ КПЗОЗЖ —0,3—3; □ КПЗОЗИ —0,5—2. Максимальное напряжение сток-исток, В — 25. Максимальное напряжение затвор-сток, В — 30. Максимальный постоянный ток стока — 20 мА. Электронные реле и оптроны АОД130 Рис. П4.12. Внешний вид и разводка выводов оптрона АОД130
Диодный оптрон. Производитель: з-д "Протон" (Россия). Тип прибора указывается на корпусе. Тип корпуса: модифицированный DIP-86. Постоянное прямое входное напряжение, В — 1,5. Максимальный входной ток, мА — 20. Максимальный импульсный входной ток, мА — 100. Максимальное входное обратное напряжение, В — 3,5. Максимальное выходное обратное напряжение, В — 30. Коэффициент передачи тока, % — 1. Максимальное напряжение изоляции, В — 1500. АОР124Б Рис. П4.13. Габаритные размеры и разводка выводов оптрона АОР124Б Резисторный оптрон со светодиодом на входе. Производитель: неизвестен (Россия). Тип прибора указывается на корпусе. Тип корпуса: советский вариант ТО-39. Постоянное прямое входное напряжение, В — 3,8. Максимальный входной ток, мА — 15. Максимальный импульсный входной ток, мА — 100. 6 По поводу наименования корпусов микросхем см. сноску 1 в главе 8.
Максимальное входное обратное напряжение, В — 6. Максимальное выходной ток, мА — 9. Максимальное напряжение изоляции, В — 1000. КР293КП1 (5П14) Рис. П4.14. Разводка выводов электронного реле КР293КП1 (5П14) Электронное реле малой мощности. Производитель: з-д "Протон" (Россия). Тип прибора указывается на корпусе. Тип корпуса: DIP-6. Постоянное прямое входное напряжение, В — 1,5. Максимальный входной ток, мА — 25. Минимальный входной ток, мА — 5. Максимальный импульсный входной ток, мА —150. Максимальное коммутируемое напряжение, В: □ КР293КП1А — 60; □ КР293КП1Б —230; □ КР293КП1И —400. Максимальный коммутируемый ток, мА: □ КР293КП1А —250; □ КР293КП1Б — 100; □ КР293КП1И —80. Максимальное напряжение изоляции, В — 1500.
PF240D25 Рис. П4.15. Габаритные размеры и разводка выводов электронного реле PF240D25 Электронное реле большой мощности. Производитель: CRYDOM (San Diego, США). Тип прибора указывается на корпусе. Управляющее входное напряжение, В — 3—15. Входной ток при упр. напряж. 5В, мА — 15. Максимальное коммутируемое напряжение, В— 12—280 (действ, значение). Коммутируемый ток, А — 0,06—25. Перегрузка по току (1 полуперирод 50—60 Гц), А — 250. Примечание. При коммутируемых токах более 10 А требуется принудительный обдув корпуса.
Микросхемы 1019ЕМ1 Рис. П4.16. Габаритные размеры и разводка выводов датчика 1019ЕМ1 Термодатчик с линейной зависимостью выходного напряжения от температуры. Производитель: АООТ "Фотон" (г.Ташкент, Узбекистан). Тип прибора указывается на корпусе. Тип корпуса: ТО-18 (см. сноску 6). Ток питания, мА — 0,5... 1,5. Выходное напряжение, мВ при токе питания 1 мА и температуре □ 298 К (25 °C) — 2952.. .3012; □ 398 К (125 °C) —3932...4032; □ 263 К (-10 °C) — 2582...2682 для К1019ЕМ1 А; □ 228 К (-45 °C) — 2232...2332 для К1019ЕМ1. Рабочий температурный интервал, °C: □ К1019ЕМ1—от-45 доу-125; □ К1019ЕМ1А — от-10 до+125.
7805, 7809, 7812, 7815, 7905, 7909, 7912, 7915 GND 1 2 3 1. Input 2.GND 3.Output Рис. П4.17. Разводка выводов стабилизаторов 78(79)хх Стабилизаторы постоянного тока большой мощности. Производитель: National Semiconductor (США), Fairchild Semiconductor (США), ST Microelectronics (Европа). Отечественные аналоги: КР142ЕН5А (7805), КР142ЕН8А (7809), КР142ЕН8Б (7812), КР142ЕН8В (7815), КР1162ЕН5 (7905), КР1162ЕН9 (7909), КР1162ЕН12 (7912), КР1162ЕН15 (7915). Тип прибора указывается на корпусе. Тип корпуса: ТО-220. Выходное напряжение, В: □ 7805 —+5 ±0,2; □ 7809 —+9 ± 0,36; □ 7812 —+12 ±0,5; □ 7815 —+15 ±0,6; □ 7905----5 ±0,2; □ 7909----9 ±0,36; □ 7912----12 ±0,5; □ 7915----15 ±0,6.
Максимальный постоянный выходной ток (внутреннее ограничение), А: □ 7805,7905 — 2,1; □ 7809,7909— 1,8; □ 7812,7912— 1,5; □ 7815,7915— 1,2. Максимальное входное напряжение, В — 35 (для 78хх), -35 (для 79хх). Максимальная рассеиваемая мощность, Вт (Т° = 0 ...+75 °C): □ без теплоотвода — 3; О с теплоотводом — 20. 78L05,78L09,78L12,78L15, 79L05, 79L09, 79L12, 79L15 Рис. П4.18. Разводка выводов стабилизаторов 78(79)Lxx в корпусе ТО-92 Стабилизаторы постоянного тока малой мощности. Производитель: National Semiconductor (США), Fairchild Semiconductor (США), ST Microelectronics (Европа). Отечественные аналоги: KPI 157ЕН5 (78L05), KPI 157ЕН9 (78L09), KPI 157ЕН12 (78L12), KPI 157ЕН15 (78L15), КР1168ЕН5 (79L05), КР1168ЕН9 (79L09), КР1168ЕН12 (79L12), КР1168ЕН15 (79L15). Тип прибора указывается на корпусе. Тип корпуса: ТО-92. Выходное напряжение, В: ) □ 78L05 — +5 ± 0,2; □ 78L09 —+9 ± 0,36; □ 78L12 —+12 ± 0,5; □ 78L15 — +15 ±0,6;
□ 79L05---5 ±0,2; □ 79L09---9 ±0,36; □ 79L12---12 ±0,5; □ 79L15---15 ±0,6. Максимальный постоянный выходной ток, мА — 100. Максимальное входное напряжение, В — 35 (для 78хх), -35 (для 79хх). Максимальная рассеиваемая мощность, Вт: □ при Т° = О °C — 1 Вт; □ при Т° =+75 °C — 0,5 Вт. LM311 (521 САЗ, 554САЗ) (баланс 2) -1Л1ИТ Вкл/выкл (баланс 1) ТО-99, DIP-8 (DIP-14) Рис. П4.19. Разводка выводов компаратора LM311 (521САЗ, 554САЗ) Быстродействующий компаратор. Производитель: National Semiconductor (США). Тип прибора указывается на корпусе. Тип корпуса: DIP-8, ТО-99 (металлический круглый), DIP-14. Максимальное напряжение питания, В — ±18 или +36. Максимальное выходное напряжение (коллектор — отриц. напр. пит.), В — 50. Максимальный выходной ток, Ма — 50. Входной ток смещения, нА — < 10. Входное напряжение сдвига при сопротивлении источника <10 кОм, мВ — <2.
(1А741 (140УД7) Рис. П4.20. Разводка выводов ОУ цА741 (140УД7) Операционный усилитель общего назначения. Производитель: Philips Semiconductors (Европа), ST Microelectronics (Европа) и др. Тип прибора указывается на корпусе. Тип корпуса: DIP-8. Максимальный ток потребления (/?н = «», £/пит = ±15 В), мА — 2,8. Напряжение питания, В — ±5 ±18. Максимальное входное напряжение, В — ±15. Максимальное выходное напряжение (Unm = ±15 В), В: □ при Rh = 10 кОм — ±14; □ при Rh = 2 кОм — ±13. Выходное сопротивление, Ом — 75. Коэффициент усиления — 50 000—200 000. Входной ток смещения, нА — 80—500. Разность входных токов смещения, нА — 20—200. Входное напряжение сдвига при сопротивлении источника < 10 кОм, мВ — 2. Температурный дрейф напряжения сдвига (ТКЕ), мкВ/°С — 10. Частота единичного усиления, МГц — 1. Скорость нарастания, В/мкс — 0,5.
цА747 (140УД20) Два операционных усилителя типа рА741 в одном корпусе. Производитель: Texas Instruments (США) и др. Тип прибора указывается на корпусе. Тип корпуса: DIP-14. Максимальный ток потребления (/?н = А7ПИ1 = ±15 В), мА— 5,5. Остальные характеристики см. рА741. МАХ478 Два прецизионных операционных усилителя в одном корпусе. Производитель: MAXIM/DALLAS (США).
Тип прибора указывается на корпусе. Тип корпуса: DIP-8 (SO-8). Максимальный ток потребления (/?н = ©о, £/пит = ±15 В), мкА — 50. Напряжение питания, В — ±2,2 + ±18. Максимальное входное напряжение, В — ± £/пит. Максимальное выходное напряжение ([7ПИТ = ±15 В, 7?н = 2 кОм), В —±12,7. Коэффициент усиления — 300 000—1200 000. Входной ток смещения, нА — 5. Разность входных токов смещения, нА — 0,25. Входное напряжение сдвига при сопротивлении источника <10 кОм, мкВ — 100. Температурный дрейф напряжения сдвига (ТКЕ), мкВ/°С — 0,9. Частота единичного усиления, кГц — 60. Скорость нарастания, В/мкс — 0,02. TDA3020 + и Output -U Inverting Input Noninverting Input Рис. П4.23. Внешний вид и разводка выводов усилителя TDA3020 Усилитель мощности звуковой частоты. Производитель: ST Microelectronics (Европа).
Тип прибора указывается на корпусе. Тип корпуса: пятивыводной ТО-220. Напряжение питания, В — ±6 -е- ±18. Максимальный выходной ток, А — 3,5. Максимальная рассеиваемая мощность, Вт — 20. Входной ток смещения, мкА — 2. Входное напряжение сдвига, мВ — 20. Ширина полосы пропускания по уровню ЗдБ, Гц — 10—140 000. AT90S2313, AT90S8515, AT90S85357 RESETZ ’RXD) PD0-Z 18 xrvi [Z (INTO) РО2 Z (INTI) РОЗ LZ (ТО) PD4Z 'JDPO5Z gndCZ' 10 16 14 13 ^2]Р97 (SCK) ZJP36 (miso) Z’P35 (MOSI) ZPB4 ZJPB3-.OC1) ZP32 ZP91 (AlNl) ZpBO JAINO) Zp06 (iCP) AT90S2313 AT90S8515 (TO) P8G (TD PB1 (AINO) PS2 (AIN_JJ PB3 (SS) PB4 (MOSI) PB5 (MISO) PB6 (SCK)PB7 RESET GND XTAL2 XTAt.1 (RXD) PDO (TXD) PD1 (INT0) PD2 (INT') РОЗ (OC1B)PD4 (CC1A) PD5 (ICP) PD8 12 15 18 РАО (ADCO) PA1 (ADC1) PA2 (ADC2) РАЗ (AOC3) PA4 (ADC4) 35 □ PA5 (ADC5) □ pa6 (ADC6) 3 PA7 (ADC7) □ AREF □ AGND □ AVCC 3 PC7 (TOSC2) □ PC6 (TOSC1) 3 PC5 □ °C4 □ PC3 □ »C2 □ PC1 36 34 33 32 30 29 28 27 26 25 24 23 22 21 PQ7 (OC2) AT90S8535 8 2 5 6 8 9 40 □ Рис. П4.24. Разводка выводов микроконтроллеров AT90S2313, AT90S8515, AT90S8535 в корпусе DIP Микроконтроллеры AVR. Производитель: Atmel (США). Тип прибора указывается на корпусе. Тип корпуса; DIP-20 (AT90S2313), DIP-40 (AT9OS8515, AT90S8535) и др. 7 Микросхемы с буквой L в наименовании обладают пониженным энергопотреблением. В настоящее время указанные типы микроконтроллеров AVR "classic" заменяются на более развитые версии, в названиях которых присутствуют приставки "mega" (например, ATmega8515). Эти кристаллы полностью совместимы с классическими чипами по выводам и обратно совместимы по программному коду. Они имеют аналогичные электрические параметры, но обладают повышенным быстродействием (до 16 МГц) либо расширенным диапазоном питания (от 1,8 В) и увеличенным набором команд.
Основные электрические параметры. Напряжение питания, В — 2,7—6,0. Входное напряжение лог. О, не более, В — 0,2£/пит. Входное напряжение лог. 1, не менее, В — 0,6(/пит. Входное напряжение лог. 1 выводов XTAL, не менее, В —0,8(/пит. Входное напряжение лог. 1 вывода Reset, не менее, В — (/пит. Максимальное входное напряжение лог. 1, В — £/пит + 0,5 В. Минимальное входное напряжение лог. О, В--0,5 В. Выходное напряжение лог. О, не более, В — 0,6. Выходное напряжение лог. 1, не менее, В: □ £/пит = 5 В — 4,2; □ £/пит = 3 В — 2,3. Потребляемый ток в режиме: □ £/пит = 3 В, FT = 4 МГц — 3,5 мА; □ Power Down — 1 мкА; □ Power Down + WDT — 50 мкА. Входной ток утечки в режиме входа, мкА — 8. Нагрузочный резистор по входу, кОм — 35—120. Входное напряжение сдвига аналогового компаратора, мВ — 20. Входной ток смещения аналогового компаратора, нА — 10. Максимальный ток через вывод питания или "земли", мА: □ AT90S2313, AT9OS8515 — 140; □ AT9OS8535 — 200. Максимально допустимый ток одного вывода порта, мА — 40. Максимальный постоянный ток одного вывода порта, мА — 20. Максимально допустимый суммарный ток всех выводов порта, мА: □ для AT90S2313 — 80 (каждый из портов В и D); □ для AT90S8515 — 80 (порт А), 80 (порты В, С и D в сумме); □ для AT90S8535 — 100 (порт А), 100 (порты В, С и D в сумме). Максимальная частота тактового генератора, МГц: □ при £/пит = 2,7 - 6,0 В — 10 (AT90S2313), 4 (AT9OS8515, AT9OS8535); □ при Ц1ИТ = 4,0 - 6,0 В — 16 (AT90S2313), 8 (AT90S8515, AT9OS8535).
Соответствие наименований зарубежных и отечественных микросхем КМОП 4000 К561 4000 К561 4000 К561 CD4000 ЛП4 CD4023 ЛАЭ CD4061 РУ2 CD4001 ЛЕ5 CD4025 ЛЕЮ CD4066 КТЗ CD4002 ЛЕ6 CD4027 ТВ1 CD4093 ТЛ1 CD4006 ИР10 CD4028 ИД1 CD4098 АГ1 CD4007 ЛП1 CD4029 ИЕ14 CD40107 ЛАЮ CD4008 ИМ1 CD4030 ЛП2 CD40108 ИР12 CD4009 ПУ2 CD4034 ИР6 CD40109 ПУ6 CD4010 ПУЗ CD4035 ИР9 CD40181 ИПЗ CD4011 ЛА7 CD4039 РП1 CD40182 ИП4 CD4012 ЛА8 CD4042 ТМЗ МС14502 ЛН1 CD4013 ТМ2 CD4043 ТР2 МС14516 ИЕ11 CD4015 ИР2 CD4046 ГГ1 МС14520 ИЕЮ CD4016 КТ1 CD4049 ЛН2 МС14531 СА1 CD4017 ИЕ8 CD4050 ПУ4 МС 14554 ИП5 CD4018 ИЕ19 CD4051 КП2 МС14580 ИР12 CD4019 ЛС2 CD4052 КП1 МС14581 ИПЗ CD4020 ИЕ16 CD4056 ИД5 МС14582 ИП4 CD4022 ИЕ9 CD4059 ИЕ15 МС14585 ИП2 Примечание. CD4xxxx— наименование серии 4000, принятое в фирмах Fairchild Semiconductor и Texas Instruments, МС14хххх — в фирме Motorola. У других фирм могут быть свои префиксы, например, НСС или HCF — у фирмы ST Microelectronics. Сами обозначения микросхем остаются одинаковыми независимо от производителя.
Программа часов Описание схемы и программы часов см. в главе 32. Программа занимает в памяти МК 596 байт. ;============== Программа часов ================== /AT90S2313 4 МГц .include "2313def.inc" ===== Управление сегментами ==== equ segA = 5 ; PD5 (pin 9) equ segB = 6 ; PD6 (pin 11) equ segC = 2 ; PB2 (pin 14) equ segD = 4 ; PB4 (pin 16) equ segE = 5 ; PB5 (pin 17) equ segF = 6 ; PB6 (pin 18) equ segG = 7 ; PB7 (pin 19) ==== Управление разрядами ==== equ em = 0 ; PDO (pin2) equ dm = 1 ; PD1 (pin 3) equ eh = 2 ; PD2 (pin 6) equ dh = 4 ; PD4 (pin 8) ==== Рабочие переменные ==== . def POS = rl6 Г^тсчет разрядов для динамической индикации . def . def sek. = rl7 ;число секунд temp = rl8 ;рабочая переменная , def emin = rl9 ;число единиц минут . def dmin - г20 /число десятков минут , def ehh = г21 /число единиц часов . def dhh = г22 /число десятков часов
.def set_up = r23 /отсчет разрядов при установке .def count = г24 /счетчик для мигания .def Flag = г2 5 /флаги режимов /в регистре Flag: если бит0=1, то идет установка часов /если бит1=1, то внешнее напряжение пропало /======== Прерывания ========= гjmp RESET /процедура Reset reti гjmp INTT1 /прерывание INTI по нажатию Кн1 reti гjmp TIM1 /прерывание Timerl по сравнению CompareA (счет времени) reti гjmp TIMO /прерывание TimerO по переполнению (управл. разрядами) reti reti reti гjmp ACOMPI /прерывание аналогового компаратора /========== Программа ================ /процедуры для отображения цифр на семисегментном индикаторе /ABCDEF(O)/ВС(1)/ABDEG(2)/ABCDG(3)/BCFG(4)/ACDFG(5) /ACDEFG(6)/ABC(7)/ABCDEFG(8)/ABCDFG(9) OUT_0: sbi PortD,segA sbi PortD,segB sbi PortB,segC sbi PortB,segD sbi PortB,segE sbi PortB,segF — ret OUT_1: sbi PortD,segB sbi PortB,segC ret OUT_2: sbi PortD,segA
sbi sbi sbi sbi ret 0UT_3: sbi sbi sbi sbi sbi ret 0UT_4: sbi sbi sbi sbi ret 0UT_5: sbi sbi sbi sbi sbi ret 0UT_6: sbi sbi sbi sbi sbi sbi ret 0UT_7: sbi sbi sbi PortD,segB PortB,segG PortB,segE PortB,segD PortD,segA PortD,segB PortB,segG PortB,segC PortB,segD PortD,segB PortB,segG PortB,segF PortB,segG PortD,segA PortB,segF PortB,segG PortB,segC PortB,segD PortD,segA PortB,segF PortB,segG PortB,segC PortB,segE PortB,segD PortD,segA PortD,segB PortB,segC ret
OUT_8: sbi PortD,segA sbi PortD,segB sbi PortB,segC sbi PortB,segD sbi PortB,segE sbi PortB,segF sbi PortB,segG ret OUT_9: sbi PortD,segA sbi PortD,segB sbi PortB,segC sbi PortB,segD sbi PortB,segF sbi PortB,segG ret ;===== прерывание по нажатию кнопки Кн1 ==== INTT1: sbrc Flag,1 ;если бит1=1, напряжения нет rjmp END_SET /какая к черту установка - на выход clr temp out GIMSK,temp /запрещаем INTI sbr Flag,1 /устанавливаем бит 0 флага - идет установка inc set__up /отсчет, какой разряд устанавливаем clr count /очищаем счетчик мигания cpi set_up,5 /если счетчик разрядов brne END_SET /еще не больше 4, то на выход clr set_up /если больше, то обнуляем счетчик Idi sek,59 /и устанавливаем число секунд = 59 cbr Flag,1 /сбрасываем бит 0 флага - конец установки END_SET: reti /конец прерывания INT1 /===== прерывание Timer1 - ход часов ===== TIM1: sbrc Flag,1 /если бит1=1, напряжения нет rjmp mtime / сразу посылаем на счет времени
sbrs Flag,0 /если битО=1, идет установка гjmp mtime /иначе сразу на счет времени ldi temp, 0Ы0000000 ;на всякий случай out GIFR,temp /очищаем прерывание INT1 cpi count,0 / если счетчик =0 breq CONT_1 /то на продолжение ldi temp, 1«INT1 /иначе разрешаем прерывание INT1 out GIMSK,temp CONT_1: /установка inc count /увеличиваем счетчик мигания на 1 cpi set_up,1 /если первый разряд, устанавливаем его brne mml /иначе на следующий sbis PinB,0 /если Кн2 нажата inc emin /увеличиваем число ед минут на 1 cpi emin,10 /если число ед минут еще не равно 10 brne END_TIM1 /то на выход из процедуры clr emin /если =10, то обнуляем гjmp END_TIM1 /на выход mml: cpi set_up,2 /если второй разряд, устанавливаем его brne mm2 /иначе на следующий sbis PinB,0 /если Кн2 нажата inc dmin /увеличиваем число дес. минут на 1 cpi dmin,б /если число дес. минут еще не равно б brne END_TIM1 /то на выход из процедуры clr dmin /если = б, то обнуляем гjmp END_TIM1 /на выход mm2: cpi set_up,3 /если третий разряд, устанавливаем его brne mm3 /иначе на следующий sbis PinB,0 /если Кн2 нажата inc ehh /увеличиваем число ед. часов на 1 cpi ehh,4 /если число ед. часов еще меньше 4 brio END_TIM1 / ip на выход из процедуры cpi dhh,2 /если число дес. часов не равно 2, то brne mm21 / на метку mm21 clr ehh /иначе обнуляем число ед. часов гjmp END_TIM1 /на выход из процедуры mm21: cpi ehh,10 /если число ед. часов не равно 10 brne END TIM1 /то на выход
clr ehh /иначе обнуляем число ед. часов rjmp END_TIM1 /на выход mm3: sbis PinB,О /четвертый разряд inc dhh /увеличиваем число дес. часов на 1 cpi dhh,3 /если оно еще не равно 3 brne END_TIM1 /то на выход clr dhh /иначе обнуляем rjmp END—TIM1 /на выход /счет времени mtime: inc зек /увеличиваем число секунд на 1 cpi зек,60 /если оно не равно 60 brne END_TIM1 /то на выход clr зек /иначе обнуляем секунды inc emin /и увеличиваем ед. минут cpi emin,10 /если число ед. минут не равно 10 brne END__TIM1 /то на выход clr emin /иначе обнуляем ед. минут inc dmin /и увеличиваем число дес. минут cpi dmin,6 /если оно не равно 6 brne END_TIM1 /то на выход clr dmin /иначе обнуляем число дес. минут inc ehh /и увеличиваем число ед. часов cpi ehh,4 /если число ед. часов не равно 4 brio END_TIM1 /то однозначно на выход cpi dhh,2 /если число дес. часов при этом не равно 2 brne mhh /то на метку mhh clr ehh /иначе обнуляем число ед. часов clr dhh /и сразу число дес. часов тоже (это полночь) rjmp END_TIM1 /на выход mhh: cpi ehh,10 /если число ед. часов не равно 10 brne END_TIM1 /на выход clr ehh /иначе обнуляем ед. часов inc dhh /увеличиваем число дес. часов
END_TIM1: reti ;выход ид прерывания Timerl ;===== прерывание TimerO управление разрядами ===== TIMO : sbrc Flag,1 ;если бит1=1, напряжения нет rjmp END_TIMO ;тогда сразу на выход clr temp ;все очищаем out PortD,temp out PortB,temp andi POS,3 ;счет разрядов от 0 до 3 sbis PinB,0 ; пока нажата кнопка Кн2 clr count; разряд при установке не мигает cpi POS,0 ;если счетчик разрядов не О brne mO ;то на метку тО - следующий разряд cpi set_up,1 ; если set_up=l, мигает этот разряд brne sm_l /иначе на включение разряда sbrs count,0 /если бит 0 в count=0 sm_l: sbi PortD,em /то уст. PDO в 1, разряд ед. мин. светится /иначе он останется темным, то есть мигает с частотой count mov temp,emin /в temp - число ед. минут rcall SEG_SET /устанавливаем сегменты rjmp END_0 / на выход mO: cpi POS,1 /если счетчик разрядов не 1 brne ml /то на сл. разряд cpi set_up,2 /если set_up=2 то мигает этот разряд brne sm_2 / иначе на включение разряда sbrs count,0 /если бит 0 в count=0 sm_2: sbi PortD,dm /тр уст. PD1 в 1, разряд дес. мин. светится mov temp,dmin /в temp - число дес. минут rcall SEG_SET /устанавливаем сегменты rjmp END_0 / на выход ml: cpi POS,2 /если счетчик разрядов не 2 brne m2 /то на сл. разряд cpi set_up,3 /если set_up=3 то мигает этот разряд 21 Зак. 710
brne sm_3 ; иначе на включение разряда sbrs count, 0 /если бит 0 в count=0. sm_3 : sbi PortD,eh /то уст. PD2 в 1, разряд ед. часов светится mov temp,ehh /в temp - число ед. часов rcall SEG_SET /устанавливаем сегменты rjmp END_0 ; на выход m2: /обработка 4 разряда дес часов cpi set_up,4 /если set_up=4 то мигает этот разряд brne sm_4 /иначе на включение разряда sbrs count,0 /если бит 0 в count=0 sm_4: sbi PortD,dh /то уст. PD4 в 1, разряд дес. часов светится mov temp,dhh /в temp - число дес. часов rcall SEG_SET /устанавливаем сегменты END_0: inc POS END_TIM0: reti /выход из прерывания TimerO /======= компаратор - батарейка ========= ACOMPI: sbis ACSR,ACO /если бит АСО =1 то продолжим rjmp СОМР_1 /иначе на установку мигания ldi temp,ObllOOOOOO out TCCR1A,temp / двоеточие включено постоянно rjmp END_comp /на выход COMP_1: ldi temp, ОЬОЮООООО out TCCR1A,temp / двоеточие мигает END_comp: reti /выход из процедуры компаратора ;=============== процедура Reset ======================= RESET: cli /запрещаем прерывания на время установки ldi temp,low(RAMEND) /загрузка указателя стека out SPL,temp
Idi temp,ObOlllOlll ;порт D разряды 0,1,2,4,5,6 на выход out DDRD,temp Idi temp, 0Ы1111100 ;порт В все на выход, кроме 0,1 (компаратор) out DDRB,temp ----таймеры ------ Idi temp,ОЬООООООЮ ; запуск TimerO входная частота 1:8 out TCCR0,temp /управление разрядами по переполнению, /частота около 2 кГц (4/8=0,5 МГц/256) Idi temp,high(62500) /старший байт out OCR1AH,temp/ вых. частота 1 Гц при вх. частоте 1:64 Idi temp,low(62500) /младший байт out OCR1AL,temp Idi temp,ObOlOOOOOO out TCCR1A,temp /включаем переключающую моду для вывода ОС1 (15) Idi temp,ObOlOOlOll /запуск 1/64 timerl с обнулением при сравнении out TCCR1B, temp,- /------прерывания---------- Idi temp,1CCINT1 /разрешаем прерывание INTI out GIMSK,temp Idi temp, (1<<TOIEO) | (1<<OCIE1A) ,-разр. прерываний TimO и Timl out TIMSK,temp Idi temp,(1«ACIE) /разр. прерывания компаратора при переключении out ACSR,temp sei /разрешаем прерывания /======= основной цикл ======== G_cycle: /все время будем отслеживать пропадание внешнего питания sbrs Flag,0 /если бит0=1, идет установка rjmp G_cycle /если так, то ничего не делаем sbic PinB,0 /если напряжение есть, rcall Restore /вызываем процедуру восстановления выходов sbis PinB,0 /если напряжения нет, rcall Disable /вызываем процедуру отключения выходов
rjmp G_cycle /зацикливаем программу ;======= конец основного цикла ======== Disable: /процедура отключения sbrc Flag,2 ;если бит1=1, то уже все сделали rjmp END_dis /выход из процедуры cli /запрещаем прерывания на время установок sbr Flag,2 / устанавливаем бит1 Flag /обрываем внешние соединения и обнуляем все порты: clr temp out PortD,temp out PortB,temp out DDRD,temp out DDRD,temp sei /разрешаем прерывания END_dis: ret /конец процедуры отключения выходов Restore: /процедура восстановления sbrs Flag,2 /если бит1=0, то уже все остальное сделали rjmp end_res /выход из процедуры /восстановление cli /запрещаем прерывания на время установок cbr Flag,2 /сбрасываем бит1 Flag /восстанавливаем внешние соединения: clr temp ldi temp,ObOlllOlll /порт D разряды 0,1,2,4,5,6 на выход out DDRD,temp ldi temp, ObllllllOO /порт В все на выход, кроме 0,1 out DDRB,temp sei /разрешаем прерывания END_res: ret /конец процедуры восстановления выходов SEG_SET: / процедура установки сегментов cpi temp,0 /ищем число, равное temp brne ss_0 rcall OUT 0 /и посылаем на нужную процедуру вывода сегментов
rjmp END_seg ss_O: cpi temp,l brne ss_l rcall OUT_1 rjmp END_seg ss_l: cpi temp,2 brne ss_2 rcall 0UT_2 rjmp END_seg ss_2: cpi temp,3 brne ss_3 rcall 0UT_3 rjmp END_seg ss_3: cpi temp,4 brne ss_4 rcall 0UT_4 rjmp END_seg ss_4: cpi temp,5 brne ss_5 rcall 0UT_5 rjmp END_seg ss_5 : cpi temp, 6 brne ss_6 rcall 0UT_6 rjmp END_seg ss_6: cpi temp,7 brne ss_7 rcall 0UT_7 rjmp END_seg ss_7: cpi temp,8 brne ss_8 rcall 0UT_8 rjmp END_seg ss_8: cpi temp, 9 rcall 0UT_9 END_seg: ret /конец процедуры установки сегментов
Текст процедур для работы с интерфейсом 12С /файл I2C.prg /Процедуры чтения и записи памяти по интерфейсу 12С / +----------------------порт А----------------------------+ . equ pSCL = 6 . equ pSDA = 7 / , def DATA = Г16 , def ent = rl7 , def temp = rl8 ;------------------------запись ------------------------- write_i2c: /в YL,YH - адрес, данные в DATA /если бит с = 1 в регистре флагов, то ошибка cbi PORTA,pSDA cbi PORTA,pSCL Idi ent,120 /120 попыток прописать 1оор120: push DATA rcall start Idi DATA, OxAO ,-addr device=0, r/w=0 rcall write bres rt_write /0=1 ERROR mov DATA,YH /set HI address rcall write
brcs rt_write ;C=1 ERROR mov DATA,YL ; set LO address rcall write brcs rt_write ;C=1 ERROR Pop DATA ;set data to DATA rcall write brcs rt_ ;C=1 ERROR rcall stop brcs rt_ ;C=1 ERROR ret f read_i2c: ;b YL,YH - адрес, данные в DATA ; ( эсли бит c = 1 в регистре флагов, то ошибка cbi PORTA,pSDA cbi PORTA,pSCL ldi ent,120 loop_read_: rcall start ldi DATA,OxAO ;addr device=0,r/w=0 rcall write brcs rt ;С=1 ERROR mov DATA,YH ;set HI address rcall write brcs rt____ ;C=1 ERROR mov DATA,YL ;set LO address rcall write brcs rt____ ;C=1 ERROR rcall start ldi DATA,OxAl ;addr device=0,r/w=l rcall write brcs rt ;C=1 ERROR clt ; no ptit^ ACK rcall read rcall stop brcs rt____ ;C=1 ERROR ret rt__: dec ent
brne loop_read_ ret rt_write: pop DATA rt_: brcc Ok_wr_ dec ent brne loopl20 Ok_wr_: ret write: /запись байта из DATA push DATA push ent ldi ent, 8 ; bit counter x42: rol DATA ; move bit into CY bres sei ;; output bit sbi DDRA,pSDA rjmp del_wr sei: cbi DDRA,pSDA del_wr cbi DDRA,pSCL ; raise clock rcall delay ; enforce pSCL high sbi DDRA,pSCL ; drop clock rcall delay dec ent brne x42 ; next bit cbi DDRA,pSDA ; release pSDA for ACK rcall delay ; enforce pSCL low and tAA cbi DDRA,pSCL ; raise ACK clock rcall delay ; enforce pSCL high ; get ACK bit clc sbic PINA,pSDA /читаем в С состояние АСК sec ;ack not!
sbi DDRA,pSCL ; drop ACK clock rcall delay Pop ent Pop DATA ret read: ;чтение в DATA, t=l -> put АСК, t=0 no ACK ldi DATA,1 loop_ read: sbi DDRA,pSCL ;SCL=0 cbi DDRA,pSDA ;(t) , SDA=1 rcall delay cbi DDRA,pSCL ;SCL=1 rcall delay clc sbic PINA,pSDA ;read SDA to C sec rol DATA brcc loop_read ;put i ack sbi DDRA,pSCL ;SCL=0 rcall delay brts seO cbi DDRA,pSDA ;no ACK (t) , SDA=1 rjmp rd_ seO : sbi DDRA,pSDA ;ACK (t) , SDA=0 rd_: clc rcall delay cbi DDRA,pSCL ;SCL=1 rcall delay ret start cbi DDRA,pSDA cbi DDRA,pSCL rcall delay sbis PINA,pSDA
rjmp start sbis PINA,pSCL rjmp start sbi DDRA,pSDA ;0=SDA rcall delay sbi DDRA,pSCL ;0=SCL rcall delay ret stop: sbi DDRA,pSDA sbi DDRA,pSCL rcall delay cbi DDRA,pSCL ;1=SCL rcall delay cbi DDRA,pSDA ;1=SDA rcall delay clc sbic PINA,pSDA ret sbic PINA,pSCL ret sec ret delay: push Idi ent ent, 5 ;~5mks (QUARTZ 8MHz) wtlO : dec ent brne wtlO pop ent ret
Приложение 8 Перевод некоторых часто встречающихся терминов Таблица содержит некоторые термины, часто встречающиеся в англоязычной технической документации. Термины, вошедшие в русский язык в оригинальном звучании или близком к нему (transistor, resistor, triac, logic, timer, emitter и т. п.) за некоторыми исключениями в таблицах не приводятся. Не приводятся также термины и сокращения, подробно рассмотренные в тексте соответствующих глав (SRAM, DRAM, EEPROM и т. п.). Русско-английский Блок (узел, устройство) unit центральный процессорный блок central processor unit, CPU Период (импульсов) cycle Внешний external Питание power источник питания power supply Внутренний internal Плата board Восьмеричный octal Поддержка support Вход input Показатель rate Вывод (компонента) pin, lead Полоса (частот) band I ширина полосы bandwidth Выпрямитель rectifier Полупроводник semiconductor Выход output Поправка correction Вычитание subtraction Последовательный serial Генератор тактирующих импульсов clock Предел limit
(продолжение) Русско-английский Данные data Преобразователь converter аналого-цифровой" analog-to-digital converter, ADC Двоичный binary Проверка, контроль check Действующий (значение напряже- Провод wire ния) effective гибкий" (шнур) cord Деление division Проводник conductor Делитель divisor Произвольный random Десятичный decimal Прямой direct Диапазон range, scale Регулировать adjuist, control Доступ access Регулировка adjustment Дрейф drift Режим (работы) mode Емкость capacity, capacitance Синхронизация clock Задержка delay Сложение adding Заряд charge Смещение offset Затвор gate Соединение connect Земля ground Соединитель (разъем) connector Измерение measuring Состояние state Индуктивность (катушка индуктив- Стирание erase ности) coil Исток, источник source Сток drain Канал channel Сторожевой (таймер) watchdog "передачи данных data transfer channel Кнопка button, key Схема circuit Конденсатор capacitor Счетчик counter Корпус case, package Ток current "базы base current втекающий" sink current вытекающий" source current "насыщения saturation current переменный" alternating current, AC постоянный" direct current, DC "смещения bias current сила тока amperage
(окончание) Русско-английский Коэффициент усиления gain "по напряжению voltage gain Мост bridge "выпрямительный rectifier brige Мощность power Набор kit I Точность (погрешность) accuracy б Умножение multiplication 1 Умножитель multiplier I Управление control 1 центральное устройство управления 1 mean control unit, MCU Напряжение voltage высокий уровень" high voltage низкий уровень" low voltage "питания supply voltage "смещения bias Нуль zero | Усилитель amplifier I Установка set I начальная" (переустановка) reset Объединение (каналов) multiplex Отношение ratio I Устройство device I Утечка leakage Пайка soldering Память memory Панель (для микросхем) socket Параллельный parallel Переключатель switch I Хранение storage I Частота frequency I Шестнадцатеричный hexadecimal I Шина bus I Элемент (гальванический) cell, battery Англо-русский AC (alternating current) переменный ток I Gain коэффициент усиления Access доступ k в Gate затвор (полевого транзистора); логи-I ческий элемент, вентиль (AND gate) Accuracy точность (погрешность) 1 Ground земля ADC (analog-to-digital converter) аналого-цифровой преобразователь I Hexadecimal шестнадцатеричный Adding сложение 1 Input вход Adjuist регулировать I Internal внутренний Adjustment регулировка I Key кнопка
(продолжение) Англо-русский Amperage сила тока Kit набор Amplifier усилитель Lead вывод (компонента) Band полоса (частот) Leakage утечка Bandwidth ширина полосы Limit предел Battery элемент (гальванический) Loop контур обратной связи; цикл (в программе) Bias смещение; напряжение смещения MCU (mean control unit) центральное устройство управления Binary двоичный Measuring измерение Board плата Memory память Bridge мост Mode режим (работы) rectifier" выпрямительный мост Bus шина Mount монтировать Button кнопка, клавиша Multiplex объединение (каналов) Capacitor конденсатор Multiplication умножение Capacity, capacitance емкость Multiplier умножитель Case корпус Octal восьмеричный Cell ячейка, элемент (гальванический) Offset смещение Channel канал Output выход data transfer" канал передачи данных Charge заряд Package корпус Check проверка, контроль Parallel параллельный Circuit схема Pin вывод (компонента) Clock синхронизация; генератор тактирующих импульсов Power supply источник питания Coil индуктивность (катушка индуктивности) Power мощность Conductor проводник Power питание Connect соединение Random произвольный, случайный Connector соединитель (разъем) Range диапазон Control управлять, регулировать, управление Rate показатель
(окончание) Англо-русский Converter преобразователь Cord гибкий провод (шнур) Correction поправка Counter счетчик CPU (central processor unit) цен- тральный процессорный блок Current ток base" ток базы bias~ ток смещения saturation" ток насыщения sink" втекающий ток source" вытекающий ток Cycle период (импульсов) Data данные DC (direct current) постоянный ток Decimal десятичный Delay задержка Device устройство Direct прямой Division деление Divisor делитель Drain сток Drift дрейф Effective действующий (значение напряжение) Erase стирание External внешний Frequency частота Ratio отношение Rectifier выпрямитель Reset переустановка; начальная установка Scale диапазон Semiconductor полупроводник Serial последовательный Set установка Socket панель (для микросхем) Soldering пайка Source исток, источник State состояние Storage хранение Subtraction вычитание Support поддержка Switch переключатель Unit блок (узел, устройство) Value значение Voltage напряжение high" высокий уровень напряжения low~ низкий уровень напряжения supply" напряжение питания "gain коэффициент усиления по напряжению Watchdog сторожевой (таймер) Wire провод Zero нуль
Принятые обозначения Физические величины и их единицы измерения по умолчанию I — ток, ампер (А) U — напряжение, вольт (В, V) R — электрическое сопротивление, ом (Ом, Ohm) Е — энергия, джоули (Дж) N, Р — электрическая мощность, ватты (Вт, W) W — тепловая мощность, ватты (Вт, W) С — электрическая емкость, микрофарады (мкФ, pF) Q — заряд, кулон (Кл) t — время, секунды (с) Г,О — температура, градусы Цельсия (°C) L — длина, метры (м) 5 — площадь faЕ. 2) 2 р — удельное сопротивление (омхм/мм ) Е. Примечание Все наименования единиц измерения, которые названы по фамилиям ученых, в сокращении пишутся с прописной буквы (вольт — В, ом — Ом, ватт — Вт, ампер — А), а все остальные — со строчной (секунда — с, метр — м).
Приставки и множители для образования десятичных кратных и дольных единиц Приставка Множитель 1018 Наименование экса Обозначение русское Э международное Е пета П Р 1015 тера т Т 1012 гига г С ю9 мега м м 106 кило к к 103 гекто г h 102 дека да da 10 деци Д d 10’1 санти с с 10'2 милли м m 10’3 микро МК Н 10‘6 нано н n 10’9 ПИКО п Р 10'12 фемто ф f 10’15 атто а а Ю-18 Некоторые буквенные обозначения в электрических схемах R — резистор С — конденсатор
VT — транзистор VD — диод Н — цифровой индикатор К — тумблер, кнопка, реле Р — реле DA — аналоговая микросхема DD — цифровая микросхема D — микросхема, содержащая аналоговые и цифровые узлы Q — кварцевый резонатор L — лампа (газоразрядная или накаливания) Некоторые символические обозначения в электрических схемах Постоянный резистор -| ^ Ь Переменный резистор / ь Подстроечный резистор X Резистор с зависимостью от температуры (терморезистор, термистор) ={= Конденсатор -т- Полярный (электролитический) конденсатор Диод Стабилитрон
Двусторонний стабилитрон Тиристор Светодиод Фотодиод Биполярный транзистор (п-р-п) Биполярный транзистор (р-п-р) Полевой транзистор с рп-переходом и п-каналом Полевой транзистор с рп-переходом и р-каналом Полевой транзистор с изолированным затвором и n-каналом (п-МОП) Полевой транзистор с изолированным затвором и p-каналом (р-МОП) Кварцевый или керамический резонатор Нормальнозамкнутый контакт (реле, тумблера, кнопки) Нормальноразомкнутый контакт (реле, тумблера, кнопки)
Реле с нормальноразомкнутым контактом Лампа накаливания Лампа газоразрядная (неоновая) Динамическая звуковая головка Общий провод «Земля» Символические обозначения мощности резисторов на схемах Резистор 0,125 Вт Резистор 0,25 Вт Резистор 0,5 Вт Резистор 1 Вт Резистор 2 Вт Резистор 10 Вт
Литература 1. Ревич Ю. Честные дети (http://www.computer-museum.rii/technlgy/ fairchil.htm). 2. Ревич Ю. Мы искушаем расстоянье... (http://www.homepc.ru/offline/2002/75/20590/). 3. Ревич Ю. Теоретики (http://www.homepc.ru/offline/2003/81/24904/). 4. Ревич Ю. Пращур (http://www.homepc.ru/offline/2002/76/21228/). 5. Ревич Ю. Наследники Бэббиджа (http://www.homepc.ru/offline/2002/78/22548/; http://www.homepc.ru/offline/2003/79/26571/). 6. Ревич Ю. Шпионские страсти (http://www.russ.ru/netcult/20021112_revich.html). 7. Элементарный учебник физики, тома II, III / Под ред. Г. С. Ландсберга. — М.: "Наука", 1971. 8. Физические величины: справочник / Под ред. И. С. Григорьева, Е. 3. Мей-лихова. — М.: Энергоатомиздат, 1991. 9. Ан Пей. Сопряжение ПК с внешними устройствами. Пер. с англ. — М.: ДМК Пресс, 2003. 10. Хоровиц П., Хилл У. Искусство схемотехники, в 3 т. Пер. с англ. — М.: "Мир", изд. 1983,2001,2003. 11. Сайт фир^ы "Каскад" (http://www.cpp-kaskad.ru). 12. Куликов Г. В. Бытовая аудиотехника (устройство и регулировка). — М.: ПрофОбрИздат, 2001. 13. Ежков Ю. С. Справочник по схемотехнике усилителей. 2-е изд. — М.: РадиоСофт, 2002, 272 стр. 14. http://www.shema.ru/. 15. Гутников В. С. Интегральная электроника в измерительных устройствах. 2-е изд. — Л.: Энергоатомиздат. Ленигр. отд. 1988.
16. Кейн В. М. Конструирование терморегуляторов. М.: "Советское радио", 1971. 17. Крылов Г. Пример расчета усилителя мощности (http://www.geocities.com/ResearchTriangle/Node/2356/design.html). 18. Крылов Г. Схемотехника транзисторных усилителей мощности (http://www.geocities.com/ResearchTriangle/Node/2356/powersch.html). 19. Крылов Г. Мой взгляд на субъективизм (http://www.geocities.com/ResearchTriangle/Node/2356/notes.html). 20. Титце У., Шенк К. Полупроводниковая схемотехника: Справочное руководство. М.: Мир, 1982 (доступна в Интернете: http://www.cs.ua/rad/lib/ titc/titsh.zip), 21. Гнеденко Б. В., Хинчин А. Я. Элементарное введение в теорию вероятностей. — М.: Едиториал УРСС, 2003. 22. Вентцель Е. С. Теория вероятностей. — Изд. 7-е, стереотипное. — М.: Высш, шк., 2001. 23. Горелова Г. В., Кацко И. А. Теория вероятностей и математическая статистика в примерах и задачах с применением Excel: для студентов вузов. — Изд. 2-е, исп. и доп. — "Феникс", 2002. 24. Обработка экспериментальных данных на ЭВМ (http://pds.sut.ru/ oed/oed/). 25. Кузнецов В. А., Ялунина Г. В. Основы метрологии. Учеб, пособие для вузов по направл. "Приборостроение" // Под ред. В. А. Кузнецова — М.: Изд-во стандартов, 1995. 26. Петцольд Ч. Код. — М.: ИТД "Русская редакция", 2001. 27. Андреева Е., Фалина И. Информатика. Системы счисления и компьютерная арифметика // Серия: Информатика. — М.: Лаборатория Базовых Знаний, 1999. 28. Яглом А. М., Яглом И. М. Вероятность и информация. — М.: Наука, 1973. 29. Шило В. Л. Популярные цифровые микросхемы: Справочник. — М.: Радио и связь, 1988. 30. Ревич Ю. Часы с термометром и барометром. — "Радио", 2003, № 4, 5, 7. 31. Андрианов В. И., Бородин В. А., Соколова. В. "Шпионские штучки" и устройства для защиты объектов и информации. Справочное пособие. — СПб.: Лань, 1996.
Предметный указатель А В Аккумулятор 51 Алгебра Буля 297 АЛУ 493 Ампер 9 Амперметр 15, 20 Амплитуда 52 Анемометр 469 Анод 86 Антидребезг 347, 388, 394 Аппроксимация 286 Ассемблер 518 Ватт 56 Величина переменная 52 Вольт 9 Вольтметр 15, 21 Выпрямитель дву полу пер иодный 156 Г Генератор 17 аналоговый 227 АЦП: двойного интегрирования 450 интегрирующие 439 однократного интегрирования 439 параллельного действия 436 последовательного приближения 437 с двойным интегрированием 442 с уравновешиванием заряда 447 кварцевый 382 прямоугольных импульсов 376 релаксационный 180 цифровой лабораторный 407 Герц 53 Гистерезис 243, 389 Гомеостат 231 Градуировка 280 д Датчик: влажности 467 Б воды 582 давления 464 База 89 Байт 317 Бит313,317 ' Бокорезы 32 скорости ветра 468 температуры 238, 240, 259, 268, 456 трехпроводная схема включения 457
Демонтаж 43 Детектор 578, 583 Децибел 217 Дешифратор 355, 362, 415, 418 Диод 85 вольтамперная характеристика 86 германиевый 86 замена 128 защитный 197 кремниевый 86 характеристики 87 Шоттки 87, 543, 578 Дисперсия 284 Доверительная вероятность 285 Доверительный интервал 285 Дрейф 277 Дроссель 189 Е Емкость: определение 72 распределенная 76 3 Заземление 172, 188 Закон: Джоуля — Ленца 56 Мэрфи 29, 132 Ома 12 трансформатора 154 Заряд 9 Земля 172 ЗУ 478 ЗУПВ 488 И Измерение: атмосферного давления 464 скорости вращения 470 Измерения относительные 294 Измеритель 463 Импульс управляющий 176, 178 Индикатор: цифровой 271 шестнадцатисегментный 481 ЖК360 семисегментный 117, 353, 419, 539 Индуктивность 82, 189 Интегратор 225 Интерфейс 12С 571 Информация: избыточность 367 Источник тока 226 Источник питания 22, 152 бестрансформаторный 152, 173 вторичный 152 двуполярный 159, 162 импульсный 152 нестабилизированный 156 простейший 156 регулируемый 165 стабилизированный 160 трансформаторный 152 К Калибровка 280 Канал: связи 366 связи с помехами 370 Каскад дифференциальный 100 Катод 86 Кварц 381 Класс точности 264, 289 Код 349 Грея 473,481 двоичный 349, 351 с исправлением ошибок 373 семисегментный 353 экономичный 368 Колебания: амплитуда 52 суммирование 54 Коллектор 89 Компаратор 238, 245 Комплементарный 126 Конденсатор 71, 124 в цепи переменного тока 79
емкость 72 замена 124 заряд и разряд 73 керамический 125 неполярный 78 номинальные значения 66 параллельное и последовательное соединение 79 развязывающий 138, 171 с органическим диэлектриком 125 фильтрующий 157, 160 электролитический 77, 124 номинальные значения 590 Корпус: изготовление в домашних условиях 49 нанесение надписей 50 Коэффициент: диэлектрической проницаемости 76 мощности 83 ослабления синфазного сигнала (КООС) 217 передачи 138 передачи в системе с обратной связью 215 сопротивления температурный, ТКС 14 температурный резисторов 66 удельного сопротивления 13 усиления 137 усиления ОУ 216 Л Лейденская банка 71 Ленин 179 Логика 295 математическая 296 Логические: микросхемы 327, 334 схемы на реле 302 схемы на транзисторах 304 переменные 297, 298 Логическое: отрицание 298 сложение 297 умножение 297 м Магазин сопротивлений 264 Магнитопровод 155 Математическая статистика 276 Математическое ожидание 284 Меандр 60 Метод наименьших квадратов 288 Метрология 275 Микроконтроллер 496, 501 EEPROM 513 UART 509, 531 встроенное АЦП 551 компаратор 544, 547 порт ввода/вывода 504 прерывания 506, 523 программирование 515 режим экономии 506 таймеры-счетчики 508, 526 таймеры-счетчики в режиме ШИМ 570 Микропроцессор 492 Микросхема 191 RTC 538 замена 125 КМОП 330, 335 корпуса 125, 199 с открытым коллектором (истоком) 336 ТТЛ 328 цифровая 327 защита от статики 196 схемотехника 194 эксплуатация 196 Монтаж 42 Мост: выпрямительный 129, 156,183, 184 Уитстона 263 Мощность 56 звукового усилителя 139 (окончание рубрики см. на стр. 660)
Мощность (окончание)-. регулирование 177, 179 резисторов номинальная 67 управление 177 Мультивибратор 378, 577 Мультиплексор 415 н Надежность 129 Напряжение 9, 10 действующее значение 58, 177 измерение 177 источник 64 несинусоидальное 59 определение 9 переменное 51 постоянное 51 прямое падение 86 сетевое 26, 62, 152, 173 синусоидальное 53 среднеамплитудное значение 58 среднее значение 58 фазное 172 эмиттерного перехода 89 Нормальное распределение вероятностей 282 характеристики 284 . _ О Обратная связь 137, 210 отрицательная 97, 166, 210, 211,214 положительная 212, 243 Одновибратор 387 с перезапуском 471 Олигархи 17 Ом 13 Оптопара 119, 179 Оптрон 118, 182 диодный 182 резисторный 186 Осциллограф 24 Отсчет 428 Оцифровка 428 Ошибки измерения: систематические 279 случайные 279, 280 п Паяльник 33 доработка жала 33 проверка изоляции 33 Перерегулирование 236 Период 52 принцип измерения 412 ПЗУ 480 Пинцет 32 Питание сетевое 62 Платы: изготовление в домашних условиях 39 макетные 44 печатные 37 Плотность вероятностей, 281 Погрешность 278 абсолютная 289 аддитивная 279 мультипликативная 279 относительная 289 относительная приведенная 289 Полупроводники 85 Помехи 188 Постоянная времени: RC цепи 75 тепловая 236 ППЗУ 486 Правила де Моргана 299 Преобразование: напряжения в ток 67 тока в напряжение 67 Преобразователь: аналого-цифровой, АЦП 436, 551 дельта-сигма 447 инвертор 461 напряжение-время 446 цифроаналоговый, ЦАП 430 Прерывание: Reset 525
UART 532 таймера 526, 529 Провода 47 обмоточные 48 Программатор 485, 516 Программирование 501, 515, 520 UART 532 Психрометр 468 Р Радиатор 143,204 методика расчета 143 монтаж 146 Радиорынки 131 Разводка питания 170 Разрешающая способность 277 Регистр 397 защелка 398 последовательный 398 сдвиговый 398 Регрессия 286 уравнение 287 Резистор 14, 63, 123, 589 допустимое напряжение 67 замена 123 маркировка 65 МЛТ 64 мощность 67 номинальные значения 65, 590 параллельное соединение 69 переменный 15, 67 подстроечный 68 последовательное соединение 69 прецизионный 66 С1-4 64 самодельный 21 Реле 105, 174 герконовые 107 напряжение срабатывания 109 с самоблокировкой 110 ток срабатывания 110 электромагнитное 106 электронные 119, 179, 241, 580 с Светодиод 114 двухцветный 117 особенности включения 116 падение напряжения 117 Сигнал 61 Симистор 176, 186 Синхронизация луча осциллографа 26 Система счисления 307, 309 двоичная 313 перевод 315 позиционная 310 шестнадцатеричная 314 Скважность 60 Сопротивление 10 внутреннее 64 определение 13 реактивное 80, 82 резисторов 65 удельное 13 Среднеквадратическое отклонение 285 Стабилизатор 160 интегральный 163 Стабилитрон 111, 168 вольтамперная характеристика 112 двусторонний 112 Сумматор 339 аналоговый 225 двоичный 339 одноразрядный 342 полный 342 Схема: аналогового усилителя на КМОП 375 антидребезга 347, 388, 394 АЦП 447 с двойным интегрированием 443 с однократным интегрированием 439 включения: интегрального стабилизатора 164 светодиода 116 тиристора 174 (продолжение рубрики см. на ст. 662)
Схема (продолжение)'. воспроизведения звука на контроллере 571 выделения фронтов 384 генератора: аналогового 227 релаксационного 376 цифрового 408 датчика воды 582 двоичного полусумматора 342 двуполярного нестабилизированного источника 159 детектора электромагнитного поля 584 дешифратора: двоично/шестнадцатеричного 364 двоичного/десятичного 363 семисегментного 358, 361, 480 шестнадцатисегментного 482 дифференциального: каскада 100 усилителя 222 задержки импульса 386 защиты входа микрофонного усилителя 113 защиты выводов микросхем 197 звонка 111, 377 звуковой сигнализации 380 идеального источника тока 226 измерений логометрическая 293 измерения: скорости вращения 470 сопротивления 264 тока 21 инвертирующего усилителя с высоким коэффициентом усиления 220 инвертора напряжения 461 интегратора 225 исключающее ИЛИ 342 кварцевого генератора 382 компаратора с гистерезисом 243 лабораторного источника питания 165 логическая: диодно-транзисторная 304 на выключателях 300 на реле 302 микроконтроллера AVR 504 микропроцессора 494 мостика Уитстона 262 мультивибратора 378, 577 мультивибратора с управлением 379 одновибратора 387 плавного включения ламп 187 повторителя 218 повторителя/инвертора 226 подключения переменного резистора 67 портов ввода/вывода 498 предустановки счетчика 405 преобразователя уровней RS232—UART 513 прецизионного термостата 250 проверки: закона Ома 10 на четность 373 простейшего источника питания 156 разводки питания 171 расщепителя напряжения 460 реле с самоблокировкой 110 ручного регулятора мощности 180, 184 с общим коллектором 95 с общим эмиттером 94 с открытым коллектором 336 сетевого фильтра 189 системы с отрицательной обратной связью 214 стабилизатора: двуполярного 163 на стабилитроне 160 на транзисторе 161 параметрического 160 структурная термостата 233 сумматора: аналогового 225 двоичного 342
счетчика: асинхронного 400 реверсивного 403 синхронного 402 термометра на микроконтроллере 553 терморегулятора 238 термостата для нагревания воды 245 токового зеркала 194 транзистора: в ключевом режиме 90 Дарлингтона 93 транзисторного УМЗЧ 135 триггера: RS 392 динамического типа D 396 статического типа D 396 счетного 397 УМЗЧ на микросхемах 201, 203, 204, 207 управления: реле 110 одной кнопкой 581 усилительного каскада 97 усилителя: инвертирующего 219 неинвертирующего 217 фазового компаратора 348 фильтра: высоких частот 80 низких частот 81 формирователя 383 ЦАП 433,435 цепи с двумя резисторами 14 цепочки R-2R 435 часов: плата индикации 542 плата управления 541 частотомера 421 входной формирователь 412 индикация 416 чувствительного детектора 579 реле: электромагнитного 107 электронного 580 электронного термометра 268,271,456 элемента: КМОП 328 ТТЛ 328 эмиттерного повторителя 95 Счетчик 400 двоичный 402 реверсивный 403 т Температура 257 измерение 273 шкала Кельвина 258 шкала Цельсия 258 Теорема Котельникова 429 Теория вероятностей 276 Теория информации 365 Термометр: медный 260, 261, 456 металлический 259 платиновый 259, 260, 261 полупроводниковый 260 ртутный 261 сопротивления 260 цифровой 271, 449, 455 цифровой, калибровка 460 электронный 268, 271,432 Терморегулятор 238, 245 Термостат 231, 233 Тестер 18 Тетрада 317 Тиристор 174, 183 Ток 9, 10 зависимость от напряжения (закон Ома) 12 измерение 20 измерение вольтметром 22 определение 9 Токовое зеркало 194 Точность 277 Транзистор 87, 126 биполярный 88 включение: с общим коллектором 95 с общим эмиттером 92 (окончание рубрики см. на ст. 664)
Транзистор (окончание)-. операционный 165, 170 Дарлингтона 90, 93 дифференциальное включение 100 ключевой режим 90 комплементарный 126, 141 коэффициент усиления по току 90, 93 критерии выбора 103, 126 маломощный 127 МОП 102, 580 мощность 104 мощный 127 однопереходной 182 полевой 101 полевой с р-п-переходом 101 типа п-р-п 88 типа р-п-р 88 усилительный режим 93 характеристики 103 Трансформатор 151, 152, 156 импульсный 184 определение количества витков 155 расчет 154 Трансформаторы 55 Триак 176,186 Триггер 383, 391 динамический типа D 396 статический типа D 395 счетный 397 типа R.S 392 Шмидта 389 Трубка кембриковая термоусадочная 49 использование 209 определение 209 переменного тока 99 режим АВ 142 ф Фаза 54, 177 Фарада 72 Фильтр: высоких частот 80 нижних частот 81 развязывающий 172, 189 Флюгер 473 Флюс: активный 37 спирто-канифольный 36 ц Цепь: дифференцирующая 80 интегрирующая 81 ч Частота: определение 52 принцип измерения 412 Частотомер 410 Четность 371 Чип 191 У э УМЗЧ 135,201 маломощный 206 Усилитель: Электронно-лучевая трубка 24 Электроэнергия 62 дифференциальный 222 звуковой 135 звуковой на микросхемах 201 инвертирующий 219 инструментальный 224 мощность 139, 142, 148 на логических элементах 375 неинвертирующий 217 Элемент алкалайновый 18, 51 гальванический 51 литиевый 51 марганец-цинковый 51 Эмиттер 89 Эмиттерный повторитель 96, 137, 138 Эталон 259
"Электроника - это искусство, которое основано на нескольких основных законах и включает в себя большое количество практических правил и приемов". П. Хоровиц, У. Хилл Е^аНиМа'ВгЛьНаЯ Т ЭПЕМРОНИКП J За последние несколько десятков лет в мире произошла революция. Мы и не успели опомниться, как компьютеры, мобильные телефоны, "умные" электронные игрушки стали частью нашего быта. В том, что эти чаяния фантастов прошлого стали явью, главную роль сыграла электроника -искусство конструирования и производства электронных схем. Автор вводит читателя в увлекательный мир электроники и схемотехники, на простых примерах показывая, что изобретать и изготавливать электронные приборы самостоятельно вовсе не такая сложная наука, как кажется. Изложение материала отличается максимально подробным разбором каждой конструкции и схемы, при этом основной упор делается на творческий подход - так, чтобы читатель всегда знал, как можно .улучшить и модернизировать ту или иную конструкцию. Книга рассчитана на старших школьников, учащихся техникумов, студентов и широкий круг радиолюбителей. Автор - инженер-электроник с многолетним стажем. Занимался автоматизацией производств, конструированием измерительных | приборов для изучения океана и других научных исследований. 3 настоящее время журналист. Основной круг интересов -информационные технологии, их влияние на современное общество, история компьютеров и электронных приборов. Имеет более 200 публикаций в журналах, газетах и сетевых изданиях. ISBN 5-94157-514-9 БХВ-Петербург 190005, .Санкт-Петербург, Измайловский > - 29 E-mail: mail@bhv.ru Internet: www.bhv.ru тел.: (812) 251-42-44 факс: (812) 251-12-95 (ЬЬу