Справочници, схемотехника, теория > Програмиране на микроконтролери, програматори, цифрови проекти

Логика за управление на помпа и хидравличен изравнител

<< < (7/10) > >>

EDM electronics:

--- Цитат на: dmitarp в Януари 31, 2020, 10:45:39 pm ---1. Първата стъпка на най-простия алгоритъм за навигация е да се направи корекция на магнитометъра да показва чист север. Корекцията става или с формули или с карта на магнитната деклинация, за района на Черно море корекцията е около +4 градуса, но с това около ще ти даде голямо отклонение и затова като се знае позицията по формули или много подробни карти се прави корекция.
2. Прочитат се две точки на траекторията от базата данни (GPS данни), от тях се изчислява ъгъла по това направление спрямо севера.
3. Завърташ руля, така че движението да стане по това изчислено направление, като се следи коригираното показанието на компаса да сочи това направление.
4. Тъйкато лодката е в движение, тя ще се движи по това направление, но курса няма да е верен, ще се движи паралелно на зададения курс, затова се четат GPS данни от приемника. Повтарят се точките 2 и 3 с това показание и с втората точка от данните ти. Тази точка от алгоритъма се повтаря или до достигането на втората точка или до някаква приемлива грешка между реалния курс и зададеният.
5. След като се стигне точка 2, се взима точка 3 от данните за траекторията и се повтаря същото.
За по точен навигатор могат да се използват и данните от акслерометъра. Трябва да се има в предвид, че тези данни трябва много добре да се филтрират, с филтри с малко закъснение.

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

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

Иначе за датчиците е точно така както казваш, значи си се занимавал?  :D
Прави се първо калибровка и после се поставя цифров филтър за средна стойност, да се премахне дребезга на датчиците. Ще ползвам филтър на Калман. Ще ползвам и комбиниран датчик за абсолютна ориентация, защото е по-стабилен от магнитометъра. Магнитометъра променя показанията, като се завърти по оста Z. Комбинирания отстранява този проблем с акселерометъра.

Не разбрах и накрая какво искаш да кажеш: да е малко закъснението на филтъра, т.е да е по-бърз или да има закъснение, да няма рязкост на показанията?

epwpixieq-1:

--- Цитат на: juliang в Януари 31, 2020, 10:41:59 pm ---Има друг проблем - котела и горелката също са инертни. Нямам гаранция че котела ще подава винаги една и съща температура., т.е. Т1 не е константа.

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

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

Радико:

--- Цитат на: EDM electronics в Януари 31, 2020, 11:29:10 pm ---Това не го очаквах.  :)
Не допусках, че някой от форума може да знае нещо по въпроса, но виждам, че има доста запознат с тази тема, щом и се споменават филтри.
Благодарсо колега dmitarp .  :) Много ми помогна.

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

Иначе за датчиците е точно така както казваш, значи си се занимавал?  :D
Прави се първо калибровка и после се поставя цифров филтър за средна стойност, да се премахне дребезга на датчиците. Ще ползвам филтър на Калман. Ще ползвам и комбиниран датчик за абсолютна ориентация, защото е по-стабилен от магнитометъра. Магнитометъра променя показанията, като се завърти по оста Z. Комбинирания отстранява този проблем с акселерометъра.

Не разбрах и накрая какво искаш да кажеш: да е малко закъснението на филтъра, т.е да е по-бърз или да има закъснение, да няма рязкост на показанията?

--- Край на цитат ---

Разгледай това ако искаш:
https://github.com/mikalhart/TinyGPSPlus 

И между другото във библиотеките с които ардуиното комуникира с датчиците филтрите са си заложени. Ще ти трябват филтри ако създаваш собственна оригинална библиотека.

juliang:

--- Цитат на: epwpixieq-1 в Февруари 01, 2020, 12:00:04 am ---Променливостта на температурата на флуида от котела не виждам да е голям проблем, въпреки че определено прави "люшкането" в системата още по-силно. При положение че е възможно да се предположи че температурата на флуида от котела винаги ще е по-висока от температурата във съда, то променливостта единствено (предполагаемо) ще влияе върху това дали вие имате контрол и върху "силата" на горелката, като предполагам че контролирате скоростта на помпата.

--- Край на цитат ---
Имам чувството че не схващаш идеята на този изравнител... В него реално няма някакъв смислен обем вода. В моя случай най-вероятно "съда" ще е една тръба ф200 или 250 мм с височина 1 метър. В нея с мъка ще влезнат 20 литра вода. Това количество помпата го превърта за 2-3 секунди...
Идеята на този дивайс е да се развържат дебитите. Имаш една котелна помпа, и 10 помпи на консуматорите. Ако няма този изравнител, всяко пускане на помпа на консуматор прави вакуум след помпата на котела, защото тя е много по-голяма и съответно много по-инертна. Спирането е още по-зле - голямата помпа се опитва да натика една вода в инсталация, през която вече не може да мине това количество, и оставащите работещи помпи стават генератори.
А когато имаш изравнител, при спиране на консуматорска помпа котелната може да превърта малко дебит през него. При пускане пък ще се превърта малко студена вода.
Ако помпата няма управление, единствения начин за гарантиране на постоянно подаване на топла вода е котелната помпа гарантирано да има по-голям дебит от възможно най-голямата консумация която биха имали консуматорите. Т.е винаги да има някакъв безмислен поток между Т1 и Т3. Пък консуматорите колкото си дръпнат.... Ей така:

Но това е съпроводено със загуби на топлина и с безмислено харчене на ел. енергия. Идеята е възможно в най-голям период от време да се работи в първия режим:

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

mind:
juliang, бях ви писал по-рано, това което може да направите само с 4 сензора е да следите ΔT на Т1-Т3 и Т2-Т4 да не мърда. При намаляване на консумацията под някакъв праг се следи само Т1-Т3 да остане помпата в "авариен" режим на някакви минимални обороти.
Да следите Т1-Т2 и Т3-Т4 не е много удачно, нямате толеранс, разликите са десети и флуктоациите на потока могат да внесат значителни грешки. А това, че Т2 ще има моменти в които ще е по-високо от Т1 не може да се случи (не че има значение).

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

Навигация

[0] Списък на темите

[#] Следваща страница

[*] Предходна страница

Премини на пълна версия