CISC-архитектура
|
RISC-архитектура
|
Многобайтовые
команды
|
Однобайтовые
команды
|
Малое
количество регистров
|
Большой
количество регистров
|
Сложные команды
|
Простые команды
|
Одна или менее
команд за один цикл процессора
|
Несколько
команд за один цикл процессора
|
Традиционно
одно исполнительное устройство
|
Несколько
исполнительных устройств
|
При реализации микропроцессоров традиционно используется два
под-хода к построению архитектуры:
архитектура фон Неймана;
гарвардская архитектура.
В целях достижения максимальной производительности и
параллелизма у AVR-микроконтроллеров используется Гарвардская архитектура с
раздельными памятью и шинами программ и данных. В соответствии с которой
разделены не только адресные пространства памяти программ и памяти данных, но и
шины до-ступа к ним. Каждая из областей памяти данных (оперативная и постоянная
па-мять) также расположена в своем адрес-ном пространстве. Эта особенности
определили области применения гарвардской архитектуры, где требуется обеспечить
высокую надёжность работы аппаратуры. Структурная схема гарвардской архитектуры
представлена на рисунке 2.7.
Рисунок 2.7 - Структурная схема гарвардской архитектуры
Команды в памяти программ выполняются с одноуровневой
конвейеризацией. В процессе выполнения одной инструкции следующая
предварительно считывается из памяти программ. Данная концепция позволяет
выполнять одну инструкцию за один машинный цикл. Память программ представляет
собой внутрисистемно программируемую флэш-память.
Все AVR имеют Flash-память программ, которая может быть
различного размера - от 1 до 256 КБайт. Ее главное достоинство в том, что она
построена на принципе электрической перепрограммируемости, т.е. допускает
многократное стирание и запись информации. Программа заносится во Flash-память
AVR как с помощью обычного программатора, так и с помощью SPI-интерфейса, в том
числе непосредственно на собранной плате. Возможностью внутрисхемного
программирования (функция ISP) через коммуникационный интерфейс SPI обладают
все микроконтроллеры AVR.
Все микроконтроллеры семейства Mega имеют возможность
самопрограммирования, т.е. самостоятельного изменения содержимого своей памяти
программ. Эта особенность позволяет создавать на их основе очень гибкие
системы, алгоритм работы которых будет меняться самим микроконтроллером в
зависимости от каких-либо внутренних условий или внешних событий.
Гарантированное число циклов перезаписи Flash-памяти у
микроконтроллеров AVR второго поколения составляет не менее 10 тыс. циклов при
типовом значении 100 тыс. циклов. (В официальной технической документации Atmel
Corp. указывается значение 10 тыс. циклов.)
Память данных разделена на три части: регистровая память,
оперативная память и энергонезависимая память.
Регистровая память включает 32 регистра общего назначения,
объединенных в файл, и служебные регистры ввода / вывода. И те и другие
расположены в адресном пространстве ОЗУ, но не являются его частью.
В области регистров ввода / вывода расположены различные
служебные регистры (регистры управления микроконтроллером, регистры состояния и
т.п.), а также регистры управления периферийными устройствами, входящими в
состав микроконтроллера. По сути, управление микроконтроллером заключается в
управлении этими регистрами.
Для долговременного хранения различной информации, которая
может изменяться в процессе функционирования микроконтроллерной системы,
используется энергонезависимая память. Все AVR имеют блок энергонезависимой
электрически перезаписываемой памяти данных. Этот тип памяти, доступный
программе микроконтроллера непосредственно в ходе ее выполнения, удобен для
хранения промежуточных данных, различных констант, коэффициентов, серийных
номеров, ключей и т.п. Энергонезависимая память может быть загружена извне как
через SPI интерфейс, так и с помощью обычного программатора.
Внутренняя оперативная статическая память Static RAM (SRAM)
имеет байтовый формат и используется для оперативного хранения данных.
Число циклов чтения и записи в RAM не ограничено, но при
отключении питающего напряжения вся информация теряется.
Функциональная схема архитектуры AVR представлена на рисунке
2.8
Рисунок 2.8 - Функциональная схема архитектуры AVR
Основой процессорного блока в используемом микроконтроллере
служит арифметико-логическое устройство. По системному тактовому сигналу из
памяти программ в соответствии с содержимым счетчика команд выбирается
очередная команда и выполняется арифметико-логическим устройством.
Высокопроизводительное АЛУ AVR-микроконтроллеров работает в непосредственной
связи со всеми 32 универсальными рабочими регистрами. Регистровый файл с
быстрым доступом содержит 32 8-ми разрядных рабочих регистров общего назначения
с однотактовым циклом доступа. Благодаря этому достигнута однотактность работы
арифметико-логического устройства (АЛУ). При обычной работе АЛУ сначала из
регистрового файла загружается два операнда, затем выполняется операция, а
после результат отправляется обратно в регистровый файл и все это происходит за
один машинный цикл.
АЛУ позволяет выполнить за один машинный цикл операцию между
двумя регистрами или между регистром и константой. АЛУ поддерживает
арифметические и логические операции между регистрами, а также между константой
и регистром. Кроме того, АЛУ поддерживает действия с одним регистром. После
выполнения арифметической операции регистр статуса обновляется для отображения
результата выполнения операции. Также архитектурой ATmega поддерживаются
операции умножения со знаком и без знака и дробным форматом. Во время выбора
команды из памяти программ происходит выполнение предыдущей вы-бранной команды,
что и позволяет достичь быстродействия 1 MIPS на 1 МГц.
Арифметико-логическое устройство подключено к регистрам
общего назначения РОН. Регистров общего назначения всего 32, они имеют байтовый
формат, то есть каждый из них состоит из восьми бит. РОН находятся в начале
адресного пространства оперативной памяти, но физически не являются ее частью.
Поэтому к ним можно обращаться двумя способами (как к регистрам и как к
памяти). Такое решение является особенностью AVR и повышает эффективность
работы и производительность микроконтроллера.
Для считывания аналоговых сигналов наше AVR как и многие
другие имеет на борту аналого-цифровое преобразование последовательного
приближения и компаратор аналоговых сигналов (сравнивающее устройство).
Задействован будет АЦП, поскольку для компаратора требуется большее количество
проводов. Первое о чем нужно сказать - АЦП микроконтроллера умеет измерять
только напряжение. Измеряемый диапазон разбивается на части: ноль минимальное
значение, максимальному значению соответствует напряжение источника опорного
напряжения(ИОН). АЦП в нашем микроконтроллере 10-ти разрядное. Это не-плохой
инструмент для контроля напряжения и выдающее частоту дискретизаций до 15кГц
(15 тысяч выборок в секунду).
Напряжения на входа измеряются относительно опорного
напряжения. Измеренное напряжение преобразуется в 10-битное число и сохраняется
в регистрах ADCL и ADCH. В непрерывном режиме АЦП периодически измеряет входное
напряжение и по окончании преобразования записывает результат в регистры ADCL и
ADCH. В режиме однократного преобразования мы должны инициировать каждое
преобразование самостоятельно.
В МК ATmega328 номер вывода подключенного к входу АЦП
задается с помощью регистра ADMUX - регистр мультиплексора АЦП. На рисунке 2.9
показано какие биты за что отвечают в этом регистре.
Рисунок 2.9 - Назначение битов в регистре ADMUX
Биты 7:6 - REFS1:REFS0. Биты выбора опорного напряжения. Если
мы будем менять эти биты во время преобразования, то изменения вступят в силу
только после текущего преобразования. В качестве опорного напряжения может быть
выбран AVCC (напряжение источника питания), AREF или внутренний 2.56В источник
опорного напряжения.
В данные биты можно записать следующие значения::REFS0
AREF
AVcc, с внешним конденсатором на AREF
Резерв
Внутренний 2.56В источник, с внешним конденсатором на AREF
Бит 5 - ADLAR. Определяет как результат преобразования
запишется в регистры ADCL и ADCH.= 0= 1
Результат виден на рисунке 2.10
Рисунок 2.10 - Регистр ADMUX после ввода данных
Как можно видеть при ADLAR = 0 в ADCH записываются два
старших бита (2 MSB), а остальные в ADCL. А при ADLAR = 1 в ADCH записываются 8
старших битов (8 MSB), а два младших (2 LSB) в ADCL. Это удобно, если для
точности ваших измерений достаточно 8-ми старших бит преобразования.
Сигнал в аналого-цифровой преобразователь подается через
мультиплексор, с одного из шести входов. Выбор входа осуществляется регистром
ADMUX, а точнее его битами MUX3…MUX0. Записанное туда число определяет
выбранный вход. Например, если MUX3..0 = 0100, то подключен вывод ADC4.
Биты 3:0 - MUX3:MUX0 - Биты выбора аналогового канала.
MUX3:0
ADC0
ADC1
ADC2
ADC3
ADC4
0101 ADC5
ADC6
ADC7
Если нужно проверить несколько каналов, то можно изменить
соответствующие биты в регистре ADMUX и канал сменится сразу же по окончании
текущего преобразования. Т.е. в режиме непрерывного преобразования можно лег-ко
произвести сканирование нужных каналов. Просто меняя номер канала во время
преобразования - следующее преобразование начнется на новом канале.
Кроме того, существует несколько служебных комбинаций битов
MUX, использующихся для калибровки.
Например, 1110 подключает к АЦП внутренний источник опорного
напряжения на 1.22 вольта. А если записать в MUX3..0 все единицы, то АЦП будет
изнутри посажено на землю. Это полезно для выявления разных шумов и помех.
Выбор опорного сигнала.
Это максимальное напряжение, которое будет взято за максимум
при измерениях. Опорное напряжение должно быть, как можно стабильней, без помех
и колебаний - от этого кардинальным образом зависит точность работы АЦП.
За-дается он в битах REFS1..0 регистра ADMUX.
По умолчанию там стоит REFS1..0 = 00 - внешний ИОН,
подключенный к входу AREF. Это может быть напряжение со специальной микросхемы
опорного напряжения, или же со стабилитрона какого, если нужно замерять
небольшое напряжение, заметно меньшее чем напряжение питания, скажем от 0 до 1
вольт, то чтобы было точнее, и чтобы оно не затерялось на фоне пятивольтного
питания, то на AREF мы заводим опорное напряжение в 1 вольт...0 = 01 просто
берется напряжение питания. Почти у всех МК с АЦП есть вход AVCC - это
напряжение питания для AЦП и порта на который это АЦП повешено. Подавать туда
плюс питания желательно через LC фильтр, чтобы не было искажений...0 = 11 -
внутренний источник опорного напряжения на 2.56 вольт. Честно говоря, качество
этого источника мне сильно не понравилось.
Выбор режима запуска преобразования.
В регистре SFIOR под АЦП отведено аж три бита. ADTS2..0
которые управляют режимами запуска АЦП.
По умолчанию ADTS2..0 = 000 и это значит, что преобразование
идет в непрерывном режиме или по ручному запуску...0 = 001 - запуск АЦП от
аналогового компаратора. Удобно. Например, чтобы не замерять постоянно входную
величину, а запрограммировать компаратор на то, что как только у него вылезет
что-либо выше порога, так тут же захватывать это на АЦП...0 = 010 - запуск от
внешнего прерывания INT0..0 = 011 - по совпадению таймера T0..0 = 100 - по
переполнению таймера Т0..0 = 101 - по совпадению с таймера Т1..0 = 110 - По
переполнению таймера Т1..0 = 111 - По событию «захват» таймера Т1
Естественно у АЦП есть прерывания. В данном случае это
прерывание по окончанию преобразования. Его можно разрешить битом ADIE, можно и
вручную по флагу ADIF (регистр ADCSRA). Флаг ADIF автоматом снимается при уходе
на вектор прерывания по АЦП.
Кстати для того что бы начать работу с АЦП у МК есть такой
регистр, который называется ADCSR. Вот что в нем находится:
-й бит ADPS0 Выбор частоты прерывания;
-й бит ADPS1 Выбор частоты прерывания;
-й бит ADPS2 Выбор частоты прерывания;
-й бит ADIЕ Разрешение прерывания;
-й бит ADIF Флаге прерывания;
-й бит ADFR Выбор работы АЦП. 1-непрерывный 0-по запуску
ADSC;
-й бит ADSC Запуск преобразование 1-старт. После
преобразования сбрасывается в ноль аппаратно;
-й бит ADEN Разрешение работы АЦП 1-да 0-нет.
Данные с АЦП сваливаются в регистровую пару ADCH:ADCL откуда
их можно забрать. Причем тут есть один момент. Регистровая пара 16-ти
разрядная, а АЦП имеет разрядность 10 бит. В итоге, лишь один регистр занят
полностью, а второй занимает лишь оставшиеся два бита. Так вот, выравнивание
может быть как по правому краю - старшие два бита в ADCH, а младшие в ADCL,
либо по левому - старшие биты в ADCH, а два младших бита в ADCL.
[x] [x] [x] [x] [x] [x] [9] [8]: [7] [6] [5] [4] [3] [2] [1]
[0]
или
[9] [8] [7] [6] [5] [4] [3] [2]: [1] [0] [x] [x] [x] [x] [x]
[x]
Это сделано для возможности выборки разрядности
организованной так оригинально.
Разработка
программы
Используемый микроконтроллер, как и все современные
программируется на языке C++, так же возможно использование ассемблерных
вставок в программе.
Итак, для написания любой программы нужна блок-схема, которая
представлена в приложений В на рисунке В.1.
Основа языка программирования это язык C++ с диалектом
Processing/Wiring. Это тот же С/С++, но дополненный рядом простых в
использовании библиотек для решения типичных задач ввода-вывода.
С++ это структурный язык программирования высокого уровня,
что обуславливает структурную технологию программирования. Это означает что в
основе лежит представление программы в виде иерархической структуры блоков и
разработка программы ведётся пошагово, методом «сверху вниз».
Так же программа представляет собой структуру, построенную из
трёх типов базовых конструкций:
последовательное исполнение - однократное выполнение операций
в том порядке, в котором они записаны в тексте программы;
ветвление - однократное выполнение одной из двух или более
операций, в зависимости от выполнения некоторого заданного условия;
цикл - многократное исполнение одной и той же операции до тех
пор, пока выполняется некоторое заданное условие.
Программное обеспечение имеет возможность расширения и
открытый исходный текст. Файлы кода могут быть стандартными без расширения,
файлами С (расширение *.с), файлами С++ (*.срр) или головными файлами (.h).
Назначение программы:
инициализация АЦП и чтение аналоговых сигналов с нескольких
портов;
передача данных в устройство передачи
преобразование в читаемый вид
взаимодействие передачи данных между датчики и модулями
беспроводной связи
В составе программы были использованы:
переменные типа integer;
набор функций Serial, служащий для связи устройства с
компьютером и другими устройствами поддерживающими последовательный интерфейс
обмена данными;
Serial.begin() - Инициирует последовательное соединение и
задает скорость передачи данных в бит/c (бод). Для обмена данными с компьютером
используйте следующие значения: 300, 1200, 2400, 4800, 9600, 14400, 19200,
28800, 38400, 57600 или 115200, в нашем случае стандартные 9600;
функция pinMode - установка режима работы заданного вход /
выхода(pin) как входа или как выхода;
ключевое слово void - используется при объявлении функций,
если функция не возвращает никакого значение при ее вызове (в некоторых языках
программирования такие функции называют процедурами);
функция setup - вызывается, когда стартует программа,
используется для инициализации переменных, определения режимов работы выводов,
запуска используемых библиотек и т.д. Функция setup запускает только один раз,
после каждой подачи питания или сброса платы;
функция Loop - после вызова функции setup, которая
инициализирует и устанавливает первоначальные значения, функция loop делает то,
что означает её название, и крутится в цикле, позволяя программе совершать
вычисления и реагировать на них, используется для активного управления платой.
Немного о взаимодействий модуля с аппаратными и программными
средствами.
Все микроконтроллеры AVR имеют хотя бы один последовательный
порт (UART, иногда называют USART). МК обладает несколькими способами общения с
другими устройствами. Платформа позволяет установить последовательное (Serial
UART TTL) соединение через контакты 0 (RX) и 1 (TX). Установленный на платформе
чип ATmega8U2 транслирует это соединение через USB: на компьютере становится
доступен виртуальный COM-порт. Программная часть включает утилиту, которая
позволяет обмениваться текстовыми сообщениями по этому ка-налу. Отдельная
библиотека позволяет организовать последовательное соединение с использованием
любых других контактов, не ограничиваясь штатными 0-м и 1-м. Важно учитывать,
что использовав функции Serial, нельзя одновременно с этим использовать порты 0
и 1 для других целей.
Теперь можно приступить к инициализаций АЦП.
Приведу кусочек кода, который будет сохранен во встраиваемую
библиотеку среды разработки. Библиотека инициализаций АЦП будет задействована в
программе. Найти этот код можно в приложений Г.
На основе вышеизложенного материала, а так же блок схемы было
написана основная программа. Код представлен в приложений Д.
Таким образом, использование встроенного АЦП дает возможность
беспроблемной синхронизаций датчиков и микроконтроллера. АЦП микроконтроллера
имеет ряд характеристик: разрешающую способность, абсолютную точность,
предельную частоту дискретизации и диапазон входных напряжений, которые
позволяют в полное мере достичь поставленной цели.
2.3
Совместимость оборудования и интерфейсы
Один из наиболее важных шагов, который следует предпринять до
запуска программы на микроконтроллере, состоит в том, чтобы убедиться в их
совместимости с продуктами семейства передатчиков.
Для этого в обоих модулях применяется интерфейс UART
(Universal asyn-chronous receiver/transmitter) или, по-русски, УАПП
(универсальный асинхронный приемопередатчик) - старейший и самый
распространенный на сегодняшний день физический протокол передачи данных.
Почти каждый микроконтроллер имеет на борту универсальный
последовательный интерфейс - UART. AVR тут не исключение и поддерживает этот
протокол в полном объеме полностью аппаратно. По структуре это обычный
асинхронный последовательный протокол, то есть передающая сторона по очереди
выдает в линию 0 и 1, а принимающая отслеживает их и запоминает. Синхронизация
идет по времени - приемник и передатчик заранее договариваются о том на какой
частоте будет идти обмен. Это очень важный момент! Если скорость передатчика и
приемника не будут совпадать, то передачи может не быть вообще, либо будут
считаны не те данные.
Для связи по этой протоколу используются основные рабочие
линий RXD и TXD, или просто RX и TX. Передающая линия - TXD (Transmitted Data),
а порт RXD (Received Data) - принимающая. Эти линии встречаются и у СОМ-порта
задействованные при передаче без аппаратного управления потоком данных. Выход передатчика
TX соединен с входом приемника RX и наоборот как показано на рисунке 2.11.
Рисунок 2.11 - Соединение выводов TX-RX
Что касается скорости работы существуют номинальные скорости
работы: 9600, 28800, 33600, 56000 и т.п. Т.е. если скорость нас 9600 бит в
секунду, то это означает, что передача одного бита будет занимать 1/9600
секунды, а пересылка байта - 11/9600. И такая скорость для байта верна только в
случае, если стоп-бит будет занимать один бит. В случае, если он занимает два
стоп-бита, то передача будет 12/9600. Это связано с тем, что вместе с битами
данных передаются еще специальные биты: старт, стоп и бит четности. Линейка
скоростей СОМ-порта стандартизирована. Как правило, все устройства работают на
трех стандартных скоростях: 9600, 19200, 115200. Но возможны другие варианты,
даже использование нестандартных скоростей или скорости, меняющейся во времени.
Так же по этому интерфейсу микроконтроллер связывается с компьютером, для передачи
данных. Важно учесть, что в наших устройствах этот интерфейс один и подключить
два устройства к одному не получится. Многие реализации UART имеют возможность
автоматически контролировать целостность данных методом контроля битовой
чётности. Когда эта функция включена, последний бит данных в минимальной
посылке («бит чётности») контролируется логикой UART и содержит информацию о
чётности количества единичных бит в этой минимальной посылке.
Но так как UART работает в диапазоне -12..+12 В, а у наших
устройств рабочее напряжение 5 В, то существуют различные готовые
микросхемы-преобразователи созданные специально для таких устройств.
Некоторые UART обладают возможностью посылать и принимать
специальную посылку, называемую Break. Она состоит из непрерывного нулевого
со-стояния линии длительностью заведомо больше минимальной посылки, обычно 1,5
минимальных посылки (для 8N1 это 15 битовых интервалов). Некоторые
коммуникационные протоколы используют это свойство, например протокол LIN
использует Break для обозначения нового кадра.
Был выработан и прижился короткий способ записи параметров
UART, таких как количество бит данных, наличие и тип бита четности, количество
стоп-бит. Выглядит как запись вида цифра-буква-цифра, где:
первая цифра обозначает количество бит данных, например 8;
буква обозначает наличие и тип бита четности. Встречаются N
(No parity) - без бита четности; E (Even parity) - с битом проверки на
четность, O (Odd parity) - с битом проверки на нечетность;
последняя цифра обозначает длительность стоп-бита.
Встречаются значения 1, 1.5 и 2 для длительности стоп-бита в 1, 1.5 и 2 битовых
интервала соответственно.
Например, запись 8-N-1 обозначает что UART настроен на 8 бит
данных без бита четности и один стоповый бит. Для полноты параметров эту запись
снабжают указанием скорости UART, например 9600/8-N-1. Передача 8-ми битных
данных в UART интерфейсе показана на рисунке 2.11.
Рисунок 2.11 - Передача 8-ми битных данных в UART интерфейсе
Логическая схема UART имеет входы-выходы с логическими
уровнями, соответствующими полупроводниковой технологии схемы: КМОП, ТТЛ и т.д.
Такой физический уровень может быть использован в пределах одного устройства,
однако непригоден для коммутируемых длинных соединений по причине низкой защищённости
от электрического разрушения и помехоустойчивости. Для таких случаев были
разработаны специальные физические уровни, такие, как токовая петля, RS-232,
RS-485, LIN и тому подобные.
Специфической разновидностью физического уровня асинхронного
интерфейса является физический уровень IrDA.
Существуют физические уровни UART для сложных сред. В
некотором смысле стандартный компьютерный телефонный модем также можно назвать
специфическим физическим уровнем асинхронного интерфейса. Существуют
специальные микросхемы проводных модемов, сделанных специально как физический
уровень асинхронного интерфейса (то есть протокольно прозрачные). Выпускается
также радиоканальный физический уровень в виде модулей радиоприёмников и
радиопередатчиков.
Логика UART обычно позволяет производить одновременную
передачу и прием. Эта способность часто обозначается сленговым словом дуплекс.
Однако не все физические уровни позволяют одновременно передавать данные в обе
стороны. В таких случаях принято говорить о полудуплексной связи.
Некоторые физические уровни позволяют связывать более двух
UART по принципу «один говорит - несколько слушает». Такие физические уровни
называют сетевыми. Существуют реализации типа общая шина (когда все
приемопередатчики подключены к одному проводу) и кольцо (когда приемники и
передатчики соединяют попарно в замкнутое кольцо). Первый вариант проще и
встречается гораздо чаще. Второй вариант сложнее, но надежнее и быстрее:
гарантируется работоспособность всех узлов (передающий узел услышит эхо своего
сообщения только если оно успешно ретранслировано всеми узлами); любой узел
может начинать передачу в любой момент не заботясь о риске коллизии.
Только в очень редких задачах допустимо слать через UART
прямой поток данных. Как правило, необходимо указывать начало и конец блока
данных; обеспечивать контроль целостности данных и выполнять восстановление
потерянных элементов; управлять потоком данных для предотвращения перегрузки
входного буфера и т.п. Для этих и многих других целей придумывают протоколы
связи - соглашения о специальных наборах данных, которыми обмениваются обе
вычислительные системы для успешного выполнения задачи по установлению связи и
передаче основных данных. Алгоритмы протоколов зависят от задач которые
поставлены перед системой и особенностей физического уровня UART. Алгоритм
протокола обычно реализуются программно, а не аппаратно.
Существует большое количество разнообразных протоколов связи,
пред-назначенных для использования с UART. Наиболее известные:
MODBUS. Семейство протоколов типа «запрос-ответ», популярное
в промышленной автоматике. Ориентированы на управление оборудованием короткими
командами;
AT-команды телефонных модемов. Набор текстовых команд,
позволяющих управлять работой модема при установлении соединения.
PPP - протокол широко использовался при подключениях к
интернету через модем. Позволял выполнять аутентификацию пользователя у
провайдера, шифровать данные;
IrDA - семейство протоколов для оптического беспроводного
физического уровня.
Приём сигнала по UART RS-232 показан на рисунке 2.12.
Рисунок 2.12 - Приём сигнала по UART RS-232
Стандартная посылка занимает 10 бит. Но правило это
распространяется только на стандартные настройки СОМ-порта. В принципе, его
можно перенастроить так, чтобы он даже интерфейс One-Wire понимал. В режиме
простоя, когда по линии ничего не передается, она находится в состоянии
логической единицы, или -12 вольт. Начало передачи обозначают передачей
стартового бита, который всегда равен нулю. Затем идет передача восьми бит
данных. Завершает посылку бит четности и стоповый бит. Бит четности
осуществляет проверку пере-данных данных. Стартовый бит говорит нам, что
пересылка данных завершена. Надо отметить, что STOP-бит может занимать 1, 1.5,
и 2 бита. Не стоит думать, что это дробные биты, это число говорит только о его
длительности. Стоповый бит, как и стартовый, равен нулю.
У AVR есть регистр UDR это UART Data Register (в некоторых
контроллерах он может зваться UDR0 или еще как-нибудь похоже). На самом деле
это два разных регистра, но имеют один адрес. Просто на запись попадает в один
(регистр передатчика), а на чтение берет из другого (регистр приемника). Таким
об-разом достаточно просто пихать данные в этот регистр и они улетят приемнику,
и, наоборот, считывать их оттуда по приходу.
О том, что байт пришел в регистр UDR нам скажет прерывание по
завершению приема, которое вызывается сразу же, как приемник засосет в себя все
биты (обычно 8, но может быть и 9, в зависимости от настройки).
Поскольку передача идет довольно медленно, то бездумно пихать
данные в регистр UDR нельзя - нужно дождаться окончания передачи предыдущего
байта. О том, что UDR пуст и готов к приему нового байта сигнализирует бит
UDRE, он же вызовет аппаратное прерывание по опустошению буфера.
Так что постоянно следить за UART вручную не нужно, все
обслуживание можно повесить на прерывания и он сам будет все делать. Можно в
памяти организовать буфер и туда тупо пихать данные, а на прерывании по
опустошению UDR следить за тем есть ли что в буфере и если есть - отправлять.
А по приему, не тупить, а также, по прерыванию, пихать данные
в ОЗУ, но уже в буфер приема, откуда их считает уже программа.
Настройка UART.
Все настройки приемопередатчика хранятся в регистра
конфигурации. Это UCSRA, UCSRB и UCSRС. А скорость задается в паре UBBRH:UBBRL.
Регистр UCSRA
Тут нам интересны только биты RXC и TXC это флаги завершения
приема и передачи, соответственно. RXC встанет когда непрочитанный байт вылезет
в регистр UDR, а TXC встает когда последний стоп-бит прошел, а новое значение в
UDR не поступило. Т.е. после прохода всех байтов.
Также одновременно с этими флагами вызывается прерывание
(если оно было разрешено). Сбрасываются они аппаратно - принимающий после
чтения из регистра UDR, передающий при переходе на прерывание, либо программно (чтобы
сбросить флаг программно в него надо записать 1)
Биты UDRE сигнализирует о том, что регистр UDR приемника пуст
и в него можно пихать новый байт. Сбрасывается он аппаратно после засылки в UDR
какого либо байта. Также генерируется прерывание «Регистр пуст»
Бит U2X - это бит удвоения скорости при работе в асинхронном
режиме. Его надо учитывать при расчете значения в UBBRH:UBBRL
Регистр UCSRB
Тут в первую очередь это биты RXEN и TXEN - разрешение приема
и передачи. Стоит их сбросить как выводы UART тут же становятся обычными
ножками I/O.
Биты RXCIE, TXCIE, UDRIE разрешают прерывания по завершению
приема, передачи и опустошении буфера передачи UDR.
Регистр UCSRC
Самый прикол тут - это бит селектора URSEL дело в том, что по
неизвестной причине создатели решили сэкономить байт адреса и разместили
регистры UCSRC и UBRRH в одной адресном пространстве. А как же определять ку-да
записать? А по старшему биту! Поясню на примере. Если мы записываем число у
которого седьмой бит равен 1, то оно попадет в UCSRC, а если 0 то UBRRH. Причем
этот бит есть не во всех AVR в новых моделях его нет, а регистры имеют разные
адреса. Так что надо смотреть в руководстве этот момент - есть там бит URSEL
или нет.
Остальные биты задают число стопов, наличие и тип контроля
четности. Если оставить все по дефолту то будет стандартный режим. Надо только
выставить формат посылки. Делается это битами UCSZ0, UCSZ1 и UCSZ2 (этот бит
ту-суется в регистре UCSRB). Для стандартной 8 ми битной посылки туда надо
записать две единички.
Скорость обмена.
Тут все зависит от пары UBBRx
Вычисляется требуемое значение по формуле:
UBBR=XTAL/(16*baudrate) - 1 для
U2X=0=XTAL/(8*baudrate) - 1 для U2X=1
Где:- рабочая тактовая частота контроллера.- требуемая
скорость (я люблю 9600:) - чем медленней тем надежней. 9600 в большинстве
случаев хватает)
Ошибки передачи
К сожалению мир наш не идеален, поэтому возможны ошибки при
приеме. За них отвечают флаги в регистре UCSRA- ошибка кадрирования. Т.е. мы
ждали стоп бит, а пришел 0.- переполнение буфера. То есть данные лезут и лезут,
а из UDR мы их забирать не успеваем.- не совпал контроль четности.
информационно-логическую модель базы данных (рисунок 2.1).
Таким образом, одним из наиболее важных шагов, который
следует предпринять до запуска программы, состоит в том, чтобы убедиться в
совместимости оборудования. Благодаря UART возможно организовать беспроблемную
совместимость всех задействованных устройств.
2.4
Погрешности аналого-цифрового преобразования
Так как максимальное число кодовых комбинаций будет равно 210
= 1024. Следовательно разрешающая способность равна 1/1024 от всей шкалы
допустимых входных напряжений,
Для работы АЦП необходим источник опорного напряжения (ИОН).
Для него опорное напряжение это эталон, по отношению к которому он измеряет
входные сигналы. Микроконтроллеры AVR позволяют в качестве опорного напряжения
использовать напряжение питания, внутренний опорный источник на 2,56 В и
напряжение на выводе AREF (внешний ИОН), а это значит, что входное
напряжение от нуля до Uвх будет линейно разбитно на 210 частей. Минимальный код
равен нулю, соответственно максимальный 210-1 = 1023. Значит шаг измерения
составляет 5/1023=0.0049, т.е. 4.9мВ.
С таким шагом квантования АЦП будет измерять входное
напряжение. Если два ближайших значения сигнала на входе АЦП будут отличаться
между собой на величину < 5 мВ, АЦП воспримет их как одинаковые. На практике
разрешающая способность АЦП ограничена его шумами.
Абсолютная точность АЦП выражается в количестве младших
значащих разрядов (LSB - least significant bit). Для AVR абсолютная погрешность
АЦП = ±2LSB. Т.е. 2*5 мВ = ±10мВ.
У AVR контроллеров довольно хорошая точность и стабильность показаний
внутреннего АЦП, а само преобразование занимает очень мало времени.
Тем не менее АЦП требует калибровки, вот простейшая схема
стабилизатора питания +5В на стабилитроне показанная на рисунке 2.13.
Рисунок 2.13 - Схема стабилизатора питания +5В на
стабилитроне
Работа цифровых узлов внутри и снаружи микроконтроллера
связана с генерацией электромагнитных излучений и шумов, которые могут
негативно сказаться на точность измерения аналогового сигнала. Уровень шумов
можно снизить, придерживаясь следующих рекомендаций
путь аналоговых сигналов должен быть как можно короче,
аналоговые сигналы должны проходить над плоскостью (слоем) с аналоговой землей
(экраном) и далеко от проводников, передающих высокоскоростные цифровые
сигналы;
вывод AVCC необходимо связать с цифровым питанием VCC через
LC-цепь в соответствии с рис. 106.
использовать функцию подавления шумов АЦП (ADC noise
canceler) для уменьшения шумов, внесенных работой ядра ЦПУ.
если какой-либо из выводов АЦП используется как цифровой
выход, то чрезвычайно важно не допустить переключение состояния этого выхода в
процессе преобразования;
использование хорошо изолированных проводов.
Таким образом, использование всех вышеперечисленных
рекомендаций и достаточная разрешающая способность АЦП микроконтроллера
позволяет свести погрешность измерений к допустимым пределам.
Выводы:
1) Использование всех рассмотренных устройств позволяет
достичь поставленной цели и организовать подсистему беспроводной связи ближнего
радиуса действия.
2) Использование встроенного АЦП дает возможность
беспроблемной синхронизаций датчиков и микроконтроллера. АЦП микроконтроллера
имеет ряд характеристик: разрешающую способность, абсолютную точность,
предельную частоту дискретизации и диапазон входных напряжений, которые
позволяют в полное мере достичь поставленной цели.
) Одним из наиболее важных шагов, который следует предпринять
до запуска программы, состоит в том, чтобы убедиться в совместимости
оборудования. Благодаря UART возможно организовать беспроблемную совместимость
всех задействованных устройств.
) Использование всех вышеперечисленных рекомендаций и
достаточная разрешающая способность АЦП микроконтроллера позволяет свести
погрешность измерений к допустимым пределам.
3.1
Руководство наладчику. Инструкция по сборке и настройке устройства
Подготовка к работе
Обязательным условием работы программы является наличие в
системе платформы. Net Framework 4. Платформа. Net Framework - это встроенный
компонент Windows необходимый для выполнения приложения с учётом архитектуры
процессора и операционной системы, для которых оно предназначено..Net Framework 4 можно бесплатно
скачать с официального сайта Microsoft (www.microsoft.com).
Программное средство для построения тарировочных графиков не
требовательно к ресурсам компьютера, поэтому системные требования определяются
требованиями. Net Framework 4:
1) Операционная система: Windows 7, Windows 7 Service Pack 1, Windows
Server 2003 Service Pack 2, Windows Server 2008, Windows Server 2008 R2,
Windows Server 2008 R2 SP1, Windows Vista Service Pack 1, Windows XP Service
Pack 3.
2) Поддерживаемые архитектуры: x86, x64.
3) Процессор: Pentium с тактовой частотой 1
ГГц или выше.
) Оперативная память: 512 МБ или больше.
) Минимальное место на диске (для. Net Framework): 850 МБ для
x86, 2 ГБ для x64.
После установки. Net Framework 4 (если она не была
произведена ранее) можно запустить приложение для построения тарировочных
графиков и приступить к работе.
Настройка платы
При использований в полевых условиях предполагается наличие
уже за-программированного микроконтроллера, однако перед его использованием
наладчику рекомендуется его прошить. Ниже будет описан процесс установки
программного обеспечения, загрузки контроллера и наладки всего устройства.
) Описание процедуры загрузки Для начала скачаем программу
удобную для работы конечному пользователю с устройством на сайте разработчика
#"786436.files/image015.jpg">
Рисунок 3.1 - Раздел Download на сайте
Где находимо последнюю стабильную версию программы скачиваем
и устанавливаем её как показано на рисунке 3.2.
Рисунок 3.2 - Ссылка на последнюю версию программы
Во время установки обязательно поставить галочки во всех
окошках как показано на рисунке 3.3.
Рисунок 3.3 - Параметры установки
По ходу установки будет предложено установить USB драйвер, соглашаемся и
жмем «Установить» как показано на рисунке 3.4.
Рисунок 3.4 - Установка USB драйвера
Запустим программу
Если видим окно запуска как показано на рисунке 3.5 - значит
всё хорошо.
Рисунок 3.5 - Успешный запуск программы
После загрузки видим рабочее окно программы как показано на
рисунке 3.6.
Рисунок 3.6 - Главное окно программы
Теперь подключим плату к компьютеру по USB кабелю как показано на
рисунке 3.7.
Рисунок 3.7 - Подключение платы к компьютеру по USB
На плате загорится светодиод «ON», и начнет мигать
светодиод «Д». Это означает, что на плату подано питание, и микроконтроллер
начал выполнять прошитую в него программу.
Чтобы настроить среду разработки на работу с
микроконтроллером необходимо узнать, какой номер COM-порта присвоил компьютер
плате. Для этого нужно зайти в «Диспетчер устройств» и раскрыть вкладку «Порты
(COM и LPT)» как показано на рисунке 3.8.
Рисунок 3.8 - Номер COM-порта в диспетчере устройств
Это означает, что операционная система распознала нашу плату
как COM-порт, подобрала для неё правильный драйвер и назначила этому COM-порту номер 4. Если мы
подключим к компьютеру другую плату Arduino, то операционная система назначит
ей другой номер.
Теперь нам необходимо сообщить программной среде, что плата,
с которой ей предстоит общаться, находится на COM-порту «COM4».
Для этого переходим в меню «Сервис» → «Последовательный
порт» и выбираем порт «COM4». Теперь программная среда знает - что плата
находится на порту «COM4» как показано на рисунке 3.9. И с ней ей предстоит
общаться.
Рисунок 3.9 - Распознавание программой платы
Также необходимо указать тип платы как показано на рисунке
3.10
Рисунок 3.10 - Тип платы
Среда настроена, плата подключена. Теперь можно переходить к
загрузке программы в микроконтроллер.
Для этого в среде разработки необходимо открыть заранее
написанную программу как показано на рисунках 3.11 и 3.12 соответственно.
Рисунок 3.11 - Запуск проводника
Рисунок 3.12 - Запуск программы
Теперь всё готово для прошивки микроконтроллера. Нажмем на
кнопку загрузить как показано на рисунке 3.13.
Рисунок 3.13 - Прошивка микроконтроллера
После нажатия нужно подождать несколько секунд пока
скомпилированная программа загрузится в микроконтроллер как показано на рисунке
3.14.
Рисунок 3.14 - Загрузка программы в микроконтроллер
В случае успешной загрузки в плате замигают светодиоды RX и TX как показано на рисунке
3.15.
Рисунок 3.15 - Мигание светодиодов как признак успешной
загрузки программы
В строке состояния появится сообщение «Загрузка выполнена» и
размер занимаемой памяти в контроллере как показано на рисунке 3.16.
Рисунок 3.16 - Отчет в консоли об успешной загрузки программы
Примечание. Если в результате загрузки появляется ошибка вида
«avrdude: stk500_get sync(): not in sync: resp = 0x00?» Это значит, что плата
настроена некорректно. Вернитесь к предыдущим пунктам, чтобы убедиться в том,
что устройство было распознано операционной системой и в программной среде
установлены правильные настройки для COM-порта и модели платы.
На этом настройка контроллера закончена.
Настройка беспроводного модуля APC220
Для обеспечения беспроводной передачи телеметрии с
автономного контрольного пункта, в Китае приобретены два модуля APC220 за $35
на aliexpress.com. Данные радиомодули
достаточно распространены, прежде всего, из-за своей низкой цены.
Настройка модулей.
) Перед подключением модулей к контроллеру и пульту
управления необходимо настроить модули.
Для этого, в первую очередь, нужно скачать, распаковать и
установить драйвер под названием CP210x_VCP.
Драйвер можно найти на официальном сайте производителя Shenzhen
Appcon Technologies CO #"786436.files/image031.jpg">
Рисунок 3.17 - Сайт производителя APC220
В это разделе нажимаем на подраздел Driver и скачиваем USB to UART Driver как показано на рисунке
3.18.
Рисунок 3.18 - Загрузка драйвера
) Для настройки модулей их необходимо подключить переходник USB-UART к компьютеру через USB порт, по схеме
показанной на рисунке 3.19.
Рисунок 3.19 - Схема подключения ПК к модулю через мост
Должно получиться так, как показано на рисунке 3.20.
Рисунок 3.20 - Модуль APC22 подключенный через
мост к ноутбуку
Поскольку драйвер уже установлен, то модуль APC220 сразу
появится в диспетчере устройств как показано на рисунке 3.21.
Рисунок 3.21 - Идентификация модуля в диспетчере устройств
Предупреждение! Модуль должен иметь СОМ с 1 по 8, иначе
возможна не корректная работа модуля.
) Далее рекомендуется настроить модули с помощью специальной
программы RFMagic. Программу можно скачать практически с любого интернет
магазина где имеется APC220. Она нам нужна для того, что бы синхронизировать
модули для работы друг с другом.
) Запускаем rfmagic, что с первого раза может не получиться -
появляется ошибка как показано на рисунке 3.22.
Рисунок 3.22 - Ошибка запуска программы rfmagic
Жмём окей. Появляется программа и видим что удачно
определилось устройство как показано на рисунке 3.23.
Рисунок 3.23 - Устройство успешно определилось
Далее выставляем настройки на те, которые показаны на рисунке
и нажимаем Write W как показано на рисунке 3.24.
Рисунок 3.24 - Устройство успешно прошилось.
Если мы видим read succeed, то прошилось.
Остановимся поподробнее на выставляемых параметрах:
RF frequency: оба модуля должны иметь одинаковую частоту в
нашем случае 434 Mhz;
RF TRx rate: настройки связи с контроллером по умолчанию на
скорости 9600 б/с;
RF Power: данный параметр определяет мощность
передатчика, оставляется по умолчанию на максимальном значений;
NET ID, NODE ID: данные пункты могут иметь любые значения, но
для обоих устройств они должны быть одинаковыми, иначе устройства не найдут
друг друга.
Подключение APC220 к плате
Следующим пунктом становления устройства на ноги будет
соединение платы контроллера с устройством беспроводной передачи данных.
Сделать это совсем несложно, поскольку для этого требуется всего лишь 4
контакта между ними.
Это VCC(питание), GND(земля), TXD (передающая линия), RXD (принимающая линия).
Эти линии задействованы при передаче без аппаратного
управления потоком данных. На рисунке показаны схемы соединения вывода
передатчика TX соединенного с выводом приемника RX и наоборот как показано на
рисунке 3.25.
Рисунок 3.25 - Схема соединения платы с модулем APC220
Выглядеть это должно так, как показано на рисунке 3.26.
Рисунок 3.26 - Подключенные по схеме плата и модуль APC220
Питание можно подавать как через порт USB так и через отдельный
порт для питания как видно на рисунке 3.27.
Рисунок 3.27 - Выводы для питания
Устройство передатчик полностью готово к использованию.
Теперь к нему необходимо подключить аналоговые датчики к
портам А0-А5.
Таким образом, используя данное руководство наладчик сможет
корректно подготовить устройство к выполнению поставленных задач и передать его
оператору.
3.2
Руководство оператору. Использование собранного устройства
Единственное, что нужно сделать оператору, это подключить
устройство приема данных к ноутбуку и начать считывать данные.
Что бы его подключить требуется минимум усилий, нужно всего
лишь подключить заранее собранное устройство как показано на рисунке 3.28.
Рисунок 3.28 - Заранее собранное устройство с модулем APC220
В рамках программы это устройство автоматически становится
приемником. Также необходимо проверить в диспетчере задач какой COM-порт был
присвоен этому устройству и для корректно номер порта лежал в диапазоне 1-8.
Теперь запускаем знакомую уже нам программную среду и
выбираем последовательный порт как показано на рисунке 3.29.
Рисунок 3.29 - Выбор порта
Далее открываем монитор порта как показано на рисунке 3.30.
Рисунок 3.30. Открываем монитор порта
Считываем данные как показано на рисунке 3.31.
Рисунок 3.31 - Показания с 4-х датчиков в диапазоне 0..1023
В рамках руководства наладчику был описан полный процесс
сборки устройства с коробки, а также настройка его для передачи в пользование
оператору.
Таким образом, в руководстве оператору всё намного проще, так
как предполагается использование уже собранного устройства. Единственное, что
нужно сделать оператору, это подключить устройство приема данных к ноутбуку и
начать считывать данные.
Выводы:
) Используя данное руководство наладчик сможет корректно
подготовить устройство к выполнению поставленных задач и передать его
оператору.
2) В руководстве оператору всё намного проще, так
как предполагается использование уже собранного устройства. Единственное, что
нужно сделать оператору, это подключить устройство приема данных к ноутбуку и
начать считывать данные.
4.
Экономическая часть
Широкое внедрение средств вычислительной техники во многие
сферы человеческой деятельности и повышение требований к качеству продукции
остро поставили вопрос по определению экономического эффекта от разработки и
внедрения новых технологий в тех или иных областях науки и производственной
деятельности.
В данном разделе дипломного проекта произведен расчёт
экономического эффекта от разработки и внедрения системы беспроводной передачи
данных.
4.1
Расчет стоимости проекта
Расчет
затрат на покупные изделия и полуфабрикаты
При изготовлении были использованы готовые изделия и
полуфабрикаты стоимость которых определяется по формуле (4.1):
, (4.1)
где: n - количество наименований комплектующих
изделий;
Ni - норма расхода i-го
комплектующего на единицу продукции, ед.;
Цi - стоимость за единицу i-го комплектующего, руб./ед.
Подставив числовые значения в формулу (4.1) результаты сведем в
таблицу 4.1.
Таблица 4.1 - Затраты на
покупные изделия
Наименование
товара
|
Цена, руб.
|
Количество
|
Сумма, руб.
|
Ноутбук Samsung R539
|
12500
|
1
|
12500
|
Микроконтроллер LG 60PK550
|
490
|
2
|
980
|
Радиомодуль APC220
|
1000
|
1
|
1000
|
Всего
|
14480
|
Расчет затрат на покупные материалы
Затраты на материалы определяются по формуле (4.2):
, (4.2)
где: n - количество наименований комплектующих
изделий;
Мi - норма расхода i-го материала на изготовление и проектирование изделия;
Цi - стоимость за единицу i-го, руб./ед.
Результат расчета сведем в таблицу 4.2.
Наименование
материала
|
Ед.изм.
|
Цена, руб
|
Количество
|
Сумма, руб
|
DIN-Рейка 35 мм
|
м
|
74,00
|
0,5
|
37,00
|
Ethernet
10/100Base-T
|
м
|
5,00
|
1
|
5,00
|
SD карта 4 ГБ
|
шт
|
150,00
|
1
|
150,00
|
Итого:
|
192,00
|
Расчет затрат на заработную плату разработчика проекта
Заработная плата разработчика рассчитывается по формуле (4.3)
ЗЗП = ЗЗПО + ЗЗПД (4.3)
где: ЗЗПО - основная заработная плата
разработчика;
ЗЗПД - дополнительная заработная плата
разработчика.
Основная заработная плата разработчика рассчитывается по
формуле (4.4):
, (4.4)
где: ТРПР - трудоемкость разработки проекта
(определяется с помощью фотографии рабочего дня), ч.; ТРПР=280 ч.;
ДРМ - количество рабочих дней в месяце; ДРМ=22
дн.;
ОМ - месячный оклад разработчика, р.; ОМ =
0 руб.;
tр - длительность рабочего дня, ч; tр = 8 ч.
Подставив значения в формулу (4.4), получим:
Ззпо=(280∙0)/(22∙8) =0 руб.
Дополнительная заработная плата разработчика рассчитывается
по формуле (4.5):
Ззпд=Ззпо+Нд/100, (4.5)
где: Нд - норматив дополнительной заработанной платы, %;
Нд=10%.
Подставив значения в формулу (4.5), получим:
Ззпд=0 +(10%)/(100%)=0 руб.
Взнос на социальное страхование и обеспечение рассчитываются
по формуле (4.6):
ЗСН = (ЗЗПД + ЗЗПО) ∙ КСН, (4.6)
где КСН =0,35 - норматив взноса на социальное страхование и
обеспечение;
ЗСН = (0 + 0) ∙ 0,35 = 8427,28
Затраты на электроэнергию рассчитываются по формуле (4.7):
СЭл = ЦЭл ∙ ∑ Мi ∙ Фi, (4.7)
где: ЦЭл - стоимость 1 кВт-ч электроэнергии, 3,42 руб.;-
количество оборудования;
Мi - потребляемая мощность i-го вида оборудования, кВт;
Фi - дествительный фонд времени работы устройства, ч.
Подставив числовые данные в формулу (4.7), результаты сведем
в таблицу 4.3
Затраты на электроэнергию
Наименование
оборудования
|
Потребляемая
мощность, кВт
|
Действительный
фонд времени, ч
|
Сумма, руб
|
Ноутбук
|
0,23
|
240
|
188,78
|
Микроконтроллер
|
0,12
|
6
|
2,46
|
Всего
|
191,24
|
Затраты на накладные расходы рассчитываются по формуле (4.8):
(4.8)
где Нр - норматив затрат на накладные расходы, %; Нр=10%.
Подставив значения в формулу (4.8), получим:
Сметная стоимость проекта складывается из суммы всех выше
рассчитанных затрат и рассчитывается по формуле (4.9):
СП = СМ + СПИ + ЗЗПО
+ ЗЗПД + ЗСН + СЭЛ + СНР, (4.9)
где: СМ - затраты на материалы, руб.;
СПИ - затраты на покупные изделия, руб.;
ЗЗПО - основная заработная плата разработчика,
руб.;
ЗЗПД - дополнительная заработная плата
разработчика, руб.;
ЗСН - взносы на социальное страхование и
обеспечение, руб.;
СЭЛ - затраты на электроэнергию, руб.;
СНР - накладные расходы, руб.
Подставив значения в формулу (4.9), получим:
СП=8955+1404+8427,28+191,24+2407,8=21385,32 руб.
Результаты приведенных расчетов сведем в таблицу 4.4
Калькуляция себестоимости проекта
Наименование
статей затрат
|
Сумма, руб.
|
Материалы
|
8955
|
Покупные
изделия и полуфабрикаты
|
1404
|
Основная
заработная плата разработчика
|
0
|
Дополнительная
заработная плата разработчика
|
0
|
Взносы на
социальное страхование и обеспечение
|
8427,28
|
Затраты на
электроэнергию
|
191,24
|
Накладные
расходы
|
2107,8
|
Сметная
стоимость проекта
|
21385,32
|
Определение цены проекта
Цена проекта определяется по формуле (4.10):
Цпр = (1 + Nпр) ∙ СП
(4.10)
где Nпр=0,2 - норма прибыли проекта.
Цена проекта составляет:
Цпр = (1+0,2)∙ 21385,32 = 25662,38 руб.
Расчет затрат на стадии эксплуатации
В сфере эксплуатации нового устройства в состав капитальных
вложений потребителя включаются все единовременные затраты, которые должен
нести потребитель в связи с переходом к эксплуатации нового устройства (5.11):
К1 (4.11)
где: Цпр - цена проекта;
Мум - норматив единовременных затрат на установку и монтаж
оборудования, Мум = 10%.
К1
Прямые капиталовложения представляют собой совокупные затраты
на создание и приобретение устройства К2=ЦПР=184528,47.
Общие капиталовложения рассчитываются как сумма
единовременных и прямых капиталовложений и рассчитываются по формуле (5.12):
К = К1 + К2 (4.12)
К = 2566,23+ 21385,32 = 23951,55 руб.
Расчет годовых эксплуатационных издержек потребителя
производится путем премого счета по формуле (5.13):
И = LОБС + РЭЛ + РРЕМ (4.13)
где: LОБС - заработная плата обслуживающего персонала,
руб.;
РЭЛ - издержки на электроэнергию, руб.;
РРЕМ - издержки на ремонт, руб.
Зарплата обслуживающего персонала рассчитывается по формуле
(5.14):
LОБС=, (4.14)
где: Чобс - численность обслуживающего персонала (2 чел.);
Sч - часовая тарифная ставка (30 руб.);
Fобс - время, затраченное на обслуживание, ч. (340 ч);
Нздоп - процент дополнительной заработанной платы (10%);
Нсн - норматив отчислений на взносы на социальное страхование
и обеспечение (35%).
Затраты на заработную плату лаборанта составят:
LОБС=
Издержки на электроэнергию (5.15):
ИЭЛ = Мпотр ∙ Ту ∙
ЦЭЛ, (4.15)
где: Мпотр - потребляемая мощность устройства,
кВт;
Ту - дествительный фонд времени работы устройства,
ч.;
ЦЭЛ - стоимость 1 кВт-ч электроэнергии, руб.
ИЭЛ = 0,97 ∙ 8760 ∙ 3,42 = 29060,42
руб.
Издержки на ремонт (5.16):
Ррем = (4.16)
где: Крем - норматив затрат на ремонт;
Сполн - полная себестоимость, руб.
Ррем =
Общие годовые эксплуатационные издержки составят (4.13):
И = 30294++4613,18 = 35441,81 руб.
Годовые приведенные затраты потребителя рассчитываются по
формуле (4.17):
З = И + (Кр +ЕН) + К, (4.17)
где: И - годовые эксплуатационные издержки потребителя, руб.;
ЕН - нормативный коэфецент эффективности
капиталовложений; ЕН=0,39;
К - капиталовложения потребителя, руб.;
Кр - коэффициент реноваций устройства; Кр
= 0,1638.
Подставив рассчитанные значения в формулу (4.17), получим:
З = 35441,81 + (0,1638 + 0,39) + 23951,32 = 53393,68 руб.
4.2 Расчет сметной стоимости
Расчет трудоемкости разработки
Расчёт затрат времени на разработку
программного обеспечения охватывает работы выполняемые специалистами на
следующих стадиях:
техническое задание;
эскизный проект;
технический проект;
рабочий проект;
внедрение.
Данные о трудоемкости каждой из стадий по
плану и хронометражу представлены в таблице 4.5.
Данные о трудоемкости на стадиях
разработки по плану и хронометражу
Стадия
|
Трудоемкость,
дней
|
|
По плану
|
По хронометражу
|
Техническое
задание.
|
14
|
12
|
Эскизный
проект.
|
18
|
24
|
Технический
проект.
|
30
|
45
|
Рабочий проект.
|
15
|
20
|
Внедрение.
|
9
|
16
|
При расчёте фактических затрат времени на
программирование необходимо учесть влияние следующих факторов:
количество разновидностей форм выходной информации;
степень новизны комплекса задач;
сложность алгоритма;
виды используемой информации;
сложность контроля входной и выходной информации;
использование типовых проектных решений.
Предусматривается четыре степени новизны
разрабатываемых задач, которые представлены в таблице 4.6.
Степени новизны разрабатываемых задач
Обозначение
|
Степень новизны
|
А
|
Разработка
комплекса задач
|
Б
|
Разработка
решений задач и систем, не имеющих аналогов.
|
В
|
Разработка
решений задач и систем, имеющих аналогичное решение.
|
Г
|
Привязка
типовых проектных решений.
|
Сложность алгоритма представлена тремя
группами в таблице 4.7.
Группы сложности алгоритмов
Обозначение
|
Виды алгоритмов
|
С1
|
Алгоритмы
оптимизации и моделирования систем и объектов.
|
С2
|
Алгоритмы учёта
и отчётности, статистики, поиска.
|
СЗ
|
Алгоритмы, реализующие
стандартные методы решения
|
Трудоёмкость разработки проекта зависит
так же от вида используемой информации. Виды информации представлены в таблице
4.8.
Виды используемой информации
Обозначение
|
Виды информации
|
ПИ
|
Переменная
информация
|
ПСИ
|
Нормативно-справочная
информация
|
БД
|
Базы данных
|
РВ
|
Режим работы в
реальном времени
|
ТОУ
|
Телекоммуникационная
обработка данных и управление удалёнными объектами
|
Сложность организации контроля входной и
выходной информации представлена в таблице 4.9 четырьмя группами.
Группы сложностей организации контроля
входной и выходной информации
Обозначение
|
Группа
сложности
|
11
|
Входные данные
и документы разнообразного формата и структур (контроль осуществляется
перекрёстно)
|
12
|
Входные данные
и документы однообразной формы и содержания (осуществляется формальный
контроль)
|
21
|
Печать
документов сложной многоуровневой структуры, разнообразной формы и содержания
|
22
|
Печать
документов однообразной формы и содержания, вывод массивов данных на машинные
носители
|
Далее в справочных таблицах представлены
затраты времени при выполнении различных видов работ на разных стадиях процесса
разработки программного продукта, представлена в таблице 4.10.
Затраты времени при выполнении работ на
стадии технического задания (дни).
Комплекс задач
подсистемы
|
Техническое
задание
|
Эскизный проект
|
|
Степень новизны
|
Степень новизны
|
|
А
|
Б
|
В
|
Г
|
А
|
Б
|
В
|
Г
|
Перспективное
планирование, размещение и развитие отрасли, управление проектируемым
капитальным строительством; технико - экономическое планирование, управление
ценообразованием.
|
79
|
57
|
37
|
34
|
175
|
117
|
77
|
53
|
Управление
материально - техническим снабжением, сбытом продукции; управление
комплектацией, экспортными и импортными поставками.
|
105
|
76
|
42
|
30
|
115
|
79
|
53
|
35
|
Бухгалтерский
учет, управление финансовой деятельностью.
|
103
|
72
|
30
|
35
|
166
|
112
|
67
|
57
|
Управление
организацией труда, заработной платой, кадрами, нормами и нормативами,
охраной труда.
|
63
|
46
|
30
|
13
|
151
|
101
|
67
|
46
|
Управление
качеством продукции, технологическими процессами в производстве.
|
64
|
47
|
31
|
22
|
157
|
99
|
67
|
44
|
Управление
транспортными перевозками, техобслуживанием,
|
91
|
66
|
43
|
26
|
170
|
100
|
70
|
45
|
Управление
научно-технической информацией. Совершенствование
|
50
|
36
|
24
|
15
|
151
|
101
|
67
|
46
|
Учет пенсий,
пособий и страховых операций
|
79
|
55
|
36
|
26
|
103
|
70
|
45
|
36
|
Статистические
задачи
|
129
|
111
|
61
|
38
|
103
|
70
|
45
|
49
|
Задачи
расчетного характера
|
92
|
69
|
47
|
29
|
103
|
70
|
45
|
41
|
Затраты времени при выполнении работ на
стадии эскизного проекта (дни)
№
|
Комплекс задач,
подсистем
|
Степень новизны
|
|
|
А
|
Б
|
В
|
Г
|
2
|
Управление
материально-техническим снабжением, сбытом продукции; управление
комплектацией, экспортными и импортными поставками.
|
115
|
79
|
53
|
35
|
3
|
Управление
бухгалтерским учетом, финансовой деятельности предприятия.
|
166
|
112
|
67
|
57
|
4
|
Управление
организацией труда, зарплата, кадры, нормы и нормативы, охрана труда.
|
151
|
101
|
67
|
44
|
5
|
Управление
качеством продукции, технологическими процессами в производстве,
стандартизации, технической подготовкой производства.
|
157
|
99
|
67
|
44
|
6
|
Управление
транспортными перевозками, техобслуживанием, вспомогательными службами и
энергоснабжение.
|
170
|
100
|
70
|
45
|
7
|
Управление
научно-технической информацией. Совершенствование документооборота и контроль
исполнения документа. Управление охраной природы и окружающей среды.
|
151
|
101
|
67
|
46
|
8
|
Учет пенсий,
пособий и страховых операций.
|
103
|
70
|
45
|
36
|
9
|
Статистические
задачи.
|
103
|
70
|
45
|
49
|
10
|
Задачи
расчётного характера.
|
103
|
70
|
45
|
41
|
Поправочные коэффициенты, (К1,
К2, К3) для определения трудоёмкости работ на стадии
технического проекта.
№
|
Вид
используемой информации
|
Степень новизны
|
1
|
ПИ, К1
|
1,7
|
1,2
|
1
|
0,5
|
2
|
НСИ, К2
|
1,45
|
1,08
|
0,72
|
0,43
|
3
|
БД, К3
|
4,37
|
3,12
|
2,08
|
1,25
|
Поправочные коэффициенты (К1, К2,
К3) определения трудоёмкости работ на стадии рабочего проекта
№
|
Вид
используемой информации
|
Группа
сложности алгоритма
|
Степень новизны
|
1
|
ПИ, К1
|
С1
|
2,27
|
1,62
|
1,2
|
0,65
|
|
|
С2
|
2,02
|
1,44
|
1,1
|
0,58
|
|
|
СЗ
|
1,68
|
1,2
|
1
|
0,48
|
2
|
ПСИ, К2
|
С1
|
1,36
|
0,97
|
0,65
|
0,4
|
|
|
С2
|
1,21
|
0,86
|
0,58
|
0,34
|
|
|
СЗ
|
1,01
|
0,72
|
0,48
|
0,29
|
3
|
БД, К3
|
С1
|
1,14
|
0,81
|
0,54
|
0,32
|
|
|
С2
|
1,05
|
0,72
|
0,48
|
0,29
|
|
|
СЗ
|
0,85
|
0,6
|
0,4
|
0,24
|
При использовании информации разных видов для технического и
рабочего проекта поправочный коэффициент рассчитывается по формуле (4.17):
, (4.17)
где: m - количество наборов данных ПИ;
n - количество наборов данных НСИ;
р - количество наборов данных БД;
Поправочные коэффициенты, учитывающие
сложность контроля входной и выходной информации на стадиях рабочего проекта и
внедрения.
Сложность
контроля входной информации
|
Сложность
контроля выходной информации
|
|
21
|
22
|
11
|
1,16
|
1,07
|
12
|
1,08
|
1
|
Поправочные коэффициенты для определения
трудоёмкости работ на стадии технического и рабочего проектов, внедрения.
Стадия
разработки
|
Вид
обрабатываемой информации
|
Степень новизны
|
ТП
|
РВ
|
1,67
|
1,45
|
1,26
|
1,1
|
|
ТОУ
|
1,75
|
1,52
|
1,36
|
1,15
|
РП
|
РВ
|
1,75
|
1,52
|
1,36
|
1,15
|
|
ТОУ
|
1,92
|
1,67
|
1,44
|
1,25
|
В
|
РВ
|
1,6
|
1,39
|
1,21
|
1,05
|
|
ТОУ
|
1,67
|
1,45
|
1Д
|
Общая трудоёмкость разработки программного
продукта рассчитывается по формуле (4.15):
ТОБЩ=tТЗ+tЭП+tТП+tРП+tВ, (4.18)
где: tТЗ - затраты труда на
стадии технического задания (в днях);
tЭП - затраты труда на
стадии эскизного проекта (в днях);
tТП - затраты труда на
стадии технического проекта (в днях);
tРП - затраты труда на
стадии рабочего проекта (в днях);
tВ - затраты труда на стадии
внедрения (в днях).
Подставив в формулу (4.2) числовые
значения трудоёмкости разработки программного продукта на каждом этапе без
учёта поправочных коэффициентов, получим:
ТОБЩ=76+79+59+27+18=259 дней.
Общая трудоёмкость разработки программного
продукта с учётом поправочных коэффициентов рассчитывается по формуле (4.19):
Т'ОБЩ=tТЗ+tЭП+t'ТП+t'РП+t'В, (4.19)
где: t'ТП - затраты
труда на стадии технического проекта с учётом поправки;
t'РП - затраты
труда на стадии рабочего проекта с учётом поправки;
t'В - затраты
труда на стадии внедрения с учётом поправки.
Для расчёта затрат труда на стадии
технического проекта с учётом поправки по формуле (4.17) и на основе справочной
таблицы (4.13) рассчитаем поправочный коэффициент на использование разных видов
информации:
Теперь с учётом поправки на использование разных видов информации
и на основе справочной таблицы вычислим затраты труда на стадии технического
проекта с учётом поправки:
t'ТП=день.
Для расчёта затрат труда на стадии рабочего проекта с учётом
поправки по формуле (4.1) и на основе справочной таблицы рассчитаем поправочный
коэффициент на использование разных видов информации:
С учётом поправки на использование разных видов информации и на
основе справочных таблиц (4.11) и (4.12) вычислим затраты труда на стадии
рабочего проекта с учётом поправки:
t'РП = дня.
Для расчета затрат труда на стадии внедрения используются
поправочные коэффициенты из справочных таблиц (4.15) и (4.16):
t'В =дней.
Таким образом, общие затраты труда на разработку программного
продукта с учётом поправочных коэффициентов составят:
Т'ОБЩ=76+79+151+34+26 = 442 дня.
Численность исполнителей определяется по формуле (4.20)
Ч = =
Расчёт себестоимости программного продукта
Себестоимость программного продукта
рассчитывается по формуле (4.21):
С=МВС+Э++ЗСН+Н, (4.21)
где: МВС - затраты на
вспомогательные материалы, руб.;
Э - затраты на электроэнергию на
технологические цели, руб.;
- основная зарплата разработчика, руб.;
- дополнительная зарплата разработчика, руб.;
ЗСН - взнос на социальное страхование и обеспечение,
руб.;
Н - накладные расходы, руб.
Затраты на вспомогательные материалы
№
|
Наименование
затрат
|
Количество, шт.
|
Сумма, руб.
|
1
|
Тонер для
картриджа
|
1
|
300
|
2
|
Бумага для
принтера
|
1
|
110
|
3
|
RW компакт-диск
|
2
|
80
|
4
|
Всего
|
-
|
490
|
Затраты на электроэнергию рассчитываются
по формуле (5.22):
, (4.22)
где: Р - мощность потребляемой электроэнергии, Кватт;
СЭ - стоимость одного киловатт-часа электроэнергии,
3,42 руб.;
Т'ОБЩ - общие затраты труда на разработку программного
продукта, час;
RЗАГ, -
коэффициент загрузки компьютера.
Подставив в формулу числовые значения вычислим затраты на
электроэнергию:
.
Основная заработная плата разработчика рассчитывается по
формуле (5.23):
, (4.23)
где: СЧТС - часовая тарифная ставка разработчика, руб.;
Т’ОБЩ - общие затраты труда на разработку программного
продукта, час.
Подставив в формулу (4.21) числовые значения вычислим основную
заработную плату разработчика:
руб.
Дополнительная заработная плата разработчика составляет 10% от
основной зарплаты, то есть = 1609.76 руб.
Взносы на социальное страхование и обеспечение определяются по формуле
(5.24):
, (4.24)
где: RСН - коэффициент на социальные нужды, RСН=0,35.
Подставив в формулу (422) числовые значения вычислим отчисления на
социальные нужды:
ЗСН = (16097.64 + 1609.76) • 0,35 = 6339.25 руб.
Накладные расходы рассчитываются по формуле (5.25):
Н = . (4.25)
Подставив числовые значения в формулу (4.8) получим:
Н = 0,1 • (16097.64 + 1609.76) = 1770,74 руб.
Теперь, зная все числовые значения можно рассчитать полную себестоимость
разработанного программного продукта:
С = 490 + 1813,97 +16097,64+1609,76 + 6339.25 + 1770,74 = 28121,36
руб.
В таблице (4.17) сведены результаты
расчётов себестоимости программного продукта:
Таблица 4.17 - Калькуляция себестоимости
программного продукта
№
|
Наименование
статей расходов
|
Затраты, руб
|
1
|
Вспомогательные
материалы
|
490
|
2
|
Основная
зарплата
|
16097,64
|
3
|
Дополнительная
зарплата
|
1609,76
|
4
|
Взносы на
социальное страхование и обеспечение
|
6339.25
|
5
|
Затраты на
электроэнергию
|
1813,97
|
6
|
Накладные
расходы
|
1770,74
|
7
|
Полная
себестоимость
|
28121,36
|
Расчёт экономического эффекта
Экономический эффект от внедрения
программного продукта рассчитывается по формуле (5.26):
, (4.26)
где: N - количество обрабатываемых
документов;
t1, t2 - трудоёмкость обработки
документов до и после внедрения программы;
СЧТС - часовая тарифная ставка
разработчика, Счтс -57 руб.;
КДОП - коэффициент отчислений
на дополнительную зарплату,
КДОП = 0,1;
КСН - коэффициент взносов на
социальное страхование и обеспечение, КСН= 0,35;
ЕН - нормативный коэффициент
окупаемости кап. вложений, ЕН=0,39;
К - дополнительные капитальные вложения,
связанные с разработкой программного продукта.
Используя ранее рассчитанные значения и
подставив их в формулу (4.24), получим значение экономического эффекта:
Эф = 7500 • (1,5 - 0,5) • 57 •
1,1 • 1,35 - 0,39 • 28121,36 = 623890,17 py6.
Срок окупаемости программного продукта
рассчитывается по формуле (5.28):
, (4.28)
где: СПР - себестоимость программного продукта, руб.;
С1 - стоимостные затраты при использовании ручного
труда, руб.;
С2 - стоимостные затраты при использовании программы,
руб.
С1= 7500 • 1,5• 57 • 1,1 • 1,35 - 0,39 • 28121,36=
941288,92 руб.,
С2 = 7500 • 0,5 • 57 • 1,1 • 1,35 - 0,39 • 28121,36=
306451,42 руб.
Подставив в формулу (4.28) посчитанные числовые значения, получим:
года
Полученные экономические показатели проекта сведены в таблице
(4.14).
Таблица 4.14 - Экономические показатели проекта
№
|
Наименование
показателя
|
Значение
|
Ед. изм.
|
1
|
Затраты на
материалы
|
8955
|
руб.
|
2
|
Затраты на
покупные изделия
|
140468
|
руб.
|
3
|
Заработная
плата разработчика
|
21889,05
|
руб.
|
4
|
Затраты на
электроэнергию
|
1813,97
|
руб.
|
5
|
Накладные
расходы
|
2107,8
|
руб.
|
6
|
Себестоимость
проекта
|
21385,32
|
руб.
|
7
|
Срок
окупаемости
|
0,04
|
года
|
8
|
Заработная
плата обслуживающего персонала
|
30294,85
|
руб.
|
9
|
Издержки на
ремонт
|
459,62
|
руб.
|
10
|
Текущие годовые
издержки потребителя
|
63967,60
|
руб.
|
11
|
Годовые
приведенные затраты потребителя
|
465445,1
|
руб.
|
Заключение
В результате выполненного дипломного проекта была рассмотрена
возможность использования беспроводного ближнего канала связи контрольного
пункта телемеханики.
В ходе проектирования решены следующие задачи:
выбраны технические средства, на которых была решена задача.
Устройства совместимы как между собой так и со средой применения;
подобран контроллер разрядность АЦП которого позволяет производить
измерения аналоговых датчиков не выходя за рамки допустимой погрешности;
реализовано АЦП на контроллере;.
подобрано устройство связи позволяющее передавать сигнал на
необходимое и достаточное расстояние без потерь;
создано программное средство позволяющее в наглядной форме
производить считывание данных оператором;
учтены требования по энергопотреблению в первую очередь по
причине экономий заряда батарей. Так как питание на объекте автономное. Сеть
постоянного тока 5 В;
обеспечена работоспособность в диапазоне рабочих температур -
40..+60С;
проведено экономическое обоснование разрабатываемого
программно-аппаратного средства. Устройство имеет адекватную цену;
обеспечена безопасность условий труда.
Можно сделать вывод, что использование подсистемы беспроводной
ближней связи оправдано.
Подобранное оборудование отвечает всем требованиям
функциональности, так как выполняет все возложенные на него функции, так и
требованиям надежности. Поставленная задача выполнена. Подсистема ближней связи
контрольного пункта телемеханики полностью отвечает поставленным требованиям.
Завершающим этапам разработки проекта был расчет
технико-экономические показатели для организации энергоснабжения, также
рассмотрена безопасность труда, где был произведён анализ негативных факторов,
которые влияют на условия труда и самого человека. Рассмотрены возможные
чрезвычайные ситуации.
Дипломный проект выполнен в полном соответствии с
действующими нормами, правилами, инструкциями и государственными стандартами
Список
используемых источников
1. Плюсы и минусы проводных и беспроводных
датчиков
http://www.hrobot.ru/useful-materials/plyusy_i_minusy_provodnykh_i_besprovodnykh_datchikov/
2. Информация о фирме ООО «АСУ ПРО»
http://www.asupro.ru/
. ATmega8A datasheet Atmel
4. Uno datasheet Arduino