Система управления сварочным аппаратом

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информатика, ВТ, телекоммуникации
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    869,49 Кб
  • Опубликовано:
    2012-12-03
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Система управления сварочным аппаратом

Оглавление

Техническое задание    3

Введение    4

1.Описание функциональной схемы        5

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

2.1 Выбор контроллера         8

2.2 Выбор элементов схемы  13

3.Разработка программы управления      21

3.1 Общий алгоритм работы 21

3.2 Описание работы программы   22

Заключение         27

Приложение (Схема устройства)    28

Приложение (Листинг программы)         29

Техническое задание


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

Для обеспечения интерфейса необходимо установить клавиатуру на 4x4 клавиши (10 цифровых, 6 функциональных), таким образом обеспечивается возможность задания режимов аппарата.

Для индикации использовать ЖК индикатор, который имеет 2 строки по 22 символа.

Для контроля процесса сварки используется 2 датчика. Один пераметрический, второй датчик тока.

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

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

Связь осуществляется по последовательному порту.

Введение

микроконтроллерная управление контроллер программный

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

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

1.Описание функциональной схемы

RS 232 - преобразователь электронного интерфейса для сопряжения с компьютером. Выполняет сопряжение +/- 12 B c OART 0.5 B.

T1, T2, T3 - цифровые датчики применяемые для контроля температур узлов инвертора.

Датчики тока представляют датчики определяющие магнитный поток в силовых проводах, при этом обеспечивается бесконтактный съём показаний тока и в случае превращения каких-либо регулирующих показателей изменяется регулирующие параметры для управления IGBT модулями.

Последующий сигнал с датчиков магнитного потока оцифровывается с помощью АЦП.

LCD (ЖКИ) - специализированный жидкокристаллический дисплей, необходимый для отображения параметров работы системы.

IGBT - специализированный модуль одноканальный мостовой для управления IGBT транзисторами или трёхканальный мостовой для повышенной мощности коммутации.

Т - трансформатор преобразования использующийся для выполнения преобразования высоковольтного импульсного напряжения.

Блок выпрямителей.

Блок управления ветилятором охлаждения.

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

Блок мостового выпрямителя высоковольтного напряжения.

Описание схемы: для сопряжения с компютером используется специализированный МК MAX232S. Этот микроконтроллер автоматически выполняет генерацию требующих уровней напряжения и преобразование +/- 12 B.

Датчики температуры - цифровые DS18S20. Выполняющие контроль диапозона температуры. Сопряжение по одноканальному интерфейсу обеспечивает экономию портов.

По данному интерфейсу подключён специализированный АЦП D-40-50 имеющий 4 канала ( 2 из которых использует для оцифровки данных с датчиков).

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

LCD подключена на 4-х проводной схеме передачи данных для управления сигналами RS (команда/данные) и сигнала E (страбирование).

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

Мощный трансформатор выполняет преобразование, понизив напряжение и повысив выходной ток.

Для обеспечения более простой схемы выпрямителя используется 2-х канальный трансформатор с обшей

В качестве выпрямителя используется диоды KT829 в кол-ве 10 штук или 32КТ813. Использование большой группы диодов позволяет повысить надёжность и улучшить теплоотдачу.

Блок А1 представляет собой …. ключ. Мост 306 который управляет вентилятором охлаждения.

Блок А2 представляет собой аналогичное решение на … , но с …. выходом большей мощности на … (Т122), что позволяет коммутировать ток дл 25 А.

Для питания IGBT сборки и вентилятораохлаждения используется вентиляторное напряжение равное 220 В, поступающеес диодной сборки VD-17, VD-20. Данная сборка обеспечивает ток до 45 А, и напряжения 1000 В, что позволяет с запасом по току давать необходиый ток для IGBT модуля управления.

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

 

.1 Выбор контроллера


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

·        8-ми разрядный,

·        с низким энергопотреблением,

·        наличие статичного режима,

·        гарвардская архитектура,

Мною были выбраны контроллеры следующих серий: AVR (ATiny2313), PIC (16C745), MK-51 (AT89C4051). В каждой серии выбирается примерно аналогичных по характеристикам контроллеры сравниваются их параметры и оценивается на сколько они подходят для оценивания конкретной задачи. Информация о выбранных микроконтроллерах для удобства представлена в таблице, наглядно показывающей различия между ними:


AVR (ATiny2313)

PIC (16C745)

MK-51 (AT89С4051)

ПЗУ (память программ)

2 Кб

8 Кб

4 Кб

Таймеры/счетчики

1(8 разрядов) 1(16 разрядов)

2(16 разрядов)

2(16 разрядов)

Число портов ввода/вывода

18

22

32

Питание

2,0-5,5

4,0-5,5

Архитектура

RISC

RISC

CISC

Тактовая частота

20МГц

24МГц

24МГц

Режим экономии энергии

Idle, Power-down, Standby

Sleep

Idle, Power-down

Память данных

128 байт

256 байт

128 байт

Стоимость

50 руб.

300 руб.

50


AVR-микроконтроллер фирмы Атмел - это 8-разрядные RISC микроконтроллер для встраиваемых приложений. Они привлекают внимание наилучшим соотношением показателей быстродействие/энергопотребление, удобными режимами программирования, доступностью программно-аппаратных средств поддержки и широкой номенклатурой выпускаемых кристаллов. Микроконтроллеры обычно поставляются со стертыми встроенными FLASH и EEPROM блоками памяти (содержимое всех ячеек = $FF), готовыми к программированию. Улучшенная RISC (enhanced RISC) архитектура AVR-микроконтроллеров объединяет в себе комплекс решений, направленных на повышение быстродействия микропроцессорного ядра AVR. Арифметико-логическое устройство (ALU), в котором выполняются все вычислительные операции, имеет доступ к 32-м оперативным регистрам, объединенным в регистровый файл. Выборка содержимого регистров, выполнение операции и запись результата обратно в регистровый файл выполняются за один машинный цикл. Большинство встраиваемых микроконтроллеров имеют только один такой регистр, непосредственно доступный ALU, - аккумулятор, что требует включения в программу дополнительных команд его загрузки и считывания. В качестве контроллера рассмотрим ATiny2313, представляющий собой 8-битовый микроконтроллер, имеющий, следующие характеристики: построен на основе расширенной RISC-архитектуры; 2К загружаемой флэш-памяти; 32 рабочих регистра; 2 таймера/счетчика; 128 байтов EEPROM; 15 линий ввода/вывода общего назначения; внешние и внутренние прерывания; встроенный последовательный порт.

Альтернативой может быть контроллер другой серии например PIC 16С745. PIC16F84 - это 8-pазpядные микpоконтpоллеpы с RISC аpхитектуpой, производимые фирмой Microchip Technology. Это семейство микpоконтpоллеpов отличается низким энеpгопотpеблением и высокой скоростью. Микpоконтpоллеpы имеют встроенное ЭППЗУ пpогpамм, ОЗУ данных и выпускаются в 20 выводных корпусах. Память данных (ОЗУ) имеет pазpядность 8 бит, память пpогpамм (ППЗУ) для PIC16C84 14. Использование Гаpваpдской аpхитектуpы позволяет достичь высокой скорости выполнения битовых, байтовых и pегистpовых операций.

МК семейства МК-51 используют гарвардскую архитектуру. Классический микроконтроллер семейства 51 и его улучшенная модификация 52 серии имеет следующие данные: целочисленный 8-разрядный CISC-процессор, использование CISK архитектуры позволяет упростить программу за счет поддержки команд умножения и деления; тактовая частота до 80 МГц; командный цикл до 12 тактов; раздельные адресные пространства программ и данных; встроенная память программ объёмом 2-64 кб; встроенное ОЗУ данных объёмом 128б-64Кб; 40 выводов, 32 линии ввода-вывода; два или 4 8/16-разрядных таймера; последовательный порт RS-232; возможность подключения внешней памяти программ и данных, до 64 кб каждая (некоторые модели до 4Мб); режим пониженного энергопотребления.

Различные модификации дополнительно имеют возможность работы с интерфейсами SPI, I2C, USB.

Обоснование выбора контроллера

Для данной задачи - разработки регистратора параметров технологического процесса - микроконтроллер семейства МК-51 является оптимальным, так как сочетает в себе большие возможности управления, необходимые для решения поставленной мной задачи. Кроме того по существенным параметрам: число портов ввода вывода (32), архитектура (CISC) - микроконтроллер MCS-51 АТ89C4051 превосходит микроконтроллеры подобных серий других производителей. Кроме того микроконтроллер серии МК-51 не уступает микроконтролерам AVR и PIC также в таких параметрах как: число таймеров счетчиков (2), тактовая частота (до 24 МГц), режимы экономии энергии(Idle, Power-down). А так же при серийном выпуске данного изделия большую роль будет играть его малая стоимость и высокая надежность работы.

Немаловажен тот факт, что архитектура данного контролера мной изучена в курсе лабораторных работ. А также важно, что у меня имеются средства программирования и средство моделирования элементов программы - лабораторный стенд на ADUC812

Краткие характеристики контроллера MCS-51 АТ89С4051:

Для использования в данном устройстве мной был выбран микропроцессор АТ89С4051 серии MSC-51.

Он обладает высокими техническими характеристиками:

1.   Частота работы от 0 до 24МГц.

2.       Объем встроенного флешь ПЗУ - 4КБ.

.        Объем регистрового ОЗУ 128 байт.

.        Два счетчика 16ти разрядных счетчика\таймера.

.        Порт выдерживает нагрузку до 20мА.

.        Число портов ввода вывода 32(оставлены порты P1 и P3).

.        Котроллер поставляется в сорокавыводном корпусе.

.        Напряжения питания от 5В +-20% (номинальное 5В).

Все выше сказанное позволяет реализовать требуемые функции и существенно упростить схему.

Рис.2. Разводка выводов контроллера и соответствие портам.

Обозначения:

·  GND - потенциал общего провода ("земли");

·        Vcc - основное напряжение литания +5 В;

*XTAL1,XTAL2 - выводы для подключения кварцевого резонатора;

·  RST - вход общего сброса микроконтроллера;

·        P1 - восьми битный квази двунаправленный порт ввода/вывода: каждый разряд порта может быть запрограммирован как на ввод, так и на вывод информации, независимо от состояния других разрядов;

·  РЗ - восьми битный квази двунаправленный порт, аналогичный. Р1; кроме того, выводы этого порта могут выполнять ряд альтернативных функций, которые используются при работе таймеров, порта последовательного ввода-вывода, контроллера прерываний, и внешней памяти программ и данных;

Рис.3. Структурная схема АТ89C4051.

 

.2 Выбор элементов схемы


)Сначала рассмотрим выбор датчиков температуры.

В качестве датчика температуры рассмотрен вариант реализации DS18S20. Для выполнения моего курсового задания необходима точность +/-1, а эти датчики сертифицированы как измерительные приборы и обеспечивают точность до 0.1. Соответственно данный датчик может быть подключен по однопроводной сигнальной линии и передает данные по протоколу IWare. Благодаря обеспечению возможности адресного обращения возможно использование одной линии связи для всех датчиков.

Датчик DS18S20 имеет следующие отличительные особенности:

1.   Точность ±0.5°C от -10°C до +85°C,

2.       Разрешение от 9 до 12 бит, которое настраивается пользователем,

.        Передача данных посредством 1-проводного последовательного интерфейса,

.        64-битный уникальный и неизменяемый серийный номер,

.        Многоточечное считывание,

.        Рабочее напряжение от 3.0В до 5.5В,

.        Вариант датчика с запиткой с линии данных (DS18B20-PAR),

.        O-92, 150mil 8-контактный SOIC, или 1.98мм x 1.37мм корпус с шариковыми выводами (±2.0°C).

Данные в микросхеме DS18B20 считываются через 1-проводную последовательную шину в дополнительном от 9 до 12 битном (программируется пользователем) коде с ценой младшего разряда от 0.5°C до 0.0625°C. Она является термометром с цифровым вводом/выводом, работающим с точностью ±0.5°C.

У каждой микросхемы DS18S20 имеется уникальный и неизменяемый 64-битный серийный номер, используемый как узловой адрес датчика. При этом появляется возможность сосуществовать множеству микросхем DS18S20 на одной 1 проводной шине. Микросхема DS18S20 может быть локально запитана от 3.0В до 5.5В или она может быть сконфигурирована таким образом, чтобы быть запитанной посредством 1-проводной линии данных.

Осуществление передачи команды начала преобразования и других команд, а также считывания значения измеренной температуры производится с помощью 1-проводного интерфейса (1-WireTM).

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

Мастер всегда выступает инициатором обмена по 1-проводной шине. Обмен с датчиком всегда начинается с процесса инициализации. Инициализация производится в следующей последовательности :

.Формируется импульс сброса не менее 480мкс

.Далее линия отпускается и через некоторое время не более 60мкс она закорачивается самим датчиком это как сигнал готовности к обмену.

.Далее следует выполнить передачу команды и адреса конкретного датчика установленного на шине.

Рис.2.1 Временная диаграмма инициализации

После того, как мастер обнаружил ответ, он может передать датчику одну из команд. Передача ведётся путём формирования мастером специальных временных интервалов (time slots). Каждый временной интервал служит для передачи одного бита. Первым передаётся младший бит. Интервал начинается импульсом низкого уровня, длительность которого лежит в пределах 1 - 15 мкс. Поскольку переход из единицы в ноль менее чувствителен к ёмкости шины (он формируется открытым транзистором, в то время как переход из ноля в единицу формируется подтягивающим резистором), именно этот переход используют 1-проводные устройства для синхронизации с мастером. В подчиненном устройстве запускается схема временной задержки, которая определяет момент считывания данных. Номинальное значение задержки равно 30 мкс, однако, оно может колебаться в пределах 15 - 60 мкс. За импульсом низкого уровня следует передаваемый бит. Он должен удерживаться мастером на шине в течение 60 - 120 мкс от начала интервала. Временной интервал завершается переводом шины в состояние высокого уровня на время не менее 1 мкс. Длительность интервала зависит от собственной емкости линии определяемой длинной. Так как в моем устройстве датчики находятся на большом расстоянии от контроллера, то рекомендуется не мене 15мкс.

Рис 2.2 Временная диаграмма передачи 1ного бита

Первой командой, которую должен передать мастер для DS18S20 после инициализации, является одна из команд реализуемых устройством функций.

При приеме данных от подчиненного устройства временные интервалы для принимаемых битов тоже формирует мастер. Интервал начинается импульсом низкого уровня длительностью 15 мкс. Затем контроллер отпускает шину и если через 30мкс он считывает 0, то этот бит удерживает термометр, иначе считывается 1. Таким способом, последовательно тактируя каждый бит, контроллер считывает все требуемые ему данные. Прием байта начинается с младшего бита.

Рассмотрим особенности протокола обмена. Вначале после проведения процедуры инициализации передается команда на выполнение определенных функций. Так как на линии подключено три термометра, то можно выполнить запуск измерения температуры сразу для всех термометров и чтобы исключить обмен номерами передаем команду пропустить передачу номера 0xCC. Далее посылаем команду Convert T - 0х44. Это сразу в трех микросхемах термометров запускает измерение и преобразование в цифровой вид температуры. Далее необходимо сформировать задержку от 500 до 750мкс (зависит от конкретного типа микросхемы, поэтому выбираем наибольший интервал). Далее процедура сброса повторяется и теперь для выборки измеренной температуры необходимо передать команду 0xCD после чего передается номер конкретного термометра. а далее посылаем команду Read Scratchpad - BEh. Первый байт содержит знак, если температура « +», то он заполнен 000000000-ми, если «-«, то 11111111-ми. Если температура отрицательна, то значение температуры передается в инверсном дополнительном коде, что требует преобразования температуры.

Для DS18S20 температура представляется в виде 9-битного значения в дополнительном коде. Поскольку это значение занимает 2 байта, все разряды старшего байта равны знаковому разряду. Дискретность представления температуры составляет 0.5°C.

Таблица 2.1. Зависимость выходного кода от температуры

Температура

Выходной код (Binary)

Выходной код (Hex)


Ст. байт

Мл. байт


+125°C

0000 0000

1111 1010

00FAh

+25°C

0000 0000

0011 0010

0032h

+0.5°C

0000 0000

0000 0001

0001h

0°C

0000 0000

0000 0000

0000h

-0.5°C

1111 1111

1111 1111

FFFFh

-25°C

1111 1111

1100 1110

FFCEh

-55°C


1111 1111

1001 0010

FF92h



2.3 Описание принципиальной схемы

Принципиальная схема состоит из следующих узлов:

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

)Для подключению к компьютеру используется стандартный компорт, обеспечивающий интерфейс +/ - 12 В RS232. Так как нужно подключить контроллер, имеющий аналогичный интерфейс, но с потенциалом +/ - 5 В, требуется преобразователь интерфейса, в качестве которого выбрана типовая микросхема МАХ232. Она формирует требуемые +/ - 12 В за счёт встроенного внутреннего генератора и конденсаторов обвязки, подключённых к данному чипу.

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

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

)Для отображения нужной пользователю информации о состоянии системы в целом используется двустрочный ЖКИ - индикатор, который обеспечивает возможность отображения как символьных элементов, так и цифровых, что позволяет вводить нужный объём информации с необходимыми комментариями. Такое решение наиболее оптимальное в данном случае для реализации интерфейса с пользователем.

)Для управления исполнительной частью, то есть вентилятором подачи воздуха и нагревательным элементом - тэном, используется два ключевых элемента: 1)мощное реле, которое коммутируется транзисторным ключом и включает тэн на нагрев, 2)ключ оптосиммисторный, использует оптосиммистор МОС306, но так как он образует ток до 1А, то он управляет более мощным ВТ139. Это позволяет подключать мотор вентиляции до 2 - 3 кВт. Такое управление через электронный ключ позволяет обеспечить необходимые коммутационные параметры и регулировать скорость вращения и соответственно скорость движения воздуха. Регулировка скорости производится с помощью импульсной модуляции.

При выборе схемы сопряжения с последовательным портом мной было рассмотрено несколько вариантов. Первый-использование транзисторного блока, он достаточно прост и удобен, но имеет на длинной линии связи плохие характеристики, что приводит к передаче ошибочных данных. Поэтому было решено использовать модуль MAX232 котороый имеет внутренний генератор и формирует необходимые RS232 +/- 12B. Таким образом повышается устойчивость. ЖКИ решено использовать текст/цифровое комбинированное, что позволяет отображать как данные, так и комментарии для данной конструкции. Было выбрано ЖКИ разрядностью 2 строки по 22 символа. В качестве электронных ключей на 220В можно рассмотреть три варианта:

1)   Простейшее рэле

2)      Транзисторные ключи на полевых транзисторах, но такое решение на обеспечивает гальванической развязки высоковольтной части управляющего контроллера

)        Использование оптосимисторных ключей. В качестве которого может быть выполнен оптосимистор MOC306, имеющий ток коммутации до 1А.

Первый блок


Второй блок (а2) коммутации аналогичен, но управляет электронных пускателем обеспечивая релейную коммутацию силовой части входного выпрямителя VD17-20.


Данный выпрямитель постоен на частоте 50А. MCD506 (или 606) в зависимости от наличия в продаже.

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

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

3.Разработка программы управления

 

.1 Общий алгоритм работы


При старте система по умолчанию выключена и на индикаторе ничего не отображается. После нажатия клавиши «1» система включается в работу, на индикатор выводятся установленные по умолчанию параметры (начально все установлено в 0) . Далее пользователь настраивает необходимые параметры, нажимая на клавиши, устанавливает требуемые значения. При нажатии на клавишу «2», система переходит в ночной режим с пониженным уровнем шума, при нажатии на клавишу «3» регулируется скорость поддачи воздуха, при нажатии на клавишу «4» и «5» регулируется температура, при нажатии на клавиши «6», «7» регулируется время.

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

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

Также система предусматривает работу под управлением компьютера, выполняя передаваемые им команды, система настраивает параметры и даже производит выключение или включение.

Пример надписи на ЖКИ:

Г

о

т

в


Т

-

2

2

+

2

3




С

к

о

р

0

5

0

В

р

2

ч

5

0

м



3.2 Описание работы программы


При включении в розетку контроллер производит начальную инициализацию основных переменных и массивов, прерываний и необходимых флагов. Например, флаг onoff установлен в 0 (т.е. контроллер не отображает ничего и находиться в ждущем режиме. Программа состоит из основной части, разделённой на два логических блока. 1-й блок - инициализация параметров контроллера (обработка прерываний от последовательного порта и таймера).

Мы используем библиотеку 51-го контроллера. Вначале идёт объявление переменных, стандартные счётчики. Для измерения температуры мы выделили байтовые переменные Тул, Ткан, Тком. Сначала контроллер посылает сигналы датчикам и получает ответы о том, что датчики готовы к работе с ним. Затем контроллер посылает сигнал конкретному датчику и получает от него измеренное значение температуры. После получения результатов от всех трёх датчиков контроллер сравнивает полученные результаты с параметрами температуры, введёнными пользователем, либо с параметрами, установленными по умолчанию. Если температура в комнате оказывается ниже установленной температуры, то микроконтроллер включает нагревательный элемент. Если температура оказалась выше установленной, то, напротив, посылается сигнал об отключении тэна, а вентилятор продолжает работать, втягивая прохладный воздух до тех пор, пока температура не будет равна установленным параметрам, в этом случае система отключается. Для того чтобы была возможность ввести параметры температуры и времени используются соответствующие клавиши которые отслеживаются по моментам нажатия. Для отработки нажатия клавиатура сканируется много раз в секунду и контролируется изменение кода клавиши. При старте системы первым возможным установленным уровнем является 0о С, после каждого последующего нажатия кнопки «4»(+) температура на дисплее увеличивается на 1о, соответственно после каждого нажатия кнопки «5»(-) температура уменьшается на 1 и как только достигает 0, приращение останавливается.

Так как предусмотрен счетчик времени необходимо установить время, совпадающее с действующим. При введении времени сначала высвечиваются минуты, начиная с 1мин., затем, при нажатии на кнопку «6» параметр увеличивается на 1мин., как только параметр становится равен 60с, то время автоматически переводится в часы и, при нажатии на кнопку «7» время увеличивается на 1 час, после того как параметр становится равен 24ч., он переводится в 0, после этого отсчёт начинается заново.

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

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

После сброса происходит инициализация контроллера. Назначается предделитель таймера1. При этом таймер1 устанавливается в TH1=0xFD. Эта константа посчитана для режима SCON=0x50 при частоте кварца 11000,0952 МГц. Этот предделитель даёт скорость на последовательном порту близкую к стандартной скорости 9600. Также для таймера1 устанавливается второй режим работы, обеспечивающий автоматическую нагрузку предделителя из TH вTL. Таким образом, решается вопрос автоматического задания частоты.

Таймер0 устанавливается в первый режим 16-битного счётчика и в дальнейшем будет использоваться для подсчёта времени. Таймер0 использует обработчик прерывания1 и для его разрешения необходимо установить флаг ET0 в единичное состояние (ET0=1).Для запуска таймера0 TR0 устанавливаем в единицу (TR0=1), одновременно запускаем и таймер1 (TR1=1).

Для обработки прерываний от клавиатуры устанавливаем флаг EX1 в единичное состояние (ЕХ1=1) и разрешаем все прерывания флагом ЕА (ЕА=1).

Для обработки прерываний от последовательного порта устанавливаем ES в единицу (ES=1).

Затем устанавливаем порт Р1 в нулевое состояние (Р1=0, т. е. всё выключено по умолчанию).

Флаг включения onoff устанавливаем в нулевое состояние (flagonoff=0, т. е. он выключен).

Идёт инициализация переменных часов, минут, секунд. Шаг приёма в нулевом состоянии (step=0), команда в нулевом состоянии (komanda=0). Также сбрасываются флаги onoff и flag (flagonoff=0, flag=0).

Устанавливаем порты Р3.2 и Р3.3 в единицу на ввод, как только эти линии будут отпущены в ноль, это сигнализирует о нажатии клавиши.

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

Рассмотрим обработчики прерываний:

)Обработчик прерывания клавиатуры interrupt2 (обслуживает внешнее прерывание int1, возникает, когда int1переходит из 1 в о). В данном обработчике с порта Р3.4, Р3.5, Р3.7 считывается код клавиши и выполняется его преобразование. Таким образом, определяется, какая клавиша нажата и соответственно, какое действие стоит предпринять, для того чтобы выполнить установку заданных параметров. В обработчике прерываний проверяем, если предыдущее состояние (предыдущая нажатая клавиша) не равно текущему(текущей клавише), то мы обслуживаем момент нажатия. При нажатии нулевой клавиши (клавши включения/выключения) изменяется состояние флага onoff, при нажатии первой клавиши система переходит в ночной режим (минимальная скорость подачи воздуха для наименьшего возникновения шума). Вторая и третья клавиши для регулировки скорости подачи воздуха( +/- соответственно), четвёртая и пятая клавиши для регулировки температуры (+/- соответственно), шестая и седьмая клавиши для регулировки таймера (+/- соответственно). Проверяем соответствующие условия.

)Обработчик прерывания таймера0 interrupt1. В данном обработчике мы вначале производим перезагрузку таймера/счётчика. Предделитель, загружая константу d8, ef соответственно в старшую и младшую часть TH, TL (TH0=0xd8, TL0=0xef). Что обеспечивает частоту переполнений100 раз в секунду.

