Текст
                    

А. В. Кравченко 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 домашних условиях и применять в быту или профессиональной деятельности: - генератор световых эффектов с помощью АЦП; - схема управления шаговым двигателем; - автомат освещения шкафа-купе; - схема управления вентилятором; - простой термометр; - световой эффект "Призма"; - микроконтроллерный генератор; - робот, который двигается на свет и умеет обходить преграды; - система радиоуправления моделью автомобиля; - схема цифрового управления паяльником. Каждому устройству посвящена отдельная глава, где подробно описаны все этапы создания микроконтроллерной модели и программ, начиная со структуры и блок-схемы, и заканчивая самой программой и готовым рабочим кодом. Компакт-диск содержит: - видеопрезентацию рассмотренных в книге устройств; - файлы с ассемблерным и рабочим кодом программ; - технические описания микросхем и электронных компонентов, задействованных в схемах рассмотренных устройств.