Блок управления стиральной машиной

ФЕДЕРАЛЬНОЕ АГЕНТСТВО  ПО ОБРАЗОВАНИЮ

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

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

«Алтайский государственный  технический университет им. И.И. Ползунова»

Бийский технологический  институт (филиал)

 

 

Факультет ИТАУ

 

 

Кафедра МСИА

 

 

Блок управления стиральной машиной

 

 

Курсовая работа

по курсу «Применение  микропроцессоров в технике и  технологии»

 

 

 

 

Выполнил:         студент гр. ИСТ-52 Гаськов М.Б.

 

Проверил:                     асс. Абраменко Д.С.

                                        асс. Лебедев А.Н.

 

 

 

 

БИЙСК 2008

СОДЕРЖАНИЕ

Введение……………………………………………………………......3

1   История стиральных машин……………………………….……… 4

1.2 Стирка под контролем электроники  …………………………….. 5

2  Аппаратная реализация…………………………………………… 7

2.1 Описание микроконтроллера……………………………………... 7

2.2 Описание датчика температуры…………………………………..  9

2.3 Описание датчика уровня воды………………………………..…10

2.4 Структурная схема………………………………………………… 12

3    Алгоритм работы программы.……………………………………. 13

Заключение …………………………………………………………….  15

Используемая литература……………………………………………..  16

Приложение А………………………………………………………….  17

Приложение Б…………………………………………………….…….  20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ВВЕДЕНИЕ

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

 Было предложено использовать микроконтроллер ATmega48, среду разработки AVR Studio и язык программирования C .

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. История стиральных машин

 Основные этапы эволюции стиральных машин:

    1. 1920-е годы - деревянные баки, обитые листовой медью, уступают место эмалированным стальным бакам;
    2. 1930-е годы - в машинах появляются механические таймеры и сливные насосы с электрическим мотором;
    3. 1949 г. - создано программное устройство для стиральной машины (программы набиваются на перфокартах);
    4. Выпущена первая в США автоматическая стиральная машина;
    5. начало 1950-х годов - машины обретают функцию отжима (центрифугирование);
    6. 1951 г. - первая автоматическая стиральная машина выпущена в Европе;
    7. 1978 г. - создана стиральная машина с системой управления на основе микропроцессора;
    8. середина 1990-х годов - разработаны стиральные машины с системой управления, работающей на принципах «нечеткой логики» (Fuzzy Logic) и позволяющей реализовать огромное число программ стирки;
    9. начало XXI века - стиральные машины интегрируются во внутриквартирную сеть бытовых приборов «интеллектуального дома» с возможностью доступа к сети Интернета.

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

 

1.2 Стирка под контролем электроники

В стиральных машинах  начала XXI века дискретная машинная логика с возможностью выбора, ограниченного вариантами «да» и «нет», «включено» и «выключено», уступила место более нечеткой логике (Fuzzy Logic), в которой многопараметрическому набору исходных данных - сведений о температуре и жесткости воды, степени и характере загрязнений, поступающих от многочисленных сенсоров, - ставится в соответствие массив вариантов действий всех электрических и механических компонентов машины. Сейчас число программ даже не фигурирует в паспортных данных машины: с учетом ввода самим пользователем различных дополнительных опций (увеличить число полосканий, ввести экономичный режим, отменить отжим и т.д.) оно исчисляется многими десятками, если не сотнями.

Микропроцессорные системы  управления стиральных машин до предела  облегчают пользование машиной. Например, владельцу стиральной машины с системой управления «6-е чувство» достаточно установить селектор на тот тип ткани, которую он собирается постирать. На дисплее он прочтет установленные машиной для этого типа ткани температуру стирки, скорость вращения барабана при отжиме и расчетное время стирки. При желании он может войти в меню и скорректировать параметры, предложенные машиной. Но она не позволит ему, скажем, отжать изделия из шерсти при 1200 об/мин или установить для деликатных тканей режим кипячения.

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

Работа с такой стиральной машиной напоминает общение с  компьютером: при необходимости с сенсорного дисплея машины можно войти в программу Fuzzy Wizard («Помощник»), которая поможет выбрать нужный режим работы машины и наиболее подходящую из дополнительных функций.

Оптический сенсор Clear Water определяет степень загрязненности воды и при необходимости активирует дополнительное полоскание белья. Это особенно важно для детей и людей, чувствительных даже к мельчайшим остаткам моющих средств. Сенсор определяет наличие в воде остатков грязи, стиральных средств, ниток, накипи и определяет, сколько полосканий потребуется для их устранения (машина может производить до трех дополнительных полосканий). Данный сенсор вмешивается в работу машины при выполнении программ «Хлопок», «Синтетика», «Бережная стирка», программы стирки смешанных тканей MIX, программы стирки спортивной одежды SPORT. А вот программы «Шерсть» и «Ручная стирка» дополнительных полосканий не допускают.

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

На сегодняшний день уже ни кого не увидишь на речке или озере стирающим бельё. [1]

 

 

 

 

2. Аппаратная реализация

2.1  Описание микроконтроллера

ATMega48/ATMega88/ATMega168 - 8 битные КМОП микроконтроллеры с AVR RISC архитектурой. Выполняя команды за один цикл, ATMega48/ATMega88/ATMega168 достигают производительности 1 MIPS при частоте задающего генератора 1 МГц, что позволяет разработчику оптимизировать отношение потребления к производительности.

AVR ядро объединяет систему команд и 32 рабочих регистра общего назначения. Все 32 регистра непосредственно связаны с арифметико-логическим устройством (АЛУ), что позволяет получить доступ к двум независимым регистрам при выполнении одной команды. В результате эта архитектура позволяет обеспечить в десятки раз большую производительность, чем стандартная CISC архитектура.

    • ATMega48/ATMega88/ATMega168 имеют следующие характеристики:
    • 4/8/16 кБ внутрисистемно программируемая Flash память программы;
    • 256/512/512 байтная EEPROM память данных;
    • 512/1К/1К байтная SRAM (статическое ОЗУ);
    • 23 линии ввода - вывода общего применения;
    • 32 рабочих регистра общего назначения;
    • три гибких таймера/счетчика со схемой сравнения, внутренние и внешние источники прерывания;
    • последовательный программируемый USART;
    • байт-ориентированный последовательный двухпроводной интерфейс;
    • шестиканальный АЦП (8-канальный у приборов в TQFP и MFL корпусах);
    • SPI порт и пять программно инициализируемых режима пониженного потребления;

 В режиме Idle останавливается  ядро, а SRAM, таймеры/счетчики, SPI порт  и система прерываний продолжают  функционировать. В Power-down режиме содержимое регистров сохраняется, но останавливается задающий генератор и отключаются все внутренние функции микропроцессора до тех пор, пока не произойдет прерывание или аппаратный сброс. В режиме Power-save асинхронные таймеры продолжают функционировать, позволяя отсчитывать временные интервалы в то время, когда микропроцессор находится в режиме сна. В режиме ADC Noise Reduction останавливается вычислительное ядро и все модули ввода-вывода, за исключением асинхронного таймера и самого АЦП, что позволяет минимизировать шумы в течение выполнения аналого-цифрового преобразования. В Standby режиме задающий генератор работает, в то время как остальная часть прибора бездействует. Это позволяет быстро сохранить возможность быстрого запуска приборов при одновременном снижении потребления.

Прибор изготовлен по высокоплотной  энергонезависимой технологии изготовления памяти компании Atmel. Встроенная ISP Flash позволяет перепрограммировать  память программы в системе через  последовательный SPI интерфейс программой-загрузчиком, выполняемой в AVR ядре, или обычным программатором энергонезависимой памяти. Программа-загрузчик способна загрузить данные по любому интерфейсу, имеющегося у микроконтроллера. Программа в загрузочном секторе продолжает выполняться даже при загрузке области памяти прикладной программы, обеспечивая реальный режим "считывания при записи". Объединив 8- битное RISK ядро с самопрограммирующейся внутри системы Flash памятью, корпорация Atmel сделала приборы ATMega48/ATMega88/ATMega168 мощными микроконтроллерами, обеспечивающими большую гибкость и ценовую эффективность широкому кругу управляющих устройств.

ATMega48/ATMega88/ATMega168 поддерживается различными  программными средствами и интегрированными  средствами разработки, такими как  компиляторы C, макроассемблеры, программные отладчики/симуляторы, внутрисхемные эмуляторы и ознакомительные наборы. [2]

 

 

 

2.2 Описание датчика температуры

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

LM94021, LM94022 - прецизионные интегральные датчики температур с аналоговыми выходами, которые могут работать при напряжении питания 1,5В. Выходной усилительный каскад соответствует классу АВ, что делает выход датчиков сильным источником втекающего и вытекающего тока для управления нагрузкой. Датчики генерируют напряжение, пропорциональное температуре в широком диапазоне -50°C…+150°C. Малый потребляемый ток делает датчики идеальным выбором для систем с батарейным питанием, а также для приложений температурного контроля общего назначения.

Два логических входа GS1 и GS0 определяют коэффициент передачи передаточной функции температура-напряжение. Можно выбрать следующие степени усиления: -5,5 мВ/°C, -8,2 мВ/°C, -10,9 мВ/°C или -13,6 мВ/°C. 
При установке минимального коэффициента передачи (GS1=0, GS0=0) датчики могут работать при напряжении питания 1,5В, при этом сохранив диапазон измерения температуры в пределах рабочего температурного диапазона                                                                                      -50°C…+150°C. Входы выбора коэффициента передачи можно непосредственно связывать с VDD или общим без использования подтягивающих резисторов. Применение датчиков в герметичной упаковке предоставляет возможность использования для измерения температур жидких сред. Данные датчики выпускаются фирмой National Semiconductor.

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

    1. напряжение питания 1,5…5,5 В;
    2. потребляемый ток 9 и 5,4 мкА;
    3. нагрузочная способность ±50 мкА;
    4. четыре выборочных диапазона;
    5. высокая точность в широком температурном диапазоне -50°C…+150°C;
    6. выход защищен от короткого замыкания;
    7. сверхминиатюрный корпус SC70;

Рабочий температурный  диапазон -50°C…+150°C .

Типовая схема включения представлена на рисунке 1.

Рисунок 1

 

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

 


Рисунок 2

[3]

 

2.3 Описание  датчика уровня воды

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

Функциональная схема  приведена на рисунке 3.

 







 

 

 

 

Рисунок 3

Принцип работы датчика.

Когда уровень жидкости в резервуаре (баке) доходит до нижней отметки, на которой установлен длинный электрод датчика бака, резервуар автоматически заполняется до верхнего уровня, на котором установлен короткий электрод датчика бака.  
Компараторы 1-2 сравнивают значение входного сигнала с опорным значением и выдают (в соответствии с условиями блока логики) сигнал на включение или выключение реле техническая характеристика датчик уровня воды ДУ-2 приведена в таблице 1. [4]

 

Таблица 1 Техническая характеристика ДУ-2

Название характеристики

значение

Напряжение питания, В (постоянное напряжение)

5-12

Максимальный ток потребления, мА

150

Тип выходного сигнала

сухой контакт

Габаритные размеры, мм

35х42х30


2.3 Структурная схема

Структурная схема приведена на рисунке 4.

 

 





 





 


Рисунок 4

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3 Алгоритм работы программы

Программа начинается с  подключения заголовочных файлов avr/signal.h, avr/io.h, avr/interrupt.h, avr/delay.h, stdlib.h. Далее идет описание глобальных переменных и констант:

  • table  массив из 10 элементов типа char, необходим для правильного отображения цифр на семисегментных индикаторах;
  • t - целочисленная переменная для хранения значения температуры;
  • k - целочисленная переменная для хранения числа полученного из АЦП;
  • low - переменная типа char для хранения  единиц времени;
  • high - переменная типа char для хранения  десятков  времени;
  • T- целочисленная переменная для задания температуры стирки;
    • Time- переменная типа char для задания времени стирки;
    • Rejim- переменная типа char для хранения  режима стирки.

В основном блоке программы  сначала запрещаются все прерывания. Далее идет настройка АЦП, для  этого обнуляется регистр ADMUX, и выставляются биты 7 (ADEN) и 3 (ADIE) регистра ADSRA. Обнуление ADMUX ведет к включению настроек по умолчанию в АЦП, бит ADEN регистра ADSRA служит для включения АЦП, а ADIE для разрешения прерываний АЦП.

Датчик температуры  может работать с диапазоном температур от -50 до +150. Следовательно, для нахождения температуры используется формула (1):

   (1)

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

Далее настраивается направление работы портов. Порты микроконтроллера могут быть настроены как для ввода, так и для вывода информации. Порты B и D подключаются к семисегментным индикаторам для отображения цифр, следовательно, они настраиваются на вывод информации. Для этого в DDRB и DDRD выставляем все единицы, а входы порта С, порта В7 и порта D7 настраиваются на ввод информации.

После срабатывания одной из кнопок, которым соответствуют порты: порт С(2) и порт С(3), включается клапан набора воды (порт С(6)). После чего начинается опрос датчика уровня воды подключенного к порту С(0), как только уровень воды достигнут отключается клапан заливки, включается нагреватель, и начинается опрос датчика температуры подключенного к порту АЦП (ADC(0)).

Температура полученная с датчика сравнивается с заданной температурой как только температура  достигает нужного значения отключается  нагреватель, включается электродвигатель (порт В(7)) и начинается отсчет времени, значение которого подается на семисегментные индикаторы подключенные к портам В и D.

По окончании работы таймера, отключается электродвигатель и включается клапан слива воды (порт D(7)), опрашивается датчик уровня воды как только значение датчика будет соответствовать  1 в порту С(6) происходит сравнивание переменной Rejim если ее значение не равно 2 работа программы заканчивается иначе программа продолжается с момента включения электродвигателя, где переменной Rejim присваивается значение 0 после повторного сравнения программа заканчивается.

 

 

 

 

 

 

 

 

 

 

 

ЗАКЛЮЧЕНИЕ

В ходе выполненной работы была разработана структурная схема блока управления стиральной машиной, имитирующий работу управляющего устройства. По данному алгоритму была реализована программа на языке C в среде AVR Studio. В качестве основы использовался микроконтроллер Atmega48. Алгоритм описан в виде блок-схемы в приложениях А. Текст программы приведён в приложении Б.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Используемая  литература

  1. Каталог познавательных статей «История развития стиральных машин». http://www.bcetyt.ru/house/technics/large/stiralka.html [Электронный ресурс]
  2. Shop CHIPDOC «Справочная литература по микроэлектронике». ATmega48. http://shop.chipdoc.ru/php/ishop/shop1.phtml?parentid=13&mode=2&prodid=333&search=&prec=0&into=0&typepoisk=&sort=0&start=0 [Электронный ресурс]
  3. RadioRadar.net «Прецизионные датчики температуры». http://www.radioradar.net/radiofan/security_devices/kodzam.html [Электронный ресурс]
  4. Датчики Siblink  «Датчики уровня». http://portal.pushok.ru/catalog/datch [Электронный ресурс]

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ПРИЛОЖЕНИЕ  А

Блок – схема работы блока управления стиральной машиной

 

 

 

ПРИЛОЖЕНИЕ В

Исходный текст  программы

#include<avr/signal.h>

#include<avr/io.h>

#include<avr/interrupt.h>

#include<avr/delay.h>

#include<stdlib.h>

/*Массив для записи  в порты семисегментных 

индикаторов чисел от 0 до 9*/

const unsigned char table[10] = {0b00111111, 0b00000110, 0b01011011, 0b01001111, 0b01100110, 0b01101101, 0b01111101, 0b00000111, 0b01111111, 0b01101111};

/* t - температура

k - значение, считанное  из регистра АЦП 

low и high - младная и  старшая часть числа,

отображаемого на индикаторах

*/

int T, t ,i, k;

char low , high;

char s,time;

char rejim, sl;

/*Процедура обработки  прерывания АЦП*/

ISR(SIG_ADC)

{

//считываем значение  из АЦП в переменную

k = ADC;

/*В датчике температуры  температура прямо пропорциональна 

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

температур от 0 до 100 получим  формулу для нах-я температуры*/

t = k*200/(1024);

 

if(t>=T) // условие для  температуры

{

PORTC&=~_BV(7); //выключаем  обогреватель

TCCR1B|=_BV(CS10);// Авторизация  времени стирки

PORTB = table[2];

PORTD = table[0];

s=0;

time = 20;

PORTB|=_BV(7); // Включаем двигатель  стиральной машины

ADCSRA&=~_BV(ADEN);

ADCSRA&=~_BV(ADSC);

}

//Разрешаем преобразования  в АЦП

ADCSRA|=_BV(ADSC);

};

ISR (SIG_OVERFLOW0)

{

/* Залив и нагрев воды*/

if(sl==0){

if(bit_is_clear(PORTC,6))

{

PORTC|=_BV(7);   //включаем  обогреватель

PORTC&=~_BV(0);  // Прекращаем  залив воды

TCCR0B&=~_BV(CS00); // отключаем таймер

sl=1;

/*Разрешаем преобразования  в АЦП*/

ADCSRA|=_BV(ADSC);

return;

}

/* Слив воды*/

if(sl==1){

if(bit_is_set(PORTC,6))

{

TCCR0B&=~_BV(CS00);  // отключаем таймер

sl=0;

PORTD&=~_BV(7);   // прекращаем слив

PORTC&=~_BV(4);   // откл индикацию режима 1

}

}

ISR (SIG_OUTPUT_COMPARE1A)

{

s++;

if(s==60)

{

s=0;

time--;

low = abs(time)%10;

high =(abs(time)-low)/10;

PORTB = table[high];

PORTD = table[low];

/*отсчёт таймера споследуещем  выводом на индикаторы*/

if(time==0)

{

PORTB&=~_BV(7);  // откл двигатель

TCCR1B&=~_BV(CS10);     //откл Таймер

if(sl==1)

TCCR0B|=_BV(CS00);

PORTD|=_BV(7);  // Вкл слив

PORTC&=~_BV(2)&~_BV(3); // откл  кнопки

if(rejim==2)

{

/*ставим время отжима*/

rejim = 0;

s=0;

time = 10;

PORTB|=_BV(7);

TCCR1B|=_BV(CS10);

PORTB = table[1];

PORTD = table[0];

/* режим с отжимом */

}

 

}

}

PORTC&=~_BV(5);  // откл индикацию режима 2

}

 

/*Основной блок программы*/

void main()

{

// Запрещаем все прерывания

cli ();

/*Настраеваем АЦП*/ 

ADMUX = 0;

ADCSRA|=_BV(ADEN)|_BV(ADIE);

/*Устанавливаем порты  на выход

эти порты будут подключены к индикаторам*/

DDRB = 0xFF; //старшая

DDRD = 0xFF;   //младшая

DDRC|=_BV(4);  //диод 1

DDRC|=_BV(5);  //диод 2

//вход

DDRC&=~_BV(2);//кнопка включения  первого режима

DDRC&=~_BV(3);//кнопка включения  второго режима

DDRC&=~_BV(6);//датчик уровня

DDRC&=~_BV(0);  //клапан  залива

DDRC&=~_BV(7);  //обогреватель

     DDRB&=~_BV(7);  //двигатель

     DDRD&=~_BV(7);  //клапан слива

//таймер

TCCR0B&=~_BV(CS01)&~_BV(CS02);

TIMSK0|=_BV(TOIE0);

TCCR1B|=_BV(CS11);

TIMSK1 = _BV(OCIE1A);

TCCR1B = _BV(WGM12);

TCNT1   = 0;

OCR1A = 62500;

/*Разрешаем прерывания*/

sei();

//бесконечный цикл

while(1)

{

        if(bit_is_set(PORTC,2))

{

for(i=1; i=30; i++)

{  /*убираем дребизг кнопки*/   }

                }

if(bit_is_set(PORTC,2))

{

T = 30;

PORTC|=_BV(0);

TCCR0B|=_BV(CS00); 

rejim = 1;

sl = 0;

PORTC|=_BV(4);

/*нажатие кнопки без  отжима (режим 1)*/ 

}

  if(bit_is_set(PORTC,2))

{

for(i=1; i=30; i++)

{  /*убираем дребизг  кнопки*/   }

                }

if(bit_is_set(PORTC,3))

{

T = 40;

PORTC|=_BV(0);

TCCR0B|=_BV(CS00); 

rejim = 2;

sl = 0;

PORTC|=_BV(5) 

/*нажатие кнопки с  отжимом (режим 2)*/

}

}

 

}

 




Блок управления стиральной машиной