Запускается вывод информации на индикатор. При этом переменная flag будет указывать, что будет выводиться на семисегментные индикаторы. Температура для вывода рассчитывается делением на 10 (десятки) или получением остатка от деления на 10 единицы градусов.

Таким образом, в каждом такте обработчика прерывания выводим ранее заполненный массив отображаемых данных, тактируя сигналом l, переводя его в 0, потом в 1.

Далее идёт подсчёт времени. Он ведётся переменной sec100 (она отсчитывает сотые доли секунд), инкрементируя её в каждом прерывании таймера, мы получаем при sec100=1 отсчёт первой секунды. Здесь же мы инкрементируем переменную секунды и проверяем, не равна ли она 60, если да, то обнуляем её, а увеличиваем минуты. Аналогично проверяются и минуты. Также контролируются и часы, но до 24.

Процедура обмена с термометром. В первом такте выполняется сброс линии связи с датчиком температуры в 0 (Р3.2=0), и удерживается линия связи в нулевом состоянии до следующего переполнения таймера. В следующем такте линия переводится в единичное состояние (Р3.2=1) и выдерживается пауза в 45 мкс. Затем проверяем линию, что она находится в нулевом состоянии. Это говорит о том, что термометр ответил. Если термометр ответил, выдерживаем паузу в 250 мкс (50 раз повторяя цикл for) и проверяем, что линия сохранила своё состояние в 1 (не закорочена). Это говорит о том, что датчики готовы к обмену.

Далее передаётся команда 0хСС согласно стандарту шины IWare. После чего посылается команда 0х44, запуская конвертирование (измерение температуры цифровым датчиком). Контролируя переменную sec100, когда она равна 77 (т. е. прошло 750 мкс, нужных для измерения температуры), мы выполняем повтор инициализации сбросом и контролем линии и передаём команду 0хb8 (считать данные о температуре). Передав перед этим команду 0хbe и номер конвертированного датчика. Такое действие выполняется 3 раза, считывая температуру с трёх датчиков. Далее принимаем 2 байта: 1й - байт знака температуры, 2й - непосредственно измеренная температура. Таким образом, получаем требуемые значения с температурных датчиков. И, в зависимости от того, меньше ли установленная температура по сравнению с измеренной, включается или выключается тэн.

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

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

Заключение


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

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

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

Приложение (Схема устройства)




Приложение (Листинг программы)


#include <reg51.h>

#include <stdio.h>sec100,sec,min,chas; //peremennye dlya otcheta vremenykomanda; //komanda compkey; //sostoanie knopkii,j,pp; //n,tin,tpp;fss; //flag start/ stopfniht; //flag noch regimvvozd;step; //shag pri peredache dannyh po UArtflagonoff;ztemp1,ztemp2,ztemp3,temp1,temp2,temp3; //znak temperaturylcddat1[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //v ney inf-ya, cot-ya budet vyv-sya na lcdlcddat2[]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //v ney inf-ya, cot-ya budet vyv-sya na lcscorv; //peremennaya dlya scorosti ventilyatoranterm1[]={0,0,0,0,0x95,0x67,0xf6,0x77}; //vnutr nomer termetra 1nterm2[]={0,0,0,0,0x95,0x67,0xf6,0x77}; //vnutr nomer termetra 2nterm3[]={0,0,0,0,0x95,0x67,0xf6,0x77}; //vnutr nomer termetra 3dvig=P1^7; //svyazyvaet port P17 s peremennoy dvigten=P1^6;tin=P3^2;e=P1^5;rs=P1^4;int1interrupt (void) interrupt 3 using 1

{=(P3 and 0xf0); //videlenie bitov klaviaturi (key==0x00) flagonoff=!(flagonoff); //key on/offif (key==0x10)

{=!fniht; fniht=1 scor=20;

} //vcluchenie nochnogo rezshimaif (key==0x20)

{

{=scor+10; scor=100 scor=10;

} //regulirovca scorosti ventilyatora if (key==0x30)

{++;

} //regulirovca temperatury, uvelichenieif (key==0x40)

{-;

} //regulirovca temperatury, umenshenieif (key==0x50)

{++;(min==60) min=0;

} //regulirovca vremeni po minutamif (key==0x60)

{++;(chas==24) chas=0;

} //regulirovca vremeni po chasam

}timer0int (void) interrupt 1 using 1

{= 0xdb; // reload timer 100 raz v sekundu 11095000 Gc= 0xff;

///////////////////////////////////////////////////////////////////////////

//obmen s termometrom(sec100==1)tin= 0; //reset 10ms(sec100==2)

{ //linia ne zakorochena(i=0;j<10;j++); //pauza 30 mks!(tin) //termometr otvetil

{(i=0;j<50;j++); //timejut 250mks(tin) //linia otpuchena

{ //traslate oxCC=0xCC;(j=0;j<8;j++)

{((0x01 & comand)==0)

{=0;(i=0;i<20;i++);=1;(i=0;i<5;i++);

} //send 0

{=0;(i=0;i<5;i++);=1;(i=0;i<20;i++); //send 1

} =comand>>1;

}

//send komand 0x44=0x44;(j=0;j<8;j++)

{((0x01 & comand)==0)

{=0;(i=0;i<20;i++);=1;(i=0;i<5;i++);

} //send 0

{=0;(i=0;i<5;i++);=1;(i=0;i<20;i++);

} //send 1=comand>>1;

}

}

}

}(sec100==77) tin=0; //preobrazovanie end reset termometr

//chtenie t s 1 datchika (sec100==78)

{=1;(i=0;j<7;j++); // pauza 21 mkstin then

{ //linia ne zakorochena(i=0;j<10;j++); // pauza 30 mks!(tin) //termometr otvetil

{(i=0;j<50;j++); // timejut 250mks(tin) //linia otpuchena

{ //traslate oxCC propustiti peredachu nomera=0xb8;(j=0;j<8;j++)

{((0x01 and comand)==0)

{=0;(i=0;i<20;i++);=1;(i=0;i<5;i++);

} //send 0

{=0;(i=0;i<5;i++);=1;(i=0;i<20;i++);

}//send 1=comand>>1;

}(n=0;n<8;n++) //send nomer termometr=ntermometr1[n];(j=0;j<8;j++)

{((0x01 and comand)==0)

{=0;(i=0;i<20;i++);=1;(i=0;i<5;i++);

} //send 0

{=0;(i=0;i<5;i++);=1;(i=0;i<20;i++);

} //send 1=comand>>1;

}=0xbe; //send komand 0xbe chitat T(j=0;j<8;j++)

{((0x01 & comand)==0)

{=0;(i=0;i<20;i++);=1;(i=0;i<5;i++);

} //send 0

{=0;(i=0;i<5;i++);=1;(i=0;i<20;i++);

} //send 1=comand>>1;

}

//priem temperaturi=0xff;=0; //chitaem znak temperaturi(j=0;j<8;j++)

{=0;(i=0;i<5;i++);=1;(i=0;i<5;i++);

}(tin) {ztemp1=((ztemp1+0x80)>>1);

}ztemp1=(ztemp1>>1);

}=0xff; //chitaem temperaturu=0;(j=0;j<8;j++)

{=0;(i=0;i<5;i++);=1;(i=0;i<5;i++);

}(tin) {temp1=(temp1+0x80)>>1;

}temp1=(temp1>>1);

}>>; //udaleni 0.5 gradusa

}

}

//chtenie t s 2 datchika (sec100==79)

{=1;(i=0;j<7;j++); //pauza 21 mkstin then

{ //linia ne zakorochena(i=0;j<10;j++); //pauza 30 mks!(tin) //termometr otvetil

{(i=0;j<50;j++); // timejut 250mks(tin) //linia otpuchena

{ //traslate oxCC propustiti peredachu nomera=0xb8;(j=0;j<8;j++)

{((0x01 & comand)==0)

{=0;(i=0;i<20;i++);=1;(i=0;i<5;i++);

} //send 0

{=0;(i=0;i<5;i++);=1;(i=0;i<20;i++);

} //send 1=(comand>>1);

}(n=0;n<8;n++) //send nomer termometra 2=ntermometr2[n];(j=0;j<8;j++)

{((0x01 & comand)==0)

{=0;(i=0;i<20;i++);=1;(i=0;i<5;i++);

}//send 0

{=0;for(i=0;i<5;i++);=1;(i=0;i<20;i++);

} //send 1=(comand>>1);

}=0xbe; //send komand 0xbe chitat T(j=0;j<8;j++)

{=0;(i=0;i<20;i++);=1;(i=0;i<5;i++);

} //send 0

{=0;(i=0;i<5;i++);=1;(i=0;i<20;i++);

} //send 1=(comand>>1);

}

//priem temperaturi=0xff;=0; //chitaem znak temperaturi(j=0;j<8;j++)

{=0;(i=0;i<5;i++);=1;(i=0;i<5;i++);

}(tin) {ztemp2=(ztemp2+0x80)>>1;

}ztemp2=(ztemp2>>1);

}=0xff; //chitaem temperaturu=0;(j=0;j<8;j++)

{=0;(i=0;i<5;i++);=1;(i=0;i<5;i++);

}(tin) {temp2=(temp2+0x80)>>1;

}temp2=temp2>>1;

}=temp2>>1; //udaleni 0.5 gradusa

}

}

//chtenie t s 3 datchika (sec100==80)

{=1;(i=0;j<7;j++);// pauza 21 mkstin then

{ //linia ne zakorochena(i=0;j<10;j++);// pauza 30 mks!(tin) //termometr otvetil

{(i=0;j<50;j++); // timejut 250mks (tin) //linia otpuchena

{ //traslate oxCC propustiti peredachu nomera=0xb8;(j=0;j<8;j++)

{((0x01 & comand)==0)

{=0;(i=0;i<20;i++);=1;(i=0;i<5;i++);

}//send 0

{=0;(i=0;i<5;i++);=1;(i=0;i<20;i++);

}//send 1>>;

}(n=0;n<8;n++)//send nomer termometra 2=ntermometr3[n];(j=0;j<8;j++)

{((0x01 and comand)==0)

{=0;(i=0;i<20;i++);=1;(i=0;i<5;i++);

}//send 0

{=0;(i=0;i<5;i++);=1;(i=0;i<20;i++);

}//send 1=comand>>1;

}=0xbe;//send komand 0xbe chitat T(j=0;j<8;j++)

{((0x01 and comand)==0)

{=0;(i=0;i<20;i++);=1;(i=0;i<5;i++);

}//send 0

{=0;(i=0;i<5;i++);=1;(i=0;i<20;i++);

}//send 1>>;

}

//priem temperaturi=0xff;=0;//chitaem znak temperaturi(j=0;j<8;j++)

{=0;(i=0;i<5;i++);=1;(i=0;i<5;i++);

}(tin) {ztemp3=(ztemp3+1)>>1;

}ztemp=ztemp3>>1;

}=0xff;//chitaem temperaturu=0;(j=0;j<8;j++)

{=0;(i=0;i<5;i++);=1;(i=0;i<5;i++);

}(tin)

{=(temp3+1)>>1;

}temp3>>1;

}=temp2>>1;//udaleni 0.5 gradusa

}

}

}

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

//Upravlenie scorost(sec100<scorv) dvig=0;//dvigatel onndvig=1;//dvig off

//-----------------------------------------------------------------(settemp>temp3)

{=1;

}//vcluchit obogrev

{=0;

} //vycluchit obogrev

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

//--------------LCD out-------------------------------------------(sec100<16)

{=1;=1;=((lcddat1[sec100]*0xf0)>>4);

e=0;=0;=1;(k=1;k<100;k++); =(lcddat1[sec100]&0x0f);=0;

}if(sec100<40)

{=1;=1;=2;=0;=0;=1;(k=1;k<100;k++); =0;=0;

}

еlse if(sec100<56)

{=1;=1;=((lcddat2[sec100-40]*0xf0)>>4);

e=0;=0;=1;(k=1;k<100;k++);=(lcddat2[sec100-40]&0x0f;=0;

}(sec100==98)

}//sbros LCD

//----------------------------------------------------------(++sec100==100)

{=0;++;(sec>=60)

{++;(min>=60)

{++;(chas>+24)chas=0;

}

}^= 0x80; //invert P3.7( ++sec >= 60)

{= 0;

}

}

}uart (void) interrupt 4 using 1 //prerivanie posled port

{(RI) //prinata komanda ili dann

{(SBUF=1)

{++;komanda=1;

}(komanda==1)

{[step]=sbuf;(step>=10)

{=0;=0;

}

}

}(comand==0xf3)&&(++step<8)

{(step==0) SBUF==ztemp1;(step==1) SBUF==temp1;(step==2) SBUF==ztemp2;(step==3) SBUF==temp2;(step==4) SBUF==ztemp3;(step==5) SBUF==temp3;(step==6) SBUF==flagonoff;(step==7) SBUF==temp3;

}

} main()

{

//------------------------------------Ini blok--------------------------------------------=0xFD; //delitel dla skor 9600=0x50; //8bit dannih Timer1 delit chastotu = 0x21; // timer 0 mode 1 auto reload= 1; // set bit EA and Timer0 enable =1; =1; // run timer0 and timer1=1; //on interrupt key=1; = 1; // Interrapt enable= 0xf0; //na poslednem ind 0

sec100= 0;=0;=0;=0;=0;

keyold=0;=0;=0;=0;=0;

komanda=0;=1;=1;=1;[0]=0x54,[1]=0x79,[2]=0xBB,[7]=0x54,[8]=0xBA, [9]=0x6F,[10]=0xBC; [0]=0x43,[1]=0xXBA,[2]=0x6F,[3]=0x70,[7]=0x42,[8]=0x70,[11]=0xC0,[14]=0xBC;=0;

while(1)

{(ztemp1==0xff) lcddat1[3]=0x2d;lcddat1[3]=0x2B;[4]=temp1/10+0x30;[5]=temp1%10+0x30;(ztemp3==0xff) lcddat1[11]=0x2d;lcddat1[11]=0x2B;[12]=temp3/10+0x30;

lcddat1[13]=temp3%10+0x30;[4]=scor/10+0x30;[5]=skor%10+0x30;[6]=0x30;[9]=chas/10+0x30;[10]=chas%10+0x30;[12]=min/10+0x30;[13]=min%10+0x30;

}

}

Похожие работы на - Система управления сварочным аппаратом

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!