Სარჩევი:

EF 230: სახლის სისტემა 3000 ინსტრუქციული: 4 ნაბიჯი
EF 230: სახლის სისტემა 3000 ინსტრუქციული: 4 ნაბიჯი

ვიდეო: EF 230: სახლის სისტემა 3000 ინსტრუქციული: 4 ნაბიჯი

ვიდეო: EF 230: სახლის სისტემა 3000 ინსტრუქციული: 4 ნაბიჯი
ვიდეო: 12ვ ინვერტორული 3000W ტესტი მაქსიმალური უწყვეტი გამონადენის დენით 200ah ბატარეით 2024, ივლისი
Anonim
EF 230: Home System 3000 Instructable
EF 230: Home System 3000 Instructable

Home System 3000 არის მოწყობილობა, რომელიც იყენებს არდუინოს, ტემპერატურის სენსორს, პიეზო ზუმერს, ოპტიკურ დეტექტორს/ფოტოტრანსისტორს და სერვოს, რომელიც აჩვენებს სახლის ენერგოეფექტურობის გაუმჯობესების გზებს.

ნაბიჯი 1: ტემპერატურის სენსორი

Ტემპერატურის სენსორი
Ტემპერატურის სენსორი

· გაუშვით თქვენი დენის და მიწის მავთულები

მიკროკონტროლი პურის დაფის მხარეს

· მოათავსეთ ტემპერატურის სენსორი პურის დაფაზე და შესაბამისად გაუშვით შესაბამისი დენის და დასაკავშირებელი მავთულები

· გაითვალისწინეთ, რომ ტემპერატურის სენსორს აქვს სამი წვერი, ხოლო შუა წვერს აქვს მავთული, რომელიც გადის პორტიდან "A0".

· ტემპერატურის სენსორის კოდი:

answer = questdlg ('გთხოვთ გაუშვით arduino და servo დაწყების კოდი', 'პასუხი', 'Ok', 'Ok')

მოთხოვნა = 'დასაწყებად დააჭირეთ ნებისმიერ ღილაკს'

პაუზა

prompt1 = 'მინიმალური ტემპერატურის დაყენება'

x = შეყვანა (მოთხოვნა 1)

prompt2 = 'მაქსიმალური ტემპერატურის დაყენება'

y = შეყვანა (მოთხოვნა 2)

prompt3 = 'დასაწყებად დააჭირეთ ნებისმიერ ღილაკს'

პაუზა

ფიგურა

h = ანიმაციური ხაზი;

ax = gca;

ax. YGrid = 'ჩართული';

ax. YLim = [65 85];

გაჩერება = ყალბი;

startTime = datetime ('ახლა');

სანამ გავჩერდები

% მიმდინარე ძაბვის მნიშვნელობის წაკითხვა

v = readVoltage (a, 'A0');

% გამოთვალეთ ტემპერატურა ძაბვისგან (მონაცემთა ფურცლის საფუძველზე)

TempC = (v - 0.5)*100;

TempF = 9/5*TempC + 32;

მიიღეთ მიმდინარე დრო

t = datetime ('now') - startTime;

დაამატეთ ქულები ანიმაციას

დამატებები (h, datenum (t), TempF)

% განახლების ღერძი

ax. XLim = datenum ([t- წამი (15) t]);

datetick ('x', 'keeplimits')

დნოუ

შეამოწმეთ გაჩერების მდგომარეობა

stop = readDigitalPin (a, 'D12');

ნაბიჯი 2: ბუზერი

ბუზერი
ბუზერი

· მავთული ზუზუნში, რომელიც გამოყენებული იქნება უკიდურესად მაღალი ან უკიდურესად დაბალი ტემპერატურის კითხვის სიგნალისთვის

· პოზიტიური სვეტიდან ზუზუნის პოზიტიურ მხარეს მავთული არ გადის

· სამაგიეროდ, მავთული გადის ზუზუნის პოზიტიური მხრიდან პორტამდე, სახელწოდებით "11"

ეს მოგვიანებით იქნება გამოყენებული ზარის ზარის ადგილმდებარეობის დასაკავშირებლად წერილობით კოდში.

· ზუზერის კოდი:

თუ TempF> = y

დისპი ("დახურე კარი ცხელია")

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

elseif TempF <= x

disp ("დახურე კარი ცივა")

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

დასასრული

დასასრული

ნაბიჯი 3: ოპტიკური დეტექტორი/ფოტოტრანსისტორი

ოპტიკური დეტექტორი/ფოტოტრანსისტორი
ოპტიკური დეტექტორი/ფოტოტრანსისტორი

· ეს სენსორი მოითხოვს წინააღმდეგობებს სხვებისგან განსხვავებით

· დარწმუნდით, რომ სენსორის ოთხივე წვერი ჩართულია მარყუჟში მავთულის შეყვანის შემდეგ

· სენსორი ამოიცნობს სინათლის ცვლილებას, წარმოადგენს მოძრაობას და აფიქსირებს მას შეყვანის სახით

· კოდი ოპტიკური დეტექტორის/ფოტოტრანსისტორისთვის:

ნათელი ა

a = arduino ('/dev/tty.usbserial-DN01DVI2', 'Uno', 'Libraries', 'Servo');

მოთხოვნა = 'განათების დონის ბარიერის დაყენება'

z = შეყვანა (მოთხოვნა)

lightLevel = 0

ხოლო lightLevel ~ = -1

lightLevel = readVoltage (a, 'A1')

თუ lightLevel> = z

answer = questdlg ("გსურთ შეცვალოთ AC?", "დიახ", "არა")

შეცვალეთ პასუხი

საქმე "დიახ"

answer2 = questdlg ("ჩართეთ AC ზემოთ ან ქვემოთ?", "პასუხი", "ქვემოთ", "ზემოთ", "ზემოთ")

შეცვალეთ პასუხი 2

საქმე "ქვემოთ"

s = servo (a, 'D10');

კუთხისთვის = 0:.1:.5

writePosition (s, კუთხე);

current_position = readPosition (s);

current_position = მიმდინარე_პოზიცია * 180;

სერვო ძრავის ამობეჭდვის ამჟამინდელი პოზიცია

fprintf ('ამჟამინდელი პოზიცია არის %d / n', მიმდინარე_პოზიცია);

მცირე შეფერხებაა საჭირო ისე, რომ სერვო განთავსდეს

% კუთხე უთხრა მას.

პაუზა (2);

დასასრული

% დააბრუნეთ ძრავა 0 კუთხის პოზიციაზე

writePosition (s, 0);

ნათელი ს

მოთხოვნა = 'გასაგრძელებლად დააჭირეთ ნებისმიერ ღილაკს'

questdlg ('AC უარი თქვა', 'პასუხი', 'Ok', 'Ok')

საქმე "ზემოთ"

s = servo (a, 'D10');

კუთხისთვის =.5:.1: 1

writePosition (s, კუთხე);

current_position = readPosition (s);

current_position = მიმდინარე_პოზიცია * 180;

სერვო ძრავის ამობეჭდვის ამჟამინდელი პოზიცია

fprintf ('ამჟამინდელი პოზიცია არის %d / n', მიმდინარე_პოზიცია);

მცირე შეფერხებაა საჭირო ისე, რომ სერვო განთავსდეს

% კუთხე უთხრა მას.

პაუზა (2);

დასასრული

ნაბიჯი 4: სერვო

სერვო
სერვო

· სერვო წარმოადგენს

კონდიციონერი და არის მოძრაობის გამოვლენის შესასვლელი

· ის მოითხოვს პოზიტიურ მავთულს, მიწას და მავთულს პორტიდან "D9" სერვოსკენ

· სერვოს კოდი:

% დააბრუნეთ ძრავა 0 კუთხის პოზიციაზე

writePosition (s, 0);

ნათელი ს

მოთხოვნა = 'გასაგრძელებლად დააჭირეთ ნებისმიერ ღილაკს'

questdlg ("AC აღმოჩნდა", "პასუხი", "Ok", "Ok")

დასასრული

დასასრული

პაუზა

შესვენება

დასასრული

დასასრული

*სპეციალური შენიშვნა: სერვოს ზოგიერთი კოდი ინტეგრირებულია ოპტიკური დეტექტორის/ფოტოტრანსისტორის კოდთან.

გირჩევთ: