Улли Сомер. Программирование микроконтроллерных плат Arduino/Freeduino. Стр.256 г.2015




Федеральное государственное образовательное учреждение

Среднего профессионального образования

«Казанский авиационный-технический колледж имени П.В. Дементьева»

 

 
 

 


ПОЯСНИТЕЛЬНАЯ ЗАПИСКА

К дипломному проекту

К.13.04

Тема: Проектирование и разработка системы управления на микроконтроллере

 

 

 

 

 

 

Содержание Стс.
Введение  
1 Раздел Изучение предметной области  
1.1 Микроконтроллер  
1.2 Датчик угла поворота  
2 Раздел Разработка устройства  
2.1 Описание элементной базы  
2.2 Принцип работы устройства  
2.3 Конструкторские расчеты  
2.4 Система управления микроконтроллера  
3 Раздел Техническое обслуживание устройства  
3.1 Плановый осмотр  
4 Раздел Технико-экономические показатели  
4.1 Передовые технологии, перспективы развития  
4.2 Возможные риски в использовании ПО  
4.2 Технико-экономические показатели  
5 Раздел Охрана труда и техника безопасности  
5.1 Организация рабочего места наладчика  
5.2 Охрана труда и безопасность  
Заключение  
Список литературы  
Приложение  

 

Введение

Назначение микроконтроллеров.

Микроконтроллеры интегрируют в себе технические возможности для обработки смешанных сигналов и вычислительную мощность, при этом уровень производительности МК и их функционал постоянно растет. Однако существуют другие разработки, которые позволяют продлить жизненный цикл бюджетных и низкопроизводительных микроконтроллеров.

По определению, микроконтроллеры бесполезны без связи с «реальным миром». Они были разработаны, чтобы действовать в качестве концентраторов для входов и выходов, выполняя задачи условных переходов и управляя последовательными и параллельными процессами. Их роль определяется управлением, в то время как возможность программирования означает, что характер управления задается логикой. Тем не менее, они изначально разрабатывались с целью получить интерфейс для аналогового мира, и, следовательно, в своей работе микроконтроллеры существенно опираются на процесс аналого-цифрового преобразования. Часто это цифровое представление аналогового параметра, обычно получаемого от какого-то датчика, на основе которого строится процесс управления, и основное применение микроконтроллера в таком случае видится в системах автоматизации. Способность управлять большими и сложными механическими системами, используя миниатюрный и относительно дешевый «кусочек» кремния, способствовало тому, что микроконтроллеры стали самым важным элементом промышленных систем автоматизации, и не удивительно, что многие производители стали выпускать специализированные семейства микроконтроллеров.

Системы промышленной автоматизации всегда зависели от сочетания измерений и управления. В течение последних нескольких лет заметен рост уровня промышленных сетевых коммуникаций и протоколов, однако, интерфейс между цифровой и аналоговой частью системы остался относительно неизменным. С введением интерфейса IO-Link датчики и исполнительные механизмы,

разрабатываемые в настоящее время, способны все же взаимодействовать с микроконтроллером в более изощренной форме. Коммуникационный протокол связи типа «точка-точка» обеспечивает не только более простой способ обмена данными для управления элементами системы, но и расширение возможностей бюджетных микроконтроллеров.

Цель дипломного проекта ‑ проектирование принципиальной схемы устройства, давая экономическую оценку, приобретение навыков по оформлению технической литературы, составление элементной базы устройства, а так же разработка системы управления на основе микроконтроллера Atmega48. Данная дипломная работа включает в себя разработку, описание и структуру управления микроконтроллера.

 

 

Раздел 1 Описание предметной области

 

Рисунок 1 – Структурная схема устройства

1.1 Микроконтроллер

Микроконтроллер - это специальная микросхема, предназначенная для управления различными электронными устройствами. Микроконтроллеры впервые появились в том же году, что и микропроцессоры общего назначения (1971).

Разработчики микроконтроллеров придумали остроумную идею – объединить процессор, память, ПЗУ и периферию внутри одного корпуса, внешне похожего на обычную микросхему. С тех пор производство микроконтроллеров ежегодно во много раз превышает производство процессоров, а потребность в них не снижается.

Микроконтроллеры выпускают десятки компаний, причем производятся не только современные 32-битные микроконтроллеры, но и 16, и даже 8-битные (как i8051 и аналоги). Внутри каждого семейства часто можно встретить почти одинаковые модели, различающиеся скоростью работы ЦПУ и объемом памяти.

Дело в том, что микроконтроллеры применяются преимущественно во встроенных системах, в игрушках, в станках, в массовой домашней технике, в домашней автоматике – там, где нужна не мощность процессора, а, скорее, баланс между ценой и достаточной функциональностью.

Именно поэтому самые старые типы микроконтроллеров еще до сих пор в ходу – они многое могут: от автоматического открывания дверей и включения полива газонов до интеграции в систему «умный дом». При этом существуют и более мощные микроконтроллеры, способные выполнять сотни миллионов операций в секунду и обвязанные периферией «до зубов». У них и задачи соответствующие. Таким образом, разработчик сначала оценивает задачу, а уж потом выбирает под нее подходящее «железо».

На сегодняшний день существует более 200 модификаций микроконтроллеров, совместимых с i8051, выпускаемых двумя десятками компаний, и большое количество микроконтроллеров других типов. Популярностью у разработчиков пользуются 8-битные микроконтроллеры PIC фирмы Microchip Technology и AVR фирмы Atmel, 16-битные MSP430 фирмы TI, а также 32-битные микроконтроллеры, архитектуры ARM, которую разрабатывает фирма ARM Limited и продаёт лицензии другим фирмам для их производства.

Рисунок 2 - 16-битный 28-pin PDIP PIC24 микроконтроллер

Рисунок 3 - Микроконтроллер Atmel AVR ATmega8 в корпусе DIP

Рисунок 4 - Устройство микроконтроллера AVR

Микроконтроллер характеризуется большим числом параметров, поскольку он одновременно является сложным программно-управляемым устройством и электронным прибором (микросхемой). Приставка "микро" в названии микроконтроллера означает, что выполняется он по микроэлектронной технологии.

В ходе работы микроконтроллер считывает команды из памяти или порта ввода и исполняет их. Что означает каждая команда, определяется системой команд микроконтроллера. Система команд заложена в архитектуре микроконтроллера и выполнение кода команды выражается в проведении внутренними элементами микросхемы определенных микроопераций.

Микроконтроллеры позволяют гибко управлять различными электронными и электрическими устройствами. Некоторые модели микроконтроллеров настолько мощны, что могут непосредственно переключать реле (к примеру, на елочных гирляндах).

Микроконтроллеры, как правило, не работает в одиночку, а запаивается в схему, где, кроме него, подключаются экраны, клавиатурные входы, различные датчики и т.д.

Софт для микроконтроллеров может привлечь внимание тех, кто обожает «гоняться за битами», так как обычно память в микроконтроллерах составляет от 2 до 128 Кб. Если меньше, то писать приходится на ассемблере или Форте, если есть возможность, то используют специальные версии Бейсика, Паскаля, но в основном – Си. Прежде чем окончательно запрограммировать микроконтроллер, его тестируют в эмуляторах – программных или аппаратных.

Тут может возникнуть вопрос: микропроцессор и микроконтроллер это просто разное название одного и того же устройства, или это все-таки разные вещи?

Микропроцессор это центральное устройство любой ЭВМ, выполненный по интегральной технологии. Само название говорит о том, что именно в нем происходят вычислительные процессы. Чтобы из него получилась ЭВМ, пусть даже не очень современная и мощная (вспомните любительские конструкции Радио-86 или Синклер), его надо дополнить внешними устройствами. В первую очередь это оперативная память и порты ввода вывода информации.

Микроконтроллер имеет внутри себя процессор, оперативную память, память программ, а кроме этого целый набор периферийных устройств, которые превращают процессор в полнофункциональную ЭВМ. По старой терминологии советских времен подобные устройства назывались Однокристальными Микро ЭВМ. Но советская вычислительная техника, как известно, зашла в тупик, а вместе с ней и ОМЭВМ.

Зарубежная же вычислительная техника на месте не стояла, поэтому ОМЭВМ стали называться контроллерами (от англ. Control – управлять, управление). И в самом деле, контроллеры оказались весьма пригодны для управления различной техникой, даже не очень сложной.

 

 

1.2 Датчик угла поворота

Датчик угла поворота (сокр. ДУП) — устройство, предназначенное для преобразования угла поворота вращающегося объекта (вала) в электрические сигналы, позволяющие определить угол его поворота. Датчики угла поворота имеют множество применений. Они широко применяются в промышленности (в частности в сервоприводах), в роботостроении, в автомобилестроении (например, для определения угла поворота рулевого колеса), в компьютерной технике (для определения угла поворота колеса компьютерной мыши) и т. п.

Энкодер ‑ это так называемый датчик угла поворота, то есть, устройство, которое предназначено чтобы преобразовать угол поворота вала (измеряемого объекта) в электрические импульсы, по которым можно определить: угол поворота, скорость вращения, направление вращения, и текущее положение относительно начальной точки работы.

Датчики угла поворота (далее энкодеры) нашли широкое применение в различных механизмах, в которых необходимо точно знать текущее положение. Такими механизмами могут быть: промышленные манипуляторы, сервоприводы и т.д.

Энкодеры применяются в самых различных областях промышленности: электродвигатели, подъемные краны, лифты и общая автоматизация.

Характеризуются производителем как "Универсальные" и "стандартные" с высокой производительностью, соответствуют европейским промышленным стандартам.

Имеют различные виды интерфейсов TTL, HTL и RS-422, степень защиты IP66, диаметр 58мм, радиальная нагрузка на вал - 60Н, осевая нагрузка вала - 50Н, рабочая температура -40...+1000C.

Применяются в области лесозаготовительного оборудования, в промышленных мойках с высоким давлением и т.д.

Выполнены из прочного и чрезвычайно надежного материала, предназначены для установки в местах с ограниченным пространством, диаметр - 30мм. Имеют различные виды интерфейсов: TTL, HTL и RS-422.

Высокий уровень защиты IP67, благодаря этому датчики выдерживают сильные вибрации и удары, что гарантирует более длительное использование датчика (особенно энкодер с повышенной прочностью).

 

 

Анализ существующих аналогов

Рисунок 5 – Схема видов датчиков угла поворота

ДУПы подразделяются: по способу выдачи информации на накапливающие (инкрементальные) и абсолютные (позиционные); по принципу действия на оптические, резистивные, магнитные, индуктивные, механические; по допустимому углу поворота вала на ДУПы с ограниченным диапазоном работы и ДУПы с неограниченным диапазоном работы.

 

 

 

Инкрементальный энкодер

Рисунок 6 - Инкрементальный энкодер

По своей сути инкрементальный энкодер ‑ это счетчик импульсов, которые возникают при вращении вала. Устанавливают энкодер непосредственно на вал, или соединяют их через гибкую переходную муфту.

Основным преимуществом инкрементальных энкодеров является их простота, надежность и относительно низкая стоимость.

Механические датчики не используются в условиях тяжелой работы в промышленности, так как они легко подвержены износу и недолговечны, их применение возможно лишь для некритичных условий (микроволновые печи, регулятор громкости в музыкальном центре и так далее).

Внутри энкодера расположен диск с рисками, где с одной стороны располагается источник света, а с другой - фотоприёмник. При вращении диска изменяется количество света, проходящего через риски диска на фотоприемник, далее сигнал преобразуется и передается на дискретный выход. Необходимо заметить, что выходной сигнал состоит из двух каналов, в которых импульсы имеют сдвиг на 90 градусов относительно друг друга, что позволяет нам определять направление вращения вала. Количество импульсов может быть от нескольких импульсов до десятков тысяч импульсов на один оборот ‑ так называемое «разрешение энкодера». Например, если диск будет иметь 2000 рисок на оборот, то за 1000 импульсов вал повернулся на 180 градусов.

Рисунок 7 - Диаграмма импульсов энкодера смещенных на 90 градусов.

Чтобы привязать отсчет положения относительно начала координат, датчики так же имеют референтную метку (указатель нулевой отметки/импульс, который отвечает за полный оборот). То есть, при каждом обороте вала, на выходе будет еще один импульс начальной (нулевой) позиции. Этот выход обычно используется для сброса внешнего счетчика, который отвечает за текущее положение.

Инкрементальные - это энкодеры, которые механическое вращение вала генерируют последовательный импульсный цифровой код, содержащий информацию относительно угла поворота объекта. Если вал останавливается, то останавливается и передача импульсов. Основным рабочим параметром датчика является количество импульсов за один оборот. Для вычисления угловой скорости объекта процессор в тахометре выполняет дифференцирование количества импульсов во времени, таким образом показывая сразу величину скорости, то есть число оборотов в минуту. Выходной сигнал имеет два канала, что позволяет определять направление вращения. Имеется также цифровой выход нулевой метки, который позволяет всегда рассчитать абсолютное положение вала.

Инкрементальный (пошаговый, импульсный) энкодер предназначен для указания направления движения и/или углового перемещения механизма. Инкрементальный энкодер периодически формирует импульсы, соответствующие углу вращения вала. Этот тип энкодеров, в отличие от абсолютных, не формирует выходные импульсы, когда его вал находится в покое. Инкрементальный энкодер связан со счетным устройством, это необходимо для подсчета импульсов и преобразования их в меру перемещения вала.

 

Рисунок 8 - Принцип действия инкрементального энкодера

 

 

Абсолютный энкодер

Рисунок 9 - Абсолютный энкодер

Абсолютный энкодер по своему исполнению является оптическим. В первую очередь они разделяются на однооборотный, в котором текущая координата определяется в рамках одного оборота, и многооборотные.

Абсолютный энкодер можно отнести к отдельному типу энкодеров, отличительной особенностью которых является уникальный код, сформированный для каждой позиции вала. Так же разница от инкрементального энкодера: в данном датчике не нужен счетчик импульсов, потому что мы всегда знаем угол поворота. Выходной сигнал абсолютного энкодера формируется как во время покоя, так и во время вращения вала. Внутренней отличительной особенностью является диск с несколькими концентрическими дорожками, каждой из которых получается уникальный двоичный код для определенной позиции вала. Абсолютный энкодер при потере питания не теряет своего значения, что говорит о том, что нам не нужно возвращение в начальную позицию. Сигнал абсолютного энкодера устойчив к помехам, что говорит о том, что для него не требуется точная установка вала. Данный тип датчиков хорошо устойчив к вибрациям.

Рисунок 10 - Диск абсолютного энкодера с несколькими дорожками

Оптический энкодер состоит из следующих компонентов: источника света, диска с метками, фототранзисторной сборки и схемы обработки сигнала. Диск пошагового энкодера подразделен на точно позиционированные отметки. Количество отметок определяет количество импульсов за один оборот. К примеру, если диск поделен на 1000 меток, тогда за 250 импульсов вал должен повернуться на 90 градусов.

Для механического соединения вала датчика с внешним механизмом желательно использовать муфту гибкого типа, которая предназначена для компенсации возможного биения валов, как в радиальном, так и в осевом направлении. Это позволяет резко снизить вероятность преждевременного износа подшипников вала датчика и в последствии не приведёт к разрушению нанесённых на диск меток.

Наиболее распространёнными выходными сигналами являются: параллельный код, код Грея, интерфейсы Profibus-DP, LWL, DeviceNet, SSI, CANopen, через которые также можно осуществить программирование датчиков.

Магнитный энкодер

Магнитный энкодер улавливает полюса вращающегося магнитного элемента, который находится вблизи чувствительного элемента, преобразуя эти влияния в соответствующий цифровой код.

Энкодеры, установленные на валу электродвигателя, эффективно обеспечивают управление точным позиционированием. Такие энкодеры обычно изготавливаются в варианте «отверстие» и важными элементами их конструкции являются специальные муфты, позволяющие компенсировать люфты вала двигателя.

Магнитные и электромагнитные энкодеры, соответственно, не подвержены износу и лишены недостатков энкодеров механических.

Позиционирование в вышеуказанных условиях наиболее эффективно обеспечивает магнитный энкодер, в котором преобразование углового перемещения вала в электронный сигнал реализуется бесконтактно на основе эффекта Холла, не связано с вращением оптического прерывателя внутри датчика, и допускает обработку сигналов на скоростях до 60000 об/мин.

Рисунок 11 - Принцип действия магнитного энкодера

В магнитном энкодере высокоскоростное вращение внешнего вала, на котором закреплен цилиндрический постоянный магнит, воспринимается датчиком Холла, совмещенным на одном полупроводниковом кристалле с контроллером обработки сигналов.

 

Бесконтактные датчики угла поворота.

 

Данные емкостные датчики угла поворота с интегрированным измерительным усилителем питаются постоянным напряжением от источника питания и имеют на выходе сигнал по постоянному напряжению, пропорциональный углу поворота вала. Вал может поворачиваться по, или против часовой стрелки с допустимой угловой скоростью до 18 000 о/сек (опция).

В датчиках угла поворота применен дифференциальный поворотный конденсатор для преобразования угла в электрическое напряжение. В его состав входит микроэлектроника задающего генератора, демодулятора и усилителя. Выходной сигнал можно использовать непосредственно или подавать его на оборудование управления процессами. Подача питания и передача измерительных сигналов в пределах чувствительного элемента осуществляется бесконтактным способом. Поэтому, данные датчики угла поворота не требуют обслуживания. Точные роликовые подшипники обеспечивают данным датчикам угла очень большой ресурс.
Функционально значимые части датчиков изготовлены из материала без остаточных деформаций и защищены от коррозии.

