Смекни!
smekni.com

Разработка системы управления аппарата по розливу воды в стаканчики (стр. 3 из 5)

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

Светодиод установлен, чтобы сигнализировать о включенном питании, резистор установлен для обеспечения необходимого тока светодиода. Так как светодиод светит при 20 мА, рассчитать сопротивление резистора не сложно: по закону Ома получим R = U / I = (5-2) / 0,02 = 150 Ом.


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

Как было указано выше, для работы аппарата был выбран микроконтроллер AtmelAT89C1051 [29] (рисунок 3.2).

PDIP/SOIC

Рисунок 3.2 – Назначение выводов AtmelAT89C1051

Технические характеристики:

• Совместим с MCS-51™ продуктами;

• 1Kбайт программируемой flashпамяти – рассчитанной: 1,000 запись/удаление циклов;

• 2.7Vдо 6Vрабочий диапазон;

• 0 Hz to 24 MHz;

• 64 байт SRAM;

• 15 программируемых I/Oвыходов;

• Один 16-BitТаймер/Счетчик;

• Три источника прерывания;

• Внутренний Аналоговый компаратор;

Описание:

AT89C1051 это низковольтный, высокопроизводительный CMOS 8-битный микроконтроллер с 1К байт программируемой памятью. Устройство собрано с использованием высоко плотной технологии и совместимо с индустриальным стандартом инструкций MCS-51™. Используя многослойный 8-битный CPU с памятью в монолитном чипе, делает AtmelAT89C1051 мощным микроконтроллером, обеспечивающим высокую гибкость и стоимостную эффективность решений множества ориентированных на контроль устройств.

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

Подключение устройств к микроконтроллеру:

Список подключений и описание см. таблица 3.1. [42-46]

Таблица 3.1 – Подключения

№ ножки Описание
20 Питание +5В
19 Р1.7 используется для подачи напряжения на одну из обмоток шагового мотора
18 Р1.6 используется для подачи напряжения на одну из обмоток шагового мотора
17 Р1.5 используется для подачи напряжения на одну из обмоток шагового мотора
16 Р1.4 используется для подачи напряжения на одну из обмоток шагового мотора
15 Р1.3 используется для запуска насоса через реле
14 Р1.2 используется для установки светодиода сигнализирующего о недостаточном уровне воды в баке.
13 Р1.1 не используется
12 Р1.0 не используется
11 Р3.7 Обеспечивает проверку уровня воды
10 Земля
9 Р3.5 не используется
8 Р3.4 не используется
7 Р3.3 не используется
6 Р3.2 не используется
5 Вход на инвертированный амплитудный осциллятор
4 Выход с инвертированного амплитудного осциллятора
3 Р3.1 не используется
2 Р3.0 не используется
1 Сброс Устанавливаем кнопку для сброса.

3.3 Тактовый генератор

Используем осциллятор с частотой 24 МГц (рисунок 3.3). Ёмкость конденсаторов равна 30 пФ, что рекомендует производитель, описывая данную схему в технической документации. [29, 31-40]

Рисунок 3.3 – Тактовый генератор

3.4 Проверка уровня воды

Рисунок 3.4 – Схема проверки уровня воды

Схема проверки воды в баке состоит из излучающего фотоны светодиода и принимающего фотодиода [31-41] (рисунок 3.4).

Фотодиод находиться на трубке, соединенный с баком. Он установлен на уровне соответствующий минимальному уровню воды. В трубке находиться поплавок, который перекрывает фотодиод, когда уровень воды мал.

Для работы светодиода необходимо обеспечить ток 20мА, для этого установлены резисторы. Рассчитывается он просто: по закону Ома получим

R = U / I = (5-2) / 0,02 = 150 Ом.

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

3.5 Индикатор уровня воды

Рисунок 3.5 – Индикатор уровня воды

Индикатор представляет собой светодиод зеленного цвета (рисунок 3.5), который будет светить, когда уровень воды достаточен, и мигать, если необходимо долить воду в бак. [31-41]

Для работы светодиода необходимо обеспечить ток 20мА, для этого установлены резисторы. Рассчитываются они просто: по закону Ома получим

R = U / I = (5-2) / 0,02 = 150 Ом

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

3.6 Схема управления шаговым двигателем

Как указывалось выше, для работы используется шаговый двигатель российского производства FL28STH32-0956A [13]. Вот некоторые его характеристики:

· Рабочий ток 0,95А;

· Крутящий момент 0,43 кг*см;

· Момент инерции ротора 0,9 г*cм2;

· Вес 0,11 кг.

Для работы мотора необходимо обеспечить ток в 0,95А для этого установлены блоки усиления (рисунок 3.6). Транзистор выбран так, чтобы обеспечить необходимый ток для работы шагового двигателя, а конкретно, если двигатель потребляет 0,95А, а выход микроконтроллера 20мА, то соответственно необходимый коэффициент усиления ≈50, для его обеспечения воспользуемся схемой Дарлингтона. [31-40]


Рисунок 3.6 – Сема управления шаговым мотором

Схема присоединена к 4 портам: с Р1.4 по Р1.7. Каждый порт отвечает за свою обмотку, таким образом, программно будем подавать сигнал на ту или иную обмотку и тем самым будем раскручивать ротор мотора.

3.7 Схема управления насосом

Для работы используется насос 2013 14Вт, имеющий отдельное питание от сети 220В, который включается с помощью низковольтного реле (рисунок 3.7). С помощью трубок он будет качать воду в стаканчики.

В схеме используется низковольтное реле российского производства РС4.524.315 [21] работающее от напряжения 4В и срабатывает при 80 мА, для обеспечения таких показателей достаточно внутреннего сопротивления реле.


Рисунок 3.7 – Схема управления насосом

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


4 Алгоритм работы

4.1 Описание блок схемы

Разработку программного обеспечения начнём с создания продуманного алгоритма, который приведён в виде блок-схемы (Приложение Б). [47, 48, 49]

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

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

Если уровень воды достаточен, включим светодиод индикации уровня воды, подав сигнал на порт, к которому присоединен светодиод.

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

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

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

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

4.2 Описание хода разработки программного обеспечения

Опишем ход реализации программы (Приложение В). [47, 48, 49]

Проверка синтаксиса и отладка программы осуществлялось с помощью программы фирмы KeilSoftwaremVisionv.2.04b.

Перед началом указывается адрес начала программы.

org 000h

ljmp BEGIN

Далее перечисляются необходимые переменные.

N_GLASS:DB6H;количество стаканчиков

N_MOTOR_COUNT:DB2H;количество оборотов ротора мотора

N_STEP:DB8H;шагом одного оборота ротора мотора

STEPS:DB90H, 10H, 30H, 20H, 60H, 40, 0C0H, 80H;шаги

TH_MOTOR:DB;задержка перед следующим шагом

TL_MOTOR:DB;задержка перед следующим шагом

TH_PUMP:DB;время работы мотора

TL_PUMP:DB;время работы мотора

TH_LED:DB;задержка смены состояния светодиода

TL_LED:DB;задержка смены состояния светодиода

TH_PAUSE:DB;задержка для паузы

TL_PAUSE:DB;задержка для паузы

В начале программы осуществляем настройку таймера/счетчика: