Очень маленькое, но очень полезное устройство.
Здравствуй, дорогой Кот! Позволь поздравить тебя с Днём рождения и от всей души пожелать рабочего вдохновения, творческих успехов ну и чтоб, как говорится, «всё Коту было Масленица»! А также преподнести тебе очень маленький скромный подарочек. Ой, а где же он? В кармане затерялся? Мяу-миу-рауж… О! Вот же он, «МИРАЖ»!!!
Надеюсь, он тебе понравится и станет твоим верным спутником.
Каждый день мы куда-то торопимся, не успеваем, опаздываем. К сегодняшнему дню человечество изобрело массу всевозможных хронометров. От примитивных песочных и солнечных часов, до сложнейших, основанных на процессах квантовых переходов элементарных частиц, сверхточных атомных. Человечество даже научилось «из времени делать деньги», но, к сожалению, так и не освоило обратный процесс. Одним словом время – это то, чего нам всегда критически не хватает. И особенно для того, чтобы просто, никуда не спеша, свернуться калачиком и от всей души «придавить хорька». Конечно же, данный прибор не «растянет» вам время, но поможет его подсчитать, а значит экономно и с умом его использовать, с пользой для себя и окружающих.
Итак, что же за хронометр сегодня у нас? Идея систем отображения с механической развёрткой, отнюдь, не нова. Данные часы были разработаны чуть больше полугода назад, когда один из приднестровских котов опубликовал здесь свою статью с подобным прибором. Целью моей разработки было создать некое совершенное во всех отношениях устройство подсчёта времени, основанное на подобных принципах, но лишённое всех недостатков модели приднестровского товарища. Во избежание «переноса недостатков» как принципиальная схема, так и программный код разрабатывались с нуля. Да и не было желания «ковыряться» в чужом коде, хотелось разработать что-то своё, новое и совершенно отличное. Так, после двух месяцев творческих поисков и двух неудачных образцов появился «МИРАЖ». Уникальность данного устройства счёта времени заключается в его неимоверной простоте, дешевизне и столь модных сегодня минималистических тенденциях. Как говорят: «Всё гениальное должно быть просто!». Но, не смотря на это, данный хронометр умеет считать секунды, минуты, часы, числа, месяцы, годы, вычисляет дни недели по дате и добавляет по дню в високосные годы. Кроме того этот «малыш» довольно точен и экономичен. За полгода его работы уход времени составил не более двух минут, а элемент питания до сих пор не требует замены.
Из чего же он состоит? «Сердцем» устройства является излюбленный посетителями данного сайта 8-ми битный Flash микроконтроллер фирмы Atmel – ATmega8. Секрет сверхнизкого энергопотребления устройства заключается в том, что большую часть времени МК, как и положено всем порядочным котам, «дрыхнет»! Причём столь глубоко, что его ток потребления составляет при этом немногим более 8мкА! «А кто же тогда время считает?» – спросите вы. А всё дело в том, что в его составе имеется хитрый таймер-счётчик TC2, имеющий в своём составе независимый генератор тактовых импульсов с предделителем и возможностью подключения внешнего кварцевого резонатора. Вот он-то как раз и считает генерируемые генератором импульсы с частотой 32 786Гц, которая задаётся внешним опорным «часовым кварцем». Один раз в секунду происходит переполнение таймера и по данному событию он формирует сигнал прерывания, способный «разбудить» вычислительное ядро микроконтроллера. При пробуждении запускается внутренний калиброванный RC-осциллятор с делителем на 8, от которого и происходит тактирование ядра частотой порядка 1,2 МГц. При этом ток потребления скачком возрастает до полутора миллиампер. Ядро производит математические действия и снова уходит в спящий режим. Переполнение таймера – не единственное условие для пробуждения МК. Это также происходит и по нажатию кнопки «Wake». При этом МК в течение 5 секунд не уходит в спящий режим, ожидая действий пользователя, и выполняя алгоритмы пользовательского интерфейса. Если по истечению 5 секунд никаких действий не последует, МК снова уйдёт в режим сна.
Как пользоваться данным устройством? Элементарно! Держите устройство в руке горизонтально батареей к себе. Кратковременно нажмите кнопку «Wake» и начните совершать взмахи влево-вправо с частотой от 3 до 5 взмахов в секунду. Перед вами появится «виртуальное табло» с отображением текущего времени.
Ещё одно кратковременное нажатие, и на «табло» появится текущая дата.
Затем год.
И, наконец, эмблемка «МИРАЖ».
Для установки времени необходимо в режиме отображения времени нажать и удерживать не менее 2 секунд кнопку «Wake» до засвечивания нижнего светодиода. При взмахах появится:
Каждое кратковременное нажатие будет увеличивать отображаемый параметр на единицу. Ещё одно нажатие с удерживанием переключит в режим установки минут:
Отображаемый параметр изменяется аналогично. Следующее нажатие с удержанием сохранит установленное время и переключит в режим отображения времени. Если вы не желаете сохранять установленное время – просто не производите с устройством никаких действий в течение промежутка времени длительностью не менее пяти секунд. Устройство без сохранения перейдёт в спящий режим.
Аналогично устанавливается и дата. Необходимо перейти в режим отображения даты, далее нажатием с удержанием войти в режим установки даты. Далее производятся действия, аналогичные описанным выше как и при установке времени:
Ну чтож, без внимания остался лишь самый загадочный элемент устройства – это «датчик взмахов». Для удобства назовём его «акселерометр», хотя это и не совсем корректно.
Данный компонент изготавливается вручную. Для этого вам понадобятся напильник, паяльник, шило, кусачки-бокорезы ну и, конечно же, пара не очень кривых рук. За основу корпуса берётся планка штыревая типа PLD-80. От неё очень аккуратно откусываются 2 отрезка по 8 штырей. Все штыри вынимаются. В результате получается 16 штырей и 2 пластиковые детали. Далее 4 штыря изгибаются под прямым углом с отступом около 2мм от края и вставляются в одну из пластиковых деталей со стороны без углубления (см. фото).
Из тонкой медной жести вырезается маленький прямоугольник, прокалывается шилом в двух точках так, чтобы при помощи полученных отверстий надеть его на одну из пар штырей. Надевается до упора, вдавливается, облуживается и припаивается к штырям.
Сам чувствительный элемент «акселерометра» представляет собой грузик-контакт удерживаемый пружинкой. Под действием сил, вызванных ускоренем, он должен свободно двигаться между двух штырей-контактов и быть подпружиненным к контакту, расположенному по направлению взмаха, то есть влево, если представить плату в руке (на фотографии нижний справа).
В качестве грузика используется кусочек медной или латунной проволоки сечением около 1,5мм с золотым или серебряным покрытием – идеально подходят кусочки контактов некоторых старых «совковых» разъёмов. В качестве пружинки применена струнка, выпаянная из оптической головки лазерного CD/DVD привода. На таких струнках подвешиваются подвижные пластиковые рамки с обмотками и микролинзами. Пружинка должна иметь 1-1,5 витка (подбирается экспериментально), навивается на оправке диаметром около 1мм (вывод какого-нибудь выводного элемента с соответствующим сечением). Одним кончиком пружинка припаивается к грузику, на другом формируется «петелька», которая припаивается к медному прямоугольнику. Далее на штыри надевается вторая пластиковая деталь углублением вниз, образуя таким образом «крышечку коробочки» со всей «механикой» внутри. Далее «крышечку» необходимо снять, аккуратно подгибая пружинку тонким пинцетом, необходимо добиться, чтобы груз не касался верхней или нижней стенки коробочки, а был слегка прижат к левому контакту («крышечка» для проверки периодически устанавливается на место). Таким образом в собранной конструкции при взмахах грузик будет ударяться только о боковые штыри-контакты.
После регулировки и сборки верхние выступы штырей обкусываются кусачками и стачиваются напильником. Далее акселерометр ставится всеми четырьмя контактами на напильник и производится стачивание контактов до толщины не более 0,3-0,5мм, после чего он готов к пайке на плату. После пайки акселерометр необходимо самым тщательным образом промыть средством для удаления флюса и грязи. При определённой сноровке пластиковые детали корпуса также можно очень сильно утонить, получив акселерометр почти крохотных размеров.
Жёсткость пружинки и сила прижима грузика окончательно доводятся после сборки и прошивки устройства по корректности развёртки изображения. При очень мягкой пружинке левая или правая сторона растра «сминается», при слишком жёсткой акселерометр перестаёт реагировать на взмахи, растр появляется не при каждом взмахе или не появляется вообще.
Номинал резисторов R1-R8 выбирается в соответствии цвета устанавливаемых светодиодов (точнее от заявленного напряжения их переходов). Для синих, белых, и ultra bright зелёных – 8-16 Ом, для красных, жёлтых и зелёных обычных – порядка 47-56Ом. Также хочу обратить ваше особое внимание на то, что микроконтроллер ATmega8A-AU по ряду его архитектурных особенностей в данной конструкции не применим. Устройство будет корректно работать только с МК ATmega8-16AU и ATmega8L-8AU.
Также напомню об обязательном соблюдении правил антистатической безопасности при работе с микроэлектроникой. После сборки и монтажа не забывайте тщательно мыть платы специализированными средствами для удаления флюса и грязи. Перед включением проверьте плату на наличие непропаев, обрывов и закороток. Готовую плату можно покрыть лаком, например «Цапонлак» или «Plastik». Следите, чтобы остатки паяльного материала и лак не попали в акселерометр.
Всем желаю удачи, хорошего настроения и побольше свободного времени!
«Кино» можно посмотреть по адресу: https://youtu.be/4j5wauVHah0
Фузы, прошивка и плата(SL5.0) находятся в архиве.
Файлы:
PCB, прошивка, фузы
Все вопросы в Форум.
Как вам эта статья? | Заработало ли это устройство у вас? |
Эти статьи вам тоже могут пригодиться:
В этой статье мы рассмотрим пожарную сигнализацию на микроконтроллере ATmega8 (семейство AVR) и датчике огня. Датчик огня может быть любого типа, мы в нашей схеме будем использовать инфракрасный датчик огня – он не отличается точностью, но зато он самый дешевый … Читать далее →
В этой статье мы подключим фоторезистор к микроконтроллеру ATmega8 (семейство AVR) и с его помощью будем измерять интенсивность света. Для этой цели мы будем использовать 10 битный аналого-цифровой преобразователь микроконтроллера (АЦП). Общие сведения о фоторезисторах Фоторезистор представляет собой преобразователь, чье … Читать далее →
В этой статье мы рассмотрим низкодиапазонный амперметр на микроконтроллере ATmega8 (семейство AVR). Для реализации этой идеи мы задействуем 10 битный аналого-цифровой преобразователь (АЦП) данного микроконтроллера. Для упрощения схемы используем резистивный метод, являющийся самым простым способом определения нужных нам параметров. В … Читать далее →
В этой статье мы рассмотрим процесс взаимодействия двух микроконтроллеров ATmega8 (семейство AVR) через последовательный порт. Взаимодействие будет осуществляться с помощью универсальных асинхронных приемопередатчиков (UART — Universal Asynchronous Receiver Transmitter), имеющихся в микроконтроллерах. Подобное взаимодействие часто бывает востребовано в различных системах. … Читать далее →
В этой статье мы рассмотрим сигнализацию на микроконтроллере ATmega8 (семейство AVR), основанную на анализе колебаний. Данную сигнализацию можно использовать для защиты от воров. Сигнализация основана на использовании датчика наклона (tilt sensor), внешний вид которого показан на следующем рисунке. Одним из … Читать далее →
В этой статье будет описано подключение джойстика к микроконтроллеру ATmega8 (семейство AVR), приведена схема подключения и код программы на языке C с комментариями к ней. Общие принципы работы джойстика Джойстик представляет собой модуль ввода, достаточно часто использующийся для коммуникаций. В … Читать далее →
В этой статье мы рассмотрим подключение и взаимодействие гибкого датчика (FLEX sensor) к микроконтроллеру ATmega8 (семейство AVR). Для решения этой задачи мы задействуем 10 битный аналого-цифровой преобразователь (АЦП), имеющийся в данном микроконтроллере. Что такое гибкий датчик? Гибкий датчик (FLEX sensor) … Читать далее →
В этой статье будет рассмотрена схема подключения углового кодера к микроконтроллеру AVR ATmega8 и приведена программа на языке C (с пояснениями), обеспечивающая взаимодействие этих устройств. Микроконтроллер ATmega8 (семейство AVR) был специально спроектирован для применения во встраиваемых приложениях (embedded applications). Принципы … Читать далее →
В этой статье мы рассмотрим схему для измерения расстояний, построенную с использованием ультразвукового датчика HC-SR04 и микроконтроллера ATmega32 (семейство AVR). Датчик HC-SR04 использует технологию под названием “ECHO” (эхо), то есть испускает ультразвуковой сигнал и потом анализирует отраженный от препятствий сигнал. … Читать далее →
В этой статье мы рассмотрим схему на микроконтроллере ATmega32A (семейство AVR), реализующую цифровой вольтметр с пределами измерений от 0 до 25В. Для этого мы задействуем 10-битный аналого-цифровой преобразователь (АЦП), имеющийся в данном микроконтроллере. Поскольку АЦП микроконтроллера ATmega32A не может на … Читать далее →
В этой статье я хочу представить проект открытки с механической разверткой (похоже на часы Боба Блика, но здесь нужно махать рукой). Такая открытка отлично подойдет в роли подарка кому-нибудь либо её можно носить с собой как брелок. Подобные схемы отлично подходят для тех, кто только начал изучать микроконтроллеры и осваивать smd-монтаж.
Автор: SaneX
9 0 [0]Данная система радиоуправления имеет 4 цифровых (дискретных) и 4 аналоговых каналов, что позволяет ее использовать для управления моделью любого типа: воздушной, наземной или водной. Кроме того, она имеет обратную связь, что особенно удобно при управлении воздушной или водной моделью (на дисплей пульта выводится информация о состоянии заряда батарей, уровне сигнала и температуре двигателя).
Автор: zeconir
4 0 [0]Данная система радиоуправления имеет 4 цифровых (дискретных) и 4 аналоговых каналов, что позволяет ее использовать для управления моделью любого типа: воздушной, наземной или водной. Кроме того, она имеет обратную связь, что особенно удобно при управлении воздушной или водной моделью (на дисплей пульта выводится информация о состоянии заряда батарей, уровне сигнала и температуре двигателя).
Автор: zeconir
7 0 [0]Паяльная станция с поддержкой нескольких профилей, LCD дисплеем, звуковой индикацией завершения нагрева и режимом ожидания (сна). Устройство выполнено на микроконтроллере ATmega8 и LCD LPH8137-3C.
Автор: zeconir
11 5 [1]Данный прибор предназначен для генерирования сигналов треугольной, прямоугольной, синусоидальной и произвольной формы с частотой до 1,6 кГц. Устройство может найти применение при настройке звуковой аппаратуры.
Автор: zeconir
5 0 [0]Рассмотренное устройство представляет собой несложную, компактную и относительно универсальную основу для контроллеров с самым разнообразным назначением. При незначительной доработке представленное устройство может стать уникальной и высокопроизводительной не избыточной микроконтроллерной схемой. При этом несомненное достоинство состоит в доступности компонентной базы и соответственно невысокой стоимости конечного изделия.
Автор: BRVIT
9 4.5 [2]Даташит – это техническое описание на какой-либо радиокомпонент. Где его найти? Ну, конечно же, в интернете! Так так почти вся радиоэлектронная продукция выпускается “за бугром”, то и описание на них, соответственно, “забугорское”, а точнее, на английском языке. Те, кто хорошо дружит с разговорным английским, не факт, что сможет прочитать технические термины в даташитах.
Давайте попробуем пролить свет истины на основные характеристики МК ATmegа8. Для этого качаем даташит. В нашей статье мы будем рассматривать только основные сведения нашего подопечного.
Вот что мы видим на первой странице даташита:
Запоминаем правило: в фирменном описании нет ни одного лишнего слова! (иногда информации не хватает, но это уже другой случай)
Features. Переводится как “функции”. В среде электронщиков просто “фичи”.
– High Performance, Low Power AVR® 8-Bit Microcontroller
Высокопроизводительный, потребляющий мало энергии, 8-битный микроконтроллер.
Понимаем как рекламу, единственно полезное то, что данный микроконтроллер — 8 битный.
– Advanced RISC Architecture
Расширенная RISC архитектура.
RISC и CISC — технологии построения процессорных систем. Но нам это не важно, по крайней мере, пока.
– 130 Powerful Instructions – Most Single Clock Cycle Execution
130 команд, большинство из них выполняются за один цикл.
А вот это уже интереснее! Во-первых, такое большое количество команд (например, у микроконтроллеров PIC всего 35 команд) уже подразумевает ориентацию этого МК под языки высокого уровня. Во-вторых, узнаем, что одна команда выполняется за один такт генератора. Т.е., при тактовой частоте 1 МГц одна команда будет выполняться 1 микросекунду (1 мкс, одну миллионную часть секунды — 10^-6). А при 10 МГц — в десять раз быстрее, т.е., 0,1 мкс.
– 32 x 8 General Purpose Working Registers
32 восьмибитных регистра общего пользования.
Про регистры поговорим позднее, просто запомним, что большое количество регистров — весьма неплохо, ведь регистр — это ячейка памяти в самом МК. А чем больше такой памяти – тем «шустрее» работает МК!
Объединив эти данные с количеством поддерживаемых микроконтроллером команд, в очередной раз убеждаемся в изначальной ориентации данного МК под высокоуровневые языки вроде Си, Паскаля и других.
– Fully Static Operation
Полностью статическая структура.
Вспоминаем о типах памяти: динамической и статической. Этот пункт заверяет нас, что МК сохранит свою работоспособность при тактовой частоте ниже сотен герц и даже при отсутствии тактовой частоты на его специальных выводах.
(Также нелишним будет напомнить о том, что потребляемая мощность большинства типов МК напрямую зависит от тактовой частоты: чем выше тактовая частота, тем больше он потребляет)
– Up to 16 MIPS Throughput at 16 MHz
До 16 миллионов выполняемых команд при тактовой частоте 16 МГц.
За одну секунду при тактовой частоте 16 МГц может быть выполнено до 16 000 000 команд! Следовательно, одна однобайтовая команда может быть выполнена за 0,07 мкс. Весьма недурно для маленькой микросхемы.
С учетом предыдущего пункта понимаем, как работает на частотах от 0 Гц до 16 МГц.
– On-chip 2-cycle Multiplier
В данном МК имеется встроенный умножитель, который умножает числа за два такта.
Ну, это хорошо. Даже очень. Но мы пока не будет вгрызаться в эти нюансы…
– High Endurance Non-volatile Memory segments
Надежная энергонезависимая память, построенная в виде нескольких сегментов.
Вспоминаем типы памяти: EEPROM и FLASH.
– 8KBytes of In-System Self-programmable Flash program memory
– 8 Кбайт встроенной в МК памяти. Память выполнена по технологии Flash. В самом МК имеется встроенный программатор.
Этот объем весьма хорош! Для обучения (да и не только) — с запасом. А наличие встроенного программатора этой памяти, позволяет загружать данные в память, используя простой внешний программатор (в простейшем случае это пять проводков, которыми микроконтроллер подключают к LPT порту компьютера).
– 256 Bytes EEPROM
В МК имеется 256 байт энергонезависимой памяти EEPROM.
Следовательно, можно сохранить еще дополнительную информацию, которую можно изменять программой МК, без внешнего программатора.
– 1024 Bytes Internal SRAM
В МК имеется 1024 байт оперативной памяти (ОЗУ/RAM).
Также весьма приятный объем
– Write/Erase cyles: 10,000 Flash/100,000 EEPROM
Память Flash выдерживает 10 000 циклов записи/стирания, а память EEPROM — до 100 000
Проще говоря, программу в МК можно изменять до 10 000 раз, а свои данные в 10 раз больше.
– Data retention: 20 years at 85°C/100 years at 25°C
Сохранность данных в памяти МК — до 20 лет при температуре хранения 85°C, и 100 лет — при температуре 20°C.
Если ваши внуки и правнуки включат вашу «мигалку» или музыкальную шкатулку, то они смогут насладиться их работой ))
– Optional Boot Code Section with Independent Lock Bits
– Programming Lock for Software Security
МК имеет несколько областей памяти (не уточняем каких), которые можно защитить от прочтения установкой специальных бит защиты.
Ну, тут всё понятно: свои труды вы можете защитить от вычитывания программы из памяти МК.
Далее идет описание имеющейся в данном микроконтроллере периферии (т.е., встроенных в него аппаратных устройств типа таймеров, источников прерываний и интерфейсов связи)
– Two 8-bit Timer/Counters
– One 16-bit Timer/Counter
В МК имеется два таймера/счетчика: 8 и 16 бит.
– Three PWM Channels
Три канала ШИМ
– 8-channel ADC in TQFP and QFN/MLF package
Eight Channels 10-bit Accuracy
– 6-channel ADC in PDIP package
Six Channels 10-bit Accuracy
В составе МК есть несколько каналов АЦП: 6 – для корпуса PDIP и 8 – для корпуса QFN/MLF. Разрядность АЦП — 10 бит.
– Byte-oriented Two-wire Serial Interface
– Programmable Serial USART
В данном МК реализован аппаратный двухпроводный интерфейс связи USART, байт ориентированный и программируемый — имеется возможность настройки параметров интерфейса.
– Master/Slave SPI Serial Interface
Реализован SPI интерфейс связи, режимы Мастер/Подчиненный.
– Programmable Watchdog Timer with Separate On-chip Oscillator
Сторожевой таймер с собственным автономным генератором.
– On-chip Analog Comparator
Аналоговый компаратор.
– Power-on Reset and Programmable Brown-out Detection
Реализованы режимы контроля напряжения питания и защита работы МК при плохом питании (гарантирует увеличение надёжности работы всей системы).
– Internal Calibrated RC Oscillator
Встроенный калиброванный RC-генератор (можно запустить МК без внешних элементов).
– External and Internal Interrupt Sources
Реализовано несколько типов внешних и внутренних прерываний.
– Five Sleep Modes
Пять режимов «сна» (уменьшение энергопотребления МК за счет отключения некоторых внутренних узлов или специальных методов замедления их работы)
Понимаем как возможность выбора такого режима, при котором соотношение «потребляемая энергия/возможности» будут оптимальны для решения наших задач. Весьма полезная возможность при необходимости экономить энергию: питании от батарей, аккумуляторов и других источников.
– 28-pin PDIP, 32-lead TQFP, 28-pad QFN/MLF and 32-pad QFN/MLF
Указаны типы корпусов, в которых выпускается данный микроконтроллер. Видим «28 DIP» — это хорошо! Не надо покупать специализированные дорогостоящие панели и мучиться с тоненькими и часто расположенными выводами на корпусе МК.
Temperature Range:
-40°C to 85°C
Рабочая температура: -40°C … +85°C
Очень важный параметр! Бывают модели микроконтроллеров, которые работоспособны только при положительных температурах окружающего воздуха.
(Был у меня горький опыт, когда в устройстве был применен именно такой «теплолюбивый» микроконтроллер. А устройство поместили на улицу… И каждую зиму «благодарные» пользователи моего устройства «хвалили» меня за «замерзание» микроконтроллера, которое проявлялось в виде полного его зависания)
– 2.7 – 5.5V for ATmega8L
– 4.5 – 5.5V for ATmega8
Имеется две модификации данного МК: одна работоспособна при широком диапазоне питающих напряжение, вторая — в узком.
– ATmega8L: 0 – 8 MHz @ 2.7 – 5.5V
– ATmega8: 0 – 16 MHz @ 4.5 – 5.5V
Максимальная тактовая частота:
– Atmega8L: 0 – 8 МГц при напряжении питания 2,7 – 5,5 вольт
– Atmega8: 0 – 16 МГц при напряжении питания 4,5 – 5,5 вольт.
И что мы видим? А то, что модификация МК, работоспособная в широком диапазоне питающих напряжений, не может быть тактируема частотами выше 8 МГц. Следовательно, и ее вычислительные возможности будут ниже.
Power Consumption at 4 Mhz, 3V, 25°C
– Active: 3.6 mA
– Idle Mode: 1.0 mA
– Power-down Mode: 0.5 µA
Потребляемая мощность:
– при работе на частоте 4 МГц и напряжении питания 3 вольта потребляемый ток: 3,6 миллиампер,
– в различных режимах энергосбережения потребляемый ток: от 1 миллиампер до 0,5 микроампера
На следующей странице публикуется расположение выводов данного микроконтроллера при использовании разных типов корпусов:
Советую этот листок из даташита распечатать и иметь под рукой. В процессе разработки и сборки схемы очень полезно иметь эти данные перед глазами.
Внимание!
Обратите внимание на такой факт: микросхема микроконтроллера может иметь (и имеет в данной модели) несколько выводов для подключения источника питания. То есть имеется несколько выводов для подключения «земли» — «общего провода», и несколько выводов для подачи положительного напряжения.
Изготовители микроконтроллеров рекомендуют подключать соответствующие выводы вместе, т.е., минус подавать на все выводы, помеченные как Gnd (Ground — Земля), плюс — на все выводы помеченные как Vcc.
При этом через одинаковые выводы МК не должны протекать токи, так как внутри корпуса МК они соединены тонкими проводниками! То есть при подключении нагрузки эти выводы не должны рассматриваться как «перемычки».
Листаем описание далее, видим главу «Overview» (Обзор).
В ней имеется раздел «Block Diagram» (Устройство). На рисунке показаны устройства, входящие в состав данного микроконтроллера.
Но самым важным для нас в настоящее время является блок «Oscillator Circuits/Clock Generation» (Схема генератора/Генератор тактовой частоты).
В программе часто возникает необходимость сделать временную задержку в ее выполнении — паузу. А точную паузу можно организовать только методом подсчета времени. Время считаем исходя из количества тактов генератора микроконтроллера.
Да и не лишним будет заранее просчитать: успеет ли МК выполнить тот или иной фрагмент программы за отведенное для этого время.
В даташите ищем соответствующую главу: «System Clock and Clock Options» (Тактовый генератор и его параметры). В ней видим раздел «Clock Sources» (Источники тактового сигнала), в котором имеется таблица с перечнем видов тактовых сигналов. В этом разделе указано, что данный МК имеет встроенный тактовый RC-генератор. В разделе «Default Clock Source» имеется указание о том, что МК продается уже настроенным для использования встроенного RC-генератора. При этом тактовая частота МК — 1 МГц.
Из раздела «Calibrated Internal RC Oscillator» (Калиброванный RC-генератор) узнаем, что встроенный RC-генератор имеет температурный дрейф в пределах 7,3 — 8,1 МГц. Может возникнуть вопрос: если частота встроенного тактового генератора 7,3 — 8,1 МГц, то как была получена частота 1 МГц? Дело в том, что тактовый сигнал попадает в схемы микроконтроллера через программируемый делитель частоты (Об это рассказано в разделе «System Clock Prescaler»).
В данном микроконтроллере он имеет несколько коэффициентов деления: 1, 2, 4 и 8. При выборе первого мы получим частоту самого тактового генератора, при включении последнего — в 8 раз меньше, т.е., 8/8=1 МГц. С учетом вышесказанного получаем, что тактовая частота данного МК при включенном делителе с коэффициентом 8 будет в пределах от 7,3/8 = 0,9125 МГц (9125 КГц) до 8,1/8 = 1,0125 МГц.
Обратите внимание на один ну очень важный факт: стабильность частоты дана при температуре МК 25 градусов по шкале Цельсия. Вспомним, что внутренний генератор выполнен по RC схеме. А емкость конденсатора очень зависит от температуры!
Перед тем, как подать на микроконтроллер питающее напряжение, выполним правило, которое обязательно для всех цифровых микросхем: в непосредственной близости от выводов питания микросхемы должен быть керамический конденсатор емкостью 0,06 — 0,22 мкф. Обычно устанавливают конденсатор 0,1 мкф. Его часто называют блокировочным конденсатором.
В схему необходимо установить и электролитический конденсатор емкостью 4-10 мкф. Он также является блокировочным фильтром, но на менее высоких частотах. Такой конденсатор можно устанавливать один для нескольких микросхем. Обычно на 2-3 корпуса микросхем.
Дело в том, что микроконтроллер (как и другие цифровые микросхемы) состоит из транзисторных ячеек, которые в процессе работы постоянно переключаются из открытого состояния в закрытое, и наоборот. При этом изменяется потребляемая транзисторными ячейками энергия. В линии питания возникают кратковременные «провалы» напряжения. Этих ячеек в микроконтроллере сотни тысяч (думаю, что сейчас уже миллионы!), поэтому по питающим проводам начинают гулять импульсные помехи с частотами от единиц до десятков тысяч Герц.
Для предотвращения распространения этих помех по цепям схемы, да и самой микросхемы микроконтроллера, параллельно его выводам питания устанавливают такой блокировочный конденсатор. При этом на каждую микросхему необходимо устанавливать индивидуальный конденсатор.
Конденсатор для постоянного тока является изолятором. Но при установке конденсатора в цепи с непостоянным током он делается сопротивлением. Чем выше частота, тем меньшее сопротивление оказывает конденсатор. Следовательно, блокировочный конденсатор с малой емкостью пропускает через себя (шунтирует) высокочастотные сигналы (десятки и сотни Герц), а конденсатор с бОльшей емкостью — низкочастотные. Об этом я писал еще в статье Конденсатор в цепи постоянного и переменного тока
– микроконтроллер AVR ATmega-8 при поставке с завода работает на тактовой частоте 0,91—1,1 МГц;
– напряжение питания должно быть в пределах 4,5 — 5,5 Вольт. Мы будем использовать микросхемы с питающим напряжением 5 Вольт, поэтому и МК будет питаться этим же напряжением. (Хотя работоспособность сохранится при напряжении питания 2,7 Вольт для обычных, не низковольтных моделей МК)
Зарядное устройство для автомобильных аккумуляторов на Atmega 8.
Хочу представить вниманию зарядное устройство (ЗУ) для автомобильных аккумуляторов на Atmega 8. Данное устройство является моим вариантом ЗУ описание которого выложено в [1]. Очень рекомендую сначала прочитать описание оригинального ЗУ для снятия многих вопросов. К достоинствам ЗУ можно отнести использование силового трансформатора от бесперебойников, защиту от короткого замыкания и переполюсовки. ЗУ можно собрать в корпусе бесперебойника что снимает проблему всех устройств радиолюбителя – корпус.
После изготовления нескольких штук по оригинальному описанию я пришел к заключению что использование Atmega16 является избыточным, как по обьему памяти так и по количеству портов вводавывода. Поэтому было решено перевести проект на Atmega 8, тем более что исходники Автором были любезно выложены.
После тщательного курения даташита, а особенно замечательной книги [2] получилось переделать прошивку для Atmega 8. Также мною были внесены некоторые изменения в схему устройства для придания некоторой универсальности в части возможности использования различных компонентов. Схема того что получилось представлена ниже:
Как видно устройство разделено на две части: микроконтроллера (МК) и силовую.
Некоторые обьяснения по схеме контроллера. К разьему pow-in подключается маломощный внешний трансформатор с напряжением вторичной обмотки порядка 10-15 вольт, после выпрямления напряжение подается через развязывающий диод D9 на стабилизатор 78l12, который используется для питания операционного усилителя цепи измерения тока, и стабилизатора 7805 который питает микроконтроллер. Резисторы R32, R1 и стабилитрон D10 с напряжением стабилизации 5.1 вольт формируют сигнал прерывания МК для определения момента перехода сетевого напряжения через ноль.
На операционном усилителе (ОУ) U5 типа LM358 собраны усилитель сигнала с шунта для измерения зарядного тока и усилитель сигнала с шунта для определения перегрузки. Питание ОУ осуществляется напряжением 12 вольт и напряжением -5 вольт, которое преобразуется при помощи ICL7660 из напряжения +5 вольт. Использование ICL7660 позволяет отказаться от применения трансформатора с двумя вторичными обмотками, как в оригинальном устройстве. Кроме того предусмотрен вариант использования Rail-to-Rail ОУ, что позволяет вообще отказаться от источника питания +12 вольт, преобразователя ICL7660, а также защитных диодных сборок D6, D7. Был испытан образец на ОУ MCP6002 который себя неплохо зарекомендовал. При использовании Rail-to-Rail ОУ не устанавливается стабилизатор 78l12 и конденсатор C15. Впаивается нулевая перемычка R13 для питания ОУ от +5 вольт, а вместо конденсатора C13 впаивается нулевая перемычка на корпус. Таким образом организуется питание +5 вольт для ОУ. При сборке нужно внимательно следить какой вариант собираете дабы не повредить ОУ и МК при несоответствии типа применяемого ОУ напряжению питания.
Диодные сборки D6, D7, D11 служат для защиты портов МК от перенапряжения и напряжения обратной полярности. В оригинальной схеме для этой цели используются стабилитроны на 5.1 вольт, но при сборке устройства выяснилось что они вносят погрешность при измерении тока и напряжения, т.к. начинают приоткрываться при напряжении порядка 4.8 вольта. В устройстве АЦП МК использует в качестве опорного напряжения напряжение питания +5 вольт, а следовательно АЦП охватывает весь диапазон от 0 до 5 вольт. Установка D11 обязательна.
Разьем ISP1 служит для внутрисхемного программирования МК, распиновка его стандартна для варианта 6 контактов. Реле RL1 служит для включения силового трансформатора. Транзистор управления реле любой средней мощности типа npn, ставил КТ817. Реле выпаивается из платы бесперебойника, также в зависимости от типа платы можно выпаять кварцевый резонатор на 8 Мгц, стабилизатор 7805, стабилизатор 7812 для силового модуля. Переменным резистором RV1 устанавливаем контрастность дисплея. Дисплей используется типа 0802 с кирилицей. Типоразмер всех используемых SMD резисторов и конденсаторов 1206. Конденсатор C16 танталовый SMD 10мкф 16 вольт.
В силовом модуле стабилизатор 7812 служит для питания вентилятора обдува радиатора на котором устанавливается силовой диодный мост типа KBPC5010 или аналогичный, а также тиристор 40TPS12. В данной версии прошивки обдув включается при токе зарядки 2А, выключается при 1А. В качестве радиатора идеально подходят так называемые «процессорные». Предохранитель FU1 автомобильный на 30А, впаивается прямо в плату. Такие попарно установлены на плате бесперебойника. Резисторы R1-R7, R12, R13, R16 типоразмера 1206 на 0.1 Ом впаяны параллельно и образуют шунт для измерения тока. Транзисторы ключей для управления вентилятором и тиристором использовал типа КТ816Б, можно использовать любые средней мощности типа pnp.
К точкам BATT припаиваются провода с крокодилами для подключения к батарее, к точкам BRIDGE провода с наконечниками для подключения к диодному мосту. Провода с наконечниками также из бесперебойника. К разьему FAN подключают вентилятор охлаждения.
Силовая плата и плата МК соединяются 2-мя шлейфами с 3-мя проводами: сигнал измерения напряжения – общий – сигнал измерения тока и сигнал управления тиристором – общий силовой – сигнал управления вентилятором. ВНИМАНИЕ: общий и общий силовой не долны соединятся в шлейфах они впаиваются в соответствующие места платы и никак между собой не связаны.
После сборки и проверки монтажа подключается ЗУ к сети, если все правильно собрано после экранов приветствия появится надпись «Подключи батарею». Подключаем аккумулятор или внешний источник напряжением 12 вольт к крокодилам и подстроечным резистором RV6 выставляем напряжение на экране ЗУ соответствующее напряжению аккумулятора или источника питания по контрольному вольтметру. Далее подключаем ЗУ к аккумулятору через амперметр, вращаем энкодер по часовой стрелке выставляя зарядный ток 1А и нажимаем ручку энкодера, на экране появляется надпись «Заряд начат» и зарядный ток начинает плавно увеличиваться от нуля до утановленного значения. Подстроечным резистором RV3 выставляем правильные показания тока на экране ЗУ по контрольному амперметру. Выставлять следует при установившемся значении на экране. Подстроечным резистором RV4 выставляем напряжение на входе 24 МК равным 0.09в при зарядном токе 1А.
Для справки: для входов измерения тока и напряжения АЦП МК максимальные значения в +5 вольт соответствуют 15 амперам и 15 вольтам. Для входа измерения перегрузки по току напряжение отключения тока зарядки – 1 вольт.
Подключаем ЗУ к сети, подключаем батарею, устанавливаем требуемый ток заряда в диапазоне 0-10А вращением энкодера, нажимаем энкодер. Ток заряда плавно растет до установленного значения. При достижении на батарее 14.4 вольта ток плавно падает при условии неизменности напряжения на батарее в 14.4 вольта. При падении тока зарядки ниже 0.5А и напряжении 14.4 вольта считается что батарея заряжена и зарядка прекращается — выводится надпись «Батарея заряжена». При невозможности достижения напряжения на батарее в 14.4 вольта при токе 0.5 А в течении 4 часов выводится надпись «Проверь батарею не берет заряд» и заряд отключается. Если при включении зарядки ток не растет появляется надпись «Плохой контакт с батареей» и заряд отключается. При пробое тиристора и неконтроллируемом увеличении напряжения выше 15 вольт заряд отключается и появляется надпись «ERROR VOLTAGE». При чрезмерном увеличении тока заряда или КЗ также заряд отключается и выводится надпись «Ошибка по току». Чтобы досрочно прервать заряд энкодером уменьшаем ток до нуля и нажимаем энкодер или просто снимаем клемму с батареи. Для изменения тока заряда в процессе зарядки вращаем энкодер и нажимаем, появляется надпись «Ток изменен».
Фьюзы для прошивки:
Плата МК односторонняя, 11 перемычек.
Плата силовая односторонняя, 1 перемычка:
Несколько фотографий готового ЗУ:
Список литературы:
Ниже в архиве проект в Протеус 8 платы МК и силовой платы, а также прошивка.
Файлы:
Протеус, прошивка
Все вопросы в Форум.
Как вам эта статья? | Заработало ли это устройство у вас? |
Эти статьи вам тоже могут пригодиться:
Данная схема USB программатора, построенного на микроконтроллере Atmega8, довольно проста в изготовлении, ее можно собрать своими руками буквально за один вечер.
Фактически это AVR-910 популярной схемы Prottoss-a. USB программатор надежен и имеет в своем арсенале функцию, позволяющая восстанавливать микроконтроллеры с неверно установленными фьюзами.
Следует отметить, что для прошивки самого микроконтроллера Atmega8 программатора понадобится простой LPT-программатор.
Печатную плату можно сделать своими руками по известной технологии ЛУТ. Поэтому на описании изготовления платы останавливаться не будем, а перейдем сразу к описанию.
Итак, у нас все детали схемы припаяны без ошибок и коротких замыканий, плата очищена от остатков флюса. Теперь переводим переключатель SA2 в положение «МОД», подсоединяем наше устройство к простому LPT-программатору и включаем питание.
USB программатор AVRПоддержка Linux, OS X и Windows, скорость прогр…
Теперь необходимо занести программу в память Atmega8. В качестве программного обеспечения можно применить Uniprof или Code Vision AVR. Перед программированием необходимо выставить следующие фьюзы (для Uniprof):
По завершению прошивки Atmega8, переводим переключатель SA2 в положение «НОРМ», подсоединяем программатора к USB разъему компьютера. Если все шаги выполнены верно, то компьютер должен без проблем обнаружить новое подключенное устройство.
Система предложит найти драйвер — отказываемся и указываем драйвер из нашего архива. По завершению установки драйвера для программатора, он полностью готов к работе.
Поговорим о программном обеспечении которое необходимо для работы с данным программатором. Он поддерживает такие оболочки как: AVR Prog, AVR Studio, ChipBlasterAVR и, конечно же, Code Vision AVR.
Достаточно удобной программой, я считаю, является Code Vision AVR, пример работы, которой подробно написано здесь.
Для справки, приведем типовую распиновку USB:
Список необходимых деталей:
Скачать прошивку, драйвера и печатную плату (853,5 KiB, скачано: 18 667)
Источник: http://www.tehnari.ru/f115/t71649/
Микроконтроллер atmega8 сочетает в себе функциональность, компактность и сравнительно не высокую цену.
Такие качества дали широчайшее распространение ATmega8 среди профессиональных и любительских конструкций. Микроконтроллер имеет широкий набор модулей, и может быть использован в большом количестве устройств, различного назначения, от таймеров, реостатов, систем автоматики до генератор специальных сигналов, видео сигналов и декодеров стандарта RC5.
Характеристики микроконтроллера ATMEGA8
EEPROM | 8 Кб |
Аналоговые входы (АЦП) | 4 |
Входное напряжение (предельное) | 5,5 Вольт |
Входное напряжение (рекомендуемое) | 4,5-5 Вольт |
ОЗУ | 256 байт |
Тактовая частота | 20 МГц |
Flash-память | 8кБ |
Микроконтроллер atmega8 имеет два полноценных портов с разрядностью 8 бит в отличии от ATtiny2313, младшего брата.
Наличие в atmega8 аналогово-цифрового преобразователя, дающего возможность измерять такие параметры как напряжение, ток, емкость что позволяет разработать полноценный мультиметр на базе этого микроконтроллера. Так же atmega8 имеет порт UART для приема и передачи данных TTL уровня.
Порт для работы по протоколу TWI(возможность реализовать программный I2C).
По I2C к ATmega8 можно подключить целый спектр устройств:
— внешнюю EEPROM память серии 24cXX,
— ЖКИ индикаторы и графические дисплеи,
— регуляторы громкости, сопротивления,
и многое другое.
Пример конфигурирования фьюз битов atmega8.
Схемы на atmega8
Примечание:
Если количество выводов микроконтроллера устраивает, но требуется больший объем памяти программ, рекомендую использовать микроконтроллеры ATmega16, ATmega32 или ATmega328.
Цоколевка микроконтроллера AtMega8.
Внешний вид микроконтроллера в корпусе DIP 28
ATmega8 Datasheet скачать — заводская документация на микроконтроллер ATmega8 от фирмы Atmel
90000 90001 90002% PDF-1.2 % 3948 0 obj> endobj xref 3948 736 0000000016 00000 n 0000019867 00000 n 0000020002 00000 n 0000015327 00000 n 0000020181 00000 n 0000020209 00000 n 0000020257 00000 n 0000020294 00000 n 0000020507 00000 n 0000020590 00000 n 0000020670 00000 n 0000020753 00000 n 0000020836 00000 n 0000020919 00000 n 0000021003 00000 n 0000021086 00000 n 0000021169 00000 n 0000021252 00000 n 0000021335 00000 n 0000021418 00000 n 0000021501 00000 n 0000021584 00000 n 0000021667 00000 n 0000021750 00000 n 0000021833 00000 n 0000021916 00000 n 0000021999 00000 n 0000022082 00000 n 0000022165 00000 n 0000022248 00000 n 0000022331 00000 n 0000022414 00000 n 0000022497 00000 n 0000022580 00000 n 0000022663 00000 n 0000022746 00000 n 0000022829 00000 n 0000022912 00000 n 0000022995 00000 n 0000023078 00000 n 0000023161 00000 n 0000023244 00000 n 0000023327 00000 n 0000023410 00000 n 0000023493 00000 n 0000023576 00000 n 0000023659 00000 n 0000023742 00000 n 0000023825 00000 n 0000023908 00000 n 0000023991 00000 n 0000024074 00000 n 0000024157 00000 n 0000024240 00000 n 0000024323 00000 n 0000024406 00000 n 0000024489 00000 n 0000024572 00000 n 0000024655 00000 n 0000024738 00000 n 0000024821 00000 n 0000024904 00000 n 0000024987 00000 n 0000025070 00000 n 0000025153 00000 n 0000025236 00000 n 0000025319 00000 n 0000025402 00000 n 0000025485 00000 n 0000025568 00000 n 0000025651 00000 n 0000025734 00000 n 0000025817 00000 n 0000025900 00000 n 0000025983 00000 n 0000026066 00000 n 0000026149 00000 n 0000026232 00000 n 0000026315 00000 n 0000026398 00000 n 0000026481 00000 n 0000026564 00000 n 0000026647 00000 n 0000026730 00000 n 0000026813 00000 n 0000026896 00000 n 0000026979 00000 n 0000027062 00000 n 0000027145 00000 n 0000027228 00000 n 0000027311 00000 n 0000027394 00000 n 0000027477 00000 n 0000027560 00000 n 0000027643 00000 n 0000027726 00000 n 0000027809 00000 n 0000027892 00000 n 0000027975 00000 n 0000028058 00000 n 0000028141 00000 n 0000028224 00000 n 0000028307 00000 n 0000028390 00000 n 0000028473 00000 n 0000028556 00000 n 0000028639 00000 n 0000028722 00000 n 0000028805 00000 n 0000028888 00000 n 0000028971 00000 n 0000029054 00000 n 0000029137 00000 n 0000029220 00000 n 0000029303 00000 n 0000029386 00000 n 0000029469 00000 n 0000029552 00000 n 0000029635 00000 n 0000029718 00000 n 0000029801 00000 n 0000029884 00000 n 0000029967 00000 n 0000030050 00000 n 0000030133 00000 n 0000030215 00000 n 0000030297 00000 n 0000030379 00000 n 0000030461 00000 n 0000030543 00000 n 0000030625 00000 n 0000030707 00000 n 0000030789 00000 n 0000030871 00000 n 0000030953 00000 n 0000031035 00000 n 0000031117 00000 n 0000031199 00000 n 0000031281 00000 n 0000031363 00000 n 0000031445 00000 n 0000031527 00000 n 0000031609 00000 n 0000031691 00000 n 0000031773 00000 n 0000031855 00000 n 0000031937 00000 n 0000032019 00000 n 0000032101 00000 n 0000032183 00000 n 0000032265 00000 n 0000032347 00000 n 0000032429 00000 n 0000032511 00000 n 0000032593 00000 n 0000032675 00000 n 0000032757 00000 n 0000032839 00000 n 0000032921 00000 n 0000033003 00000 n 0000033085 00000 n 0000033167 00000 n 0000033249 00000 n 0000033331 00000 n 0000033413 00000 n 0000033495 00000 n 0000033577 00000 n 0000033659 00000 n 0000033741 00000 n 0000033823 00000 n 0000033905 00000 n 0000033987 00000 n 0000034069 00000 n 0000034151 00000 n 0000034233 00000 n 0000034315 00000 n 0000034397 00000 n 0000034479 00000 n 0000034561 00000 n 0000034643 00000 n 0000034725 00000 n 0000034807 00000 n 0000034889 00000 n 0000034971 00000 n 0000035053 00000 n 0000035135 00000 n 0000035217 00000 n 0000035299 00000 n 0000035381 00000 n 0000035463 00000 n 0000035545 00000 n 0000035627 00000 n 0000035709 00000 n 0000035791 00000 n 0000035873 00000 n 0000035955 00000 n 0000036037 00000 n 0000036119 00000 n 0000036201 00000 n 0000036283 00000 n 0000036365 00000 n 0000036447 00000 n 0000036529 00000 n 0000036611 00000 n 0000036693 00000 n 0000036775 00000 n 0000036857 00000 n 0000036939 00000 n 0000037021 00000 n 0000037103 00000 n 0000037185 00000 n 0000037267 00000 n 0000037349 00000 n 0000037431 00000 n 0000037513 00000 n 0000037595 00000 n 0000037677 00000 n 0000037759 00000 n 0000037841 00000 n 0000037923 00000 n 0000038005 00000 n 0000038087 00000 n 0000038169 00000 n 0000038251 00000 n 0000038333 00000 n 0000038415 00000 n 0000038497 00000 n 0000038579 00000 n 0000038661 00000 n 0000038743 00000 n 0000038825 00000 n 0000038907 00000 n 0000038989 00000 n 0000039071 00000 n 0000039153 00000 n 0000039235 00000 n 0000039317 00000 n 0000039399 00000 n 0000039481 00000 n 0000039563 00000 n 0000039645 00000 n 0000039727 00000 n 0000039809 00000 n 0000039891 00000 n 0000039973 00000 n 0000040055 00000 n 0000040137 00000 n 0000040219 00000 n 0000040301 00000 n 0000040383 00000 n 0000040465 00000 n 0000040547 00000 n 0000040629 00000 n 0000040711 00000 n 0000040793 00000 n 0000040875 00000 n 0000040957 00000 n 0000041039 00000 n 0000041121 00000 n 0000041203 00000 n 0000041285 00000 n 0000041367 00000 n 0000041449 00000 n 0000041531 00000 n 0000041613 00000 n 0000041695 00000 n 0000041777 00000 n 0000041859 00000 n 0000041941 00000 n 0000042023 00000 n 0000042105 00000 n 0000042187 00000 n 0000042269 00000 n 0000042351 00000 n 0000042433 00000 n 0000042515 00000 n 0000042597 00000 n 0000042679 00000 n 0000042761 00000 n 0000042843 00000 n 0000042925 00000 n 0000043007 00000 n 0000043089 00000 n 0000043171 00000 n 0000043253 00000 n 0000043335 00000 n 0000043417 00000 n 0000043499 00000 n 0000043581 00000 n 0000043663 00000 n 0000043745 00000 n 0000043827 00000 n 0000043909 00000 n 0000043990 00000 n 0000044071 00000 n 0000044152 00000 n 0000044233 00000 n 0000044314 00000 n 0000044395 00000 n 0000044476 00000 n 0000044557 00000 n 0000044638 00000 n 0000044719 00000 n 0000044800 00000 n 0000044881 00000 n 0000044962 00000 n 0000045043 00000 n 0000045124 00000 n 0000045205 00000 n 0000045286 00000 n 0000045367 00000 n 0000045447 00000 n 0000045527 00000 n 0000045686 00000 n 0000045748 00000 n 0000045811 00000 n 0000046540 00000 n 0000047342 00000 n 0000048061 00000 n 0000048247 00000 n 0000049086 00000 n 0000049828 00000 n 0000050459 00000 n 0000051246 00000 n 0000052306 00000 n 0000053384 00000 n 0000054391 00000 n 0000054622 00000 n 0000054855 00000 n 0000055249 00000 n 0000064854 00000 n 0000065829 00000 n 0000066753 00000 n 0000072272 00000 n 0000078588 00000 n 0000078988 00000 n 0000079048 00000 n 0000079133 00000 n 0000079226 00000 n 0000079382 00000 n 0000079509 00000 n 0000079636 00000 n 0000079772 00000 n 0000079863 00000 n 0000080013 00000 n 0000080093 00000 n 0000080176 00000 n 0000080287 00000 n 0000080402 00000 n 0000080510 00000 n 0000080672 00000 n 0000080771 00000 n 0000080898 00000 n 0000081054 00000 n 0000081157 00000 n 0000081253 00000 n 0000081400 00000 n 0000081510 00000 n 0000081656 00000 n 0000081841 00000 n 0000081938 00000 n 0000082081 00000 n 0000082239 00000 n 0000082324 00000 n 0000082460 00000 n 0000082606 00000 n 0000082719 00000 n 0000082831 00000 n 0000082987 00000 n 0000083072 00000 n 0000083185 00000 n 0000083321 00000 n 0000083444 00000 n 0000083551 00000 n 0000083715 00000 n 0000083851 00000 n 0000083938 00000 n 0000084125 00000 n 0000084248 00000 n 0000084386 00000 n 0000084538 00000 n 0000084661 00000 n 0000084817 00000 n 0000084990 00000 n 0000085088 00000 n 0000085201 00000 n 0000085351 00000 n 0000085476 00000 n 0000085632 00000 n 0000085782 00000 n 0000085887 00000 n 0000086002 00000 n 0000086140 00000 n 0000086229 00000 n 0000086378 00000 n 0000086517 00000 n 0000086646 00000 n 0000086800 00000 n 0000086894 00000 n 0000087078 00000 n 0000087241 00000 n 0000087346 00000 n 0000087490 00000 n 0000087649 00000 n 0000087801 00000 n 0000087904 00000 n 0000088053 00000 n 0000088177 00000 n 0000088264 00000 n 0000088405 00000 n 0000088494 00000 n 0000088637 00000 n 0000088749 00000 n 0000088886 00000 n 0000088976 00000 n 0000089108 00000 n 0000089218 00000 n 0000089298 00000 n 0000089412 00000 n 0000089514 00000 n 0000089609 00000 n 0000089705 00000 n 0000089802 00000 n 0000089910 00000 n 0000090011 00000 n 0000090119 00000 n 0000090253 00000 n 0000090347 00000 n 0000090435 00000 n 0000090556 00000 n 0000090660 00000 n 0000090818 00000 n 0000090923 00000 n 0000091030 00000 n 0000091148 00000 n 0000091262 00000 n 0000091410 00000 n 0000091512 00000 n 0000091618 00000 n 0000091733 00000 n 0000091841 00000 n 0000091976 00000 n 0000092103 00000 n 0000092226 00000 n 0000092362 00000 n 0000092467 00000 n 0000092629 00000 n 0000092733 00000 n 0000092847 00000 n 0000092972 00000 n 0000093082 00000 n 0000093186 00000 n 0000093282 00000 n 0000093378 00000 n 0000093502 00000 n 0000093616 00000 n 0000093726 00000 n 0000093838 00000 n 0000093924 00000 n 0000094027 00000 n 0000094133 00000 n 0000094239 00000 n 0000094354 00000 n 0000094454 00000 n 0000094561 00000 n 0000094678 00000 n 0000094787 00000 n 0000094895 00000 n 0000095015 00000 n 0000095130 00000 n 0000095273 00000 n 0000095376 00000 n 0000095531 00000 n 0000095646 00000 n 0000095778 00000 n 0000095884 00000 n 0000095994 00000 n 0000096099 00000 n 0000096204 00000 n 0000096309 00000 n 0000096439 00000 n 0000096558 00000 n 0000096667 00000 n 0000096780 00000 n 0000096934 00000 n 0000097048 00000 n 0000097154 00000 n 0000097311 00000 n 0000097408 00000 n 0000097501 00000 n 0000097629 00000 n 0000097742 00000 n 0000097862 00000 n 0000097983 00000 n 0000098116 00000 n 0000098239 00000 n 0000098366 00000 n 0000098499 00000 n 0000098622 00000 n 0000098750 00000 n 0000098883 00000 n 0000099017 00000 n 0000099134 00000 n 0000099255 00000 n 0000099375 00000 n 0000099476 00000 n 0000099579 00000 n 0000099697 00000 n 0000099835 00000 n 0000099956 00000 n 0000100042 00000 n 0000100131 00000 n 0000100244 00000 n 0000100350 00000 n 0000100470 00000 n 0000100596 00000 n 0000100717 00000 n 0000100864 00000 n 0000100953 00000 n 0000101067 00000 n 0000101221 00000 n 0000101329 00000 n 0000101479 00000 n 0000101576 00000 n 0000101682 00000 n 0000101829 00000 n 0000101932 00000 n 0000102037 00000 n 0000102140 00000 n 0000102259 00000 n 0000102415 00000 n 0000102519 00000 n 0000102624 00000 n 0000102754 00000 n 0000102868 00000 n 0000102972 00000 n 0000103103 00000 n 0000103243 00000 n 0000103376 00000 n 0000103515 00000 n 0000103655 00000 n 0000103783 00000 n 0000103917 00000 n 0000104004 00000 n 0000104094 00000 n 0000104197 00000 n 0000104296 00000 n 0000104468 00000 n 0000104581 00000 n 0000104704 00000 n 0000104874 00000 n 0000104990 00000 n 0000105097 00000 n 0000105219 00000 n 0000105366 00000 n 0000105454 00000 n 0000105555 00000 n 0000105710 00000 n 0000105818 00000 n 0000105968 00000 n 0000106065 00000 n 0000106176 00000 n 0000106279 00000 n 0000106398 00000 n 0000106529 00000 n 0000106633 00000 n 0000106764 00000 n 0000106886 00000 n 0000107024 00000 n 0000107157 00000 n 0000107243 00000 n 0000107331 00000 n 0000107418 00000 n 0000107519 00000 n 0000107636 00000 n 0000107755 00000 n 0000107858 00000 n 0000108013 00000 n 0000108119 00000 n 0000108245 00000 n 0000108405 00000 n 0000108494 00000 n 0000108582 00000 n 0000108745 00000 n 0000108819 00000 n 0000108976 00000 n 0000109081 00000 n 0000109191 00000 n 0000109355 00000 n 0000109470 00000 n 0000109577 00000 n 0000109747 00000 n 0000109860 00000 n 0000109963 00000 n 0000110075 00000 n 0000110217 00000 n 0000110302 00000 n 0000110447 00000 n 0000110576 00000 n 0000110681 00000 n 0000110787 00000 n 0000110908 00000 n 0000111016 00000 n 0000111139 00000 n 0000111263 00000 n 0000111376 00000 n 0000111481 00000 n 0000111594 00000 n 0000111720 00000 n 0000111844 00000 n 0000111961 00000 n 0000112098 00000 n 0000112233 00000 n 0000112368 00000 n 0000112469 00000 n 0000112616 00000 n 0000112716 00000 n 0000112820 00000 n 0000112925 00000 n 0000113080 00000 n 0000113187 00000 n 0000113300 00000 n 0000113456 00000 n 0000113549 00000 n 0000113638 00000 n 0000113787 00000 n 0000113946 00000 n 0000114041 00000 n 0000114174 00000 n 0000114345 00000 n 0000114437 00000 n 0000114540 00000 n 0000114650 00000 n 0000114764 00000 n 0000114881 00000 n 0000114990 00000 n 0000115101 00000 n 0000115215 00000 n 0000115330 00000 n 0000115450 00000 n 0000115568 00000 n 0000115679 00000 n 0000115793 00000 n 0000115904 00000 n 0000116016 00000 n 0000116161 00000 n 0000116282 00000 n 0000116437 00000 n 0000116585 00000 n 0000116685 00000 n 0000116788 00000 n 0000116956 00000 n 0000117051 00000 n 0000117149 00000 n 0000117273 00000 n 0000117386 00000 n 0000117511 00000 n 0000117597 00000 n 0000117684 00000 n 0000117817 00000 n 0000117923 00000 n 0000118032 00000 n 0000118169 00000 n 0000118331 00000 n 0000118440 00000 n 0000118553 00000 n 0000118740 00000 n 0000118847 00000 n 0000118958 00000 n 0000119130 00000 n 0000119226 00000 n 0000119328 00000 n 0000119468 00000 n 0000119602 00000 n 0000119722 00000 n 0000119858 00000 n 0000119988 00000 n 0000120121 00000 n 0000120272 00000 n 0000120396 00000 n 0000120511 00000 n 0000120626 00000 n 0000120762 00000 n 0000120868 00000 n 0000120984 00000 n 0000121093 00000 n 0000121243 00000 n 0000121343 00000 n 0000121459 00000 n 0000121646 00000 n 0000121721 00000 n 0000121821 00000 n 0000121928 00000 n 0000122034 00000 n 0000122172 00000 n 0000122252 00000 n 0000122372 00000 n 0000122491 00000 n 0000122612 00000 n 0000122731 00000 n 0000122853 00000 n 0000122976 00000 n 0000123085 00000 n 0000123193 00000 n 0000123306 00000 n 0000123419 00000 n 0000123521 00000 n 0000123652 00000 n 0000123763 00000 n 0000123872 00000 n 0000123990 00000 n 0000124122 00000 n 0000124233 00000 n 0000124355 00000 n 0000124464 00000 n 0000124596 00000 n 0000124712 00000 n 0000124846 00000 n 0000124966 00000 n 0000125076 00000 n 0000125178 00000 n 0000125293 00000 n 0000125409 00000 n 0000125527 00000 n 0000125638 00000 n 0000125733 00000 n 0000125874 00000 n 0000126016 00000 n 0000126157 00000 n 0000126298 00000 n 0000126438 00000 n 0000126579 00000 n 0000126720 00000 n 0000126861 00000 n 0000127002 00000 n 0000127144 00000 n trailer ] >> startxref 0 %% EOF 3951 0 obj> stream F} + * PP 90003.