В прецизионных датчиках угла поворота серии 88600 сочетается точность дорогих оптических угловых кодирующих устройств с высокой разрешающей способностью и аналоговый выход, а также отсутствуют ограничения, присущие потенциометрическим датчикам угла поворота.

Типичные области применения:

- обратная связь по положению в следящих системах

- детекторы нулевого положения

- маятниковые весовые системы

- определение положения при нарезании резьбы

- измерение углов кручения

- угловые приводы

- оптические угловые измерения

- регуляторы направляющих шкивов

 

Раздел 2 Разработка устройства

2.1 Описание элементной базы

 

Рисунок 12 - Функциональная схема устройства

Микроконтроллер ‑ Atmega48

Семейство микроконтроллеров ATMegaX8 наиболее оптимально по соотношению цена/функциональность. В семейство входят три микроконтроллера ATMega48, ATMega88, ATMega168. Все микроконтроллеры семейства идентичны, за исключением объема памяти. Соответственно 4/8/16кбайт Flash, 256/512/512байт EEPROM, 0.5/1/1кбайт SRAM. Микроконтроллер выпускается в двух вариантах ‑ обычном (ATMega48/88/168) и с пониженным питанием (ATMega48 V/ 88 V /168 V). За пониженное питание приходится платить понижением тактовой частоты микроконтроллера (более медленная работа). Семейство ATMega48/88/168 улучшенный вариант ATMega8 и совместимо с ним по выводам.

 

 

Рисунок 13 - Внешний вид микроконтроллера Atmega48

Общие характеристики:

-131 инструкций оптимизированных для программирования на языках высокого уровня;

- 32 регистра общего назначения;

- почти каждая инструкция выполняется за 1 такт генератора, за счет чего быстродействие достигает 20 MIPS (20 миллионов операций за секунду);

- 4/8/16 килобайт флеш-памяти для программ. Флеш-память может программироваться прямо с контроллера (сама себя);

- 256/512/512 байт EEPROM (энергонезависимая память);

- 512/1К/1К байт SRAM (оперативная память).

Периферийные элементы микроконтроллера:

- два 8 битных таймера/счетчика;

- один 16 битный таймер/счетчик (с захватом);

- таймер реального времени (часы)

- шесть ШИМ каналов;

- 6/8 канальный 10ти битный АЦП

- аналоговый компаратор;

- SPI последовательный интерфейс

- I2C интерфейс

- USART (это компьютерный COM RS232, только с другими уровнями).

- Watchdog таймер, внешние прерывания на всех ножках.

 

Особые характеристики:

- внутрисхемная отладка по одному проводу debugWIRE;

- программирование по последовательному SPI интерфейсу;

- различные источники прерывания как внешние, так и внутренние, 5 режимов «Сна», детектор понижения питания, встроенный задающий генератор.

Рисунок 14 - Описание ножек микроконтроллера Atmega48

Питание, частота:

1.8 ‑ 5.5В (для ATMega48V/88V/168V) до 10МГц
2.7 ‑ 5.5В (для ATMega48/88/168) до 20МГц

В рабочем режиме потребляет 250 мкА при питании 1.8 В и частоте задающего генератора 1МГц. В режиме энергосбережения Power-down кушает меньше 0.1мкА при 1.8В

Программирование:

Для микроконтроллера наиболее удобен режим программирования по последовательному SPI интерфейсу. Для реализации этого режима необходимо подключить микроконтроллер к программатору по SPI интерфейсу (MOSI, MISO, SCK, RESET, GRD), запитать микроконтроллер номинальным напряжением. Микроконтроллер может программироваться прямо в рабочей схеме (внутрисхемное программирование) но при этом должно соблюдаться условие ‑ линиям SPI интерфейса при программировании не должно ничего мешать (большие емкости, маленькие сопротивления относительно общего провода и т.д.). Более подробно почитать про внутрисхемное программирование и программаторы.

Семейство ATMega48/88/168 было обновлено (буковка А в конце). В результате обновления семейство получило еще один микроконтроллер ATMega328 с увеличением всех видов памяти (32кбайт Flash, 1кбайт EEPROM, 2кбайт SRAM). Также семейство перешло на новую технологию Atmel picoPower, а значит уменьшилось потребление энергии как в штатном режиме, так и в режимах энергосбережения, убрано разделение микроконтроллеров на обычное и низковольтное питание (теперь все микроконтроллеры можно запитывать от 1.8 до 5.5В, при этом лишь необходимо соблюдать ограничения по частоте от 4МГц (для 1.8В) до 20Мгц)

Дисплей служит для вывода информации и количества оборотов замеренных датчиком угла поворота.

Датчик угла поворота

Всего датчиков в устройстве установлено 3, так как измерение координат происходит по 3 осям X, Y, Z.

При переключении тумблеров SW датчики угла поворота начинают вращения в определенную сторону и происходит подсчет количества оборотов, то есть вычисление перемещения фрезы по детали.

Датчики замеряющие по осям X и Y подключены через один тумблер, поэтому отсчет координат их происходит одновременно. Подсчет координат происходит сразу же после переключения тумблера в открытое положение, но при переключении в закрытое состояние тумблера остановка датчиков происходит постепенно, то есть подсчет координат продолжает до тех пор пока вал датчика не остановится полностью.

 

2.2 Принцип работы устройства

 

Алгоритм работы устройства

Алгоритм работы устройства начинается с подачи питания на микроконтроллер, после который запускает всю остальную цепочку необходим устройств для работы. При переключение реле SW-1, SW-3 в открытое положение ДУП начинает обороты по часовой стрелке, а SW-2, SW- 4 против часовой стрелки. Вал датчика угла производит обороты,тем самым отсчитывая передвижения фрезы по детали, Во время отсчета ДУП передает всю информацию на микроконтроллер, которые обрабатывает ее и выводит на экран LCD-дисплея. Реле переводят закрытое положение и на этом работ устройства останавливается.

Принцип работы датчика угла поворота

Для квадратуры выхода энкодера используются два выходных канала, для того чтобы определить - вращается вал по часовой стрелке или против часовой стрелки, основанное на сдвиге фазы 90°±0°, допуск ±45° - приемлемый для спецификации сдвига фазы. Энкодер с единственным выходом (A) более известен как тахометр.

Рисунок 15 - Схема определения вращения вала датчика

 

 

Максимальная частота ответа

Максимальная частота ответа является частотой, при которой вращающийся энкодер может дать электрический ответ. Такая частота имеет отношение к количеству выходных импульсов, на которые энкодер реагирует в секунду. Следовательно, энкодер пошагового типа должен удовлетворить следующее отношение:
(rpm/60) x (разрешение) ≤ максимальной частоты ответа.

Указатель нулевой отметки / импульс полного оборота (выход N)

В энкодере, имеющем этот выход, импульс на этом выходе появляется в каждом обороте вала. Функция показателя нуля может использоваться для сброса внешне связанного счетчика или для регистрации начальной (нулевой) позиции.

Разрешение

- это количество выходных импульсов за вращение вала.

Соединительный вал

Рисунок 16 - Схема соединительного вала

Для механического соединения вала датчика с внешним механизмом следует использовать специальный соединитель (сцепление) гибкого типа, который предназначен для компенсации возможного биения валов, как в радиальном, так и в осевом направлении. Это позволяет резко снизить вероятность преждевременного износа подшипников вала датчика. Уже незначительный, возникший в осевом направлении вала, люфт может привести к полному электрическому отказу энкодера. Это связано с тем, что для достижения высокого разрешения, оптический диск и считывающая матрица располагаются в непосредственной близости друг от друга и минимальное осевое биение вала может привести к их механическому контакту, что в последствии приведет к разрушению нанесенных на диск меток.

2.3 Конструкторские расчеты

2.3.1 Расчет потребляемой мощности

Таблица 1 ‑ Потребляемая мощность элементов схемы

Наименование элементов Тип Кол-во (шт) Мощность P0 (Вт) Общая мощность P0*n (Вт)
Микросхемы Atmega48   0,005 0,005
Датчик угла поворота ВЕ178А5В   0,5 1,5
1,55

 

Pобщ =1,5+0.005 = 1,55 Вт

Вывод: Общая потребляемая мощность устройства составляет 1,55 Вт.

2.3.2 Расчет надежности

Таблица 2 ‑ Интенсивность отказов элементов схемы

Наименование элемента Тип Констр-я Характе- ристика Обозначение по схеме Кол-во (шт) Интен- сивность отказов λ0 Интен- сивность отказов λ0*n
Микросхемы Atmega48 Цифровой U1   0,1*10-6 0,1*10-6
Кварцевый резонатор   20MHz X1   0,01*10-6 0,04*10-6
Кнопки         0,1*10-6 0,1*10-6
Реле     SW1-SW4   0,1*10-6 0,4*10-6

Ку = 7

λизд = 0,64 * 10-6

Тср = 1 / λизд = 1/(0,64 * 10-6) = 156250

Тср = 156250/ (64 * 7) = 348 лет

P = 1 - λизд * t = 1 ‑ (0,64 * 10-6 * 24) = 1 ‑ 0,001 = 0,9999

2.4 Система управления микроконтроллера

Ассе́мблер (от англ. assembler — сборщик) — транслятор исходного текста программы, написанной на языке ассемблера, в программу на машинном языке. Как и сам язык, ассемблеры, как правило, специфичны для конкретной архитектуры, операционной системы и варианта синтаксиса языка.

Директива #include предлагает компилятору включить другой исходный файл, имя которого указывается после директивы. Имя файла заключается в двойные кавычки или в <>. Например, следующие две директивы указывают компилятору на необходимость подключить заголовочный файл стандартной библиотеки ввода/вывода:

#include <stdio.h>

#include <avr/io.h>

#include <util/delay.h>

#include <avr/interrupt.h>

#include <stdlib.h>

#include <alloca.h>

#include "asmUART.h"

Директива #define создает макрос, представляющий собой ассоциацию обычного или параметризованного идентификатора со строкой токена. После определения макроса компилятор может подставить строку токена для каждого обнаруженного идентификатора в исходном файле.

#define FOSC 18432000 // Clock Speed

//#define FOSC 20000000

#define BAUD 9600

#define MYUBRR FOSC/16/BAUD-1

Если подключаемый файл указан в <>, то поиск будет происходить в стандартных каталогах, предназначенных для хранения заголовочных файлов. В случае, если подключаемый файл заключен в двойные кавычки, поиск будет происходить в текущем рабочем каталоге. Если файл не найден, то поиск продолжается в стандартных каталогах.

Далее происходит описание переменных выполняющие определенные действия. Такие как установка начальных координат отсчета, доступ передачи информации через определенные порта вывода и так же разрешение портов на ввод информации.

 

unsigned char lcd_buf[32];

long int ax=0,ay=0,az=0;

long int x=0;

char prom_x;

char PROM_OLD_X;

long int y=0;

char prom_y;

char PROM_OLD_Y;

long int z=0;

char prom_z;

char PROM_OLD_Z;

int _index=0;

unsigned char UART_buffer[32];

unsigned char str[10];

unsigned char ch=0;

 

//-------------------------------------------------------------------------

void send_int_Uart(long int *c)// Отправка числа

{

unsigned long int j=0;

if (*c<0)

{

asmUART_transmit(':');

j=-*c;

//asmUART_transmit((j / 10000000) % 10 + 0x30); //Индикация Десятки тысяч

asmUART_transmit('-');

asmUART_transmit((j / 1000000) % 10 + 0x30); //Индикация Десятки тысяч

asmUART_transmit((j / 100000) % 10 + 0x30); //Индикация Десятки тысяч

asmUART_transmit((j / 10000) % 10 + 0x30); //Индикация Десятки тысяч

asmUART_transmit((j / 1000) % 10 + 0x30); //Индикация единиц тысяч

asmUART_transmit((j / 100) % 10 + 0x30); //Сотни

//asmUART_transmit(b =0x2E); //Индикация","

asmUART_transmit((j / 10) % 10 + 0x30); //Десятки

asmUART_transmit(j % 10 + 0x30); //Единицы

}

else

{

asmUART_transmit(':');

asmUART_transmit((*c / 10000000) % 10 + 0x30); //Индикация Десятки тысяч

asmUART_transmit((*c / 1000000) % 10 + 0x30); //Индикация Десятки тысяч

asmUART_transmit((*c / 100000) % 10 + 0x30); //Индикация Десятки тысяч

asmUART_transmit((*c / 10000) % 10 + 0x30); //Индикация Десятки тысяч

asmUART_transmit((*c / 1000) % 10 + 0x30); //Индикация единиц тысяч

asmUART_transmit((*c / 100) % 10 + 0x30); //Сотни

//asmUART_transmit(b =0x2E); //Индикация","

asmUART_transmit((*c / 10) % 10 + 0x30); //Десятки

asmUART_transmit(*c % 10 + 0x30); //Единицы

}

_delay_ms(10);

}

В данном участке кода при нажатие кнопок происходит прерывание по изменению состояния выводов применены следующий циклы(while), которые выполняют такую функцию как прибавление (ax=ax+1) или вычитание (ax=ax-1). Данная функция привязана к кнопкам для устранения небольшого сбоя при остановке станка.

ISR(PCINT0_vect) // вектор прерывания по изменению состояния выводов

{

if ((~PINB)&(0b00000001)) {prom_x=1;}else {prom_x=0;}

if ((~PINB)&(0b00000010)) {prom_x=prom_x+2;}

while (1)

{

if (prom_x==1&&PROM_OLD_X==0) {ax=ax+1;break;}

if (prom_x==3&&PROM_OLD_X==1) {ax=ax+1;break;}

if (prom_x==2&&PROM_OLD_X==3) {ax=ax+1;break;}

if (prom_x==0&&PROM_OLD_X==2) {ax=ax+1;break;}

 

if (prom_x==2&&PROM_OLD_X==0) {ax=ax-1;break;}

if (prom_x==3&&PROM_OLD_X==2) {ax=ax-1;break;}

if (prom_x==1&&PROM_OLD_X==3) {ax=ax-1;break;}

if (prom_x==0&&PROM_OLD_X==1) {ax=ax-1;break;}

break;

}

PROM_OLD_X=prom_x;

}

//*

ISR(PCINT1_vect) // вектор прерывания по изменению состояния выводов

{

if ((~PINC)&(0b00000001)) {prom_y=1;}else {prom_y=0;}

if ((~PINC)&(0b00000010)) {prom_y=prom_y+2;}

while (1)

{

if (prom_y==1&&PROM_OLD_Y==0) {ay=ay+1;break;}

if (prom_y==3&&PROM_OLD_Y==1) {ay=ay+1;break;}

if (prom_y==2&&PROM_OLD_Y==3) {ay=ay+1;break;}

if (prom_y==0&&PROM_OLD_Y==2) {ay=ay+1;break;}

if (prom_y==2&&PROM_OLD_Y==0) {ay=ay-1;break;}

if (prom_y==3&&PROM_OLD_Y==2) {ay=ay-1;break;}

if (prom_y==1&&PROM_OLD_Y==3) {ay=ay-1;break;}

if (prom_y==0&&PROM_OLD_Y==1) {ay=ay-1;break;}

break;

}

PROM_OLD_Y=prom_y;

}

ISR(PCINT2_vect) // вектор прерывания по изменению состояния выводов

{

if ((~PIND)&(0b01000000)) {prom_z=1;}else {prom_z=0;}

if ((~PIND)&(0b10000000)) {prom_z=prom_z+2;}

while (1)

{

if (prom_z==1&&PROM_OLD_Z==0) {az=az+1;break;}

if (prom_z==3&&PROM_OLD_Z==1) {az=az+1;break;}

if (prom_z==2&&PROM_OLD_Z==3) {az=az+1;break;}

if (prom_z==0&&PROM_OLD_Z==2) {az=az+1;break;}

 

if (prom_z==2&&PROM_OLD_Z==0) {az=az-1;break;}

if (prom_z==3&&PROM_OLD_Z==2) {az=az-1;break;}

if (prom_z==1&&PROM_OLD_Z==3) {az=az-1;break;}

if (prom_z==0&&PROM_OLD_Z==1) {az=az-1;break;}

break;

}

PROM_OLD_Z=prom_z;

}

 

ISR(USART_RX_vect) // Вектор прерывании

{

ch=asmUART_rec();

if (_index>31) _index=0;

if (ch=='%') _index=0; else

{

if (ch=='Q')

{

sscanf((char*)UART_buffer,":%ld:%ld:%ld",&ax,&ay,&az);

ax=ax<<2;

ay=ay<<2;

az=az<<2;

_index=0;

UART_buffer[_index]='\n';

}

else

{

UART_buffer[_index]=ch;

_index++;

UART_buffer[_index]='\n';

}

}

}

 

 

//*/

//Функции передать строку в ОЗУ

//***************************************************

void transmitString(unsigned char*string)

{

while (*string)

asmUART_transmit(*string++);

}

 

int main(void)

{

DDRD = 0x3E; // все выводы порта D сконфигурировать как выходы

PORTD= 0xf0; // обнуляем состояние регистра

DDRB = 0x04; // все выводы порта B сконфигурировать как входы

PORTB = 0x03; // установить "1" на выводе порта PB0, включаем подтягивающие рез



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2017-06-30 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: