Направи си сам анемометри (за деца от подготвителната група). Домашен анемометър

Имаше задача да се сглоби анемометър за един проект, така че да е възможно да се вземат данни на компютър чрез USB интерфейс. Статията ще се фокусира повече върху самия анемометър, отколкото върху системата за обработка на данни от него:

1. Компоненти

И така, за производството на продукта бяха необходими следните компоненти:
Мишка Mitsumi ball — 1 бр.
Топка за пинг-понг — 2 бр.
Парче плексиглас с правилния размер
Медна тел със сечение 2,5 mm2 - 3 cm
Пълнеж за химикалка — 1 бр.
Стик за бонбони Chupa Chups - 1 бр.
Щипка за кабел — 1 бр.
Куха месингова цев 1 бр.

2. Изработка на работното колело

3 парчета медна тел с дължина 1 см всяко под ъгъл от 120 градуса бяха запоени към месингова цев. В дупката на цевта запоявах стойка от китайски играч с резба на края.

Нарязах тубичката от бонбона на 3 части с дължина около 2 см.

Разрязах 2 топки наполовина и с помощта на малки винтчета от същия плейър и полистиролово лепило (с пистолет за лепило) прикрепих половинките на топката към тръбичките за близалки.

Поставих тръбичките с половинките на топката върху запоените парчета тел и фиксирах всичко отгоре с лепило.

3. Изработка на основната част

Носещият елемент на анемометъра е метален прът от химикал. В долната част на пръта (където беше поставен коркът) вкарах диска от мишката (енкодер). В дизайна на самата мишка долната част на енкодера е опряла в тялото на мишката, образувайки точков лагер, има грес, така че енкодерът се завърта лесно. Но беше необходимо да се фиксира горната част на пръта, за това взех подходящо парче пластмаса с отвор точно с диаметъра на пръта (такова част беше изрязана от системата за удължаване на каретката CD-ROMa). Остана да се реши проблема, така че пръчката на енкодера да не изпадне от точковия лагер, така че запоявах няколко капки спойка върху пръта директно пред задържащия елемент. Така прътът се въртеше свободно в задържащата конструкция, но не изпадаше от лагера.

Причината, поради която е избрана схемата на енкодера, е следната: всички статии за домашни анемометри в интернет описват тяхното производство на базата на DC мотор от плейър, CD-ROM или друг продукт. Проблемът с такива устройства е, първо, тяхното калибриране и ниска точност при ниски скорости на вятъра, и второ, в нелинейната характеристика на скоростта на вятъра по отношение на изходното напрежение, т.е. за да прехвърлите информация към компютър, има определени проблеми, трябва да изчислите закона за промяна на напрежението или тока от скоростта на вятъра. При използване на енкодер няма такъв проблем, тъй като зависимостта е линейна. Точността е най-висока, тъй като енкодерът дава около 50 импулса на оборот на оста на анемометъра, но схемата на преобразувателя е малко по-сложна, в която има микроконтролер, който отчита броя на импулсите в секунда на един от портовете и изходите тази стойност към USB порта.

4. Тестване и калибриране

За калибриране е използван лабораторен анемометър.

Обикновена домакинска маркова или домашна метеостанция измерва две температури-влажност (в помещението и навън), атмосферно налягане, като допълнително има часовник с календар. Истинската метеорологична станция обаче има много повече - сензор за слънчева радиация, дъждомер и всичко това, като цяло, се изисква само за професионални цели, с едно изключение. Ветромер (скорост и най-важното - посока) е много полезно допълнение за селска къща. Освен това марковите сензори за вятър са доста скъпи дори на Али Баба и има смисъл да разгледате домашно приготвени решения.

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

За измервания на скоростта на вятъра(анемометрия) има стотици начини, основните от които са:

горещ проводник,
- механични - с витло (по-точно работно колело) или чашково хоризонтално работно колело (класически чашов анемометър).Измерването на скоростта в тези случаи е еквивалентно на измерване на скоростта на оста, върху която е фиксирано витлото или перката.
- както и ултразвуков, който комбинира измервания на скорост и посока.
За измервания на посокатапо-малко начини:
- споменати ултразвукови;
- механичен флюгер с електронно отстраняване на ъгъла на въртене. Има също много различни начини за измерване на ъгъла на въртене: оптичен, резистивен, магнитен, индуктивен, механичен. Между другото, можете просто да монтирате електронен компас на вала на флюгера - това е просто надеждни и прости (за "коляно" повторение) начини за предаване на показания от хаотично въртяща се ос, все пак ще трябва да се търсят. Следователно, ние допълнително избираме традиционния оптичен метод.

Когато повтаряте самостоятелно някой от тези методи, трябва да имате предвид изискванията за минимална консумация на енергия и денонощно (или може би целогодишно?) излагане на слънце и дъжд. Сензорът за вятър не може да бъде поставен под покрива на сянка - напротив, той трябва да бъде възможно най-далеч от всички интерфериращи фактори и „отворен за всички ветрове“. Идеалното място е билото на покрива на къща или, в най-лошия случай, плевня или беседка, отдалечени от други сгради и дървета. Такива изисквания предполагат автономно захранване и, очевидно, безжичен канал за предаване на данни. Тези изисквания се дължат на някои "звънци и свирки" на дизайна, който е описан по-долу.

Относно минималната консумация на енергия

Между другото, колко е минималната консумация на енергия? Въз основа на обикновени домакински батерии тип АА, средната консумация на веригата в идеалния случай трябва да бъде не повече от 1-2 mA. Изчислете сами: капацитетът на прилична алкална клетка AA е около 2,5-3 Ah, тоест верига с посочената консумация ще работи от нея за около 1500-2500 часа или 2-3 месеца. По принцип това също не е много, но е относително приемливо - не можете да направите по-малко: или се повредите на батерии, или ще трябва да използвате батерии, които ще трябва да се зареждат дори по-често, отколкото смяната на батерии. Поради тази причина, когато съставяме такава схема, ние сме длъжни да хванем всякакви трохи: задължителния режим на пестене на енергия, внимателно обмислената схема и последователността на действията в програмата. По-нататък ще видим, че в окончателния дизайн все още не отговарях на необходимите изисквания и трябваше да използвам батерия.


Информативна история за това как се опитах да възпроизведам най-модерния и напреднал от методите - ултразвук, но не успях, ще разкажа някой друг път. Всички други методи включват отделно измерване на скорост и посока, така че трябваше да блокираме два сензора. След като изучавах теоретично анемометри с горещ проводник, разбрах, че няма да можем да закупим готов чувствителен елемент от любителско ниво (те се предлагат на западния пазар!), но да го измислите сами - да се включите в следваща НИРД със съответната загуба на време и пари. Затова след известно мислене реших да направя унифициран дизайн за двата сензора: чашов анемометър с оптично измерване на скоростта на въртене и ветропоказател с електронно отчитане на ъгъла на въртене на базата на енкодер диск (енкодер).

Дизайн на сензори

Предимството на механичните сензори е, че там не се изисква R&D, принципът е прост и ясен, а качеството на резултата зависи само от точността на внимателно обмисления дизайн.

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

За флюгера и анемометъра са необходими следните части, които трябваше да бъдат поръчани от стругар и фреза (количеството и материалът са посочени за двата сензора наведнъж):

Осите, отбелязваме, задължително се завъртат на струг: почти невъзможно е да се направи ос с връх точно в центъра на коляното. А поставянето на върха точно по оста на въртене тук е определящият фактор за успеха. Освен това оста трябва да е идеално права, не се допускат отклонения.

Механичен сензор за посоката на вятъра - електронен флюгер

Основата на флюгера (както и сензора за скорост по-долу) е U-образна скоба от дуралуминий D-16, показана на чертежа горе вляво. В долната вдлъбнатина се притиска парче PTFE, в което се прави стъпаловидна вдлъбнатина последователно със свредла 2 и 3 мм. В тази вдлъбнатина се вкарва ос с остър край (за флюгер - от месинг). Отгоре свободно преминава през отвор от 8 мм. Над този отвор, правоъгълно парче от същия флуоропласт с дебелина 4 мм е прикрепено към скобата с винтове M2, така че да припокрива отвора. В PTFE е направен отвор точно по дължината на оста 6 mm (разположен точно по общата ос на отворите - виж монтажния чертеж по-долу). Флуоропластът в горната и долната част тук играе ролята на плъзгащи лагери.


Оста в точката на триене срещу фотопластмасата може да бъде полирана, а зоната на триене може да бъде намалена чрез зенкерване на отвор във флуоропласта. ( Вижте по тази тема по-долу UPD от 13.09.18 и 06.05.19). За ветропоказател това не играе особена роля - известно „забавяне“ дори е полезно за него, а за анемометър ще трябва да се опитате да сведете до минимум триенето и инерцията.

Сега за премахването на ъгъла на въртене. Класическият 16-позиционен Грей енкодер в нашия случай изглежда така:

Размерът на диска е избран въз основа на условието за надеждна оптична изолация на двойките емитер-приемник един от друг. При тази конфигурация 5 mm широките процепи също са разположени на разстояние 5 mm, а оптичните двойки са разположени точно на 10 mm. Размерите на скобата, към която е закрепен флюгерът, са изчислени точно на базата на диаметър на диска 120 mm. Всичко това, разбира се, може да бъде намалено (особено ако изберете светодиоди и фотодетектори с възможно най-малък диаметър), но беше взета предвид сложността на производството на енкодера: оказа се, че фрезите не поемат толкова деликатна работа, следователно трябваше да се реже ръчно с иглена пила. И тук колкото по-голям е размерът, толкова по-надежден е резултатът и по-малко караница.

Монтажният чертеж по-горе показва как дискът е прикрепен към оста. Внимателно центриран диск е прикрепен с винтове M2 към капролоновата втулка. Втулката се поставя върху оста, така че пролуката в горната част да е минимална (1-2 mm) - така че оста да се върти свободно в нормално положение и при обръщане върхът да не пада от гнездото при дъно. Блокове от фотодетектори и излъчватели са прикрепени към скобата в горната и долната част на диска, по-конкретно за техния дизайн по-долу.

Цялата конструкция е поставена в пластмасов (ABS или поликарбонат) корпус 150×150×90 mm. Сглобен (без капак и флюгер), сензорът за посоката изглежда така:

Имайте предвид, че избраната северна посока е маркирана със стрелка и ще трябва да се спазва при повторното инсталиране на сензора.

Действителната ветропоказател е прикрепена към горната част на оста. Изработена е на базата на същата месингова ос, в разреза от тъпата страна на която е запоен дръжка от месингов лист. В острия край резба M6 се нарязва на определена дължина и върху нея се фиксира кръгла противотежест, излята от олово с помощта на гайки:

Товарът е проектиран така, че центърът на тежестта да пада точно върху точката на закрепване (като го преместите по конеца, можете да постигнете перфектен баланс). Флюгерът се закрепва към оста с помощта на неръждаем винт М3, който преминава през отвор в оста на флюгера и се завинтва в резбата, нарязана по оста на въртене (фиксиращият винт се вижда на снимката по-горе). За прецизна ориентация горната част на оста на въртене има полукръгла вдлъбнатина, в която лежи оста на флюгера.

Сензор за скорост на вятъра - чаша анемометър направи си сам

Както вече разбрахте, основата за сензора за скорост с цел обединяване е избрана същата като за ветропоказател. Но изискванията за проектиране тук са малко по-различни: за да се намали началният праг, анемометърът трябва да е възможно най-лек. Следователно, по-специално оста за него е изработена от дуралуминий, дискът с отвори (за измерване на скоростта на въртене) е с намален диаметър:

Докато четирибитовият Грей енкодер изисква четири оптрона, сензорът за скорост се нуждае само от един. 16 дупки се пробиват по обиколката на диска на еднакво разстояние, така че един оборот на диска в секунда е еквивалентен на 16 херца от честотата, идваща от оптрона (възможни са повече дупки, възможни са по-малко - единственият въпрос е скала на преизчисление и спестяване на енергия за емитери).

Самоделният сензор все още ще се окаже доста груб (началният праг е най-малко половин метър в секунда), но може да бъде намален само ако дизайнът бъде радикално променен: например поставете витло вместо въртяща се чаша. В грамофона за чаши разликата в силите на съпротивление на потока, които определят въртящия момент, е относително малка - тя се постига единствено поради различната форма на повърхността, която отговаря на насрещния въздушен поток (следователно формата на чашите трябва да бъде толкова опростена, колкото възможно - в идеалния случай това е половин яйце или топка). Перката има много по-голям въртящ момент, може да бъде направена много по-лека по тегло и накрая, самата изработка е по-проста. Но витлото трябва да се монтира по посока на въздушния поток - например, като се постави в края на същата ветропоказател.

Въпросът на въпросите в същото време: как да се предават показания от сензор, който произволно се върти около вертикална ос? Не можах да го реша и съдейки по факта, че професионалните дизайни на чаши все още са широко разпространени, това в никакъв случай не се решава с половин ритник (не вземаме предвид ръчните анемометри - те са ориентирани ръчно според въздуха поток).

Моята версия на чашовия анемометър е базирана на лазерен диск. Изгледът отгоре и отдолу е показан на снимката:



Чашите са изработени от дъна на бебешки бутилки за вода "Агуша". Дъното се отрязва внимателно и трите - на едно и също разстояние, така че да имат еднакво тегло, локално затоплени в центъра (в никакъв случай не загрявайте цялото нещо - то необратимо ще се изкриви!) И задната страна! на дървената дръжка от пилата се огъва навън, за да стане по-опростена. Ще повторите – запасете се с по-големи бутилки, от пет-шест парчета сигурно ще успеете да направите три горе-долу еднакви чаши. В произведените чаши се прави процеп отстрани и те се фиксират по периметъра на диска на 120 ° един спрямо друг с помощта на водоустойчив лепило-уплътнител. Дискът е строго центриран спрямо оста (направих това с помощта на приложена метална шайба) и е фиксиран върху капролоновата втулка с винтове M2.

Общо проектиране и монтаж на сензори

И двата сензора, както вече споменахме, са поставени в пластмасови кутии 150×150×90 mm. Изборът на материала на корпуса трябва да се подхожда внимателно: ABS или поликарбонатът имат достатъчна устойчивост на атмосферни влияния, но полистиролът, плексигласът и още повече полиетиленът определено няма да работят тук (и също така ще бъде трудно да ги боядисате, за да ги предпазите от слънцето ). Ако не е възможно да закупите маркова кутия, по-добре е сами да запоите корпуса от фолио от фибростъкло и след това да го боядисате, за да го предпазите от корозия и да му придадете естетичен вид.

В капака се прави дупка от 8-10 мм точно в точката на излизане на оста, в която е залепен пластмасов конус със същото лепило-уплътнител, изрязан от чучура от пулверизатор със строителен уплътнител или лепило:

За да центрирате конуса по оста, закрепете парче дърво от долната част на капака със скоба, маркирайте точния център върху него и отидете малко по-дълбоко с 12 мм лопата свредло, като направите пръстеновидна вдлъбнатина около отвора. Конусът трябва да влезе точно там, след което може да бъде покрит с лепило. Можете допълнително да го фиксирате във вертикално положение за времето на втвърдяване с винт M6 с гайка.

Самият сензор за скорост покрива оста с този конус като чадър, предотвратявайки навлизането на вода в корпуса. За флюгера си струва допълнително да поставите ръкав над конуса, който ще затвори пролуката между оста и конуса от директен воден поток (вижте снимката на общия изглед на сензорите по-долу).

Проводниците от оптроните са свързани към отделен D-SUB конектор (вижте снимката на сензора за посоката по-горе). Съвпадащата част с кабела се вкарва през правоъгълен отвор в основата на корпуса. След това дупката се покрива с капак с процеп за кабела, който предпазва конектора от падане. Дуралните скоби се завинтват към основата на кутията за фиксиране на място. Тяхната конфигурация зависи от местоположението на сензорите.

Когато са сглобени, двата сензора изглеждат така:

Тук те са показани вече монтирани на място - на билото на беседката. Моля, имайте предвид, че вдлъбнатините за винтовете, закрепващи капака, са защитени от вода с мокри гумени тапи. Сензорите се монтират строго хоризонтално според нивото, за което е необходимо да се използват облицовки от парчета линолеум.

Електронна част

Метеорологичната станция като цяло се състои от два модула: отдалечен модул (който обслужва и двата сензора за вятър, а също така взема показания от външен сензор за температура и влажност) и основния модул с дисплеи. Дистанционното устройство е оборудвано с безжичен предавател за изпращане на данни, инсталиран вътре в него (антената стърчи отстрани). Основният модул получава данни от дистанционното устройство (приемникът е поставен на кабел в отделно устройство за по-лесно ориентиране), а също така взема показания от вътрешния сензор за температура и влажност и показва всичко това на дисплеите. Отделен компонент на основното устройство е часовник с календар, който за удобство на общата настройка на станцията се обслужва от отделен контролер Arduino Mini и има собствени дисплеи.

Дистанционен модул и измервателна верига на вятърни сензори

Като фотоемитери бяха избрани IR светодиоди AL-107B. Тези винтидж светодиоди, разбира се, не са най-добрите в своя клас, но имат миниатюрно тяло с диаметър 2,4 мм и са в състояние да пропускат ток до 600 mA на импулс. Между другото, по време на тестовете се оказа, че проба от този светодиод около 1980 г. на освобождаване (в червен корпус) има приблизително два пъти по-голяма ефективност (изразена в диапазона на надеждна работа на фотодетектора) от съвременните екземпляри, закупени от Chip -Дълбоки (имат прозрачно жълтеникаво-зелено тяло). Малко вероятно е кристалите да са били по-добри през 1980 г., отколкото сега, въпреки че какво, по дяволите, не е на шега? Може би обаче въпросът е в различни ъгли на разсейване и в двата дизайна.

През светодиода в сензора за скорост (резистор 150 ома при захранване от 5 волта) беше пропуснат постоянен ток от около 20 mA, а в сензора за посока - импулсен (меандър с работен цикъл 2) ток от около 65 mA ( същите 150 ома, когато се захранва от 12 волта). Средният ток през един светодиод на сензора за посока е около 33 mA, общо през четири канала - около 130 mA.

Като фотодетектори бяха избрани фототранзистори L-32P3C в пакет с диаметър 3 mm. Сигналът е взет от колектор, зареден с резистор 1,5 или 2 kOhm от захранване 5 V. Тези параметри са избрани така, че на разстояние от ~ 20 mm между фото емитера и приемника, пълноразмерен логически сигнал при 5 -волтови нива без допълнително усилване веднага ще пристигнат на входа на контролера. Изчислените тук токове може да ви се сторят непропорционално големи, въз основа на минималната изисквана мощност, спомената по-горе, но както ще видите, те се появяват във всеки цикъл на измерване за максимум няколко милисекунди, така че общата консумация остава малка.

Основата за монтаж на приемниците и излъчвателите бяха секциите на кабелния канал (виждани на снимката на сензорите по-горе), изрязани така, че да образуват „уши“ в основата за монтаж върху скобата. За всеки от тези разфасовки към заключващия капак отвътре беше залепена пластмасова плоча, равна по ширина на ширината на канала. Светодиодите и фототранзисторите бяха фиксирани на необходимото разстояние в дупките, пробити в тази плоча, така че проводниците да са вътре в канала и само издутините на края на корпусите да стърчат навън. Изводите са запоени в съответствие с диаграмата (вижте по-долу), външните изводи са направени с разфасовки от гъвкава многоцветна тел. Вътре в канала се поставят и резистори за излъчвателите на сензора за посоката, от тях се прави едно общо заключение. След разпояване капакът щраква на място, всички прорези се запечатват с пластилин и допълнително с лепяща лента, която също затваря дупката от страната, противоположна на проводниците, и цялата конструкция се запълва с епоксидна смола. Външните изводи, както можете да видите на снимката на сензорите, се извеждат към клемния блок, фиксиран на гърба на скобата.

електрическа схемаБлокът за обработка на сензора за вятър изглежда така:

Откъде идва захранването от 12-14 волта, вижте по-долу. В допълнение към компонентите, посочени на диаграмата, дистанционното устройство съдържа сензор за температура и влажност, който не е показан на диаграмата. Делителят на напрежението, свързан към клемата A0 на контролера, е предназначен да контролира напрежението на захранването с цел навременна подмяна. Светодиодът, свързан към традиционния щифт 13 (пин 19 на DIP корпуса), е супер ярък, за нормалното му, незаслепващо сияние е достатъчна част от милиампер ток, което се осигурява от необичайно високата стойност на 33 kΩ резистор.

Веригата използва гол Atmega328 контролер в DIP пакет, програмиран чрез Uno и инсталиран на сокет. Такива контролери с вече написан зареждане на Arduino се продават например в Chip-Dip (или можете сами да напишете буутлоудъра). Удобно е да се програмира такъв контролер в позната среда, но, лишен от компоненти на платката, той е, първо, по-икономичен и второ, заема по-малко място. Пълноценен енергоспестяващ режим може да се получи, като се отървете и от буутлоудъра (и като цяло напишете целия код в асемблер :), но тук това не е много уместно и програмирането е ненужно сложно.

На диаграмата сиви правоъгълници ограждат компонентите, свързани поотделно с каналите за скорост и посока. Помислете за работата на схемата като цяло.

Работата на контролера като цяло се контролира от таймера за наблюдение WDT, активиран в режим на прекъсване на повикване. WDT събужда контролера от спящ режим на зададени интервали. В случай, че таймерът се нулира в извиканото прекъсване, няма рестартиране от нулата, всички глобални променливи остават на своите стойности. Това ви позволява да натрупвате данни от събуждане до събуждане и в даден момент да ги обработвате – например да ги усреднявате.

В началото на програмата се правят следните декларации на библиотеки и глобални променливи (за да не се претрупва текста на вече обширни примери, всичко, свързано със сензора за температура-влажност, се пуска тук):

#включи #включи #включи . . . . . #define ledPin 13 //LED щифт (PB5 pin 19 ATmega) #define IR_Pin 10 //IRLU управление на транзистора (PB2 pin 16 Atmega) #define in_3p 9 //Входен бит на приемника 3 #define in_2p 8 bit //Приемник 2 # вход дефинирайте in_1p 7 //входен бит на приемника 1 #дефинирайте in_0p 6 //входен бит на приемника 0 #дефинирайте IR_PINF 5 //(PD5,11) изход за честотен IR LED #дефинирайте IN_PINF 4 //(PD4,6) вход за откриване на честота променлив unsigned long ttime = 0; // Период на активиране на сензора float ff; // честотни стойности на сензора за скорост за усредняване на char msg; //изпратено съобщение байт count=0;//counter int batt; //за осредняване на байта на батерията wDir; // масив от посоки на вятъра байт wind_Gray=0; // кодов байт на посоката на вятъра
Следните процедури се използват за стартиране на спящ режим и WDT (събуждане на всеки 4 секунди):

// поставяне на системата в режим на заспиване void system_sleep() ( ADCSRA &= ~(1<< ADEN); //экв. cbi(ADCSRA,ADEN); выключим АЦП set_sleep_mode(SLEEP_MODE_PWR_DOWN); // режим сна sleep_mode(); // система засыпает sleep_disable(); // система продолжает работу после переполнения watchdog ADCSRA |= (1 << ADEN); /экв. sbi(ADCSRA,ADEN); включаем АЦП } //**************************************************************** // ii: 0=16ms, 1=32ms,2=64ms,3=128ms,4=250ms,5=500ms // 6=1 sec,7=2 sec, 8=4 sec, 9= 8sec void setup_watchdog(int ii) { byte bb; if (ii >9) ii=9; bb=ii & 7; ако (ii > 7) bb|= (1<<5); //в bb - код периода bb|= (1<Сензорът за скорост извежда честотата на прекъсване на оптичния канал, порядъкът на величината е единици-десетки херца. По-икономично и по-бързо е да се измери такава стойност след определен период (това беше предмет на публикацията на автора „Оценка на методите за измерване на ниски честоти на Arduino“). Тук се избира метод чрез модифицираната функция pulseInLong(), която не свързва измерването с определени изходи на контролера (текстът на функцията periodInLong() може да се намери в посочената публикация).

Във функцията setup() се декларират посоките на щифтовете, библиотеката на предавателя 433 MHz и таймерът за наблюдение са инициализирани (редът за IN_PINF по принцип е излишен и се вмъква за памет):

Void setup() ( pinMode(IR_PINF, OUTPUT); //за извеждане на pinMode(IN_PINF, INPUT); //откриване на изходна честота към вход pinMode(13, OUTPUT); //LED vw_setup(1200); // Скорост на връзката с VirtualWire vw_set_tx_pin(2); //D2, PD2(4) VirtualWire трансферен щифт // Serial.begin(9600); // Сериен порт за наблюдение при отстраняване на грешки setup_watchdog(8); //WDT период 4 c wdt_reset(); )
И накрая, в основния цикъл на програмата първо четем напрежението всеки път, когато се събуждаме (на всеки 4 секунди) и изчисляваме честотата на сензора за скорост на вятъра:

Void loop() ( wdt_reset(); // нулиране на таймера digitalWrite(ledPin, HIGH); // включете светодиода, за да управлявате batt=analogRead(0); // прочетете и запишете текущия код на батерията /*=== честота === = */ digitalWrite(IR_PINF, HIGH); //включете IR светодиода на сензора за скорост f=0; //променлива за честотата ttime=periodInLong(IN_PINF, LOW, 250000); //изчакайте 0,25 сек // Serial.println(ttime); //за контрол по време на отстраняване на грешки if (ttime!=0) (//в случай на липса на честота f = 1000000/float(ttime);) //изчислете честотата на сигнала в Hz digitalWrite(IR_PINF, LOW); / /изключете IR светодиода ff=f; //запишете изчислената стойност в масив. . . .
Времето на горене на IR LED (консумиращ, нека ви напомня, 20 mA) тук, както виждате, ще бъде максимално при липса на въртене на сензорния диск и е около 0,25 секунди при това условие. Следователно минималната измерима честота би била 4 Hz (четвърт от оборота на диска в секунда с 16 дупки). Както се оказа при калибриране на сензора (виж по-долу), това съответства на около 0,2 m/s скорост на вятъра. Подчертаваме, че това е минималната измерима стойност на скоростта на вятъра, но не разделителната способност и не началният праг (което ще бъде много по-висока). При наличие на честота (тоест, когато сензорът се върти), времето за измерване (и съответно времето на горене на светодиода, тоест консумацията на ток) ще намалее пропорционално и разделителната способност ще се увеличи.

Следват процедури, които се извършват при всяко четвърто събуждане (тоест на всеки 16 секунди). От натрупаните четири стойности предаваме честотната стойност на сензора за скорост не средната, а максималната - както показа опитът, това е по-информативна стойност. За удобство и еднородност всяка една от величините, независимо от вида й, се преобразува в цяло положително число с размер 4 знака след десетичната запетая преди предаването. Променливата count проследява броя на събужданията:

//на всеки 16 секунди осредняваме батерията и определяме максималната //стойност на честотата от 4 стойности: if (count==3)( f=0; //стойност на честотата за (байт i=0; i<4; i++) if (fСледва дефиницията на кода на Грей на посоката. Тук, за да се намали консумацията, вместо постоянно на IR светодиоди, честота от 5 kHz се прилага към всичките четири канала едновременно чрез ключов полеви транзистор, използвайки функцията tone (). Откриването на наличието на честота на всяка от цифрите (pins in_0p - in_3p) се извършва по метод, подобен на anti-bounce при отчитане на индикациите на натиснат бутон. Първо, в цикъла, чакаме да видим дали изходът е висок и след това го проверяваме след 100 µs. 100 µs е половин период на честота от 5 kHz, тоест ако има честота поне от втория път, ние отново ще стигнем до високо ниво (за всеки случай, повтаряме четири пъти) и това означава, че определено е там. Повтаряме тази процедура за всеки от четирите бита на кода:

/* ===== Вятърно сиво ==== */ //посока: тон(IR_Pin,5000);//честота 5 kHz към транзистор булев yes = false; байт i=0; while(!yes)( //цифра 3 i++; boolean state1 = (digitalRead(in_3p)&HIGH); delayMicroseconds(100); // 100 микросекунди забавяне yes=(state1 & !digitalRead(in_3p)); if (i> 4 ) прекъсване; //опитайте четири пъти) if (да) wDir=1; иначе wDir=0; да = невярно; i=0; while(!yes)( //цифра 2 i++; boolean state1 = (digitalRead(in_2p)&HIGH); delayMicroseconds(100); // 100 микросекунди забавяне yes=(state1 & !digitalRead(in_2p)); if (i> 4 ) прекъсване; //опитайте четири пъти) if (да) wDir=1; иначе wDir=0; да = невярно; i=0; while(!yes)( //bit 1 i++; boolean state1 = (digitalRead(in_1p)&HIGH); delayMicroseconds(100); // 100 микросекунди забавяне yes=(state1 & !digitalRead(in_1p)); if (i> 4 ) прекъсване; //опитайте четири пъти) if (да) wDir=1; иначе wDir=0; да = невярно; i=0; while(!yes)( //bit 0 i++; boolean state1 = (digitalRead(in_0p)&HIGH); delayMicroseconds(100); // 100 микросекунди забавяне yes=(state1 & !digitalRead(in_0p)); if (i> 4 ) прекъсване; //опитайте четири пъти) if (да) wDir=1; иначе wDir=0; noTone(IR_Pin); //изключете честотата //съберете я в байт в код на Грей: wind_Gray=wDir+wDir*2+wDir*4+wDir*8; // директен превод в двоичен. код int wind_G=wind_Gray*10+1000; //добавете до 4 дез. разряди. . . . .
Максималната продължителност на една процедура ще бъде при липса на честота на приемника и е равна на 4 × 100 = 400 микросекунди. Максималното време на горене на 4-те посоки светодиода ще бъде, когато нито един приемник не е осветен, тоест 4 × 400 = 1,6 милисекунди. Алгоритъмът, между другото, ще работи по същия начин, ако вместо честота, чийто период е кратен на 100 μs, просто приложите постоянно високо ниво към светодиодите. При наличието на меандър вместо постоянно ниво, ние просто спестяваме храна наполовина. Можем да спестим още повече, ако пуснем всеки IR LED през отделна линия (съответно през отделен изход на контролера със собствен ключов транзистор), но това усложнява веригата, окабеляването и управлението и ток от 130 mA за 2 ms всеки 16 секунди - това, видите ли, е малко.

накрая, безжично предаване на данни. Избран е най-простият, най-евтиният и най-надежден метод за предаване на данни от местоположението на сензорите към дисплея на метеорологичната станция: двойка предавател/приемник с честота 433 MHz. Съгласен съм, че методът не е най-удобният (поради факта, че устройствата са проектирани да прехвърлят битови последователности, а не цели байтове, трябва да превъзхождате в преобразуването на данни между необходимите формати) и съм сигурен, че мнозина ще искат да спори с мен по отношение на неговата надеждност. Отговорът на последното възражение е прост: „просто не знаете как да ги приготвите!“.

Тайната е, че обикновено остава зад кулисите на различни описания на обмен на данни през 433 MHz канал: тъй като тези устройства са чисто аналогови, захранването на приемника трябва да бъде много добре почистено от всякакви външни вълни. При никакви обстоятелства приемникът не трябва да се захранва от вътрешния 5V регулатор на Arduino! Инсталирането на отделен регулатор на приемника с ниска мощност (LM2931, LM2950 или подобен) точно до неговите изходи, с правилни входни и изходни филтриращи вериги, драстично увеличава обхвата на предаване и надеждността.

В този случай предавателят работеше директно от напрежение на батерията 12 V, приемникът и предавателят бяха оборудвани със стандартни домашно изработени антени под формата на парче тел с дължина 17 см. (Нека ви напомня, че само едножилен жицата е подходяща за антени и е необходимо антените да се поставят в пространството успоредно една на друга.) Пакет информация с дължина 24 байта (като се вземат предвид влажността и температурата) без никакви проблеми беше уверено предаден със скорост от 1200 bps диагонално през градински парцел от 15 акра (около 40-50 метра), а след това през три дървени стени в стаята (в която, например, клетъчен сигнал се получава с голяма трудност и не навсякъде). Условия, които са практически недостижими за всеки стандартен 2,4 GHz метод (като Bluetooth, Zig-Bee и дори любителски Wi-Fi), въпреки факта, че консумацията на предавателя тук е мизерните 8 mA и само в момента на реалното предаване, през останалото време предавателят консумира истински стотинки. Предавателят е структурно поставен вътре в дистанционното устройство, антената стърчи хоризонтално отстрани.

Ние комбинираме всички данни в един пакет (в реална станция към него ще бъдат добавени температура и влажност), състоящ се от еднакви 4-байтови части и предшествани от подписа „DAT“, изпращаме го до предавателя и завършваме всички цикли:

/*=====Предавател=====*/ String strMsg="DAT"; //подпис - данни strMsg+=volt; //прикачете 4-цифрена батерия strMsg+=wind_G; //прикачване на вятър 4 бита strMsg+=fi; //прикачване на честота 4 бита strMsg.toCharArray(msg,16); //превеждане на низа в масив // Serial.println(msg); //за управление на vw_send((uint8_t *)msg, strlen(msg)); // изпращане на съобщение vw_wait_tx(); // изчакайте прехвърлянето да завърши - задължително! забавяне (50); //+ за всеки случай, забавяне count=0; //нулиране на брояча )//end count==3 else count++; digitalWrite(ledPin, LOW); //изключваме сигналния светодиод system_sleep(); //система - за заспиване) //краен цикъл
Размерът на пакета може да бъде намален, ако изискването за представяне на всеки от различните типове стойности под формата на единен 4-байтов код бъде изоставено (например за код на Грей, разбира се, един байт е достатъчен). Но в името на универсализацията оставих всичко както е.

Захранване и конструктивни характеристики на дистанционното устройство. Консумацията на дистанционното устройство се изчислява, както следва:

20 mA (емитер) + ~20 mA (контролер със спомагателни вериги) за приблизително 0,25 s на всеки четири секунди - 40/16 = 2,5 mA средно;
- 130 mA (радиатори) + ~20 mA (контролер със спомагателни вериги) за около 2 ms на всеки 16 секунди - 150/16/50 ≈ 0,2 mA средно;

Хвърляйки върху това изчисление консумацията на контролера при четене на данни от сензора за температура-влажност и по време на работа на трансмитера, ние смело довеждаме средната консумация до 4 mA (с пик от около 150 mA, имайте предвид!). Батериите (които, между другото, ще изискват до 8 броя за захранване на предавателя с максимално напрежение!) Ще трябва да се сменят твърде често, така че възникна идеята да захранваме дистанционното устройство от 12-волтови батерии за отвертка - Имах само две допълнителни. Капацитетът им е дори по-малък от съответния брой батерии АА – само 1,3 А часа, но никой не си прави труда да ги смени по всяко време, като държи втората заредена готова. При посочената консумация от 4 mA, капацитетът от 1300 mA часа е достатъчен за около две седмици, което не е твърде обезпокоително.

Имайте предвид, че напрежението на прясно заредена батерия може да бъде до 14 волта. В този случай е монтиран входен стабилизатор от 12 волта - за да се предотвратят пренапрежения в захранването на предавателя и да не се претовари основният петволтов стабилизатор.

Дистанционното устройство в подходящ пластмасов калъф е поставено под покрива, към него са свързани захранващ кабел от акумулатора и връзки към сензори за вятър към конекторите. Основната трудност е, че веригата се оказа изключително чувствителна към влажността на въздуха: при дъждовно време, след няколко часа, предавателят започва да се проваля, измерванията на честотата показват пълна бъркотия, а измерванията на напрежението на батерията показват „времето на Марс“ .

Следователно, след отстраняване на грешки в алгоритмите и проверка на всички връзки, кутията трябва да бъде внимателно запечатана. Всички конектори на входа на корпуса са покрити с уплътнител, същото важи и за всички стърчащи глави на винтове, изхода на антената и захранващия кабел. Ставите на тялото са покрити с пластилин (като се има предвид, че ще трябва да бъдат разделени) и допълнително залепени отгоре с ленти от водопроводна лента. Добра идея е допълнително внимателно да укрепите използваните съединители вътре с епоксидна смола: например, дистанционният модул DB-15, посочен на диаграмата, не е херметичен сам по себе си и влажен въздух бавно ще прониква между металната рамка и пластмасовата основа.

Но всички тези мерки сами по себе си ще дадат само краткосрочен ефект - дори и да няма засмукване на студен, влажен въздух, тогава сухият въздух от помещението лесно се превръща във влажен, когато температурата извън кутията спадне (спомнете си явлението, наречено "Точка на оросяване").

За да избегнете това, е необходимо да оставите патрон или торбичка със десикант - силикагел вътре в кутията (торбичките с него понякога се поставят в кутии с обувки или в някои опаковки с електронни устройства). Ако силикагелът е с неизвестен произход и е съхраняван дълго време, той трябва да се калцинира в електрическа фурна при 140-150 градуса за няколко часа преди употреба. Ако кутията е запечатана правилно, тогава десикантът ще трябва да се сменя не по-често от началото на всеки летен сезон.

Основният модул

В основния модул всички стойности се получават, декодират, ако е необходимо, преобразуват се в съответствие с уравненията за калибриране и се показват.

Приемникът се изважда от корпуса на основния модул на станцията и се поставя в малка кутия с уши за закрепване. Антената се извежда през отвор в капака, всички отвори в кутията са запечатани със сурова гума. Контактите на приемника са насочени към много надежден домашен RS-4 конектор, от страната на приемника той е свързан чрез сегмент от двойно екраниран AV кабел:

От едното кабелно жило се взема сигнал, а през другото се подава захранване под формата на "сурови" 9 волта от захранващия адаптер на модула. Стабилизаторът тип LM-2950-5.0, заедно с филтърни кондензатори, е инсталиран в кутия заедно с приемник на отделна платка.

Проведени са експерименти за увеличаване на дължината на кабела (за всеки случай - какво ще стане, ако не работи през стената?), При които се оказа, че нищо не се променя в рамките на дължина до 6 метра.

Има само четири OLED дисплея: два жълти обслужват метеорологични данни, два зелени часовника и календар. Разположението им е показано на снимката:

Моля, имайте предвид, че във всяка група един от дисплеите е текстов, вторият е графичен, с изкуствено създадени шрифтове под формата на глифни картинки. Тук няма да се спираме на въпроса за извеждането на информация на дисплеи в бъдеще, за да не надуваме вече обширения текст на статията и примерите: поради наличието на глифни изображения, които трябва да се показват поотделно (често чрез просто изброяване опции, използващи оператор case), изходните програми могат да бъдат много тромави. За информация как да се справите с тези дисплеи, вижте публикацията на автора „Графичен и текстов режим на дисплеите на Winstar“, която включва пример за дисплей за извеждане на данни за вятъра.

Схематична диаграма.За улеснение на настройката, часовникът и неговите дисплеи се обслужват от отделен контролер Arduino Mini и няма да ги анализираме допълнително тук. Схемата за свързване на компоненти към Arduino Nano, която контролира приемането и извеждането на метеорологични данни, е както следва:

Тук, за разлика от дистанционния модул, е показано свързването на метеорологични сензори - барометър и вътрешен сензор за температура-влажност. Трябва да обърнете внимание на захранването - дисплеите се захранват от отделен 5 V стабилизатор тип LM1085. Естествено е също така да се захранват дисплеите на часовника от него, но в този случай часовниковият контролер също трябва да се захранва от същото напрежение и през изхода 5 V, а не Vin (за Mini Pro последният се нарича RAW). Ако захранвате контролера на часовника по същия начин като Nano - с 9 волта през RAW изхода, тогава неговият вътрешен регулатор ще се сблъска с външните 5 волта и в тази битка, разбира се, най-силният ще спечели, тоест LM1085 , а Mini ще остане напълно без захранване. Също така, за да се избегнат всякакви неприятности, преди да програмирате Nano и особено Mini (тоест преди да свържете USB кабела), външният адаптер трябва да бъде изключен.

На стабилизатора LM1085, когато и четирите дисплея са свързани, ще се освободи около ват мощност, така че трябва да бъде инсталиран на малък радиатор от около 5-10 cm2 от алуминиев или меден ъгъл.

Приемане и обработка на данни. Тук възпроизвеждам и коментирам само програмните фрагменти, свързани с данни за вятъра, за други сензори няколко думи по-късно.

За да получим съобщение на 433 MHz канал, ние използваме стандартния метод, описан в много източници. Свързваме библиотеката и декларираме променливи:

#включи . . . . . intvolt; //напрежение на батерията в условния цял код float batt; //реална стойност - байт напрежение на батерията wDir; //посока в сив код uint16_t t_time = 0; // интервал от време на приемане char str; //низ за данни uint8_t buf; //променлива за получено съобщение uint8_t buflen = VW_MAX_MESSAGE_LEN; // максимална дължина на полученото съобщение. . . . .
Има една особеност с размера на буферния буфер: не е достатъчно да се декларира стойността му (VW_MAX_MESSAGE_LEN) веднъж в началото на програмата. Тъй като тази променлива се появява чрез препратка във функцията за получаване (вижте по-долу), размерът на съобщението по подразбиране трябва да се актуализира всеки цикъл. В противен случай, поради получаването на повредени съобщения, стойността на buflen ще се съкращава всеки път, докато не започнете да получавате глупости вместо данни. В примерите и двете променливи обикновено се декларират локално в цикъла loop(), така че размерът на буфера се актуализира автоматично, но тук просто ще повторим присвояването на желаната стойност в началото на всеки цикъл.

В процедурата за настройка правим следните настройки:

Void setup() (закъснение (500); //за изключване показва pinMode(16,INPUT_PULLUP); //щифт за бутона vw_setup(1200); //Скорост на връзката VirtuWire vw_set_rx_pin(17); //Пин на приемника A3 VirtualWire. . . .
Преди да приемете нещо, се проверява интервалът от време t_time, който е изминал от последното приемане. Ако надхвърли разумните граници (например 48 секунди - три пъти времето за повторение на съобщенията от външното устройство), това се възприема като загуба на сензора и по някакъв начин се показва на дисплея:

Void loop() ( vw_rx_start(); // Готов за получаване buflen = VW_MAX_MESSAGE_LEN; // размер на буфера всеки път отново, ако ((int(millis()) - t_time) > 48000) // ако t_time не е актуализиран за повече от 48 секунди (<отображаем прочерк на дисплее>)//краен сензор не е намерен if (vw_have_message()) ( //изчакайте получаването if (vw_get_message(buf, &buflen)) // Ако данните са получени ( vw_rx_stop(); //спрете получаването за известно време t_time = millis( ); / /актуализиране на t_time за (байт i=0;i<3;i++) // Получить первые три байта str[i]= buf[i]; str="\0"; if((str=="D")&&(str=="A")&&(str=="T")) { //сигнатура принята //принимаем данные: for (byte i=3;i<7;i++) // извлечь четыре байта аккумулятора str= buf[i]; // упаковать их в строку volt=atoi(str); //преобразовать в целое число volt=(volt/10)-100; //удаляем добавки до 4-х байт batt=float(volt)/55.5; //преобразуем в реальный вид напряжения в вольтах //и пока храним в глобальной переменной for (byte i=7;i<11;i++) // извлечь четыре байта направления str= buf[i]; // упаковать их в строку int w_Dir=atoi(str); //преобразовать в целое число w_Dir=(w_Dir-1000)/10; //возвращаем к исходному виду wDir=lowByte(w_Dir); //младший байт - код Грея <выводим направление на дисплей через оператор case> . . . . .
Коефициент 55.5 - преобразуване на стойността на ADC кода в реално напрежение, неговата стойност зависи от референтното напрежение и стойностите на резисторите на делителя.

Между другото, кодът на Грей има една особеност: редът на битовете е маловажен в него, кодът запазва всичките си свойства за всяка пермутация. И тъй като при декодирането ние все още разглеждаме всеки случай поотделно тук, битовете могат да се разглеждат във всякакъв ред и дори да се объркат, когато са свързани. Друг е въпросът дали са искали по някакъв начин да рационализират този въпрос - например да създадат масив от стойности на посоката („s“, „ssz“, „sz“, „zsz“, „z“ и т.н.) и вместо това на индивидуално разглеждане всеки вариант извлича обозначения по номер в този масив. Тогава човек би трябвало да преобразува кода на Грей в подреден двоичен и редът на битовете ще играе значителна роля.

И накрая, извличаме стойността на скоростта и затваряме всички изрази:

За(байт i=19;i<23;i++) // Получить четыре байта частоты str= buf[i]; // упаковать их в строку int wFrq=atoi(str); //преобразовать в целое число wFrq = (wFrq-1000)/10; //удаляем добавки до 4-х байт wFrq=10+0.5*wFrq;//скорость в целом виде с десятыми <отображаем ее на дисплее поразрядно>)//end if str=DAT )//end vw_get_message ) //end vw_have_message(); . . . . .
Тук 10+0.5*wFrq е уравнението за калибриране. 10 dm/s (т.е. 1,0 метра в секунда) е началният праг, а 0,5 е коефициентът на преобразуване на честота към скорост (в dm/s). При нулева стойност на входната честота това уравнение дава 10 dm / s, следователно трябва да се обърне специално внимание, за да се покаже не 1 m / s, а нулева стойност. Можете да калибрирате сензора за скорост, като използвате всеки от най-евтините ръчни анемометри и настолен вентилатор. Не се опитвайте да определите началния праг експериментално - ще бъде много по-точно, ако маркирате две или три точки от калибриращата права линия на скоростта V от честотата F: V = Vp + K × F при различни скорости на потока, след това началният праг ще бъде определен автоматично като стойност Vp (ординатата на точката на пресичане на тази линия с оста на скоростта).

Има още едно нещо, което трябва да направите, преди да затворите главния цикъл. Имаме напрежение на батерията, но не е нужно да го показвате през цялото време - просто заемете място. За това е необходим бутон Kn1 - като щракнете върху него, ние временно (до следващото актуализиране на данните) заменяме външната линия температура-влажност със стойността на напрежението:

If (digitalRead(16)==LOW)( //бутонът е натиснат<выводим напряжение на дисплей, затирая значение температуры-влажности>)//закъснение на бутона за край (500); )//краен цикъл
Имах бутон, както се вижда от диаграмата, с превключващ контакт, но нищо не ми пречи да инсталирам обикновен със затварящ, като го свържа към захранване през резистор. Към това можете да добавите и мигането на символите на дисплея в случай, че напрежението на акумулатора падне под, например 10 волта, като знак, че е време да го смените.

В заключение, за метеорологичните сензори. SHT-75 беше използван като външен сензор - единственият аматьорски сензор, който открих, който не изисква калибриране и показва реални стойности на температурата и влажността направо от кутията (оттук и високата му цена).

Може да се намери библиотека за свързването му.

SHT-75 е проектиран по доста глупав начин: металната подложка на платката провежда топлина много добре, така че трябва да бъде напълно извадена от кутията. В противен случай наличието само на един контролер ATmega328 с регулатор на захранването в затворен корпус е достатъчно, за да загрее сензора с няколко градуса през субстрата на платката, дори ако главата му е преместена навън. Моята верига със сензори за вятър, с нейните токове от 20-130 mA (дори ако токът е незначителен милисекунди) нагрява SHT-75 градуса с пет, така че беше изваден и монтиран отделно върху пластмасова плоча, стърчаща отстрани от кутията .

Данните от SHT-75 се вземат от същия контролер като данните от сензорите за вятър и се изпращат от отдалечения модул в един пакет чрез безжичен канал 433 MHz. Те също се преобразуват в 4-байтов низ за предварително предаване.

За измерване на температурата и влажността вътре в стаята беше избран баналният DHT-22 - тъй като обхватът там е малък в сравнение с улицата, няма разлика кой сензор да използвате (с изключение, разбира се, DHT-11, който не трябва да се използва изобщо при каквито и да било обстоятелства, тъй като по предназначение е просто неработоспособен). Температурата на DHT-22 беше коригирана според измерванията с живачен термометър (те напълно съвпадаха с SHT-75!), а влажността беше леко коригирана в сравнение с SHT-75. Корекциите се въвеждат точно преди индикацията на дисплея.

Между другото, DHT-22 също трябва да бъде изваден от кутията с дисплеи - в противен случай той неизбежно ще се нагрее и ще излъже. Закрепвам го върху пластмасова стойка в долната част на корпуса, на разстояние десет милиметра от него. Това обстоятелство, между другото, както подозирам, е една от причините (освен липсата на индивидуално калибриране), че всички битови метеорологични станции с марка RST и Oregon безсрамно лъжат в показанията си, като имат разпределение дори със себе си (вътрешен сензор с външна) от два-три градуса и до десет процента влажност.

Барометърне представлява проблеми, тъй като почти всички налични в търговската мрежа са направени на една и съща основа - микроелектромеханичният (MEMS) чип BMP180 или неговите модификации. Моят личен опит с по-рядко срещания вариант, базиран на LPS331AP, беше отрицателен: библиотека за него е по-трудна за намиране и в допълнение беше открит конфликт с други устройства на I2C шината. Показанията на барометъра може да се наложи да се коригират на мястото на монтаж - всеки 10-12 метра височина над морското равнище намалява налягането с 1 mm Hg. Изкуство. Следователно, определена стойност ще трябва да се извади от показанията (или да се добави), така че стойността на налягането да съответства на показанията на официалната метеорологична станция в района.

Не давам всички програми на метеорологичната станция изцяло - те са доста тромави и все още няма да можете да повторите дизайна един на един. Ако има нещо, чукайте на ЛС.

UPD от 30.06.17г.Инсталирана слънчева енергия. Комплект от тук:
слънчевия панел
контролер
батерия
Всичко заедно + доставка в Москва в рамките на 2,5 tyr. Работи безупречно.
Интересен метод за изчисляване на мощността на слънчева батерия и батерия, който се предлага от консултанти от този сайт. Пример за изчисление за 3 W консумация на енергия (имам много по-малко), цитирам:
„3W по 24 часа и разделено на 6 = 12Ah е минималният капацитет на батерията
3W, умножено по 24h и разделено на 3h = 24W, е минималната мощност на соларната батерия.
Без коментари.
В моя случай полученият капацитет на слънчевата електроцентрала е десет пъти по-висок от необходимия при най-лошите метеорологични условия. Следователно в сензорния контролер не можете да се грижите много за пестенето на енергия и да приложите всички необходими честоти за четене и усредняване.

UPD от 13.09.18г.За почти два сезона на работа бяха разкрити силните и слабите страни на станцията. Слабите са на първо място, че цикълът на актуализиране на показанията от 16 секунди (от четири серии измервания), както беше първоначално, е твърде дълъг. Инсталирането на слънчева батерия с буферна батерия направи възможно да не мислим за пестене на енергия и да си играем с времето на цикъла. В резултат на това цикълът беше настроен на 8 секунди (четири измервания за две секунди).
От механичните подобрения под върха на сензора за скорост беше въведен солиден опорен лагер (да, тогава бях предупреден за нуждата му, но тогава не разбрах как да го направя). След известно време оста на сензора напълно проряза флуоропластовата опора и началният праг се увеличи рязко (между другото, това изобщо не се отрази на чувствителността на флюгера). Поради това опората беше заменена с опорен лагер от неръждаема стомана, в който беше направена малка вдлъбнатина с тънка бормашина. Имам предчувствие, че по-късно ще трябва да измисля нещо друго с върха, който като цялата ос е от дурал. Но го отложих до момента, в който сензорът все още трябваше да бъде преработен: лазерният диск, взет за основа на дизайна, стана мътен от слънцето за два сезона и започна да се напуква.

UPD от 06/05/19.
Относно смяната на сензора (флюгера остана същата). Сензорът за скорост трябваше да бъде преработен както заради износената ос, така и заради лазерния диск, който стана неизползваем. Основният дизайн остава същият, но новият лазерен диск е боядисан със златиста боя. Решението за върха на оста е намерено в следната форма. В оста на дуралуминия беше пробита вдлъбнатина точно в центъра и там върху второ лепило беше вмъкнат 3 мм разрез на върха на китайски кран. Горната част на крана е добре центриран конус с ъгъл около 70-80 градуса, допълнително е полиран с нулева шкурка и след това с GOI паста. Като основа използвах главата на неръждаем винт M3 с нарязан прорез, в който е отбелязана малка вдлъбнатина в центъра с обикновена бормашина D = 2 mm. Този винт се завинтва директно в вдлъбнатина в PTFE, изрязан от оста преди осигуряване на центриране.
Върхът на оста беше смазан с графитна грес за защита от корозия (тъй като неръждаемите свойства на крана са ми неизвестни). След известно смилане началният праг намаля толкова много, че стана невъзможно да се измери със собствен анемометър, в който прагът е около 0,3-0,5 cm / s. По косвени данни (чрез построяване на права линия от две точки) доброволно е приет праг от 0,3 m/s, въпреки че вероятно е малко по-малък.

Основната промяна в алгоритмите за изчисление се отнася и до сензорите за вятър и намерих за полезно да го сложа в .


Ветровете варират от лек бриз до внезапни пориви, които носят разрушения и смърт. Най-силните ветрове са ураганите. Тези ураганни ветрове се образуват над океаните в тропиците, когато огромни маси въздух се всмукват в области с ниско налягане. Буреносните облаци често обикалят центъра (или окото) на урагана със скорост, по-висока от железопътния влак.

Може никога да не сте изпитвали бурен вятър, но където и да живеете, вероятно сте преживявали както спокойни, така и ветровити дни. Направете анемометър, най-простият инструмент за измерване на скоростта на вятъра, и запишете силата на вятъра във вашия район във ветровит ден.

Ще имаш нужда:

Дебел дървен щифт
тънки дървени пръти
въже и отвес
чаша кисело мляко
лепяща лента (водоустойчива)
палци
цветен картон
медна тръба
лепило
ножици

1. Вземете дебел дървен щифт и го поставете здраво в медната тръба. Това ще бъде стойката за анемометър.

2. Помолете възрастен да ви помогне да пробиете дупка през стойката. Диаметърът на отвора трябва да съответства на дебелината на един от тънките пръти. Направете прорез в единия край на тази тънка пръчка. Поставете го в стойката и го закрепете, както е показано на снимката.

3. Изрежете върха на стрелата и пръчката от картон и го закрепете към краищата на тънък прът.

4. Изрежете четвърт кръг от цветен картон и го прикрепете към стрелката с тиксо.

5. Вземете голяма чаша кисело мляко. Залепете го към единия край на втория тънък дървен прът.

6. Помолете възрастен да ви помогне да пробиете малка дупка в другия край на втория прът, след което го закрепете с щифтове или забийте в горната част на стълба. Уверете се, че пръчката може да се върти свободно.

7. Изберете подходящо място за наблюдение на открито. Забийте медна тръба в земята и след това поставете стълб в нея. Фиксирайте стойката в желаната позиция с помощта на фиксатора. Монтирайте стелажа строго вертикално, като окачете отвес към стрелката (можете да използвате гайка като отвес). Отвесът трябва да виси строго успоредно на стелажа.

Вятърът завърта стрелката на анемометъра, така че да сочи в посоката, от която духа вятърът.
Чашата и стъблото за кисело мляко ще се издигнат с него. Колкото по-силен е вятърът, толкова по-високо се издига прътът на показалеца.

Скала на Бофорт

Това е скала за измерване на скоростта на вятъра, която се основава на наблюдения на природата. Скалата е изобретена от английския адмирал сър Франсис Бофорт преди почти 200 години.

Скоростта на вятъра на метеорологичните карти се обозначава с броя на тирета на иконата за сила на вятъра.

Скоростта на вятъра Вербална характеристика Признаци за оценка на скоростта на вятъра
г-ца км/ч резултат
Бофорт
0,0-1,5 0,0-1,8 0 Спокоен Димът се издига вертикално или почти вертикално, листата са неподвижни
0,6-1,7 1,9-5,1 1 Тих вятър Посоката на вятъра се определя от дима
1,8-3,3 5,2-11,7 2 Лек бриз Движението на вятъра се усеща от лицето, листата шумолят
3,4-5,2 11,8-18,7 3 слаб вятър Листата и тънките клони на дърветата непрекъснато се люлеят, вятърът развява леки знамена, морето е покрито с непрекъсната светлинна вълна.
5,3-7,4 18,8-26,6 4 умерен вятър Вятърът вдига прах, задвижва тънките клони на дърветата, на отделни вълни от време на време се появяват бели, бързо изчезващи „агнета“
7,5-9,8 26,7-35,3 5 Свеж бриз Поклащат се дебели клони на дърветата; "агнета" се виждат на всяка вълна
9,9-12,4 35,4-44,0 6 Силен вятър Дебелите клони на дърветата се люлеят, телеграфните жици бръмчат, "агънцата" на вълните са по-дълги (5-10 сек.)
12,5-15,2 44,1-54,7 7 силен вятър Върховете на дърветата се люлеят, големи клони се огъват, неудобно е да се върви срещу вятъра. Разпенени вълни в морето
15,3-18,2 54,8-66,0 8 Много силен вятър Вятърът чупи тънки клони и сухи клони на дървета, което затруднява движението
18,3-21,5 66,1-77,5 9 Буря Вятърът събаря комини и керемиди. Много е трудно да вървиш срещу вятъра.
21,6-25,1 77,6-90,2 10 Силна буря Значителни разрушения, изкоренени дървета
25,2-29,0 90,3-104,4 11 Силна буря Голямо разрушение: събаряне на телеграфни стълбове, вагони
Над 29.0 Над 104.4 12 ураган Разрушава къщи, причинява големи разрушения

Моят нов анемометър. Анемометърът се оказа не малък, генераторът е дисков, диаметърът на винта е 0,5 м. Анемометърът е хоризонтален тип с шестлопастно витло. Статията съдържа подробно описание със снимки и видеоклипове

Нова статия по темата + снимка и видео - Анемометър андроид + микрофон

Най-накрая се стигна до анемометъра. След като вече направих три вятърни турбини, все още не знам точно какъв вятър и колко дават моите вятърни мелници. Сега работи само един вятърен генератор, моят най-успешен, въпреки че целият е сглобен "на коляно". Представям си грубо силата на вятъра и мога да разгранича вятър от 5 m/s и 10 m/s, но все пак искам да знам скоростта на вятъра по-точно, за да определя мощността на вятърния генератор.

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

Един автомобилен вентилатор ми хвана окото, обикновено се монтират в камиони. Това е този, който го измъчвах. Демонтиран и свален мотора. Счупих лопатките от перката и остана само основата - централната част, която се слага на вала. След това помислих какви остриета да закача към него, опитах дъното на пластмасови бутилки и кутии, но не ми хареса всичко това.

След това намерих парче PVC тръба с диаметър 5 см и дължина 50 см. Направих 4 остриета от него, просто разрязах тръбата по дължина на две половини и половинките, всяка на две части, се получиха 4 остриета. В основата, която остана от родния винт, пробих 4 отвора за закрепване на остриетата, а също така направих 4 отвора в остриетата. Той усука цялата работа на болтове и се сдоби с четирилопатково витло - savonius (първата "сериозна" вертикална).

Е, тогава намерих проводниците с необходимата дължина, свързах 5 метра антенен кабел и 8 метра от обичайния. Веднага свързах проводниците, за да измеря параметрите, като се вземе предвид дължината на проводника, тъй като данните могат да се различават, ако измерванията се правят на метър проводник или на 13 m.

След това намерих парче метална тръба с дължина около 80-90 см, огънах го с буквата Z и навих мотора. Тази тръба ще прикрепи анемометъра към мачтата. Няма нищо сложно, можете да използвате всеки подръчен материал.

Е, тогава, когато сглобих напълно анемометъра, го инсталирах на мотоциклета си, за да го калибрирам. По-долу на снимката можете да видите как е направено, всичко е примитивно и просто. На огледалото на приматите с електрическа лента, сапун метър, като цяло, някак си оправи всичко, за да освободя ръцете ми да управлявам мотоциклета.

Този есенен ден е много успешен поради почти пълната липса на вятър, който между другото послужи за бързо сглобяване на анемометъра, такъв ден не трябва да изчезва. Не исках да ходя по асфалта, защото с неразбираема измислица пред мотоциклета щях да привлека вниманието към себе си, затова реших да карам през нивите покрай горските насаждения.

Карах напред-назад и в различни посоки и записвах показанията на мултиметъра на телефона с различна скорост. Анемометърът стартира със скорост от 7 km / h и аз постепенно се търкаля напред-назад с различни скорости, започвайки от 10 km / h и максимум 40 km / h, беше възможно повече, но черните пътища са много неравни и можете не ускорявай много.

>

След pokatushek такива данни бяха изготвени. Мултиметърът показваше при 10km/s =0,06V, при 20km/h=0,12V, при 30km/h=0,20V, при 40km/h=0,30V.

След това с помощта на калкулатор изчислих показанията за междинни скорости на вятъра.

Волтове - скорост на вятъра m/s.

Данните над 11 m/s бяха изчислени чрез начертаване на лист хартия на графика на нарастване на напрежението в зависимост от скоростта на вятъра, което плавно продължаваше до 15 m/s. В същия ден, или по-скоро вечерта, монтирах анемометър на мачтата към вятърния генератор. Спусна вятърната мелница и завърза анемометъра отдолу. Временно дръпнах тръбата върху тел и я увих допълнително с тиксо, оказа се здрава. Е, тогава вдигнах цялата работа на място и сега има анемометър на мачтата до ветрогенератора, който започва от 3 m/s и редовно показва скоростта на вятъра.

>

>

По-долу на снимката е издигната вече вятърна турбина с фиксиран анемометър. Не съм правил снимки по-подробно, тъй като там няма нищо сложно и няма какво да се повтаря. Анемометърът може да бъде сглобен от всичко, от почти всеки двигател. Разбира се, по-удобно е да се калибрира с кола. Там и удобно, и по-удобно, и скоростомера е по-точен. Но реших да взема мотоциклет и той също изглежда се получи добре, надявам се, ако скоростомера лъже, тогава не много.

>

Това е всичко за сега, това е първата версия на този анемометър и мисля, че не е последната. Междувременно ще изчакам вятъра и ще разбера какво дава моят вятърен генератор. Е, ще допълня тази статия с тези данни. Може би нещо трябва да се преправи...

Добавяне

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

Ненатоварен с нищо анемометърен винт реагира рязко на всеки порив и промяна в скоростта на вятъра. И натовареният винт на този вятърен генератор все още закъснява с реакциите и поради това несинхронни данни в показанията. Днес вятърът е 3-7 m / s, анемометърът наистина улови няколко порива до 10 m / s, но те продължиха по-малко от секунда и вятърният генератор просто не можа да реагира на тях.

След известно време на наблюдение бяха изтеглени някои средни стойности на силата на тока от вятърния генератор при определен вятър. Винтът започва от 3,5-4 m / s, зареждане 0,5A при 4m/s, 1A при 5m/s, 2,5A при 6m/s, 4A при 7m/s, 5A при 8m/s. Тези данни са осреднени, тъй като амперметърът е аналогов стот и мога да греша до 0.5A в текущите показания от вятърния генератор.

Трябваше да е нещо подобно

Стъпки на производство на самия сензор:

Калъфът направи това: взех парче квадратна тръба и изрязах прозорец в него, за да мога по-късно да монтирам пълнежа през него (между другото, изрязах прозореца с температурата, но наистина исках да го направя че станах и отидох да видя). След това заварих плоча отвътре (вътрешен държач на лагера), след това заварих дъното (долен държач на лагера). Когато реших да направя горната част, реших да направя скатен покрив - за това изрязах четири триъгълника и внимателно го хванах, а след това го сварих напълно и така направих заострена козирка. След това го затяга в менгеме и с бормашина с 0,5 мм по-малък от диаметъра на лагера пробива вертикален отвор в долния капак и в средните, и двата за лагери. Така че лагерите от стомана с разтягане се регулират чрез размах. Лагерите пасват както трябва. След това той вкара леко полиран пирон от 100-ku в тях, като в същото време постави пластмасова шайба с 4 прореза в средата на прозореца. Нарязах резба в долната част на пирона и завинтях работното колело върху него.

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

Към тялото беше заварен шестоъгълен държач от неръждаема стомана. Самата кутия е боядисана два пъти с бял емайл, за да не ръждясва.

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

Leddiodno - фототранзисторен сензор изваден от принтера, има такива в насипно състояние.

Първо направен от тенис топки

Трябваше леко да модифицирам устройството. На работното колело от тенис топки той започна с вятър от 5 m / s. топки са закупени в магазин за детски играчки с диаметър 55 мм. Започва от 2m/s и измерва до 22m/s, достатъчно ми е.

След като сензорът беше готов. Трябваше да направим електроника.

Първият вариант беше домашна LUT технология + зелена маска от Китай, изсъхва под ултравиолетова светлина.

55 на снимката са обороти в секунда. Беше необходимо по някакъв начин да се преведе на m / s. Дълго си мислех как, дори си взех два анемометъра, стари от СССР и китайски за 50 долара, но имаше проблеми с проверката, защото вятърът е поривист и не духа стабилно.

Затова измислих това: в почивен ден татко и аз намерихме 2 км равен път извън града без коли, без вятър и засаждане на дървета от двете страни (татко шофира, а аз седях наполовина пред прозореца) и да караме напред-назад. Първо настроих репликата на СССР и китайските анемометри, уверих се, че и двете показват еднакво и правилно, защото ако разделите скоростта на скоростомера на колата на 3,6, тогава получавате цифрата, която анемометрите показват в m / с. Татко караше със същата скорост и инструментите показваха същия вятър. Ето как тествах моето устройство. Татко добавя +5 км в час всеки път, а аз записах нов индикатор (rpm). Измерванията бяха направени три пъти. Когато карахме над 80 km/h (22 m/s), анемометърът ми вече не можеше да се върти и цифрата замръзна, защото не измерва повече от 22 m/s....

Между другото, китайците показаха до 28m / s. СССР реплика до 20m/s. Когато го инсталирах на място с модифицирана програма, още веднъж проверих при китайците всичко се събра.

Сега се модифицира за Arduino.

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

Видео на работа

Резултати от работата за зимата

с-ст --- часове за зимата
0 m/s --- 511.0
1 m/s --- 475,0
2 m/s --- 386,5
3 m/s --- 321.2
4 m/s --- 219,0
5 m/s --- 131,5
6 m/s --- 63.3
7 m/s --- 32.5
8 m/s --- 15.4
9 m/s --- 9.1
10 m/s --- 5.0
11 m/s --- 3.5
12 m/s --- 2.2
13 m/s --- 1.3
14 m/s --- 0,8
15 m/s --- 0,5
16 m/s --- 0,5
17 m/s --- 0,2
18 m/s --- 0,0
19 m/s --- 0,1


Според резултатите за две зими видях, че ветровете ми не са силни и вятърната мелница няма да е ефективна, затова направих малка с 50см остриета. пикова мощност от 150 вата. Просто се уверих, че поне една икономична крушка свети, когато светлината изчезне.

Сега малко за Arduino.

Намерих диаграма на мишката в интернет, тя ясно илюстрира как работи моята система.

Въз основа на диаграмата на мишката направих следната схема.

Импулсите идват от фототранзистора към Arduino и той ги възприема като натискане на бутони.

Алгоритъмът на програмата е следният: Ние разглеждаме колко натискания на бутони са се случили за една секунда, така че имаме честотата на въртене. За да преобразувате тази честота в m/s. когато го направих на Atmel, направих алгоритъм за изчисляване на честотата в m/s. Изглеждаше така:

ob_per_sec=0; // Променлива, в която честотата на оборотите в секунда пада.

int speed_wind=0; // Стойността ще отиде тук, след като честотата бъде преобразувана в m/s.

int speed_wind_max=0; // Максималната стойност на отчитане на вятъра m/s е тук.

int speed_wind_2=0; // Брой секунди от началото на програмата със скорост на вятъра 2 m/s.

int speed_wind_3=0; // Брой секунди от началото на програмата със скорост на вятъра 3 m/s.

int speed_wind_4=0; // Брой секунди от началото на програмата със скорост на вятъра 4 m/s.

int speed_wind_5=0; // Брой секунди от началото на програмата със скорост на вятъра 5 m/s.

…………………………………………………………..

int speed_wind_22=0; // Брой секунди от началото на програмата със скорост на вятъра 22 m/s.

if (ob_per_sec >0 && ob_per_sec<4) { speed_wind=2; speed_wind_2++;}

if (ob_per_sec >4 && ob_per_sec<7) { speed_wind=3; speed_wind_3++; }

if (ob_per_sec >7 && ob_per_sec<11) { speed_wind=4; speed_wind_4++; }

if (ob_per_sec >11 && ob_per_sec<15) { speed_wind=5; speed_wind_5++; }

if (ob_per_sec >15 && ob_per_sec<18) { speed_wind=6; speed_wind_6++; }

if (ob_per_sec >18 && ob_per_sec<23) { speed_wind=7; speed_wind_7++; }

if (ob_per_sec >23 && ob_per_sec<27) { speed_wind=8; speed_wind_8++; }

if (ob_per_sec >27 && ob_per_sec<30) { speed_wind=9; speed_wind_9++; }

…………………………………………………………..

if (ob_per_sec >60 && ob_per_sec<67) { speed_wind=22; speed_wind_22++; }

if (speed_wind> speed_wind_max)( speed_wind_max = speed_wind ;)// проверете и презапишете дали максималната стойност е по-голяма от предишната записана.

И покажете стойността.

Ако е необходимо, след това можете да видите колко минути духа вятърът с определена скорост, за това трябва да покажете променливата (с необходимия индекс на скорост) speed_wind_№ (но я разделете на 60, за да получите минути.).

Направих това в моята програма: когато се натисне определен бутон, всички променливи се показват на свой ред, от speed_wind_1 до speed_wind_22.

Зареждане...Зареждане...