Мазмуну:

EF 230: Үй системасы 3000 Инструкциялуу: 4 кадам
EF 230: Үй системасы 3000 Инструкциялуу: 4 кадам

Video: EF 230: Үй системасы 3000 Инструкциялуу: 4 кадам

Video: EF 230: Үй системасы 3000 Инструкциялуу: 4 кадам
Video: 220 В переменного тока от 12 В 90 А Автомобильный генератор переменного тока 1000 Вт DIY 2024, Ноябрь
Anonim
EF 230: Үй системасы 3000 инструктивдүү
EF 230: Үй системасы 3000 инструктивдүү

Home System 3000 - бул Arduino, температура сенсору, пьезо -сигнал, оптикалык детектор/фототранзистор жана серво колдонгон, үйдүн энергия үнөмдүүлүгүн жогорулатуу жолдорун көрсөтүү үчүн түзүлүш.

1 -кадам: Температура сенсору

Температура сенсору
Температура сенсору

· Сиздин электр жана жерге зымдарды иштетүү

нон тактасынын капталындагы микро контроллер

· Температура сенсорун нан тактасына коюп, ошого жараша тийиштүү кубаттуулукту жана зымдарды өткөрүңүз

· Температура сенсорунда үч тиш бар экенин байкаңыз, ал эми ортоңку тиште "А0" портунан чыккан зым бар.

· Температура сенсорунун коду:

answer = questdlg ('arduino жана servo баштоо кодун иштетиңиз', 'жооп', 'Ok', 'Ok')

prompt = 'Баштоо үчүн каалаган баскычты басыңыз'

пауза

prompt1 = 'Минималдуу температураны коюу'

x = киргизүү (чакыруу1)

prompt2 = 'Максималдуу температураны коюу'

y = киргизүү (чакыруу2)

prompt3 = 'баштоо үчүн каалаган баскычты басыңыз'

пауза

фигура

h = анимацияланган линия;

ax = gca;

ax. YGrid = 'on';

ax. YLim = [65 85];

stop = false;

startTime = datetime ('азыр');

while ~ токтоо

% Учурдагы чыңалуу маанисин окуу

v = readVoltage (a, 'A0');

% Чыңалуудан температураны эсептөө (маалымат барагына негизделген)

TempC = (v - 0.5)*100;

TempF = 9/5*TempC + 32;

% Учурдагы убакытты алуу

t = datetime ('азыр') - startTime;

% Анимацияга упай кошуу

кошумча чекиттер (h, datenum (t), TempF)

% Окторду жаңыртуу

ax. XLim = datenum ([t-seconds (15) t]);

маалымат тандоо ('x', 'keeplimits')

тартуу

% Аялдаманын абалын текшерүү

stop = readDigitalPin (a, 'D12');

2 -кадам: Buzzer

Коңгуроо
Коңгуроо

· Зымдагы зым өтө жогорку же өтө төмөн температуранын көрсөткүчтөрүн билдирүү үчүн колдонулат

· Эч кандай зым позитивдүү колонкадан ызылдактын оң жагына өтпөйт

· Анын ордуна зымдын оң жагынан "11" деп аталган портко чейин зым өткөрүлөт.

Бул кийинчерээк жазуу түрүндөгү коңгуроонун жайгашкан жерине чалуу үчүн колдонулат.

· Коңгуроо коду:

TempF> = y болсо

дисп ("жакын эшик" ысык)

playTone (a, 'D11', 500, 1)

elseif TempF <= x

дисп ("эшикти жап, суук")

playTone (a, 'D11', 250, 1)

аяктоо

аяктоо

3 -кадам: Оптикалык детектор/фототранзистор

Оптикалык детектор/фототранзистор
Оптикалык детектор/фототранзистор

· Бул сенсор башкалардан айырмаланып каршылаштарды талап кылат

· Зымдарды туташтыргандан кийин сенсордун бардык төрт тиштери циклге киргизилгенин текшериңиз

· Сенсор кыймылдын өкүлү болгон жарыктын өзгөрүшүн аныктайт жана аны киргизүү катары жазат

· Оптикалык детектор/фототранзистордун коду:

ачык а

a = arduino ('/dev/tty.usbserial-DN01DVI2', 'Uno', 'Китепканалар', 'Servo');

prompt = 'Жарык деңгээлинин босогосун коюу'

z = киргизүү (чакыруу)

lightLevel = 0

lightLevel ~ = -1 болсо

lightLevel = readVoltage (a, 'A1')

эгер lightLevel> = z

answer = questdlg ('ACны өзгөрткүңүз келеби?', 'Ооба', 'Жок')

жоопту алмаштыруу

учурда "Ооба"

answer2 = questdlg ('ACны өйдө же ылдый айлантыңызбы?', 'жооп', 'Down', 'Up', 'Up')

жоопту которуу2

учурда "ылдый"

s = servo (a, 'D10');

бурч үчүн = 0:.1:.5

writePosition (s, бурч);

current_position = readPosition (s);

current_position = current_position * 180;

% servo мотордун учурдагы абалын басып чыгаруу

fprintf ('Учурдагы абал %d / n', current_position);

% кичине кечиктирүү талап кылынат, андыктан servo даректе жайгашышы мүмкүн

% бурчу ага айтылган.

тыным (2);

аяктоо

% моторду 0 бурчтук абалга келтирет

writePosition (s, 0);

ачык с

prompt = 'Улантуу үчүн каалаган баскычты басыңыз'

questdlg ('AC четке кагылды', 'жооп', 'Ok', 'Ok')

"Өйдө" иши

s = servo (a, 'D10');

бурч үчүн =.5:.1: 1

writePosition (s, бурч);

current_position = readPosition (s);

current_position = current_position * 180;

% servo мотордун учурдагы абалын басып чыгаруу

fprintf ('Учурдагы абал %d / n', current_position);

% кичине кечигүү талап кылынат, андыктан сервону жайгашкан жерге жайгаштыруу мүмкүн

% бурчу ага айтылган.

тыным (2);

аяктоо

4 -кадам: Серво

Servo
Servo

· Серво билдирет

кондиционер жана кыймыл аныктоочу кириштин чыгышы

· Бул оң зымды, жерге зымды жана "D9" портунан servoго чейинки зымды талап кылат

· Серво үчүн код:

% моторду 0 бурчтук абалга келтирет

writePosition (s, 0);

ачык с

prompt = 'Улантуу үчүн каалаган баскычты басыңыз'

questdlg ('AC күйгүзүлдү', 'жооп', 'Ok', 'Ok')

аяктоо

аяктоо

пауза

тыныгуу

аяктоо

аяктоо

*Өзгөчө эскертүү: сервонун кээ бир коддору оптикалык детектордун/фототранзистордун коду менен бириктирилген.

Сунушталууда: