Модуль дистанционного запуска двигателя автомобиля

Проект и программная реализация на языке программирования Ассемблер модуля дистанционного запуcка двигателя автомобиля. Структурная и электрическая принципиальная схемы устройства, алгоритм его работы. Реализация модуля на микроконтроллере серии MCS-51.

Рубрика Коммуникации, связь, цифровые приборы и радиоэлектроника
Вид реферат
Язык русский
Дата добавления 02.12.2013
Размер файла 1,8 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Министерство образования и науки Российской Федерации

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

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

"Южно-Уральский государственный университет"

Приборостроительный факультет

Кафедра "Инфокоммуникационные технологии”

"Контроллер светодиодного табло"

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

К КУРСОВОЙ РАБОТЕ

по дисциплине:

"Цифровые устройства и микропроцессоры”

ПС-475.09.01.11 ПЗ

Руководитель:

Николаев А.Н.

Автор проекта

Студент группы ПС-475

Семёнов А.И.

Челябинск 2013

Аннотация

Семёнов А.И. Модуль дистанционного запуска двигателя автомобиля. - Челябинск: ЮУрГУ, ИКТ, 2012, 21 с.2 илл. Библиография - наименования, 1 лист чертежей ф. А4, перечень элементов.

Согласно варианту задания, необходимо спроектировать и программно реализовать на языке ассемблер модуль дистанционного запуcка двигателя автомобиля. Данное устройство осуществляет дистанционный запуск реле двигателя на промежуток времени в размере 5 секунд путём принятия SMS сообщения. В ходе данной курсовой работы мною были составлены структурная и электрическая принципиальная схемы данного устройства, разработан алгоритм работы устройства, по которому написана программа на языке ассемблер. Реализация данного модуля осуществляется на микроконтроллере серии MCS-51.

Оглавление

  • Введение
  • 1. Анализ технического задания
  • 2. Структурная схема устрйства
  • 3. Разработка алгоритма работы
  • 3.1 Основная программа
  • 3.2 Подпрограмма приёма СМС
  • 3.3 Обработчик прерываний от ТС0
  • 4. Разработка схемы электрической принципиальной
  • 4.1 Цепь сброса
  • 4.2 Кварцевый резонатор
  • 4.3 Цепи питания и прочее
  • 5. Разработка программы на языке ассемблера
  • Заключение
  • Библиографический список

Введение

Назначение устройства - производить запуск двигателя с помощью SMS сообщения.

Курсовая работа состоит из 5 частей:

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

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

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

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

В пятой части разработана программа на языке Assembler обеспечивающая работу устройства с комментариями.

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

модуль дистанционный запуск двигатель

1. Анализ технического задания

Требуется разработать модуль дистанционного запуска двигателя автомобиля. Контроллер анализирует состояние двигателя (остановлен), состояние коробки передач (включена нейтральная), ручного тормоза (включен). При поступлении команды "start" в виде SMS с телефона владельца автомобиля происходит запуск двигателя - включение реле запуска на 5 сек. При трёх неудачных попытках (с интервалом 2 минуты) запуск прекращается. Отчёт об успешном или неуспешном запуске отправляется владельцу в виде SMS.

Устройство будет получать SMS сообщение с телефона владельца с помощью GSM модуля SIM900D (рисунок 1.1). При получении команды "start", устройство проверяет 3 параметра - двигатель, коробку передач и ручной тормоз. Анализируя эти параметры, модуль принимает решение осуществлять запуск двигателя или, в случае несоблюдения данных параметров, сразу отправить отчет на телефон владельца.

Рисунок 1.1 - Плата SIM900D

Сигнал от двигателя, коробки передач и ручного тормоза приходит в цифровом виде. Двигатель: 0 - двигатель выключен, 1 - двигатель запущен. Коробка передач: 1 - стоит нейтральная передача, 0 - нейтральная передача не стоит. Ручной тормоз: 1 - ручной тормоз установлен, 0 - ручной тормоз не установлен.

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

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

Общий вид проектируемого модуля представлен на рисунке 1.2, в таблице 1 представлены уровни TTL для используемого микропроцессора.

Рисунок 1.2 - Общий вид модуля дисианционного запуска

Таблица 1 - Уровни TTL

Уровень логической "1"

Уровень логического "0"

2. Структурная схема устрйства

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

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

На рисунке 1 изображены основные блоки проектируемого устройства.

D - Цифровой сигнал, который поступает с двигателя: 0 - двигатель выключен, 1 - двигатель запущен, KP - цифровой сигнал, который поступает с коробки передач: 1 - стоит нейтральная передача, 0 - нейтральная передача не стоит, RT - цифровой сигнал, который поступает с ручного тормоза (1 - ручной тормоз установлен, 0 - ручной тормоз не установлен). Микроконтроллер выполняет обработку данных. GSM модуль необходим для приема и отправки SMS.

3. Разработка алгоритма работы

3.1 Основная программа

Рисунок 3.1 - Блок - схема алгоритма работы программы

Рассмотрим подробнее алгоритм реализации модуля для запуска двигателя. Алгоритм начинает работать, когда поступает SMS с текстом "start". После этого проверяются сигналы от устройств автомобиля, а именно от коробки передач (нейтральна), двигателя (выключен) и ручника (поставлен). Если какое-либо состояние из перечисленных выше устройств не выполнилось, то сразу отправляется сообщение об ошибке на телефон владельцу. Только при выполнении всех этих условий производится запуск реле двигателя.

После этого проверяется, запустился двигатель или нет. Если двигатель запустился, то сразу отправляется SMS сообщение о запуске двигателя на телефон владельца. Если же двигатель запустить не удалось, происходит повторный запуск реле двигателя ещё 2 раза. Если не удалось запустить двигатель за эти три попытки, отправляется отчет об ошибке и выполнение операции прекращается. Для управления GSM модулем используются AT-команды, представленные в таблице 2 и таблице 3. Уведомление о запуске приходит на личный сотовый номер владельца, возьмём, к примеру, 89227157174.

Таблица 2 - используемые АТ-команды

АТ-команда

Значение

AT+CMGR=1

Чтение непрочитанных смс

AT+CMGS=”89227157174”

>Текст SMS сообщения

Отправка сообщения на номер 89227157174

Таблица 3 - ответы на АТ-команды

АТ-команда

Значение

ERROR

Ошибка

OK

Команда выполнена

Нам необходима скорость в 19200 бит/с для этого используется ТС1 в режиме 1.

Далее передается АТ-команда получения SMS "AT+CMGR=1. После этого нужно принять от GSM-терминала сообщение "start", которое подтверждает начало выполнения операции.

После того, как подпрограмма передачи АТ-команд выполнила все действия, происходит выход из подпрограммы, возобновляется анализ портов.

Рис.3.2 - Подпрограмма получения SMS

3.2 Подпрограмма приёма СМС

На рисунке 3.3 представлен алгоритм подпрограммы приёма. Как видно из него, мы ждем пока флаг прерывания приёмника установится в логическую "1", это говорит нам, что символ принят. Далее содержание буфера приёмника записывается в аккумулятор и происходит сброс флага приёмника.

Рисунок 3.3 - Подпрограмма приёма

3.3 Обработчик прерываний от ТС0

Так как один машинный такт занимает 12 временных тактов, на вход таймеров счетчиков будут поступать импульсы с частотой:

f = fтакт / 12 = (11.0592 * 10^6) / 12 = 0.9216 МГц,

где fтакт = 11.0592 МГц - частота процессора.

Так как таймеры-счетчики настроены как 16-тиразрядные таймеры, то максимальное значение в них равно 65535, что соответствует максимальному времени:

tmax = 65536/ (0.9216 * 10^6) = 71.11 мс,

поэтому прерывание от него происходит раз в 71 мс. После запуска реле двигателя требуется 5 секунд задержки до выключения двигателя, следовательно, необходимое нам количество прерываний находим как: 5/ 71 * 10-3 = 70. Тоесть таймер будет иметь 70 прерываний.

Рисунок 3.4 - Алгоритм обработчика прерываний

4. Разработка схемы электрической принципиальной

В качестве микроконтроллера для сигнализации возьмём контроллер из семейства MCS-51 фирмы Atmel, а именно AT89C51. Данный микроконтроллер имеет 4 КБайт флэш-памяти с внутрисхемным программированием, 125 байт внутреннего ОЗУ, 2 16-ти разрядных таймер-счётчика, 1 последовательный интерфейс UART, рабочий диапазон температур от - 40 до 80 C0. Напряжение питания от 4.5 до 5.5 В, необходимый ток 20 мА.

На рисунке 4.1 представлено расположение выводов данного микроконтроллера.

Рисунок 4.1 - Микроконтроллер AT89C51

В устройстве используются порты P3.0 (RxD) и P3.1 (TxD) для последовательного интерфейса, входы XTAL1 и XTAL2 для подключения кварцевого резонатора, порты P1.1, P1.2 и P1.3 для подключения датчиков.

4.1 Цепь сброса

Цепь сброса включается для начальной установки всех внутренних систем процессора в момент включения питания. На рисунке 4.2 представлена схема начального сброса.

Рисунок 4.2 - Схема начального сброса

Чтобы при включении питания сброс был гарантированно выполнен, вывод RST должен удерживаться в состоянии высокого уровня в течение времени, достаточного для запуска тактового генератора плюс еще минимум два машинных цикла. Время запуска тактового генератора зависит от его частоты работы и для 10 МГц кварцевого резонатора составляет в среднем 1 мс. Если взять значение резистора равным 1кОм, то по формуле емкость конденсатора будет составлять 1 мкФ.

4.2 Кварцевый резонатор

Он предназначен для формирования и выдачи внутренних синхросигналов фаз, тактов и циклов. Для работы с последовательным портом микроконтроллера возьмём частоту резонатора 11.059 МГЦ. Схема подключения кварцевого резонатора показана на рисунке 5.3.

Рис. 4.3 - Схема подключения кварцевого резонатора

Значения емкостей в данной схеме обычно берут 3010 пФ

4.3 Цепи питания и прочее

Для фильтрации (сглаживания) бросков напряжения в цепи питания обычно используют конденсатор. Возьмём его емкость равной 1 мкФ.

Рисунок 4.4 - Цепь питания микроконтроллера

На вход DEMA необходимо подать логическую "1" т.е. напряжение более 2.4В, возьмём 3В. У нас есть источник питания +5В, значит необходимо поставить резистор, на котором падает 2В. Если ток равен 50мкА, то необходим резистор 39 кОм

5. Разработка программы на языке ассемблера

Листинг программы на языке ассемблера

org 0; начало с 0 адреса

jmp START; переход на метку

ORG 0BH; после метки START, программа начинается в 0ВН

START:

mov P0,#0; подаем нули на неиспользуемые контакты

mov P3,#00000011b; подаем нули на неиспользуемые контакты

mov SP,#80h; запись начинается с адреса 81h

mov 08h,#0FFh; запись в ОЗУ первоначального состояния порта Р1

mov 09h,#0h; запись в 0ЗУ первоначального состояния порта Р2

PROVERKA:

mov TMOD,#00100001b; настройка ТС1

mov TH1,#0FDh; запись числа в старшие байты ТС

mov TL1,#0FDh; запись числа в младшие байты ТС

mov SCON,#01010000b; режим UART, передача 9 битного пакета

mov PCON,#10000000b; удвоение скорости

mov TCON,#01000000b; включение ТС1

nabor:

mov R0,#0

mov DPTR,#prer1

string:

mov A,R0; записываем значение из R0 в аккумулятор

movc A,@A+DPTR; загружаем байт в аккумулятор из DPTR

mov SBUF,A; записываем значения из А в буфер

again:

JNB TFI,again; ветвление по адресу, пока флаг таймера не переполниться

clr TFI

inc R0; увеличение значения регистра R0 на 1

mov R4,#0; флаг для прерывания от ТС0, который еще не включен

cjne A,#9,string

LCALL PRIEM; должны принять "start

CJNE A,#'s',nabor

LCALL PRIEM

CJNE A,#'t',nabor

LCALL PRIEM

CJNE A,#'a',nabor

LCALL PRIEM

CJNE A,#'r',nabor

LCALL PRIEM

CJNE A,#'t',nabor; если пришло start, то начинается выполнение операции

mov N, 1; Количество попыток запуска двигателя

Dvigatel:

CMP P1.1, #0, Dvigatel; Сравнивание D и 0 (двигатель заглушен)

JZ Korobka; Переход к проверке Korobka

Dvigatel: RETI; выход из цикла

Korobka:

CMP P1.2, #1, Korobka; Сравнивание KP и 0 (стоит нейтральная передача)

JZ Ruchnik; Переход к проверке Ruchnik

Korobka: RETI; выход из цикла

Ruchnik:

CMP P1.3, #1, Ruchnik; Сравнивание RT и 1 (ручной тормоз включен)

JZ Run; Переход к Run

Ruchnik: RETI; выход из цикла

Run:

mov P1.7, #1h; Подача наивысшего уровня для запуска двигателя

CMP P1.1, 1, Dvigatel; Сравнивание D и 1 (двигатель запущен)

JZ Answer_true; Переход на метку с положительным отчетом

inc N; увеличение N на единицу, для подсчета попыток

PRIEM:

cjne R4,#0,vyhod

JNB RI,PRIEM; Ждём пока придёт символ, и в регистр R1 установится 1

mov A,SBUF; Записываем в аккумулятор пришедший символ из буфера

CLR RI

vyhod: RETI

PRERVART:

inc R2

cjne R2,#70, ret_1

mov R2,#0

mov R4,#1; задержка на 5 секунд

ret_1: RETI

mov P1.7, #0h; отмена запуска реле

CMP N, 3; проверка количества попыток

JBE Run

Dvigatel: RETI

JMP Answer_false; Переход на метку с отрицательным отчетом

Answer_true:

smska: mov R0,#0; передача команды "AT+CMGS=89227157174", т.е. отправка SMS на номер абонента

mov DPTR,#prer2

again:

JNB TFI,again

clr TFI

inc R0

cjne A,#20,string

mov R0,#10h; ввод в отчета о выполнении операции

string:

mov A,@R0

mov SBUF,A

again:

JNB TFI,again

clr TFI

inc R0

cjne A,#30,string

kolvo:

LCALL PRIEM; принятине отчета о количестве отправленных смс

CJNE A,#30,kolvo; т.к. нам не понадобится данная информация, то ждем окончания строки

LCALL PRIEM; подтверждение отправки sms

CJNE A,#'O',smska

LCALL PRIEM

CJNE A,#'K',smska

Ret;

Answer_false:

smska: mov R0,#0; передача команды "AT+CMGS=89227157174", т.е. отправка SMS на номер абонента

mov DPTR,#prer2

again:

JNB TFI,again

clr TFI

inc R0

cjne A,#20,string

mov R0,#10h; ввод в отчет о выполнении операции

again:

JNB TFI,again

clr TFI

inc R0

cjne A,#30,kolvo: LCALL PRIEM; принятие отчета о количестве отправленных смс

CJNE A,#30,kolvo; т.к. нам не понадобится данная информация, то ждем окончания строки

LCALL PRIEM; подтверждение отправки sms

CJNE A,#'O',smska

LCALL PRIEM

CJNE A,#'K',smska

Ret;

prer1: db ' AT+CMGR=1; ',9

prer2: db 'AT+CMGS=89227157174; ', 19

end;

Заключение

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

Главным модулем устройства является GSM модуль который принимает SMS сообщение, а также отправляет отчет о работе

Были получены практические знания, связанные с работой процессорной техники, для выполнения устройством заданного алгоритма работы использовали программу, которая написана на языке assembler для процессора серии MCS - 51.

Библиографический список

1. Бродин В.Б., Калинин А.В. Системы на микроконтроллерах и БИС программируемой логики. - М.: ЭКОМ, 2002. - 412 c.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.