/
Author: Кравченко А.В.
Tags: блоки обработки данных процессоры программирование микроконтроллеры компьютерные технологии
ISBN: 978-5-7931-0532-3
Year: 2009
Text
А. В. Кравченко
10 практических
устройств на
AVR-микроконтроллерах
КНИГА 2
Киев, "МК-Пресс"
СПб, "КОРОНА-ВЕК"
2009
ББК 32.973-04
УДК 004.312
К78
Кравченко А. В.
К78 10 практических устройств на AVR-микроконтроллерах. Книга 2 - К.:
“МК-Пресс”, СПб.: “КОРОНА-ВЕК”, 2009. - 320с„ ил.
ISBN 978-5-7931-0532-3 (“КОРОНА-ВЕК”)
ISBN 978-966-8806-58-2 (“МК-Пресс”)
Вы держите в руках вторую книгу из серии сборников с практическими примерами
применения микроконтроллеров AVR. В ней подробно рассмотрены десять завершенных
устройств на базе микроконтроллеров AVR, которые можно легко собрать в домашних ус-
ловиях и применять в быту или профессиональной деятельности: генератор световых
эффектов с помощью АЦП; схема управления шаговым двигателем; автомат освещения
шкафа-купе; схема управления вентилятором; простой термометр; световой эффект
“Призма”; микроконтроллерный генератор; робот, который двигается на свет и умеет об-
ходить преграды; система радиоуправления моделью автомобиля; схема цифрового
управления паяльником. Каждому устройству посвящена отдельная глава, где подробно
описаны все этапы создания микроконтроллерной модели и программ, начиная со струк-
туры и блок-схемы, и заканчивая самой программой и готовым рабочим кодом.
ББК 32.973-04
Кравченко Алексей Владимирович
10 практических устройств
на AVR-микроконтроллерах
КНИГА 2
Компьютерная верстка: С. 'В. Дидок
Гпавный редактор: Ю. А. Шпак
Подписано в печать 21.11.2008. Формат 60 х 84 1/16. Бумага офсетная. Печать офсетная.
Усл. печ. л. 18,6. Уч.-изд. л. 13,3. Тираж 2000 экз. Заказ № 1284
СПД Савченко Л.А., Украина, г. Киев, тел./факс: (044) 517-73-77; e-mail: info@mk-press.com.
Свидетельство о внесении субъекта издательского дела в Государственный реестр
издателей, производителей и распространителей издательской продукции
серия ДК №51582 от 28.11.2003г.
Отпечатано с готовых диапозитивов в типографии ЧП Журляк В.В.
(свидетельство ВОЗ №088990 в!д 21 10.2008 г ).
32300, Хмельницкая обл., г. Каменец-Подольский,
село Довжок, переулок Рядянський дом 3,
Тел. (03849) 2-72-01, 2-20-79
ISBN 978-5-7931-0532-3 (“КОРОНА-ВЕК”) © Кравченко А В., текст, иллюстрации, 2008
ISBN 978-966-8806-58-2 (“МК-Пресс”) © “МК-Пресс", оформление, 2009
3
Содержание
Введение..................................................6
Глава 1. Инструментарий.....................................9
Слесарный инструмент.....................................11
Электродрель...........................................19
Изготовление деталей.................................20
Сборка...............................................24
Настройка............................................25
Эксплуатация.........................................25
Простая цанга для дрели..............................26
Травление печатных плат..................................27
Метод 1................................................28
Метод 2................................................28
Метод 3................................................29
Метод 4................................................29
Метод 5................................................29
Метод 6................................................29
Метод 7................................................30
Получение хлорного железа............................30
Получение хлорной меди...............................30
Паяльник.................................................31
Какой должен быть паяльник?............................31
Каковы требования к процессу пайки?....................32
Как правильно держать паяльник?........................32
Как паять элементы?....................................33
Как выполнить демонтаж?................................34
Какой флюс лучше выбрать?..............................35
Как паять провода?.....................................35
Какой используется инструмент для обжимки проводов?....35
Как крепятся провода внутри корпуса?...................36
Паяльные станции.......................................37
Устройство намотки катушек индуктивности.................37
Особенности технологии сборки устройства...............38
Технология намотки витков на катушку...................39
Станок для ручной намотки катушек трансформаторов........39
Сборка.................................................45
Порядок намотки катушки................................45
4
Щупы.................................................47
Глава 2. Создание световых эффектов с помощью АЦП.....50
Алгоритм работы......................................53
Настройка схемы......................................56
Программа............................................56
Глава 3. Управление шаговым двигателем................64
Алгоритм работы......................................67
Программа............................................68
Монтажная плата и конструкция........................78
Глава 4. Автоматическое освещение шкафа...............81
Принципиальная схема.................................85
Программа............................................87
Монтажная плата......................................93
Эксплуатация устройства..............................96
Глава 5. Управление вентилятором в помещении..........97
Программа...........................................102
Монтажная плата.....................................114
Установка и настройка...............................117
Глава 6. Простой термометр...........................119
Программа...........................................122
Монтажная плата.....................................139
Глава 7. Световой эффект “Призма”....................142
Принципиальная схема................................146
Программа...........................................148
Монтажная плата.....................................164
Настройка схемы.....................................168
Глава 8. Микроконтроллерный генератор................169
Принципиальная схема................................173
Программа...........................................174
Монтаж..............................................200
Дизайн корпуса......................................203
Настройка и эксплуатация прибора....................204
Глава 9. Робот “Охотник за светом”...................205
5
Структурная схема.....................................210
Принципиальная схема...•..............................211
Алгоритм..............................................214
Программа.............................................218
Монтажная плата.......................................229
Настройка.............................................233
Передняя подвеска.....................................234
Задняя подвеска.......................................235
Контактная группа.....................................237
Завершенная конструкция...............................238
Эксплуатация..........................................239
Глава 10. Радиоуправление моделями автомобилей..........240
Передатчик............................................241
Программа передатчика...............................244
Конструкция передатчика.............................252
Настройка передатчика...............................253
Приемник..............................................257
Программа приемника.................................259
Конструкция приемника...............................274
Настройка приемника.................................278
Конструкция шасси.....................................279
Эксплуатация..........................................282
Глава 11. Цифровое управление паяльником................283
Программа.............................................288
Монтажная плата.......................................299
Настройка и эксплуатация прибора......................304
Список литературы.......................................305
Содержимое прилагаемого к книге компакт-диска...........307
6
Введение
“Просто, быстро, доступно”, — такова основная идея этой книги.
Не надо тратить огромные средства на ознакомительные платы от ком-
паний-производителей микроконтроллерной электроники и разбираться
в сложной и порой морально устаревшей схемотехнике. Достаточно
лишь взять паяльник, купить недорогие детали и инструменты и уде-
лить время моделированию схем.
Для упрощения труда радиолюбителей написано много литературы
и создано немало Web-сайтов в помощь разработчикам микроконтрол-
лерных систем, однако, самостоятельно собирая опубликованные кон-
струкции, автор убедился, что по-настоящему удовлетворить жажду
знаний позволяют только собственные решения. Бездумное копирова-
ние не принесет ожидаемых результатов.
Сегодня повсеместно осваивается и внедряется управление с помо-
щью микроконтроллеров во всех сферах быта, досуга и производства.
Еще совсем недавно мы читали о роботах только в фантастических ро-
манах, а в наших комнатах висели спиртовые градусники. Сегодня же,
затратив совсем немного времени, мы можем сами собрать автомат для
кофеварки, радиоуправляемую модель или цифровой термометр. Тем
самым мы и применяем свои знания на практике, и получаем положи-
тельные эмоции, показывая друзьям и знакомым свое творение: совре-
менную интеллектуальную модель. Всегда приятно что-то смастерить
собственными руками.
Но что же дальше? А дальше можно заставить конструкцию разго-
варивать, передвигаться, выполнять тяжелые физические задачи. Надо
только подключить собственную фантазию, вместо светодиодов устано-
вить исполнительные узлы, вместо датчиков вмонтировать видеокаме-
ры, связать модули в единую информационную цепь, и, наконец, полу-
чить искусственный интеллект. Но, как и любой дом, сложные задачи
строятся из небольших кирпичей. Для начала необходимо иметь в своем
распоряжении все составляющие сложной цепи, поставить достижимую
задачу и попробовать ее решить.
На первый взгляд моделирование процессов не выглядит чем-то
сложным, однако стоит попробовать — и задача расширяется. Иногда
гениальное решение несложных задач приносят огромный коммерче-
ский успех. Радиолюбители — это всегда молодые душой энтузиасты,
генераторы идей. И надо сказать, что бесполезных идей не бывает. Бы-
вают бесполезные конструкции.
7
Описанные в этой книге микроконтроллерные модели всегда возни-
кали из абстрактной идеи. Все начинается с дизайна — немаловажного
на сегодняшний день фактора в решении технической проблемы. Ди-
зайн — это не только развитая фантазия, умение абстрактно мыслить,
но и товар, который приносит прибыль (особенно в коммерческих раз-
работках). Зачастую идеи копируются у других, однако лучше вопло-
щать в жизнь собственные замыслы, не повторяя чужих ошибок.
Со временем дизайн перерастает в намеченную задачу, в блок-схе-
му. На этом этапе очень полезно обратиться к справочнику или мощно-
му инструменту познания: сети Internet. Постоянный поиск решений —
удел радиолюбителя. После тщательного изучения составляющих блок-
схемы рождается электронная схема. Корректировка, исправление, пе-
ределка — все эти процессы сопутствуют написанию программы, одна-
ко основой конструкции всегда будет нарисованная схема.
Иногда разработка программы кажется бесконечным бегом на мес-
те. В таком случае лучше разбить процесс на меньшие подпрограммы,
и, конечно же, не помешает чужой опыт и литература. Только после на-
писания и проверки программы можно взять в руки паяльник и реализо-
вать собственную микроконтроллерную модель. Долгий изнурительный
труд всегда увенчается личным, пусть и маленьким, успехом. Так рож-
дались все описанные в этой книге схемы.
К сожалению, радиолюбительство не обходится без ошибок. Мно-
гие читатели сетуют на недостаточно полное изложение сути конструк-
ций, на мелкие ошибки, неточности, отступления от намеченной задачи,
различия между фотографиями и чертежами... Однако к рассмотрен-
ными в книге моделям надо быть снисходительными, поскольку они не
являются протестированными на всех уровнях промышленными образ-
цами. Поэтому автор с благодарностью примет все замечания и учтет
критику радиолюбителей. Как известно, в диалоге всегда получаются
идеальные схемы и программы.
Проанализировав иностранные промышленные разработки, можно
с уверенностью сказать, что ошибок там — немало, однако, будучи по-
следовательными, иностранные разработчики со временем устраняют
недостатки, модернизируют программы, дорабатывают конструкции,
создают торговые марки. Всегда следует придерживаться одного прави-
ла: за короткий срок очень сложно достичь идеала. Коллективный труд
в освоении микроконтроллерной техники — очень важный, если не ска-
зать ключевой фактор. Только так из мелких ремонтников получаются
хорошие специалисты.
8
Не побоюсь заявить, что инженеры промышленной электроники во
все времена были основой всего современного и интеллектуального.
Поэтому поощряю вас прочитать эту книгу, повторить рассмотренные
модели, модернизировать схемы и программы, обрести уверенность
в собственных силах и смело вступить в XI век микроэлектронной и ин-
формационной революции в технике. Профессионалами не рождаются,
ими становятся. Желаю вам успехов!
Инженер промышленной электроники
А.В. Кравченко
Глава 1
Инструментарий
Проблемы создания микроконтроллерных моделей в домашних ус-
ловиях возникают сразу же в момент постановки задачи. В распоряже-
нии радиолюбителей — целый арсенал инструментов (рис. 1.1), однако
он недостаточно освещен в литературе. Хорошо, если читатель живет
в крупном городе, и ему доступны инструменты и программы, прода-
ваемые многочисленными фирмами. Однако для жителей отдаленных
райцентров приобретение инструмента — проблема номер один.
Рис. 1.1. Инструментарий радиолюбителя
Автор предлагает небольшую экскурсию по личным инструментам
с комментариями по практическому применению. Прежде всего, в рас-
поряжении микросхемотехника должен быть основной инструмент: ПК.
Сразу же возникает вопрос: “Каков минимальный ресурс компьютера?”.
Имея многолетний опыт, автор считает что, для работы с микрокон-
троллерами достаточно (как минимум) процессора Pentium I и операци-
онной системы Windows 98. На материнской плате обязательно должны
присутствовать разъемы портов СОМ и LPT. Оперативная память —
10
Глава 1
минимум 256 Мбайт, жесткий диск — минимум 20 Гбайт, диагональ
монитора — минимум 15 дюймов, чтобы не испортить зрение. Желате-
лен принтер.
Для полноценной профессиональной работы необходим гораздо
больший ресурс компьютера — даже, возможно, с двухъядерной струк-
турой. Кроме того, при создании профессиональных проектов и техни-
ческой документации необходим LCD TFT монитор с высокой четко-
стью изображения и диагональю хотя бы 19 дюймов.
Следующий вопрос: “Каков минимальный комплект необходимых
программ?”. Основные и часто используемые автором приложения:
• Eagle 4.11 — программа автоматической трассировки печатных
плат (аналог Pead);
• CorelDRAW — графический редактор для создания несложного ди-
зайна;
• Microsoft Word — тестовый и простой графический редактор;
• AutoCad — средство разработки чертежей конструкций (для про-
фессионалов);
• Paint — простой графический редактор для корректировки рисун-
ков;
• ACDSee — программа быстрого просмотра графических файлов;
• AVR Studio 4 — редактор ассемблерного кода, компилятор ассемб-
лера и программатор для микросхем AVR;
• AVR Prog — программатор для микросхем AVR;
• Блокнот — программа для написания ассемблерного кода без до-
полнительных знаков текстового редактора;
• Microsoft Excel — средство создания электронных таблиц;
• Acrobat Reader 5.0 — программа для чтения электронных докумен-
тов;
• Калькулятор (инженерного вида) — поддерживает преобразование
шестнадцатеричного и двоичного кода в десятичный.
Более детальное эти программы рассмотрены в специализированной
литературе.
Микросхемотехнику желательно иметь доступ к Internet (автор не
раз прибегал к справочным данным на Web-сайте www. alldatasheet.
com) и свой электронный почтовый ящик, поскольку большинство во-
просов решается по переписке.
В процессе создания микроконтроллерных схем постоянно возника-
ет путаница из-за большого количества вариантов схем и программ, по-
этому автор всегда создает отдельную папку для проекта, а внутри
нее— вложенные папки для схем, программ, текста, таблиц, фотогра-
Инструментарий
11
фий и рисунков. Тем не менее, в ходе испытания схемы всегда возника-
ет перестановка и модернизация, что в конечном итоге опять приводит
к путанице. По этой причине микросхемотехнику необходимо хорошо
тренировать зрительную память, чтобы избежать ошибок во время ра-
боты с компьютером.
Любая схема или конструкция возникает из идеи, из практики раз-
работки устройств. На начальном этапе удобнее всего пользоваться для
записей обычной ручкой и бумажным блокнотом. При этом не помеша-
ет линейка, лекала и шаблоны. Кроме того, блокнот удобен для зарисов-
ки черновых вариантов программных алгоритмов или блоков.
Как только идея получила первоначальный облик, создается схема
и дизайн устройства. На этом этапе микроконтроллер выбирают после
тщательного изучения требований или, как часто говорят конструкторы,
технического задания. Впрочем, если использовать минимум деталей
или минимальный ресурс микроконтроллера, то до успешного заверше-
ния идеи можно и не дойти. В таком случае черновые варианты, зарисо-
ванные в блокноте, выполняют промежуточную роль и не требуют дли-
тельного конструирования в электронном виде. По мере роста микро-
контроллерной модели возникает большое количество черновиков (как
бумажных, так и программных). Их уничтожать не надо, поскольку
в будущем при модернизации могут в любой момент понадобиться про-
межуточные элементы разработки.
Очень важные факторы в разработке электронных устройств — са-
модисциплина и аккуратность. После создания конечной модели мате-
риалы, связанные с разработкой и конструированием, сохраняются
в легко доступных местах. Это необходимо для использования отдель-
ных компонентов или готовых узлов и схем для следующих моделей.
Если поставленная задача имеет трудное, многоцелевое решение, то ее
всегда можно разбить на отдельные, легко решаемые подзадачи.
Слесарный инструмент
Начнем с набора отверток. Автор не раз бывал в командировках за
рубежом. Однажды в Германии на вопрос о причинах использования
большого количества отверток один немецкий инженер ответил: “Для
каждого винта и усилия откручивания/закручивания требуется своя от-
вертка. Это — культура производства и личная техническая культура
инженера”. С тех пор мой инструментарий всегда включает несколько
различных отверток. За основу взят специализированный набор для
крупных винтов “Stanley” и для миниатюрных винтов “Xion” со смен-
ными насадками (рис. 1.2).
12
Глава 1
Рис. 1.2. Набор отверток со сменными насадками
Для больших усилий автор использует отечественные отвертки со
сменными элементами, а для быстрой работы — обычные специализи-
рованные отвертки. Для работы с мелкими и миниатюрными винтами
используются часовые отвертки с вращающейся головкой. Отвертка
с изгибом на кончике (см. рис. 1.2) необходима для работы с крепежны-
ми зажимами типа Wago.
Для потайных винтов корпусов служат длинные отвертки, для
труднодоступных мест монтажа — короткие. Дополнительно необхо-
дима индикаторная отвертка сети 220 В. Этот инструмент предупредит
об опасности неизолированных силовых элементов схем. Возьмите за
правило: вначале проверить оголенные провода на наличие фазы и толь-
ко после этого приступать к монтажу силовых элементов в помещении.
Инструментарий
13
Пинцет (рис. 1.3) обязательно должен быть металлическим, из не-
ржавеющей стали.
Рис. 1.3. Пинцеты, ключи, кусачки, ножницы и др.
Пинцет может быть изолированным для монтажа элементов, особо
чувствительных к статическому электричеству (такой пинцет не предна-
значен для монтажа под напряжением). Для работы с миниатюрными
деталями и тонкими проводами служит пинцет с острыми концами. Ав-
тор всегда использует два пинцета: первый — Для рутинных задач мон-
тажа деталей и второй — для “тонкой” работы, требующей чистоты
и аккуратности.
14
Глава 1
Перед монтажом детали обязательно проходят правку и подгонку
по длине выводов специализированными плоскогубцами (утконосами
или круглогубцами) и кусачками (см. рис. 1.3). Особо крупные детали
обрабатываются крупными плоскогубцами. Для гаек используются на-
садки набора “Stanley” или специализированные гаечные ключи разме-
ром 3; 3,5; 4; 4,5; 5; 5,5; 6; 6,5; 7; 7,5; 8; 9; 10; 12; 13 мм. Для нестандарт-
ных гаек можно применить миниатюрный разводной ключ. Для изго-
товления из бумаги шаблонов макетных плат или шаблонов облицовоч-
ных панелей автор использует обычные, а для создания отверстий в ша-
блонах — маникюрные ножницы.
При изготовлении корпусов или монтажных плат используется пи-
ляще-режущий инструмент (рис. 1.4):
• ножовка по металлу (желательно — для стандартного полотна
310 мм);
• лобзик с полотном 115 и изгибом станка более 250 мм;
• мини-ножовка по дереву с полотном 115 мм;
• резак;
• канцелярский острый нож со сменными лезвиями (желательно про-
фессиональный с металлической обоймой);
• ножницы по металлу.
Рис. 1.4. Пиляще-режущий инструмент
Инструментарий
15
Для обработки краев монтажных плат используются напильники,
надфили, шкурка по дереву или металлу (рис. 1.5).
Рис. 1.5. Инструмент для обработки краев монтажных плат
Надфили также необходимы для вытачивания или подгонки отвер-
стий особых форм. При изготовлении корпуса требуется напильник
с грубой, глубокой насечкой для придания формы и линейности корпуса
или же — с мелкой насечкой для устранения царапин и шероховатостей.
До травления и нанесения рисунка на плату металлизированная по-
верхность платы обрабатывается вначале грубой шкуркой (250..300 зе-
рен на мм2), а затем шлифуется шлифовочной бумагой с абразивом
1 000..1 500 зерен на мм2. Иногда края платы или металлизация дово-
дятся обычным канцелярским ластиком.
При быстром макетировании вытравливать дорожки необязательно.
Достаточно расчертить металлизированную плату на отдельные клетки
и проделать специальным резаком (изображен на рис. 1.5 вверху справа)
канавки так, чтобы между отдельными клетками не было электрическо-
го контакта (рис. 1.6).
Затем детали паяются навесным монтажом, а выводы попадают на
отдельные клетки. Сами выводы соединяются припаянными проводами.
Иногда в клетках высверливают отверстия, чтобы детали можно было
монтировать на одной стороне, а паять соединения — на другой стороне
платы. В результате макет получается более аккуратным и понятным
при диагностике.
16
Глава 1
Рис. 1.6. Канавки между отдельными клетками платы
В металлизированной плате после обработки высверливаются от-
верстия. Для этого плату прикрепляют струбцинами к деревянной осно-
ве или устанавливают в мини-тиски (рис. 1.7).
Сверла для отверстий необходимых размеров подбираются соглас-
но документации на детали. Большие отверстия высверливаются обыч-
ной электродрелью, а очень маленькие (менее 0,5 мм) — вручную или
мини-дрелью, что бы не испортить сверло, поскольку масса электродре-
ли не позволяет регулировать усилие нажатия. Кроме того, сверла мало-
го диаметра могут проскальзывать в патроне обычной электродрели.
Для того чтобы не стеснять близких, а ‘также держать инструмент
постоянно под рукой, автор приобрел переносной раскладной ящик для
инструмента (рис. 1.8).
Небольшой инструмент и детали укладываются в отделениях ящи-
ка, т.е. получается своеобразная мини-мастерская. Такую мастерскую
легко хранить на балконе, в сарае и даже в жилой комнате. Автор не раз
видел, как мини-мастерские сооружали из чемоданов, дипломатов и са-
Инструментарий
17
квояжей. Все ограничено лишь вкусом и уровнем материального благо-
состояния. Главное — аккуратность по отношению к инструменту
и добрососедство по отношению к своим близким.
Обеспеченные радиолюбители и жители пригорода могут позволить
себе роскошные мастерские (рис. 1.9).
Рис. 1.7. Струбцины, тиски и дрели
18
Глава 1
Рис. 1.8. Раскладной ящик для инструмента
Инструментарий
19
Рис. 1.9. Стационарная мастерская
Для того чтобы достичь и превзойти западные технологии и вырас-
ти до настоящего профессионала, необходимо воспитать в себе высокий
технический уровень культуры, создать собственную мастерскую, со-
брать уникальный инструмент, разработать собственные высокоразви-
тые технологии ручного труда. Трудолюбие, упорство, аккуратность,
интеллект — таковы черты настоящего профи.
Эл ектродрел ь
В радиолюбительской практике часто необходима электродрель для
сверл малого диаметра. Она должна быть максимально простой в исполь-
зовании, компактной, стационарной, а для предотвращения травм — ма-
ломощной. В конструкции дрели, показанной на рис. 1.10, автор исполь-
зовал готовые узлы, однако при желании их можно воссоздать в домаш-
них условиях.
20
Глава 1
Рис. 1.10. Электродрель
Электродрель предназначена для сверления отверстий диаметром
0,3..3 мм в печатных платах для монтажа элементов схем. Основной
подвижной кронштейн выполнен из нерабочего амортизатора задней
двери автомобиля “ВАЗ 2108-21099” (трубка в трубке). Рабочий вал
и кожух — от списанной с производства пневматической дрели (вал
с двумя подшипниками внутри усеченной трубы с окном). Эту деталь
можно сделать на токарном станке или ручным слесарным способом.
Двигатель, схема привода, ролики и пассики взяты из старого бобинно-
го магнитофона “Маяк 203”.
Общий вид электродрели показан на рис 1.11.
Изготовление деталей
Рассмотрим отдельные детали. Основой электродрели служит под-
ставка /, изготовленная из листа металла толщиной 1 мм. Подставка
имеет форму квадрата (рис. 1.12 а). При изготовлении углы квадрата со-
гнуты в местах, обозначенных пунктирными линиями, чтобы получи-
лась готовая форма (рис. 1.12 6).
Инструментарий
21
160
Рис. 1.12. Подставка электродрели
22
Г лава 1
В центре основания закреплен цилиндр 7 винтом 16 (М8). Для при-
дания конструкции устойчивости цилиндр 7 изготовляют из тяжелого
металла. Он также может быть выполнен в виде металлической болван-
ки, размещенной на плоскости основания /.
Подвижной кронштейн 4 сделан из нерабочего амортизатора задней
двери автомобиля “ВАЗ 2108-21099”, но возможны варианты и с дру-
гими автомобильными амортизаторами. Амортизатор необходимо мак-
симально раздвинуть, а верх трубки поршневой системы обрезать на
3..4 см. Никакой накачки или наполнения газами в этих амортизаторах
нет, поэтому разрыва или выброса масла не произойдет.
Детали рабочего узла 2 (рис. 1.13) можно взять от списанной пнев-
модрели, выточить на токарном станке или же изготовить из трубы,
двух подшипников, совпадающих по внутреннему диаметру трубы,
и вала, имеющего диаметр, равный внутреннему диаметру подшипни-
ков.
В верхней части трубы вырезается окно 20 для пассика 12. Вал 21
выполнен из обычной стали. На одной стороне вала выполняется конус
для цангового механизма. На вал 21 насаживается ролик 19 так, чтобы
он был напротив вырезанного окна 20. Затем на вал насаживается ниж-
Инструментарий
23
ний подшипник 7, чтобы вал с подшипником можно было установить
в корпус 2. При сборке рабочего узла перед установкой вала 21 внутрь
трубки 2 необходимо в вырезанное окно 20 вставить пассик 72, надеть
его на ролик 19 вала 27, после чего на вал 27 и трубу 2 сверху напрессо-
вывается второй подшипник 2.
Для крепления двигателя 5, подвижного кронштейна 4 и рабочего
узла 2 изготавливается пластина 3 из листа стали толщиной 3 мм
(рис. 1.14).
Рис. 1.14. Пластина для крепления двигателя, кронштейна и рабочего узла
Для крепления рабочего узла 2 и ручки 9 служат хомуты 71 и 10 со-
ответственно, которые изготавливают из листового металла толщиной
1 мм согласно рис. 1.15.
Рис. 1.15. Хомуты
Узлы крепятся посредством сварки. Хомут 77 (см. рис. 1.15 а) при-
варивается свободной стороной к пластине 3. Сварка производится на
24
Г лава 1
радиусе R20 (см. рис. 1.14). Посередине пластины 3 приваривают под-
вижной кронштейн 4 отрезанной стороной амортизатора к пластине.
К одной из согнутых сторон основания 1 приваривается бобышка 14
с внутренней резьбой М10. На штоке подвижного кронштейна (аморти-
затора) присутствует резьба М10. Для противодействия сжатию аморти-
затора автор добавил пружину 75, которая насаживается на шток под-
вижного кронштейна 4.
Сборка
Сваренный подвижной кронштейн 4 и пластина 3 накручиваются на
бобышку 14. При этом пружина 75 на штоке амортизатора должна быть
максимально растянута и иметь раздвижное усилие 2 кг/м. Рабочий узел
2 (в сборе с валом и пассиком) крепят хомутом 77 к пластине 3 с одной
стороны. К другой стороне пластины 3 прикручивается двигатель 5. На
вал двигателя насаживается ролик 75 и натягивается пассик 12 от рабо-
чего узла 2. К амортизатору 4 хомутом 10 крепится ручка 9 (может быть
выполнена из старой отвертки). Двигатель 5 подключается по схеме
пуска (рис. 1.16).
Для схемы пуска необходим проволочный резистор R1 на 120 Ом
и 15 Вт, конденсатор С1 на 4 мкФ и 450 В (обычный металлобумажный
или любой другой) и сдвоенный выключатель сети: тумблер SA1 на
300 В и 6 А. Эти детали устанавливают в пластиковый корпус (напри-
мер, старую мыльницу) и соединяют с сетевьпм проводом и двигателем.
Корпус 6 крепится к выступам двигателя 5. Корпус для схемы пуска
можно изготовить по рис. 1.17.
Инструментарий
25
Настройка
Рабочий узел 2 необходимо отрегулировать по высоте в хомуте 11
так, чтобы пассик 12 был параллелен пластине 3 (иначе он будет слетать
во время вращения двигателя). Дрель включается в сеть 220 В тумбле-
ром 18. При неверном вращении дрели необходимо поменять местами
выводы В1 и В2 обмотки возбуждения (см. рис. 1.16).
Эксплуатация
Настроенную и проверенную электродрель устанавливают на рабо-
чее место. В цанговый патрон 8 вставляют сверло необходимого разме-
ра (электродрель рассчитана на сверление отверстий максимум 4 мм).
На цилиндр 7 накладывается деревянная дощечка, на которой закрепле-
на плата. На плате высверливаются отверстия путем нажатия на ручку 9
подвижного кронштейна 4. Верхняя часть электродрели может свободно
26
Г лава 1
поворачиваться, что позволяет быстро перемещать головку сверла после
сверления отверстия. Однако во время сверления это может привести
к выходу из строя сверла, поэтому необходимо придерживать верхнюю
часть дрели.
Дрель можно доработать направляющими, однако в этом случае она
потеряет одну из степеней свободного перемещения. Для доработки
конструкции достаточно просверлить отверстие диаметром 5,2 мм в ос-
новании 1 и пластине 3 и установить шпильку М4 высотой 250 мм.
Шпилька 22 хорошо крепится гайками к основанию 1. В пластине 3
шпилька 22 проходит свободно. В месте прохождения шпильки для
улучшения ее скольжения пластину 3 можно доукомплектовать втул-
кой.
Дрель можно изготовить в разных масштабах. При этом необходи-
мо модифицировать привод вала. Радиолюбители, не имеющие пере-
численных готовых узлов, могут использовать любые подручные мате-
риалы, доступные в свободной продаже.
Простая цанга для дрели
Один из механизмов дрели — цанга для за-
жима сверла. Отверстия в радиолюбительских
конструкциях, в основном, — небольшого диа-
метра, поэтому цангу можно изготовить из под-
ручных средств. Корпус цанги (рис. 1.18) вы-
полнен из металлической авторучки.
У металлического колпачка 3 срезана вер-
хушка, чтобы сверло необходимого диаметра
(не более 2 мм) свободно входило в отверстие.
Металлический корпус 4 также обрезан на две
трети. Цанговые зажимы 2 изготовлены из
гвоздей (рис. 1.19).
Для этого верхушку гвоздя затачивают так,
чтобы она свободно проходила в отверстие
колпачка, и спиливают напильником три чет-
верти верхушки с двух сторон, чтобы от нее ос-
талась одна четвертая часть. Затем заготовку
отрезают ножовкой по металлу. Всего для за-
жима изготавливают четыре заготовки, а внут-
ренний угол на них немного стачивают для
сверла (рис. 1.20).
Рис. 1.18. Корпус цанги
Инструментарий
27
Рис. 1.19. Цанговые зажимы
Сточить
угол
Рис. 1.20. Стачивание внутреннего
угла заготовки
Заготовки необходимо подогнать так, что-
бы при складывании они образовали усечен-
ный конус (без зазоров и наклонов) с неболь-
шим отверстием внутри (сверло в это отвер-
стие проходить не должно). Если изготовить
зажим невозможно, следует подобрать метал-
лические шарики от старых подшипников. При
этом сверло с шариками должно входить
в колпачок (рис. 1.21). Собранная таким обра-
зом цанга надевается на вал электродрели.
Травление печатных плат
Автор испробовал множество методов Рис. 1.21. Металлические
травления печатных плат. По субъективному шарики
мнению, самым лучшим и безопасным является первый из описанных
ниже методов, основанный на использовании готового раствора хлорно-
го железа.
Внимание!
Химические растворы изготовляют в помещении, оборудованном вытяжной систе-
мой, в резиновых перчатках, защитных костюмах и защитных очках и хранят
в стеклянной или пластиковой посуде. Утилизацию растворов производят в специ-
альных пунктах приема отходов. При попадании растворов на участки тела необ-
ходимо незамедлительно промыть пораженное место проточной водой.
28
Глава 1
Метод 1
Раствор: 300 г/л хлорного железа (рис. 1.22) растворяется в нагретой
до 60°С воде в стеклянной посуде. Раствор имеет темно-коричневый
цвет. Травление платы лучше производить в ванне из пластика. При
травлении температура раствора поддерживается на уровне 60°С. Трав-
ление длится от двух до десяти минут в зависимости от площади трав-
ления.
Рис. 1.22. Хлорное железо
Метод 2
Раствор: 300 г/л соляной кислоты растворяется в нагретой до 60°С
воде. В раствор добавляется 40 г кухонной соли (NaCl) и 50 г медного
купороса (СиЗОд). Раствор имеет прозрачный желто-салатовый цвет. Он
заливается в пластиковую ванну, куда опускаются четыре таблетки пер-
гидроля. Затем на эти таблетки стороной травления ложится плата. Во
время травления раствор изменяет цвет на зеленый. Травление длится
от 60 секунд до 15 минут' (в зависимости от площади травления).
Инструментарий
29
Для ускорения процесса в раствор можно добавлять таблетки пер-
гидроля, следя за готовностью платы. Если плата будет находится в тра-
вильном растворе слишком долго, то возможно вытравливание меди под
защитным слоем печати проводников.
Метод 3
Метод, аналогичный второму. В одной трети объема воды раство-
ряется хлорная медь, на две трети подкисленная расчетным количест-
вом соляной кислоты, а затем растворяется хлористый калий. После
сливания раствор — прозрачный, ярко-зеленого цвета, без осадка. Реге-
нерацию раствора проводят при достижении концентрации меди в рабо-
чем растворе 65 г/л путем добавления пергидроля. При этом однова-
лентная медь переходит в двухвалентную. Раствор следует поддержи-
вать нагретым до температуры 60°С. Травление платы выполняют
в ванне из пластика [1].
Метод 4
Метод, аналогичный второму и третьему Для приготовления рабо-
чего раствора необходима 15% соляная кислота. Соляная кислота обыч-
но продается в концентрации 30,8%. Для получения необходимого рас-
твора ее необходимо развести водой в соотношении 25 мл кислоты на
15 мл воды. На каждые 25 мл кислоты добавляется одна таблетка пер-
гидроля. Для изготовления раствора в 300 мл воды размешивают 100 мл
перекиси водорода, после чего добавляют 100 мл 30% соляной кислоты.
Раствор приготовляют 40 секунд нагретым до 60°С. Травление платы
происходит в ванне из пластика. Через час раствор для травления уже
непригоден [2].
Метод 5
Раствор: 75 г/л серной кислоты растворяют в холодной воде (14°С),
после чего в нагретом до 60°С растворе в пластиковой ванне происходит
травление платы [3].
Метод 6
Для травления необходима пластиковая ванна, трансформатор на
2 Вт / 12 В и мостовой выпрямитель на диодах Д246 и фильтрующем
конденсаторе 1 000 мкФ, 25 В. Водный раствор солей CuSO4 и NaCl
(медный купорос и кухонная соль) изготовляют в пропорции один
к двум. На 0,5 л раствора необходимо добавить 2..3 мл H2SO4 (96%). За-
тем подключают два электрода: медный электрод — к вытравли-
30
Глава 1
ваемую плату — к Печатные проводники наносят нитролаком. Че-
рез 25 минут блок питания необходимо отключить от сети, вынуть мед-
ный электрод, а плату оставить в растворе примерно на час. [4]
Метод 7
Этот метод используют для изготовления различных растворов для
травления [5]. Он недостаточно апробирован и его рекомендуется про-
водить в специализированной химической лаборатории. Все данные о
количествах необходимых веществ приведены в расчете на получение
1 кг сухого травильного вещества без учета кристаллизационной воды.
Получение хлорного железа
Раствор: смешаем 350..400 г железных опилок в 650..700 мл серной
кислоты (ожидаем, пока опилки полностью растворятся). В другом со-
суде смешаем 350 г негашеной извести с 500 мл соляной кислоты. Через
час после окончания реакции профильтруем оба раствора и смешаем их.
В результате выпадет осадок, который надо отфильтровать. Получен-
ный раствор перельем в какой-нибудь широкий сосуд и оставим на не-
сколько дней. В результате получится раствор хлорного железа, кото-
рый можно применить для травления печатной платы. Для повышения
интенсивности реакции можно продувать через раствор воздух (напри-
мер, с помощью аквариумного микрокомпрессора) через распылитель.
Получение хлорной меди
Смешаем 450 г негашеной извести
и 600 мл соляной кислоты (концентра-
ция 30%). После окончания реакции
раствор необходимо отфильтровать.
Далее смешаем полученный раствор
с 1,8 кг медного купороса, после чего
опять профильтруем. Полученный
темно-зеленый раствор — это раствор
хлорной меди, который можно приме-
нить для травления печатной платы.
В заключение этого вопроса отме-
тим, что все чаще в продаже появляют-
ся зарубежные химические средства
травления плат (рис. 1.23) [6]. Их при-
менение дает более надежный, стопро-
центный результат.
Рис. 1.23. Зарубежные химические
средства травления плат
Инструментарий
31
Паяльник
Все процессы изготовления микроконтроллерных моделей рассмот-
рены в этой книге для условий минимастерской. Для монтажа элемен-
тов схем на печатную плату используется обычный паяльник или на-
стольная паяльная станция. Очень часто начинающие радиолюбители
задают вопросы, связанные с технологией монтажа элементов, и потому
автор решил рассмотреть некоторые из них.
Какой должен быть паяльник?
Большинство современных элементов предъявляют требования по
монтажу с ограничением температуры нагрева и пайки. Для пайки мик-
роконтроллеров, интегральных схем, небольших элементов, тонких
проводов и миниатюрных датчиков желательно использовать паяльник
мощностью!5..25 Вт с низковольтным питанием 12..27 В (рис. 1.24).
Рис. 1.24. Паяльное оборудование
32
Глава 1
Каковы требования к процессу пайки?
Одно из требований монтажа микросхем — заземление жала паяль-
ника (как правило, выполняется путем соединения наконечника с зазем-
лением корпуса понижающего блока питания и заземлением в розетке).
Иногда контур заземления проводится отдельно к водопроводным тру-
бам. Во время процесса пайки обязательно должна использоваться под-
ставка под паяльник, поскольку температура на жале может достигать
360°С. Для соблюдения техники безопасности рабочее место также дол-
жно быть оснащено вытяжкой.
Как правильно держать паяльник?
Для того чтобы рука при монтаже не уставала, паяльник удержива-
ется тремя пальцами под углом, как обычная авторучка (рис. 1.25). При
этом выбирают паяльник с прямым жалом.
Рис. 1.25. Правильный способ удерживания паяльника
Исходя из этой методики, вес паяльника должен быть минималь-
ным. Если необходимо выполнить монтаж силовых элементов схемы, то
выбирается более мощный паяльник на 60.. 100 Вт с питанием 220 В.
Инструментарий
33
Мощные паяльники в процессе монтажа удерживаются всей ладонью,
монтажная плата должна быть закреплена в специальной подставке,
а монтируемый элемент монтажа — установлен в необходимое отвер-
стие.
Как паять элементы?
Для удержания платы с элементами используется регулируемая
подставка с зажимами для платы (рис. 1.26).
Рис. 1.26. Подставка с зажимами для платы
Для того чтобы выполнить монтаж, место пайки необходимо смо-
чить флюсом, одной рукой поднести припой, а другой — распаять его
так, чтобы он растекся по поверхности платы и элементу монтажа. Вре-
мя нагрева и пайки необходимо свести к минимуму, а в случае нагрева
корпуса микросхемы, сделать перерыв. Иногда приходится паять очень
мелкие детали. Для этого необходимо увеличительное стекло или съем-
34
Глава 1
ные очки-бинокуляры (применяются в ювелирной промышленности)
(рис. 1.27).
Рис. 1.27. Очки-бинокуляры
Как выполнить демонтаж?
Очень часто при конструировании происходят ошибки монтажа
(особенно при навесном методе моделирования). В jtom случае акку-
ратно демонтировать микросхему, не повредив ее ножки и печатную
Инструментарий
35
плату, поможет паяльник с отсосом (см. рис. 1.24). При неровной по-
верхности платы отсос таким паяльником затруднен, поскольку грубое
окончание наконечника не позволяет собрать весь припой с места мон-
тажа. Для этой операции используют специальный шприц с фторопла-
стовым наконечником. Вначале паяльником разогревается припой,
шприц затягивается на отсос, паяльник смещается, шприц устанавлива-
ется плотно к плате, и кнопкой запускается процесс отсоса припоя. Фто-
ропластовый наконечник в момент разогрева размягчается (но не пла-
вится) и плотно облегает место монтажа, что позволяет собрать при от-
сосе весь припой. Затем элемент монтажа демонтируется.
Какой флюс лучше выбрать?
В практике встречается припой с флюсом внутри, а также канифоль
и жидкий флюс. Для лужения выводов элементов и выводов проводов
лучше использовать канифоль в подставке (на рис. 1.24 показана в ле-
вом верхнем углу). Для пайки элементов и проводов на плату использу-
ется жидкий флюс (см. рис. 1.25). Флюс можно изготовить самостоя-
тельно. Для этого бутылочка 100 мл до половины заливается чистым
90% спиртом, а остальная часть заполняется раздробленной канифолью.
Смесь оставляется на сутки для размокания, после чего флюс разбалты-
вается в бутылочке и готов к использованию. Флюс наносится кисточ-
кой или через пипетку в крышке заливается на плату. При пайке необ-
ходимо пропаять соединение до высыхания флюса.
Как паять провода?
Для пайки проводов также применяется специализированный инст-
румент. Перед монтажом провода специальным отжигателем зачищает-
ся его изоляция, после чего на него наносят флюс и припой. После лу-
жения провода производится монтаж на плату. Иногда этот процесс
можно упростить с помощью пистонов и обжимочного инструмента (на
рис. 1.24 показан в левом нижнем углу).
Какой используется инструмент для обжимки проводов?
Достаточно специализированных плоскогубцев с канавками на кон-
цах для пистонов разных размеров, а также ножей для удаления лишне-
го провода. Перед установкой пистона провод зачищается. На провод
надевается небольшой отрезок термотрубки, после чего подбирается
и насаживается на провод пистон необходимого диаметра. Насаженный
пистон обжимается специальными плоскогубцами. Термотрубка подви-
36
Глава 1
гается к пистону и нагревается, благодаря чему изолируется оголенная
часть провода. Лишний провод, выступающий из пистона, удаляется.
Как крепятся провода внутри корпуса?
Монтаж проводов внутри корпуса или высоких элементов схем тре-
бует крепежа. Чтобы не применять сложных элементов крепежа, в усло-
виях мини-мастерской применяется паяльник с пластиковым стержнем
(см. рис. 1.24). Когда он нагрет, расплавленный пластик наносится на
место монтажа, и после остывания пластика фиксируется элемент мон-
тажа. Такой метод часто используют для фиксации проводов на плате
или небольших расстояниях от платы.
В том случае, если проводов много, лучше использовать стяжки
различной длины и ширины (рис. 1.28).
Рис. 1.28. Стяжки
Стяжками жгуты проводов крепятся к винтовым соединениям кон-
струкции. Ими можно стягивать несколько проводов во избежание пу-
таницы внутри корпуса конструкции. Если в конструкции присутствуют
оголенные места пайки, для изоляции необходимо использовать термо-
Инструментарий
усадочные трубки. На провода одинакового цвета, но разного назначе-
ния, можно надевать термоусадочные трубки различных цветов. Это
поможет избежать ошибок при монтаже/демонтаже.
Паяльные станции
aILJlLj/ >4.1 а.
Рис. 1.29. Паяльная станция
Паяльные станции (рис. 1.29) хороши
при автоматизированном и профессиональ-
ном монтаже/демонтаже элементов. Они ос-
нащены вакуум отсосом, а в некоторых мо-
делях для нагрева используют инфракрасное
облучение или горячий воздух, что более
безопасно для монтажа очень чувствитель-
ных к перегреву микросхем.
Паяльные станции позволяют оператив-
но регулировать мощность и температуру
нагрева жала паяльника. Кроме того, все чаще используют паяльники
с нагревом пламенем от встроенных пропановых баллончиков. Такие
паяльники лучше использовать в хорошо проветриваемых помещениях.
Также паяльники имеют сменные насадки или жала. Это важно для пай-
ки деталей с различным диаметрохМ выводов. Автор часто регулирует
длину жала, что дает различную мощность нагрева деталей.
Устройство намотки катушек индуктивности
Автор не раз пользовался простейшим устройством для намотки ПЧ
контуров небольших размеров (рис. 1.30). Это устройство можно со-
брать за 30 минут (при наличии соответствующего инструмента и мате-
риалов).
Рис. 1.30. Устройство намотки катушек индуктивности
38
Глава 1
Размеры конструкции могут различаться в зависимости от размеров
индуктивностей и катушек с медной проволокой. У устройства нет ос-
нования, поскольку оно может быть прикреплено к деревянному бруску
или верстаку. Материал, из которого изготовлены детали, может быть
самым разнообразным. Детали /, 4, 6 автор рекомендует выполнить из
нержавеющей стали (единственный недостаток — трудоемкость обра-
ботки из-за упругих свойств), ось 2 — из металлического стержня или
трубки, ось 7 — из медного провода в зависимости от внутреннего диа-
метра катушки индуктивности (можно сделать несколько осей для раз-
личных катушек).
Устройство состоит из следующих деталей:
• 1 — каркас-держатель катушек с проводом;
• 2 — ось для катушки с проводами;
• 3 — катушка с проводом;
• 4 — пластина соединения каркасов;
• 5 — провод;
• 6 — каркас-держатель катушки индуктивности;
• 7 — ось для катушки индуктивности;
• 8 — винты крепления;
• 9 — шайба-гайка;
• 10 — катушка индуктивности;
• 11 — шайба с пазами;
• 12 — шайба.
Особенности технологии сборки устройства
Рис. 1.31. Заготовка
Шайбу 12 надевают на ось 7 и припаивают. Недалеко от нее наде-
вают шайбу с пазами 11 и так же припаивают. Затем нарезают резьбу на
оставшемся свободном отрезке оси для шайбы-гайки 9. Для сгибания
каркасов автор использовал два уголка 40x40
длиной 30 см, скрепленные между собой
болтами на краях (один из краев фиксируется
в тисках). Затем заготовка из листового ме-
талла (с выпиленными пазами и отверстия-
ми) вставляется между губками уголков
и сжимается болтами (рис. 1 31), после чего
оставшаяся часть заготовки прибивается ки-
янкой. Для катушек с проводом больших
размеров лучше выполнить отдельный кар-
кас.
Инструментарий
39
Технология намотки витков на катушку
На ось 2 надевается катушка с проводом, после чего ось устанавли-
вается на каркас. В случае намотки большого количества витков на кра-
ях оси лучше нарезать резьбу для гаек и зафиксировать ось так, чтобы
она не съезжала с каркаса. На ось 7 устанавливается катушка индуктив-
ности основанием к шайбе с пазами //и фиксируется шайбой-гайкой 9.
Затем отрезок провода закладывается между пазами и накручивается на
ось. На катушке фиксируется и наматывается необходимое количество
витков.
В конце намотки провод фиксируется на катушке, отрезается необ-
ходимый свободный отрезок и наматывается на ось. Для фиксации
можно, например, расплавить корпус катушки или капнуть каплю пара-
фина или расплавленной пластмассы на провод, продев свободный от-
резок в петлю нитки (при этом нитка пропускается под наматываемые
витки). По окончании процесса намотки всех слоев свободные отрезки
слоев аккуратно отматываются от оси и снимаются с пазов шайбы. Ка-
тушка снимается с оси, а свободные отрезки залуживаются и припаива-
ются к стойкам у основания катушки. Стойки можно выполнить из от-
резков медного провода. После припаивания провода к стойкам послед-
ние вплавляются в основание катушки.
Станок для ручной намотки катушек
трансформаторов
В радиолюбительской практике приходится наматывать катушки
для низкочастотных и высокочастотных трансформаторов (в том числе
импульсных, ПЧ контуров и т.д.). Десять лет назад промышленность
выпускала специальные станки (рис. 1.32), однако, к сожалению, сего-
дня в свободной продаже такие станки отсутствуют.
Предлагаю самодельный станок для намотки обмоток катушек
трансформаторов, собранный из распространенных материалов. Его
сборочный эскиз представлен на рис. 1.33.
Материалы для изготовления станка можно выбрать, исходя из на-
личия или доступности их приобретения. Рассмотрим каждую деталь
в отдельности.
Треугольные распорки 1 изготовлены из деревянного бруска (мож-
но использовать готовые пластмассовые детали, подходящие по конфи-
гурации). На рис. 1.34а показано объемное изображение детали, а на
рис. 1.345—вид сбоку.
Станок состоит из следующих деталей:
40
Глава 1
• 1 — треугольные распорки;
• 2 — скобы;
• 3 — вал для наматываемых катушек;
• 4 — держатель бобин с проволокой;
• 5 — левая пластина корпуса;
• 6 — правая пластина корпуса;
• 7 — винт зажима (с резьбой М10);
• 8 — гайка зажима (с резьбой М10);
• 9 — счетчик количества витков;
• 10 — пассик;
• 11 — втулка для вала;
• 12 — ролик;
• 13 — заклепки;
• 14 — винты крепления счетчика (с резьбой М3);
• 15 — ручка вала намотки;
• 16 — стопорная гайка для ручки (с резьбой Мб).
Рис. 1.32. Станок для намотки катушек трансформаторов
Инструментарий
41
Рис. 1.33. Сборочный эскиз станка
42
Глаза 1
Рис. 1.34. Распорки и вал станка
Инструментарий
43
При изготовлении необходимо чтобы, на поверхности основания
ромба одна из диагоналей была в два и более раз больше второй. По се-
редине основания (в центре ромба) высверливают сквозное отверстие до
верхушки тетраэдра. Скобы 2 для удержания бобины с проволокой
лучше всего выполнить из разогнутой пружины (толщина проволоки
0,5..0,7 мм). Длина готовой скобы должна составлять 15..25 мм.
Вал 3 для наматывания катушек и держатель 4 бобины с проволо-
кой изготавливаются из стальной проволоки 06 мм. На валу с обеих
сторон нарезается резьба Мб (см. рис. 1.34 в): с левой стороны — для
зажима треугольных распорок, а с правой — для ручки.
Ручку вала намотки 75 можно изготовить из сломанной отвертки
или из деревянного бруска (обязательно зашкурить и покрыть поверх-
ность ручки лаком). При изготовлении держателя бобины 4 с левой сто-
роны высверливают два отверстия 03 мм для скоб, а с правой стороны
держатель необходимо немного расклепать (см. рис. 1.34 г).
Левую и правую пластины корпуса изготавливают из обычного лис-
тового металла толщиной 5..6 мм (рис. 1.35).
Для изгиба пластин их лучше нагреть до красна (на газовой плите,
в печи или газовой горелкой). Затем согласно чертежу сверлятся отвер-
стия для заклепок. Для лучшей усадки заклепок в отверстиях делают
фаски, после чего заготовки обрабатывают, стачивают края, зачищают
поверхность, обезжиривают и красят.
Винт зажима 7 можно изготовить из обычного болта М10 с резьбой
по всей длине. Для этого головку болта стачивают до толщины 3 мм,
а края округляют. Эту операцию можно выполнить на точильном станке
или обычным напильником. На другом конце болта высверливают от-
верстие для штифта. Также винт зажима 7 можно взять от нерабочей
мясорубки или сломанных тисков или струбцин. Еще один вариант —
купить готовые крепежные шпильки длиной 1 м с нарезанной резьбой
по всей длине. Такую шпильку обрезают по необходимым размерам, ее
край стачивают в цилиндр меньшего диаметра, после чего на этот ци-
линдр насаживают шайбу и расклепывают, так чтобы поверхность шай-
бы ровно прилегала к поверхности стола, а с другой стороны выполня-
ют отверстие для штифта.
Счетчик количества витков 9 и ролик 72 взяты от бобинного магни-
тофона “Маяк”. Размер пассика подбирают по собранному устройству.
Втулку 77 изготавливают из латунного прута 028 мм согласно
(рис. 1.36) или используют готовую втулку от бобинного магнитофона.
44
Глава 1
Рис. 1.35. Левая и правая пластины корпуса станка
Инструментарий
45
Сборка
Вначале края гайки 8 приваривают к правой пластине корпуса 6. За-
тем готовую деталь 7 вкручивают в гайку 8, в отверстие болта 7 встав-
ляют штифт, а его концы расклепывают и округляют. Подготовленную
деталь 4 помещают между пластинами 5 и 6, которые затем скрепляют
заклепками 13. Отверстие в пластинах 5 и 6 подгоняют круглым на-
пильником для посадки втулки 11. Втулку 11 вставляют в отверстие со-
бранного корпуса. Со стороны резьбы втулки закручивают и фиксируют
керном гайку. Между втулкой 11 и роликом 12 устанавливают шайбу
(толщиной 4 мм, с отверстием 06 мм). Эта шайба изготавливается из
подходящей трубки и предназначена для предотвращения трения ролика
о втулку при вращении. В отверстие ролика, шайбы и втулки вставляют
вал 3. Ролик 12 фиксируют (дополнительно припаивают паяльником
или приклеивают эпоксидным клеем) на валу с помощью штифта,
вставляемого в отверстие вала. С другой стороны на вал 3 накручивают
гайку с шайбой так, чтобы вал не имел продольного люфта во втулке 11.
Закрученную гайку необходимо зафиксировать второй гайкой (контр-
гайкой). Ручку 75 фиксируют гайками и шайбами с обеих сторон ручки
на валу 3. К готовому корпусу прикручивают счетчик 9, а между счет-
чиком и роликом 12 натягивают пассик 10.
Порядок намотки катушки
Рассмотрим порядок намотки катушки.
46
Глава 1
1. Закрепляем станок на краю стола. Для того чтобы не испортить по-
верхность стола, под лапки корпуса подкладываем эластичные пла-
стины (например, из гетинакса или пластика).
2. На вал 3 накручиваем гайку и вставляем шайбу и правую треуголь-
ную распорку /.
3. На вал 3 надеваем каркас катушки трансформатора.
4. Вставляем в каркас левую распорку / и затягиваем гайкой с шайбой
так, чтобы каркас не вращался на оси вала и не был деформирован
(рис. 1.37).
5. Вставляем правую скобу 2 в держатель бобины 4.
6. Надеваем бобину с проволокой на держатель 4 и стопорим ее левой
скобой 2.
7. Конец проволоки продеваем в боковое отверстие каркаса транс-
форматора и наматываем на вал 3 по ходу вращения (длина намотки
3..4 см). Затем закрепляем проволоку в отверстии каркаса (механи-
чески или клеем).
8. Сбрасываем в ноль счетчик 9.
9. Наматываем необходимое количество витков на каркас трансфор-
матора. Если трансформатор имеет несколько обмоток, то конец
проволоки отрезают и фиксируют, обмотку трансформатора изоли-
руют и начинают следующую обмотку, повторяя п.п. 7-9.
10. После намотки трансформатора откручивают распорки / и снимают
каркас трансформатора.
Для того чтобы не перепутать концы обмоток, автор рекомендует
отрезки начала обмоток наматывать справа от каркаса, а отрезки конца
Инструментарий
47
обмоток — слева. Проволоку на каркас наматывают плотно, виток
к витку. По окончанию первого слоя второй слой начинается в том же
месте. Обмотки изолируют специальной пропитанной электротехниче-
ской бумагой. Если разница потенциалов обмоток невелика (не более
500 В), то для изоляции можно использовать тефлоновую ленту (тол-
щиной 0,2 мм), применяемую в сантехнике. Каркас катушки трансфор-
матора лучше всего изготовить из толстого, плотного картона или тон-
кого текстолита. Иногда толстый текстолит расслаивают и получают
полотно для каркаса.
Раскройки сборного каркаса трансформатора показаны на рис. 1.38.
Размеры каркаса определяют по размерам магнитопровода [7].
Рис. 1.38. Сборный каркас трансформатора
Щупы
В радиолюбительской практике зачастую необходимо измерять од-
новременно несколько значений в разных точках устройства или же
подключать несколько приборов для настройки (например, генераторов-
осциллографов). В подобных случаях совместно с измерительным инст-
рументом обязательно должны использоваться щупы с креплением
к радиодеталям. Их можно сконструировать самостоятельно из подруч-
ных материалов (рис. 1.39).
Перед сборкой подготовим детали.
1. Острый конец иглы “а” необходимо затупить надфилем, надеть на
иглу-кембрик иб”, загнуть острие иглы в сторону острого конца.
2. Припаять паяльником деталь “в” к детали “а”.
3. Припаять к детали “г” провод так, чтобы провод с припоем свобод-
но проходили через деталь ”в’\
48
Глава 1
4. Надеть пружину “д” на деталь “г” и просунуть деталь “г” свобод-
ным концом через иглу, немного сжимая пружину так, чтобы про-
вод с припоем спрятался в деталь “в”.
5. Создать у острия иглы детали “г” изгиб под углом 90°.
6. Проверить собранный щуп, вжимая провод в иглу (загнутый конец
детали “г” должен немного выходить из иглы).
7. Отпустив провод, загнутый конец детали “г” притягивается к загну-
тому острию иглы.
Рис. 1.39. Сборочный чертеж щупа:
а — игла от шприца 5 мл (не применяйте использованные иглы!);
б— кембрик из изоляции провода; в — отрезок стержня от гелиевой ручки;
г — отрезок провода (одна жила) многожильного жесткого телефонного кабеля;
д— пружина от использованной одноразовой газовой зажигалки
Иногда переделывать готовые щупы осциллографа нежелательно,
поэтому можно сконструировать насадку на промышленный щуп
(рис. 1.40).
Инструментарий
49
Рис. 1.40. Насадка на промышленный щуп:
а — игла от шприца 5 мл (не применяйте использованные иглы!);
б — кембрик из изоляции провода; в — отрезок корпуса от гелиевой ручки;
г — отрезок стержня автоматической шариковой ручки;
д — отрезок провода (одна жила) многожильного жесткого телефонного кабеля;
е— пружина от автоматической шариковой ручки;
ж— гнездо от измерительного прибора
Этот щуп собирается аналогично предыду-
щему. Отличие заключается только в том, что по-
сле спаивания отрезка провода с гнездом на про-
вод необходимо насадить отрезок стержня
и пружину, а на весь этот узел — отрезок от ав-
торучки. Затем отрезок провода пропускается че-
рез иглу, и конец загибается таким образом, что-
бы пружина была слегка сжата. Отрезок авторуч-
ки соединяется с гнездом клейкой лентой.
Рассмотренные щупы (рис. 1.41) успешно
эксплуатируются автором на протяжении трех
лет.
Рис. 1.41. Щупы
Глава 2
с помощью АЦП
Для начинающих радиолюбителей рассмотренная ниже конструк-
ция поможет разобраться в схемотехнике микроконтроллерных уст-
ройств со встроенным аналого-цифровым преобразователем (АЦП) при
малом количестве элементов монтажа.
Схема (рис. 2.1) состоит из микроконтроллера AVR семейства
tinyl 5 [8], дешифратора двоично-десятичного кода в десятичный, десяти
светодиодов и резисторов ограничителей тока.
Рис. 2.1. Структурная схема устройства
Отличительной особенностью микроконтроллера tiny 15 является
встроенный АЦП с четырьмя коммутируемыми входами. Макет позво-
ляет наглядно изучить свойства АЦП, работу портов ввода-вывода, вме-
стить в небольшую память МК различные подпрограммы, поэкспери-
ментировать с динамическим режимом работы светодиодов.
Схема, показанная на рис. 2.1, упрощена. Напряжение, полученное
на регуляторе переменного резистора, преобразуется АЦП в цифровой
код. Управление светодиодами реализовано с помощью программы со
Создание световых эффектов с помощью АЦП
51
скоростью, пропорциональной преобразованному АЦП напряжению.
Цифровой код устанавливается как временные промежутки между мо-
ментами включениями светодиодов. Для расширения количества выво-
дов микроконтроллера используется дешифратор.
Работа схемы (рис. 2.2) подробно описана в [9].
Рис. 2.2. Принципиальная схема устройства
Монтажная плата представлена на рис. 2.3.
Автор собрал схему на макетной плате. На это с учетом устранения
всех ошибок монтажа и программирования микроконтроллера ушло три
часа. Размещение светодиодов — такое же, как и в предыдущей версии
схемы. НовшествохМ является использование резисторов R12, R13 и кон-
денсатора СЗ. С помощью резистора R12 на входе АЦП 3 (альтернатив-
ная функция вывода РВ4) можно установить напряжение от 0 до 5 В
(для несимметричных входов диапазон входных напряжений составляет
O..Vcc) [8]. Конденсатор СЗ позволяет сгладить всплески напряжения
при изменении регулятора R12. ТехМ самым АЦП преобразует интегри-
рованное значение напряжения на входе. Для ограничения тока на вход
АЦП установлен резистор R13. Для более эффективного сброса микро-
контроллера в схеме установлена цепочка Rll, С2. Дешифратор VI уп-
равляет непосредственно светодиодами.
52
Глава 2
Рис. 2.3. Монтажная плата устройства
Создание световых эффектов с помошью АЦП
53
Рис. 2.3. Окончание
Алгоритм работы
При включении питания все параметры обнуляются. В начале про-
граммы опрашиваются выводы порта В микроконтроллера, после чего
АЦП считывает введенную константу для задержки включения. После-
довательно выполняются подпрограммы задержки включения и выбора
светового эффекта и светодиода, а затем происходит возврат в начало
программы с обнулением параметров.
Работа АЦП микроконтроллера tinyl 5 отличается от правил, уста-
новленных в [10] (для более развитых моделей семейства AVR). На пер-
вом этапе необходимо выполнить коммутацию аналогового входа АЦП
с помощью встроенного аналогового мультиплексора. Для этого в раз-
рядах 0-2 регистра ADMUX устанавливается соответствующая комби-
нация нулей и единиц. Кроме того, необходимо установить источник
опорного напряжения с помощью разрядов 6 и 7 регистра ADMUX.
На втором этапе с помощью разрядов 0-2 регистра ADCSR задается
тактовая частота АЦП путем деления тактовой частоты микроконтрол-
лера. Затем разрешается работа АЦП, выбирается режим его работы
54
Глаза 2
(в данном случае — одиночное преобразование), и активизируется пре-
образование.
По завершении преобразования, которое длится 25 тактов АЦП,
данные записываются в регистры ADCL и ADCH. Чтение этих регист-
ров выполняют в строгой последовательности: вначале ADCL, затем
ADCH.
В таком виде считывания данных АЦП программа работает неста-
бильно из-за наводок и шумов от питающей сети (переключение свето-
диодов происходит хаотически, с разной скоростью). Во время чтения
АЦП автор не использовал “спящего” режима, поскольку эксперименты
показали, что это необязательно.
Для повышения точности и стабильности были выполнены четыре
преобразования. Полученные данные были просуммированы и разделе-
ны на четыре (среднее арифметическое). Это дает гораздо более точные
и стабильные результаты измерений. Длительность паузы и импульсов
дешифратора равны, что говорит о хорошей повторяемости данных, по-
лучаемых от АЦП.
Подпрограмма задержки выполнена в виде трех вложенных циклов
(их количество определяется числом, считанным из АЦП). На данном
этапе можно изменить программу и использовать встроенный в микро-
контроллер таймер Timer 1. При этом работа АЦП будет более наглядно
проявляться паузами между моментами включения светодиодов (в пред-
ставленной программе не реализовано).
Подпрограмма опроса реализована с применением команды загруз-
ки данных из памяти програмхМ LPM. При этом данные сохраняются в ре-
гистре R0. Считанные данные поступают в порт В на выводы PB0--PB3.
Двоичный код с порта В микроконтроллера поступает на двоично-деся-
тичный дешифратор VI. Работа дешифратора описана в [11]. Он преоб-
разует двоичный код в единичный сигнал (активный уровень — нуле-
вой) на одном из выводов.
Первый световой эффект — бегущая единица, второй — пооче-
редное мигание светодиодов по кругу, третий — чередующееся после-
довательное мерцание с реверсом по одному (табл. 2.1).
В памяти программ микроконтроллера осталось еще много свобод-
ного места, поэтому можно придумать дополнительные световые эф-
фекты [9, 12].
Создание световых эффектов с помощью АЦП
55
Таблица 2.1. Порядок размещения светодиодов по часовой стрелке, начиная
с 12:00: 3, 9, 8, 7, 4, 2, 1, 6, 5, 10
Светодиоды 10 9 8 7 6 5 . 4 3 2 1 Порт В, двоич- ный код Шестна- дцатерич- ные коды прошивки порта В
Про- грам- ма Шаг
1 1 0 0 0 0 0 0 I 0 1 0 I 0 0010 02
1 2 0 1 0 0 0 0 : о 0 0 I 0 1000 08
1 3 0 0 1 0 0 о i 0 0 0 0 0111 07
1 4 0 0 0 1 0 0 i 0 0 0 0 0110 06
1 5 0 0 0 0 0 0 1 0 0 0 0011 03
1 6 0 0 0 0 0 0 0 0 1 I 0 0001 01
1 7 0 0 I 0 0 0 0 0 0 0 i 1 0000 00
1 8 0 0 0 0 1 0 I I 0 0 0 0 0101 05
1 9 0 0 0 0 0 1 ! о 0 0 0 0100 04
1 10 1 0 0 0 0 о i ! 0 0 0 0 1001 09
2 1 0 1 0 0 0 0 i 0 0 0 0 1000 08
2 2 0 0 0 0 0 1 i 0 0 0 0 0100 04
2 3 0 0 1 0 0 0 J 0 0 0 0 0111 07
2 4 0 0 0 0 1 0 ; : 0 0 0 0 0101 05
2 5 0 0 0 1 0 о ! 0 0 0 0 0110 06
2 6 0 0 0 0 0 0 i 0 0 0 1 0000 00
2 7 0 0 0 0 0 о : : 1 0 0 0 0011 03
2 8 0 0 0 0 0 0 i i о 0 1 0 0001 01
2 I 9 0 0 0 1 0 0 : 0 0 0 0 0110 06
2 10 0 0 0 ! 0 0 0 0 0 0 1 0000 00
2 i 11 0 0 1 0 0 0 . 0 0 0 ! 0 0111 07
2 ; 12 0 о ° I I 0 1 о: 0 0 0 0 0101 05
2 13 0 1 0 I 0 0 0 ! 0 0 0 0 1000 08
2 14 0 ° I о I 0 0 1 : 0 0 0 0 0100 04
2 I 15 0 0 ! 0 0 0 0 : 0 1 0! 0 0010 02
2 ; 16 1 0! 0 0 0 0 0 0 0 ! ; 0 1001 09
3 I 1 0 0 ; 0 0 0 0 0 1 0 : 0 0010 02
3 I 2 0 0 i 0 0 0 1 0 0 ° I ! 0 0100 04
з : 3 1 о ; 0 0 0 0 0 0 0 о 1001 09
з I 4 0 ° ! 0 I 0 1 0 0 0 0 i 0 0101 05 ;
56
Глава 2
Таблица 2.1. Окончание
Светодиоды 10 9 8 7 6 5 4 3 2 1 i Порт В, двоич- ный КОД Шестна- дцатерич- ные коды прошивки порта В
Про- грам- ма Шаг
3 5 0 0 0 0 0 1 0 ! 0 0 0 0100 j j 04
3 6 0 0 0 0 0 0 0 I 0 0 1 ! 0000 i 00
3 7 0 0 0 0 11 0 0 i о 0 о ' 0101 | 05
. 3 8 0 0 0 о i о 0 0 I 0 1 0 ! 0001 ! 01
3 9 0 0 0 0 0 0 о i I 0 0 1 : 0000 i 00
3 10 0 0 0 0 0 0 1 I 0 0 о i 0011 I 03
3 11 0 0 0 0 0 0 0 I 0 1 0 I 0001 I 01
3 12 0 0 0 1 0 0 0 i i 0 0 o ! 0110 I 06
3 13 0 0 0 0 0 0 1 ! 0 0 0 I 0011 | 03
3 14 0 0 1 0 ! о 0 о I о 0 о I 0111 ( 07
3 15 0 0 0 1 0 0 0 0 0 о ! оно i 06
3 16 0 1 0 0 0 0 0 0 0 0 i 1000 j 08
3 17 0 0 1 0 0 0 0 0 0 ° ! 0111 I 07
3 18 0 0 0 0 0 0 0 1 0 ° ' 0010 I 02
Примечание: В таблице для простоты чтения даны инверсные значения
Настройка схемы
Микроконтроллер выбран с тактовой внутренней частотой 1,6 МГц.
При использовании микроконтроллера с /другой тактовой частотой час-
тота световых эффектов изменится. При использовании частоты выше
25 МГц световые эффекты становятся динамическими, с включением
всех светодиодов. Если в динамическом режиме чаще включать одни
и те же светодиоды, то они будут светиться постоянного, в то время как
остальные будут мигать. При достижении определенной динамической
частоты все световые эффекты сольются в постоянное свечение (это
происходит на уровне примерно 1,5 В на выводе 2 микроконтроллера).
Программа
Программа на ассемблере представлена в листинге 2.1, а шестна-
дцатеричный код — в листинге 2.2. Соответствующие файлы
Создание световых эффектов с помощью АЦП
57
elka_adc.asm и elka_adc.hex находятся на прилагаемом к книге
компакт-диске в папке Программы\02 - Световые эффекты.
Листинг 2,1 х Программа управления еаставыми эффектами
.include "C:\Program Files\Atmel\AVR Studio\Appnotes\
tnl5def.inc”
/Автор - инженер промышленной электроники Кравченко А.В.
. def tmp = rl6
.def tmp2 = rl7
.def tmp3 = rl8
.def tempo = r!9
.def pir = r22
.def pur = r23
.def par = r20
.def Y = r29
.def X = r21
.def M = r26
.def adr = rO
.def prgl = r24
.def prg2 = r25
. cseg
. org 0
rjmp RESET
nop ;rjmp EXT_INT0 - прерывание не используется
nop ;rjmp EXT_PIN - прерывание не используется
nop ;rjmp TIME_OVFO - прерывание от таймера
nop • ;rjmp EE_RDY - прерывание от таймера
nop ;rjmp ANA_COMP- прерывание не используется
.org 20
/настройка порта В
RESET: пор
clr tmp
out DDRB, tmp
out PORTB, tmp /обнулить порт В
clr tmp
Idi tmp, $0F /РВО,PB1,PB2,РВЗ-выходы
out DDRB, tmp
Начало программы
clr pir
clr pur
clr prg 1
clr prg2
clr adr
S ta r t: nop
58
Глава 2
Лйстийг 2Л; Продолжение
;сброс всех значений
rcall adcn
пор
rcall zader
пор
rcall opros
пор
rjmp nStart
/Настройка АЦП, начало программы
adcn: пор
nop
clr tmp
awe: nop
cpi tmp, $04
brsh ass
clr tmp3
Idi tmp3, $83 ;внутренний источник, вход ADC3
out ADMUX, tmp3 ;коммутация входов АЦП
clr tmp2
clr tmp3
Idi tmp2, $C4 ;одиночное, запуск, 1/16
out ADCSR, tmp2 ;запуск АЦП на преобразование
;Сохранение данных АЦП
in tmp2, ADCL
in tmp3, ADCH
mov r2, tmp2
mov r3, tmp3
mov r4, r2
mov r5, r3
mov r6, r4
mov r7, r5
inc tmp
rjmp awe
ass: nop
clr r8
clc
add tmp2, r2
adc r9~, r8
add tmp2, r4
adc r< r8
add tmp2, r6
adc r9X, r8
_ 1 —
1 S ' r9
Создание световых эффектов с помощью АЦП
59
Листинг 2 >1* Продолжение
ГОГ tmp2
1st r9
ГОГ tmp2
dr r9
clc
add tmp3, r3
adc г9, r8
add tmp3, r5
adc г9, r8
add tmp3, г 7
adc г9, г8
clc
1st г9
ГОГ tmp3
Isr г9
ror tmp3
nop
ret
/Подпрограмма задержки включения светодиодов
zade г : nop
wdr clr M
clr Y
Idi Y, $AF
cpi tmp3, $00
brne goo
Idi M, $01
add Mt tmp 3
goo: nop nop
mov M, tmp3
dm: nop
cpi tmp2, $00
brne goq
Idi X, $01
add X, tmp2
goq: nop nop
mov X, tmp2
dv: nop
dx: wdr nop ' dec Y
brpl dx
cln
60
Глава 2
Листинг 2,1. Продолжение
dec X
brpl dv
cln
dec M
brne dm
ret
;Подпрограмма опроса светодиодов
opros: nop
cpi pir, $0B
breq prn2
Idi ZH, high(2*progl)
Idi ZL, Low(2*progl)
Add LPM ZL, pir
mov prgl, adr
out PORTB, prgl
inc pir
rjmp got
prn2: nop
cpi pur, $11
breq prn3
Idi ZH, high(2*prog2)
Idi ZL, Low(2*prog2)
Add LPM ZL, pur
mov prg2, adr
out PORTB, prg2
inc pur
rjmp got
ргпЗ: nop
cpi par, $13
breq nasv
Idi ZH, high(2*prog3)
Idi ZL, Low(2*prog3)
Add LPM ZL, par
mov prg2, adr
ouz PORTB, prg2
inc par
rjmp got
nasv: nop
clr pir
clr pur
c 1 ' par
clr adr
Создание световых эффектов с помощью АЦП
61
Листинг 2,1, Окончание
clr prgl
clr prg2
got: nop
ret
.org $100
progl:
.DB $02, $08, $07, $06, $03, $09 $01, $00, $05
.DB $04,
prog2: .DB $08, $04, $07, $05, $06, $00, $03, $01
.DB $06, $00, $07, $05, $08, $04, $02, $09
ргодЗ:
.DB $02, $04, $09, $05, $04, $00, $05, $01
.DB $00, $03, $01, $06, $03, $07, $06, $08
.DB $07, $02
.EXIT
Листинг 2.2х Шестнадцатеричный код. управления световыми эффектами
: 020000020000FC
:ОСО0000013C00000000000000000000021
: 100 02 8000000002707BB0 8BB0 02 70FE00 7BB662 7B7
:100038007727882799270024000006D0000038D0A9
:10004800000056D00000F8CF000000000027000094
:10005800043088F422272ЗЕ827В91127222714ЕСЗЗ
:1000680016B914B125B1212E322E422C532C642CF2
:10007800752C0395ECCF000088248894120D981CE9
:10008800140D981C160D981C8894969417959694А0
:10009800179599248894230D981C250D981C270DD5
:1000А800981С88949694279596942795000008950F
:1000B8000000A895AA27DD27DFEA203019F4A1E07F
:1G0OC80OA2OF0000000OA22FO0001O3019F451E028
:1000D800510F00000000512FOOOQA8950000DA958C
:1000E800F2F7A8945A95C2F7A894AA9569F70895C3
:1000F80000006B3041F0F2E0E0E0E60FC895802D9B
:1001080088BB63951DC00000713141F0F2E0EAE060
:10011800E70FC895902D98BB739512С00000433126
:1001280041F0F2E0EAE1E40FC895902D98BB4395C1
:1001380007С00000662777274427002488279927С7
:040148000000089516
:100200000208070603010005040908040705060ОАЗ
:100210000301060007050804020902040905040099
:0С022000050100030106030706080702А1
:00000001FF
62
Глава 2
Программу можно ввести программатор ом STK200 [12]. Вместо
микросхемы 74НС42 можно использовать К155ИД6, К155ИД10. Пере-
менный резистор R12 желательно выбирать с возможностью точной ре-
гулировки от 0,19 до 0,9 В. Один из вариантов точной настройки — по-
добрать резистор номиналом 150..360 кОм, и впаять его между верхним
выводом R12 и питанием +5 В.
Равномерное, нормальное, видимое переключение светодиодов
происходит примерно на уровне 0,3 В на выводе 2 микроконтроллера.
Если светодиоды светятся с разной яркостью, то к выводам 8 и 16 мик-
росхемы дешифратора (выводы питания) необходимо припаять конден-
сатор на 22 мкФ, 16 В с учетом полярности конденсатора и выводов
микросхемы.
В заключение отметим, что себестоимость устройства составляет
около $10 при покупке исправных радиодеталей. Схема включается сра-
зу же при подаче питания. Пример использования устройства иллюст-
рирует рис. 2.4.
Рис. 2.4. Пример использования устройства
Новогодняя полупрозрачная игрушка в виде шара разрезается попо-
лам (надрезается алмазным стеклорезом и аккуратно смещается), после
чего в соответствии с площадью разрезанной полусферы изготавливает-
ся плата. На плате размещаются светодиоды (рис. 2.5), регулируется
Создание световых эффектов с помощью АЦП
63
скорость световых эффектов, и через хвостовое отверстие продевается
провод для подачи питания 5 В.
Рис. 2.5. Плата управления световыми эффектами
Наиболее впечатляющего эффекта можно достичь, применив яркие
светодиоды (особенно разместив их в горизонтальной плоскости). По-
лусферы игрушки склеиваются по краям (эпоксидным клеем или сили-
коновым герметиком), и готовая игрушка крепится на елку. Провод ак-
куратно протягивается к источнику питания.
Если хорошо пофантазировать, то детские игрушки можно превра-
тить в промышленные изделия. Достаточно вместо светодиодов устано-
вить полупроводниковые реле, которые будут коммутировать исполни-
тельные устройства: электро- и пневмоклапаны, двигатели, нагреватели,
соленоидные защелки и т.д. В результате программу управления свето-
диодами можно превратить в программу управления роботизированным
комплексом, автоматизированной линией и т.п.
Глава 3
Управление шаговым двигателем
Управление шаговым двигателем — перспективное направление
в современной электронике. Шаговые двигатели настолько распростра-
нены, что для перечисления всех сфер их применения понадобится не
одна страница. Мы сталкиваемся с ними ежедневно в бытовой технике
и в промышленности, в фотоаппаратах и в принтерах, в факсах и скане-
рах... На шаговых двигателях построены все исполнительные узлы ро-
ботов, поскольку обычные электродвигатели не приспособлены для ро-
бототехники. Познакомимся поближе с преимуществами шагового дви-
гателя (ШД).
Для начала создадим схему для проверки работоспособности схемы
с ШД, примерный дизайн которой представлен на рис 3.1.
Кабель соединения
Регулировка оборотов
Рис. 3.1. Дизайн схемы управления ШД
Дизайн устройства разрабатывался из соображений компактности
и универсальности. Все операции управления должны быть визуально
видны при работе ШД. Мы сконструируем обычный привод шагового
двигателя, реализующий вращение по часовой стрелке, замедление, ос-
танов, вращение против часовой стрелки и ускорение.
Благодаря тестовой схеме, можно выяснить фазировку обмоток, от-
браковать нерабочие ШД и определить тяговую силу выбранного ШД.
Данная схема будет базовой и после небольшой модернизации и пере-
Управление шаговым двигателем
65
программирования превратится в рабочий узел для робота-охотника за
светом.
Главным управляющим звеном является микроконтроллер tiny26,
содержащий 2 Кбайт флэш-памяти, 128 байт памяти EEPROM, 128 байт
памяти SRAM, 16 линий ввода-вывода, встроенный RC-генератор, 10-
разрядный АЦП, 11 входов АЦП, входной усилитель АЦП, аналоговый
компаратор и два таймера/счетчика. Исходя из намеченной задачи, по-
лучаем структурную схему тестовой платы (рис. 3.2).
Рис. 3.2. Структурная схема тестовой платы
Для управления направлением и скоростью вращения вала шагово-
го двигателя применен регулятор R2. Аналоговый уровень, снимаемый
с движка регулятора R2, подается в усилитель тока, и далее — на АЦП,
встроенный в микроконтроллер. Аналоговые данные преобразуются
в цифровые и поступают в АЛУ микроконтроллера, где обрабатываются
и превращаются в кодовую последовательность управления шаговым
двигателем через порт ввода-вывода В.
С порта В микроконтроллера сигнал управления поступает на драй-
веры управления обмоток ШД. При синфазном управлении обмотками
ШД в определенной последовательности вал ШД поворачивается на
один шаг в ту или иную сторону. Сквозное управление позволяет соз-
дать простую и надежную программу с минимальным количеством ас-
семблерных команд.
Использование готовых драйверов управления обмотками позволя-
ет минимизировать количество элементов схемы, что в свою очередь
приведет к минимизации размеры платы управления и (в случае расши-
рения функций) готовых рабочих узлов. Еще одно преимущество ис-
пользования готовых драйверов — это уменьшение веса платы управле-
ния. Если в мостовую схему выходного каскада драйвера установить
полевые или биполярные транзисторы, то вес платы управления значи-
тельно увеличится (в 3-8 раз).
66
Глава 3
• В рассматриваемой конструкции установлен биполярный шаговый
двигатель (самый простой для решения несложных задач), позаимство-
ванный из старого дисковода 4,5". Биполярные двигатели состоят из по-
стоянного магнита-ротора, окруженного полюсами статора, который со-
стоит из четырех обмоток. Четыре обмотки включены попарно накрест.
Протекание тока в обмотках статора возбуждает ротор, что при после-
довательной коммутации обмоток дает ступенчатое вращение вала ШД.
Частота подачи импульсов в обмотки ШД определяет скорость, а ком-
мутация фаз управления драйверами — направление вращения вала.
Принципиальная схема устройства показана на рис. 3.3. Она состо-
ит из основной микросхемы управления IC1 (микроконтроллер tiny26)
и двух драйверов управления обмотками ШД DD1, DD2.
OV 0V
Рис. 3.3. Принципиальная схема устройства управления ШД
Для регулировки скорости и направления вращения вала ШД исполь-
зуется переменный резистор R2. Плата управления так же имеет свето-
вую индикацию включения LED1 и разъем для подключения ШД и R2.
При подаче питания работа микроконтроллера синхронизируется от
Управление шаговым двигателем
67
кварцевого резонатора Q1. После установки конфигурации микрокон-
троллер сразу же приступает к выполнению программы управления ШД.
На выводы РВО, РВ1 (1 и 2 корпуса микроконтроллера) и РВ2, РВЗ (3
и 4 корпуса микроконтроллера) в определенной очередности поступают
импульсы управления драйверами DD1 и DD2. В свою очередь, драйверы
в определенной последовательности коммутируют обмотки ШД.
Схема питания схемы от трех батареек 1,5 В типа АА и подключе-
ния обмоток ШД показана на рис. 3.4.
Алгоритм работы
Блок-схема алгоритма работы схемы показана на рис. 3.5. Програм-
ма начинается с конфигурирования порта В. Далее устанавливается
конфигурация чтения АЦП. После того как данные с АЦП считаны,
арифметическая подпрограмма выделяет “ноль” регулятора переменно-
го напряжения. Подпрограмма логики определяет направление враще-
ния вала ШД. Поскольку “ноль” смещен, необходимо пересчитать зна-
чения временных промежутков по модулю. Далее основная программа
разделяется на три ветви.
В зависимости от результата работы арифметической подпрограм-
мы выбирается один из способов управления ШД. По заданному алго-
ритму управления в порт В и на драйвер обмоток ШД десять раз пода-
ется последовательность из восьми импульсов, после чего программа
возвращается к конфигурированию АЦП, и цикл повторяется сначала.
68
Глава 3
Рис. 3.5. Алгоритм работы схемы управления ШД
Программа
Программа на ассемблере представлена в листинге 3.1, а шестна-
дцатеричный код — в листинге 3.2. Соответствующие файлы cshag3.
asm и cshag3.hex находятся на прилагаемом к книге компакт-диске
в папке Программы\03 - Шаговый двигатель.
Управление шаговым двигателем
69
Листинг ЗЛ* Программа управления шаговым двигателем
.include "C:\Program Files\Atmel\AVR Tools\AVRStudio4\Appnotes\
tn26def.inc"
/Автор: Кравченко А.В.
/Дата: 17.07.2008
/Версия: 1.1.3
/Имя файла: Cshag.asm
/Микроконтроллер: AVR tiny26.
/Тактовая частота: 4,194мГц
/Питание: нестабилизированное 5 В
list def adr rO / Рабочий регистр
def prgl = rl8 / Рабочий регистр
def prg2 = rl9 / Рабочий регистр
def tmp = r21 / Общий регистр
def D — r22 ; Рабочий регистр
def tmp2 — r20 / Рабочий регистр
def tmp3 r24 / Рабочий регистр
def Hbt — r25 / Рабочий регистр
def Lbt — Г16 / Рабочий регистр
def X = r26 / Рабочий регистр
def Y — rl7 / Рабочий регистр
def M = r23 / Рабочий регистр
def par = r27 / Рабочий регистр
. cseg
. org 0
г jmp RESET
пор /гjmp EXT_INT0 - прерывание не используется
пор /гjmp EXT_PIN - прерывание не используется
пор /гjmp TIME—CMPA - прерывание от таймера
пор /гjmp Т1МЕ_СМРВ - прерывание от таймера
г ->р /гjmp TIME_OVF1 - прерывание от таймера
пор /гjmp TIME_OVFO - прерывание от таймера
пор /гjmp UCI_STRT - прерывание от USI
пор /гjmp UCI_OVF - прерывание от USI
пор /гjmp EE—RDY - прерывание от таймера
пор /гjmp ANA_COMP - прерывание от компаратора
пор /гjmp ADC - прерывание от АЦП
.org 20
/настройка порта В
RESET: пор
clr tmp
70
Глава 3
Листинг 3.1. Продолжение
out DDRB, tmp
out PORTB, tmp /обнулить порт В
clr tmp
Idi tmp, $0F /РВО-3 -выход
out DDRB, tmp
clr tmp
out PORTA, tmp /РАО-вход
out DDRA, tmp
/настройка программного стека
Idi tmp, low(RAMEND) /указатель стека
out S P, tmp /полный стек
;Начало программы
nStart: пор
/сброс всех значений
clr tmp
clr tmp2
clr tmp3
clr Hbt
clr Lbt
clr prgl
clr prg2
clr D
/вход в подпрограмму опроса АЦП
rcall adcn /подпрограмма АЦП
пор
rcall arifm /подпрограмма арифметических действий D
пор
/логические действия
cln
cis
cpi D, $04
breq vlev
nop
brge vprav
/равно 10. Ветка "Стоп"
nop
rcall stop /переход к подпрограмме "Останов"
nop
rjmp rr
/ветка "Влево"
vlev: nop
rcall timo
nop
rcall vlevo /переход к подпрограмме "Влево"
nop
Управление шаговым двигателем
71
Листинг 3d, Продолжение
rjmp rr
nop
/ветка ’’Вправо”
vprav: пор
rcall time
пор
rcall vpravo ; переход к подпрограмме ’’Вправо”
rr: пор
rjmp nStart /переход в начало программы
/Подпрограммы обработки данных
/Настройка adcn: пор пор clr awe: пор cpi brsh clr Idi АЦП tmp tmp, $04 ass tmp3 tmp3, ObOOOOOOOO напряжение питания, вход ADC0
out ADMUX, tmp3 / коммутация входов АЦП
clr clr Idi tmp2 tmp3 tmp2, ObllOOOlOl одиночное, запуск, 1/32
out ADCSR, tmp2 запуск АЦП на преобразование
/Сохранение nop данных АЦП задержка
nop nop nop nop nop nop nop in tmp2, ADCL /чтение младшего регистра данных АЦП
1 n tmp3, ADCH /чтение старшего регистра данных АЦП
mov mov mov mov mov mov inc rjmp r2, tmp2 r3, tmp3 r4, r2~ г 5, r3 гб, г4 г7, г5 tmp awe
;среднее арифметическое
ass: пор
72
Глава 3
Листинг ЗЛ Продолжение
clr г8
clc
add tmp2, r2
adc r9, г8
add tmp2, r4
adc r9, г8
add tmp2, гб
adc r9, г8
clc
Lsr г 9
ror tmp2 /младший ^айт
lsr г 9
ror tmp2
clr г 9
clc
add tmp3, гЗ
adc r9, r8
add tmp3, r5
adc r9, r8
add tmp3, г 7
adc r9, r8
clc
lsr r9
ror tmp3 /старший байт
lsr г 9
ror tmp3
nop
ret
/Подпрограмма перевода времени вправо -IFF
time: nop
Idi tmp, $01
sub tmp3, tmp
c Ln
Idi tmp, $FF
sub tmp2, tmp
cln
ret
/Подпрограмма перевода времени влево -3FF
timo: nop
idi tmp, $03
sub tmp3, tmp
cln
Idi tmp, SFF
sub tmp2, tmp
cln
ret
Управление шаговым двигателем
73
Листинг 3J* Продолжение
/Подпрограмма арифметических действий
arifm: пор
mov Hbt, tmp3 Lbt, tmp2 /старший разряд /младший разряд
mov
/проверка на cln плюс
cpi Hbt, $02
breq fku /равно
brge fku: nop plus /больше, равно
cis /сброс знака
cpi Lbt, $10
brge nop plus /больше, равно
rjmp plus: nop minus
Idi D, $04 /положительный результат
rjmp minus: nop gop
mov Hbt, tmp3 /старший разряд
mov Lbt, tmp2 /младший разряд
/проверка на cln cis минус
cpi Hbt, $01
brge nop cln nol /больше, равно
cis /сброс знака
cpi Lbt, $F6
brge nop minis: nop nol /больше, равно
Idi D, $08 /отрицательный результат
rjmp nol: nop gop
clr nop gop: nop ret D
/Подпрограмма vlevo: nop ’’Влево”. Полный шаг
cl r tmp
Idi tmp, $0A /десять шагов
clr cln par
74
Глава 3
Листинг ЗЛ. Продолжение
cis
sfg: nop
cpi par, $08
breq prn2
Idi ZH, high (2*progl)
Idi ZL, Low(2*progl)
Add LPM ZL, par
mov prgl, adr
out PORTB, prgl
rcall zader
inc par
rjmp sfg
prn2 : nop
clr cln par
dec tmp
brmi hkj
rjmp sfg
hkj : nop ret
/Подпрограмма ’’Вправо”. Полный шаг
vpravo: nop
clr tmp
Idi tmp, $0A /десять шагов
clr par
cln
cis
sld: nop
cpi par, $08
breq prv
Idi ZH, high (2 *prog2)
Idi ZL, Low(2*prog2)
Add ZL, par
LPM
mov prg2, adr
out PORTB, prg2
rcall zader
inc par
rjmp sld
prv; nop
clr par
cln
dec tmp
brmi nert
rjmp sld
Управление шаговым двигателем
75
Листинг 3.1. Продолжение
nert: пор
ret
/Подпрограмма ’’Стоп”
stop: пор
clr tmp
out DDRB, tmp
out PORTB, tmp /обнулить порт В
nop
ret
/Подпрограмма задержки включения
zader: nop
wdr
clr M
clr Y
Idi Y, $AF
cpi tmp3, $00
brne goo
Idi M, $01
add M, tmp3
nop
goo: nop
mov M, tmp3
dm: nop
cpi tmp2, $00
brne gog
Idi X, $01
add X, tmp2
nop
gog: nop
mov X, tmp2
dv: nop
wdr
nop
dx : dec Y
brpl dx
cln
dec X
brpl dv
cln
dec M
brne dm
rec
; Код
движения по
часовой стрелке
.org $200
progl:
76
Глава 3
Листинг 3.1. Окончание
. DB $08, $0А, $02, $06, $04, $05, $01, $09
;Код движения против часовой стрелки
.org $220
prog2:
.DB $09, $01, $05, $04, $06, $02, $0А, $08
.EXIT
Листинг ЭХ Шестнадцатеричный код управления шаговым двигателем
:020000020000FC
:1000000013С000000000000000000000000000001D
: 080010000000000000000000Е8
:100028000000552757ВВ58ВВ55275FE057BB5527DE
:100038005BBB5ABB5FED5DBF00005527442788278F
:10004800992700272227332766271AD0000064D073
:100058000000A894C894643031F000005CF40000FB
:10006800В4D000000BC000004FD000007AD00000D0
:1000780005С00000000040D000008DD00000DCCF9B
: 1000880000000000552700005430C8F4882780EC9D
:1000980087В94427882745ЕС46В9000000000000СЕ
:1000А8000000000000000000000044В185В1242ЕСВ
:1000В800382Е422С532С642С752C5395E4CF000019
:1000C80088248894420D981C440D981C460D981C51
:1000D8008894969447959694479599248894830D87
:1000E800981C850D981C870D981C88949694879564
:1000F8009694879500000895000051Е0851ВА89408
:100108005FEF451BA8940895000053E0851BA89451
:100118005FEF451BA89408950000982F042FA8941A
:10012800923009F034F40000С894003114F400004f
:1001380003C0000064E013C00000982F042FA894A7
:10014800C89491304CF40000A894C894063F24F455
: 100158000000000068Е00ЗС0000066270000000OFF
:100168000895000055275АЕ0ВВ27А894С8940000BA
:10017800B83049F0F4E0E0E0EB0FC895202D28BB3B
:100188002AD0B395F4CF0000BB27A8945A950AF05B
:10019800EECF00000895000055275АЕ0ВВ27А89429
:1001А800С8940000В83049F0F4E0E0E4EB0FC895DB
:1001B800302D38BB10D0B395F4CF0000BB27A894DE
:1001C8005A950AF0EECF000008950000552757BB56
: 1001D80058BB000008 950000A895772711 271’-гвА4В
: 1001Е80 08 03019F471E07 80F000 0000 0782 Е 1000''В
:1001F800403019F4A1E0A40F00000000A42F0OOO73
:10020800А89500001A95F2F7A894AA95C2F7A894л’
:060218007A9569F70895D4
:08040000080А020604050109С7
: 080440000901050406020АО 887
:00000001FF
Управление шаговым двигателем
77
В программе не используются прерывания, поэтому вектор преры-
вания пропускается и работа начинается с метки Reset. В микрокон-
троллере tiny26, в отличие от других устройство семейства tiny, АЦП
содержит только регистры ADSR, ADMUX, ADCH и ADCL. Регистр
ADMUX конфигурируется на источник опорного напряжения от вывода
напряжения питания. Поскольку питание схемы — не стабилизирован-
ное, то с переменного резистора так же снимается нестабилизированное
напряжение управления.
Мультиплексор АЦП коммутируется на ADC0 (вывод микрокон-
троллера РАО). Для нормального преобразования регистр ADSR конфи-
гурируется на деление тактовой частоты 4,194 МГц на 32. Выполняется
одиночное преобразование (это необходимо для того, чтобы данные ус-
пели пройти вычисления среднего арифметического). В результате че-
тырех считываний и выполнения среднего арифметического получается
надежный, взвешенный результат.
В процессе аналого-цифрового преобразования двоичное число D
вычисляется по уравнению D = 1 024 * Ubx / Uref. После считывания
и обработки аналоговых данных данные необходимо сместить так, что-
бы ноль (состояние “Стоп”) оказался по середине максимального значе-
ния. Для этого максимальные данные делят пополам, и в области поло-
вины выделяют значение ±10 единиц АЦП.
Поскольку опорное напряжение равно питающему, максимальное
значение АЦП составляет 1 024 единиц, половина — 512 единиц, а об-
ласть нуля — 512±10. Эти преобразования выполняют подпрограммы
time и rimo. В результате мы получаем значения для временных за-
держек, и программа переходит в режим “Влево”, “Вправо” или “Стоп”.
В этих режимах ШД выполняет определенные шаги, отрабатывая фазы
поворота вала.
Существует три различных последовательности возбуждения фаз:
• “активна одна фаза” — A/C/B/D;
• ’’активны две фазы” — AC/CB/BD/DA;
• последовательность “шаг - половина” — A/AC/C/BC/B/BD/D/DA.
Заметьте, что угол поворота ротора составляет 15°, но не 45°. По-
следовательности возбуждения фаз заданы в таблицах progl и prog2
в конце программы. В подпрограммах vlevo и vpravo используется
соответствующая таблица возбуждения. В промежутками между шага-
ми ШД вызывается подпрограмма задержки, использующая данные, по-
лученные в подпрограммах rime и rimo.
Одно из преимуществ микроконтроллера заключается в его полно-
ценном стеке, позволяющем реализовать вложенные вызовы подпро-
78
Глава 3
грамм (используется в подпрограммах vlevo и vpravo). По окончании
10 циклов вращения вала ШД программа переходит в начало.
Монтажная плата и конструкция
Монтажная плата (рис. 3.6) — двухсторонняя, однако на нижней
стороне платы можно использовать одностороннюю разводку (рис. 3.7),
а на стороне монтажа деталей выполнить разводку в виде соединения
проводов (рис. 3.8).
Рис. 3.6. Монтажная плата управления ШД
Рис. 3.7. Односторонняя разводка
Управление шаговым двигателем
79
Рис. 3.8. Разводка на стороне монтажа деталей
Переменный резистор R2 выносится за пределы платы и соединяет-
ся с платой проводами напрямую (тип СПЗ-33-32 АО25 ЗЗК).
На плате присутствуют мостовые драйверы обмоток LB1642. Ввиду
малой мощности ШД драйверы обмоток можно не охлаждать. Если вы-
бран мощный ШД, то к драйверам необходимо прикрепить радиаторы.
Для улучшения сцепки при вращении регулятор оборотов оснащен кол-
пачком от колеса игрушки.
Результирующая конструкция показана на рис. 3.9 и повторяет ди-
зайн, представленный на рис. 3.1.
Рис. 3.9. Конструкция схемы управления ШД
80
Глава 3
Перечень использованных деталей представлен в табл. 3.1.
Таблица 3.1. Перечень деталей, использованных в схеме управления ШД
Деталь Количество Примечание
ATtiny26 1 Корпус DIP
LB1642 2
Резистор пер. колпак 1
Светодиод 1
Корпус GB1 АА 1
GB1 АА 3
330mFx16V 1
Дисковод гибких дисков 5” 1 Шаговый двигатель
Шлейф 1
Конденсаторы 5
Панелька 20-конт. 2
Кварц 4,194 МГц 1
Макетница 1
Резисторы 2
Резисторы перем. 1
Обойма для удержания ШД изготовлена из элементов корпуса не-
рабочего дисковода и пластиковой скобы. Плата установлена на под-
ножки и скреплена с обоймой ШД. Обойма ШД также удерживает пе-
ременный резистор R2. От платы к ШД и батареям питания через разъ-
ем подключены провода. Фазировка обмоток ШД подбирается экспери-
ментально. При этом обмотки проверяются тестером на сопротивление
и помечаются. Фазировка выбирается во время работы конструкции.
Себестоимость конструкции составляет около $10. Устройство
включается сразу же поейе подачи питания. Основная его идея заклю-
чалась в проверке режимов работы ШД, однако данная конструкция
может быть использована и для решения других задач.
Глава 4
Вв||Й'||11|Д||Д
Современные шкафы-купе очень удобны и вместительны. К меха-
нические встраиваемым опциям автоматизации можно добавить осве-
щение. Универсальность позволяет применять рассматриваемое устрой-
ство в разных сферах (шкаф-купе, мини-бар, сейф и т.п.). Все ограниче-
ны только фантазией и финансовыми возможностями.
Для шкафа-купе автор разработал устройство по управлению осве-
щением (рис. 4.1). Схема его монтажа внутри шкафа (вид сверху) пока-
зана на рис. 4.2.
Рис. 4.1. Устройство управления освещением внутри шкафа-купе
На плате управления расположены два датчика Холла, реагирую-
щих на магнитное поле, а на раздвижных дверях напротив датчиков
(в закрытом состоянии дверей) — магниты. Как только одна из дверей
открывается, схема управления включает освещение шкафа, и активи-
зируется таймер отсчета времени. Если дверь забыли закрыть, то через
полчаса освещение отключается (во избежание пожара из-за долго
82
Глава 4
включенной лампы). Впрочем, исходя из житейского опыта, автор до-
полнил схему “женской” логикой.
Вид сверху
Рис. 4.2. Размещение устройства внутри шкафа (вид сверху)
Как выяснилось, нашим дамам после одевания необходимо попра-
вить одежду, прическу и косметику. Практически все современные
шкафы-купе оснащены зеркалом во весь рост, которое находится на ли-
цевой стороне двери. Исходя из женской логики, после закрывания шка-
фа свет не должен сразу же гаснуть, а должен освещать зеркало еще
в течение 30 минут. Для включения света достаточно закрыть и снова
открыть шкаф.
Предложенная схема не является последним вариантом, поскольку
женская логика противоречит противопожарной безопасности. Долгая
эксплуатация осветительного прибора в шкафу может привести к возго-
ранию из-за слабой вентиляции лампы. Одно из простых решений про-
блемы — заблокировать работу освещения на час после долгой работы
или добавить вентиляцию лампы.
В основе схемы лежит микроконтроллер AT tinyl 5 компании Atmel
[8], оснащенный флэш-памятью на 1 Кбайт, памятью EEPROM на 64
байт, шестью линиями ввода-вывода, встроенным RC-генератор, АЦП,
аналоговым компаратором и двумя таймерами-счетчиками.
Автоматическое освещение шкафа
83
Датчик Холла — распространенный элемент в радиоэлектронике
и промышленной технике. Наиболее популярные на территории СНГ
и дешевые варианты перечислены в табл. 4.1.
Таблица 4.1. Датчики Холла
Название Производитель Корпус Питание, В Цена, $
A1373LKB-T PBF ALLEGRO 2,5..3,5 3,5
A1374LKB-T PBF ALLEGRO 2,5.. 3,5 4,3
A1392SEHLT-T PBF ALLEGRO DFN6 2,5..3,5 2,0
A3340LUA-T PBF ALLEGRO 2,5..3,5 2,1
HALL IC DN6581 0,6
HALL IC DN6582 0,9
HALL IC HW300A-D HONEY HALL-1 1,7
HALL IC TY320 ZHONG HALL-2 0,3
HALL IC VHE-101B HALL-2 0,8
SR13C-A1 HONEY SR13 series 6,5
SR13C-A1 PBF HONEY 6,5
SR13R-A1 HONEY SR13 series 7,0
SR3B-A1 HONEY SR3 series 19,0
SS41 PBF HONEY TO-92_4.0x3.0 3,8..24 1,3
SS411APBF HONEY TO-92_4.0x3.0 3,8..24 1,2
SS413A PBF HONEY TO-92—4.0x3.0 3,8..24 1,3
SS42R HONEY TO-92-4pins 3,8..24 2,8
SS441APBF HONEY TO-92_4.0x3.0 3,8..24 1,2
SS46 HONEY TO-92_4.0x3.0 3,8..24 1,5
SS461APBF HONEY TO-92—4.0x3.0 3,8..24 1.5
SS466A HONEY TO-92—4.0x3.0 3,8..24 1,3
SS466A PBF HONEY TO-92—4.0x3.0 3,8..24 1,3
SS49 PBF HONEY TO-92-4.0x3.0 3,8..24 1,3
SS495A PBF HONEY TO-92-4.0x3.0 3,8..24 3,5
SS495A1 PBF HONEY T0-92_4.0x3.0 3,8..24 4,6
SS495A2 HONEY TO-92_4.0x3.0 3,8..24 2,9
SS495B PBF HONEY TO-92_4.0x3.0 3,8..24 1,9
SS496A PBF HONEY TO-92_4.0x3.0 3,8..24 3.1 i
SS496A1 PBF HONEY TO-92_4.0x3.0 3,8..24 4,1
SS496A1-T3PBF HONEY 3,8..24 I 3,2
SS496B HONEY TO-92_4 0x3.0 3,8..24 I 2,5
84
Г лава 4
Таблица 4.1. Окончание
| Название Производитель Корпус Питание, В Цена, $
SS49E PBF HONEY TO-92_4.0x3.0 ' 3,8..24 1,5
SS50AT HONEY SOT89 ; 3,8..30 1,3
SS511AT PBF HONEY SOT89 3,8..30 2,6
SS513AT HONEY SOT89 3,8..30 1,5
SS51T PBF HONEY SOT89 ; 3,8..30 1,5
SS526DT HONEY SOT89 | 3,8..30 3,8
SS541AT HONEY SOT89 ! 3,8..30 1,6
SS543AT PBF HONEY SOT89 | 3,8..30 1,5
SS549AT PBF HONEY SOT89 I 3,8..30 1,4
SS552MT HONEY SOT89 I 3,8..30 5,4
SS561AT PBF HONEY SOT89 3,8..30 1,6
SS566AT HONEY SOT89 | 3,8..30 1,4
SS59ET PBF HONEY SOT89 j 3,8..30 1.5
При выборе датчика автор исходил из следующих требований:
• напряжение питание датчика — около 5 В;
• датчик должен иметь корпус, монтируемый вертикально по отно-
шению к плате;
• чувствительность датчика должна быть средней, чтобы фоновые
магнитные поля не влияли на его работу датчика; при этом чувстви-
тельность магнитного поля должна обеспечивать работоспособ-
ность при удаления магнита на расстояние до 3 см.
Исходя из этих требований, был выбран датчик SS466A [13], не
имеющий ограничений по напряженности магнитного поля. Структура
датчика Холла показана на рис. 4.3.
Магнитное поле улавливается датчиком на выпуклой повер/хности
микросхемы, после чего сигнал усиливается относительно фонового маг-
нитного поля, и срабатывает триггер, который открывает выходной тран-
зистор, включенный по схеме с открытым коллектором. Максимальный
ток коллектора выходного транзистора составляет 10 мА.
Схема выходного каскада с открытым коллектором дает преимуще-
ство при начальной установке микроконтроллера. Поскольку микрокон-
троллер в начале программы обнуляет состояние портов ввода-вывода,
то при наличии подключаемого на вход цифрового устройства может
возникнуть короткое захмыкание. С транзистором, включенным по схеме
открытого коллектора, это не произойдет. Более того, для работоспо-
Автоматическое освещение шкафа
85
собности схемы необходимо подтянуть резисторы в порту ввода-вывода
микроконтроллера.
vs(+)
Общий (-)
Выход
открытый
коллектор
Рис. 4.3. Структурная схема датчика Холла
Принципиальная схема
Принципиальная схема устройства представлена на рис. 4.4. Два
датчика Холла установлены на плате. Если датчик отдаленной двери не
реагирует на магнит, то его необходимо вынести и установить как пока-
зано на рис. 4.2 (вариант 2).
В случае однодверного шкафа-купе или бара необходимо закоро-
тить вывод 2 микроконтроллера на “землю” (выводы 2 и 4). Для вклю-
чения “женской” логики существует перемычка от вывода 3 микрокон-
троллера на общий провод.
Датчик Холла активен, когда магнит находится напротив датчика.
Схема питается от сети 220 В. Общее питание схемы отключается кноп-
кой S1. Ток потребления схемой управления (около 30 мА) регулирует-
ся реактивным сопротивлением R2, С4. Диод D2 выпрямляет входное
переменное напряжение, а конденсатор С1 фильтрует и сглаживает
пульсацию выпрямленного напряжения. Стабилитрон D1 стабилизирует
напряжение на уровне 5 В. Для сброса микроконтроллера во время
включения питания установлена цепочка С5, R4. Сброс можно также
осуществлять извне, подключив параллельно конденсатору С5 кнопку.
Реакция на открытие дверей фиксируется датчиками Холла 0X1
и 0X2. Как только датчик попадает в магнитное поле, выходной транзи-
стор датчика замыкается на “землю”. На выходах микроконтроллера во
время конфигурирования портов резисторы подтягиваются программой
к “плюсу” питания. В результате выходной транзистор датчика Холла на-
гружен резистором порта микроконтроллера. Микроконтроллер отслежи-
вает уровень напряжения на входе порта. Когда датчик Холла не активиро-
ван, выходной транзистор размыкает цепь и на входе порта микроконтрол-
лера появляется единичный уровень.
86
Глава 4
Рис. 4.4. Принципиальная схема устройства управления освещением
Микроконтроллер управляет включением ламп через порт РВО. При
единичном уровне на РВ1 или РВ2 включается светодиод LED1 и опто-
пара OKI (выполняет роль гальванической развязки и по сигналу мик-
Автоматическое освещение шкафа
87
роконтроллера включает семистор Т1). Семистор Т1 подает питание
220 В на лампу освещения. Для того чтобы при включении лампы не
возникало помех в сети, установлен фильтрующий конденсатор СЗ. Ес-
ли ламп несколько, то они подключаются параллельно контактам LSP1
и LSP2. При этом суммарная мощность не должна превышать 40 Вт.
Программа
Блок-схема алгоритма работы устройства показана на рис. 4.5.
Рис. 4.5. Алгоритм работы устройства управления освещением
В начале программы конфигурируются порты. В случае с однодвер-
ным шкафом датчик Холла 2 задается, как постоянно активный. Как
только программа опознала количество дверей, опрашиваются датчики
Холла. Для однодверного варианта активный датчик Холла — 0X1. На
выходах РВ1--РВ4 подтягиваются резисторы нагрузки.
88
Глаза 4
В режиме ожидания оба датчика Холла активны. По нулевому
уровню на входах РВ1 и РВ2 программа определяет, что обе двери за-
крыты. Если один из датчиков перестает быть активным (на выходе
датчика — единичный уровень), то программа переходит к этапу вклю-
чения нагрузки, активизируется прерывание от таймера отсчета 30 ми-
нут, и по окончанию отсчета лампы отключаются.
Пока таймер работает независимо от микроконтроллера, программа
реализует временную задержку 1 с. Если дверь закрыли, то лампа будет
отключена, если же забыли закрыть, то таймер отключит лампу, отсчи-
тав 30 минут. Для включения ламп достаточно закрыть и открыть дверь
шкафа.
Отсчет таймера продолжается, даже если лампа выключена. Это не-
обходимо для напоминания о пожарной безопасности. В том случае ес-
ли дверь опять была открыта, лампа включится, однако таймер зашиты
уже отсчитает допустимое время эксплуатации и принудительно отклю-
чит лампу.
Для отсчета времени используется встроенный в микроконтроллер
таймер. Поскольку его ресурс ограничен, то в программе используется
коэффициент i, определяющий накопление полных циклов работы тай-
мера. Как только коэффициент принимает необходимое значение, про-
грамма переходит к этапу отключения лампы.
Программа на ассемблере представлена в листинге 4.1, а шестна-
дцатеричный код — в листинге 4.2. Соответствующие файлы сире . asm
и сире. hex находятся на прилагаемом к книге компакт-диске в папке
Программы\04 - Шкаф.
Листинг 4/Ь Программауправления освещением в шкафу-куле
.include "C:\Program Files\Atmel\AVR Studio\Appnotes\tnl5def.
inc”
/Автор: Кравченко А.В.
/Дата: 5.03.2008
/Версия: 1.0.2
/Имя файла: Сире.asm
/Микроконтроллер: ATtinyl5
/Тактовая частота: 1.бмГц
/Питание: стабилизированное 5 В
.list
* * * * •* ’ Регисг гровые переменные
def M = rl7 / Рабочий регистр
def Y = rl8 / Рабочий регистр
def X = rl9 / Рабочий регистр
def tmp = r20 / Рабочий регистр
def cmpl = r21 / Рабочий регистр
Автоматическое освещение шкафа
89
Листинг 4Л. Продолжение
. def tmp2 = r22 / Рабочий регистр
. def tmp3 = r23 / Рабочий регистр
. def tmp4 ~ r24 / Рабочий регистр
. def tmp5 = r25 / Рабочий регистр
. def tmp 6 = r26 / Рабочий регистр
. def i = r27 / Рабочий регистр
. cseg .org 0 r jmp nop nop nop r jmp nop nop nop nop RESET TIMER1 /гjmp EXT_INT0 - внешнее прерывание /гjmp EXT_PIN - прерывание на выводах /гjmp TIMER1—COMPA - совпадение А, таймер 1 / Переполнение таймера 1 /гjmp TIME_OVFO - прерывание от таймера /гjmp EE_RDY - прерывание от таймера /гjmp ANA_COMP - прерывание от компаратора /гjmp ADC - преобразование АЦП завершено
.org 20
;настройка порта В
RESET: пор
clr tmp
out DDRB, tmp
out PORTB, tmp /обнулить порт В
clr tmp
Idi tmp, $0F / PBO, PB1,PB2,PB3,?B4 - выходы
out DDRB, tmp
/обшее разрешение прерывания
; sei
/Начало программы
/сброс всех значений
clr i
/ Н а ч ал о пр о г ра ммы
nStart: nop
clr M
clr Y
clr X
clr tmp
clr tmpl
clr tmp 2
clr tmp3 /магнит2
clr tmp4 /магнит!
clr tmp 5 /"женская" логика
clr tmp 6 /
90
Глава 4
Листинг4,1.Продолжение
Idi tmp, $1Е /подтягиваем на выходах порта 1
out DDRB, tmp nop /начало программы
in tmp, PORTB /чтение порта
clr tmpl /очистка регистра
/сколько дверей? sbis PINB, 4 /пропустить, если не 1
rjmp qqO /переход на метку
nop idi tmp3, $03 /одна дверь, магнит2 активен
rjmp qql /переход на метку
qqO: nop clr tmp3 /магнит2 не активен
qql : nop /женская логика sbis PINB, 3 /пропустить, если не 1
rjmp qq2 /переход на метку
nop Idi tmp5, $05 /"женская" логика активна
rjmp qq3 /переход на метку
qq2 : nop clr tmp5 /"женская" логика не активна
qq3: nop /проверяем открыта дверь? in tmp, PORTB /чтение порта
clr tmpl /очистка регистра
/первая дверь открыта? sbic PINB, 2 /пропустить, если не 1
rjmp qq6 /переход на метку
nop /проверка условия количества дверей
cl z cpi tmp3, $03 /установлен магнит2?
breq qq6 /вторая дверь открыта? sbic PINB, 1 /пропустить, если не 1
rjmp qq 6 /переход на метку
nop rjmp poff /переход на метку "Выключить"
nop qq6: nop sbi porto, 0 /включить свет
Idi tmp,$04 out TIER,tmp /установка срлага при. переполнении
Idi tmp,$04
Автоматическое освещение шкафа
91
Листинг 4.1* Продолжение
out Idi out TIMSK,tmp tmp,$8F TCCR1, tmp /разрешаем прерывания по /переполнению от Т1 /настройка режима #10001111 /вывод ОС1А, линия вывода (?31)
nop
;выполнение условия ’’женской" логики (включение 30 минут)
clz
cpi tmp5, $05 /установлена ’’женская” логика?
brne qq9
rcall zad30 /подпрограмма включения света
nop
qq9: nop
; нет ’’женской” логики
sbi portb, 0 /включить свет
rcall zadl /задержка 1 секунда
nop rjmp nop nStart ;возвращенке в начало
;выключение света
pof f: nop
cbi portb, 0
rcall zadl /задержка 1 секунда
nop rjmp nStart /возвращение в начало
;подпрограмма прерывания таймера
TIMER1: nop ;вектор прерывания
nop
inc I
clz
cpi i, $FF
breq yu
/настройка таймера Т1
/работа таймера Т1 с максимальным предварительным делением
Idi tmp,$04
out TIER,tmp /установка флага при переполнении
Idi tmp,$04
out TIMSK,tmp /разрешаем прерывания по
/переполнению от Т1
Idi tmp,$8F /настройка режима #10001111
our TCCR1, tmp /вывод ОС1А, линия вывода (?В1)
rjmp ррр
/a : nop
clr i
cbi porrb, 0
юр: nop
reti /выход из подпрограммы прерывания
92
Глава 4
Листинг 4Л* Продолжение
;подпрограмма i задержки "30 минут"
zad30: пор Idi tmp6, $1E /задаем 30 минут
ert: nop Idi tmp, $3C ;задаем 60 с
edc: nop rcall zadl /подпрограмма "1 с"
clz dec tmp /уменьшить секунды
brne ssw /переход по не разно (Z)
rjmp ssw: nop rjmp ttw edc ;цикл условия
ttw: nop clz dec tmp6 /уменьшить минуты
brne ss /переход по не равно (Z)
rjmp ss: nop rjmp tt ert /цикл условия
tt: nop ret ;подпрограмма задержки /выход из подпрограммы "1 с"
zadl: nop wdr Idi dm: nop Idi Idi goq: nop dv: nop wdr Idi dx: nop Idi dl : nop nop nop cln inc nop nop nop nop brpl M, $A1 X, $71 Y, $31 Y, $31 tmp, $05 tmp dl
Автоматическое освещение шкафа
93
Листинг 4.1* Окончание
cln
пор
inc Y
brpl dx
cln
inc X
nop
brpl dv
cln
inc M
nop
brpl dm
nop
ret
Листинг 4,2. Шестнадцатеричный кед управления освещением'
: 020000020000FC
: 10000O0O13C0000O0O0000005DC0000000000O0OOO
: 020010000000ЕЕ
:100028000000442747ВВ48ВВ44274FE047BBBB27DA
:1000380000001127222733274427552766277727СВ
:1000480088279927АА274ЕЕ147ВВ000048В35527С0
:10005800B49B03C0000073E002C0000077270000D3
:10006800В39В03С0000095Е002С000009927000080
:1000780048B35527B29909C000009894733029F005
:10008800В19903С0000015С000000000С09А44Е008
:1000980048BF44E049BF4FE840BF000098949530FE
:1000А80011F41ED000000000C09A2FD00000C0CF6D
:1000B80000000000C09829D00000BACF000000005E
:1000C800B3959894BF3F39F044Е048BF44Е049BF36
:1000D8004FS840BF03C00000BB27C0980000189538
:1000Е8000000АЕЕ100004CE300000FD098944A9560
:1000F80009F402C00000F8CF00009894AA9509F40A
:1001080002C00000EFCF000008950000A89511ЕА92
:100il80000003IE 721Е300000000А89521Е300007А
:1001280045Е0000000000000А8944395000000008Е
:1001380000000000B2F70000A894000023957AF7A9
:10014800А8943395000042F7A8941395000002F78D
:040158000000089506
:00000001FF
Монтажная плата
Монтажная плата представлена на рис. 4.6.
Рис. 4.6. Монтажная плата
Глава
Автоматическое освещение шкафа
95
Поскольку схема несложная, она может быть выполнена на одно-
стороннем текстолите размерами 150x30 мм. Для проверки автор собрал
схему на макетной плате. Позиции установки датчиков Холла можно
высверлить по периметру платы заранее. На месте установки платы
управления следует отломать от платы периметр выносного датчика,
припаять три провода соединения схемы, а датчик переместить на необ-
ходимое расстояние. Напротив датчика устанавливается магнит (ис-
пользуется в мебельной промышленности для фиксации дверей). Пла-
стина магнита приклеивается к двери двухсторонним скотчем (приме-
няется для наклейки зеркал). Правильность монтажа можно проверить
при закрытой двери. Магнитное поле повлияет на датчик, на выходе
датчика (вывод OUT) будет нулевой уровень (0 В относительно общего
провода).
| Внимание!
Схема не имеет гальванической развязки! Настройка и проверка во время включе-
ния в сеть 220 В должна выполняться по всем правилам техники безопасности.
Нельзя прикасаться к любым элементам схемы незащищенной поверхностью тела!
Устройство нельзя настраивать или эксплуатировать в условиях повышенной
влажности.
Для выбора функций платы с однодверным шкафом или “женской”
логики на монтажной плате предусмотрены позиции для установки пе-
ремычек с выводом 2 или 3 микроконтроллера.
Используются детали, в основном, импортного производства:
• Rl, R4, R5 — 0,125 Вт;
• R3 — 0,5 Вт;
• R2 — 2 Вт;
• С1 —470 мкФ, 16 В;
• С2, С5 —0,1 мкФ, 16 В;
• СЗ — 0,1 мкФ, 300 В;
• С4 — 0,47 мкФ, 300 В;
• стабилитрон Д815А — в металлическом корпусе;
• датчик Холла SS466A — в корпусе То-92 4x3;
• оптопара TLP3063;
• семистор ВТ 136-600;
• светодиоды — любые на 5 мА;
• диод D2 — любой на ток 1 А и обратное напряжение 300 В;
• микроконтроллер ATtiny 15L-1 PI;
• галогенная лампа JCDR — 35 Вт, 220 В с ультрафиолетовым фильт-
ром;
• цоколь для лампы — CL121 G6.35;
96
Глава 4
• предохранители Fl, F2 — на 1 А.
В случае применения нескольких нагрузок суммарная мощность
подключаемых ламп — не более 40 Вт. Себестоимость устройства со-
ставляет около 10 евро.
Эксплуатация устройства
После установки платы и датчиков при постоянной эксплуатации
следует нажать кнопку “Питание” и оставить устройство в режиме ожи-
дания. Как только дверь шкафа открывается, включается подсветка. Ко-
гда дверь закрывают, подсветка отключается. Если дверь забыли за-
крыть, то через 30 минут подсветка выключится автоматически. Для по-
вторного включения света можно воспользоваться одним из двух вари-
антов:
• закрыть и открыть дверь шкафа;
• вынести небольшую кнопку сброса микроконтроллера, по нажатию
которое включается свет (требуется небольшая доработка устройст-
ва).
В этохм случае необходима эффективная вентиляция лампы. Можно
также установить пиролитический детектор, который реагирует на при-
сутствие человека, однако для этого потребуется изменить схему и про-
грамхму.
Глава 5
в помещении
Воздух для людей — основа существования. Стабильность темпе-
ратуры, влажности, свежий воздух всегда были спутниками здорового
образа жизни. На современном этапе система вентиляции — неотъем-
лемая часть помещений. Правильно управлять вентилятором поможет
микроконтроллер с хорошо развитыми функциями. Возможность пере-
программирования микроконтроллера позволяет использовать плату
в различных устройствах.
Когда человек входит затемненное помещение, то обязательно
включает свет, или же свет проникает через открытую дверь. Фотодат-
чик фиксирует изменение освещенности, и автоматически включается
вентиляция. После того как свет выключили, автомат продолжает рабо-
ту вентилятора еще полчаса (или другое установленное время). Тем са-
мым помещение дополнительно проветривается. Устройство может реа-
гировать в темноте на присутствие человека. Для этого фотодатчик
должен быть пиролитическим [14].
Примерный дизайн вентилятора в сборе с устройством управлением
представлен на рис. 5.1, а результат, который получился у автора, — на
рис. 5.2.
Вентилятор крепится к стене, а устройство управления размещается
рядом, чтобы фотодатчик фиксировал освещенность помещения.
Структура схемы (рис. 5.3) основана на усилении сигнала с фото-
датчика усилителем, встроенным в микроконтроллер. Далее сигнал пре-
образуется в цифровой 10-разрядный код и сравнивается в программе
с установленным значением. При совпадении микроконтроллер с помо-
щью порта ввода-вывода через опторазвязку включает семистор. Вклю-
чение семистора осуществляется при нулевом напряжении сети. При
открытом семисторе двигатель вентилятора начинает работать и про-
ветривать помещение. Время запаздывания выключения семистора ус-
танавливают DIP-переключатели.
Схема (рис. 5.4) собрана на микроконтроллере tiny26 [15], оснащен-
ном флэш-памятью на 2 Кбайт, памятью EEPROM на 128 байт, памятью
98
Глава 5
SRAM на 128 байт, 16 линиями ввода-вывода, встроенным RC-генсра-
тором, 10-разрядным АЦП, 11 входами АЦП, входным усилителем
АЦП, аналоговым компаратором и двумя таймерами-счетчиками.
Рис. 5.1. Примерный дизайн вентилятора
В представленной схеме напряжение 220 В понижается с помощью
гасящих резисторов, в качестве которых используется реактивное со-
противление конденсаторов и их собственный ток утечки. Для выпол-
нения требований техники безопасности в экстренных случаях установ-
лен предохранитель по питанию вентилятора. Предохранитель устанав-
ливается в специальную колодку на плате или в выносной специализи-
рованный корпус.
Диод D1 предотвращает попадание постоянной составляющей в ка-
нал измерения детектора нуля. Диоды D1 и D2 ограничивают входное
напряжение на уровне 10,5 В. Микроконтроллер требует стабилизиро-
ванного питания, поэтому диоды D2 и D3 выполняют роль ступенчатого
стабилизированного источника питания.
Управление вентилятором в помещении-
99
Рис. 5.2. Пример вентилятора в сборе с устройством управления
запаздывания
Рис. 5.3. Структурная схема устройства управления вентилятором
100
Глава 5
Рис. 5.4. Принципиальная схема устройства управления вентилятором
Управление вентилятором в помещении
101
Поскольку микросхема микроконтроллера выполнена в корпусе
SOIC, то программирование выполняют через разъем Л. При этОхМ пи-
тание +5 В необходимо подать на выводы 5 и 6 микроконтроллера. Для
возврата программы в начало используют кнопку сброса. Для стабиль-
ной работы программы и точности отсчета микроконтроллер тактируют
от кварцевого резонатора.
Перед установкой схемы в корпус вентилятора необходимо выбрать
с помощью DIP-переключателей время задержки выключения семисто-
ра. При включении одновременно нескольких позиций время суммиру-
ется.
Фоторезистор реагирует на изменение освещенности. Поскольку он
установлен в плече делителя напряжения, то при изменении освещенно-
сти помещения изменяется напряжение на делителе. Необходимую чув-
ствительность дает усилитель сигнала в микроконтроллере. Коэффици-
ент усиления 20 позволяет усилить изменение напряжения до необхо-
димого уровня.
Для включения семистора по нулевому току присутствует детектор
нуля сети. Для корректировки точности выбора нуля сети необходима
ручная настройка детектора. Для защиты микроконтроллера от перегру-
зок по сети существует оптическая развязка силовых и слаботочных
элементов с помощью оптосемистора. Оптосемистор управляет семи-
стором, тем самым включая силовой элемент.
В схеме использованы, в основном, детали импортного производст-
ва:
• микроконтроллер AT tiny26-16SI — корпус SOIC; любая частота;
• фотодатчик FW300 — 150 кОм, 90 мВт;
• семистор ВТ 136-600;
• оптосемистор тосЗОбЗ — корпус DIP;
• выпрямительный мост КВР06;
• кварцевый резонатор на 4 МГц;
• стабилитрон D2 — Д815Г в металлическом корпусе;
• стабилитрон D3 — КС156А в стеклянном корпусе.
Если стабилитрон D2 будет сильно греться, то необходимо увели-
чить сопротивление R2 и установить корпус D2 на радиатор. Остальные
детали — отечественного производства. Предохранитель выбирается,
исходя из мощности вентилятора. Мощность резистора R8 — 0,5 Вт;
R2 — 2 Вт; остальные резисторы — 0,125 Вт. Индуктивность L1 можно
намотать на корпусе резистора (например, МЛТ-0,5-1 мОм, 350 витков
ПЭЛ-0,001).
102
Глава 5
Программа
Блок-схема алгоритма работы устройства показана на рис. 5.5.
Рис. 5.5. Алгоритм работы устройства управления вентилятором
Управление вентилятором в помещении
103
Программа начинается с настройки порта ввода-вывода. При этом
конфигурируются входные и выходные сигналы. Кроме того, для опре-
деления на входе единичного уровня необходимо подтянуть входные
резисторы. Для расширения функций и возможностей устройства с по-
мощью DIP-переключателей можно запрограммировать различные ре-
жимы работы (в данной программе выбраны простые режимы запазды-
вания по времени). Позиции включения DIP-переключателя рассчитаны
на запаздывание после уменьшения света до минимума на одну минуту,
пять минут, 10 минут, 20 минут, 30 минут и один час. Отсчет времени
реализован программно.
В начале программы опрашиваются DIP-переключатели. В случае
нажатия одновременно нескольких DIP-переключателей регистр сумми-
руется. По умолчанию выполняется подпрограмма включения при ос-
вещенности помещения и выключения через полчаса после уменьшения-
освещенности до минимума. Уровень освещенности проверяется каж-
дые 2,5 мс. Если помещение освещено, то программа переходит к этапу
включения вентилятора.
Проверяется нулевое состояние сети и включается семистор, после
чего опять проверяется освещенность помещения. В том случае, если
’ освещенность упала до минимума, запускается таймер отсчета времени
в соответствии с комбинацией DIP-переключателей. Программа перехо-
дит в подпрограмму отсчета количества минут.
Минуты устанавливаются как сумма регистров DIP-переключате-
лей. В этот момент вентилятор работает независимо от освещенности
комнаты, и отсчитывается время. По окончании отсчета семистор вы-
ключает вентилятор. Программа переходит в начало и выполняется за-
ново.
Программа на ассемблере представлена в листинге 5.1, а шестна-
дцатеричный код — в листинге 5.2. Соответствующие файлы vencil4 .
asm и ventil4 .hex находятся на прилагаемом к книге компакт-диске
в папке Программы\05 - Вентилятор.
Листинг 5.1 х Программа управления вентилятором
.include "C:\Program Files\Atmel\AVR StudicAAppnotes\tn26def.
inc"
/Автор: Кравченко А.В.
;Дата: 25.09.2007
;Версия: 1.1.2
/Имя файла: Ventil.asm
;Микроконтроллер: AVR tiny26.
/Тактовая частота: 4мГц
104
Глава 5
Листинг 5.1. Продолжение
;Питание: стабилизированное 5 3
.list
. def digl = rl8 ; Рабочий регистр
. def dig2 = r20 ; Рабочий регистр
. def tmp = r21 ; Общий регистр
. def tp = r22 ; Регистр времени
. def tmpl = Г16 ; Рабочий регистр
. def tmp 2 = r!9 ; Рабочий регистр
.def tmp3 = r2 6 ; Рабочий регистр
. def tmp4 = r27 ; Рабочий регистр
. def X = r25 ; Рабочий регистр
. def Y = rl7 ; Рабочий регистр
. def M = r23 ; Рабочий регистр
. def tt2 = r24 ; Рабочий регистр
. def dip = r28 ; Рабочий регистр
. def coc = r2 9 ; Рабочий регистр
. cseg . org 0 rjmp nop RESET ;rjmp ЕХТ_ INTO - прерывание не используется
nop ;rjmp ЕХТ_ PIN - прерывание не используется
nop ;rjmp TIME _СМРА - прерывание от таймера
nop ;rjmp TIME —СМРВ - прерывание от таймера
nop ;rjmp TIME —OVF1 - прерывание от таймера
nop ;rjmp TIME _OVFO - прерывание от таймера
nop ;rjmp UCI_ STRT - прерывание от USI
nop ;rjmp UCI_ OVF - прерывание от USI
nop ;rjmp EE—RDY - прерывание от таймера
nop ;rjmp ANA_ СОМР- прерывание от компаратора
nop ;rjmp ADC - прерывание от АЦП
.org 20 ;настройка порта В
RESET: nop
clr tmp
out DDRB, tmp
out PORTB, tmp /обнулить порт В
clr tmp
Idi tmp, $08 ;РВЗ - выход
out DDRB, tmp
Idi tmp, 0Ы1111100 /РА2-РА7 резисторы на вход
out PORTA, tmp ;подтяжка А
out DDRA, tmp
;настройка программного стека
Управление вентилятором в помещении
105
Листинг 5,1* Продолжение
Idi tmp, low(RAMEND) /указатель стека
out SP, tmp
;Начало программы
/сброс всех значений
пор
clr digl / Рабочий регистр
clr dig2 / Рабочий регистр
clr tmp / Общий регистр
clr tp / Регистр времени
clr tmpl / Рабочий регистр
clr tmp2 ; Рабочий регистр
clr tmp3 / Рабочий регистр
clr tmp4 / Рабочий регистр
clr X / Рабочий регистр
clr Y / Рабочий регистр
clr M / Рабочий регистр
nStart: rcall nop DIP ;проверка DIP
пор
;темно-свет
Idi tmpl, ObOOOOlOll /внутренний источник, вход
;ADC1, дифференциальный
rcall adcn /проверка АЦП1
nop rcall zlms ;задержка 2,5 мс
nop
/проверка уровня фотодатчика, темно-свет
Idi Idi digl, $18 dig2, $00
/неполная операция вычитания двухбайтных чисел
cis /сброс флага знака
sub tmp2, dig2 /вычитаем табличное значение и
/нижний уровень
brpl wwr
dec digl /заем от старшего байта
wwr: nop
cis /сброс флага знака
sub tmp3, digl /вычитаем табличное значение и
/верхний уровень
brmi uuu /если минус, то выключить семистор
rjmp ert
uuu: nop
clr digl
cln
106
Глава 5
Листинг 5Л. Продолжение
rjmp nStart nop ert: nop rcall UOon /проверка нуля сети fStart: nop ;свет-темно Idi tmpl, ObOOOOlOll /внутренний источник, /вход ADC1, дифференциальный rcall adcn nop rcall zlms /задержка 1 мс nop /проверка уровня фотодатчика, темно-свет Idi digl, $02 Idi dig2, $66 /неполная операция вычитания двухбайтных чисел cis /сброс флага знака sub dig2, tmp2 /вычитаем табличное значение и /нижний уровень brpl wwe dec digl /заем от старшего байта wwe: пор cis /сброс флага знака sub dig2, tmp3 /вычитаем табличное значение и /верхний уровень brmi uuul /если минус, то выключить семистор rjmp ertl uuul: пор rjmp fStart пор ertl: пор rcall time nop rcall UOof /проверка нуля сети пор rjmp nStart
/Подпрограмма DIP: пор in clr sbis r jmp si : nop sbis r jmp опроса DIP tmp, PORTA tp PINA, 2 qqO PINA, 3 qql /очистка регистра /пропустить, если не нажат DIP1 /пропустить, если не нажат DIP2
Управление вентилятором в помещении
107
Листинг 5.1, Продолжение
s2 : nop sbis rjmp PINA, 4 qq2 /пропустить, если не нажат DIP3
s3 : nop sbis PINA, 5 /пропустить, если не нажат DIP4
s4 : rjmp nop sbis qq3 PINA, 6 /пропустить, если не нажат DIP5
s5 : rjmp nop sbis qq4 PINA, 7 /пропустить, если не нажат DIP6
s6 : rjmp nop clr clz cp qq5 tmp tp, tmp /сброс флага нуля /проверяем, были ли i чажаты DIP
fff: qqO : qql: qq2: qq3: qq4 : qq5: breq rjmp ПОР Idi rjmp nop nop Idi add rjmp nop Idi add rjmp nop Idi add rjmp nop Idi add rjmp nop Idi add rjmp nop Idi add rjmp fff ex tp, $1E ex tmp, $01 tp, tmp SI tmp, $05 tp, tmp S2 tmp, $0A tp, tmp S3 tmp, $14 tp, tmp S4 tmp, $1E tp, tmp S5 tmp, $3C tp, tmp S6 /по умолчанию 30 минут /к регистру добавить 1 /к регистру добавить 5 /к регистру добавить 10 /к регистру добавить 20 /к регистру добавить 30 /к регистру добавить 60
108
Глава 5
Листинг 53* Продолжение
пор
ех: пор
mov dip, tp
ret
/Подпрограмма проверки перехода через 0 переменного напряжения
UOon: пор
dds: пор rcall Zlms пор Idi tmpl, ОЬООООНОО /внутренний источник
/вход ADC2, вход АЦП
rcall пор cis cpi breq rjmp adcn tmp3, weg dds /проверка АЦП2
$00 /сброс знака /проверка менее 100 В
weg: nop cpi tmp2, $0A ;проверка больше 10 В
brsh clr Idi out nop ret dds tmp4 tmp4, PORTB, ObOOOOOlOOO tmp4 /включить семистор
/Подпрограмма проверки перехода через 0 переменного напряжения
UOof: nop
ddf: nop
rcall nop Zlms
Idi tmpl, ObOOOOllOO /внутренний источник /вход ADC2, вход АЦП
rcall nop adcn
cis /сброс знака
cpi tmp3, $00 /проверка менее 100 В
breq wej
rjmp ddf
wej : nop
cpi tmp2, $0А /проверка больше 10 В
brsh ddf
clr tmp4
Idi tmp4, ОЬООООООООО /выключить семистор
out PORTB, tmp4
Управление вентилятором в помещении
109
Листинг 5Л * Продолжение
пор
ret
/Подпрограмма задержки 1
zlms: пор
wdr
clr M
clr Y
Idi Y, $62
goo: nop
Idi M, $04
dm: nop
idi X, $62
nop
goq: nop
nop
dv: nop
wdr
nop
dx: dec Y
nop
nop
nop
nop
nop
brpl dx
nop
nop
cln
dec X
brpl dv
cln
dec M
nop
brne dm
ret
мс
/сброс сторожевого таймера
/начальный сброс константы
/начальный сброс константы
/первая константа цикла
/третья константа цикла
/сброс сторожевого таймера
/проверка условия
/проверка условия
/проверка условия
/Подпрограмма АЦП, настройка АЦП
adcn: nop
nop
clr tmp
awe: nop
cpi rmp, $04 /считывание АЦП 4 раза
brsh ass /более 4-х раз
пор
out ADMUX, tmpl /коммутация входов АЦП
по
Глава 5
Листинг 5.1. Продолжение
.•Подпрограмма задержки 125 мкс
пор
clr Y
Idi Y, $24 ;задаем цикл
cln /сброс флага знака
dx3: пор
dec Y /цикл, начало
пор brpl dx3 /проверка условия
пор
clr tmp2
clr tmp3
Idi tt2, $C5 /одиночное, запуск, 1/32
out ADCSR, tt2 /запуск АЦП на преобразование
/Сохранение данных АЦП
in tmp2, ADCL /чтение младшего байта АЦП
in tmp3, ADCH /чтение старшего байта АЦП
mov r2, tmp2 /запомнить временно
mov r3, tmp3 /запомнить временно
mov r4, r2 /запомнить временно
mov r5, r3 /запомнить временно
mov r6, r4 /запомнить временно
mov r7, r5 /запомнить временно
inc tmp /увеличить на 1
rjmp awe
;среднее арифметическое
ass : nop
clr r8
/для младшего байта
clc /сброс флага переноса
add tmp2, r2 /сложение с предыдущим
adc r9, r8 /сложение с переносов
add tmp2, r4 /сложение с предыдущим
adc r9, r8 /сложение с переносом
add tmp2, r6 /сложение с предыдущим
adc r9, r8 /сложение с переносом
clc
Isr r9 /сдвиг вправо
ror tmp2 /сдвиг вправо через перенос
Isr r9 /сдвиг вправо
ror tmp2 /сдвиг вправо через перенос
clr r9
clc
/для старшего байта
add tmp3, r3 /сложение с предыдущим
adc r9, r8 /сложение с переносом
Управление вентилятором в помещении
111
Листинг 5.1. Продолжение
add tmp3, r5 ;сложение с предыдущим
adc r9, r8 ;сложение с переносом
add tmp3, r7 ;сложение с предыдущим
adc r9, r8 ;сложение с переносом
clc
lsr r9 ;сдвиг вправо
ror tmp3 /сдвиг вправо через перенос
lsr r9* /сдвиг вправо
ror tmp3 /сдвиг вправо через перенос
nop /младший байт tmp2, старший tmp3
ret
;Подпрограмма i задержки времени таймера по DIP
time: nop
clr digl
clr dig2
clr tp
clr tmp3
clr tmpl
clr coc
Idi tmp2, $3C /задаем время, в минуте 60 с
Idi tmp4, $03
Idi tmp, $E8
Idi Y, $62 /первая константа цикла
Idi M, $04 /вторая константа цикла
Idi X, $62 /третья константа цикла
cmn: nop /цикл 0
nop
j u j : nop /ЦИКЛ1
cln
wdr
fed: nop /цикл2
wdr
nop
cln
dgjh: nop /циклЗ
nop
dgj: nop /цикл 4
wdr /сброс сторожевого таймера
nop
ask: inc digl
nop
cpc digl, X /сравнение мкс
brio ask
clr digl
nop
inc dig2
112
Глава 5
Листинг 5Л Окончание
пор
срс dig2, Y /сравнение мс
brio dgj
clr dig2
пор
inc tp
nop
cpc tp, M /сравнение 0,1 c
brio dgjh
clr tp
nop
inc tmpl
nop
cpc tmpl, tmp2 /сравнение c
nop
brio fed
clr tmpl
nop
inc tmp3
nop
cpc tmp3, tmp4 /сравнение мин.
пор
brio juj
nop
clr tmp3
nop
inc coc
nop
cpc coc, dip /сравнение DIP, мин.
nop
brio cmn
nop
ret
.EXIT
Листинг 5,2* Шестнадцатеричный код управления вентилятором
: 020000020000FC
:1000000013C000000000000000000000000000001D
:080010000000000000000000Е8
:100028000000552757BB58BB552758E057BB5CEF16
:100038005BBB5ABB5FED5DBF0000222744275527F5
:10004800662700273327АА27ВВ2799271127772751
:10005800000032D000000BE0AFD000008DD00000CF
:1000680028E140E0C894341B0AF42A950000C8949B
:10007800A21B0AF005C000002227A894E9CF0000BF
: 10008 80 0000054D000000BE097D0000 07 5D00 000AD
Управление вентилятором в помещении
113
Листинг 5.2, Окончание
: 1000980022E046E6C894431B0AF42A950000C89457
:100CA8004A1B0AF003C00000EDCF00000C00C0D0DA
:1000B80000004FD00000CCCF00005B336627CA9B7E
: 1000С80019C00000CB931ACCC000CC9B1BC00000CD
:1000D8C0CD9BLCC00000CE9B1DC0000CCF9B1EC046
:1000E800000055279894651709F01DC000006EE1BF
:1000F8001АС0Э000000051E0650FE3CF000055Е092
:10010800650FE2CF00005AE0650FE1CF000054E12F
: 10011800650FE0CF00005ЕЕ1650FDFCF00005СЕ314
:10012800650FDECF00000000C62F08950000000014
:1O01380023DOOOOOOCEO4ODOOOOOC894AO3OQ9FOA3
: 10014800F6CF00003A3098F7BB27B8E0B8BB0000FC
: 1001580008950000000010D000000CE02DD0000031
:10016800C894A03009F0F6CF00003A3098F7BB27C2
:10017800В0Е0В8ВВ000008950000А89577271127С4
:1001880012Е6000074Е0000092Е6000000000000АЗ
:100198000000А89500001А9500000000000000006В
:1001A8000000CAF700000000A8949A958AF7A8945E
:1001В8007А95000041F708950000000055270000D7
:1001C8005430C8F4000007B90000112714E2A894BD
:1001D80000001A950000E2F700003327АА2785ECF3
: 1001E8008 6B934B1A5B1232E3A2E4 22C5 32C642C57
:1001F800752C5395E4CF000088248894320D981C00
: 10020800340D981СЗ60D981С8894969437959694ВЕ
:10021800379599248894A30D981CA50D981CA70DB3
:10022800981C88949694A7959694A795000008958D
:100238000000222744276627AA270027DD273CE35A
: 1002 4 80 0ВЗЕ0 5 8ЕЕ12Е67 4Е092Е6000 00 0000 00 00 9
:10025800А894А8950000А8950000А89400000000А4
:100268000000A8950000239500002907E0F3222745
:100278000000439500004107 98F344270 000639568
: 10028800000 0 6 70758F3662700000395000003077Е
:10029800000000F300270000A3950000AB07000052
:1002A800B0F20000AA270000D3950000DC07000088
:О602B80060F20000089551
: 00000001FF
При программировании следует учитывать ряд аспектов. Так, для
настройки АЦП помните, что в микроконтроллере в канале АЦП задей-
ствован усилитель сигнала. Его можно использовать только по включе-
нию с дифференциальным входом, поэтому для считывания данных
уровня освещенности необходимо коммутировать сразу два вывода
микроконтроллера. Усилитель не имеет обратной связи, коэффициент
усиления — 20.
114
Глава 5
Для каналов с дифференциальным входом результат преобразова-
ния определяется выражением:
ADC = (1 024 * GAIN(VPOS-Vneg)) / Vret
где GAIN — коэффициент усиления 20; VDUS— напряжение от фотодат-
чика; Vncg — вывод на “землю”; Vref— опорное напряжения 5 В [15].
Напряжение срабатывания при переходе из темного состояния
в светлое составляет около 1,5 В, а из светлого в темное — около 3 В.
Таким образом, ADC] = 1 800; ADC2 = 3 000. Поскольку результат ана-
лого-цифрового преобразования не может превышать S1FF, то в случае
перехода из светлого состояния в темное усиление не требуется. Поэто-
му на данном этапе коэффициент усиления равен 1, а АВС2= 266.
Кроме того, АЦП с дифференциальным усилителем имеет ряд осо-
бенностей. Данные, попадающие на АЦП, восстанавливаются через
125 мкс после коммутации входного мультиплексора. После коммута-
ции реализована временная задержка более 125 мкс и только потом
происходит аналого-цифровое преобразование.
При сравнении полученных данных используется двухбайтная
арифметика. При этом существует область попадания. Точные сравне-
ния некорректно воспроизводят действия компаратора, поскольку он
имеет гистерезис.
Монтажная плата
Монтажная плата (рис. 5.6) изготавливается из двухстороннего тек-
столита. Автор использовал готовую макетную плату для SMD и обыч-
ных элементов монтажа (рис. 5.7).
При самостоятельном проектировании необходимо учесть, что на
плате одновременно установлены силовые элементы и элементы управ-
ления на малых токах. Силовые элементы могут выделять значительное
количество тепла и давать низкочастотные наводки от сети, поэтому
при размещении элементов монтажа рекомендуется разделить плату на
две половины. Фотодатчик необходимо разместить по середине платы
в соответствии с дизайном (рис. 5.8).
Выводы фотодатчика должны быть максимальными по высоте. Фо-
тодатчик должен находиться на плате выше всех элементов. Кроме того,
дорожка от вывода фотодатчика до вывода микроконтроллера должна
быть минимальной длины для исключения импульсных наводок.
Управление вентилятором в помещении
115
Рис. 5.6. Монтажная плата устройства управления вентилятором (начало)
116
Глава 5
Рис. 5.7. Готовая макетная плата
Упразление вентилятором в помещении
117
Рис. 5.8. Размещение фотодатчика
Установка и настройка
Файл .hex (см. листинг 5.2) вводится в микроконтроллер через
разъем Л. Во время программирования лучше использовать стабилизи-
рованный источник 5 В, выводы которого можно подключить к стаби-
литрону D2, “плюс” — к катоду D2, а “минус” — к аноду. Ес пи при про-
граммировании использовать источник платы, то из-за отсутствия галь-
ванической развязки возможен пробой микросхемы и программатора.
Плата устройства устанавливается в отдельный корпус рядом с вен-
тилятором. Крепление платы к корпусу можно предусмотреть в одной
точке, поскольку плата — легкая. На ней присутствуют несколько эле-
ментов, выделяющих тепло, поэтому в корпусе платы желательно вы-
сверлить по бокам с десяток отверстий. Для аварийных ситуаций в си-
ловой проводке желательно предусмотреть разъем для обесточивания
вентилятора.
118
Глава 5
I Внимание!
Схема не имеет гальванической развязки! Настройку и проверку во время включе-
ния в сеть 220 В следует выполнять по всем правилам техники безопасности.
Нельзя прикасаться к любым элементам схемы незащищенной поверхностью тела!
Устройство начинает работать сразу же после подачи питания. Во
время настройки необходимо с помощью изолированной отвертки отре-
гулировать детектор нуля. Далее выбирается продолжительность рабо-
ты вентилятора после выключения света. Для запуска необходимо на-
жать кнопку “RESET”, включить в помещении свет и убедиться в рабо-
тоспособности устройства.
Себестоимость устройства без учета стоимости вентилятора состав-
ляет около $20, однако возможности микроконтроллера неограниченны
и использованы только на 10%. При модернизации программы можно
реализовать различные варианты включения вентилятора (например,
через каждые 20 минут или после посещения помещения). При опреде-
ленных конфигурациях вентилятора и места установки, возможно, при-
дется изменить дизайн всей конструкции или сделать блок управления
выносным.
_____________Глава 6
Простой термометр
Цифровые термометры активно используются в повседневной жиз-
ни. Дешевые и дорогие, бытовые и профессиональные — они устанав-
ливаются в различных местах для контроля погоды на улице и темпера-
туры внутри помещений. Неизменным для них было и остается только
одно препятствие — длительность эксплуатации. Основным потребите-
лем энергии является дисплей и микроконтроллер. Современная элек-
троника предлагает жидкокристаллические индикаторы (ЖКИ), практи-
чески не потребляющие энергии. В отечественной электронике массо-
вое распространение получили дешевые ЖКИ ИЖЦ5-4/8.
Для создания модели термометра автор применил микроконтроллер
Mega8-P семейства AVR, оснащенный флэш-памятью программ на
8 Кбайт, памятью EEPROM на 512 байт, памятью SRAM на 1 Кбайт, че-
тырехканальныхм 10-разрядным АЦП, двумя восьмиразрядными и одним
16-разрядным таймером, 23 линиями ввода-вывода [8]. Первоначально
для измерения данных датчика температуры автор хотел использовазь
ресурсы Mega8-P, поскольку этот микроконтроллер содержит АЦП, од-
нако из-за отсутствия входного усилителя невозможно настроить канал
измерения. Кроме того, невозможно организовать измерение отрица-
тельной температуры.
Мировая микроэлектроника предлагает
различные микросхемы измерения темпера-
туры, и одна из них — цифровой темпера-
турный сенсор LM75 [16, 17]. Этот датчик в
течение 100 мкс с помощью интегрирован-
ного сигма-дельта АЦП преобразовывает
измеренную температуру в цифровые дсся-
тиразрядные данные и передает их по шине
12С. Диапазон допустимых температур для
LM75 составляет —25..4-100°С при макси-
мальном отклонении ±2ПС или -55..+125°С
при максимальном отклонении =3°С.
Дизайн конструкции представлен на
рис. 6.1. Треугольная форма термометра по-
Рис. 6.1. Дизайн
120
Глава 6
зволяет вмонтировать в нижней части корпуса блок с элементами пита-
ния. Кроме того, благодаря наклонному дисплею, происходит поляриза-
ция отраженного света на сепментах, что повышает контрастность. Еще
одно преимущество заключается в хорошей устойчивости корпуса на
горизонтальной поверхности, поскольку центр тяжести (за счет веса
элементов питания) находится ниже середины корпуса.
Структурная схема термометра показана на рис. 6.2.
Рис. 6.2. Структурная схема термометра
Интегрированный термодатчик микросхемы LM75 преобразует
температуру в падение напряжения. Уровень напряжения усиливается
измерительным каналом (так же интегрирован в микросхему), и сигма-
дельта АЦП LM75 преобразовывает напряжение в цифровой код. Код от
АЦП через устройство 12С передается в последовательном виде от LM75
в микроконтроллер. Микроконтроллер считывает код и преобразовыва-
ет его из двоичной формы в десятичную, поразрядную. Далее, благодаря
перекодировке десятичного кода в семисегментный, микроконтроллер
управляет дисплеем с помощью портов В, С и D.
Схема термометра (рис. 6.3) построена на двух микросхемах IC1,
IC2 и жидкокристаллическом дисплее. Топологию схемы сегментов
ЖКИ показана на рис. 6.4. Эту схему сегментов автор срисовал с ЖКИ
для уточнения подключения выводов на плате на тот случай, если будет
устанавливаться ИЖЦ5-4/8. Рядом с индикатором на рис. 6.4 представ-
лена кодировка сегментов, принятая во всем мире.
Вывод Вр ЖКИ подключается на общий провод, а на сегменты по-
дается положительное напряжение с портов микроконтроллера. При по-
даче напряжения между сегментом и подложкой жидкие кристаллы из-
меняют свое положение, и соответствующий сегмент затемняется. По-
скольку свет, отраженный от нижней зеркальной поверхности индика-
тора, не проходит через затемненные сегменты, на индикаторе проявля-
ется цифра.
Простой термометр
121
LM75
122
Глава 6
Рис. 6.4. Топология схемы сегментов ЖКИ
В качестве “минуса” в ЖКИ выбран сегмент g4. Сегменты al, bl, gl
и fl, отвечающие за символ градуса, можно подключить к источнику
питания схемы. Если эти сегменты засвечены, то микроконтроллер ра-
ботает, и остальные цифры формируются в программе обработки дан-
ных. Если они не засвечены, то микроконтроллер — нерабочий и требу-
ет замены или перепрограммирования. Таким образом решается задача
самодиагностики.
ЖКИ очень инерционный, поэтому экрана обновляется раз в 0,5 с.
Это особенно заметно при использовании прибора на морозе, когда
подвижность жидких кристаллов значительно уменьшается.
Резистор R3 предназначен для сброса микроконтроллера в исходное
состояние при включении питания. Резисторы R1 и R2 выполняют
функцию ограничителя тока питания шины ГС. Конденсаторы С1-СЗ
сглаживают пульсацию, а также уменьшают импульсные помехи, созда-
ваемые ядром процессора.
В схеме применен ЖКИ 1072 импортного производства, однако
можно использовать любой другой семисегментный ЖК-дисплей на три
значащих цифры (например, от старого нерабочего калькулятора или от
наручных часов). Потребляемый схемой гок — около 5 мА. Работоспо-
собность схемы сохраняется при напряжении 2,8 В [8, 17]. Микрокон-
троллер работает при напряжении 2,7..5,5 В, а схема LM75A — при на-
пряжении 2,8..5,5 В.
Программа
Блок-схема алгоритма работы устройства показана на рис. 6.5. В на-
чале программы конфигурируются порты управления дисплеем и ши-
ной 12С. Тактовая частота микроконтроллера по умолчанию составляет
1 МГц, чего достаточно для работы термометра. Данные от LM75A
Простой термометр
123
принимаются микроконтроллером по шине 12С. При этом частота пере-
дачи не должна превышать 200 кГц. Для передачи данных автор вос-
пользовался готовой программой [16] с небольшой модернизацией.
Рис. 6.5. Алгоритм работы термометра
124
Глава 6
При сбросе по включению питания регистр-указатель принимает
значение $00 и указывает на регистр температуры. Все регистры дан-
ных, за исключением “Температура”, доступны для чтения и записи.
Разряды данных DB8-DB0 представлены в формате дополнения до
двух. Один младший разряд соответствует температуре 0,5°С. Разряды
D6-D0 младшего полубайта не определены (рис. 6.6).
D15 D14 D13 D12 D11 D10 D9 D8 D7 D6 D5 D4 D3 D2 D1 D0
DB8 DB7 DB6 DB5 DB4 DB3 DB2 DB1 DB0 X X X X X X X
Рис. 6.6. Разряды D6-D0 младшего полубайта не определены
Данные из LM75 могут быть считаны двумя способами [16]. Для
передачи адреса и данных используется пакет, в котором участвует
только байт адреса с последующим байтом данных для чтения. Считы-
вание байта ведущим устройством 12С подтверждается положительным
(лог. 0) или отрицательным (лог.1) квитированием. Сигнал отрицатель-
ного квитирования извещает ведущее устройство о том, что оно только
что прочитало последний байт.
Полученные данные (см. рис. 6.6) смещают вправо через перенос
пять раз, после чего их необходимо преобразовать в положительные
числа. Для этого отрицательные значения с помощью дополнительного
кода [18] преобразуют в целые положительные значения. Код темпера-
туры преобразуется в цифры реальной температуры в десятичном коде.
Далее полученные числа необходимо разделить на восемь.
На следующем этапе данные разбиваются поразрядно. Для работы
семисегментного индикатора двоично-десятичное значение преобразу-
ется в семисегментный код с помощью табл. 6.1 и табл. 6.2 (размещены
в конце программы по адресам ргодЗ и ргод4). Микроконтроллер вы-
водит семисегментные коды на дисплей, после чего программа реализу-
ет задержку в 0,5 с и возвращается в начало.
Таблица 6.1. Преобразование двоично-десятичного значения
в семисегментный код для старшего разряда
Старший разряд . PD0 РС5 РС4 РСЗ РС2 РС1 РСО Код
0 0 1 1 1 1 1 1 3F
1 0 0 0 0 1 1 0 06
2 1 0 1 1 0 1 1 5В
3 1 0 0 1 1 1 1 4F
4 1 1 0 0 1 1 0 66
Простой термометр
125
Таблица 6.1. Окончание
Старший разряд PD0 РС5 РС4 РСЗ РС2 РС1 РСО Код
5 1 1 0 1 1 0 1 6D
6 1 1 1 1 1 0 1 7D
7 0 0 0 0 1 1 1 07
8 1 1 1 1 1 1 1 7F
9 1 1 0 1 1 1 1 6F
Таблица 6.2. Преобразование двоично-десятичного значения
в семисегментный код для младшего разряда
Младший разряд РВЗ РВ2 РВ1 PB0 PD7 PD6 PD5 Код
0 1 1 1 1 1 1 0 7Е
1 0 1 1 0 0 0 0 30
2 1 1 0 1 1 0 1 6D
3 1 1 1 1 0 0 1 79
4 0 1 1 0 0 1 1 33
5 1 0 1 1 0 1 1 5В
6 1 0 1 1 1 1 1 5F
7 1 1 1 0 0 0 0 70
8 1 1 1 1 1 1 1 7F
9 1 1 1 1 0 1 1 7В
Программа на ассемблере представлена в листинге 6.1, а шестна-
дцатеричный код — в листинге 6.2. Соответствующие файлы term?5.
asm и term75.hex находятся на прилагаемом к книге компакт-диске
в папкеПрограммы\06 - Термометр.
Листинг 6.1* Программа управления термометром
.include "C:\Program Files\Atmel\Avr Studio\Appnotes\m8def.inc”
/Автор: Кравченко А.В.
/Дата: 5.01.2008
/Версия: 1.0.4
/Имя файла: term75.asm
/Микроконтроллер: ATmega8
/Тактовая частота: 1.ОмГц
/Питание: нестабилизированное 5 В
.list
126
Глава 6
Листинг 6Л. Продолжение
;***** Регистровые переменные
def tmp = Г16 ; Рабочий регистр
def tmpl = r!7
def tmp 2 = rl8
def Fig = rl 9
def Dig21 = r20
def tmp3 = r21
def tt2 = r22
def Dig43 = r23
def dbyt = r2 4
def adr = rO
def prgl = r25
def prg2 = r2 6
def tmp3 = r27 ; Рабочий регистр
def tmp4 = r2 8 ; Рабочий регистр
; Флаги в регистре Fig:
. equ Аск = 0 ; Флаг квитирования = разряд О
; Входы/выходы I2C:
.equ SDA = РВ4 ; SDA - порт В / разряд О
.equ SCL = РВ5 ; SCL = порт В / разряд 1
; Адреса ведомых устройств I2C:
.equ TempAdr = $90 ; Адрес LM75
. cseg
/Начало области памяти, вектор прерывания
. org 0
rjmp RESET
пор ;rjmp INTO
пор ;г j mp INTI
пор ;rjmp TIMER2 COMP
пор ;rjmp TIMER2 OVF
пор ;rjmp TIMER1 CAPT
пор ;rjmp TIMER1 COMPA
пор ;rjmp TIMER1 COMPB
пор ;rjmp time
пор ;rjmp TIMERO OVF
пор ;rjmp SPI, STC
пор ;rjmp USART, RXC
пор ;rjmp USART, UDRE
пор ;rjmp USART, TXC
пор ;rjmp ADC
пор ;rjmp EE_RDY
пор ;rjmp ANA_COMP
пор ;rjmp TWI
Простой термометр
127
Листинг 6J* Продолжение
пор ; rjmp SPM_RDY
/Начало всей программы без вектора прерывания
. org 22 /настройка портов В, C, D
RESET: пор
clr tmp
cl г tmpl
;выходы на дисплей
Idi tmpl, $FF /Порт В,-выходы
out DDRB, tmpl
out PORTB, tmp /обнулить порт В
;выходы на дисплей
Idi tmp2, $3F
out DDRC, tmp2 /Порт С-выходы
out PORTC, tmp /Обнулить порт С
;выходы на дисплей
Idi tmp3, $FF /Порт D-выходы
out DDRD, tmp3
Idi tmp, $1E /символ градуса Цельсия
out PORTD, tmp /установить порт D
/установка верхнего уровня стека
clr tmp
Idi tmp, high(RAMEND)
out SPH, tmp
Idi tmp, low(RAMEND)
out SPL, tmp
;сброс всех значений
;общий запрет прерываний
cli
/Начало программы
nStarc: nop /начало программы
rcall res /подпрограмма сброса переменных
nop rcall W200 /задержка на 200 мс, /для устойчивости LM75
nop rcall GetTemp /чтение данных из LM75
nop rcall righ /сдвиг вправо
real 1 righ /сдвиг вправо
rcall righ /сдвиг вправо
rcall righ /сдвиг вправо
real 1 righ /сдвиг вправо
/выделение знака
128
Глава 6
Листинг Продолжение
mov tmp, dig43 tmp, $07 tmp, $03 /знаковая переменная /маска для старшего полубайта /маска для знака
andi
ori
clz
;проверка на минус
cpi tmp, $07 /есть минус?
brne plus /больше равно
nop
rjmp minus /переход к минусовым данным
plus: nop
rjmp kl /длинный переход к плюсовым данным
minus: nop
Idi prgl, $01 /метка "Минус"
andi dig43, $07 /выделяем цыфру от знака
sbci dig21, $01 /вычитаем с заемом
subi dig43, $00 /вычитаем 1
com dig43 /инверсия данных
andi dig43, $07 /выделяем цыфру от знака
com dig21 /инверсия данных
nop kl: nop
mov r5, dig43 /записываем данные в регистр
mov r4, dig21 /записываем данные в регистр
rcall deldes /операция деления на 8
;Преобразуем шестнадцатиричное в десятичное
mov dig43, r5 /чтение данных из регистра
mov dig21, r4 /чтение данных из регистра
nop
;Менее 8 - преобразование не нужно
cis
cpi dig43, $01 /сравниваем старший разряд
brlt we i
rjmp wqqq
wei: nop cis
cpi dig21, $08 /сравниваем младший разряд
brlt sot
rjmp wqqq
sot: nop /да, менее 8
mov dig21, r6 /записываем только младший разряд
rjmp vos
wqqq: nop
rcall hexbed /выполняем преобразование hex-bed
vos: nop
mov dig43, dig21 /данные только в одном байте
Простой термометр
129
Листинг 6,1* Продолжение ;выделяем цифру /выделяем старший разряд десятичного
andi пор swap пор dig43/ $F0 dig43
andi dig21, $0F /•выделяем младший разряд десятичного
rcall Get7Segm ;семисегментный код старшего разряда
пор
rcall Get7Segn ;семисегментный код младшего разряда
пор
mov r4, prgl /•восстанавливаем метку знака
rcall Disp /•выводим на дисплей
пор
rcall W200 гзадержка на 200 мс,
/•для устойчивости LM75
пор
rjmp nStart ;переходим в начало программы
/Делимое r7r 6r5r4 делитель гЗг2 результат г5:г4 остаток гб
.★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★it
;* HexBCD - 32-разрядное двоичное число (целое) делить на
16-разрядное.
•★★★★★★★★★★★★★★★★★★★★★★★★★★ ★ ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★А-**
delit: пор
;Пересылка данных з рабочие регистры
clr г 7 :сброс ненужных разрядов
clr г 6 :сброс ненужных разрядов
clr гЗ ; :сброс ненужных разрядов
mov r2, tmp2 ; :делитель
Idi tmpl, $10 ; :делитель 16 разрядов
mov r0, tmpl
DCLK: nop
rcall HL2 ; :подпрограмма со старшим полубайтом
in rl7, SREG ; :сохранение регистра состояния
rcall DE2 ; :проверка младшего полубайта
nop
brcc PERI ; ‘переход, если не было переноса
nop
rcall INXH ; восстановление старшего полубайта
nop
PERI : real 1 HLMNBC ;вычисление разницы старшего полубайта
nop
bres PER2 ; переход, если перенос
out SREG, rl7 восстановление регистра состояния
PER3 : rcall INXD восстановление младшего полубайта
nop
rjmp PER4
130
Глава 6
Листинг вЛ, Продолжение.
PER2: out SREG, rl7 /восстановление регистра состояния
brcs nop PER3 /переход, если перенос
rcall PER4: clz mov DADB tmp3, rO /восстановление старшего полубайта
dec mov tmp3 rO, tmp3 /уменьшение 16 разрядов
brbc nop ret 1, DCLK /переход, если Z--0
;подпрограмма co старшим полубайтом
HLMNBC: clc /сброс флага переноса
mov tmpl, r6 /переслать гб во временный регистр
sbc tmpl, r2 /вычитание с заемом
mov r6, tmpl /сохранение в гб
mov tmp2, r7 /переслать г 7 во временный регистр
sbc tmp2, r3 ;вычитание с заемом
mov ret r7, tmp2 /сохранение в г 7
/восстановление старшего полубайта
DADB: mov tmpl, r6 /переслать гб во временный регистр
add tmpl, r2 /сложение
mov r 6, tmp1 /сохранение в гб
mov tmp2, r7 /переслать г 7 во временный регистр
adc tmp2, r3 /сложение с переносом
mov ret r7, tmp2 /сохранение в г 7
;подпрограмма DE2: clc с младшим полубайтом ;сброс флага переноса
mov tmpl, r4 /переслать г4 во временный регистр
rol tmpl /сдвиг влево через перенос
mov r4, tmpl /сохранение в г4
mov tmp2, r5 /переслать г5 во временный регистр
rol tmp2 /сдвиг влево через перенос
mov r5, tmp2 ret ;сдвиг старшего полубайта HL2: clc /сохранение в г5 /сброс флага переноса
mov tmpl, гб /переслать г4 во временный регистр
rol tmpl /сдвиг влево через перенос
mov гб, tmpl /сохранение в гб
mov tmp2, r7 /переслать г 7 во временный регистр
rol tmp2 ;сдвиг влево через перенос
mov ret r7, tmp2 /сохранение в г 7
Простой термометр
131
Листинг 6.1. Продолжение
/восстановление младшего полубайта с константой 1
INXD: mov tmpl, r4 /переслать r4 во временный регистр
Idi tmp4, $1 /записать константу 1
add tmpl, tmp4 /сложение с константой
mov r4, tmpl /сохранение в г4
mov tmp2, r5 /переслать г5 во временный регистр
Idi tmp4, $0 /записать константу 0
adc tmp2, tmp4 ;сложение с константой с переносом
mov r5, tmp2 ;сохранение в г5
ret /восстановление старшего полубайта с константой 1
INXH: mov tmpl, r6 /переслать гб во временный регистр
Idi tmp4, $1 /записать константу 1
add tmpl, tmp4 /сложение с константой
mov r6, tmpl /сохранение в гб
mov tmp2, r7 /переслать г 7 во временный регистр
Idi tmpl, $0 /записать константу 0
adc tmp2, tmpl /сложение с константой с переносом
mov r7, tmp2 /сохранение в г 7
ret /сброс временных регистров
Res: nop clr tmp clr tmpl /сброс tmpl
clr tmp2 /сброс tmp2
clr tmp3 /сброс tmp3
clr tmp4 /сброс tmp4
clr prgl clr prg2 clr adr clr dig21 clr dig43 ret /Подпрограмма сдвига вправо
righ: nop clc /сброс флага переноса
ror dig43 /сдвиг вправо старшего без заема
ror dig21 /сдвиг вправо младшего с заемом
ret /Подпрограмма простого преобразования 16-ти разр. Hex-BCD
hexbed: nop clr rl2 /обнуление регистров
clr rl3 /обнуление регистров
clr rl4 /обнуление регистров
clr rl5 /обнуление регистров
Idi tmp2, $0A /делим на 10
132
Глава 6
Листинг ел. Продолжение
rcall delit ;подпрограмма деления
mov rl2, r6 /записываем остаток
cis ;сброс флага знака
clr tmp
mov tmp, r6 /изменения регистра
cpi tmp, $0A /проверка более 10
brlt ООО
rjmp gou
ooo: Idi tmp2, $0A /делим на 10
rcall delit /подпрограмма деления
mov rl3, r6
cis
clr tmp /обнуление регистра
mov tmp, r6
cpi tmp, $0A /проверка более 10
brlt aoo
rjmp gou
aoo: Idi tmp2, $0A /делим на 10
rcall delit /подпрограмма деления
mov rl4, r6
cis
clr tmp /обнуление регистра
mov tmp, r6
cpi tmp, $0A /проверка более 10
brlt uoo
rjmp gou
uoo: Idi tmp2, $0A /делим на 10
rcall deli t /подпрограмма деления
gou: mov rl5, r6
clr tmp
mov tmp, rl5 /выделение разряда
andi tmp, $0F /маска
swap tmp /перемещение в старший полубайт
add tmp, rl4 /запись младшего полубайта
mov dig43, tmp /запись старшего байта
clr tmp
mov tmp, rl3 /выделение разряда
andi tmp, $0F /маска
swap tmp /перемещение в старший полубайт
add tmp, rl2 /запись младшего полубайта
mov dig21, tmp /запись младшего байта
nop
ret
;уменьшение в 8 раз
deldes: nop
Idi tmp2, $08 /делим на 8
Простой термометр
133
Листинг 6Продолжение
rcall delit /подпрограмма деления
пор
ret
/Подпрограмма перекодировки в семисегментный код
Get7Segm: пор
Idi Idi Add 1pm mov ret ZH, ZL, ZL, dig high(2*prog3) Low(2*prog3) / dig4 3 в аккумулятор старший байт в аккумулятор младший байт из таблицы в конце программы
43, adr /чтение /запись
в регистр из таблицы
Get7Segn: clr clr Idi nop ZH ZL ZH, high (2 *prog4) / в аккумулятор старший байт
Idi ZL, Low (2* prog4) в аккумулятор младший байт
Add 1pm mov ZL, dig21 dig21, adr /чтение /запись из таблицы в в регистр из конце программы таблицы
ret
/Подпрограмма вывода данных на дисплей
Disp: пор
пор
формируем младший разряд дисплея
mov tmp2, dig43 /запись кода
mov clc tmp3, dig21 /запись кода /сброс флага переноса
rol clc tmp3 /сдвиг кода влево /сброс флага переноса
rol clc tmp3 /сдвиг кода влево /сброс флага переноса
rol clc tmp3 /сдвиг кода влево /сброс флага переноса
rol tmp3 /сдвиг кода влево
mov tmpl, tmp2
rol tmpl ;сдвиг кода влево с переносом
rol tmp3 /сдвиг кода влево с заемом
формируем старший разряд дисплея
mov tmp2, dig43 ;запись кода
andi tmp2, $1F
mov clc ror tmp4, tmp4 dig21 ;запись кода ;сброс флага переноса
clc ror tmp4 ;сброс флага переноса
134
Глава 6
Листинг 6.1. Продолжение
clc ror tmp4 /сброс флага переноса
nop
out PORTC, tmp2 /вывод на дисплей
out PORTD, tmp3 /вывод на дисплей
out PORTB, tmp4 ;вывод на дисплей
clz /подготовка условий
cpi prgl, $01 /есть минус?
brne rfv /равен 1
sbi DDRB, 6 /установка знака "минус
rjmp wpo
rfv: nop /не равен 1
cbi DDRB, 6 /сброс знака
wpo: nop
nop
ret
/Подпрограмма считывания температуры
GetTemp: Считываем температуру из LM7 5
Idi dbyt,TempAdr ; Адрес LM75, направление - запись
rcall Start Передаем условие старта + адрес ведомого
sbrc Fig,Ack / r Пропускаем следующую команду, если квитирование
ret r Завершаем, если отрицательное квитирование
Idi dbyt,0 / Указатель LM75 (указывает на температуру)
rcall WriteByte Передаем
sbrc Fig,Ack Пропускаем следующую команду, если квитирование
ret Завершаем, если отрицательное квитирование
Idi dbyt,TempAdr+1 / Адрес LM75, направление - чтение
rcall Restart ; Передаем новое условие старта + адрес
sbrc Fig,Ack / r Пропускаем следующую команду, если бит квитирования = 0
ret r Завершаем, если отрицательное квитирование
rcall ReadByte ; Считываем байт, бит квитирования^
mov Dig43,dbyt Сохраняем старший байт в буфер
sbr Fig,l<<Ack Нет квитирования
rcall ReadByte ; Считываем байт, бит квитирования^
mov Dig21,dbyt Сохраняем младший байт в буфер
rcall ret stopp Передаем условие завершения
Простой термометр
135
Листинг 6.1. Продолжение
/Подпрограмма рестарта соединения IIC
ReStart: ; Повторяем условие старта
sbi DDRB, SCL ; Ниспадающий фронт SCL
nop
cbi DDRB, SDA ; Установка SDA в 1
nop
rcall wait5us ; Цикл задержки
nop
cbi DDRB, SCL ; Нарастающий фронт SCL
RSI:
sbis PinB,SCL ; Состояние ожидания ведомого ; устройства ?
rjmp RSI
rcall wait5us ; Цикл задержки
;Подпрограмма . старта передачи
Start: nop clz
sbi DDRB,SDA ; SDA = лог. 0: условие старта
rcall wait4us ; Цикл задержки
WriteByte: nop ; Запись байта в ведомое устройство
clz
sec ; Флаг переноса С = 1
rol dbyt ; Сдвигаем влево, C->LSB, MSB->C
rjmp bitl ; Особая обработка разряда 1
WriteBit: nop
Isl’ dbyt ; Если dbyt пустой, ...
bitl: nop
breq GetAck ; ... то передача завершена
sbi DDRB,SCL ; SCL = лог. 0 Ниспадающий фронт SCL
brcc WriteLow ; Переход, если флаг С = 0
nop ; Чтобы уравновесить время выполнения
cbi DDRB,SDA ; SDA - высокоомный Установка SDA в 1
rjmp SCL_High
WriteLow: nop
sbi DDRB,SDA ; SDA = лог. 0 Установка SDA в 0
nop ; Чтобы уравновесить длительность такта
SCL_High: nop
rcall wait4us ; Цикл задержки
cbi DDRB,SCL ; SCL - высокоомный Ниспадающий ; фронт SCL
WB1: nop
sbis PinB,SCL ; Состояние ожидания ведомого ; устройства ?
rjmp WB1
rcall wait5us ; Цикл задержки
rjmp WriteBit
136
Глава 6
Листинг 6Л* Продолжение
GetAck: nop ; Считывание бита квитирования от ; ведомого
sbi DDRB,SCL ; SCL = лог. 0 Ниспадающий фронт SCL
cbi DDRB,SDA ; SDA - высокоомный SDA -
; высокоомное состояние
rcall wait5us ; Цикл задержки
cbi DDRB,SCL ; SCL - высокоомный Нарастающий ; фронт SCL
GAI: nop
sbis PinB,SCL ; Состояние ожидания ведомого ; устройства
rjmp GAI
cbr Fig,l<<Ack ; Флаг Аск = 0
sbic PinB,SDA ; Если SDA = 1,
sbr Fig,l<<Ack ; флаг Аск = 1
rcall ret wait4us ; Цикл задержки
/Подпрограмма чтения данных из LM75
ReadByte: nop dbyt,1 ; Назначаем в качестве счетчика бит
Idi
RB1: sbi DDRB, SCL ; Ниспадающий фронт SCL
rcall wait5us ; Цикл задержки
cbi DDRB, SCL ; Нарастающий фронт SCL
RB2 : sbis PinB,SCL ; Состояние ожидания ведомого ; устройства ?
rjmp RB2
rcall wait5us ; Цикл задержки
clc ; Флаг С = 0
sbic PinB,SDA ; Если SDA = 1
sec ; Carry = 1
rol dbyt ; Сдвигаем прочитанный бит в байте
brcc RBI ; Переход, если чтение не завершено
; Вывод бита квитирования
SetAck sbi DDRB, SCL ; Ниспадающий фронт SCL
sbrs Fig,Ack ; Пропускаем следующую команду, ; если Ack = 1
rjmp SAI ; Переход, если Аск = 0
cbi DDRB, SDA ; Установка SDA в 1
rjmp SA2
SA1: sbi DDRB, SDA ; Установка SDA в 0
SA2 : rcall wait5us ; Цикл задержки
cbi DDRB, SCL ; Нарастающий фронт SCL
SA3 : sbis PinB,SCL ; Состояние ожидания ведомого
; устройства ?
Простой термометр
137
Листинг 6.1. Продолжение
rjmp rcall ret SA3 wait5us ; Цикл задержки
; Подпрограмма передачи флага STOP
Stopp:
nop ; Вывод условия завершения
sbi DDRB,SCL ; SCL = лог. 0 Ниспадающий фронт SCL
sbi DDRB,SDA ; SDA = лог. 0. Установка SDA в 0
rcall wait5us ; Цикл задержки
cbi DDRB,SCL ; SCL высокоомный. Установка SCL в 1
rcall wait5us ; Цикл задержки
cbi DDRB,SDA ; SDA - высокоомный. Нарастающий
; фронт SCL
rcall wait5us ; Цикл задержки
ret
/Подпрограмма задержки 12 мкс
Wait5us: tmp, 2 / Цикл задержки 12 мкс при f = 1,6 МГц
пор Idi
W5 : пор dec tmp /4x2 такта + rcall + ret
brne ret W5
/Подпрограмма задержки 6 мкс
Wait4us: / Цикл задержки 6 мкс при f = 1,6 МГц
Idi tmp, 1
W4 : nop dec tmp ;3xl такт + rcall + ret brne W4 nop ret W2 00: nop /задержка 200 мс Idi tmp2, 0 /Задержка цикл Idi tmp3, 0x35 /Задержка цикл clc /Сброс флага переноса nn: subi tmp2, 1 /Вычитаем 1 с заемом subi tmp3, 0 /Вычитаем с заемом brcc nn /Переход если сброшен флаг ret / Таблица 7-мисегментного кода . ORG $1Г0 ргодЗ: переноса
. DB $ЗГ,$06,$5В, $4Г, $66, $6D, $7D, $07 /код старшего разряда
138
Глава 6
Листинг 6Л* Окончание
. DB $7F,$6F
; Таблица 7-мисегментного кода
. ORG $20С
prog4:
.DB $7Е,$30,$6D,$79,$33,$5В,$5F,$70 ; код младшего разряда
. DB $7F,$7B
Листинг Шестнадцатеричный кед управления термометром
: 020000020000FC
:1000000015С000000000000000000000000000001В
:1000100000000000000000000000000000000000Е0
: 06002000000000000000DA
:10002C000000002711271FEF17BB08BB2FE324BBD1
:10003C0005BBBFEFB1BB0EE102BB002704E00EBF56
:10004C000FE50DBFF894000096D0000086D100009B
:10005C000FD100009CD09BD09AD099D098D0072F6C
:10006C00077003609894073011F4000002C0000080
:10007С0009С0000091Е07770414070507095777026
:10008C00409500000000572E442EB7D0752D442DFE
:10009C000000C89471300CF008C00000C8944830BF
:1000AC000CF003C00000462D02C0000075D000000B
:1000BC00742F707F0000729500004F70A3D0000069
:1000CC00A8D00000492EAED0000047D10000BBCF15
:1000DC000000772466243324222E10E1012E000028
:1000EC0030D01FB726D0000018F400003BD0000021
:1000FC0011D0000020F01FBF2CD0000004C01FBF87
:10010C00D8F300000FD09894B02DBA950B2E39F778
:10011C00000008958894162D1209612E272D2309AD
:10012С00722Е0895162D120D612E272D231D722E61
:10013C0008958894142D111F412E252D221F522E07
:10014С0008958894162D111F612E272D221F722EB3
:10015C000895142DC1E01C0F412E252DC0E02C1F3D
:10016С00522Е0895162DC1E01C0F612E272D10E084
:10017C00211F722E08950000002711272227BB276C
:10018С00СС279927АА270024442777270895000015
:10019С0088947795479508950000CC24DD24EE24AF
:1001AC00FF242AE095DFC62CC8940027062D0A30C0
:1001BC000CF014C02AE08CDFD62CC8940027062D36
:1001CC000A300CF00BC02AE083DFE62CC894002721
:1001DC00062D0A300CF002C02AE07ADFF62C00273C
:1001EC000F2D0F7002950E0D702F00270D2D0F7017
:1001FC0002950C0D402F00000895000028E068DFE8
:10020C00000008950000F3E0E0EEE70FC895702DB4
:10021C0008950000FF27EE27F4E0E8E1E40FC8950D
:10022C00402D089500000000272FB42F8894BB1F89
Простой термометр
139
Листинг 6.2* Окончание
:1002ЗСО08894BB1F8894BB1F8894BB1F122FillF5F
:10024C00BB1F272F2F71C42F8894C7958894C795EF
:10025С008894С795000025BBB2BBC8BB989491305D
:10026C0011F4BE9A02C00000BE9800000000089570
:10027C0080E91BD030FD089580E01BD030FD08953F
: 10028C0081E909D03 0FD08953AD07 82F316037D00C
:10029C00482F4ED00895BD9A0000BC98000051D054
: 1002AC000000BD98B59BFECF4CD0000 09'894BC9A32
:1002BC004ED0000098940894881F02C00000880F4C
:1002CC00000081F0BD9A18F40000BC9803C0000037
:1002DC00BC9A000000003BD0BD980000B59BFDCF40
:1002EC0030D0ECCF0000BD9ABC982BD0BD9800004C
:1002FC00B59BFDCF3E7FB499316029D008950000A5
:10030C0081E0BD9A1ED0BD98B59BFECF1AD08894C3
:10031C00B4990894881FA8F7BD9A30FF02C0BC9806
:10032C0001C0BC9A0ED0BD98B59BFECF0AD00895E3
:]0033COOOOOOBD9ABC9A05DOBD9803DOBC98Q1DOE2
:10034C000895000002E000000A95E9F7089501E025
:10035С0000000А95Е9F700000895000020E0B5E3DD
:0A036C0088942150B050E8F708957E
:0A03E0003F065B4F666D7D077F6FDF
:0A0418007E306D79335B5F707F7BEF
:00000001FF
Монтажная плата
Монтажная плата (рис. 6.7) имеет двухстороннюю разводку печат-
ных проводников. Ее габариты — 50x68 мм, назначение — для исполь-
зования ЖКИ импортного производства 1072DIP. При монтаже индика-
тора выводы следует сгибать осторожно, поскольку стеклянная поверх-
ность ЖКИ быстро портится. Если выбран корпус ЖКИ без выводов, то
необходимо создать усилие прижатия индикатора через витой эласто-
мер из проводящей резины к контактам платы. Габариты схемы можно
значительно уменьшить за счет использования SMD-элементов (напри-
мер, микроконтроллера в корпусе TQFP-32, а схемы LM75A — в корпу-
се SO8). Разводку монтажной платы в таком случае придется изменить.
Используемые детали:
• IC1 — микроконтроллер MEGA8-P;
• IC2 — интегрированный температурный датчик LM75CIM-5;
• индикатор 1072DIP или ИЖЦ5-4/8 (выводы не совпадают, необхо-
димо подключать в соответствии со схемой из справочных данных);
• резисторы мощностью 0,125 Вт;
• конденсаторы на напряжение 6,3 В.
140
Глава 6
Рис. 6.7. Монтажная плата термометра
Простои термометр
141
Все микросхемы установлены на панельки. За платой крепится от-
сек с тремя батарейками типа ДА. В корпус устройства, монтируется
выключатель питания.
Благодаря панелькам, программирование микроконтроллера осуще-
ствляют с помощью программатора (микроконтроллер переставляется
в панельку программатора). Если же микроконтроллер припаян к схеме,
то его программируют путем соединения проводами программатора
с выводами MISO, MOSI, RESET, SCK, +5V и GND на плате. При этом
в момент программирования схема IC2 должна быть обесточена. При
программировании необходимо обязательно определить в окне про-
грамматора РВ6 как порт ввода-вывода. После программирования вы-
воды проводов программатора отрезаются.
Недостатком схемы остается большая инерционность показания
температуры из-за отсутствия выносного быстродействующего темпе-
ратурного датчика. Для бытового применения этот недостаток не имеет
значения. Для этого случая автор приклеил к корпусу микросхемы
LM75A небольшой отрезок фольги, поскольку металл быстрее остывает
и нагревается (фольга контактирует с окружающей средой на наружной
стороне корпуса устройства). Себестоимость термометра при сборке
в радиолюбительских условиях составляет около пяти евро (без учета
затрат на изготовление печатной платы и корпуса термометра).
Автор собрал термометр навесным монтажом (рис. 6.8). При этом
использовался ЖК-дисплей ИЖЦ5-4/8.
Рис. 6.8. Термометр
Глава 7
В праздничные дни сегодня никого не удивишь петардами, фейер-
верками и ракетницами, однако все это — не ново и пригодно только
для использования на улице. Но дома, в кругу друзей хочется уюта, че-
го-то оригинального, созданного своими руками. Автор предлагает све-
товой эффект “Призма”, суть которого заключается в формировании
разноцветных бликов на потолке или стенах комнаты или внутри ново-
годней елки.
Основная идея заключается в отражении светового потока ярких
светодиодов разных цветов от зеркальных пластин вращающейся приз-
мы. Примерный дизайн устройства показан на рис. 7.1.
г
Рис. 7.1. Примерный дизайн светового эффекта “Призма”
Для достижения эффекта ограниченной радуги применяется син-
хронизация включения светодиодов относительно вращающихся зер-
кальных пластин. Для реализации этой идеи автор использовал все воз-
можности микроконтроллера Atmel Mega8-P семейства AVR [8]. Кроме
того, необходимо сохранять работоспособность устройства как на свету,
так и в темноте. Это достигается путем цифрового преобразования
уровня сигнала датчика.
Наиболее впечатляющий эффект получается при установке устрой-
ства максимально близко к потолку (например, на верху шкафа). В этом
случае силуэт “радуги” будет более детальным, с очерченными конту-
рами цветовой переливающейся гаммы.
Светозой эффект “Призма"
143
Структурная схема устройства показана на рис. 7.2.
Рис. 7.2. Структурная схема устройства управления световым эффектом “Призма”
Управление от микроконтроллера реализовано через драйвер к дви-
гателю и через двоично-десятичные дешифраторы — к светодиодам.
Как альтернатива, светодиодами можно управлять напрямую с портов
ввода-вывода или через буферы (рис. 7.3), однако в этом случае количе-
ство светодиодов уменьшается, поэтому такой вариант управления не-
целесообразен.
Тем не менее, у дешифраторов существует проблема включения од-
новременно всех выводов (или включение комбинации одновременно
несколько выводов). Дешифратор на рис. 7.2 выполняет роль одновре-
менно буфера и преобразователя кода. Включения комбинации свето-
диодов можно достичь путем свечения в динамическом режиме. Де-
шифраторы переключаются быстро — гораздо быстрее вращения приз-
мы. В результате за время поворота призмы светодиоды последователь-
но включаются несколько десятков раз, что дает ощущение постоянного
свечения. Применив динамический режим, можно полностью повторить
вариант управления через буферы. Для синхронизации включения све-
тодиодов относительно вращения призмы используется свето-, фотоди-
одная пара. При этом уровень срабатывания синхронизации регулирует-
ся переменным резистором.
144
Глава 7
Рис. 7.3. Альтернативная схема управления
Устройство собрано на плате управления (рис. 7.4).
Рис. 7.4. Конструкция устройства управления световым эффектом “Призма”
Световой эффект “Призма”
145
В центре платы установлена призма, которая вращается вокруг оси,
закрепленной на стойках. Вращение от двигателя к оси призмы можно
передать двумя методами: через пассик и ролики или через шестеренки.
Механическая часть устройства размещена по середине платы, а по се
краю установлены три линейки ультраярких светодиодов разных цве-
тов. Под призмой устанавливается свето- и фотодиод для формирования
импульсов синхронизации (рис. 7.5).
Рис. 7.5. Свето- и фотодиод под призмой
С другой стороны платы находятся микросхемы управления схе-
мой, а также двигатель вращения призмы. Конструкция призмы очень
проста. Корпус согнут из толстой (1 мм) прозрачной обложки для книг
или картона таким образом, чтобы торец принял форму треугольника.
Стороны скреплены стиплером и клеем. Затем на корпус наклеивается
пищевая фольга (желательно с хорошими отражающими свойствами),
которая аккуратно разглаживается, чтобы на ней не было складок. Из
пенопласта вырезается и вставляется внутрь корпуса призма. Пенопласт
необходимо приклеить к корпусу клеем, не содержащим ацетона (на-
пример, ПВА). Через центр пенопластовой вставки продевается ось, ко-
торую так же необходимо обработать клеем ПВА. После просушки на
ось надевается и фиксируется ролик или шестеренка (в зависимости от
выбора привода), а затем ось с шестеренкой (роликом) устанавливается
на стойки. Стойки можно изготовить из медных трубок, сплющенных
146
Глава 7
в овал и согнутых у нижнего края для крепления к плате, а на верхнем
крае имеющих отверстие для оси призмы. Стойки крепят к плате винта-
ми или заклепками.
Для уменьшения вибрации двигатель привода крепится к плате
(пластиковыми хомутами) через резиновую толстую прокладку (толщи-
на 5 мм), которую можно изготовить из старого ластика. Рядом с приз-
мой устанавливаются светодиоды так, чтобы не задеть корпус призмы
во время вращения. Их лучше прикрыть с обратной стороны, чтобы из-
лучаемый свет не рассеивался. Свет от светодиодов должен падать на
середину стороны призмы.
На плоскости призмы можно нанести черной тушью какой-нибудь
рисунок (например, символы, волны, стрелы и другие простые элемен-
ты). Тень от символов, перемещаясь по стене или потолку, будет созда-
вать эффект движения. Дополнительно на сторонах призмы можно так-
же наклеить детали из зеркального материала (например, бижутерию),
что создаст более рассеянное отражение.
Принципиальная схема
Схема (рис. 7.6) начинает работать с момента включения питания
ми кр оконтр оллера.
Питание микроконтроллера и микросхем — стабилизированное, что
предотвращает пульсацию от ультраярких светодиодов. Для уменьше-
ния пульсации от коммутации светодиодов рядом с шиной питания све-
тодиодов установлены конденсаторы С8 и С9, а рядом с драйвером дви-
гателя — конденсатор СЮ. Для исключения наводок на вход АЦП от
ядра процессора питание АЦП осуществляется через фильтр LI, С7.
На микросхему драйвера двигателя подается команда вращения,
а на микросхемы дешифратора — сигналы управления светодиодами.
Сигнал синхронизации поступает от светодиода на фотодиод, что по-
зволяет фиксировать положение призмы относительно светодиодов. Для
того чтобы избавится от постоянной составляющей напряжения, сни-
маемого с фотодиода, сигнал от фотодиода необходимо пропустить че-
рез конденсатор. Однако в результате уменьшится амплитуда прини-
маемого сигнала, поэтому в микроконтроллере используется входной
усилитель АЦП.
Заранее предусмотреть амплитуду импульса с фотодатчика невоз-
можно. В схеме присутствует переменный резистор R28, регулирующий
уровень срабатывания, но и это не дает полной гарантии получения им-
пульса синхронизации. Для полноценного сравнения уровня сигнала
Светозой эффект “Призма”
147
микроконтроллер применяет цифровой метод преобразования и сравне-
ния.
Рис. 7.6. Принципиальная схема устройства управления светоэффектом “Призма'
148
Глава 7
Хотя усилитель микроконтроллера имеет дифференциальный вход,
аналоговый метод сравнения — неточен, непредсказуем и характеризу-
ется большим гистерезисом. Программный же метод сравнения можно
подчинить определенным законам математики и цифровой логики, что
легко реализовать с помощью микроконтроллера. Кроме того, получен-
ный сигнал можно усилить путем цифрового умножения на константу.
Комбинация и метод формирования светового потока могут быть
абсолютно разными как по смыслу, так и по методу формирования “ра-
дуги”. Для достижения разнообразия световых эффектов автор преду-
смотрел переключение с помощью DIP-переключателя режимов работы
устройства, поэтому вновь придуманные программы можно коммутиро-
вать и проверять независимо друг от друга.
После выявления ошибок и уточнения необходимой комбинации
цветовой гаммы можно оперативно перепрограммировать микрокон-
троллер. Для этого в схеме присутствует разъем SV1. Работа схемы не
влияет на работу программатора в режиме программирования и не вы-
ведет его из строя.
В качестве схемы привода двигателя применена микросхема
LB1642 [19], которая очень хорошо адаптирована к цифровому управ-
лению. Кроме того, данная микросхема поддерживает реверсивное
управление двигателем, что позволяет оперативно менять направление
вращения призмы. Двигатель подключен к плате через разъе^м ST1, а для
уменьшения пульсаций установлены проходные фильтры ХС1 и ХС2.
Для уменьшения электромагнитного влияния на бытовые приборы кор-
пус двигателя заземлен на плате. Кварцевый резонатор работает на час-
тоте 4,194 МГц и содержит корректирующие конденсаторы С2 и СЗ.
Программа
Блок-схема алгоритма работы устройства показана на рис. 7.7. В на-
чале программы устанавливается конфигурация портов ввода-вывода,
а также в обязательном порядке инициализируется стек, иначе подпро-
граммы будут выполняться некорректно, с потерей адреса перехода.
Для активизации схемы программа запускает двигатель призмы в одном
из направлений вращения. Затем проверяется состояние DIP- переклю-
чателей, и начинается ветвление программы. Если выбрана программа
с синхронизацией от фотодатчика, то микроконтроллер ожидает им-
пульсы синхронизации. Как только поступил импульс синхронизации,
на порт вывода выдается сигнал включения комбинации светодиодов.
Когда задний фронт импульса опускается ниже допустимого уровня,
выход обнуляется.
Световой эффект “Призма”
149
Рис. 7.7. Алгоритм работы устройства управления световым эффектом “Призма”
В начальном состоянии светодиоды отключены, кроме светодиода
фотодатчика. Отражение света от светодиода на фотодатчике возникает
в момент, близкий к перпендикулярному положению стороны призмы
относительно оси фотодатчика. Амплитуда импульса с фотодатчика по-
ступает на микроконтроллер, и аналоговый сигнал с помощью АЦПЗ
преобразуется в цифровой.
Аналогичным образом уровень напряжения, снимаемый с движка
R28, поступает на АЦП4. Для работы АЦП выбирается опорное напря-
жение иист. Частота преобразования — 65 кГц. Цифровой код обоих
АЦП сравнивается в программе, и при попадании в область сравнения
(около 20 единиц) программа запускает подпрограмму вывода импуль-
сов на светодиоды. Как только уровень синхроимпульса становится ме-
150
Глава 7
ныне уровня напряжения R28, подпрограмма вывода импульсов на све-
тодиоды прекращает работу.
Для формирования светового эффекта обычного переключения све-
тодиодов недостаточно, поэтому автор вернулся к основам аналогового
телевидения. Эффект можно построить в динамическом режиме с по-
мощью кадров. Кадр имеет заданную комбинацию включения свето-
диодов (табл. 7.1).
Таблица 7.1. Порядок построения светодиодов (наклонная тетрада)
Кадр Шаг ПортО Порт В progl, 4, 7, 10,13 prog2, 5,8, 11,14 prog3, 6,9, 12,15
PD7 PD6 PD5 Р04 Свето- диоды PD3 PD2 PD1 PDO Свето- диоды РВ2|СвеТО’ 'диоды Порт D Порт В Порт С
FDJ гои
1 1 0 0 0 0 LED9 0 0 0 0 LED1 0 0 0 0 i LED17 00 I I 00 01
1 2 0 0 0 1 LED 10 0 0 0 1 LED2 0 0 0 1 I ILED18 11 i 02 01
1 3 0 0 1 0 LED 11 0 0 1 0 LED3 0 0 1 о I [LED19 22 04 I 01
1 4 0 0 1 1 LED 12 0 0 1 1 LED4 0 0 1 1 LED20 33 06 ! 01
1 5 0 1 0 0 LED 13 0 1 0 0 LED5 0 1 0 0 LED21 44 08 01
1 6 О 1 О 1 LED 14 0 1 0 1 LED6 О 1 О 1 LED22 55 OA О1
1 7 0 1 1 0 LED 15 0 1 1 0 LED7 0 1 1 0 LED23 66 । I oc 01
1 8 0 1 1 1 LED 16 0 1 1 1 LED8 0 1 1 1 LED24 77 0E 01
2 1 0 0 0 0 LED9 1 1 1 1 нет 1 1 1 1 I чет OF 1E 01
2 2 0 0 0 0 LED9 1 1 1 1 нет 1 1 1 1 I I нет OF 1E 01
2 3 0 0 0 0 LED9 0 0 1 0 LED3 1 1 1 1 I нет 02 1E 01
2 4 0 0 0 0 LED9 0 0 1 0 LED3 1 1 1 1 I нет 02 1E 01
2 5 1 1 1 1 нет 0 0 1 0 LED3 0 1 0 0 LED21 F2 08 01
2 6 1 1 1 1 нет 0 0 1 0 LED3 0 1 0 0 LED21 F2 08 01
2 7 1 1 1 1 нет 1 1 1 1 нет 0 1 0 0 LED21 FF 08 01
2 8 1 1 1 1 нет 1 1 1 1 чет 0 1 0 0 LED21 FF 08 01
3 1 1 1 1 1 нет 0 0 1 0 LED3 1 1 1 1 нет F2 1E 01
3 2 1 1 1 1 нет 0 0 1 0 LED3 1 1 1 1 нет F2 1E 01
3 3 1 1 1 1 нет 0 0 1 0 LED3 0 1 0 0 LED21 F2 08 I 01
3 4 1 1 1 1 нет 0 0 1 0 LED3 0 1 0 0 LED21 F2 08 I 01
3 5 0 0 0 0 LED9 1 1 1 1 нет 0 1 0 0 LED21 OF 08 I 01
3 6 0 0 0 0 LED9 1 1 1 1 нет 0 1 0 0 LED21 OF 08 i 01
3 7 0 0 0 0 LED9 1 1 1 1 нет 1 1 1 1 I -*ет OF 1E I 01
3 8 0 0 0 0 LED9 1 1 1 1 нет 1 1 1 1 I чет OF 1E ! 01
3 1 0 0 i о 1 LED10 0 0 0 0 LED1 0 0 0 0 ILED17 10 00 I 10
3 2 0 0 0 1 LED 10 0 0 0 0 LED1 0 0 0 о ; ILED17 10 00 I 10
3 3 0 0 1 1 LED 12 0 0 1 0 LED3 0 0 1 0 i iLED19 32 04 10
3 4 0 0 1 1 LED 12 0 0 1 0 LED3 0 0 1 0 I ILED19 32 04 10
3 5 0 1 0 1 LED 14 0 1 0 0 LED5 0 1 0 0 ILED21 54 08 10
3 6 0 1 0 1 LED 14 0 1 0 0 LED5 0 1 0 0 I ILED21 54 08 10
3 7 0 1 1 1 LED 16 0 1 1 0 LED7 0 1 1 0 I ILED23 76 0C i i 10
3 8 0 1 1 1 LED 16 0 1 1 0 LED7 0 1 1 0 I i LED23 76 I OC 10
3 1 0 0 0 0 LED9 0 0 0 1 LED2 0 0 0 1 I ILED18 01 I 02 10
3 2 0 0 0 0 LED9 0 0 0 1 LED2 0 0 0 1 I ILED18 01 I 02 10
3 3 0 0 1 0 LED 11 0 0 1 1 LED4 0 0 1 1 I LED20 23 | 06 10
3 4 0 0 1 0 LED 11 0 0 1 1 LED4 0 0 1 1 ! i LED20 23 i 06 10
3 5 0 1 0 0 LED 13 0 1 0 1 LED6 0 1 0 1 ! ILED22 45 0A 10
3 6 0 1 0 0 LED 13 0 1 0 1 LED6 0 1 0 1 i i LED22 45 0A 10
3 7 0 1 1 0 LED 15 0 1 1 1 LED8 0 1 1 1 •LED24 67 0E 10
3 8 0 1 1 0 LED 15 0 1 1 1 LED8 0 1 1 1 *LED24 67 0E 10
Световой эффект “Призма"
151
Например, кадру 1 соответствует включение всех светодиодов. Этот
кадр повторяется 10 раз в течение импульса синхронизации. Поскольку
призма вращается со скоростью примерно 300 об/мин, то для включения
эффекта в течение 0,5 с необходимо около 150 кадров (300 кадров в се-
кунду). Точнее количество кадров можно выяснить по длительности
импульса синхронизации.
В дальнейшем с помощью хороших зеркал и сфокусированного све-
та светодиодов можно формировать надписи и даже изображения, по-
скольку кадр может состоять из нескольких десятков строк.
По аналогии с телевидением светодиоды в конструкции установле-
ны тетрадами, комбинация цвета в котором формирует пиксель. Тетра-
ды бывают двух видов: наклонная и треугольная. Для упрощения конст-
рукции мы выбрали первый вариант, однако для формирования изобра-
жения предпочтительнее второй вариант.
Светодиоды следует гасить, пока импульс синхронизации не спадет
до минимума. При этом размах светового пятна сузится. Если гашение
происходит с задержкой после ниспадающего фронта, то у светового
пятна будет затухающий след. Если перейти на программу формирова-
ния включения и выключения светодиодов независимо от синхрониза-
ции относительно вращения и синхронизировать по равным промежут-
кам отсчета таймера, то возникнут прерывистые световые отрезки и за-
тухающие/вспыхивающие световые пятна. Все это можно комбиниро-
вать с изменением цвета или комбинацией цветов.
Кроме изменения светового потока, можно изменять направление
вращения призмы. В результате можно создать цветовой хаос или из-
менчиво мелькающую картину (художественный образ). Порядок вклю-
чения светодиодов указан в табл. 7.1, где указаны различные варианты
включения комбинации светодиодов относительно прямого и обратного
вращения двигателя, с запаздывание по фронту, с независимой работой
без синхронизации, с узким следом и с широким следом свечения. Ав-
тор предлагает несколько простых световых эффектов. Для расширения
возможностей устройства можно добавить любые эффекты на свой
вкус.
Программа на ассемблере представлена в листинге 7.1, а шестна-
дцатеричный код — в листинге 7.2. Соответствующие файлы prizma3 .
asm и prizina3.hex находятся на прилагаемом к книге компакт-диске
в папкеПрограммы\07 - Призма.
152
Глава 7
Листинг 7/L Программа управления световыми эффектом “Приама"
.include "C:\Program Files\Atmel\AVR Studio\Appnotes\m8def.in
/Автор: Кравченко А.З.
/Дата: 19.10.2007
/Версия: 1.1.3
/Имя файла: Prizma3.asm
/Микроконтроллер: AVR mega8.
/Тактовая частота: 4мГц
/Питание: стабилизированное 5 В
def tmp = rl 6
def coc = rl7
def vih = rl8
def tempo = rl 9
def pir = r22
def tmp3 = r23
def tt2 = r20
def Y = r2 9
def X = r30
def pur = r2 6
def adr = rO
def prgl = r2 4
def prg2 = r25
def tmp2 = r27
def cadr = r2 8
def tp = г21
def par = г31
. cseg
/Начало области памяти, вектор прерывания
. org 0
rjmp RESET
пор /rjmp INTO
пор /rjmp INTI
пор /rjmp TIMER2 COMP
пор /rjmp TIMER2 OVE
пор /rjmp TIMER1 CAPT
пор /rjmp TIMER1 COMPA
пор /rjmp TIMER1 COMPB
пор /rjmp TIMER1 OVE
пор /rjmp TIMERO OVE
пор /rjmp SPI, STC
пор /rjmp USART, RXC
пор ;rjmp USART, UDRE
пор /rjmp USART, TXC
пор /rjmp ADC
Светозой эффект “Призма’
153
Л истин Продолжен ие^
пор пор пор пор /rjmp / rjmp /rjmp /rjmp EE_RDY ANA_COMP TWI SPM—RDY
Начало всей программы без вектора прерывания
org 22
настройка портов В, C, D
1ESET: пор
clr tmp
clr coc
выходы на микросхему IC4
Idi coc, $3C /Порт В,-выходы РВ2
out DDRB, coc
out PORTB, tmp /обнулить порт В
выходы на микросхему DD1
clr coc
Idi coc, $03 /Порт С-выходы РС0,РС1
out DDRC, coc
out PORTC, tmp /обнулить порт С
выходы на микросхемы IC2, IC3
clr coc
Idi coc, $FF /Порт D-выходы PD0-7
out DDRD, coc
out PORTD, tmp /обнулить порт D
/установка верхнего уровня стека
Idi tmp, low(RAMEND)
out SPL, tmp
;режим работы таймера T2
Idi tmp2,$02
nop ; out TIMSK,tmp3 /разрешаем прерывания по
/переполнению от ТО
clr rmp2
/настройка таймера Т2 с максимальным предварительным делением
/выбор коэффициента предварительного деления тактовой частоты
и автоматический сброс таймера при совпадении
Idi out tmp2,$ 07 TCCR2,tmp2 /настройка режима #00000111
сброс всех значений
cli /общее запрещение прерываний
clr pir
clr tmp3
clr prgl
clr prg2
clr adr
clr cadr /сбрасываем кадр
154
Глава 7
Листинг 7.1. Продолжение «
/Начало программы
nStart: пор nop /начало программы
rcall пор DIP /проверяем DIP
cpi tp, $6 /проверка условия синхронизации
brlt Ikj
rjmp Ikj : пор пор opu
Idi tmp2, $56 /задаем режим работы АЦП2
rcall adcn2 /считываем выставленный уровень
mov X, tmp3 /младший байт
mov Y, tmp2 /старший байт
POP X
Pop hgf: nop Y
Idi tmp2, $34 /задаем режим работы АЦП1
rcall nop adcnl /считываем импульс синхронизации
/двухбайтовое сравнение
ср Y, tmp2 /сравниваем старшие байты
brge nop mbc
cp X, tmp3 /сравниваем младшие байты
brio mbc: nop vvs
rjmp vvs: nop hgf
rcall opros /вывод одного кадра 10 раз
nop
/изменение условия
inc cpi brio clr cadr cadr, 4 rewq cadr /всего 4 кадра
rewq: пор /двухбайтовое сравнение hgfu: пор Idi tmp2, $34 /задаем режим работы АЦП1
rcall adcnl /считываем импульс синхронизации
nop rcall opros /вывод одного кадра 10 раз
nop push push X Y
Световой эффект “Призма’
155
Листинг 7.1, Продолжение
ср Y, tmp2 /сравниваем старшие байты
brio mbus
пор
ср X, tmp3 ;сравниваем младшие байты
brge kkdu
mbus : • пор
rjmp hgfu
kkdu: пор
rjmp nStart
пор
;Программа без синхронизации
ори: пор
rcall time ;задаем режим без синхронизации
cpi Y, $45 /проверяем, достиг ли таймер значения
brge mbhs
пор
rjmp werv
mbns: пор
rjmp opu
werv: nop
rcall opros /вывод одного кадра 10 раз
nop
inc pir
cpi pir, $96 /сравниваем 150 раз
brge nnmd
nop
clr pir
inc cadr
cpi cadr, 4 /всего 4 кадра
brio rsgj
clr cadr
nnmd: nop
r jmp werv
nop rsgj: nop
rjmp nStart
;Подпрограмма опроса DIP
DIP: nop
in tmp, PORTB
clr tp /очистка регистра
sbis PINB, 0 /пропустить, если не нажат DIP1
rjmp qqO
si : nop
sbis PINB, 1 /пропустить, если не нажат DIP2
rjmp qql
156
Глава 7
Листинг 7Л Продолжение
s2 : in tmp, PORTC
nop
sbis PINC, 5 /пропустить, если не нажат DIP3
rjmp qq2
s3: nop
clr tmp
clz '/сброс флага нуля
cp tp, tmp /проверяем, были ли нажаты DIP
breq fff
rjmp ex
fff: nop
Idi tp, $1E /по умолчанию 30
rjmp ex
nop
qqO: nop
Idi tmp, $01
add tp, tmp /к регистру добавить 1
rjmp SI
qql: nop
Idi tmp, $05
add tp, tmp /к регистру добавить 5
rjmp S2
qq2: nop
Idi tmp, $0A
add tp, tmp /к регистру добавить 10
rjmp S3
nop
ex: nop
ret
time: nop
nop
ret
/подпрограмма АЦП1, настройка АЦП1
adcnl: nop
nop
clr tmp
awe: nop
cpi tmp, $04 /считывание АЦП 4-раза
brsh ass /более 4-х раз
nop
out ADMUX, tmp2 /коммутация входов АЦП
/Подпрограмма задержки 125 мкС
пор
clr Y
Световой эффект "Призма’
157
Листинг 7.1* Продолжение
Idi cln Y, $24 ;задаем цикл /сброс флага знака
dx3 : nop
dec Y /цикл начало
nop
brpl dx3 /проверка условия '
nop
clr tmp2
clr tmp3
Idi tt2, $C5 /одиночное, запуск, 1/32
out ADCSR, tt2 /запуск АЦП на преобразование
/Сохранение данных АЦП
in tmp2, ADCL /чтение младшего байта АЦП
in tmp3, ADCH /чтение старшего байта АЦП
mov r2, tmp2 /запомнить временно
mov r3, tmp3 /запомнить временно
mov r4, r2 ;запомнить временно
mov r5, r3 /запомнить временно
mov r6, r4 /запомнить временно
mov r7, r5 /запомнить временно
inc rjmp tmp awe /увеличить на 1
/среднее арифметическое ass: nop clr r8 действие
/для младшего clc байта /сброс флага переноса
add tmp2, r2 /сложение с предыдущим
adc r 9, r8 /сложение с переносом
add tmp2, r4 /сложение с предыдущим
adc r9, r8 /сложение с переносом
add tmp2, r6 /сложение с предыдущим
adc clc r9, r8 /сложение с переносом
Isr r 9 /сдвиг вправо
ror tmp2 /сдвиг вправо через перенос
Isr r9 /сдвиг вправо
ror clr clc tmp2 r9 /сдвиг вправо через перенос
/для старшего байта
add tmp3, r3 /сложение с предыдущим
adc r9, r8 /сложение с переносом
add tmp3, r5 /сложение с предыдущим
adc r9, r8 /сложение с переносом
add tmp3, r7 /сложение с предыдущим
158
Глава 7
Листинг 7.1. Продолжение
adc r9, r8 /сложение с переносом
clc
Isr r 9 /сдвиг вправо
ror tmp3 /сдвиг вправо через перенос
Isr r9 /сдвиг вправо
ror tmp3 /сдвиг вправо через перенос
nop /младший байт tmp2, старший tmp3
ret
;подпрограмма АЦП2, настройка АЦП2
adcn2: nop
nop
clr tmp
awew: nop
cpi tmp, $04 /считывание АЦП 4-раза
brsh assw /более 4-х раз
nop
out ADMUX, tmp2 /коммутация входов АЦП
clr tmp2
clr tmp3
Idi tt2, $C5 /одиночное, запуск, 1/32
out ADCSR, tt2 /запуск АЦП на преобразование
;Сохранение данных АЦП
in tmp2, ADCL /чтение младшего байта АЦП
in tmp3, ADCH /чтение старшего байта АЦП
mov r2, tmp2 /запомнить временно
mov r3, tmp3 /запомнить временно
mov r4, r2 /запомнить временно
mov r5, r3 /запомнить временно
mov r6, r4 /запомнить временно
mov r7, r5 /запомнить временно
inc tmp /увеличить на 1
r jmp awew
/среднее арифметическое действие
assw: nop
clr r8
/для младшего байта
clc /сброс флага переноса
add tmp2, r2 /сложение с предыдущим
adc r9, r8 /сложение с переносом
add tmp2, r4 /сложение с предыдущим
adc r9, r8 /сложение с переносом
add tmp2, r6 /сложение с предыдущим
adc r9, r8 /сложение с переносом
clc
Isr r9 /сдвиг вправо
ror tmp2 /сдвиг вправо через перенос
Световой эффект “Призма’
159
Листинг 7\1- Продолжение
lsr r9 /сдвиг вправо
ror tmp2 /сдвиг вправо через перенос
clr r9
clc
для старшего байта
add tmp3, r3 /сложение с предыдущим
adc r9, r8 /сложение с переносом
add tmp3, r5 /сложение с предыдущим
adc r9, r8 /сложение с переносом
add tmp3, r7 /сложение с предыдущим
adc r9, r8 /сложение с переносом
clc
lsr r9 ;сдвиг вправо
ror tmp3 /сдвиг вправо через перенос
lsr r9 /сдвиг вправо
ror tmp3 /сдвиг вправо через перенос
nop /младший байт tmp2, старший tmp3
ret
/Подпрограмма опроса светодиодов
opros: пор
пор
progo: пор
/Первая подпрограмма светоэффектов
cpi pir, $0C
nop breq prn2
Idi ZH, high (2*progl)
Idi ZL, Low(2*progl)
Add ZL, pir
LPM
mov prgl, adr
Включение верхней половины схемы светодиодов
out PORTC, prgl
nop
Idi ZH, high(2*prog2)
Idi ZL, Low(2*prog2)
Add ZL, pir
LPM
mov prgl, adr
Включение нижней половины схемы светодиодов
out PORTD, prgl
nop
Idi ZH, high(2*prog3)
Idi ZL, Low(2*prog3)
Add ZL, pir
LPM
160
Глава 7
Листинг 73. Продолжение
mov prgl, adr
;Включение привода двигателя
out PORTB, prgl
пор
inc pir
inc tempo
пор
ргп2: пор
/Вторая подпрограмма светоэффектов
cpi pur, $0C
пор
breq prn3
Idi ZH, high(2xprog4)
Idi ZL, Low(2*prog4)
Add ZL, pur
LPM
mov prg2, adr
/Включение верхней половины схемы светодиодов
out PORTC, prg2
nop
idi ZH, high(2xprog5)
idi ZL, Low(2*prog5)
Add ZL, pur
LPM
mov prgl, adr
;Включение нижней половины схемы светодиодов
out PORTD, prgl
nop
idi ZH, high (2*prog6)
idi ZL, Low(2*prog6)
Add ZL, pur
LPM
mov prgl, adr
;Включение привода двигателя
out PORTB, prgl
nop
inc pur
dec tempo
nop
ргпЗ: nop
/Третья подпрограмма светоэффектов
cpi par, $0C
nop
breq prn4
Световой эффект “Призма’
161
Листинг 7Л Продолжение
Idi ZH, high (2*prog7)
Idi ZL, Low(2*prog7)
Add ZL, par
LPM
mov prg2, adr
/Включение верхней половины схемы светодиодов
out PORTC, prg2
nop
Idi ZH, high(2*prog8)
idi ZL, Low(2*prog8)
Add ZL, par
LPM
mov prgl, adr
/Включение нижней половины схемы светодиодов
out PORTD, prgl
nop
Idi ZH, high(2*prog9)
Idi ZL, Low(2*prog9)
Add ZL, par
LPM
mov prgl, adr
/Включение привода двигателя
out
nop
inc
PORTB, prgl
par
prn4 : nop
ret
.org $300
progl:
.DB $01, $00, $01, $00, $01, $10, $11, $03
.DB $05, $09, $21, $01
prog2:
\ DB $0F, $1C, $38, $70, $E0, $C0, $00, $00
.DB $00, $00, $00, $01
prog3:
.DB $01, $00, $01, $00, $01, $00, $01, $03
.DB $00, $00, $00, $00
prog4:
.DB $00, $00, $20, $08, $04, $02, $11, $01
.DB $01, $01, $01, $01
prog5:
162
Глава 7
Л истинг 7 Л * О ко н ча н ие
.DB $ 06, $01, . DB $40, $20, $00, $10, $00, $00, $00, $08 $00, $30
ргодб: . DB $00, $00, .DB $01, $01, $00, $01, $00, $00, $00, $01 $01, $01
ргод7 : . DB $01, $01, . DB $2Е, $1F, $21, $17, $29, $2D, $2E, $01 $3F, $3F
ргод8: . DB $06, $0F, .DB $F0, $Е0, $1F, $C0, $3F, $7F, $FF, $00 $FF, $F9
prog9: .DB $02, $00, .DB $00, $00, proglO: .DB $00, $28, .DB $00, $00, $02, $00, $0C, $10, $00, $02, $00, $00 $06, $12, $10, $10 $02, $00, $03 $00
progl1: .DB $06, $00, .DB $30, $18, $00, $0C, $00, $00, $80, $06 $C0, $60
progl2: .DB $02, $00, .DB $00, $00, $02, $ 00, $00, $02, $00, $00 $02, $03
.EXIT
Листинг 7.2. Шестнадцатеричный код управления эффектом “Призма”
: 020000020000FC
:1000000015С000000000000000000000000000001В
:1000100000000000000000000000000000000000Е0
:06002000000000000000DA
:Ю002СО00000002711271СЕ317ВВ08ВВ11271ЗЕ0А6
:10003С0014ВВ05ВВ11271FEF11BB02BB0FE50DBF96
:10004С00B2E00000BB27B7E0B5BDF8946627772770
:10005С00882799270024СС27000000004AD00000F4
:10006C0056300CF02DC00000000036E5A6D0E72FEE
:10007C00DB2FEF91DF910000B4E363D00000D3173E
:10008C001CF40000E71710F00000F5CF0000C8D0FA
:10009C000000C395C43008F0CC2700000000B4E386
:1000AC0050D000003DD00000EF93DF93D31718F0A9
Световой эффект “Призма’
163
Листинг 7.2* Окончание
:1000BC000000E71714F40000F1CF0C00CDCF0000D2
:1000CC00000О3CD0D53414F4О00002С00000F8CF7E
:1000DC000000A6D000006395663934F40000662752
:1GOOECOOC395C43O2OFOCC27OOO0F2CF0OOOOOOOF4
:1000FC00B3CF000008B35527B09B11C00000B19BD3
:10010C0012C005B300009D9B12C0000000279894FC
:10011C00501709F011C000005SE10EC00000000095
:10012C0001E0500FEBCF000005E0500FEACFOOOQCC
:10013COOOAE0500FEACF0000000008950000000014
:10014С00089500000000002700000430C8F4ООО0EF
:10015C00B7B90000DD27D4E2A8940000DA95Q00ОВЕ
:10016C00E2F70000BB27772745EC46B9B4B175B16F
:10017C002B2E372E422C532C642C752C0395E4CF4C
:10018C00000088248894B20D981CB40D981CB60DF0
:10019С00981С88949694В7959694В79599248894ВЕ
:1001АС00730D981C750D981C770D981C889496945В
:1001ВС00779596947795000008950000000000272D
:1001CC000000043080F40000B7B9BB27772745EC5A
:1001DC0046В9В4В175В12В2Е372Е422С532С642С4Е
:1001EC00752C0395EDCF000088248894B20D981CD3
:1001FCO0В40D981CB60D981С88949694В79596944В
:10020С00В79599248894730D981C750D981C770DCF
:10021C00981C8894969477959694779500000895F9
:10022C000000000000006C300000C1F0F6E0E0E0DF
:10023C00E60FC895802D85BB0000F6E0ECE0E60FDC
:10024C00C895802D82BB0000F6E0E8E1E60FC8956A
:10025C00802D88BB00006395339500000000AC3006
:10026C000000C1F0F6E0E4E2EA0FC895902D95BBD2
:1002 7C000 00 0F6E0E0E3EA0FC895802D82BB000 09 9
:10028C00F6E0ECE3EA0FC895802D88BB0000A3953F
:10029C003A9500000000FC300000B1F0F6E0E8E414
:1002AC00EF0FC895902D95BB0000F6E0E4E5EF0F3D
:1002BC00C895802D82BB0000F6E0E0E6EF0FC895F4
:0C02CC00802D88BB0000F3950000089511
:10060 000010 0010001101103050921010F1C387 ОСО
:10061000Е0С0000000000001010001000100010332
:100620000000000000002008040211010101010186
:1006300006010000000000804020100800000000BB
:100640000000010101010101010121292D2E3F3F7F
:100650002E1F1701060F1F3F7FFFFFF9F0E0C000BC
:1006600002000200020002030000000000280СО645
:100670001210000000001010060000000080С06092
:100680003018ОСО 602000200020002030000000005
:00000001FF
164
Глава 7
Монтажная плата
Себестоимость устройства без корпуса составляет примерно $25.
Монтажная плата (рис. 7.8) изготовлена из двухстороннего текстолита.
Ее габаритные размеры — 160x95 мм.
НН &Н Н >Н^И I Н
Рис. 7.8. Монтажная плата для управления световым эффектом “Призма” (начало)
Световой эффект “Призма'
165
Рис. 7.8. Продолжение
Глава 7
40
чО
Световой эффект “Призма”
167
Автор собрал устройство на макетной плате. Все детали, кроме рези-
сторов, — импортного производства. Все микросхемы (кроме драйвера
LB1642) установлены на панельки для упрощения демонтажа в случае
оперативной замены. Резисторы для светодиодов — мощностью 0,25 Вт.
Резистор R29 — мощностью 2 Вт. Рабочее напряжение двигателя (поза-
имствован из нерабочей игрушки) для вращения призмы — 3,5..5 В. Све-
тодиоды — любые ультраяркие. Обычные светодиоды непригодны из-за
слабого свечения. Вместо микросхемы 74НС42 можно использовать
К155ИД6, К155ИД10. Дроссель L1 — 47..100 мкГн, 16 В. Кварцевый ре-
зонатор — любой на 4 МГц (RC-цепочки или встроенный генератор ис-
пользовать нежелательно). Конденсаторы ХС1, ХС2— 0,1..0,47 мкФ,
63 В. Остальные конденсаторы — на рабочее напряжение не более 16 В.
Вместо DIP S2 можно использовать перемычки. Кнопка сброса
S1 — миниатюрная и необходима только при настройке, поэтому ее
можно выполнить в виде перемычки. Разъем SV1 — IDC10, однако
можно использовать и отрезок от двухрядной линейки штырьков. Если
блок питания подключен к устройству постоянно, то разъем S1 можно
не устанавливать.
Фотодатчик D1 — любой фотодиод, работающий в световом диапа-
зоне. Можно использовать фотодиод в инфракрасном диапазоне. При
этом светодиод так же должен быть в инфракрасном диапазоне, с той же
длиной волны. Перед установкой на плату фотодиод и светодиод необ-
ходимо обмотать фольгой по периметру их корпуса, чтобы не закоро-
тить выводы. Верхний край полученной трубки не должен препятство-
вать вращению призмы. Свето- и фотодиод должны быть немного на-
клонены друг к другу, чтобы их оси совпадали с осями прямого и отра-
женного светового потока от стороны призмы (рис. 7.9).
Перед монтажом выводы ультраярких светодиодов необходимо со-
гнуть под углом 105°. На плату светодиоды устанавливаются линейка-
ми. Красные светодиоды — LED 1-8, синяя — LED9-16, зеленая —
LED 17-24, что соответствует наклонной тетраде. На выводы светодио-
дов можно натянуть и нагреть ПВХ термотрубки, что придаст светодио-
дам большую устойчивость.
Программу, представленную в листинге 7.2, можно ввести в микро-
контроллер с помощью программатора через разъем SV1, а в случае мо-
дернизации программы перепрограммировать устройство заново. Пита-
ние программатора можно получать от схемы питания устройства. Во
время программирования микроконтроллера необходимо активизиро-
вать режим с внешним кварцевым резонатором 4 МГц: СКРОТ — 1,
168
Глава 7
CKSEL — 111 (это можно сделать с помощью программы программато-
ра).
Рис. 7.9. Направление свето- и фотодиода
Настройка схемы
При настройке фотодатчика следует установить положение одной
из сторон призмы параллельно монтажной плате и включить схему без
привода (отсоединить от схемы провод от двигателя). При таком поло-
жении призмы светодиоды устанавливаются под наклоном в 15° по от-
ношению к плате, и траектория луча будет соответствовать рис. 7.9.
Затем следует проверить уровень сигнала на фотодатчике (напря-
жение на R26) и выставить положение светодиода так, чтобы этот уро-
вень был максимальным. Далее проводя двигателя подключают к схеме
и включают устройство.
Синхронизация включения светодиодов относительно вращения
призмы подстраивается движком R28 постепенно. Эту операцию лучше
выполнять в темноте. Затем можно проверить работоспособность уст-
ройства на свету, однако фотодатчик желательно прикрыть по бокам
светонепроницаемым материалом. Установите устройство горизонталь-
но или наклоните плату в необходимом направлении (например, для по-
лучения бликов на потолке). Устройство можно маскировать искусст-
венными растениями или полупрозрачными предметами. Эффект дол-
жен проявиться сразу же после подачи питания.
Глава 8
Устройства на основе АЦП и ЦАП применяются в промышленности
давно. Регулирование процессов управления исполнительными элемен-
тами подразумевает использование ЦАП. Генератор на микроконтрол-
лере (рис. 8.1) придуман для детального изучения свойств АЦП и ЦАП
радиолюбителями. Одно из направлений его практического примене-
ния— синтезатор периодических сигналов любых форм, синтезатор
звуковых частот и комбинаций звука, имитация музыкальных и речевых
блоков.
Рис. 8.1. Генератор на микроконтроллере
170
Глава 8
Для упрощения задачи моделирования в основе схемы применен
микроконтроллер AT tinyl5 фирмы Atmel [8], оснащенный флэш-па-
мятью на 1 Кбайт, памятью EEPROM на 64 байта, шестью линиями вво-
да-вывода, встроенным RC-генератором, 10-разрядным АЦП с четырь-
мя входными аналоговыми каналами, аналоговым компаратором и дву-
мя таймерами/счетчиками. Работа АЦП широко описана в литературе
[16, 20-22], тогда как ЦАП начали интенсивно применять в последние
10 лет [20-22]. В промышленности более широкое применение получи-
ли АЦП, которые по структуре построения гораздо сложнее ЦАП [20-
22], однако применение ЦАП на современном этапе стало неотъемле-
мой тенденцией в промышленных преобразователях, инверторах и ро-
ботизированных комплексах.
Что же такое ЦАП и каковы его функции? ЦАП предназначен для
преобразования числа из двоичного кода в напряжение или ток, про-
порциональные значению цифрового кода [21]. Для работы с микрокон-
троллером с малым количеством выходов автор использовал ЦАП
DAC7512 с последовательным управлением и выходом по напряжению
[23]. Это маломощный одноканальный 12-разрядный цифро-аналоговый
преобразователь с выходом по напряжению через операционный усили-
тель, встроенный в микросхему. Для управления ЦАП используется
трех проводной последовательный интерфейс, который способен рабо-
тать на частоте до 30 МГц и совместим со стандартным интерфейсом:
SPI, QSPI, Microwire и DSP [21].
В состав DAC7512 (рис. 8.2) (корпус S-PDSO-G8) входит схема
сброса при включении питания, которая обнуляет выходы, и сохраняет
их в таком положении до тех пор, пока не появляются новые данные на
информационном входе ЦАП.
Кроме того, ЦАП формирует внутри микросхемы опорное напря-
жение Uref из напряжения питания Udd. Входная схема управления
преобразует полученные 12-разрядные данные в код для ЦАП. Эти дан-
ные фиксируются в регистре, и после преобразования на выходе ЦАП
получается аналоговый ток выходного сигнала. Работать с аналоговым
током неудобно, поэтому обычно в схемотехнике устройств с ЦАП по-
сле преобразователя устанавливается операционный усилитель. Опера-
ционный усилитель преобразует аналоговый ток в аналоговое напряже-
ние сигнала, которое легко используется в остальной части любой схе-
мы.
Внутри микросхемы DAC7512 после ЦАП присутствует встроен-
ный операционный усилитель. В дежурном режиме работы DAC7512
управление осуществляется через последовательный интерфейс, что по-
Микроконтроллерный генератор
171
зволяет уменьшить ток потребления прибора до 50 нА при питании 5 В
[23]. Такое решение идеально подходит для применения в портативных
приборах с батарейным питанием.
При более подробном рассмотрении собственно ЦАП (рис. 8.3)
схема работает следующим образом. Элементы ЦАП преобразуют
опорное напряжение Uref в ток, пропорциональный заданному коду U0-
U12 с помощью включения комбинации одинаковых сопротивлений R.
Далее ток преобразуется в напряжение выходным усилителем Ku. Сле-
дует также отметить, что для ускорения понимания смысла работы ЦАП
представленная схема была несколько упрощена.
Для формирования сигналов управления DAC7512 необходимо со-
блюсти временные характеристики передачи данных (рис. 8.4).
Здесь tl — минимальная длительность периода тактовых импульсов
(SCLK), составляющая 50 нс. Длительность импульса синхронизации
(SYNC) также равна 50 нс. Время t2 уходит на установку импульса дан-
ных DIN относительно заднего фронта тактового импульса SCLK и со-
ставляет 5 нс (минимальная длительность импульса данных — 9,5 нс).
172
Глава 8
Импульс синхронизации SYNC относительно тактовых импульсов
SCLK подается в противофазе t3 = t4 0 нс.
Рис. 8.3. Структурная схема ЦАП
Рис. 8.4. Временные характеристики передачи данных для схемы DAC7512
Рассмотрев структуру ЦАП, перейдем к структуре построения всего
генератора. Генератор (рис. 8.5) состоит из трех основных элементов:
• микроконтроллер со встроенным АЦП и программой управления;
• ЦАП;
• фильтр верхних частот третьего порядка.
Микроконтроллерный генератор
173
На вход АЦП микроконтроллера подается напряжение для управле-
ния частотой генерации, которое преобразуется в цифровой код. Про-
порционально полученному цифровому коду формируются паузы меж-
ду цифровыми уровнями сигнала, передаваемыми на ЦАП. В программе
микроконтроллера в таблице данных прописан код формируемого сиг-
нала. Этот код сформирован как коэффициенты, устанавливаемые
в ЦАП. Код передается в DAC7512 по линии связи согласно временном
характеристикам, рассмотренным ранее.
Получив данные, входная схема управления преобразует последо-
вательный код в параллельный D0-D11 и фиксирует его в регистре.
ЦАП согласно с уровнями U0-U11 коммутирует резистивную цепочку
и формирует ток аналогового сигнала. Ток преобразуется в напряжение
выходным операционным усилителем. Поскольку уровень напряжения,
выводимый на выход ЦАП, имеет ступенчатую форму, то для сглажи-
вания сигнала установлен фильтр верхних частот третьего порядка. По-
сле фильтра получаем сглаженный аналоговый сигнал.
Принципиальная схема
Схема (рис. 8.6) собрана на трех микросхемах:
• IC1 —микроконтроллер tinyl 5;
• IC2 — ЦАП DAC7512;
• IC3 — операционный усилитель L2722.
Задействованные в схеме детали:
• микроконтроллер — ATtinyl5L-lPI в корпусе DIP;
• DAC7512 Е/250 PBF в корпусе микросхемы S-PDSO-G8;
• операционный усилитель L2722 в корпусе DIP-8;
• все резисторы мощностью 0,125 Вт;
• светодиод — любой на ток 5 мА;
• кнопка сброса — любая на ток 0,01 мА;
174
Глава 8
• кнопка по питанию — любая на ток 200 мА и выше;
• конденсаторы — безиндукционные на напряжение 6,3 В и выше;
• переменный резистор R7 — СПЗ-16а на 100 кОм;
• регулятор частоты Р1 — импортного производства, любой на
10 кОм, для вертикального монтажа.
Питание всех трех микросхем — нестабилизированное, от трех ба-
тарей типа AAA G1-G3. Кнопка S1 предназначена для сброса микро-
контроллера в начальное состояние в случае сбоя, a S2 — это выключа-
тель питания схемы.
При подаче питания включается свегодиод LED1, что позволяет
убедиться в работоспособности батарей питания. Для управления часто-
той генератора присутствует переменный резистор Р1. Уровень напря-
жения, регулируемый Р1, снимает АЦП IC1 на выводе 3.
В процессе выполнения программы данные передаются от IC1 через
выводы 5, 6, 7 к IC2 на выводы 7, 6, 5. Напряжение генерируемого сиг-
нала поступает с IC2 на переменный резистор R7 и далее — на вход
ЮЗА (вывод 7). Операционный усилитель от компании SGS-Thomson
выбран, исходя из рабочего питания схемы [24]. В одном корпусе мик-
росхемы IC3 присутствует два операционных усилителя:
• ЮЗА выполняет роль усилителя тока (для увеличения мощности
сигнала) и масштабирующего усилителя;
• IC3B — фильтр ВЧ третьего порядка.
На выходе ЮЗВ (вывод 3) получаем сглаженный аналоговый сигнал
заданной формы.
Программа
Блок-схема алгоритма работы генератора показана на рис.8.7. Автор
предлагает изменять считанные АЦП значения один раз за 10 800 цик-
лов вывода констант в ЦАП, что составит 30 полных периодов синусо-
идного сигнала. В том случае, если девиация сигнала недопустима, то
необходимо изменить алгоритм, определив считывание АЦП только по-
ле нажатия кнопки “Сброс”, не допуская опрос АЦП в режиме реально-
го времени.
Для получения специальной формы сигнала в конце программы
прописываются константы, которые опрашиваются программой и выво-
дятся в ЦАП. Константы можно проверить по таблицам Брадиса [25].
Для вывода данных в 10- (базис 512) или 12-разрядном (базис 2 048)
формате автор разработал табл. 8.1.
Микроконтроллерный генератор
175
470К 470К
176
Глава 8
Рис. 8.7. Алгоритм работы генератора
Таблица 8.1. Значения функции sin(x)
Гра- дусы sin(x) Коэффициент с базис окр. hex/10 Коэффициент с базис окр. hex/12
0 0,00000 512 0200 2048 0800
1 0,01745 521 0209 2084 0824
2 0,03490 530 0212 2119 0847
3 0,05234 539 021В 2155 086В
4 0,06976 548 0224 2191 088F
5 0,08716 557 022 D 2226 08В2
6 0,10453 566 0236 2262 08D6
Микроконтроллерный генератор
177
Таблица 8.1. Продолжение
Гра- дусы sin(x) Коэффициент с базис окр. hex/10 Коэффициент с базис окр. hex/12
! 7 0,12187 574 023Е 2298 08FA
8 0,13917 583 0247 2333 091D
9 0,15643 592 0250 2368 0940
10 0,17365 601 0259 2404 0964
11 0,19081 610 0262 2439 0987
12 0,20791 618 026А 2474 09АА
13 0,22495 627 0273 2509 09CD
14 0,24192 636 027С 2543 09EF
15 0,25882 645 0285 2578 0А12
16 0,27564 653 028D 2613 0А35
17 0,29237 662 0296 2647 0А57
18 0,30902 670 029Е 2681 0А79
19 0,32557 679 02А7 2715 ОАЭ В
20 0,34202 687 02AF 2748 0ABC
21 0,35837 695 02В7 2782 0ADE
22 0,37461 704 02С0 2815 0AFF
23 0,39073 712 02С8 2848 0В20
24 0,40674 720 02D0 2881 0В41
25 0,42262 728 02D8 2914 0В62
26 0,43837 736 02Е0 2946 0В82
27 0,45399 744 02Е8 2978 0ВА2
28 0,46947 752 02F0 3009 0ВС1
29 0,48481 760 02F8 3041 0ВЕ1
30 0,50000 768 0300 3072 осоо
31 0,51504 776 0308 3103 0C1F
32 0,52992 783 030F 3133 0C3D !
33 0,54464 791 0317 3163 0С5В |
34 0,55919 798 031Е 3193 0С79 I
35 0,57358 806 0326 3223 0С97 j
36 0,58779 813 032 D 3252 0СВ4
37 0,60182 820 0334 3281 0CD1
38 0,61566 827 033В 3309 0CED
39 0,62932 834 0342 3337 0D09
40 0,64279 841 0349 3364 0D24
41 0,65606 848 0350 3392 0D40
42 0,66913 855 0357 3418 0D5A
178
Глава 8
Таблица 8.1. Продолжение
Г ра- Дусы sin(x) Коэффициент с базис окр. hex/10 : Коэффициент i с базис окр. | hex/12 i
43 0,68200 861 1 035D ’ 3445 i 0D75
44 0,69466 868 I 0364 ; 3471 \ 0D8F
45 0,70711 874 I 036А ! 3496 ! 0DA8
46 0,71934 880 > 0370 I 3521 ! 0DC1
47 0,73135 886 ! 0376 ! 3546 ; 0DDA
48 0,74314 892 ; 037С 3570 0DF2
49 0,75471 898 0382 3594 OEOA
50 0,76604 904 0388 3617 0E21
51 0,77715 910 038Е 3640 0E38
52 0,78801 915 0393 3662 0E4E
53 0,79864 921 0399 3684 0E64
54 0,80902 926 039Е 3705 0E79
55 0,81915 931 ОЗАЗ 3726 0E8E
56 0,82904 936 03А8 3746 0EA2
57 0,83867 941 I 03AD 3766 0EB6
58 0,84805 946 03В2 3785 0EC9
59 0,85717 951 озв7 ; i 3803
60 0,86603 955 озвв : 3822
61 0,87462 960 I 03С0 ! | 3839
62 0,88295 964 I 03С4 i 3856
63 0,89101 968 i i 03С8 i I 3873
64 0,89879 972 i I озсс I 3889
65 0,90631 976 03D0 I 3904
66 0,91355 980 03D4 J 3919
67 0,92050 983 03D7 ’ ! 3933
68 0,92718 987 03db : I 3947
69 0,93358 990 03DE I 3960
70 0,93969 993 03Е1 3972
71 0,94552 996 03Е4 3984
72 0,95106 999 03Е7 3996
73 0,95630 1002 ОЗЕА | 4007
74 0,96126 1004 ОЗЕС । i 4017 I I
75 0,96593 1007 03EF ; 4026 !
76 0,97030 1009 03F1 4035 1
77 0,97437 1011 03F3 ; 4044 !
78 | 0,97815 1013 03F5 ! 4051
Микроконтроллерный генератор
179
Таблица 8.1. Продолжение
Г ра- дусы sin(x) Коэффициент с базис окр. hex/10 Коэффициент с базис окр. hex/12
79 0,98163 1015 03F7 4058
80 0,98481 1016 03F8 4065
81 0,98769 1018 03FA 4071
82 0,99027 1019 03FB 4076
83 0,99255 1020 03FC 4081
84 0,99452 1021 03FD . 4085
85 0,99619 1022 03FE 4088
86 0,99756 1023 03FF 4091
87 0,99863 1023 03FF 4093
88 0,99939 1024 0400 4095
89 0,99985 1024 0400 4096
90 1,00000 1024 0400 4096 FFF
91 0,99985 1024 0400 4096
92 0,99939 1024 0400 4095
93 0,99863 1023 03FF 4093
94 0,99756 1023 03FF 4091
95 0,99619 1022 03FE 4088
96 0,99452 1021 03FD 4085
97 0,99255 1020 03FC 4081
98 0,99027 1019 03FB 4076
99 0,98769 1018 03FA 4071
100 0,98481 1016 03F8 4065
101 0,98163 1015 03F7 4058
102 0,97815 1013 03F5 4051
103 0,97437 1011 03F3 4044
104 0,97030 1009 03F1 4035
105 0,96593 1007 03EF 4026
106 0,96126 1004 ОЗЕС 4017
107 0,95630 1002 ОЗЕА 4007
108 0,95106 999 03Е7 3996
109 0,94552 996 03Е4 3984
110 0,93969 993 03Е1 3972
111 0,93358 990 03DE 3960
! 112 0,92718 987 03DB 3947
j 113 0,92050 983 03D7 3933
114 0,91355 980 03D4 3919
180
Глава 8
Таблица 8.1. Продолжение
Гра- дусы sin(x) Коэффициент с базис окр. I hex/10 : Коэффициент I с базис окр. hex/12
115 0,90631 976 I 03D0 3904 i
116 0,89879 972 I озсс 3889 '
117 0,89101 968 I 03C8 3873
118 0,88295 964 > 03C4 ! 3856 I
119 0,87462 960 I 03C0 ! 3839
120 0,86603 . 955 i 03BB | 3822
121 0,85717 951 03B7 3803
122 0,84805 946 03B2 3785 I
123 0,83867 941 03AD 3766
124 0,82904 936 03A8 3746
125 0,81915 931 03A3 3726
126 0,80902 926 039E 3705
127 0,79864 921 0399 3684
128 0,78801 915 0393 3662 I
129 0,77715 910 038E 3640
130 0,76604 904 0388 3617
131 0,75471 898 0382 3594
132 0,74314 892 037C 3570
133 0,73135 886 0376 3546
134 0,71934 880 0370 3521
135 0,70711 874 036A 3496 !
136 0,69466 868 0364 3471 I
137 0,68200 861 035D 3445
138 0,66913 855 0357 3418
139 0,65606 848 i 0350 3392
140 0,64279 841 0349 3364
141 0,62932 834 0342 3337
142 0,61566 827 033B 3309 I
143 0,60181 820 0334 * 3281
144 0,58778 813 032D 3252
145 0,57358 806 0326 3223
146 0,55919 798 031E 3193 I
147 0,54464 791 0317 3163 I
148 0,52992 ! 783 030F 3133 I
149 0,51504 I 776 0308 3103 I
150 0,50000 | ' 768 озоо ; 3072 |
Микроконтроллерный генератор
181
Таблица 8.1. Продолжение
Г ра- дусы sin(x) Коэффициент с базис окр. hex/10 Коэффициент с базис окр. hex/12
151 0,48481 760 02F8 3041
152 0,46947 752 02F0 3009
153 0,45399 744 02 Е8 2978
154 0,43837 736 02Е0 2946
155 0,42262 728 02D8 2914
156 0,40674 720 02D0 2881
157 0,39073 712 02С8 2848
158 0,37461 704 02С0 2815
159 0,35837 695 02В7 2782
160 0,34202 687 02AF 2748
161 0,32557 679 02А7 2715
162 0,30902 670 029Е 2681
163 0,29237 662 0296 2647
164 0,27564 653 028D 2613
165 0,25882 645 0285 2578
166 0,24192 636 027С 2543
167 0,22495 627 0273 2509
168 0,20791 618 026А 2474
169 0,19081 610 0262 2439
170 0,17365 601 0259 2404
171 0,15643 592 0250 2368
172 0,13917 583 0247 2333
173 0,12187 574 023Е 2298
174 0,10453 566 0236 2262
I 175 0,08716 557 022D 2226
176 0,06976 548 0224 2191
177 0,05234 539 021В 2155
178 0,03490 530 0212 2119
179 0,01745 521 0209 2084
180 0,00000 512 0200 2048
181 -0,01745 503 01F7 2012
! 182 -0,03490 494 01ЕЕ 1977
I 183 -0,05234 485 01Е5 1941
184 -0,06976 476 01DC 1905
185 -0,08716 467 01D3 1870
186 -0,10453 458 01СА 1834
182
Глава 8
Таблица 8.1. Продолжение
Г ра- дусы sin(x) Коэффициент • с базис окр. i hex/10 । Коэффициент ! с базис окр. i hex/12
187 -0,12187 450 01C2 1798
188 -0,13917 441 i 01B9 I 1763 I
189 -0,15643 432 ! 01 BO S 1728
190 -0,17365 423 | 01A7 ; 1692 i
191 -0,19081 414 i OWE I 1657
192 -0,20791 406 i 0196 ; 1622
193 -0,22495 397 I 018D i 1587 i
194 -0,24192 388 i 0184 1553
195 -0,25882 379 i 017B I 1518 i
196 -0,27564 371 I 0173 I 1483 I
197 -0,29237 362 i 016A i 1449
198 -0,30902 354 • 0162 i 1415 I
199 -0,32557 345 i 0159 : 1381
200 -0,34202 337 | 0151 | 1348
201 -0,35837 329 | 0149 1314
202 -0,37461 320 | 0140 | 1281
203 -0,39073 312 I 0138 j 1248
204 -0,40674 304 I 0130 1215
205 -0,42262 296 | 0128 | 1182
206 -0,43837 288 I 0120 i | 1150
207 -0,45399 280 ; 0118 | 1118
208 -0,46947 272 | 0110 ! 1087
209 -0,48481 264 ' 0108 I 1055
210 -0,50000 256 i 0100 1024
,211 -0,51504 ; i 248 i 00F8 993
212 -0,52992 241 i 00F1 963
213 -0,54464 233 ! 00E9 933
214 -0,55919 226 I 00E2 903
215 -0,57358 218 | 00DA 873
216 -0,58779 211 ! 00D3 844
217 -0,60182 204 i oocc 815
218 -0,61566 197 । 00C5 ! 787
219 -0,62932 190 I OOBE I ; 759
220 -0,64279 183 i 00B7 i 732
221 -0,65606 176 | 00B0 I 704
222 -0,66913 । 169 j 00A9 I 678
Микроконтроллерный генератор
183
Таблица 8.1. Продолжение
I Гра- I ДУсы sin(x) Коэффициент с базис окр. hex/10 Коэффициент с базис окр. hex/12
223 -0,68200 163 00A3 651
224 -0,69466 156 009С 625
225 -0,70711 150 0096 600
226 -0,71934 144 0090 575
! 227 -0,73135 138 008А 550
228 -0,74315 132 0084 526
229 -0,75471 126 007Е 502
230 -0,76604 ' 120 0078 479
231 -0,77715 114 0072 456
232 -0,78801 109 006D 434
233 -0,79864 103 0067 412
234 -0,80902 98 0062 391
235 -0,81915 93 005D 370
236 -0,82904 88 0058 350
237 -0,83867 83 0053 330
i 238 -0,84805 78 004Е 311
239 -0,85717 73 0049 293
240 -0,8.6603 69 0045 274
241 -0,87462 64 0040 257
242 -0,88295 60 003С 240
243 -0,89101 56 0038 223
| 244 -0,89879 52 0034 207
245 -0,90631 48 0030 192
246 -0,91355 44 002С 177
247 -0,92051 41 0029 163
248 -0,92718 37 0025 149
249 -0,93358 34 0022 136
250 -0,93969 31 001F 124
| 251 -0,94552 28 001С 112
| 252 -0,95106 25 0019 100
I 253 -0,95630 22 0016 89
j 254 -0,96126 20 0014 79
255 -0,96593 17 0011 70
256 -0,97030 15 000F 61
257 -0,97437 13 000D 52 34
258 -0,97815 11 000В 45
184
Глава 8
Таблица 8.1. Продолжение
Г ра- дусы sin(x) Коэффициент с базис окр. i hex/10 i Коэффициент !• с базис окр. hex/12
259 -0,98163 9 ! 0009 38 I
260 -0,98481 8 ! 0008 ! 31 I 1F
261 -0,98769 6 1 0006 I 25 i 19
262 -0,99027 5 i 0005 i 20 14
263 -0,99255 4 0004 I 15 OF
264 -0,99452 3 ; оооз J 11 0B
265 -0,99619 2 i 0002 i 8 08
266 -0,99756 1 1 0001 ' ' 5 05
267 -0,99863 1 0001 i 3 03
268 -0,99939 0 0000 ! 1 01
269 -0,99985 0 0000 i 0 00
270 -1,00000 0 0000 0 00
271 -0,99985 0 0000 0 00
272 -0,99939 0 0000 1 01
273 -0,99863 1 I ! 0001 3
274 -0,99756 1 I 0001 5
275 -0,99619 2 i 0002 8
276 -0,99452 3 I 0003 11
277 -0,99255 4 | 0004 15
278 -0,99027 I 5 0005 | 20 i I I
279 -0,98769 6 0006 I 25 | I
280 -0,98481 8 I 0008 I 31 I
281 -0,98163 9 i 0009 38 !
282 -0,97815 11 i I 000B 45 j i
283 -0,97437 13 ! I 000D 52 i
284 -0,97030 I 15 I ! 000F 61 I
285 -0,96593 ! 17 ; : 0011 70 |
286 -0,96126 ; ! 20 ! I 0014 79 |
287 -0,95630 ' 22 0016 89
288 -0,95106 ' i 25 ! 0019 100
289 -0,94552 28 I 001C 112
290 -0,93969 31 i 001F I 124
291 -0,93358 34 i 0022 136
292 -0,92718 37 ! 0025 ! 149 I
293 -0,92050 41 I 0029 ! 163 I
294 -0,91355 44 । 002C 177 |
Микроконтроллерный генератор
185
Таблица 8.1. Продолжение
Г ра- Дусы sin(x) Коэффициент с базис окр. hex/10 Коэффициент с базис окр. hex/12
. 295 -0,90631 48 0030 192
I 296 -0,89879 52 0034 207
i 297 -0,89101 56 0038 223
I 298 -0,88295 60 003С 240
! 299 -0,87462 64 0040 257
; зоо -0,86603 69 0045 274
301 -0,85717 73 0049 293
302 -0,84805 78 004Е 311
303 -0,83867 83 0053 330
304 -0,82904 88 0058 350
305 -0,81915 93 005D 370
306 -0,80902 98 0062 391
307 -0,79864 103 0067 412
308 -0,78801 109 006D 434
309 -0,77715 114 0072 456
310 -0,76604 120 0078 479
311 -0,75471 126 007Е 502
312 -0,74314 132 0084 526
313 -0,73135 138 008А 550
314 -0,71934 144 0090 575
315 -0,70711 150 0096 600
316 -0,69466 156 009С 625
317 -0,68200 163 00A3 651
I 318 -0,66913 169 00А9 678
I 319 -0,65606 176 оово 704
! 320 -0,64279 183 00В7 732
I 321 -0,62932 190 ООВЕ 759
I 322 -0,61566 197 00С5 787
I 323 -0,60181 204 оосс 815
| 324 -0,58778 211 00D3 844
I 325 -0,57358 218 00DA 873
I 326 -0,55919 226 00Е2 903
327 -0,54464 233 00Е9 933
328 -0,52992 241 00F1 963
329 -0,51504 248 00F8 993
I ззо -0,50000 256 0100 1024
186
Глава 8
Таблица 8.1. Окончание
Г ра- Дусы sin(x) Коэффициент с базис окр. hex/10 ; Коэффициент с базис окр. hex/12
331 -0,48481 264 0108 1055
332 -0,46947 272 I 0110 1087
333 -0,45399 280 I 0118 1118
334 -0,43837 288 0120 1150
335 -0,42262 296 0128 1182
336 -0,40674 304 0130 1215
337 -0,39073 312 0138 1248
338 -0,37461 320 0140 1281
339 -0,35837 329 0149 1314
340 -0,34202 337 0151 1348
341 -0,32557 345 0159 1381
342 -0,30902 354 0162 1415
343 -0,29237 362 016A 1449
344 -0,27564 371 0173 1483
345 -0,25882 379 017В 1518
346 -0,24192 388 0184 1553
347 -0,22495 397 018D 1587
348 -0,20791 406 0196 1622
349 -0,19081 414 019E 1657
350 -0,17365 423 01A7 | 1692
351 -0,15643 432 01 ВО I 1728
352 -0,13917 441 01B9 I 1763
353 -0,12187 450 01C2 I 1798
354 -0,10453 458 | 01CA 1834
355 -0,08715 467 I 01D3 1870 |
356 -0,06976 476 | 01DC 1905 I
357 -0,05234 . 485 | 01E5 ; 1941
358 -0,03490 494 | 01EE ! 1977
359 -0,01745 503 | 01F7 i 2012
360 0,00000 512 I 0200 ' 2048 |
Как известно, в АЦП и ЦАП младшие два разряда формата данных
не имеют особенного значения для результата преобразования, поэтому
внимание акцентировано на 10-разрядной форме вывода сигнала. Расче-
ты по табл. 8.1 для 10-разрядных данных дают график, показанный на
рис. 8.8.
Микроконтроллерный генератор
187
После опроса таблицы происходит передача данных. К сожалению,
проверить правильность передачи данных в ЦАП невозможно, посколь-
ку микросхема DAC7512 не содержит средств подтверждения коррект-
ного получения данных (по четности или по количеству единиц). По-
этому для подстраховки данные передаются дважды.
Программа на ассемблере представлена в листинге 8.1, а шестна-
дцатеричный код — в листинге 8.2. Соответствующие файлы gene . asm
и gene.hex находятся на прилагаемом к книге компакт-диске в папке
Программы\08 - Генератор.
Листинг 8.1, Программа управления генератором
.include ”C:\Program Files\Atmel\AVR StudicA Appnoces\cnl5def.
i n c ”
/Автор: Кравченко А.З.
/Дата: 23.03.2008
;Версия: 1.0.4
; Имя файла : gene . asm
/Микроконтроллер: ATtinyl5
/Тактовая частота: 1.бмГц
/Питание: нестабилизированное
. list
4,5 В
Регистровые переменные
.def adr = r0 / Рабочий регистр младший
.def tmp3 = rl6 / Рабочий регистр
.def М = г17 / Рабочий регистр
.def Y = г18 / Рабочий регистр
188
Глава 8
Листинг 8Л. Продолжение
def X = rl9 ; Рабочий регистр
def tmp = r20 ; Рабочий регистр
def tmpl = r21 ; Рабочий регистр
def tmp2 = r22 ; Рабочий регистр
def si = r23 ; Рабочий регистр старший
def il = r24 ; Рабочий регистр старший
def s = r25 ; Рабочий регистр младший
def i = r26 ; Рабочий регистр младший
def pir = r27 ; Рабочий регистр младший
. cseg
. org О
rjmp RESET
nop ;rjmp EXT_INT0 - прерывание не используется
nop ;rjmp EXT—PIN - прерывание не используется
nop ;rjmp TIME_OVFO - прерывание от таймера
nop ;rjmp EE_RDY - прерывание от таймера
nop ;rjmp ANA_COMP - прерывание не используется
.org 20
;настройка порта В
RESET: пор
clr tmp
out DDRB, tmp
out PORTB, tmp ;обнулить порт В
clr tmp
Idi tmp, $07 ;PBO,PB1,РВ2-выходы
out DDRB, tmp
;Начало программы
;сброс всех значений
clr si
clr il
clr s
clr i
clr adr
;Начало цикла
nStart: nop
sbi PORTB, 2
nop
;Превышает 10800?
mov tmpl, il
mov tmp2, i
cis ;сброс флага знака
subi tmp2, $30 ;проверяем младший байт
brlt eee ;если меньше, то проверять не надо
Микроконтроллерный генератор
189
Листинг 8/L Продолжение
cis :сброс флага знака
subi tmpl, $2А :проверяем старший байт
brlt еее ; nop rjmp s s еее: nop :если меньше, то проверять не надо
rjmp kk ; /Да, превышает 10800 ss: nop удлиняем переход
clr i ; :сброс i в ноль
clr il ; сброс il в ноль
rcall adcn ; nop подпрограмма опроса АЦП
;формирование времени задержки
rcall zaderl ; rjmp gg kk: nop !подпрограмма формирования задержки!
rcall zader ; /формирование опроса адреса gg: nop /i- двухбайтное число clz подпрограмма формирования задержки
1 n c i / cpi i, $FF увеличение младшего байта
brne rty clr i проверка переполнения мл. байта
inc il rty: nop clz увеличение старшего байта
inc s cpi s, $FF увеличение младшего байта
brne rtu dl r s проверка переполнения мл. байта
inc si увеличение старшего байта
rtu: пор
/опрос адреса
rcall opros /подпрограмма опроса таблицы
пор
clr tmp
out PORTS, tmp
rcall zader
пор
sbi PORTB, 2
sbi PORTB, 1
rcall zader
mov tmp2, r4
190
Глава 8
Листинг 8J. Продолжение
пор
rcall pered /подпрограмма передачи з ЦАП
mov r4, cmp2
/больше 360=168h? cis nop cpi si, $01
brlt gg nop cis cpi s, $68 /проверка переполнения ст. байта
brlt gg nop /проверка переполнения мл. байта
rjmp nStart /Настройка АЦП adcn: nop nop clr tmp awe: nop cpi tmp, $04 brsh ass clr tmp3 ;возвращение на начало цикла
Idi tmp3, $83 /внутренний источник, вход ADC3
out ADMUX, tmp3 clr tmp2 clr tmp3 /коммутация входов АЦП
Idi tmp2, $C4 /одиночное, запуск, 1/16
out ADCSR, tmp2 /Сохранение данных АЦП in tmp2, ADCL in tmp3, ADCH mov r2, tmp2 mov r3, tmp3 mov r4, r2 /запуск АЦП на преобразование
mov r5, r3 mov r6, r4 mov r7, r5 inc tmp rjmp awe
/среднее арифметическое действие ass: nop clr r8 clc add rmp2, r2 adc r9, r8
Микроконтроллерный генератор
191
Листинг 8Х Продолжение
add tmp2, г 4
adc r9, г8
add tmp2, гб
adc r9, г8
clc
lsr r9
ror tmp2
lsr r9
ror tmp2
clr r9
clc
add tmp3, r3
adc r9, r8
add tmp3, r5
adc r9, r8
add tmp3, r7
adc r9, r8
clc
lsr r9
ror tmp3
lsr r9
ror tmp3
nop
ret
;подпрограмма передачи данных в ЦАП
/младший байт s
;старший байт pered: пор si
Idi tmp2, $08
cbi weг: пор PORTB, 1
dec tmp2
cpi tmp2, $01
brlt vor
cbi PORTB, 2
;временная задержка пор wdr
Idi ZL, $E7
Idi ZH, $03
ddd: sbiw ZL, 1
brne ddd
sbi clc PORTB, 1
rol si /сдвиг влево через перенос
brcs poi /переход, если перенос установлен
192
Глава 8
Листинг ВЛ. Продолжение
cbi rjmp PORTB, 0 redw
poi: nop
sbi nop PORTB, 0
redw: nop wdr
Idi ZL, $E7
Idi ZH, $03
ddd2: sbiw ZL, 1
brne ddd2
cbi nop nop nop nop nop nop nop nop nop nop nop nop nop nop PORTB, 1
wdr cbi PORTB, 0
Idi ZL, $E7
Idi ZH, $03
ddd3 : sbiw ZL, 1
brne ddd3
r jmp wer
vor: nop
wer3 : nop
dec tmp2
cpi cmp2, $01
brlt. vor2
cbi PORTB, 2
/временная : nop wdr задержка
Idi ZL, $E7
Idi ZH, $03
ddd6: sbiw ZL, 1
brne ddd6
Микроконтроллерный генератор
193
Листинг 8Л Продолжение
sbi PORTB, 1
clc
rol s
brcs poll
cbi PORTB, 0
rjmp redw2
poll : nop nop
redw2: nop wdr
idi ZL, $E7
idi ZH, $03
ddd7: sbiw ZL, 1
brne ddd7
cbi nop nop nop nop nop nop nop nop nop nop nop nop nop nop PORTB, 1
cbi wdr PORTB, 0
Idi ZL, $E7
Idi ZH, $03
ddd8: sbiw ZL, 1
brne ddd8
rjmp wer3
vor2: nop
sbi nop ret PORTB, 0
/сдвиг влево через перенос
/переход, если перенос установлен
;Подпрограмма задержки включения
zader: пор
wdr
clr М
clr Y
194
Глава 8
Листинг 8Л, Продолжение
Idi Y, $AF
cpi tmp3, $00
brne goo
idi M, $01
add nop M, tmp3
goo: nop
mov M, tmp3
dm: nop
cpi tmp2, $00
brne gog
Idi X, $01
add nop X, tmp2
goq: nop
mov X, tmp2
dv: nop wdr nop
dx: dec Y
brpl cln dx
dec X
brpl cln dv
dec M
brne ret dm
/Подпрограмма задержки 1 без АЦП
zaderl wdr nop
clr M
clr Y
Idi Y, $CF
cpi tmp3, $00
brne gool
Idi M, $01
add M, tmp3
nop
gool: nop
mov M, tmp3
dml : nop
cpi tmp2, $ 0 0
brne goql
Idi X, SOI
add X, tmp2
Микроконтроллерный генератор
195
Листинг 8,1, Продолжение
nop
goql: nop
mov X, tmp 2
dvl: nop
wdr
nop
dxl: dec Y
brpl dxl
cln
dec X
brpl dvl
cln
dec M
brne dml
ret
/Подпрограмма опроса
opros : nop
Idi ZH, high (2*progl)
idi ZL, Low(2*progl)
Add ZL, pir
LPM
mov pir, adr
ret
.org $300
progl:
DB $02, $00, $02, $09, $02, $12, $02, $1B
DB $02, $24, $02, $2D, $02, $36, $02, $3E
DB $02, $47, $02, $50, $02, $59, $02, $62
DB $02, $6A, $02, $73, $02, $7C, $02, $85
DB $02, $8D, $02, $96, $02, $9E, $02, $A7
DB $02, $AF, $02, $B7, $02, $co, $02, $C8
DB $02, $D0, $02, $D8, $02, $E0, $02, $E8
DB $02, $F0, $02, $F8, $03, $00, $03, $08
DB $03, $0F, $03, $17, $03, $1E, $03, $26
DB $03, $2D, $03, $34, $03, $3B, $03, $42
DB $03, $49, $03, $50, $03, $57, $03, $5D
DB $03, $64, $03, $6A, $03, $70, $03, $76
DB $03, $7C, $03, $82, $03, $88, $03, $8E
DB $03, $93, $03, $99, $03, $9E, $03, $A3
DB $03, $A8, $03, $AD, $03, $B2, $03, $B7
DB $03, $BB, $03, $C0, $03, $C4, $03, $C8
DB $03, $cc, $03, $D0, $03, $D4, $03, $D7
DB $03, $DB, $03, $DE, $03, $E1, $03, $S4
DB $03, $E7, $03, $EA, $03, $EC, $03, $SF
DB $03, $F1, $03, $F3, $03, $F5, $03, $F7
196
Глава 8
Листинг 8Л. Продолжение
DB $03, $F8, $03, $FA, $03, $FB, $03, $FC
DB $03, $FD, $03, $FE, $03, $FF, $03, $FF
DB $04, $00, $04, $00, $04, $00, $04, $00
DB $04, $00, $03, $FF, $03, $FF, $03, $FE
DB $03, $FD, $03, $FC, $03, $FB, $03, $FA
DB $03, $F8, $03, $F7, $03, $F5, $03, $F3
DB $03, $F1, $03, $EF, $03, $EC, $03, $EA
DB $03, $E7, $03, $E4, $03, $E1, $03, $DE
DB $03, $DB, $03, $D7, $03, $D4, $03, $D0
DB $03, $CC, $03, $C8, $03, $C4, $03, $C0
DB $03, $BB, $03, $B7, $03, $B2, $03, $AD
DB $03, $A8, $03, $A3, $03, $9E, $03, $99
DB $03, $93, $03, $8E, $03, $88, $03, $82
DB $03, $7C, $03, $76, $03, $70, $03, $6A
DB $03, $64, $03, $5D, $03, $57, $03, $50
DB $03, $49, $03, $42, $03, $3B, $03, $34
DB $03, $2D, $03, $26, $03, $1E, $03, $17
DB $03, $0F, $03, $08, $03, $00, $02, $F8
DB $02, $F0, $02, $E8, $02, $E0, $02, $D8
DB $02, $D0, $02, $C8, $02, $co, $02, $B7
DB $02, $AF, $02, $A7, $02, $9E, $02, $96
DB $02, $8D, $02, $85, $02, $7C, $02, $73
DB $02, $6A, $02, $62, $02, $59, $02, $50
DB $02, $47, $02, $3E, $02, $36, $02, $2D
DB $02, $24, $02, $1B, $02, $12, $02, $09
DB $02, $00, $01, $F7, $01, $EE, $01, $E5
DB $01, $DC, $01, $D3, $01, $CA, $01, $C2
DB $01, $B9, $01, $B0, $01, $A7, $01, $9E
DB $01, $96, $01, $8D, $01, $84, $01, $7B
DB $01, $73, $01, $6A, $01, $62, $01, $59
DB $01, $51, $01, $49, $01, $40, $01,' $38
DB $01, $30, $01, $28, $01, $20, $01, $18
DB $01, $10, $01, $08, $01, $00, $00, $F8
DB $00, $F1, $00, $E9, $00, $E2, $00, $DA
DB $00, $D3, $00, $cc, $00, $C5, $00, $BE
DB $00, $B7, $00, $B0, $00, $A9, $00, $A3
DB, $00, $9C, $00, $96, $00, $90, $00, $8A
DB $00, $84, $00, $7E, $00, $78, $00, $72
DB $00, $6D, $00, $67, $00, $62, $00, $5D
DB $00, $58, $00, $53, $00, $4E, $00, $49
DB $00, $45, $00, $40, $00, $3C, $00, $38
DB $00, $34, $00, $30, $00, $2C, $00, $29
DB $00, $25, $00, $22, $00, $1F, $00, $1C
DB $00, $19, $00, $16, $00, $14, $00, $11
DB $00, $0F, $00, $0D, $00, $0B, $00, $09
DB $00, $08, $00, $06, $00, $05, $00, $04
Микроконтроллерный генератор
197
.Окончание
. DB $00, $03, $00, $02, $00, $01, $00, $01
. DB $00, $00, $00, $00, $00, $00, $00, $00
. DB $00, $00, $00, $01, $00, $01, $00, $02
. DB $00, $03, $00, $04, $00, $05, $00, $06
. DB $00, $08, $00, $09, $00, $0В, $00, $0D
. DB $00, $0F, $00, $11, $00, $14, $00, $16
. DB $00, $19, $00, SIC, $00, $1F, $00, $22
. DB $00, $25, $00, $29, $00, $2C, $00, $30
. DB $00, $34, $00, $38, $00, $3C, $00, $40
. DB $00, $45, $00, $49, $00, $4E, $00, $53
. DB $00, $58, $00, $5D, $00, $62, $00, $67
. DB $00, $6D, $00, $72, $00, $78, $00, $7E
. DB $00, $84, $00, $8A, $00, $90, $00, $96
. DB $00, $9C, $00, $A3, $00, $A9, $00, $B0
. DB $00, $B7, $00, $BE, $00, $C5, $00, $CC
. DB $00, $D3, $00, SDA, $00, $E2, $00, $E9
. DB $00, $F1, $00, $F8, $01, $00, $01, $08
. DB $01, $10, $01, $18, $01, $20, $01, $28
. DB $01, $30, $01, $38, $01, $40, $01, $49
. DB $01, $51, $01, $59, $01, $62, $01, $6A
. DB $01, $73, $01, $7B, $01, $84, $01, $8D
. DB $01, $96, $01, $9E, $01, $A7, $01, $B0
. DB $01, $B9, $01, $C2, $01, $CA, $01, $D3
. DB . DB $01, $02, SDC, $01, SE5, $01, SEE, $01, $F7 $00
.EXIT
Листинг Шестнадцатеричный кед упра&ленйн генератором
: 020000020000FC
:ОСО0000О13С00000000000000000000021
:100028000000442747ВВ48ВВ442747Е047ВВ772726
:1000380088279927AA2700240000C29A0000582F71
:100048006A2FC89460532CF0C8945A5214F00000D8
:1000580002C0000007C00000AA2788272BD0000094
:10006800E4D002C00000C1D000009894A395AF3F2F
:1000780011F4AA2783950000989493959F3F11F453
:10008800992773950000F1D00000442748BBADD0F4
:100098000000C29AC19AA9D0642D00003FD0462E14
:1000A800C8940000713004F30000C8949836E4F254
:1000B8000000C2CF0000000044270000443088F44C
:1000С800002703Е807В96627002764ЕС66В964В11Е
:1000D80005B1262E302E422C532C642C752C4395BA
:1000E800ECCF000088248894620D981C640D981C3D
:1000F800660D981C889496946795969467959924AC
:100108008894030D981C050D981C070D981C88945D
198
Глава 8
Листинг Продолжение
:10011800969407959694079500000895000068Е066
:10012800С19800006A95613064F1C2980000A895F2
:10013800E7EEF3E03197F1F7C19A8894771F10F052
:10014800С09803С00000С09А00000000А895Е7ЕЕ20
:10015800F3E03197F1F7C1980000000000000000BB
:100168000000000000000000000000000000000087
:1001780000000000C098A895E7EEF3E03197F1F78A
:10018800D0CF000000006A9561305CF1C298000091
:10019800A895E7EEF3E03197F1F7C19A8894991F93
:1001A80010F0C09802C0000000000000A895E7EE1B
:1001B800F3E03197F1F7C19800000000000000005B
:1001С8000000000000000000000000000000000027
:1001D80000000000C098A895E7EEF3E03197F1F72A
:1001E800D1CF0000C09A000008950000A8951127FB
:1001F80022272FEA003019F411E0100F0000000048
:10020800102F0000603019F431E0360F00000000B4
:10021800362F0000A89500002A95F2F7A8943A9581
:10022800C2F7A8941A9569F708950000A8951127В0
:1002380022272FEC003019F411E0100F0000000005
:10024800102F0000603019F431E0360F0000000074
:10025800362F0000A89500002A95F2F7A8943A9541
:10026800C2F7A8941A9569F708950000F6E0E0E04F
:08027800EB0FC895B02D0895AD
:10060000020002090212021B0224022D0236023EDF
:100610000247025002590262026А0273027С02859А
:10062000028D0296029E02A702AF02B702C002C864
:1006300002D002D802E002E802F002F80300030848
:10064000030F0317031E0326032D0334033B03424A
:10065000034903500357035D0364036A0370037681
:10066000037C03820388038E03930399039E03A3F1
:1006700003A803AD03B203B703BB03C003C403C89D
:1006800003CC03D003D403D703DB03DE03E103E48D
:1006900003E703EA03EC03EF03F103F303F503F7C6
:1006A00003F803FA03FB03FC03FD03FE03FF03FF50
:1006B0000400040004000400040003FF03FF03FE21
:1006C00003FD03FC03FB03FA03F803F703F503F34D
: 100 6000'00 3F103EF03EC03EA0 3E703E40 3E103DEC2
:1006E00003DB03D703D403D003CC03C803C403C084
:1006F00003BB03B703B203AD03A803A3039E03998F
:100700000393038E03880382037C03760370036ADA
:100710000364035D0357035003490342033B03345F
:10072000032D0326031E0317030F0308030002F81B
:1007300002F002E802E002D802D002C802C002B70A
:1007400002AF02A7029E0296028D0285027C02730E
:10075000026А0262025902500247023Е0236022D2C
:100760000224021B02120209020001F701EE01E558
Микроконтроллерный генератор
199
Листинг Окончание
:1007700001DC01D301CA01C201B901B001A7019E88
:100780000196018D0184017В0173016А01620159А7
:1007900001510149014001380130012801200118AF
:1007A00001100108010000F800F100E900E200DAA0
:1007B00000D300CC00C500BE00B700B000A900A364
:1007C000009C00960090008A0084007E00780072F1
:1007D000006D00670062005D00580053004E004944
:1007Е00000450040003С003800340030002С002957
:1007F00000250022001F001C001900160014001123
:10080000000F000D000B00090008000600050004A1
:1008100000030002000100010000000000000000D1
:1008200000000001000100020003000400050006В2
:1008300000080009000B000D000F00110014001645
: 10 0 8 4 0 0 0 0 019 0 01 СО 01F0 0 2 2 0 02 5 0 0 2 90 0 2 СО 0 3 0 8 8
:1008500000340038003С004000450049004Е005381
:100860000058005D00620067006D00720078007E35
:100870000084008A00900096009COOA300A900BOAC
: 100 8 800-00 0B700BE00C500CC0 0D300DAOOE2OOE9EA
:1008900000F100F8010001080110011801200128F1
:1008А0000130013801400149015101590162016AD9
:1008B0000173017B0184018D0196019E01A701B0A6
:1008C00001B901C201CA01D301DC01E501EE01F762
:0208D000020024
:00000001FF
Для работы программы назначаются переменные (в микроконтрол-
лере tinyl 5 в выполнении арифметических действий могут принимать
участие регистры с 16 по 31), а также определяется вектор прерывания,
в котором используется только вектор RESET. Далее определяется кон-
фигурация порта В (в микроконтроллере tinyl 5 имеет шесть выводов).
В начале цикла обязательно обнуляются переменные, а в его теле оп-
ределяется количество переданных данных i, ограниченное числом 10 800.
В шестнадцатеричном представлении i соответствует двухбайтное число
2A30h, поэтому используются две переменные: i и il.
Нам необходимо получить гармонический, периодический сигнал,
поэтому все паузы между выводом периода сигнала и аналого-цифро-
вым преобразованием должны быть компенсированы, а промежутки пе-
редачи коэффициентов сигнала в ЦАП — быть равными независимо от
действий программы. Исходя из этого правила, для ветви программы
без АЦП формируется обычная задержка, а для ветви с АЦП — укоро-
ченная задержка.
В процессе аналого-цифрового преобразования двоичное число Z
вычисляется по уравнению Z = 1 024 * Ubx / Uref [16]. Крмое того, пре-
200
Глава 8
образование выполняется несколько раз, а результат вычисляется как
среднее арифметическое считанных данных. Следует отметить, что
столбец градусов в табл. 8.1 начинается с 0 и заканчивается 360, а это
значит, что мы работаем с 361 числом, представленным в двухбайтном
виде. По этой причине в конце программы в таблице progl в строках
записано по четыре цифры, каждая из которых представлена двумя бай-
тами.
Алгориъм вывода цифр в ЦАП несовершенный, поскольку сущест-
вует вероятность, что микроконтроллер собьется со счета, и тогда дан-
ные будут выводиться хаотически. В конце программы обязательно
проводится проверка числа градусов, выведенных в ЦАП. Если в ЦАП
выведено 360 данных, то S = 0. В шестнадцатеричном представлении
360 градусов S = 168h.
Монтаж
Монтажная платы генератора — односторонняя (рис. 8.9). Ее габа-
риты — 92x50 мм. Для полной сборки со стороны монтажа элементов
необходимо соединить проводом элементы, указанные на рис 8.9, с ре-
зистором R7. Разводка платы показана на рис. 8.10.
Элементы питания устанавливаются в специальный отсек на плате.
Микросхемы IC1 и IC3 устанавливаются на панельки для обеспечения
возможности программирования микроконтроллера вне платы и на-
стройки элементов схемы без микроконтроллера и операционного уси-
лителя, а также в случае замены операционного усилителя на функцио-
нальный аналог.
Внимание!
Монтаж ЦАП DAC7512 необходимо производить в последнюю очередь, соблюдая
все правила защиты от статического электричества. Монтаж производить с зазем-
лением рук и паяльного инструмента!
Корпус микросхемы S-PDSO-G8 необходимо припаять на специ-
альную плату-переходник. В продаже таких плат нет, поэтому автор ис-
пользовал промышленную плату с параллельной разводкой линий связи
на расстоянии 0,65 мм. Подходящую разводку с тем же шагом, что
и ножки микросхемы, имеет плата дисковода 3,5”. Ее часть можно вы-
резать для изготовления платы-переходника, к которой будут по диаго-
нали припаяны тонкие изолированные провода. Далее провода от пла-
ты-переходника следует припаять к основной плате, а затем к плате-пе-
реходнику припаивается ЦАП DAC7512. Автор собрал генератор на ма-
кетной плате (см. рис. 8.1).
Микроконтроллерный генератор
201
С
VS
Рис. 8.9. Монтажная плата генератора
202
Глава 8
Рис. 8.10. Разводка монтажной платы генератора
Микроконтроллерный генератор
203
Дизайн корпуса
Конструктивно генератор автономен (рис. 8.11). Питание осуществ-
ляется от трех мини-батареек типа ААА. Батарейки встраиваются в от-
сек в корпусе генератора. На горизонтальной плоскости корпуса распо-
ложены элементы управления: выключатель и светодиод питания, регу-
лятор частоты, кнопка сброса. Регулятор имеет разметку по окружности
для правильного выбора необходимой частоты. Разметку калибруют по
эталонному частотомеру. В верхнем торце расположен регулятор уров-
ня выходного сигнала, а также проводя с наконечниками от платы гене-
ратора.
Рис. 8.11. Дизайн корпуса генератора
В качестве основы корпуса можно использовать верхнюю крышку
то го же дисковода 3,5” (см. рис. 8.1). Для этого отрезается часть корпу-
са с тремя боковыми стенками (габариты 98x56x16 мм), а внутреннюю
поверхность металлического корпуса обклеивается пленкой (например,
широким скотчем). Затем проверенную палату можно поместить внутрь
корпуса.
Верхняя крышка изготавливается из пластика толщиной 1,5 мм, по-
сле чего к ней добавляется одна боковая стенка высотой 18 мм и три
высотой 4 мм. В крышке высверливаются отверстия под кнопки
“Сброс” и “Питание”, а также-— под регулятор частоты и светодиод.
Дополнительные стенки крепятся к пластине крышки пластилином
204
Глава 8
и проклеиваются внутри в местах стыка эпоксидным двухкомпонент-
ным клеем “Момент”.
В качестве ролика регулировки уровня автор использовал шесте-
ренку от нерабочей игрушки. Из-за низкой высоты кнопки питания бы-
ли склеены и установлены на выключатель два одинаковых колпачка.
Таким образом, был быстро изготовлен несложный и прочный корпус
генератора, габаритами 102x58x22 мм.
Настройка и эксплуатация прибора
Схему настраивают при подаче питания без микросхем IC1 и IC3.
До включения питания резистор R7 регулируется так, чтобы сопротив-
ление между “землей” и выводом 7 микросхемы IC3A составляло
50 кОм. После программирования микроконтроллера все микросхемы
устанавливаются на плату и включается питание. Периодичность пере-
дачи данных можно наблюдать с помощью осциллографа на выводах 6
и 7 микроконтроллера. Необходимый уровень сигнала задает резистор
R7.
Эксплуатация прибора не представляет проблем. После включения
питания засвечивается светодиод. Схема начинает работать автоматиче-
ски на генерацию выбранной частоты сигнала (см. рис. 8.8). В случае
срыва генерации необходимо нажать кнопку “Сброс”. Если прибор
формирует нестабильный сигнал, то необходимо заменить батареи пи-
тания. Генерируемый сигнал можно подать с помощью выносных про-
водов в любую испытываемую схему, однако эти провода нельзя замы-
кать или подключать к высоковольтным элементам схем.
Себестоимость устройства составляет около 15 евро с учетом по-
купки нерабочего дисковода.
Глава 9
Точность, дискретность, отсутствие инерции, несложное управле-
ние — это то что требуется для роботизированной модели. Современ-
ные недорогие микроконтроллеры позволяют эффективно управлять
исполнительными узлами и механизмами. Например, создадим робота
“Охотник за светом” (сокращенно — РОС) [26, 27]. Наглядный пример
реализации зарубежными радиолюбителями устройства на колесах
представлен на рис. 9.1 [28], а видеодемонстрацию шагающего робота
можно найти на прилагаемом к книге компакт-диске в папке Видео
(файлы Робот! . wmv и Робот2 . wmv).
Рис. 9.1. Пример робота на колесах (начало)
206
Глава 9
Рис. 9.1. Продолжение
Робот "Охотник за светом'
207
Рис. 9.1. Окончание
208
Глаза 9
Иностранные разработчики взяли за основу простой микроконтрол-
лер с небольшим количеством выводов. Эта тенденция обретает у ра-
диолюбителей все большую популярность. Простота монтажа, эффек-
тивность использования ресурса микроконтроллера, простота програм-
мирования, решение поставленной задачи путем разбиения на отдель-
ные небольшие фрагменты, дешевизна — все эти качества в высшей ме-
ре востребованы. Соединение воедино систем управления шинами CAN,
12С и ISP позволяет собрать отдельные фрагменты в комплекс, сделать
решение поставленной задачи “прозрачным”, независимым и универ-
сальным.
Для того чтобы понять, как создать РОС, определим, какие требо-
вания необходимо рассмотреть во время конструирования робота. Робот
двигается в сторону более яркого света, он оснащен двумя фотодатчи-
ками, двумя контактными датчиками препятствия и двумя маломощны-
ми двигателями, а также — собственным автономным источником пи-
тания. Для облегчения конструкции РОС выполнен из легких, прочных
материалов.
Теперь зададимся вопросом: “Зачем нам РОС с практической точки
зрения?”. Допустим, мы хотим поручить РОС автоматически обрабаты-
вать землю. Утром РОС будет работать в восточном направлении.
В полдень, когда солнце будет некоторое время находится над роботом,
он сделает небольшой перерыв, накапливая энергию в солнечных бата-
реях. Вечером РОС продолжит обрабатывать землю в обратном направ-
лении, на закат солнца, и остановится в полной темноте. По окончании
одной полосы обработки робот переходит на другую. Через определен-
ное время можно прийти и проверить его работу. Конечно, это — упро-
щенный вариант использования РОС. Конструкцию можно снабдить
датчиком магнитных линий земли или ориентировать с помощью двух
излучателей на краях поля и полностью автоматизировать управление
и ориентацию робота.
Примерный дизайн конструкции (рис. 9.2) позволяет сформулиро-
вать основные требования. Выбор элементов схемы, источника питания,
механического привода и рамы робота требует тщательной проработки
каждого узла. Основное требование — вес комплектующих деталей.
Именно поэтому элементы схемы должны быть интегрированы в гото-
вые легкие блоки схем типа SMD, механические узлы должны быть со
встроенными передаточными звеньями и соответствовать траектории
предполагаемого движения, а источник питания. — быть малогабарит-
ным и достаточно мощным для питания привода.
Робот "Охотник за светом”
209
Схема управления
Контактная рамка на пружинах '
Рис. 9.2. Примерный дизайн конструкции робота
Основу РОС составляет рама и два, три или четыре исполнительных
механизма. На несущей раме установлена плата управления и батареи
питания. В конструкции, показанной на рис. 9.1 [28], передний привод
имеет жесткую подвеску, а заднее колесо свободно поворачивается по
ходу движения. Такая конструкция имеет огромный недостаток: слож-
ная управляемость при движении назад.
Автор собрал традиционную схему трансмиссии: передние колеса
в виде поворотной подвески со встроенным передним приводом (см.
рис. 9.2). Для уменьшения габаритов на двигателях отсутствует редук-
тор, увеличивающий тяговую силу. Для РОС это решение дает умень-
шение веса за счет ослабления привода. Задние колеса крепятся на же-
сткой подвеске. В результате управляемость конструкции при движении
назад полностью имитирует траекторию движения обычного автомоби-
ля.
Еще одной особенностью является соединение передней подвески
с основным корпусом конструкции: рама из проволоки, согнутая в виде
сложной линии. На круглой стороне рамы находится кожух, прикреп-
ленный к плате управления. При повороте рама скользит внутри кожу-
ха, благодаря чему конструкция при маневре не просто поворачивается,
а изгибается в сторону.
Для того чтобы передние колеса при повороте не упирались в плату
управления, поворотная рама ограничена ходом в кожухе. Это решение,
придает большую маневренность всей конструкции РОС, а также позво-
ляет сократить количество поворотных механизмов. В целях экономии
210
Глава 9
было решено отказаться от каркаса конструкции и использовать вместо
него плату управления, поскольку она выполнена из прочного текстоли-
та. На плате управления размещается запрограммированный микрокон-
троллер.
Поскольку РОС должен двигаться в сторону большей освещенно-
сти, для него выбираются чувствительные, легкие фотодатчики. Кроме
того, спереди и сзади на пружинах подвешены рамки датчиков препят-
ствия. РОС не только двигается на свет, но и преодолевает препятствия.
Именно в этом и состоит основная идея программы.
Структурная схема
Структурная схема робота показана на рис. 9.3.
D1
Опитх
АЦП
ипитй
A/# D0..D:(T
MUX
AT Ппу26
Блок питания
Аккумулятор
Ядро мк
AT t«»y26
Порт ввода
вывода
М РВ0.РВ1
» Порт ввода
п вывода
7 РВ2. РВЗ
Порт ввода
r-Л вывода
|у РА4.РА5
| <• < юрт ввод;
| j вывода
i РА6, РА7
Спереди
1
Сзади
IN2
D2
IN1
IN2
D3
D4
IN”!
IN2
IN1
1N2
OUT1
OUT2
OUT1
OUT2
OUT1
OUT2
OUTl
OUT2
ШД2
Рис. 9.3. Структурная схема робота
На фотодатчик 1 и фотодатчик 2 попадает свет, а операционные
усилители ОУ1 и ОУ2 усиливают сигнал с фотодатчика, попадающий
на АЦП, где он преобразуется в цифровые десятиразрядные данные D0-
D10. Данные с обоих датчиков обрабатываются в ядре микроконтролле-
ра tiny26. Их уровни сравниваются с помощью логических и арифмети-
Робот “Охотник за светом"
211
ческих действий, и в зависимости от результата сравнения принимается
решение о направлении движения всей конструкции РОС.
Кроме того, на решение схемы управления влияет замыкание кон-
тактов препятствия, установленных сзади и спереди конструкции. Если
РОС наехал на препятствие, то он должен отъехать назад и свернуть
влево, чтобы объехать преграду. Схема управления через порты А и В
подает код в драйверы обмоток D1-D4, которые могут коммутировать
ток через обмотку в обоих направлениях.
Драйвер построен по мостовой схеме. Для каждой обмотки шагово-
го двигателя (ШД) используется свой драйвер, поэтому требуется четы-
ре микросхемы. В мировой практике применяют готовый драйвер обмо-
ток ШД L298 [29], однако вес микросхемы L298 из-за наличия радиато-
ра в два раза превышает вес двух микросхехм LB1642, поэтому было ре-
шено использовать небольшие LB1642 [30].
По мере протекания тока в обмотках возбуждения возникает вра-
щающееся магнитное поле. Вал ШД1 и ШД2, в свою очередь, вращается
согласно последовательности возбуждения магнитного поля. При пода-
че определенной последовательности кода ШД1 и ШД2 вращаются,
и конструкция двигается прямо или поворачивает в сторону.
Общий вывод из всего вышесказанного таков: фотодатчики указы-
вают курс движения конструкции, а контактные датчики выявляют
локальные препятствия и обуславливают изменение маршрута движе-
ния РОС.
Принципиальная схема
Схема робота (рис. 9.4) состоит из пяти микросхем.
Задействованные в схеме детали:
• фоторезисторы Rl, R2 — СФ2-2;
• С2 — танталовый конденсатор емкостью 1 000 мкФ, 6,3 В или элек-
тролитический конденсатор с мальъм током утечки;
• микроконтроллер ATTINY26-16PU в корпусе DIP;
• кнопки SI, S2 взяты из дисковода;
• электролитические конденсаторы — малогабаритные;
• индуктивность L5 — слаботочная (не более 50 мА) на 47 мкГн;
• кварцевый резонатор — 4,194 МГц;
• светодиоды — на 3 мА;
• шаговые двигатели — от дисководов.
Всей конструкцией РОС управляет микроконтроллера tiny26 (IC1).
Питание от аккумуляторной батареи подается на плату (выводы 4-5 В и
GND). Питание — нестабилизированное (напряжение — от 4 до 5,5 В).
212
Глава 9
Рис. 9.4. Принципиальная схема робота
Робот “Охотник за светом”
213
Минимальное напряжение, при котором нормально работает вы-
ходной каскад на основе LB1642, составляет 4,0 В [30]. Максимальное
напряжение питания микроконтроллера tiny26 — 5,5 В.
Поскольку выключатель питания должен обеспечивать ток потреб-
ления около 1 А, его габариты и вес значительно влияют на полноцен-
ную работу конструкции РОС. По этой причине выключатель питания
в схеме не используется. Но здесь возникает проблема: РОС начинает
автоматически работать при подаче напряжения. Для ее решения функ-
цию отключения питания выполняет двухпозиционная кнопка “RESET”.
При коммутации кнопки S3 на “землю” микроконтроллер окажется
в состоянии режима “Сброс”, пока на выводе 10 будет низкий логиче-
ский уровень. О наличии питания платы управления свидетельствует
засветка светодиода LED1. Для активизации РОС достаточно выйти из
режима “Сброс”, разомкнув связь кнопки S3 с “землей”.
С выводом 10 микроконтроллера соединен вывод 9 микроконтрол-
лера, на который программа коммутирует АЦП. В случае низкого на-
пряжения питания РОС остановится. Возникает вопрос:'“Каким образом
АЦП микроконтроллера tiny26 определит, что напряжение питания упа-
ло?”. В момент коммутации обмоток ШД произойдет падение напряже-
ния аккумулятора. Конденсатор С2 не успеет разрядиться через L5,
а схема АЦП питается от танталового конденсатора С2 емкостью
1 000 мкФ, что даст разницу в считываемых данных АЦП. TeiM самььм
мы косвенно измеряем ток разряда аккумулятора. Эта зависимость по-
зволяет в динамическом режиме проверить состояние аккумулятора
и заблаговременно сделать перерыв для восстановления его емкости.
В качестве информации о состоянии РОС светятся два светодиода:
LED2 и LED3. Это означает, что питание присутствует, однако напря-
жение — недостаточное для работы РОС, и необходима подзарядка.
Работу микроконтроллера tiny26 тактирует кварцевый резонатор Q1
номиналом 4,194 МГц. В таком режиме микроконтроллер работает бо-
лее устойчиво.
Аналоговый сигнал об освещенности пути снимается с фотодатчи-
ков R1 и R2. Они включены по схеме делителей напряжения, соответст-
венно: Rl, R4 и R2, R5 (R4, R5 — подстроечные). На средней точке де-
лителей АЦП микроконтроллера замеряет уровень напряжения. Далее
выполняется программа.
Работа программы также зависит от состояния контактов S1 и S2.
В случае их замыкания РОС изменяет направление движения. При этом
замыкание контактов сигнализирует один из светодиодов: LED2 или
LED3. Если батарея питания разрядилась, то засветятся оба светодиода.
214
Глава 9
При коммутации обмоток ШД возникают провалы в общем питании
схемы. Во избежание этого эффекта параллельно выводам питания каж-
дого драйвера подключены электролитические конденсаторы С6-С8.
Кроме того, при работе обмоток ШД могут Появится электромагнитные
скачки коммутации, и, как следствие, — электромагнитные помехи. Для
их устранения к выводам платы на обмотки ШД подключены конденса-
торы С9-С16.
Алгоритм
Во время движения предполагается приближаться к более освещен-
ному месту. Если освещение на одном из фотодатчиков — более интен-
сивное, то движение РОС перестраивается в этом направлении (позиции
1 и 2 на рис. 9.5).
Рис. 9.5. Логика движения робота
Если РОС обнаружил препятствие (позиция 3 на рис. 9.5), то он
отъезжает назад (позиция 4 на рис. 9.5) и поворачивает назад вправо
(позиция 5 на рис. 9.5). Попытка двигаться в сторону от источника света
завершается ничем, и РОС меняет направление движения на противопо-
ложное (позиция 6 на рис. 9.5). Если на пути РОС опять возникает пре-
пятствие, то он сдает назад и опять пытается объехать преграду слева.
На четвертой попытке РОС переходит в режим ожидания на одну мину-
ту. Последующие действия РОС — переключится на движение вправо.
При четвертой неудачной попытке движения вправо РОС останавлива-
Робот “Охотник за светом”
215
ется и переходит в режим ожидания на одну минуту. После паузы все
действия РОС повторяются сначала. При этом РОС контролирует пита-
ние ADC9 и общий уровень освещения. В темноте робот не двигается.
Для движения в сторону света с условием преодоления препятствий
РОС должен запоминать свои перемещения для составления последую-
щего плана движения. В этом случае требуется отдельный контроллер
с большим объемом памяти и способностью выполнять сложные мате-
матические вычисления. Кроме того, необходимо оснастить такую кон-
струкцию датчиком положения относительно магнитных линий земли:
датчик 1490 или 1525 [26].
Блок-схема алгоритма разделена на две части, соответствующие ме-
ханической (рис. 9.6) и логической (рис. 9.7) частям программы. В пер-
вой блок-схеме выбирается курс движения РОС, а во второй — устанав-
ливается маршрут движения (зарождение примитивной искусственной
логики мышления). Поскольку программа РОС имеет сложную логиче-
скую структуру, поведение робота в той или иной ситуации соответст-
вует отдельным, неявным блокам состояния. Неявные блоки состояния
исходят из общей концепции логики поведения РОС, описанной выше,
и изменяются при изменении поведения на более агрессивное или мало-
подвижное. Неявными блоками состояния рассматриваемой модели
РОС являются курс и маршрут движения. Увеличив количество неяв-
ных блоков (например, добавив “зрение” или способность анализиро-
вать размеры препятствия), при достаточном ресурсе микроконтроллера
(или наличии нескольких микроконтроллеров) можно создать полно-
ценного робота. При создании группы блоков, в виде группы микрокон-
троллеров, связанных приоритетами и логикой поведения, достигается
искусственный интеллект. В этом случае построение неявных блоков
должно соответствовать поставленной задаче.
При движении РОС необходимо решать проблему ориентации.
Ориентация при повороте может быть задана заранее с помощью кодо-
вой таблицы, определяется по ориентиру (датчик магнитного поля зем-
ли, GPS-навигатор) или с помощью обратной связи в виде телекамеры.
В конце концов, автоматическому роботу незачем распознавать поло-
жение юга и севера. Ему достаточно передвигаться в локальной облас-
ти, приемлемой для выполнения поставленной задачи. В рассматривае-
мом РОС применена кодовая таблица заданной траектории движения.
Рассмотрим блок-схему, показанную на рис. 9.6. В ее верхней части
АЦП считывает данные двух фотодатчиков, которые затем вычитаются
и, в зависимости от результата, выбирается ветвь управления движени-
ем РОС. В каждой ветви присутствует проверка состояния контактных
216
Глава 9
датчиков S1 и S2 (см. рис. 9.7). Результат проверки отражается на изме-
нении маршрута согласно рис. 9.7.
Рис. 9.6. Алгоритм выбора курса движения РОС
Робот “Охотник за светом”
217
Рис. 9.7. Определение маршрута движения РОС
При возникновении препятствия движению РОС реагирует не сразу.
Мелкие препятствия робот может преодолеть силой, проталкивая их по
ходу движения. Если препятствие не столкнуть, то РОС выполняет ма-
невр. Любые автоматические действия РОС основаны на прохождении
заданного количества шагов. Каждый поворот состоит из комбинации
поворота вала ШД1 и ШД2 на 360°. Так, для поворота влево необходимо
выполнить следующие операции: ШД1 (левый) — один шаг назад, ШД2
218
Глава 9
(правый) — два шага вперед. При повороте влево вал ШД1 вращается
против часовой стрелки, а вал ШД2 — по часовой стрелке. Тем самым
достигается хорошая маневренность корпуса РОС.
Автоматический маневр в виде комбинации поворотов соответству-
ет блок-схеме, показанной на рис. 9.7. На ней указана исходная точка
“А” и конечная точка “В” логики управления. В точке “В” присутствует
общая линия связи в виде штриховой линии.
Маневры РОС зависят от габаритов РОС и размеров препятствий.
Если эти размеры не сопоставимы и имеют большой разброс, то необ-
ходимо ввести коэффициент масштабирования относительно размеров
РОС и пересчитать траекторию маневра для преодоления препятствия
(т.е. появится новый неявный блок состояния РОС). В данной модели
такой неявный блок не предусмотрен. Предполагается, что размеры
препятствий равны или меньше РОС (см. рис. 9.5).
Программа
Программа начинается с установки состояния портов ввода вывода.
Затем поочередно настраивается и опрашивается АЦП фотодатчика 1
и АЦП фотодатчика 2 (см. рис. 9.6). Данные приводятся к среднему
арифметическому и формируются значения D и S в соответствии с ос-
вещенностью каждого фотодатчика. Для решения логической задачи
микроконтроллеру легче оперировать небольшими положительными
или отрицательными цифрами, близкими к нулю, поэтому на следую-
щем этапе выполняется вычитание F = D — S, а полученный результат
сравнивается по модулю с 10. Если он меньше, то РОС двигается прямо,
если F > +10, то РОС двигается влево, если же F < -10 то РОС двигает-
ся вправо.
В аналоговой технике данный результат достигается легко, однако
она требует установки нескольких корпусов операционных усилителей
и резисторов, что увеличивает вес конструкции. Кроме того, в ходе экс-
периментов может потребоваться программно расширить область зна-
чений (например, до +20 или +30). В аналоговой технике для этого по-
требуется изменить схему, что трудоемко и неоправданно сложно.
В нашем же варианте робота программа может меняться сколько угодно
под разные задачи и требования, но конструкция РОС остается прежней.
Следующий этап — переход ко второму алгоритму (см. рис. 9.7),
анализирующему препятствия на пути следования. В соответствующей
подпрограмме проверяется состояние контактных датчиков S1 и S2. Ес-
ли сработал датчик S2 (спереди), то РОС делает четыре шага назад, не-
большой поворот влево и четыре шага вперед, после чего опять опра-
Робот “Охотник за светом”
219
шиваются датчики S1 и S2. Если ситуация повторилась четыре раза, то
РОС останавливается на одну минуту для восстановления заряда акку-
мулятора.
Как только ситуация с S1 и S2 исправилась, и контакты не замкну-
ты, подпрограмма выходит в основную программу. Далее повторяются
шаги РОС, пока их количество не достигнет десяти. Это число можно
изменить во время экспериментов с маневренностью РОС. Оптималь-
ный диапазон — от двух до 20 шагов. Как только отсчет шагов завер-
шен, программа переходит в начало, и весь цикл повторяется. Для по-
вышения точности движения РОС можно увеличить количество фото-
датчиков или разместить фотодатчик на поворотной платформе.
В рассматриваемой конструкции заложена программа с задержкой
между импульсами, подаваемыми на ШД, около 3 мс. Это обеспечивает
постоянное, довольно быстрое движение РОС.
Программа на ассемблере представлена в листинге 9.1, а шестна-
дцатеричный код — в листинге 9.2. Соответствующие файлы ros2 . asm
и ros2.hex находятся на прилагаемом к книге компакт-диске в папке
Программы\09 - Робот.
.include "c:\Program Files\Atmel\AVR Studio\Appnotes\tn26def.
inc"
/Автор: Кравченко А.В.
;Дата: 14.08.2008
;Версия: 1.1.2
;Имя файла: ROS2.asm
/•Микроконтроллер: AVR tiny26.
/•Тактовая частота: 4,194мГц
/•Питание: нестабилизированное 4,8 В
. list
def adr = rO ; Рабочий регистр
def add = r27 ; Рабочий регистр
def prgl = r24 ; Рабочий регистр
def prg2 = r25 ; Рабочий регистр
def dl = Г16 ; Рабочий регистр
def d2 = rl7 ; Рабочий регистр
def tmp2 = rl8 ; Рабочий регистр
def tmp3 = r28 ; Рабочий регистр
def tmp = r20 ; Рабочий регистр
def adc2 = r21 ; Рабочий регистр
def F = r22 ; Рабочий регистр
def Fl = r23 ; Рабочий регистр
def par = r26 ; Рабочий регистр
220
Глава 9
Листинг ЭЛ* Продолжение
def def SI S2 = rl9 = r29 ; Рабочий регистр ; Рабочий регистр
cseg
org 0
rjmp RESET
nop /rjmp EXT_INT0 - прерывание не используется
nop ;rjmp EXT_PCINT- прерывание не используется
nop ;rjmp TIME-CMPA - прерывание от таймера
nop ;гjmp Т1МЕ_СМРВ - прерывание от таймера
nop ;rjmp TIME_OVF1 - прерывание от таймера
nop ;rjmp TIME_OVFO - прерывание от таймера
nop ;rjmp UCI_START - прерывание от USI
nop ;rjmp UCI—OVF - прерывание от USI
nop ;rjmp EE_RDY - прерывание от таймера
nop ;rjmp ANA_COMP - прерывание от компаратора
nop ;rjmp ADC - прерывание от АЦП
.org 20
;настройка RESET: пор порта В
clr tmp
Idi tmp, $0F ;PB0-3 -выход
out DDRB, tmp
out PORTB, tmp /обнулить порт В
clr tmp
Idi tmp, $F0 /РА4-7 -выход
out DDRA, tmp
clr tmp
out PORTA, tmp /обнулить порт А
;настройка программного стека
Idi tmp, low(RAMEND) /указатель стека
out S P, tmp /полный стек
Начало программы
nStart: nop
/сброс всех clr clr clr значений tmp tmp2 tmp3
/вход з подпрограмму опроса АЦП1
nop Idi Idi add, $40 /источник питания, ADCO, adc2, $C5 /одиночное, запуск, 1/32
/опрос уров? •я освещенности
rcall adcn
Робот “Охотник за светом”
221
Листинг ЭЛ, Продолжение
mov dl, tmp2 /загрузка младшего разряда
mov d2, tmp3 /загрузка старшего разряда
; вход в подпрограмму опроса АЦП2
nop
Idi add, $40 /источник питания, ADC0,
Idi add, $C5 , /одиночное, запуск, 1/32
;опрос уровня . освещенности
real! adcn
mov SI, tmp2 , /загрузка младшего разряда
mov S2, tmp3 , /загрузка старшего разряда
;вычитанием F -D-S
nop real! arifm ; /подпрограмма ариметических действий
nop
/проверка области значений +-10
;освещенность местности - день
brbs 2, min ; /переход по "отрицательное"
nop
cis
cpi F, $0A
brio pram ; /переход по "меньше +10"
nop
rjmp vlevo ; /переход по "больше, положительное"
min: nop
cln
cis
cpi F, $0A
breq nop pram ; переход по "меньше -10"
brge vpravo ; переход по "больше, отрицательное"
nop rjmp nStart
nop
vlevo: nop rcall SS переход влево
nop
Idi Fl, $0A 10 шагов
nus: nop rcall onevlev ; подпрограмма "ШД1 шаг, ШД2 2 шага"
nop rcall zader подпрограмма задержки
nop
clz
dec Fl
brio nus
nop
Ill
Глава 9
Листинг 9 Л, Продолжение .
rjmp nStart
vpravo nop /переход влево
rcall SS
nop
Idi Fl, $0A /10 шагов
nip: nop
rcall onevprav /подпрограмма "ШД1 2 шага, ШД2 шаг
nop
rcall zader /подпрограмма задержки
nop
clz
dec Fl
brio nip
nop
rjmp nStart
pram: nop /переход влево
rcall SS
nop
Idi Fl, $0A /10 шагов
not: nop
rcall onestep /подпрограмма "ШД1 шаг, ШД2 2 шага
nop
rcall zader /подпрограмма задержки
nop
clz
dec Fl
brio not
nop
rjmp nStart /переход в начало программы
/Подпрограммы обработки данных
;Настройка АЦП
adcn: пор
пор
clr tmp
awe: пор
cpi tmp, $04
brsh ass
out ADMUX, add /коммутация входов АЦП
clr tmp2
clr tmp3
out ADCSR, adc2 /запуск АЦП на преобразование
/Сохранение данных АЦП
in tmp2, ADCL
in tmp3, ADCH
mov r2, cmp2
Робот “Охотник за светом”
223
Листинг 9Х Продолжение
mov r3, tmp3
mov r4, r2~
mov r5, r3
mov r6, r4
mov r'7, r5
inc tmp
rjmp awe
;среднее арифметическое действие
nop
clr r8
clc
add tmp2, r2
adc r9, r8
add tmp2, r4
adc r9, r8
add tmp2, r6
adc r9, r8
clc
Isr r9
ror tmp2
Isr r9
ror tmp2
clr r9
clc
add tmp3, r3
adc r9, r8
add tmp3, r5
adc r9, r8
add tmp3, r7
adc r9, r8
clc
Isr r9
ror tmp3
Isr r9
ror tmp3
nop
ret
/Подпрограмма вычитания двухбайтного числа
arifm: пор
/вычитание значения АЦП от набранного значения
sub dl, SI /Вычитание младшего байта
проверка на clz ноль старшего байта
cpi breq d2, loki 0
224
Глава 9
Листинг ЭЛ* Продолжение
clr стр
rol стр
sub d2, S2 /Вычитание старшего байта с заемом
sub d2, tmp
loki: nop
ret
/подпрограмма проверки контактов
SS: nop
clr tmp3
in tmp3, $1B
nop
Idi tmp, $0C
and tmp3, tmp /проверка контактов 00001100
nop
clz
cpi tmp3, $04 /проверка SI
breq vperl
nop
clz
cpi tmp3, $08 /проверка S2
breq nazad
nop
clz
cpi tmp3, $0C /проверка S1S2
breq stopic
nop
vperl: nop
rcall onestep
nop
rjmp qlo
nazad: nop
rcall zadstep
nop
rjmp qlo
stopic: nop
rcall stop
qlo: nop
ret
/Подпрограмма движения влево полный шаг
onevlev: nop
clr tmp
Idi tmp, $0A /десять шагов
clr par
cln
cis
Робот “Охотник за светом1
225
Листи OMS П родолжение
sfg: пор
cpi par, $08 breq prn2
idi ZH, high (2*progl) /один шаг ШД2 вперед idi ZL, Low(2*progl) Add ZL, par LPM mov prgl, adr out PORTB, prgl
prn2 : hkj : idi ZH, high(2*prog2) /один шаг ШД1 назад idi ZL, Low(2*prog2) Add ZL, par LPM mov prg2, adr swap prg2 out PORTA, prg2 rcall zader inc par rjmp sfg nop clr par cln dec tmp brmi hkj rjmp sfg nop ret
/Подпрограмма движения вправо полный шаг
onevprav: nop
clr tmp
Idi tmp, $0A /десять шагов
clr par
cln
cis
sld: nop
cpi par, $08
breq prv
Idi ZH, high(2*progl) /один шаг ШД1 вперед
Idi ZL, Low(2*progl)
Add ZL, par
LPM
mov prg2, adr
swap prg2
out PORTA, prg2
Idi ZH, high(2*prog2) /один шаг ШД2 назад
Idi ZL, Low(2*prog2)
226
Глава 9
Add LPM ZL, par
mov prgl, adr
out PORTB, prgl
rcall zader
inc par
rjmp sld
prv: nop
clr par
cln
dec tmp
brmi nert
rjmp sld
nert: nop
ret
;подпрограмма . движения вперед
onestep: nop
clr tmp
Idi tmp, $0A /десять шагов
clr par
cln
cis
sldl: nop
cpi par, $08
breq prvl
Idi ZH, high(2*progl)
Idi ZL, Low(2*progl)
Add ZL, par
LPM
mov prg2, adr
out PORTB, prg2 /ШД1 вперед
swap prg2
out PORTA, prg2 / ШД2 вперед
rcall zader
inc par
rjmp sldl
prvl : nop
clr par
cln
dec tmp
brmi nertl
rjmp sldl
nertl: nop
ret
/подпрограмма движения назад
zadstep: пор
Робот “Охотник за светом’’
227
Листинг 9.1. Продолжение
clr tmp
Idi tmp, $0A /десять шагов
clr par
c Ln
cis
sld2: nop
cpi par, $08
breq prv2
Idi ZH, high(2*prog2)
Idi ZL, Low(2*prog2)
Add ZL, par
LPM
mov prg2, adr
out PORTB, prg2 /ШД1 назад
swap prg2
out PORTA, prg2 ;ШД2 назад
rcall zader
inc par
rjmp sld2
prv2: nop
clr par
cln
dec tmp
brmi nert2
rjmp sld2
nert2: nop
ret
;Подпрограмма "Стоп"
stop: nop
clr tmp
OUl DDRB, tmp
out PORTB, tmp- /обнулить порт В
/вход в подпрограмму опроса АЦП1
nop
Idi add, $49 /источник питания, ADCO,
Idi adc2, $C5 /одиночное, запуск, 1/32
/опрос уровня освещенности
rcall adcn
mov dl, tmp2 /загрузка младшего разряда
mov d2, tmp3 /загрузка старшего разряда
nop
cpi tmp3, $02
brge foo
rcall mint
foo: nop
ret
228
Глава 9
Листинг ЭЛ. Окончание
/Подпрограмма задержки включения
zader: пор
wdr
Idi YL, low(9999)
Idi YL, high(9999)
ddd: sbiw YL, 1
brne ddd
ret
/Подпрограмма задержки "1 минута"
mint: nop wdr
Idi ZL, low(9999) Idi ZL, high(9999) rcall zader
dddl: sbiw ZL, 1 brne dddl ret
/Код движения по часовой стрелке
.org $200
progl:
.DB $08, $0А, $02, $06, $04, $05, $01, $09
/Код движения против часовой стрелки
.org $220
prog2:
.DB $09, $01, $05, $04, $06, $02, $0А, $08
.EXIT
Листинг Шестнадцатеричный код управления роботом
: 020000020000FC
:1000000013С000000000000000000000000000001D
: 080010000000000000000000Е8
:10002800000044274FE047BB48BB442740EF4ABB8A
:1000380044274BBB4FED4DBF000044272227CC2758
:100048000000В0Е455ЕС46D0022F1C2F0000B0E4AD
:1000580055EC40D0322FDC2F00006DD0000032F07C
:100068000000C8946A3040F100000AC00000A8945В
:10007800C8946A3009F100008CF40000DDCF00005C
:10008800000064D000007AE000007FD0000007D1B3
:10009800000098947A95C0F30000CECF000056D0A7
:1000A80000007AE0000092D00000F9D00000989497
:1000B8007A95C0F30000C0CF000048D000007AE075
:1000C8000000A5D00000EBD0000098947A95Q0F30A
:1000D8000000B2CF0000000044270000443070F454
:1000Е800В7В92227СС2756В924В1С5В1222ЕЗС2Е48
:1000F800422C532C642C752C4395EFCF0000882498
Робот “Охотник за светом”
229
Листинг 9Х Окончание
:100108008894220D981C240D981C260D981C889400
:10011800969427959694279599248894C30D981CAE
:10012800C50D981CC70D981C88949694C7959694ED
:10013800С795000008950000031В9894103021F023
:100148004427441F1D1B141В000008950000СС27Е2
:10015800CBB300004CE0C42300009894C43049F0AD
:1001680000009894С83049F000009894СС3049F0C9
:10017800000000004CD0000006C0000064D0000061
:1001880002C000007CD000000895000044274АЕ027
:10019800AA27A894C8940000A83081F0F4E0E0E011
:1001A800EA0FC895802D88BBF4E0E0E4EA0FC89513
: 1001B800902D92 959BBB7 3D0A395EDCF0 000AA2.7F5
:1001C800A8944A950AF0E7CF000008950000442754
:1001D8004AE0AA27A894C8940000A83081F0F4E067
:1001E800E0E0EA0FC895902D92959BBBF4E0E0E41F
:1001F800EA0FC895802D88BB52D0A395EDCF00009B
:100208О0АА27А8944А950AF0E7CF000008950000AD
:1002180044274AE0AA27A894C8940000A83059F0B7
:10022800F4E0E0E0EA0FC895902D98BB92959BBB4F
:1002380036D0A395F2CF0000АА27А8944A950AF0D1
:10024800ECCF00000895000044274AE0AA27A894AC
:10025800С8940000А83059F0F4E0E0E4EA0FC8952В
:10026800902D98BB92959BBB1AD0A395F2CF000016
:10027800AA27A8944A950AF0ECCF00000895000038
:10028800442747BB48BB0000B9E455EC23DF022FE5
:100298001C2F0000C2300CF409D0000008950000A3
:1002A800A895CFE0C7E22197F1F708950000A89537
:0C02B800EFE0E7E2F4DF3197F1F7089582
:08040000080А020604050109С7
:080440000901050406020А0887
: 00000001FF
Для уменьшения скорости в подпрограмме zader достаточно уве-
личить паузу между импульсами. Для будущих разработок подпрограм-
му zader лучше реализовать в виде отсчета таймера и прерывания. Это
позволит программе заняться более тщательной обработкой поступаю-
щих сигналов. В ситуации с препятствием на пути следования скорость
движения лучше уменьшить в два раза. Для этого следует увеличить
вдвое паузы между импульсами. Данный прием можно назвать “адапта-
цией к обстановке”.
Монтажная плата
Монтажная плата рис. 9.8 имеет высокую плотность монтажа. Ее
габариты — 88x65 мм.
230
Глава 9
Рис. 9.8. Монтажная плата управления роботом (начало)
Робот “Охотник за светом”
231
Рис. 9.8. Продолжение
232
Глаза 9
Рис. 9.8. Окончание
Кнопка S2 не устанавливается на плату, а выводится через удлини-
тельные провода спереди конструкции РОС. Кнопка S1 припаивается
к плате сзади РОС. Для обеспечения большего угла поворота передних
колес у платы снизу по указанным линиям обрезаются углы. Обмотки
Робот “Охотник за светом”
233
Рис. 9.9. Аккумулятор Коппос
L1-L4 на плату не устанавливаются. Эти элементы необходимы для
обозначения выводов обмоток ШД на плате. S3 устанавливается не как
кнопка, а как выключатель. При этом нет необходимости в установке
выключателя питания, имеющего большие габариты и большой вес. Фо-
тодатчики Rl, R2 устанавливаются вертикально. В точках GND и +5 В
подключаются провода питания от аккумулятора, который крепится под
платой через прокладку стяжками в передней части аккумулятора. Зад-
няя часть аккумулятора лежит на задней подвеске. Микроконтроллер
устанавливается на панельке и фиксиру-
ется стяжкой. Драйверы обмоток IC2-IC5
устанавливаются вертикально и не тре-
буют дополнительных радиаторов.
Аккумулятор Ni-Cd выбран необыч-
ный. Его параметры: 4,8 В, 700 мАч.
Компания-изготовитель — Коппос
(рис. 9.9).
Согласно инструкции на упаковке,
перед употреблением аккумулятор необ-
ходимо зарядить током 70 мА в течении
15 часов. Его пластиковую упаковку ути-
лизировать не надо — она понадобится
для изготовления изоляционного отсека.
Настройка
Настройка РОС начинается с отключения обмоток ШД, подключе-
ния аккумулятора к плате и проверки питающего напряжения. Далее
необходимо определить пары обмоток ШД и фазировать их в правиль-
ном направлении вращения. Для этого РОС помещается перед лампой.
Оба фотодатчика должны показывать примерно одинаковый уровень
освещенности. Между точками “W” и “N” должна быть незначительная
разница напряжения (не более 0,5 В). В случае значительного расхож-
дения необходимо подобрать номинал резисторов R4 и R5 (не должен
отличаться более, чем на 20%). В противном случае требуется подоб-
рать одинаковые фоторезисторы R1 и R2.
Далее к схеме подключаются обмотки ШД1 так, чтобы вращение
вала ШД1 соответствовало движению всей конструкции вперед. Анало-
гично подключаются обмотки ШД2. Далее РОС полностью собирается
и устанавливается на ровную поверхность, после чего проводятся испы-
тания в темной и освещенной комнате. Если шаговые двигатели не
234
Глава 9
справляются с весом РОС, то к каждому из них необходимо добавить
механические редукторы и изменить программу управления.
Передняя подвеска
Передняя подвеска (рис. 9.10) изготовлена из медной проволоки
диаметром 3 МхМ и оснащена двумя шаговыми двигателями от дисково-
дов (рис. 9.11).
Рис. 9.10. Передняя подвеска робота
Сборочный чертеж представлен в верхней части рис. 9.10. Для изго-
товления рамы необходимо отрезать трубку из пластика (автор исполь-
зовал изоляцию одножильного провода диаметром 3 мм) длиной 55 мм,
а также приготовить ровную заготовку из медной проволоки длиной
200 мм. Трубку смазывают внутри силиконовой смазкой и надевают на
отрезок медной проволоки. Затем необходимо выполнить изгибы по
размерам, показанным в нижней части рис. 9.10. Раму изгибают от сере-
дины отрезка до середины передней части рамы, после чего лишние
Робот “Охотник за светом”
235
куски проволоки удаляются. Середина передней части рамы соединяет-
ся встык и спаивается. На раму надеваются ШД1 и ШД2, которые скре-
пляются с рамой стяжками (дополнительно можно применить клей).
Для жесткости между ШД и рамой прокладывают кусочек толстой ре-
зины (можно отрезать от канцелярского ластика).
Рис. 9.11. Два шаговых двигателя передней подвески робота
Готовый узел проверяется на поворот и скольжение внутри пласти-
ковой трубки и поправляется до максимально легкого скольжения. Пол-
ный поворот влево или вправо ограничивает пластиковая трубка. Ее
концы можно удалять или наращивать шайбами. Передняя рама крепит-
ся к плате управления с помощью перемычек в плате. Перемычки при-
паиваются поверх кожуха рамы так, чтобы рама удерживалась жестко
на плате. Поворот подвески на средней линии платы должен быть сво-
бодным. Провода от ШД закладываются в термоусадочную трубку, по-
сле чего она нагревается и сжимает провода в единый жгут. Далее про-
вода припаиваются к плате управления.
Задняя подвеска
Задняя подвеска (рис. 9.12) имеет отсек для удержания аккумулято-
ра, крепление к плате и отверстия для оси задних колес.
236
Глава 9
Рис. 9.12. Задняя подвеска робота
Робот "Охотник за светом”
237
Задняя рама выполнена из медной проволоки диаметром 3 мм. Для
изготовления рамы необходима ровная заготовка длиной 180 мм. Изгиб
проволоки начинается с левого края отрезка. Вначале создается окруж-
ность так, чтобы ее “ухо” прилегало к плате, и оставался отрезок длиной
24 мм. Далее создается окружность для оси колеса так, чтобы плоскость
“уха” была перпендикулярна оси. Затем проволока загибается вверх
и остается отрезок длиной 65 мм для удержания батареи питания. В за-
вершение загибается оставшаяся правая сторона отрезка. Задняя рама
крепится к плате управления винтами с гайками с помощью верхних
“ушей”. Колёса и оси конструкции позаимствованы у игрушки. Для ог-
раничения поперечного хода осей установлены цилиндры.
Контактная группа
Контактная группа состоит из микро-выключателей (взяты из дис-
ководов) и подпружиненных планок. Передняя и задняя планка изготав-
ливаются из коробки для оптических дисков (рис. 9.13). Оргстекло дос-
таточно прочное и тонкое при небольшом весе.
Рис. 9.13. Задняя подпружиненная планка
К планке с помощью скоб стиплера крепятся распорки из медной
ленты толщиной 0,35 мм. С другой стороны распорки приклеены
к амортизационной резине шаговых двигателей. Планка удерживается
в подвешенном, подпружиненном медными распорками состоянии.
238
Глава 9
На переднюю свободную часть рамы крепится плата с микро-вык-
лючателем. Между ним и планкой устанавливается пружина (взята из
дисководов и растянута до необходимых размеров), которая клеится
к верхушке микро-выключателя и к планке клеем “Жидкие гвозди”. Пе-
ред установкой механизм микро-выключателя необходимо хорошо сма-
зать для легкого срабатывания. Контакты должны замкнутся, как только
одна из сторон планки нажата. Задняя планка изготавливается анало-
гично передней (см. рис. 9.12).
Микро-выключатель припаивается непосредственно на плату. Мед-
ные распорки крепятся винтами задней подвески. Между планкой
и микро-выключателем приклеивается пружина. Можно вместо пружи-
ны прикрепить рычаг из проволоки. В этом случае, если препятствие
твердое, рычаг будет согнут. Конечно, пружина не всегда передает уси-
лие столкновения с препятствием, и можно придумать другую конст-
рукцию демпферного датчика столкновения. Возможно, параллельно
распоркам следует поставить контакт. В таком случае при изгибе рас-
порки сработают контакты на замыкание, однако возникнет проблема
с дребезгом контактов.
Завершенная конструкция
Конструкция РОС выполнена на плате управления. К плате крепят-
ся задняя и передняя подвески. Вся конструкция должна стоять на че-
тырех колесах, не прогибаться во время поворота, и допускать свобод-
ный поворот передней подвески влево или вправо (рис. 9.14).
Рис. 9.14. Завершенная конструкция робота "Охотник за светом”
Робот “Охотник за светом”
239
Проводя от ШД и контактного датчика не должны ограничивать
поворот передней подвески. Аккумуляторная батарея расположена под
платой управления и крепится через прокладку (или защитную крышку
упаковки) к плате стяжками (рис. 9.15).
Рис. 9.15. Крепление аккумуляторной батареи
Стяжки не обязательно протягивать через всю плату. Достаточно
продеть их через просверленные в плате отверстия и закрепить с помо-
щью концевых фиксаторов. Затем можно подключить проводя питания.
Фоторезисторы устанавливают вертикально, с небольшим поворотом
фоточувствительного покрытия датчика в стороны от центра платы.
Себестоимость конструкции РОС составляет около 17 евро.
Эксплуатация
Эксплуатация РОС не сложна. В отсек РОС вставляется аккумуля-
тор, который затем подключается к плате управления. При этом кнопка
S3 должна находится в состоянии “Сброс”. РОС устанавливается на
твердую поверхность, режим “Сброс” отключается, и РОС должен на-
чать двигаться в направлении света. Движение робота можно корректи-
ровать с помощью фонарика. Если на его пути возникает препятствие,
то РОС сталкивается и отъезжает назад.
Глава 10
ll||^
автомобилей
Радиоуправление моделями автомобилей —- наглядный пример ра-
диолюбительства. Утверждение, что легче купить готовую игрушку,
чем собрать модель самому, не всегда оправдано. Наиболее простые ра-
диоуправляемые модели автомобилей стоят $15-20. При этом они —
слишком упрощенные и быстро выходят из строя. Эти модели не отве-
чают требованиям помехозащищенности, пониженного энергопотреб-
ления и универсальности. Радиус управления невелик: от 5 до 15 мет-
ров. К тому же, не моделируется реальное управление автомобилем.
В китайских моделях за основу привода руля взят соленоид, который не
дает всех возможностей для маневра модели. Рассмотренная в данной
главе конструкция лишена всех этих недостатков (рис. 10.1).
Рис. 10.1. Радиоуправляемая модель автомобиля
Радиоуправление моделями автомобилей
241
Для небольших моделей автор использовал маленький (всего лишь
восемь выводов) микроконтроллер AT tiny 15 фирмы Atmel [8] с двумя
вариантами корпуса: PDIP и SOIC. Монтажная плата занимает очень
мало места, а приемник и передатчик можно изготовить для совсем не-
больших конструкций. Микроконтроллер tiny 15 оснащен пятиразряд-
ным портом В, встроенным тактовым RC-генератором, флэш-памятью
программ объемом 1 Кбайт, памятью данных EEPROM на 64 байта, че-
тырехразрядным 10-битным АЦП, аналоговым компаратором и двумя
таймерами/счетчиками. Напряжение питания — 4..6 В. Микроконтрол-
лер предоставляет большие возможности перепрограммирования [8].
Микроконтроллер tinyl 5 выполнен по архитектуре RISC (рис 10.2),
основным преимуществом которой является увеличение быстродействия
за счет сокращения количества операций обмена с памятью программ.
Сокращенное количество регистров позволяет эффективно управлять ра-
диомоделью. Микроконтроллер поддерживает 90 команд и содержит 32
регистра общего назначения. Тактовая частота — 1,6 МГц.
Схема управления радиомоделью содержит два конструктивно за-
вершенных блока: передатчик с клавиатурой и приемник с исполни-
тельными драйверами двигателей. Учитывая сло*жность получения пол-
ной информации о местоположении радиоуправляемой модели, для бо-
лее сложных конструкций необходимо вводить схемы видеонаблюдения
и автоматического распознавания объектов и преодоления препятствий.
Эти схемы выходят за рамки радиолюбительства, поскольку используют
сложный математический анализ, однако для исключения помех в ра-
диоэфире и наложения чужих команд автор применил систему кодиро-
вания/декодирования команд управления. Для упрощения передачи
и приема информации была задействована обычная амплитудная моду-
ляция (100% амплитудно-модулированной несущей частотой). Для де-
кодирования применены основы теории вероятности.
Передатчик
Принципиальная схема передатчика для управления радиомоделью
показана на рис. 10.3. Основное управление передатчиком реализовано
с помощью микроконтроллера IC1, который опрашивает клавиатуру и,
исходя из комбинации нажатых клавиш, подает последовательный код
на модулятор передатчика.
В начале микроконтроллер последовательно выдает на выводы 2, 3,
7 порта В код 1-2-4-8. Дешифратор IC2 преобразовывает этот код
в “бегущую единицу”, а микроконтроллер проверяет вывод 6 порта В.
242
Глава 10
Если одна из клавиш S2-S5 замкнута, то соответствующий код команды
передается на передатчик.
VGC
РЮРЕ-5
Рис. 10.2. Структурная схема микроконтроллера tinyl 5
Радиоуправление моделями автомобилей
243
Рис. 10.3. Принципиальная схема передатчика для управления радиомоделью
244
Глава 10
В данном варианте работают только четыре клавиши передатчика,
однако в перспективе их число можно увеличить. При увеличении ко-
личества клавиш (более 10) необходимо использовать более сложный
микроконтроллер с большим числом портов ввода-вывода и активнее
использовать его регистры.
Стандартное питание дешифратора IC2 составляет 5 В, однако
нижний предел — ЗВ, что позволяет использовать две батарейки по
1,5 В. Микроконтроллер преобразует полученный с клавиатуры код, в
помехозащищенный код и выдает последовательность импульсов через
вывод 5 порта В на базу Q1.
Напряжение питания микроконтроллера может находиться в диапа-
зоне 2,7..5,5 В. Транзистор Q1 — амплитудный модулятор передатчика,
собранного на VT1. Фактически Q1 работает в ключевом режиме, что
является недостатком такого типа модулятора. Реализация модулятора
очень проста [31] и не требует настроек. Поскольку Q1 — полевой тран-
зистор, ток потребления затвора сведен к минимуму, а схема включения
с общим истоком позволяет транзистору выполнять роль модулятора.
Полоса пропускания простых амплитудных детекторов приемников
лежит в диапазоне 50..4 500 Гц. Для передачи последовательного кода
автор использует звуковую частоту 3 кГц. Генератор возбуждения по-
строен по емкостной “трехточке” с резонансным контуром L2, L3, СЗ.
Для уменьшения помех по несущей частоте перед антенной установлен
полосовой фильтр L1 (емкость антенны). Для улучшения дальности
приема и избирательности в передатчике можно использовать активный
усилитель радиосигнала и более избирательные полосовые фильтры.
Программа передатчика
Алгоритм работы передатчика (рис. 10.4) довольно прост и начина-
ется со сброса всех регистров (манипуляции с регистрами позволяют
анализировать и управлять состояниями выходных портов микрокон-
троллера).
В начале программы поочередно опрашивается клавиатура шестна-
дцатеричным кодом. В данном примере использованы только четыре
клавиши, однако при добавлении устройств можно использовать 10
клавиш (в этом случае программу необходимо расширить). Для линий
РВ2 и РВЗ контроллер формирует четыре комбинации выходных сигна-
лов с задержкой между комбинациями 0,01 с. Дешифратор преобразует
код в “бегущую единицу”. С каждой комбинацией микроконтроллер
снимает данные с линии РВ1 и записывает зарегистрированный код
в регистр R6. Вывод РВ1 порта В опрашивается каждую 1 мс.
Радиоуправление моделями автомобилей
245
Рис. 10.4. Алгоритм работы передатчика
246
Глава 10
Сканирование клавиатуры производится дважды. Каждой клавише
присваивается такой код, чтобы сумма кодов давала уникальный ре-
зультат. Результаты первого и второго опроса клавиатуры сравнивают-
ся, и в случае их расхождения (дребезг контактов) сканирование повто-
ряется заново. Коды нажатых клавиш суммируются (только для тех кла-
виш, комбинации которых логически верны).
Предположим у нас есть четыре кода клавиш (табл. 10.1). В таком
случае комбинация “вверх влево” даст суммарный код 6, а комбинации
“вверх вниз” и “влево вправо” будут просто проигнорированы.
Таблица 10.1. Пример кодирования клавиш
Действие Код Сумма
Вверх 1
Вниз 3
Влево 5
Вправо 9
Вверх влево 6
Вверх вправо 10
Вниз влево 8
Вниз вправо 12
Выделенный код комбинации нажатых клавиш преобразуется в таб-
личный помехозащищенный код, представленный в виде байта (восемь
бит). Для передачи байта информации используется алгоритм поразряд-
ного сдвига влево через разряд переноса. Передаваемый бит выделяется
(анализируется состояние разряда переноса) и поступает на модулятор
передатчика через вывод РВО порта В.
Передача восьмибитной информации (с частотой 3 кГц) повторяет-
ся 10 раз с паузой между посылками 10 мс. Это необходимо для анализа
принятых данных в приемнике и выявления правдивой информации
с вероятностью более 50%.
Программа передатчика представлена в листинге 10.1, а шестнадца-
теричный код программирования микроконтроллера передатчика —
в листинге 10.2. Соответствующие файлы Peredatcikl 91. asm и Pere-
datcikl 91. hex находятся на прилагаемом к книге компакт-диске
в папке ПрограммыМО - Радиоуправление.
Листинг 10x1 к Программа управления передатчиком
.include "C:\Program Files\Atmel\AVR Stud±o\Appnotes\15def.inc"
.def tmp = rl6
.def top = rl7
.def tip = r26
Радиоуправление моделями автомобилей
247
Листинг 10.1, Продолжение
equ row2 = ?B4
equ hkayl = PB2
equ hkay2 = PB3
equ rowl = PbO
equ broad = Pbl
equ cvlevo = SA4
equ cvpravo = SAI
equ cverh = SA8
equ cvniz = SAA
equ cvlevniz = $A5
equ cvpravniz = SA3
equ cvleverh = SAB
equ cvpraverh = SA9
. cseg
. org О
rgmp RESET
nop ;rjmp EXT_INT0 - прерывание не используется
nop ;rjmp TIM_OVFO - прерывание не используется
RESET: Idi tmp, low(RAMEND) /определение стека ОЗУ
;настройка порта В
out SPL, tmp
clr tmp
clr top
out PORTB, R6 /на всех линиях порта В -ноль
Idi tmp,$0Е /РВ1,РВ2,РВЗ-выходы
out DDRB, tmp
/Проверка клавиатуры, выдача кода из таблицы,
/устранение дребезга контактов. Клавиатура -- 4 клавиши
SNOV: clr top
clr tip
rcall SBR1 /
rcall SBR2 /
wdr /сброс сторожевого таймера
cbi PORTB, rowl /обнуление порта
VVOD: cbi PORTB, hkayl /сброс PORTB2
cbi PORTB, hkay2 /сброс PORTB3
rcall dlOOms
sbic PORTB, rowl /пропуск команды, если ноль
rcall VERH
sbi PORTB, hkayl /установка PORTB2
cbi PORTB, hkay2 /сброс PORTB3
rcall dlOOms
sbic PORTB, rowl
rcall VNIZ
cbi PORTB, hkayl /сброс PORTB2
248
Глава 10
Листинг 10.1. Продолжение
sbi PORTB, hkay2 ;установка PORTB3
rcall dlOOms
sbic PORTB, rowl
rcall VLEVO
sbi PORTB, hkayl ;установка PORTB2
sbi PORTB, hkay2 ;установка PORTB3
rcall dlOOms
sbic PORTB, rowl
rcall VPRAVO
nop sbrc R6, 0
rjmp SRAV
mov R22, R18 ;обмен данными
mov R23, R19
mov R24, R20
mov R25, R21
inc R6
rjmp nop VVOD
SRAV: clz
cp R18, R22 /проверка нажатия клавиши
brbc 1, SNOV ;для устранения дребезга
cp R19, R23 ;контактов
brbc 1, SNOV
cp R20, R24
brbc 1, SNOV
cp R21, R25
brbc 1, SNOV
/выделение кода клавиши и передача всех нажатых комбинаций
add R18, R20 /получаем возможную комбинацию
push R18 /сохранение данных регистра
mov R27, R18 /перегрузка в оперативный регистр
rcall recod /переход в подпрограмму декодировки
pop Rid /восстановление данных регистра
add R18, R21
mov R27, R18
rcall nop recod
add R19, R20
push R19
mov R27, R19
rcall recod
pop R19
nop
add R19, R21
Радиоуправление моделями автомобилей
249
ЛистйнгШХ Продзлжёние
mov rcall nop rjmp R27, R19 recod SNOV /возврат в начало
; подпрограмма передачи полученных данных
/путем сдвига влево через флаг carry
brodcast: cbi PORTB, top tip top, $0A . 1 /установить ноль в PORTB1 /передача 10 раз команды
clr clr Idi
BAT: BIT: L: nop Idi clc mov nop nop rol brbs brbc rjmp sbi tip, $08 R4, R27 R4 0, L 0, К К PORTB, broad /передача 8 битов /сброс флага carry /загрузка из таблицы команды /начало цикла передачи битов /сдвиг влево через флаг carry /переход, если саггу=1 /переход если саггу=0 /установить еденицу в PORTB1
K: rcall rjmp cbi dO16ms CON PORTB, broad /установить ноль в PORTB1
rcall CON: nop clz dec brbc cbi clz dec brbc nop ret /подпрограмма dO16ms tip 1, BIT PORTB, broad top 1, BAT кодирования /пропуск команды, если Z=0 /конец цикла передачи битов /установить ноль в PORTB1 /сброс флага нуля /начало цикла передачи команды /переход, если Z = 0 /конец цикла передачи нажатой клавиши
VERH: clr clr Idi add ret tip R18 tip, $01 R18, tip /кодирование нажатой /клавиши для
250
Глава 10
Листинг 10.1. Продолжение
VNIZ : clr tip
clr R19
Idi tip, $03
add R19, tip /определения комбинации
ret /клавиш через их общую сумму
VLEVO: clr tip
clr R2 0
Idi tip, $05
add R20, tip /и дальнейшее выделение по
ret / коду
VPRAVO clr tip
clr R21
Idi tip, $09
add R21, tip
ret
;подпрограмма сброса регистров в начальное состояние
SBR1 : cbr R18, $00
cbr R19, $00
cbr R20, $00
cbr R21, $00
ret SBR2: cbr R22, $00
cbr R23, $00
cbr R24, $00
cbr R25, $00
ret /подпрограмма времени паузы передачи битов
d016ms: wdr /0.168 мс
Idi YL, low(420) /т.к. 2 байта, то нижний байт
Idi YH, high(420) /и верхний байт десятичного
d05_l: sbiw / числа имеют такую запись YL, 1
brne d05_l
ret /подпрограмма времени паузы опроса клавиши
dlOOms: Idi ZL, low (10000) / 10 мс
Idi ZH, high(lOOOO)
d500_l: пор
sbiw ZL, 1
nop nop nop nop nop brne d500 1
Радиоуправление моделями автомобилей
251
Листинг 10,1. Окончание
ret
;пере? содирозка клавиши
recod: vp: : nop cpi brbs cpi brbs cpi brbs cpi brbs cpi brbs cpi brbs cpi brbs cpi brbs rjmp Idi R27,$01 1, vv ; R27,$03 1, vn R27,$05 1, vl R27,$06 1, vlv R27,$08 1 r vln R27,$09 1 r vp R27,$0A 1 r vpv R27,$0C 1 r vpn isb ; R27, cvpravo ; сравнение регистра и константы переход, если результат - ноль код - ноль или другой присваивание регистру кода
rjmp vl : Idi rjmp vv: Idi rjmp vn: Idi rjmp vln: Idi rjmp vpn: Idi rjmp vlv: Idi rjmp vpv: Idi isc: nop rcall isb: nop ret ;подпрограммы isc R27, cvlevo isc R27, cverh isc R27, cvniz isc R27, cvlevniz isc R27, cvpravniz isc R27, cvleverh isc R27, cvpraverh brodcast ; декодирования переход на передачу кода к подпрограмме передачи данных нажатой клавиши
Л и сти н г 10.2. Шестнадцатеричны й код у пра вленияпере датчиком
:020000020000FC
:10000O0002CO00OOOOOOOFEDODBF0027112768BAE5
:1 00010000ЕЕ007ВВ1127АА276FD073D0A895С0981 О
:10002000C298C39879D0C09953D0C29AC39874D05B
252
Глава 10
Листинг 1 ах Окончание
:10003000C09953D0C298C39A6FD0C09953D0C29A76
:10004000C39A6AD0C09953D0000060FC07C0622FE9
:10005000732F842F952F6394E3CF00009894261775
:10006000C9F63717B9F64817A9F6591799F6240FA4
:100070002F93322F5CD02F91250FB22F58D0000034
:10008000340F3F93B32F53D03F910000350FB32F60
:100090004ED000003FCFC1981127AA271AE0000058
:1000А000А8Е088944В2Е00000000441С10F020F4BF
:1000B00003C0C19A23D002C0C19828D000009894E8
:1000C000AA9589F7C19898941A9549F70000089560
:1000D000AA272227A1E02A0F0895AA273327A3E001
:1000E0003A0F0895AA274427A5E04A0F0895AA27A2
:1000F0005527A9E05A0F08952F7F3F7F4F7F5F7FDD
:1001000008956F7F7F7F8F7F9F7F0895A895C4EAB2
:10011000D1E02197F1F70895E0E1F7E2000031978F
:1001200000000000000000000000C1F7089500007A
:10013000B13099F0B33099F0B53069F0B630A9F02C
:10014000B83079F0B93029F0BA3089F0BC3059F0C4
:1001500011C0B1EA0DC0B4EA0BC0B8EA09С0ВАЕАЕЕ
:1001600007C0B5EA05C0B3EA03C0BBEA01C039EAFB
:08017000000091DF000008957A
:00000001FF
При создании программы передатчика и приемника, автор стремил-
ся достичь надежности и простоты алгоритма. Более опытные радиолю-
бители и программисты могут модернизировать или изменить парамет-
ры настроек программы. В этом случае автор рекомендует использовать
симулятор AVRStudio 4 бесплатно распространяемый через Web-сайт
компании Atmel www.atmel.com. Управление AVRStudio 4 подробно
описано в [32]. Этот симулятор полностью моделирует все процессы,
происходящие внутри микроконтроллера и на его выводах.
Конструкция передатчика
Конструкция передатчика показана на рис. 10.5, а печатная плата
(изготавливается из двухстороннего текстолита) — на рис. 10.6.
Кнопкам S2 и S3 соответствуют направления вверх и вниз, а кноп-
кам S4 и S5 — влево и вправо. Для того чтобы избежать двухсторонней
разводки платы, необходимо пропаять пять перемычек.
Питание передатчика организовано от двух аккумуляторов 3,6 В,
включенных последовательно с емкостью 100 мАч. Схема передающей
части вынесена на плате отдельно и для стабильной работы экранирует-
ся металлической фольгой (можно использовать жесть от банки кофе).
Радиоуправление моделями автомобилей
253
Рис. 10.5. Конструкция передатчика
Индуктивности L2 и L3 — бескаркасные. Каждая из них содержит
восемь витков провода ПЭВ-1 0.8, намотанных на оправке диаметром
10 мм. Согласующая катушка L1 содержит 12 витков ПЭВ-1 0.4 и нама-
тывается на каркас (диаметром 5 мм) с сердечником диаметром 2,8 мм.
Длина антенны — 150 мм. Для управления необходимо изготовить
два джойстика. На рис. 10.7 показана конструкция джойстика, предло-
женная автором.
Изготавливаются две шайбы 4 и 6 так, чтобы внутренний диаметр
шайбы немного утапливался в шарик 5 джойстика 7, а на внешнем диа-
метре были пазы или отверстия под проволочные опоры. На джойстик 7
надевается шарик из пластика любого диаметра и фиксируется (напри-
мер, клеем). Джойстик 7 с шариком 5 помещается между шайбами 4 и- 6,
к которым припаиваются (или продеваются в отверстия на внешнем
диаметре шайбы и зажимаются) жесткие опоры из проволоки. К нижне-
му окончанию джойстика припаивается (или прикручивается гайками
с двух сторон) жесткая пластина 2 в виде перекрестья. Вся конструкция
фиксируется к плате (припаивается или прикручивается гайками с двух
сторон), чтобы перекрестье лежало на кнопках управления 1.
Настройка передатчика
После монтажа необходимо внимательно проверить пайку элемен-
тов. Экран передатчика во время настройки можно не устанавливать.
При включении питания кнопкой Sic помощью осциллографа следует
проверить процесс сканирования клавиатуры на выводах 2, 3, 14 и 15
микросхемы IC2. Импульсы опроса должны выдаваться с паузой 10 мс.
Если импульсы отсутствуют, то необходимо проверить питание процес-
сора и прошивку программы.
254
Глава 10
___22
Qiio]
C2
L1__
ООО
О О
R1
OSO
300
15K
OSO
R2
R3
OSO
15K
VT1
BC307
ANTI
5
Рис. 10.6. Монтажная плата передатчика (начало)
Радиоуправление моделями автомобилей
255
Рис. 10.6. Продолжение
256
Глава 10
Рис. 10.6. Окончание
Радиоуправление моделями автомобилей
257
Передающий тракт передатчика следует проверить на самовозбуж-
дение при подаче питания на транзистор VT1. При этом сток Q1 можно
отпаять и соединить дорожки печатной платы стока и истока Q1 (после
проверки и настройки необходимо проделать обратную операцию). Пе-
редатчик можно также проверить во время свечения светодиода при на-
жатии на любую клавишу управления.
Частота передачи (27 МГц) регулируется путем растягивания или
прижатия друг к другу витков L2 и L3. Паразитные боковые колебания
фильтруются настройкой сердечника L1 (емкость антенны). Убедив-
шись в полной работоспособности и настройке передатчика, на плату
устанавливают экран из фольги над элементами передатчика.
Приемник
Питание на приемник подается от трех аккумуляторов Gl, G2, G3
через S1. Приемник радиоуправляемой модели собран на Q1 по схеме,
показанной на рис. 10.8 [31].
После детектирования D1 и сглаживания С6 частота 3 кГц фильтру-
ется входным фильтром L3, С8. Конденсатор С9 выделяет переменную
составляющую полезного сигнала, который усиливается операционным
усилителем IC3A (коэффициент усиления ограничен для нормирования
АЧХ на заданном уровне). Одним из недостатков схемы является отсут-
ствие контура автоматической регулировки усиления.
258
Глава 10
Радиоуправление моделями автомобилей
259
Сигнал поступает на компаратор IC3B, который выделяет основную
амплитуду из всего шума тракта AM, поскольку шум имеет низкий уро-
вень по отношению к полезному сигналу. Во входном спектре получен-
ной информации присутствуют только помехи, наводки от других стан-
ций или источников электромагнитного излучения.
Отфильтрованный и выделенный сигнал поступает на вход порта В
микроконтроллера (вывод РВ2). Микроконтроллер постоянно сканирует
вывод РВ2 (режим низкого энергопотребления в конструкции не ис-
пользуется). Как только передатчик выдал код сигнала, а приемник
принял и обработал его, микроконтроллер переходит в программу до-
полнительной обработки сигнала для подачи достоверной команды на
исполнительные устройства.
Исполнительные устройства построены на основе драйверов кол-
лекторных двигателей [33]. Автор выбрал драйвер LB1642 производства
Sanyo (рис. 10.9), поскольку он хорошо работает в диапазоне напряже-
ний 4.. 16 В и коммутирует двигатели мощностью до 1 Вт, что вполне
достаточно для небольшой радиоуправляемой модели.
При увеличении количества исполнительных устройств на выходе
контроллера необходим дешифратор команд. Контактор S2 требуется
для аппаратного ограничения поворота руля передних колес.
Программа приемника
Для чтения принимаемого сигнала (единицы или нуля) необходим
специальный алгоритм распознавания — как отдельных битов кода, так
и всего кода в целом. Алгоритм (рис. 10.10) разбит на три части:
260
Глава 10
• распознавание бита информации;
• распознавание кода байта информации;
• проверка выходного порта и выдача сигналов управления драйве-
рами.
Рис. 10.10. Алгоритм работы приемника
Радиоуправление моделями автомобилей
261
Первая часть алгоритма основана на выделении приемлемой формы
сигнала. Существует несколько методов чтения сигнала реального вре-
мени:
• с помощью внешнего прерывания;
• считывание входного бита из порта;
• через таймер с последующим формированием временных импуль-
сов.
Однако эти методы не соответствуют требованиям помехозащи-
щенности. Автор использовал метод сканирования бита сигнала на ли-
нии порта с частотой, в шесть раз превышающей частоту сигнала. Для
этого была составлена таблица приемлемых форм сигналов (табл. 10.2),
при сравнении с которыми выделяется правдивый бит информации.
Таблица 10.2. Таблица приемлемых форм сигналов
Единица Ноль
Старший полубайт Младший полубайт HEX код Нор- ма Старший полубайт Младший полубайт HEX код Нор- ма
1 1 1 1 1 1 3 F Да 0 0 0 I 0 0 0 0 0 Да
0 1 1 1 1 1 1 F Да 0 1 0 0 0 0 1 0 Да
0 0 1 1 1 1 0 F Да 1 0 0 I 0 0 0 2 0 Да
1 1 1 1 0 0 3 С Да 1 .1 0 I 0 0 0 I 3 0 Да
1 1 1 1 1 0 3 Е Да 0 0 0 0 1 11 I 0 3 Да
1 1 1 1 0 1 3 D Нет 0 0 0 0 0 1 | 0 1 Да
1 1 1 0 1 1 3 В Нет 0 0 0 0 1 0 2 0 Да
1 0 1 1 1 1 2 F Нет 0 0 0 1 0 1 0 5 Нет
1 0 1 1 0 1 2 D Нет 0 1 0 1 0 0 1 4 Нет
1 0 1 0 1 0 2 А Нет 1 0 1 0 0 о| 2 8 Нет
Сигнал, показанный на рис. 10.11, содержит большое количество
помех от других источников. Метод распознавания битов основан на
преобладании единицы или нуля в сигнале с точностью не менее 60%.
Если проанализировать принимаемый сигнал с точки зрения наклады-
ваемых помех, то форму сигнала, соответствующего биту единицы (см.
рис. 10.11 а) или нуля (см. рис. 10.11 5) можно распознать программно.
После распознавания бита информации программа переходит ко
второй части дешифровки принятой команды. Сигнал передается десять
раз и имеет длину один байт. С целью распознавания объекта в старшей
половине байта передается шестнадцатеричный код сигнала SA, а в
младшей половине — код команды (см. табл. 10.1). Если рассмотреть
принятый микроконтроллером сигнал в режиме реального времени
262
Глава 10
и проанализировать время, затраченное на дешифровку информации, то
получим временную диаграмму, показанную на рис. 10.12.
Ubx в.
Рис. 10.11. Сигнал содержит помехи
По этой диаграмме можно проанализировать алгоритм работы
программы. Первые четыре бита информации распознаются как код
сигнала, обрабатываются программой в течении 0,168 мс, после чего
следует дешифрация кода команды. Дешифрация происходит во время
паузы между посылками и длится около 6 мс.
Программа начинается с распознавания битов информации. Затем
накапливается информация о полубайте всего кода. При формировании
полубайта кода программа определяет, что было принято: код сигнала
или код команды. Далее полный байт информации сохраняется и срав-
нивается с последующими поступающими в приемник байтами. Если
байты совпали шесть раз из десяти, то команда, полученная приемни-
ком, верна и декодируется для исполнения. В противном случае код по-
следнего записывается в регистр, а предыдущие смещаются последова-
Радиоуправление моделями автомобилей
263
тельно в девяти регистрах с потерей ранее записанного кода. Это дела-
ется с целью уменьшения затраченного времени на дешифрацию кода
сигнала.
: Запрещение
i прерызания от
j таймера____
Запрещение
прерывания от
таймера.
28mkS
Приемник
______________
Пауза
2,68mS
10,0mS
Код А — Код команды
Рис. 10.12. Обработка микроконтроллером принятого сигнала
Значение первого кода байта (четыре бита) — неизменно. При орга-
низации соревнования для исключения влияния игроков друг на друга
в старший полубайт содержит уникальный код для каждой модели. Ка-
ждый объект характеризуется собственной кодировкой первого полу-
байта. Различные коды первого полубайта необходимы также в том слу-
чае, если модель содержит несколько приемников для различных ис-
полнительных устройств (например, независимого управления телека-
мерой или управления манипулятором).
Третья часть программы отвечает за анализ сигнала на выходе кон-
троллера. Если поворот передних колес достиг максимума, то его необ-
ходимо заблокировать. В противном случае сигнал управления поступа-
ет на исполнительный драйвер. В этой части участвуют как программ-
ные, так и аппаратные средства.
В случае сбоя микроконтроллера входы исполнительных драйверов
будут замкнуты контактами S2 на “землю” через диоды D2 и D3. Одна-
ко механические контакты не всегда эффективны, поэтому микрокон-
264
Глава 10
троллер формирует на выводах РВЗ и РВ4 импульсы длительностью
1 мкс. В случае замыкания на землю D2 и D3, через S2 микроконтрол-
лер во время опроса порта В блокирует прохождение сигнала управле-
ния драйвером поворота колес.
Импульс малой длительности проходит через емкость монтажа, ре-
зисторы R9, R10 и емкость диодов (а также — малое сопротивление
диода в прямом направлении) в случае замыкания S2. При размыкании
контактов емкость микросхемы D1 слишком мала, а заряд на выводах
РВЗ и РВ4 велик и при опросе микроконтроллером останется на еди-
ничном уровне (далее из-за отсутствия единицы на выводах порта заряд
спадет).
При значительной емкости монтажа резисторы R9 и R10 имеют ма-
лое сопротивление (если емкость монтажа незначительна, то параллель-
но резисторам необходимо добавить конденсаторы по 10 нФ). С целью
экономии аппаратных средств для управления моделью в передатчике
не предусмотрена кнопка “Стоп”.
Для уменьшения вздрагивания модели при управлении программа
оставляет активным сигнал управления движениехМ вперед и назад в те-
чении 100 мс (активизируется таймер), после чего порт вывода обнуля-
ется. Если в течение 100 мс поступил новый сигнал управления движе-
нием, то таймер сбрасывается в исходное состояние, если же время вы-
шло за пределы 100 мс, то таймер дает команду на обнуление всех вы-
водов порта.
Программа передатчика представлена в листинге 10.3, а шестнадца-
теричный код программирования микроконтроллера передатчика —
в листинге 10.4. Соответствующие файлы antenl08.asm и апгес108.
hex находятся на прилагаемом к книге компакт-диске в папке Прог-
раммы\10 - Радиоуправление.
Листинг 10-3. Программа управления приемником
.include "C:\Program Files\Atmel\AVR Studio\Appnotes\tnl5def.
inc”
def tmp = Г16 ;4 первых бита информации
def tip = r25 /переменная опроса входных данных
def ana = r22
def tabl = r23
def vrem = rll
def zap = rlO
def top = rl7
def vov = rl9
def biti = r20 /переменная равенства 5 раз
def by — rl8
def zup = r21
Радиоуправление моделями автомобилей
265
Листинг 10.3* Продолжение
def srav = r24
def tuto г2б /переменная количества равных
equ row2 РВ4
equ hkayl = РВ2
equ hkay2 РВЗ
equ rowl = РЬО
equ anten РЫ
коды для вывода в порт В
equ cvlevo = $06
equ cvpravo = $03
equ cverh = $0А
equ cvniz = $12
equ cvlevniz = $16
equ cvpravniz = $13
equ cvleverh = $0Е
equ cvpraverh = $0В
. cseg
. org 0
rjmp RESET
пор / rjmp EXT_INT0 - прерывание не используется
пор ; rjmp EXT_PIN - прерывание не используется
г jmp TIME ;прерывание от таймера
пор ; rjmp EE_RDY - прерывание от таймера
пор ; r jmp ANA_COMP - прерывание не используется
.org 20 RESET: пор
clr tmp
;настройка порта В
Idi tmp,$1D ;PB0,РВ2,РВЗ,РВ4-выходы
out DDRB, tmp
clr tmp
out PORTB, tmp /обнулить порт В
clr biti
;Настройка таймера
Idi tmp, 1«TOIEO
out TIMSK, tmp /Регистр маски прерываний
clr tmp
out TCCRO, tmp
Idi tmp, 1«TOVO
out TIER, tmp /Регистр флагов прерываний
clr tmp
out TCNTO, tmp /Счетный регистр
Idi tmp, $05
out TCCRO, tmp /Регистр управления СК/1024
266
Глава 10
Листинг 10,3. Продолжение
/Начало программы, сброс всех значений
snov: clr vrem /начало программы
clr zap
clr tmp
Idi tmp, $04 /4 бита информации
/отсчет программы по формированию байта
in vrem, PORTB /опрос порта
mov zup, vrem
clc
/декодировка полученного полубайта
/выделение кода начала или кода команды
/для формирования очередности сигнал команды 1-й полубайт
/имеет метку biti
cpi biti, $FF /сигнал команды или нет
brbs 1, opa /да, сигнал команды, идти во 2-й /полубайт
clr biti
rcall nop recod /п/п опознания 1-го полубайта
cpi biti, $CF /опознан сигнал или нет
brbs 1, snov /сигнал не опознан, в начало
cpi biti, $FF /опознан сигнал или нет
brbs 1, snov /сигнал опознан в начало
nop
opa: clr biti
mov R27, zup
mov top, R27
rcall nop zapis /запись 10 значениий по конвейеру
mov ana, zup
rcall nop bo_5 /совпадение более 5 раз или нет
cpi biti, $DF /совпало 6 значений
brbc 1, snov /не совпало 6 значений, в начало
nop
mov R27, R0
rcall rascod /дешифрация информации по таблице
nop rcall in_b /чтение выходных данных порта и аналаз
nop
/Сигнал влево и вправо формируется, пока приходит сигнал
/управления поворотом. Сигнал подается импульсом длительностью
/100 мс и снимается с активазации.
cpi biti, $FF /руль в крайнем положении
brbs 1, bbb /руль не в крайнем положении
rcall chast /частичное управление
Радиоуправление моделями автомобилей
267
Листинг Ю,3. Продолжение
nop rjmp nop snov ;возвращение в начало
bbb: nop rcall out—b , /вывод сигнала управления
nop rjmp snov /возвращение в начало
;подпрограммы обслуживания
/подпрограмма анализа сигнала бита информации
/выделение единицы
anal: mov Rl, ana /первое условие - проверка на 0F
andi ana, $0F
cpi ana, $0F
breq edn /равно
mov ana, Rl /второе условие - более ЗВ
Idi tabl, $3B /выделение единицы
cp ana, tabl
brge nop edn /более или равно
mov zap, Rl
/выделение нуля
Idi ana, $03 ;выделение нуля
cp zap, ana
brio nol /меньше
rjmp nosing
edn: sec /установка единицы бита переноса
rjmp go
nol: clc /установка нуля бита переноса
rjmp go
nosing: Idi nop go: nop ret tabl, $CF /код не совпадает
/п/п записи кода из 4 бит
BIT: rol nop ret zup /сдвиг влево через перенос
;п/п раскодировки поступившего полубайта
recod: cpi zup, $0А
breq sign /равно
Idi biti, $CF
rjmp s s
268
Глава 10
Листинг ЮЛ. Продолжение
sign: ss : : Idi nop ret bitl, $FF
; п/п анализа количества правильных поступивших кодов
bo_5: nop /данные поступили более 5 раз из 10
clz
sas: nop
Idi tuto, 0
mov* srav, RO
cpi srav, $0A
brbs 1, ecu
Idi biti, $00
clr srav
rjmp vps
ecu: Idi tip, $0A
nop
ece: nop
clz
mov ana, R9
cp srav, ana
rcall nop clz raven
mov ana, R8
cp srav, ana
rcall nop clz raven
mov ana, R7
cp srav, ana
rcall nop clz raven
mov ana, R6
cp srav, ana
rcall nop clz raven
mov ana, R5
cp srav, ana
rcall nop clz raven
mov ana, R4
Радиоуправление моделями автомобилей
269
Листинг 10,3. Продолжение
ср rcall пор clz mov srav, ana raven ana, R3
ср srav, ana
rcall raven
пор
clz
mov ana, R2
ср srav, ana
rcall raven
пор
clz
mov ana, Rl
ср srav, ana
rcall raven
пор
brbs 0, ravn
пор
clz
dec tip /организация цикла 10 раз
nop
brbc 1, ece /переход, пока Z не установлен
rjmp vcs
ravn: nop
Idi biti, $DF /при равенстве 5 раз присвоить
;переменную
vcs: nop
clc ;сброс знака переноса
rcall zamena ;п/п замены регистра R0
vps: nop
ret
;n/n анализа равенства двух регистров и накопления данных
raven: nop /п/п обработки равенства
brbc 1, kah /установлен в предыдущей операции
nop /да, установлен
inc tuto /увеличить счетчик на единицу
nop
clz
cpi tuto, 5 /сравнить 5 совпадений
brbs 1, kah /нет, пропуск команды
sec /да, установка флага переноса
kah: nop
clz
270
Глаза 10
Листинг 10.3ч Продолжение
ret
; п / п замены регис :тра RO : на остальные R1-R9
zamen а : nop /круговой цикл замены R0
push RO /сохранение R0
mov RO, Rl
mov Rl, R2
mov R2, R3
mov R3, R4
mov R4, R5
mov R5, R6
mov R6, R7
mov R7, R8
mov R8, R9
nop
POP RO /извлечение R0
nop /по окончанию замены
mov R9, RO
nop
ret
; п/п записи по конвейеру 10-ти поступивших значений
zapis : nop
mov R9, R8
mov R8, R7
mov R7, R6
mov R6, R5
mov R5, R4
mov R4, R3
mov R3, R2
mov R2, Rl
mov Rl, RO
mov RO, ’top
nop
ret
/п/п частичного управления: анализ совпадения команды
/и положения руля, управление вперед и назад, если задано
chast: пор
and R27, tmp
nop
ret
/п/п проверки кода 2-го п/байта и перекодировки регистра
rascod: пор
cpi R27,$01 ;сравнение регистра и константы
Радиоуправление моделями автомобилей
271
Листинг 10,3* Продолжение переход, если результат - ноль
brbs cpi 1, vv ;
R27,$03
brbs 1, vn cpi R27,$05 brbs 1, vl cpi R27,$06 brbs i, vlv cpi R27,$08 brbs 1, vln cpi R27,$09 brbs 1, vp cpi R27,$0A brbs 1, vpv cpi R27,$0C brbs 1, vpn rjmp isb ; перекодировка vp: idi R27, cvpravo ; код - ноль или другой присваивание регистру кода
vl : vv: vn : vln: vpn: vlv: vpv: i sb: isc: ; n/n rjmp idi rjmp idi rjmp Idi rjmp idi rjmp idi rjmp Idi rjmp idi nop rjmp idi nop ret чтения isc ; R27, cvlevo isc R27, cverh isc R27, cvniz isc R27, cvlevniz isc R27, cvpravniz isc R27, cvleverh isc R27, cvpraverh isc biti, $AF данных из порта переход на передачу кода В и анализ поворота руля
in_b : : nop out in cp nop ret PORTB, R27 tmp, PORTB ; tmp, R27 получение данных из порта В
272
Глава 10
Листинг Ю, Продолжение
;п/п записи данных в порт В
out_b: out PORTB, R2 7
ret
; п/п времени паузы передачи битов
d56mks: wdr
Idi ZL, low(140) ;t.k. 2 байта, то нижний байт
Idi ZH, high(140) ;и верхний байт десятичного
; числа имеют такую запись
d052: sbiw ZL, 1
brne d052
nop
ret
; п/п времени паузы передачи битов
d0336ms: wdr
Idi YL, low(840) ;т.к. 2 байта, то нижний байт
idi YH, high(840) ; и верхний байт десятичного
; числа имеют такую запись
d051: sbiw YL, 1
brne d051
nop
ret
; п/п времени паузы опроса клавиши
dlOms : Idi tip, $04
nop
d5001 : rcall d0336ms
dec tip
nop brne d5001
nop
ret
; n/n обработки прерывания от таймера
TIME : nop push ana
mov ana, R12
cpi ana, $04
brne ust
nop
inc ana
mov R12, ana
rjmp nop isk
ust: clr ana
Радиоуправление моделями автомобилей
273
Листинг Окончание
mov R12, ana
out PORTB, ana
nop
isk: nop
pop ana
clr tmp
out TCNTO, tmp
reti
Л'истй^г10^;Й^вДцатв₽ичныЙкодуправленийпр^ником ' '/
: 020000020000FC
:1000000002C0000017C10FEDODBF00270DE107BBB7
:10001000002708BB442702E009BF002703BF02E016
:1000200008BF002702BF05E003BFBB24AA240027A6
:1000300004EOB8B25B2D88944F3F41F0442739D09B
:1000400000004F3C91F34F3F81F300004427B52F50
:100050001B2F9BD00000652F33D000004F3D29F7A8
:100060000000B02DA3D00000C7D000004F3F21F00A
:1000700099D00000DACF00000000C4D00000D5CF36
:10008000162E6F706F3051F0612D7BE3671734F4DB
:100090000000A12C63E0A61618F004C0089404C068
:1000A000889402C07FEC000000000895551F0000F6
:1000B00008955A3011F04FEC01C04FEF0000089541
:1000C000000098940000A0E0802D8A3019F040E0F4
:1000D00088273CC09AE0000000009894692D86179C
:1000E00037D000009894682D861732DOO00098947D
:1000F000672D86172DD000009894662D861728D07E
:1001000000009894652D861723D000009894642DE4
:1001100086171ED000009894632D861719D0000012
:100120009894622D861714D000009894612D86173C
:100130000FD0000030F0000098949A95000061F60E
:1001400002C000004FED000088940ED0000008951A
:10015000000039F40000A39500009894A53009F040
:10016000089400009894089500000F92012C122C1E
:10017000232C342C452C562C672C782C892C0000F1
:100180000F900000902C000008950000982C872C00
:10019000762C652C542C432C322C212C102C012E27
:1001A000000008950000B023000008950000B13061
:1001B00099F0B33099F0B53069F0B630A9F0B830A5
:1001C00079F0B93029F0BA3089F0BC3059F011C05B
:1001D000B3E010C0B6E00EC0BAE00CC0B2E10AC095
:1001E000B6E108C0B3E106C0BEE004C0BBE0000059
:1001F00001C04FEA000008950000B8BB08B30B1718
:1002000000000895B8BB0895A895ECE8F0E0319798
:10021000F1F700000895A895C8E4D3E02197F1F71D
:100220000000089594E00000F6DF9A950000E1F7E1
274
Глава 10
Листинг ЮЛ. Окончание
:100230000000089500006F936C2D643029F40000D5
:100240006395С62Е05С000006627С62Е68ВВ000059
:0A02500000006F91002702BF18950F
:00000001FF
Конструкция приемника
Печатная плата (рис. 10.13) изготавливается из двухстороннего тек-
столита.
Линия установки экрана приемника
Рис. 10.13. Монтажная плата приемника (начало)
Радиоуправление моделями автомобилей
275
ANT1
Рис. 10.13. Продолжение
216
Глава 10
Рис. 10.13. Продолжение
Радиоуправление моделями автомобилей
277
Рис. 10.13. Окончание
Приемный тракт желательно экранировать от остальной схемы,
а питание схемы — разделить на два источника. Первый источник (ба-
тареи типа ААЗ16 или аккумуляторы) подключается к драйверам двига-
теля непосредственно на питание. Второй источник через S1 питает
микроконтроллер и приемник. Плата с аккумуляторами устанавливается
над платой управления на подставках (рис. 10.14).
278
Глава 10
Рис. 10.14. Установка платы с аккумуляторами
Катушка L1 приемника содержит шесть витков провода ПЭВ-2 0,8,
намотанных в один слой на каркасе диаметром 5 мм с ферритовым
стержнем 2000 НН. Катушку L2 наматывают на кольце типоразмером
К7х4х2 из феррита 2000 НН. Она содержит 15 витков провода ПЭВ-2
0,35. Дроссель L3 наматывают на двух кольцах типоразмером К7х4х2 из
феррита 2000 НН. Он содержит 85 витков провода ПЭВ-2 0,17.
Длина антенны составляет 50 мм. Для подключения двигателей на
плате предусмотрены площадки для припайки проводов. Выключатель
питания схемы управления установлен непосредственно на плате. Па-
раллельно аккумуляторам подключены выносные батареи питания для
увеличения их мощности. При использовании мощных двигателей (бо-
лее 200 мВт) на микросхемы D1 и D2 необходимо установить радиато-
ры (их площадь подбирается экспериментально).
Настройка приемника
Перед монтажом на модель платы приемника и двигателей необхо-
димо проверить работоспособность и управление плат передатчика
и приемника. Для этого следует соединить вход приемника и выход пе-
редатчика проводами и включить передатчик. Если исполнительные
устройства приемника исправны, то они сразу же заработают. По ко-
мандам от передатчика будут включаться двигатели.
Радиоуправление моделями автомобилей
279
В приемнике необходимо настроить наилучший прием контуром
L1, регулируя сердечник в каркасе. Затем следует настроить порог чув-
ствительности компаратора резистором R6 и проверить осциллографом
получаемую форму сигнала от антенны на выводе 6 микроконтроллера.
Далее установите плату приемника и двигатели на шасси, подключите
антенну и батарею питания для двигателей, соберите корпус радио-
управляемого автомобиля. Радиус управления составляет 20 м прямой
видимости. Для его увеличения необходимо изготовить усилитель ра-
диочастоты для передатчика.
Конструкция шасси
Конструкция шасси модели в сборе показана на рис. 10.15.
Рис. 10.15. Конструкция шасси
Плату управления автор собрал на макетной плате. Корпус и колеса
модели можно взять от любой простой игрушки, а шасси и днище луч-
ше изготовить самому по эскизу, показанному на рис. 10.16.
Габариты модели (170><84мм) выбираются, исходя из габаритов
платы приемника и управления 80х 60 мм, габаритов заднего двигателя
30x30 мм и габаритов рулевого редуктора с двигателем 60х50 мм. Шас-
си можно изготовить из тонкого текстолита, листа алюминия или пла-
стика толщиной 1,5 мм.
Рулевая колонка (рис. 10.17) выполнена из шестеренки и рейки из-
вестной игрушки (изображена справа). При изготовлении отрезается
пластиковая рейка, которая крепится к отрезку проволоки с помощью
обоймы из медной фольги. Зубчатую рейку можно изготовить из тол-
280
Глава 10
стого текстолита или мягкого металла. Для этого заготовку размечают
согласно шагу выбранной шестеренки, после чего надфилем вытачива-
ют зубья. Еще один способ — прокатить шестеренку по пластилину,
чтобы наметить шаг, а затем надфилем выточить канавки в латунной
проволоке по канавкам на пластилине. Можно также использовать про-
сто ролик, хорошо прижатый к шероховатой рейке (однако при этом ру-
левое управление модели может проскальзывать).
Рис. 10.16. Эскиз шасси и днища модели
Рычаги передних колес из-
готавливаются из текстолита
(рис. 10.18) или из жести (на-
пример, от кофейной банки).
Еще один вариант — воспользо-
ваться проволокой диаметром
3 мм.
Рычаги крепятся к шасси
винтами через втулки сверху
и снизу рычага. Колеса позаим-
ствованы от старой игрушки.
Кроме того, к шасси крепятся
задние колеса, ось которых про-
ходит через втулки (рис. 10.19).
Рис. 10.17. Рулевая колонка
Радиоуправление моделями автомобилей
281
Рис. 10.18. Передняя подвеска модели
Рис. 10.19. Задняя подвеска модели
Двигатель заднего привода крепится к шасси хомутом из монтаж-
ных стяжек. Диаметр ролика на двигателе — 8 мм, а на задней оси —
38 мм. Ролик и пассик заднего привода, а также двигатели приводов
можно взять из любого старого плеера или дешевой электромеханиче-
ской игрушки. Крепление подвески может быть абсолютно разным в за-
висимости от используемых материалов. Плата и рулевое управление
прикреплены к корпусу шасси винтами (рис. 10.20).
282
Глава 10
Рис. 10.20. Крепление платы и рулевого управления к корпусу шасси
Необходимо помнить и учитывать свободное вращение осей при
малом люфте на втулках, а также соблюдать соосность передней и зад-
ней подвески. При конструировании желательно разработать чертеж
каждой детали и изготовлять деталь по этому чертежу.
Эксплуатация
На плате управления и передатчика присутствуют выключатели пи-
тания. При активизации блока управления приемник сразу же начинает
сканировать и обрабатывать принимаемые сигналы. Как только на пере-
датчик подается питание и нажимается одна из управляющих кнопок,
передатчик кодирует и передает сигнал управления. При передаче дан-
ных мигает светодиод передатчика. Приемник платы управления при-
нимает сигнал. Микроконтроллер обрабатывает полученный сигнал
и включает двигатель заднего привода или двигатель управления рулем.
При этом поворот руля фиксируется в заданном направлении. Себе-
стоимость всей конструкции составляет около 17 евро.
Глава 11
Цифровое управление паяльником
Паяльник для специалиста электронной техники — инструмент но-
мер один. Выход из строя этого инструмента останавливает процесс ре-
монта или монтажа схем. Зарубежные производители предлагают раз-
нообразные паяльные станции в самом широком ассортименте цен. Ав-
тор предлагает простой современный вариант цифрового управления
паяльником.
Дизайн устройства показан на
рис. 11.1, а вариант в сборке — на
рис. 11.2.
Для паяльника обязательно
необходим держатель, поэтому
корпус выполняет две функции:
управления и подставки для нагре-
того элемента. Представленный
дизайн был создан иностранными
и отечественными конструктора-
ми, исходя из соображений эрго-
номики и практичности. Автор до-
бавил к дизайну подсвечивающий-
ся дисплей и аналоговый регулятор
мощности.
Одна из идей создания уст-
ройства заключается в формиро-
вании подсоса воздуха внутрь корпуса и фильтрации через воздушный
Рис. 11.1. Дизайн устройства цифрового
управления паяльником
фильтр (0,5 мкм), когда парь/ свинца и канифоли остаются внутри кор-
пуса на фильтре. По мере эксплуатации фильтр, который крепится на-
против отверстий в корпусе, перед вентилятором, заменяется. Для под-
соса используется вентилятор, применяемый для обдува процессоров
компьютеров. Поток отфильтрованного воздуха направляется на сило-
вой трансформатор, тем самым охлаждая силовой элемент схемы.
Управления устройством основано на микроконтроллере ATmega 8,
предоставляющий память программ на 8 Кбайт, 130 команд управления
и вычисления, 23 линии ввода-вывода, два восьмиразрядных таймера,
284
Глава 11
один 16-разрядный таймер, шесть 10-разрядных АЦП [8], а также ин-
терфейсы SP1, TWI и USART.
Рис. 11.2. Устройство цифрового управления паяльником в сборке
Структурная схема устройства повторяет классические аналоговые
схемы (рис. 11.3).
Рис. 11.3. Структурная схема устройства цифрового управления паяльником
Сетевое напряжение через трансформатор поступает на выпрями-
тельный мост VI, который из переменного напряжения 16 В, 50 Гц
Цифровое управление паяльником
285
формирует постоянное импульсное напряжение 16 В, 100 Гц. В им-
пульсной форме напряжения присутствует переход через ноль, для фик-
сации которого служит детектор нуля R1 и операционный усилитель
Kyi. Импульсное напряжение через D1 поступает на сглаживающий
конденсатор С, а сглаженное нестабилизированное напряжение — на
стабилизатор.
После стабилизатора получаем питающее напряжение управления
+5 В, которое использует на регуляторе мощности R2 операционный
усилитель Ку2. Вращая движок переменного резистора R2, задаем раз-
ный уровень напряжения на входе Ку2. В дальнейшем при составлении
программы необходимо учитывать нелинейную характеристику пере-
менного резистора R2, чтобы мощность регулировалась через равные
сегменты поворота движка регулятора мощности.
На вход Kyi и Ку2 также подается опорное напряжение. Изменяя ее
при конфигурировании АЦП в микроконтроллере, можно изменять мак-
симальный уровень входного аналогового сигнала. Микроконтроллер
оснащен аналоговым мультиплексором, который позволяет выбрать
аналоговый канал. В начале программы выбирается канал мощности,
а затем в режиме реального времени — канал детектора нуля.
После преобразования аналогового сигнала в цифровой микрокон-
троллер выводит на дисплей заданную мощность и управляет семисто-
ром через гальваническую опторазвязку для защиты от сетевых вспле-
сков.
Принципиальная схема устройства показана на рис. 11.4. В схеме
задействованы следующие детали:
• семистор ВТ 136;
• выпрямительный диодный мост KBU8K или любой другой на ток
2 А и обратное напряжение не менее 40 В;
• дисплей жидкокристаллический ИЖЦ5-4/8;
• диод КД202;
• стабилитрон КС 147А;
• оптосемистор шосЗОбЗ;
• трансформатор с одной первичной обмоткой 220 В и двумя вторич-
ными по 8 В суммарной мощностью 30 Вт;
• дроссель 47 нГн на ток не менее 10 мА;
• кварцевый резонатор 4 МГц;
• светодиоды LED1-LED5 — любые на ток 5 мА;
• выключатель сети — тумблер двухсекционный на 220 В, 1н = 0,5 А;
• микроконтроллер — ATmega8-16PU;
• паяльник— 12 В, 25 Вт.
286
Глава 11
Рис. 11.4. Принципиальная схема устройства цифрового управления паяльником
Цифровое управление паяльником
287
Информация про отдаваехмую в нагрузку мощность отображается на
ЖК-индикаторе DISP1. Прибор включается кнопкой S1. Питание схемы
управления организовано от понижающего трансформатора TR2, кото-
рый также используется для силового питания паяльника. Для работы
схемы детектора нуля и семистора Т1 необходимо исключить сглажива-
ние пульсаций 100 Гц. Эту функцию выполняет диод D1.
За гашение и сглаживание пульсации напряжения питания стабили-
затора отвечает цепочка R1, СЗ. Микросхема IC2 — это стабилизатор
напряжения для работы микроконтроллера и схемы регулятора мощно-
сти РЕ Для того чтобы предохранить вход АЦП от перенапряжения, на
входе микроконтроллера установлен стабилитрон D2. Для вывода мик-
роконтроллера из состояния зацикливания или сбоя предусмотрена
кнопка “RESET” и цепочка сброса R3, СИ. Для исключения влияния
работы ядра микроконтроллера на питание АЦП применен фильтр С6,
С9, L1.
Информация о подаваемой на паяльник мощности выводится непо-
средственно с микроконтроллера на ЖКИ. Поскольку контрастность
ЖКИ зависит от освещенности помещения, применена подсветка свето-
диодами LED1-LED4.
Детектор нуля RIO, Р2 выделяет нулевой ток из импульсного на-
пряжения 16 В, 100 Гц, и данные поступают на АЦП1 микроконтролле-
ра. АЦП считывает напряжение с регулятора мощности РЕ Конденсатор
СЮ предотвращает всплески на Р1 при ручной регулировке. Управле-
ние Т1 от микроконтроллера передается через опторазвязку OKI. Одно-
временно светодиод LED5 сигнализирует о включении семистора ТЕ
Включение семистора Т1 происходит по определенному алгоритму.
Рассмотрим осциллограммы, показанные на рис. 11.5. Для управле-
ния системой используется прямой метод регулирования. Автор разра-
ботал метод под названием “Базис 12” (без обратной связи), примени-
мый только для инерционной тепловой нагрузки. Нагрузка включается
в момент перехода переменного напряжения через ноль. Это необходи-
мо для исключения импульсных помех, создаваемых в сети при комму-
тации переменного тока семистором.
Поскольку переменное напряжение выпрямляется диодным выпря-
мителем, то мы получаем 100 Гц импульсной положительной полувол-
ны. Мощность нагрузки регулируется путем отбрасывания некоторого
количества положительных полуволн. Автор для расчетов выбрал базис
12 импульсов. При вычитании заданного количества целых положи-
тельных полуволн из каждых 12 импульсов сети получим регулировку
мощности.
288
Глава 11
100%
91%
83%
75%
66%
58%
50%
41%
33%
25%
20%
16%
12%
8%
ЛтУУГГЛТА12из12
VYYY\ fYWYY} 11из12
W. 1УУУ\ П}м1
nm rm rm,, 9из12
lfY\ СС\ Cf\ t8из12
ГУ\ f\ СГ\ С\ ,7из12
Г\ Г\ Г\ Г\ Г\ Г\ 9 биз12
А А_____Г\ Г\____Cl, 5из12
А____А А А > 4из12
> ч
А_______А_____А____ ^Зиз12
А_______А________А_»2,5из12
А_________А________2из12
h_____________о_ ^1,5из12
___________________> 1 из 12
Рис. 11.5. Осциллограммы
Путем выбора заданной мощности микроконтроллер отсчитывает
по определенному алгоритму 12 импульсов сети, исключая некоторые
полуволны в указанном порядке (см. рис. 11.5). Для повышения дис-
кретности регулирования мощности необходимо увеличивать базис (на-
пример, выбрать минимальный шаг 1 из 25 или 1 из 100). Однако увели-
чение шага регулировки потребует больших ресурсов микроконтролле-
ра. Этот метод имеет преимущество перед фазоимпульсным управлени-
ем, поскольку не создает импульсных помех в сети. Впрочем, один из
недостатков подобного регулирования — это появление звуковых коле-
баний в нагрузке. Хотя, если тепловой элемент находится в герметичной
изоляции, то звуковые колебания не слышны.
Программа
Блок-схема алгоритма показана на рис. 11.6.
Цифровое управление паяльником
289
Рис. 11.6. Блок-схема алгоритма цифрового управления паяльником
290
Глава 11
Программа начинается с установки портов ввода-вывода. Далее
следует опрос АЦП1. Исходя из результата значений, полученных
с АЦП1, устанавливается дискретная мощность. Для каждого варианта
дискретной мощности последовательно выполняется заданный алго-
ритм включения семистора. При этом используется рассмотренный ра-
нее прямой метод регулирования “Базис 12”. На дисплей выводятся
дискретные числа, соответствующие выбранной мощности. Для вывода
каждого шага алгоритма “Базис 12” микроконтроллер опрашивает
АЦП2. Как только считывается значение менее 10 единиц, включается
семистор. Если в алгоритме “Базис 12” задан ноль, то семистор отклю-
чается. После прохождения 12 шагов алгоритма семистор отключается
и программа возвращается в начало.
В начале программы АЦП1 проверяет уровень напряжения на регу-
ляторе мощности Р1. Опорное напряжение для АЦП1 получают с выво-
да питания микроконтроллера. В процессе аналого-цифрового преобра-
зования двоичное число Z вычисляется по уравнению
Z = 1 024 * Ubx / Uref.
После чтения данных АЦП1 происходит переход в подпрограмму
логических функций, где выбирается необходимое значение в поле до-
пуска данных АЦП1 (2-4 столбцы табл. 11.1).
Таблица 11.1. Кодировка индикации
Код с АЦП Двоичный код Hex- код Дисплей 1 Порт D 1 Код Дисплей 2 Порт В Код DISP2
D6 D5 D4 D3 D2ID1 IDO IDISP1 D7 В5 В4 вз В2 В1 во
0058 100000000000 800 a4,b4,c4,d4, e4.g4.f4 i 1 00 a3.b3.c3.d3, e3.g3.f3 1 1 1 1 1 1 7F
007В 100000000010 802 Ь4,с4 1 =e a3.b3,d3, еЗ.дЗ 1 1 1 1 1 5В
00А4 100000100000 820 Ь4,с4 •ч i 1 =6 a3.c3.d3, еЗ.дЗ,f3 1 1 1 1 1 1 7D
00CD 100001000010 842 а4,э4,Ь4, е4,д4 1 1 I1 153 аЗ.ЬЗ.сЗ, d3,e3,*3 1 1 1 1 1 1 3F
0100 10С01СС01000 888 a4,b4,d4, е4,д4 1 1 1 -1 1 5B a3.c3.d3, g3,f3 1 1 1 1 1 6D
0152 100100100100 924 а4.Ь4,с4. d4,g4 1 1 1 i < 4F аЗ.ЬЗ.сЗ, d3,g3 1 1 1 1 4F
01А4 101001010010 А52 Ь4,с4. g4.f4 1 1 !’ 66 ! эЗ.сЗ 1 1 06
0200 101010101010 ААА а4,с4,а4, g4.f4 1 1 1 1 1 1 6D аЗ.сЗ.аЗ, еЗ.дЗ, f3 1 1 1 1 1 1 3F
0252 101101011010 В5А a4,c4,d4, д4,(4 1 1 1 1 6D аЗ.эЗ.сЗ.аЗ, еЗ.дЗ, f3 1 1 1 1 1 1 1 7F
С2А4 110110110110 DB6 a4,c4,d4, e4.g4.f4 1 1 1 1 1 7D a3,c3,d3, еЗ.дЗ,f3 1 1 1 1 1 1 7D
0300 111011101110 а4,Ь4,с4 1 1 07 аЗ.сЗ.аЗ, g3,f3 1 1 1 1 1 6D
0352 111101111011 F7B a4,b4,c4,d4, e4,g4,f4 1 1 1 1 1 i 7F аЗ.ЬЗ.сЗ, □З.дЗ 1 1 1 1 4F
03А4 111110111111 -BF а4,Ь4,с4, d4,g4.f4 1 1 1 1 i 6 = эЗ.сЗ 1 1 06
0400 111111111111 Frr а4.Ь4,с4, d4.g4.f4 1 1 1 i [ 1 1 i 6F аЗ.оЗ.сЗ, a3,g3,f3 1 1 1 6F
Цифровое управление паяльником
291
В ходе реализации подпрограммы выяснилось что у микроконтрол-
лера mega8 ограничен запас арифметических функций (например, он не
работает с командой SBC Rd, Rr). При этом компилятор программы не
смог точно указать ошибку компиляции. После некоторых ухищрений
программа возобновила работоспособность.
Как только значение выбрано, происходит переход к адресу, в кото-
ром записано два байта информации “Базис 12” (5-6 столбцы табл. 11.1)
и дба байта кода дисплея (7—12 столбцы табл. 11.1). Для реализации ме-
тода регулирования “Базис 12” автор использовал функцию команд
микроконтроллера “сдвиг вправо через перенос”. При этом значение пе-
реноса анализируется логическими командами. Если перенос равен еди-
нице, то семистор включается, если же — нулю, то выключается.
Для отображения информации на дисплее также используется
функция переноса. В формировании второй цифры индикации учувст-
вуют порты В и D. Для того чтобы правильно передать информацию
в порт В, семь разрядов цифры маскируется логической функцией “И”,
а для порта D разряды цифры получаются в результате комбинирования
логических функций с первой цифрой порта D. Это необходимо для эко-
номии памяти кодов значащих цифр.
Скорость выполнения программы микроконтроллером очень высо-
ка, поэтому АЦП2 успевает вычислить уровень сетевого напряжения
и выключить семистор при нулевом напряжении сети и включить при
напряжении выше 10 единиц АЦП2.
Программа повторяется циклически. При этом за один цикл полно-
стью выполняется функция “Базис 12”. В каждом новом цикле проверя-
ется уровень регулятора мощности Р1.
Программа управления паяльником представлена в листинге 11.1,
а шестнадцатеричный код программирования микроконтроллера —
в листинге 11.2. Соответствующие файлы warm9.asm и warm9.hex на-
ходятся на прилагаемом к книге компакт-диске в папке Программы\11
- Паяльник.
Листинг 11/1» Программа цифрового управления паяльником
/Автор: Кравченко А.В.
/Дата: 17.07.2008
/Версия: 1.0.4
/Имя файла: Warm9.asm
/Микроконтроллер: ATmega8
/Тактовая частота: 4.ОмГц
/Питание: стабилизированное 5 В
. list
292
Глава 11
Листинг 11X Продолжение
.include "C:\Program Files\Atmel\AVR Studio\Appnotes\m8def.inc"
. ★ ★ ★ ★ -i def r Регистровые переменные
adr = rO
def disl = rl4 /младший адрес дисплея
def dis2 = rlO ;старший адрес дисплея
def cotl = rll /младший адрес кода 12
def cot2 = rl2 /старший адрес кода 12
def copy = rl3 /копия адреса кода
def ext = Г16 / Счетчик мощности
def ems = rl7 / Рабочий регистр
def poyl = rl8 /данные дисплея!
def poy2 = rl9 /данные дисплея2
def Digl = r20
def Dig2 = r21
def dadcl = r22
def dadc2 = r23
def add = r24
def Adc2 = r25
def tmp = r26 / Рабочий регистр
def tmp2 = r27 / Рабочий регистр
def tmp3 = r28 / Рабочий регистр
. cseg
/Начало области памяти, вектор прерывания
. org О
rjmp RESET
пор /rjmp INTO
пор /rjmp INTI
пор /rjmp TIMER2 COMP
пор /rjmp TIMER2 OVE
пор /rjmp TIMER1 CAPT
пор /rjmp TIMER1 COMPA
пор /rjmp TIMER1 COMPB
пор /rjmp time
пор /rjmp TIMERO OVF
пор /rjmp SPI, STC
пор /rjmp USART, RXC
пор /rjmp USART, UDRE
пор /rjmp USART, TXC
пор /rjmp ADC
пор /rjmp EE_RDY
пор /rjmp ANA_C ОМ P
пор /rjmp TWI
пор /rjmp SPM_RDY
Начало всей программы без вектора прерывания
Цифровое управление паяльником
293
Листинг 11.1* Продолжение
.org 22
/настройка портов В, С, D
RESET: пор
clr tmp
out DDRB, tmp
out PORTB, tmp /обнулить порт В
clr tmp
out DDRD, tmp
out PORTD, tmp /обнулить порт D
clr tmp
Idi tmp, $FF
out DDRB, tmp /PortB-выходы
out DDRD, tmp /PortD-выходы
clr tmp
Idi tmp, $20
out DDRC, tmp /РС5-выход
;Установка на дисплее 00
clr tmp
Idi tmp, $3F
out PORTB, tmp ;disp2-0
clr tmp
Idi tmp, $3F
out PORTD, tmp /displ-0
Idi tmp, low(RAMEND)
out SPL, tmp
Idi tmp, high(RAMEND)
out SPH, tmp
/Начало программы
/сброс всех значений
nStart nop
clr ext
clr ems
clr poyl
clr poy2
clr tmp2
clr tmp3
clr add
clr adc2
clr dadcl
clr dadc2
clr digl
clr dig2
clr adr
nop
Idi add, $40 /источник питания, ADCO,
idi adc2, $C5 /одиночное, запуск, 1/32
294
Глава 11
Листинг 11 Л» Продолжение
;опрос уровня регулятора мощности
rcall adcn
;определение мощности, сравнение
пор
rcall mosh
nop
/Подпрограмма управление семистором
cosem: : nop
clr cms
Idi cms, $0D /12 шагов
opr: nop
;опрос : уровня синусоиды, детектор нуля
Idi add, $41 ;источник питания, ADC1,
Idi adc2, $C5 ;одиночное :, запуск, 1/32
nop rcall adcn
nop
cln
clz
cpi tmp3, $00
breq kill /переход по равно
rjmp doss
kill: nop
cln
clz
cpi tmp3, $0F
brge doss
clr tmp
out PORTC , tmp ;обнулить порт С
/преобразование адреса кода 12
; disl младшего адреса мощности 12
; dis2 старшего адреса мощности 12
clc
rol disl
rol dis2
brcs f ok
пор
clr tmp
out PORTC , tmp /обнулить порт С
пор rjmp doss
f ok: пор
sbi PORTC , 5 /включение семистора
пор
doss : пор
clz
Цифровое управление паяльником
295
Листинг 11,1. Продолжение
dec cms
brbs 2, ker
rcall zader
rjmp opr
ker: nop
clr tmp /обнулить порт С
out PORTC, tmp
nop
rjmp nStart
/Настройка АЦП adcn: nop nop clr tmp awe: nop cpi tmp, $04 brsh ass
out ADMUX, add clr tmp2 clr tmp3 /коммутация входов АЦП
out ADCSR, adc2 /Сохранение данных АЦП in tmp2, ADCL in tmp3, ADCH mov r2, tmp2 mov r3, tmp3 mov r4, r2 mov r5, r3 mov r6, r4 mov r7, r5 inc tmp rjmp awe /запуск АЦП на преобразование
/среднее арифметическое действие ass: nop clr r8 clc add tmp2, r2 adc r9, r8 add tmp2, r4 adc r9, r8 add tmp2, r6 adc r9, r8 clc Isr r9 ror tmp2
296
Глава 11
Листинг 11.1. Продолжение
9
ГОГ tmp2
clr r9
clc
add tmp3, r3
adc r9, r8
add tmp3, r5
adc r9, r8
add tmp3, r7
adc r9, r8
clc
lsr r9
ror tmp3
lsr r9
ror tmp3
пор
ret
;Подпрограмма задержки
zader: nop
wdr
Idi YL, low (305)
Idi YL, high (305)
ddd: sbiw YL, 1
brne ddd
ret
;Подпрограмма определения мощности, сравнение
mosh: nop
osi : nop
mov dadcl, tmp2 /запись младшего байта АЦП мощности
mov dadc2, tmp3 /запись старшего байта АЦП мощности
Idi ext, $1В /количество дискретных мощностей
/Чтение данных по мощности
cik: пор
cln idi ZH, high(2 *prog0)
idi ZL, Low(2* progO)
Add ZL, ext /адрес указанной мощности
LPM mov digl, adr /младший байт
dec subi ext ZL, 1 /адрес указанной мощности
LPM mov dig2, adr /старший байт
dec ext
Цифровое управление паяльником
297
Листинг 11.1. Продолжение
brmi osi /достигнут ноль мощности
Проверка на более
'clc /сброс флага переноса
cln /сброс флага знака
вычитание значения АЦП из набранного значения
sub digl, dadcl /Вычитание младшего байта
проверка на ноль старшего байта
clz
cpi dig2, О
breq Loki
clr tmp
rol tmp
sub dig2, dadc2 /Вычитание старшего байта с заемом
sub dig2, tmp
loki: nop
brpl cik
уровень АЦП1 выше указанной мощности
mov copy, ext ;копируем адрес кода
пор
mov dis2, ext /запись младшего адреса мощности
inc ext
mov disl, ext /запись старшего адреса мощности
пор
чтение кода мощности
Idi ZH, high(2*progl)
Idi ZL, Low(2*progl)
Add ZL, disl /адрес указанного кода мощности
LPM
mov disl, adr /младший байт
Idi ZL, Low(2*progl)
Add ZL, disl /адрес указанного кода мощности
LPM
mov dis2, adr /старший байт
;вывод на дисплей данных
mov ems, ext /адрес дисплея
subi ems, $0E /преобразование адреса -14
Idi ZH, high (2 * prog2)
Idi ZL, Low(2 *p rog2)
Add ZL, ems /адрес указанного кода мощности
LPM
mov poyl , adr /младший байт
out PORTD, poyl /displ
Idi ZH, high (2 * ргодЗ)
Idi ZL, Low (2*p годЗ)
Add ZL, ems /адрес указанного кода мощности
LPM
298
Глава 11
Листинг 11.1. Окончание
mov роу2, adr
;младший байт •
out PORTB, роу2 ;disp2
ret
.org $300
;Код регулятора
progO:
.DB $00, $58, $00, $7B, $00, $A4, $00, $CD
.DB $01, $00, $01, $52, $01, $A4, $02, $00
.DB $02, $52, $02, $A4, $03, $00, $03, $52
.DB $03, $A4, $04, $00
;Код мощности
progl:
.DB $08, $00, $08, $02, $08, $20, $08, $42
.DB $08, $88, $09, $24, $0A, $52, $0A, $AA
.DB $0B, $5A, $0D, $B6, $0E, $EE, $0F, $7B
.DB $0F, $BF, $0F, $FF
;Код дисплея 1
prog2:
.DB $00, $06, $06, $5B, $5B, $4F, $66, $6D
.DB $6D, $7D, $07, $7F, $6F, $6F
;Код дисплея 2
ргодЗ:
.DB $7F, $5B, $7D, $3F, $6D, $4F, $06, $3F
.DB $7F, $7D, $6D, $4F, $06, $6F
.EXIT
Листинг 112. Шестнадцатеричный код управления паяльником
: 020000020000FC
:1000000015С000000000000000000000000000001В
:1000100000000000000000000000000000000000Е0
:06002000000000000000DA
:10002С000000AA27A7BBA8BBAA27A1BBA2BBAA27D3
:10003C00AFEFA7BBA1BBAA27A0E2A4BBAA27AFE343
:10004C00A8BBAA27AFE3A2BBAFE5ADBFA4E0AEBF90
:10005С0000000027112722273327ВВ27СС2788270Е
:10006С00992766277727442755270024000080Е42А
:10007C0095EC2FD0000065D00000000011271DE08A
:10008C00000081E495EC000024D00000A894989422
:10009C00C03009F013C00000A8949894CF3074F4C9
:1000AC00АА27А5ВВ8894ЕЕ1САА1С28F00000АА273Е
:1000BC00A5BB000003C00000AD9A0000000098949E
:1000CC001A9512F037D0DCCF0000AA27A5BB000090
Цифровое управление паяльником
299
Листинг 11 Окончание
:1000DC00BFCF00000000AA270000A43070F487B93D
:1000EC00BB27CC2796B9B4B1C5B12B2E3C2E422CD4
:1000FC00532C642C752CA395EFCF00008824889486
:10010C00B20D981CB40D981CB60D981С889496943Е
:10011C00B7959694B79599248894C30D981CC50DE2
:10012C00981CC70D981C88949694C7959694C7955F
:10013C00000008950000A895C1E3C1E02197F1F7F4
:10014С000895000000006B2F7C2F0BE10000A89499
:10015C00F6E0E0E0E00FC895402D0A95E150C89517
:10016C00502D0A957AF38894A894461B9894503095
:10017С0021F0AA27АА1F571B5A1B00003AF7D02EB2
:10018C000000A02E0395E02E0000F6E0ECE1EE0D51
:10019C00C895E02CECE1EE0DC895A02C102F1E504C
:1001AC00F6E0E8E3E10FC895202D22BBF6E0E6E48B
:0A01BC00E10FC895302D38BB0895FF
:100600000058007B00A400CD0100015201А40200АВ
:10061000025202А40300035203А4040008000802СВ
:1006200008200842088809240A520AAA0B5A0DB663
:100630000EEE0F7B0FBF0FFF0006065B5B4F666D74
:100640006D7D077F6F6F7F5B7D3F6D4F063F7F7DC9
: 040650006D4F066F7 5
:00000001FF
Монтажная плата
Монтажная плата (рис. 11.7) имеет двухсторонний монтаж (заменив
проводами часть проводников можно также изготовить одностороннюю
плату).
Перед монтажом плата разделяется на две части, а проводники от
одной части платы к другой соединяются шлейфом. Концы шлейфа
паяются в местах разрыва платы. Для микроконтроллера на монтажной
плате устанавливается панелька.
Корпус (рис. 11.8) состоит из деталей, изготовляемых отдельно. За
основу корпуса 1 берется прямоугольная пластиковая коробка габари-
тами 140x140x110 мм. Заготовка корпуса разделяется на две части: не-
нужный сегмент 12 и основа 1. Далее проем закрывается пластиковой
пластиной, в которой вырезается окно для дисплея и высверливаются
отверстия для регулятора и выключателя. В окно передней панели
вклеивается прозрачный лист. Пластиковая пластина красится в цвет
корпуса и приклеивается эпоксидной смолой к краям корпуса.
300
Глава 11
Рис. 11.7. Монтажная плата устройства управления паяльником (начало)
Цифровое управление паяльником
301
Рис. 11.7. Продолжение
302
Глава 11
Рис. 11.7. Окончание
Цифровое управление паяльником
303
Рис. 11.8. Корпус устройства управления паяльником
Регулятор мощности 2 и выключатель питания крепятся к передней
панели. Скобы 3 и 9 удерживают плату управления. Корпус устанавли-
вается на ножках 4, в него вставляется понижающий трансформатор
с платой питания 5 и по возможности — вентилятор 16 (AIRFLO model
D4510S12L) для охлаждения трансформатора и фильтрации воздуха.
Трансформатор с платой питания крепится к корпусу уголками 6. Для
уменьшения вибрации под трансформатор прокладывается резиновая
подложка 7.
Схема содержит предохранитель сети 8. Включается устройство
с помощью тумблера 10. Данные с ЖКИ видны через окошко 11. На
ЖКИ наклеивается по диагонали тонкая черная полоска (черная изолен-
та) для отделения ноликов от процентов.
Для соединения паяльника с платой с боку корпуса устанавливается
разъем /5, через который подается регулируемое питание. Питание вен-
тилятора организовано от стабилизатора 12 В, который подключается
непосредственно к выпрямителю от силового трансформатора. Все про-
водя необходимо закрепить стяжками. Сверху корпуса устанавливается
держатель паяльника так, чтобы жало находилось напротив подсоса
воздуха.
Автор собрал схему навесным монтажом (рис. 11.9), максимально
следуя дизайну, показанному на рис. 11.8.
304
Глава 11
Рис. 11.9. Завершенное устройство управления паяльником
Настройка и эксплуатация прибора
Настройка начинается с записи в микроконтроллер кода, показанно-
го в листинге 11.2. Программатором устанавливается SEL 4 МГц. На-
стройка выполняется без микроконтроллера при включенном питании.
Р1 регулируется во всем диапазоне и проверяется плавность изменения
напряжения (если характеристика регулятора — нелинейная, то коррек-
тируется значение в столбцах 3-4 табл. 11.1). Р2 устанавливает ампли-
туду 2 В. Проверяется импульсное напряжение положительной поляр-
ности. Запрограммированный микроконтроллер устанавливается в па-
нельку платы управления. Устройство включается и, начиная с мини-
мального значения регулятора мощности Р1, проверяется осциллограм-
ма на выводах паяльника (необходимо использовать цифровой осцилло-
граф с памятью). Если осциллограммы не соответствуют заданным, не-
обходимо отрегулировать Р2.
До включения питания устройства регулятор мощности необходимо
вывести на минимум, а затем после включения плавно повышать до не-
обходимой мощности (при модернизации программы эту функцию
можно запрограммировать как выполняемую автоматически). По мере
работы с устройством следует периодически следить за фильтром, за-
меняя его в случае видимого засорения.
Себестоимость устройства с корпусом и паяльником составляет
около 27 евро.
Цифровое управление паяльником
305
Список литературы
1. Зальцман Л.Г., Черная С.М. Спутник гальваника. 3-е издание. Киев.
Техника, 1989г.
2. Гонтар.О, Один из способов травления плат. Киев. Радиоаматор
№4, 1999г.
3. Ян Шкержик. Рецептурный справочник для электротехника. 3-е из-
дание. М:, “Энергоатомиздат”, 1989г.
4. Кузенко Е.В. Способ травления плат. Киев. Радиоаматор №8, 2003г.
5. Бартко В.А. Получение рисунка печатных плат. Киев. Радиоаматор
№12, 2003г.
6. Alan May. How to make a small circuit board using iron - on resist.
“Servo” №7, 2007.
7. Терещук P.M., Терещук K.M., Седов С.А. Полупроводниковые при-
емно-усилительные устройства. Справочник радиолюбителя. Киев:
“Наукова Думка”, 1981г.
8. Евстифеев А.В. Микроконтроллеры AVR семейства Tiny и Mega
фирмы ATMEL. 2-е издание. М: Додэка-ХХ1, 2005.
9. Кравченко А.В. Шар со световым эффектом для елки// Радиоама-
тор.-2006.-№1-С.26.
10. Шпак Ю.А. Программирование на языке С для AVR и PIC микро-
контроллеров. Киев: МК-Пресс, 2006.
11. Шило В.Л. Популярные цифровые микросхемы Справочник. МРБ
выпуск 1111. Челябинск: Металлургия, 1988г.
12. Кравченко А.В. Опыт работы с программатором STK200// Радио-
аматор.-2006.-№4-С.36.
13. Data sheet. Solid State Switch SS466A. Micro Switch a Honeywell Divi-
sion. 1990.
14. Кашкаров А.П. Фото- и термодатчики в электронных схемах. М:
Алекс. 2004.
15. Data sheet. ATtiny26 -8 bit microcontroller. Atmel. 2002.
16. Вольфганг Трамперт. Измерение, управление и регулирование с
помощью AVR микроконтроллеров. Киев: МК-Пресс, 2006.
17. Data sheet. LM75 Digital Temperature Sensor and Thermal Watchdog
with Two- Wire interface. National Semiconductor.
18. Фрунзе А.В. Фрунзе А.А. Микроконтроллеры? Это же просто. -
М:ООО “ИД Скимен”, 2003г. ТомЗ.
306
Список литературы
19. Data sheet. LB 1642 Bidirectional Motor Driver with Braking Function.
Sanyo Electric Co.
20. Гнатек Ю.Р. Справочник по цифроаналоговым и аналого-цифровым
преобразователям. М.: «Радио и связь», 1982.
21. Микросхемы АЦП и ЦАП.- М.: Издательский дом “Додэка - XXI”,
2005.
22. Федорков Б.Г. Телец В.А. Микросхемы ЦАП и АЦП: функциониро-
вание, параметры, применение. М.: “Энергоатомиздат”, 1990.
23. Data sheet. Low-Power, Rail-to-Rail Output. 12-bit Serial Input
DIGITAL-TO-ANALOG CONVERTER. DAC7512. Burr-Brown prod-
ucts. 2002.
24. Операционные усилители и компараторы. Справочник том 12. М.:
Додэка-ХХ1, 2002.
25. Брадис В.М. Четырехзначные математические таблицы. Для сред-
ней школы. М.: “Просвещение”, 1988.
26. Джон Ловин. Создаем Робота-Ан дроида своими руками. М: ДМК-
пресс, 2007.
27. Ньютон Брага. Создание роботов в домашних условиях. М: НТ
Пресс, 2007.
28. Thomas Scarborough, “Programmable Robot”, Practical Electronics №2,
2007.
29. Data sheet. L298 Dual full -bridge driver. STMicroelectronics. 1998.
30. Data sheet. LB 1642 Bidirectional Motor Driver with Braking Function.
Sanyo.
31. Мельник M.M. Управление моделями по радио. Мастерская радио-
любителя Выпуск 24 М.- Издательство ЗМ, 2003.
32. Баранов В.Н. Применение микроконтроллеров AVR: схемы, алго-
ритмы, программы.- М.: Додека XXI, 2004.
33. Титаренко А.А. Поиграем моторчиками// Радиоаматор.-2002.-№1-
С.24.
Содержимое прилагаемого к книге компакт-диска
Прилагаемый к книге компакт-диск содержит четыре папки:
Видео — видеопрезентация автором разработанных им устройств,
о которых идет речь в книге;
Программы — исходные файлы, соответствующие рассмотренным
в книге программам, с разбивкой по папкам согласно номерам и на-
званиям глав;
Справочник — технические описания микросхем и электронных
компонентов, задействованных в схемах рассмотренных устройств.
Издательство “МК-Пресс” представляет
Анна и Манфред Кёниг
Полное руководство по
PIC-микроконтроллерам (+CD)
ISBN 966-8806-21-2
256 стр., мягкая обложка
На основании своего многолетнего опыта разработки проектов с использованием
микроконтроллеров PIC, авторы рассматривают данную тему с точки зрения конструк-
торов-практиков. Затрагиваются все вопросы, связанные с периферийными устройст-
вами, для взаимодействия с которыми; собственно, и предназначены микроконтрол-
леры. В частности, описаны аналоговые периферийные модули, инструментальная
среда MPLAB, а также отладчик и демонстрационные платы.
Книга рассчитана на тех, кто уже имеет опыт работы с микроконтроллерами PIC
и делает основное ударение на новых разработках последних лет. К ним, в первую
очередь, относится серия микроконтроллеров PIC18, которая, благодаря своему 16-
разрядному ядру, не только расширяет возможности программирования, но и откры-
вает множество новых технических возможностей. Кроме того, в книге рассказано
о многих нововведениях в микроконтроллерах PIC с 14- и 12-разрядным ядром.
Дитер Кохц
Измерение, управление и
регулирование с помощью
PIC-микроконтроллеров (+CD)
ISBN 966-8806-15-8
304 стр., мягкая обложка
Книга посвящена применению PIC-микроконтроллрров семейства PIC16C5X,
а также PIC16C71 и PIC16F84 в схемах измерения, управления и регулирования. Рас-
смотрены следующие примеры: программируемый счетчик-частотомер, измерение
температуры, реле времени, гигрометр с реле, температурное реле для регулирова-
ния нагрева, управление шаговым электродвигателем, регулирование уровня запол-
нения.
Книги издательства “МК-Пресс” можно заказать:
по адресу: 02002, г.Киев, а/я 294, по телефону/факсу: (044) 517-73-77,
по e-mail: info@mk-press.com
или приобрести в магазине “Микроника" по адресу: г.Киев, ул. М.Расковой, 13
Посетите наш Internet-магазин: http://www.mk-press.com
Издательство “МК-Пресс” представляет
Вольфганг Трамперт
AVR-RISC микроконтроллеры (+CD)
ISBN 966-8806-07-7
464 стр., твердая обложка
Эта книга очень наглядно и подробно описывает архитектуру, внутреннее устрой-
ство, аппаратные ресурсы и систему команд микроконтроллеров семейства AVR.
Цель книги — научить читателя проектировать собственные схемы с применением
микроконтроллеров прогрессивной RISC-архитектуры, а также разрабатывать и тес-
тировать программы для этих проектов. Кроме всего прочего, подробно рассматрива-
ется использование программатора для загрузки разработанных программ в память
Flash-EPROM нового поколения микроконтроллеров. На прилагаемом к книге компакт-
диске, кроме полнофункционального Ассемблера и эмулятора для отладки программ,
находятся все исходные коды рассмотренных примеров, которые могут использовать-
ся читателем в собственных проектах.
Вольфганг Трамперт
Измерение, управление и регулирование с
помощью
A VR микроконтроллеров (+CD)
ISBN 966-8806-14-Х
208 стр., мягкая обложка
Книга описывает особенности применения AVR-микроконтроллеров в технике из-
мерения, управления и регулирования. При этом основной акцент поставлен на изме-
рении напряжения, выводе и отображении результатов измерений, а также на регули-
ровании аналоговых напряжений. Изложенный материал дает возможность поэтапно
проследить весь процесс разработки устройства, понять, почему программное и ап-
паратное обеспечение скомпоновано именно таким, а не каким-либо другим образом,
и суметь в случае необходимости выполнить самостоятельную разработку.
Книги издательства “МК-Пресс” можно заказать:
по адресу: 02002, г.Киев, а/я 294; по телефону/факсу. (044) 517-73-77,
по e-mail: info@mk-press.com
или приобрести в магазине "Микроника" по адресу: г.Киев, ул. М.Расковой, 13
Посетите наш Internet-магазин: http://www.mk-press.com
Издательство “МК-Пресс” представляет
Швец В. А.
Одноплатные микроконтроллеры.
Проектирование и применение
ISBN 966-96415-4-3
304 стр., мягкая обложка
На базе микропроцессоров КР1810 и К1816 представлены основные методы про-
ектирования одноплатных микроконтроллеров для информационных и управляющих
систем. Подробно рассматриваются вопросы проектирования узлов одноплатных
микроконтроллеров, программного обеспечения, применение микропроцессоров
в цифровой обработке информации и измерительных устройствах: частотомерах; фа-
зометрах; вольтметрах; фильтрах. В примерах представлена реализация вычисли-
тельных алгоритмов на Ассемблере.
Шпак Ю.А.
Программирование на языке С для
AVR и PICмикроконтроллеров (+CD)
ISBN 966-8806-16-6
400 стр., твердая обложка
В книге рассмотрено программирование на языке С микроконтроллеров AVR с ис-
пользованием компилятора WinAVR, а также микроконтроллеров PIC с использовани-
ем компилятора CCS-PICC. Кратко рассмотрена архитектура и аппаратное обеспече-
ние микроконтроллеров AVR и PIC. Дано описание средств программной разработки
в среде WinAVR и CCS-PICC, включая эмуляцию программ с помощью AVR Studio
и MPLAB. Кратко рассмотрен стандартный синтаксис и директивы препроцессора язы-
ка С, а также особенности программирования на этом языке для микроконтроллеров.
Книга содержит множество программных примеров на С, а также справочник с описа-
нием системы ассемблерных команд микроконтроллеров AVR и PIC.
Книги издательств^ “МК-Пресс" можно заказать:
по адресу: 02002, г.Киев, а/я 294; по телефону/факсу: (044) 517-73-77,
по e-mail: info@mk-press.com
или приобрести в магазине “Микроника” по адресу: г.Киев, ул. М.Расковой, 13
Посетите наш Internet-магазин: http://www.mk-press.com
Издательство “МК-Пресс” представляет
Кравченко А.В.
10 практических устройств на
AVR-микроконтроллерах. Книга 1 (+CD)
ISBN 978-966-8806-41-4
224 стр., мягкая обложка
Данная книга открывает серию сборников с практическими примерами применения
микроконтроллеров. В ней рассмотрены десять завершенных устройств на базе мик-
рокон-троллеров AVR, которые можно легко собрать в домашних условиях и приме-
нять в быту или профессиональной деятельности: генератор световых эффектов;
счетчик событий; музыкальный звонок; индикатор уровня звука; повышающий преоб-
разователь, схема управления шаговым двигателем; цифровой термометр и др.
Благодаря подробному анализу аппаратной и программной части устройств, книга
будет интересна и полезна как начинающим, так и опытным радиолюбителям, же-
лающим изучить методы эффективного применения микроконтроллеров.
Заец Н.И.
Радиолюбительские конструкции на PIC- ’
микроконтроллерах (+CD). Книга 4
ISBN 966-8806-42-1
336 стр., мягкая обложка
Данная книга — практическое пособие по освоению микроконтроллеров PIC ком-
пании Microchip и другой современной элементной базы, наподобие индикаторов, вы-
полненных по COG-технологии. Рассмотрены алгоритмы работы, схемы и программы
для различных полезных устройств: многофункциональных часов, отображающих те-
кущее время и температуру воздуха; автомобильных часов, фиксирующих время в пу-
ти и сообщающих о поломке реле-регулятора; автомата включения освещения; циф-
рового устройства для блока питания с установкой защиты по току и напряжению;
специализированных термометров и др. Для начинающих дана глава о наладке уст-
ройств на микроконтроллерах. Книга предназначена для широкого круга радиолюби-
телей, а также будет полезна студентам, изучающим микроконтроллеры.
Книги издательства “МК-Пресс” можно заказать:
по адресу: 02002, г.Киев, а/я 294, по телефону/факсу: (044) 517-73-77,
по e-mail: info@mk-press.com
или приобрести в магазине “Микроника” по адресу: г.Киев, ул. М.Расковой, 13
Посетите наш Internet-магазин: http://www.mk-press.com
Издательство “МК-Пресс” представляет
ТимУилмсхерст
Разработка встроенных систем с помощью
микроконтроллеров PIC. Принципы и
практические примеры (+CD)
ISBN 978-5-903383-61-0
544 стр., мягкая обложка
Благодаря полезным примерам и иллюстрациям, эта книга дает глубокие познания
в сфере проектирования систем с помощью микроконтроллеров PIC, а также — про-
граммирования этих устройств на ассемблере и С. Подробно рассмотрены микрокон-
троллеры 16F84A, 16F873A и 18F242. Даны примеры реальных проектов, включая мо-
дель робота, выполненного в виде транспортного средства с автономным управлени-
ем. Дополнительно рассматриваются такие вопросы повышенной сложности, как при-
менение устройств в сетевой среде и построение операционных систем реального
времени.
Барри Брэй
Применение микроконтроллеров PIC18.
Архитектура, программирование и
построение интерфейсов с применением С и
ассемблера (+CD)
ISBN 978-5-7931-0516-3
576 стр., мягкая обложка
Сегодня микроконтроллеры используются повсеместно в автомобилях, бытовой
технике, промышленном и медицинском оборудовании и т п Этот учебник дает все-
стороннее представление об архитектуре, программировании и построении интер-
фейсов этого современного чуда. На примере семейства микроконтроллеров PIC18
производства Microchip в книге объясняется архитектура, программирование и по-
строение интерфейсов. Семейство PIC18 выбрано не случайно, поскольку оно отно-
сится к самым современным восьмиразрядным микроконтроллерам. Изложенный в
книге материал также применим как к более ранним версиям микроконтроллеров
Microchip, так и к аналогичным устройствам других производителей. Он рассчитан на
опытных практиков и радиолюбителей, интересующихся микроконтроллерами.
Книги издательства “МК-Пресс” можно заказать:
по адресу: 02002, г.Киев, а/я 294; по телефону/факсу: (044) 517-73-77,
по e-mail: info@mk-press.com
или приобрести в магазине "Микроника” по адресу: г.Киев, ул. М.Расковой, 13
Посетите наш Internet-магазин: http://www.mk-press.com
Издательство “МК-Пресс” представляет
првграммировдни!
Р1С24ЧШ
ч «$^4
Лусио ди Джасио
Программирование на С
микроконтроллеров PIC24 (+CD)
ISBN 978-5-7931-0529-3
336 стр., мягкая обложка
Лусио ди Джасио, эксперт из компании Microchip, предлагает свой уникальный
взгляд на революционную технологию PIC24, проводя читателя от основ 16-разрядной
архитектуры до сложных программных разработок средствами языка С, включая реа-
лизацию многозадачности с помощью прерываний PIC24, управление ЖК-дисплеями,
формирование звуковых и видеосигналов, доступ к запоминающим устройствам
большой емкости и др. Вне всякого сомнения, эта книга будет полезна как опытным
PIC-разработчикам, так и новичкам в мире встроенных систем.
Заец Н.И.
Радиолюбительские конструкции на PIC-
микроконтроллерах (+CD). Книга 1
ISBN 978-5-7931-0518-7
304 стр., мягкая обложка
Это издание переработано с целью исправления замеченных ошибок и уменьше-
ния объема за счет переноса статей, не пользующихся спросом, на прилагаемый ком-
пакт-диск. В книге представлено 20 описаний радиолюбительских устройств различно-
го назначения, выполненные на микроконтроллере PIC16F84. Начинающие радиолю-
бители, не знакомые с программированием микроконтроллеров, смогут без труда вос-
произвести любое устройство. Радиолюбители; имеющие опыт программирования,
могут изменить программы и печатные платы под свои цели. Для этого в книге даны
алгоритмы и исходные тексты программ с подробными комментариями. Автор также
делится опытом работы с ассемблером MPLAB и различными средствами программи-
рования. Рассматриваются типичные ошибки при наладке устройств на микрокон-
троллерах. Книга предназначена для широкого круга радиолюбителей, а также может
быть полезна студентам, изучающим программирование микроконтроллеров.
Книги издательства "МК-Пресс” можно заказать:
по адресу: 02002, г.Киев, а/я 294; по телефону/факсу: (044) 517-73-77,
по e-mail: info@mk-press.com
или приобрести в магазине “Микроника” по адресу: г.Киев, ул. М.Расковой, 13
Посетите наш Internet-магазин: http://www.mk-press.com
Издательство “МК-Пресс” представляет
Авраменко Ю.Ф.
Мощные биполярные транзисторы
для импульсных источников питания,
TV-приемников и мониторов
ISBN 966-8806-17-4
544 стр., мягкая обложка
В справочнике Представлены электрические параметры на мощные биполярные
транзисторы, имеющие высокую скорость переключения. Данные приборы применя-
ются в импульсных источниках питания различного назначения, в промышленном
оборудовании, в бытовой и профессиональной видео- и аудиотехнике. Указаны тех-
нические данные на изделия следующих ведущих производителей полупроводнико-
вых приборов: FAIRCHILD, HITACHt, MOTOROLA (ON SEMICONDUCTOR), PANA-
SONIC, PHILIPS, SANKEN, SAMSUNG, SANYO, SHINDENGEN, ST-MICROELECTRO-
NICS, TOSHIBA и ZETEX. Таблица аналогов полупроводниковых приборов составлена
на основании руководства Master Replacement Guide.
Тяпичев А.Г.
Персональный компьютер
в радиолюбительской практике
ISBN 966-8806-18-2
400 стр., мягкая обложка
Книга предназначена для любознательного читателя и любителей мастерить
своими руками. В ней описаны различные варианты специального использования
персонального компьютера для выполнения «нетрадиционных» для него работ, таких
как управление различными удаленными аппаратами, кодирование и декодирование
различных сигналов, создание принципиальных электрических схем и проверка рабо-
тоспособности этих схем, создание звуковых эффектов и многое другое. Большое
внимание уделено процессу программирования микроконтроллеров. Даны описания
специальных компьютерных программ, и подробное описание аппаратов, которые мо-
гут подключаться к компьютеру и применяться в совместной с ним работе.
Книги издательства “МК-Пресс” можно заказать:
по адресу: 02002, г.Киев, а/я 294; по телефону/факсу: (044) 517-73-77,
по e-mail: info@mk-press.com
или приобрести в магазине “Микроника" по адресу: г.Киев, ул. М.Расковой, 13
Посетите наш Internet-магазин: http://www.mk-press.com
Издательство “МК-Пресс’Чтредставляет
Авраменко Ю.Ф.
Транзисторы в SMD-исполнении. Том 1
ISBN 966-8806-25-5
544 стр., мягкая обложка
Этот справочник продолжает новую серию "Элементная база", в которой пред-
ставлены технические данные на современные полупроводниковые приборы и инте-
гральные схемы ведущих производителей, и содержит в себе справочные данные на
биполярные транзисторы в SMD-исполнении. Справочник предполагается как издание
из 3-5 томов, в которое будут включены биполярные и полевые транзисторы, предна-
значенные для поверхностного монтажа. При составлении этого тома использовалась
техническая документация следующих производителей: HITACHI, NEC, PANASONIC,
RENESAS, ROHM, SANYO и TOSHIBA.
Авраменко Ю.Ф.
Транзисторы в SMD-исполнении. Том 2
ISBN 978-966-8806-12-4
640 стр., мягкая обложка
Справочник продолжает новую серию «Элементная база», в которой представле-
ны технические данные на современные полу-проводниковые приборы и интеграль-
ные схемы ведущих производителей. Второй том содержит в себе справочные данные
на биполярные транзисторы в SMD-исполнении, транзисторные сборки разных струк-
тур, транзисторные ключи для работы в цифровых схемах и их наборы.
При составлении этого тома использовалась техническая документация следую-
щих производителей: NEC, PANASONIC, SANYO и TOSHIBA.
Книги издательства "МК-Пресс" можно заказать:
по адресу: 02002, г.Киев, а/я 294; по телефону/факсу: (044) 517-73-77,
по e-mail: info@mk-press.com
или приобрести в магазине "Микроника" по адресу: г.Киев, ул. М.Расковой, 13
Посетите наш Internet-магазин: http://www.mk-press.com
Издательство “МК-Пресс” представляет
Безверхний И.Б.
TV-приемники на шасси VESTEL ПАКхх
(+CD)
ISBN 978-966-8806-11-7
304 стр., мягкая обложка
В данной книге рассмотрены телевизионные приемники на основе шасси 11АК20,
11 АКЗО 11АК36 и РТ92 турецкой компании VESTEL. Сегодня на базе этих шасси де-
сятки различных производителей поставляют на рынок под различными торговыми
марками сотни моделей телевизоров. Подробно описаны: элементная база, схемы,
сервисные режимы, регулировка и ряд вопросов практического характера. Отдельная
глава посвящена современным видеопроцессорам производства PHILIPS. В приложе-
нии представлены справочные данные на современные видеопроцессоры различных
производителей. _____________
Авраменко Ю.Ф.
CD-проигрыватели. Схемотехника (+CD)
ISBN 966-8806-13-1
352 стр., мягкая обложка
В книге систематизировано изложены основные принципы и базирующиеся на них
схемотехнические решения, используемые в фермате Compact Disc Digital Audio
System. В ней кратко рассмотрены методы преобразования аналогового сигнала
в процессе его подготовки к записи на оптический носитель, а также представлены
сведения обо всех функциональных устройствах проигрывателя. На примерах кон-
кретных микросхем даны схемотехнические решения всех систем CD-проигрывателя.
На основании технической документации компаний SONY и PHILIPS представлены
описания большинства микросхем, которые выпускались этим производителями за
последние 10 лет. В целом, в книге представлены справочные данные на самые рас-
пространенные интегральные схемы.
Книги издательства “МК-Пресс” можно заказать:
по адресу: 02002, г.Киев, а/я 294; по телефону/факсу. (044) 517-73-77,
по e-mail: info@mk-press.com
или приобрести в магазине "Микроника” по адресу: г.Киев, ул. М.Расковой, 13
Посетите наш Internet-магазин: http://www.mk-press.com
Издательство “МК-Пресс” представляет
Авраменко Ю.Ф.
Мобильные телефоны LG.
Ремонт и обслуживание. Том I (+CD)
ISBN 978-966-8806-29-2
576 стр., мягкая обложка
Книга составлена на основании сервисной документации LG Electronics. В ней
подробно рассмотрены схемотехнические решения современных мобильных телефо-
нов на базе БИС обработки аналоговых и цифровых сигналов производства ANALOG
DEVICES. Представлены сведения о работе всех функциональных устройств телефо-
нов стандарта GSM. На прилагаемом ,к книге компакт-диске, приводятся электриче-
ские принципиальные схемы на рассмотренные модели и справочные данные на эле-
ментную базу ведущих производителей интегральных схем для систем беспроводной
связи. Книга рассчитана на широкий круг специалистов, занимающихся сервисным об-
служиванием мобильных телефонов.
Авраменко Ю.Ф.
Мобильные телефоны LG.
Ремонт и обслуживание. Том II (+CD)
ISBN 978-966-8806-32-2
576 стр., мягкая обложка
Книга составлена на основании сервисной документации LG Electronics. В ней
подробно рассмотрены схемотехнические решения современных мобильных телефо-
нов на базе БИС обработки аналоговых и цифровых сигналов производства ANALOG
DEVICES. Представлены сведения о работе всех функциональных устройств телефо-
нов стандарта GSM. На прилагаемом к книге компакт-диске, приводятся электрические
принципиальные схемы на рассмотренные модели, а также сервисная документация
на мобильные телефоны производства SAMSUNG и NOKIA. Книга рассчитана на ши-
рокий круг специалистов, занимающихся сервисным обслуживанием мобильных те-
лефонов.
Книги издательства “МК-Пресс” можно заказать
по адресу: 02002, г.Киев, а/я 294; по телефону/факсу: (044) 517-73-77,
по e-mail: info@mk-press.com
или приобрести в магазине “Микроника” по адресу: г.Киев, ул. М.Расковой, 13
Посетите наш Internet-магазин: http://www.mk-press.com
ИздaтельcтвoJЧ\/IK-Пpecc,, представляет
Крид Хадлстон
Проектирование интеллектуальных
датчиков с помощью Microchip dsPIC (+CD)
ISBN 978-966-8806-38-4
320 стр., мягкая обложка
На страницах этой книги раскрыты способы применения популярных цифровых
контроллеров сигналов Microchip dsPIC, в которых вычислительный потенциал мощ-
ных цифровых процессоров сигналов удачно объединен с возможностями микрокон-
троллеров PIC. Рассматриваются вопросы не только программирования, но и проек-
тирования электронного оборудования. Таким образом, читатель получает полное
представление о процессе создания интерфейса для трех конкретных типов датчиков:
температуры, давления/нагрузки и расхода. Книга раскрывает реальные проблемы,
возникающие в повседневной работе разработчиков, и показывает решения, позво-
ляющие реализовать все сильные стороны интеллектуальных датчиков.
Авраменко Ю.Ф.
Качественный звук — сегодня это просто
ISBN 966-8806-27-1
286 стр., мягкая обложка
В книге максимально подробно приведены все рекомендации разработчиков - ин-
женеров NSC, как правильно построить усилительный тракт на основе мощных ОУ
Современный подход, основанный на рекомендациях инженеров AD и TI, к топологии
печатной платы, к выбору .«правильных» пассивных компонентов для звуковоспроиз-
водящего тракта поможет реализовать основной принцип: как можно меньше ухуд-
шить качество записи. Большое количество примеров построения качественных УМЗЧ
будет наглядным пособием для реализации собственной конструкции в короткие сроки
с небольшими материальными затратами и главное, с предсказуемым результатом.
Книги издательства “МК-Пресс" можно заказать.
по адресу: 02002, г.Киев, а/я 294; по телефону/факсу: (044) 517-73-77,
по e-mail: info@mk-press.com
или приобрести в магазине "Микроника" по адресу: г.Киев, ул. М.Расковой, 13
Посетите наш Internet-магазин: http://www.mk-press.com
Издательство “МК-Пресс” представляет
Санджая Маниктала
Импульсные источники питания от А до Z
(+CD)
ISBN 978-5-903383-59-7
544 стр., мягкая обложка
Эта книга основывается на десятилетнем авторском опыте проектирования источ-
ников питания. Здесь читатель найдет наглядное и доступное введение в курс "Источ-
ники питания"; изложение основ без пугающего математического анализа; полную и, в
то же время, уникальную по своей простоте методику проектирования импульсных
преобразователей и их магнитных компонентов; подробный расчет всех видов потерь
в импульсных источниках питания; описание основных схемотехнических решений
импульсных источников; исчерпывающее исследование аспектов контроля и измере-
ния паразитных электромагнитных излучений, связанных с работой импульсных пре-
образователей.
Г.-Й. Берндт, Б. Каинка
Измерение, управление и регулирование с
помощью макросов VBA в Word и Excel
(+CD)
ISBN 978-5-7931-0504-0
256 стр., мягкая обложка
Эта книга представляет новый подход, согласно которому весь диапазон задач
измерения, управления и регулирования реализуется средствами популярного про-
граммного пакета Microsoft Office. Хотя это звучит необычно, с помощью приложений
Word и Excel можно получить прямой доступ к аппаратному обеспечению, что делает
их универсальными и простыми в использовании инструментами.
В книге показано, как с помощью макросов VBA реализовать управление цифро-
выми мультиметрами, релейными картами и ПК-интерфейсами, организовать взаимо-
действие с микроконтроллерными системами и многое другое на основе стандартного
последовательного интерфейса RS232.
Книги издательства “МК-Пресс" можно заказать:
по адресу: 02002, г.Киев, а/я 294; по телефону/факсу: (044) 517-73-77,
по e-mail: info@mk-press.com
или приобрести в магазине "Микроника" по адресу: г.Киев, ул. М.Расковой, 13
Посетите наш Internet-магазин: http://www.mk-press.com
ББК 32.973-04
УДК 004.312
К78
Кравченко О. В.
К78 10 практичних пристроТв на AVR-MiKpoKOHTponepax. Книга 2 - К.: “МК-
Пресс”, СПб.: “КОРОНА-ВЕК”, 2009. - 320с., in.
ISBN 978-5-7931-0532-3 (“КОРОНА-ВЕК’)
ISBN 978-966-8806-58-2 (“МК-Пресс")
Ви тримаете в руках другу книгу !з cepiT зб!рник1в з практичними прикладами застосу-
вання м!кроконтролер1в AVR. У ни докладно розглянуто десять завершених пристроТв на
баз! м!кроконтролер!в AVR, яю можна легко з!брати в домашнх умовах та застосовувати
у побут! чи профес!йн1й д!яльност1: генератор свппових ефект!в задопомогою АЦП1 схема
керування кроковим двигуном; автомат осв!тлення шафи-купе; схема керування вентиля-
тором; простий термометр; св!тловий ефект “Призма”; м!кроконтролерний генератор; ро-
бот, що рухаеться на св!тло та вм!е оминати перешкоди; система радюкерування моделлю
автомобтя; схема цифрового керування паяльником. Кожному пристрою присвячено
окремий розд1л, де докладно описано sei етапи створення мжроконтролерноТ модел! та
програм, починаючи 3i структури та блок-схеми, i заюнчуючи самою програмою та готовим
робочим кодом.
ББК 32.973-04
Комп'ютерна верстка: С. В. Д1док
Головний редактор: Ю. О. Шпак
ISBN 978-5-7931-0532-3 (“КОРОНА-ВЕК”)
ISBN 978-966-8806-58-2 ("МК-Пресс")
© Кравченко О.В., текст, тюстрацИ, 2008
© “МК-Пресс”, оформления, 2009
Вы держите в руках вторую книгу из серии сборников с
Кравченко А.В.
10
практических
устройств на
практическими примерами применения микроконтроллеров AVR.
Ее основная идея: "Просто, быстро, доступно", - поскольку
собрать и настроить рассмотренные устройства сможет любой
радиолюбитель: как профессионал, так и новичок.
Дополнительным подспорьем станет вводная глава, в которой
описан инструментарий разработчика, а также методы травления
печатных плат, пайки и намотки катушек индуктивности.
Подробно рассмотрены десять завершенных устройств на
базе микроконтроллеров AVR, которые можно легко собрать в
AVR
-микроконтроллерах
Книга 2
домашних условиях и применять в быту или профессиональной
деятельности:
- генератор световых эффектов с помощью АЦП;
- схема управления шаговым двигателем;
- автомат освещения шкафа-купе;
- схема управления вентилятором;
- простой термометр;
- световой эффект "Призма";
- микроконтроллерный генератор;
- робот, который двигается на свет и умеет обходить преграды;
- система радиоуправления моделью автомобиля;
- схема цифрового управления паяльником.
Каждому устройству посвящена отдельная глава, где
подробно описаны все этапы создания микроконтроллерной
модели и программ, начиная со структуры и блок-схемы, и
заканчивая самой программой и готовым рабочим кодом.
Компакт-диск содержит:
- видеопрезентацию рассмотренных в книге устройств;
- файлы с ассемблерным и рабочим кодом программ;
- технические описания микросхем и электронных компонентов,
задействованных в схемах рассмотренных устройств.