Форум "Сивуч"

Сделай лучше, чем для себя
Текущее время: 15 дек 2018, 23:33

Часовой пояс: UTC + 2 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 51 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.
Автор Сообщение
 Заголовок сообщения: Re: Проект по созданию Электроники для Ребризера
СообщениеДобавлено: 13 мар 2013, 23:33 
Не в сети

Зарегистрирован: 13 мар 2013, 00:01
Сообщения: 20
Blik68:Что бы не перебирать заново диалог...
BANDiver: Вообще-то идея иметь до 4, по 2 на каждый Контроллер. Например для проверки сенсоров во время погружения, как на Poseydon Mk.6: при помощи дополнительных
двух соленоидов прямо на датчик впрыскивается либо кислый, либо воздух - так проверяется что датчик "адекватен".
Blik68:По моему скромному опыту, сенсоры мгновенно не умирают. А подача "в жало" О2 или дилуэнта на 1-5 сек заставляют сенсор отключатся от своей основной задачи - адекватно отображать РРО2. Плюс ко всему этому подача О2 сокращает срок службы сенсоров. Ну вот на 30м подал контроллер О2 на сенсор (сколько по времени?) до получения РРО2 = 3. И что? А если не дошло до 3-х? Подсаженный сенсор, только до 2-х показывает. Для работы это нормально, а для проверки нет. И сколько он будет "устаканивать" показания с 3-х до реального РРО2?
Balik68: Лучше организовать контроль подачи на диф. сенсоре давления, а заодно и промежуточного давления.
BANDiver: Да видел в Вашей ветке - отличное решение... Но как я понимаю не каждый будет ставить такой датчик: дополнительные трубки, разъемные соединения, место около Клапана... Дополнительные точки отказа. Думаю такое решение возможно оставить как опциональное и предлагать как модуль на I2C шине. Если не секрет, какой датчик Вы использовали?
Balik68:Можно предусмотреть на контроллере разъем для подключения внешнего датчика. Проверяем, если датчик есть (показания отличные от нуля), то обрабатываем его данные, если нет (показания 0) игнорируем. У меня стоит MPX5500DP диф. датчик на 5атм. Реально по даташиту выдерживает до 20 атм. Т.е. проверить подача есть/нет может, а если промежуточное давление 5атм и ниже, то еще и показывает промежуточное давление.
BANDiver: Спасибо за алгоритм! Как я понял у Вас чисто Пропорциональное управление. Есть доп. вопросы:
- стабильность работы по глубине. На какой максимальной глубине Вы испытывали это алгоритм?
- может стоит ввести Дифференциальную и Интегральную составляющие (до полного ПИД)?
- добавить зависимость от глубины: для адекватного управления в режиме погружения/всплытия?
- управление соленоидом: период фиксированный - 6 сек., время в открытом состоянии от 1 до 5 сек.? Разрешен-ли пропуск цикла срабатывания?
- Вы используете Пропорциональный коэффициент = 10. Может стоит дать возможность устанавливать его пользователю... В зависимости от объема контура, персонального потребления О2, дюзы (подачи), что еще не учел?
Blik68:Вот кусок кода открытия соленоида
ppo2 в % т.е РРО2 = 1.3 ppo2 = 130
open = ppo2_set - ppo2;
if (open >= 5)
{
if (open > 45) open = 45;
solenoid((open + 5) * 100); // Время в миллисекундах
}

Цикл срабатывания пропускается автоматически, если open < 5
Работает все стабильно. Максимальная глубина была около 40м.
Вот кусок алгоритма для установленных сетпоинтов

// Вычисление установленного РРО2 пропорционально глубине по заданным РРО2
//Глубина установки РРО2 0м, 10м, 20м, 40м
if (depth < 400) tmp = ppod[1] + (ppod[2] - ppod[1]) * (depth - 200) / (400 - 200);
if (depth < 200) tmp = ppod[0] + (ppod[1] - ppod[0]) * (depth - 100) / (200 - 100);
if (depth < 100) tmp = ppo_start + (ppod[0] - ppo_start) * (depth - 0) / (100 - 0);
ppo2_set = (unsigned int) tmp;

Мне кажется, не стоит настраивать пропорциональный коэффициент. Это только усложнит настройку и запутает пользователя, который толком не вникнет в его суть. В принципе, он влияет только на колебания РРО2 в контуре. В здравом уме никто не будет ставить подачу через соленоид меньше 5л/мин.
Обязательно добавить возможность программно устанавливать кол-во сенсоров (напротив каждого сенсора "Есть/Нет") с невозможностью отключения всех сенсоров. Максимально - 3, минимально - 1.

Да! На время работы соленоида желательно сбросить общий флаг прерываний, а после выключения опять установить. ИМХО...

Да, еще. Программисту об этом напоминать не нужно, но все-таки... Обязательно внешний супервайзер с входом меандра от ноги контроллера для удержания сигнала сброса (марка по вкусу). При входе в программу проверять как вошли: по включению питания или по сбросу. При входе по сбросу переходить к основному алгоритму. При включении питания сначала делать самотестирование, потом "вываливать" меню настроек. Обязательно проверка не в основном цикле РРО2 и внешнего давления. При понижении РРО2 ниже 0.2 или погружении более чем на 0.3м, переходить в основной цикл. Я забыл в программе о РРО2 и однажды чуть не поймал гипоксию стоя по грудь в воде. На контроллере в это время было меню настройки (случайно нажал кнопку).
В догонку кусок кода расчета РРО2

// PPO2
n = 0x02; // Маска для ко-ва сенсоров
r = 0xffff;
o2 = 0;
for (m=0; m<3; m++)
{
if (setup & n) // Проверка включен или нет сенсор
{
o2 += sensor[m];
kol++;
}
n <<= 1;
}

// Значение РРО2 среднее двух наиболее близких значений датчиков
if (kol > 2)
{
if (abs(sensor[0] - sensor[1]) < r)
{
r = abs(sensor[0] - sensor[1]);
o2 = sensor[0] + sensor[1];
use_sensor = 0b00000110;
}
if (abs(sensor[0] - sensor[2]) < r)
{
r = abs(sensor[0] - sensor[2]);
o2 = sensor[0] + sensor[2];
use_sensor = 0b00001010;
}
if (abs(sensor[1] - sensor[2]) < r)
{
o2 = sensor[1] + sensor[2];
use_sensor = 0b00001100;
}
o2 *= 5;
}
else
o2 = (o2 * 10) / kol;
o2 = (o2 / 10) + (o2 % 10) / 5;



Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проект по созданию Электроники для Ребризера
СообщениеДобавлено: 14 мар 2013, 10:02 
Не в сети

Зарегистрирован: 13 мар 2013, 00:01
Сообщения: 20
В догонку...
Обязательно проверять по всем сенсорам (не важно отключен/не отключен) превышение РРО2 1.8 и разницу показаний не отключенных сенсоров.
Вот кусок кода
// проверка РРО2 по каждому сенсору на превышение 1.8 и проверка допустимой разницы значений
open = 0;
if ((setup & 0b00000010) && (setup & 0b00000100))
open = abs(sensor[0]-sensor[1]);
if ((open < abs(sensor[0]-sensor[2])) && (setup & 0b00000010) && (setup & 0b00001000))
open = abs(sensor[0]-sensor[2]);
if (open < abs(sensor[1]-sensor[2]) && (setup & 0b00000100) && (setup & 0b00001000))
open = abs(sensor[1]-sensor[2]);
if (open*kfc_po/100 > 5)
{
sbi(PORTD,PORTD7);
msdelay(100);
cbi(PORTD,PORTD7);
}
open = 0;
for (i=0; i<3; i++) if (sensor[i]*kfc_po/100 > 180) open = 1;
if (open) sbi(PORTD,PORTD7);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проект по созданию Электроники для Ребризера
СообщениеДобавлено: 14 мар 2013, 10:13 
Не в сети

Зарегистрирован: 13 мар 2013, 00:01
Сообщения: 20
Вот блин! Еще забыл... Установленные сетпоинты (0м, 10м, 20м, 40м) могут меняться от РРО2 по воздуху до 1.6 для 20м и 40м. Для 10м от 0.4 до 1.0. Для 0м от 0.2 до 0.4. При чем, для 0м (поверхность) меняются единицы (самый младший разряд), т.е. 0.20 0.21 0.22 и т.д. до 0.40. А для 10м 20м и 40м меняются десятки, т.е. 1.00 1.10 1.20 и т.д.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проект по созданию Электроники для Ребризера
СообщениеДобавлено: 15 мар 2013, 00:43 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 21 дек 2010, 20:13
Сообщения: 162
Balik68:Можно предусмотреть на контроллере разъем для подключения внешнего датчика. Проверяем, если датчик есть (показания отличные от нуля), то обрабатываем его данные, если нет (показания 0) игнорируем. У меня стоит MPX5500DP диф. датчик на 5атм. Реально по даташиту выдерживает до 20 атм. Т.е. проверить подача есть/нет может, а если промежуточное давление 5атм и ниже, то еще и показывает промежуточное давление.
BANDiver:Решение с диф. сенсором хорошее, слов нет... вот только сенсор надо подобрать (или сделать "обойму" для двух MS5541 или аналогичных) где-то на 13-14 Атмосфер, так чтоб установочное давление мерялось во всем диапазоне, без ограничения/насыщения.
во всяком случае, датчик в пластике мне как-то стеремно ставить под давление...

Blik68:Мне кажется, не стоит настраивать пропорциональный коэффициент. Это только усложнит настройку и запутает пользователя, который толком не вникнет в его суть. В принципе, он влияет только на колебания РРО2 в контуре. В здравом уме никто не будет ставить подачу через соленоид меньше 5л/мин.
BANDiver:Меня всеж волнует поведение такого алгоритма на глубинах ниже 50 метров - где впрыск должен быть короче...

Blik68:Обязательно добавить возможность программно устанавливать кол-во сенсоров (напротив каждого сенсора "Есть/Нет") с невозможностью отключения всех сенсоров. Максимально - 3, минимально - 1.
BANDiver:Принято - добавлю меню конфигурации сенсоров...

Blik68:Да! На время работы соленоида желательно сбросить общий флаг прерываний, а после выключения опять установить. ИМХО...
BANDiver:Возможно, но не обязательно - смотря что будет обсчитываться в препывании, а что в осовном цикле - понимание есть, реализации еще пока нет...

Blik68:Да, еще. Программисту об этом напоминать не нужно, но все-таки... Обязательно внешний супервайзер с входом меандра от ноги контроллера для удержания сигнала сброса (марка по вкусу).
BANDiver: Внешнего супервизора не будет - встроенный более чем достаточем - ИМХО...

Blik68:При входе в программу проверять как вошли: по включению питания или по сбросу. При входе по сбросу переходить к основному алгоритму. При включении питания сначала делать самотестирование, потом "вываливать" меню настроек. Обязательно проверка не в основном цикле РРО2 и внешнего давления. При понижении РРО2 ниже 0.2 или погружении более чем на 0.3м, переходить в основной цикл. Я забыл в программе о РРО2 и однажды чуть не поймал гипоксию стоя по грудь в воде. На контроллере в это время было меню настройки (случайно нажал кнопку).
BANDiver:По текущей идеологии Контроллер автономен - нету никакого меню...
Только внешние команды от Компа на смену Сетпоинта... Так что никаких левых задач...

Blik68:В догонку кусок кода расчета РРО2
BANDiver:Не вникал прямо сейчас - оставил на время отладки...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проект по созданию Электроники для Ребризера
СообщениеДобавлено: 15 мар 2013, 00:53 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 21 дек 2010, 20:13
Сообщения: 162
Balik68 писал(а):
В догонку...
Обязательно проверять по всем сенсорам (не важно отключен/не отключен) превышение РРО2 1.8 и разницу показаний не отключенных сенсоров.
Вот кусок кода
[/color]
Спасибо! Просмотрю...
Хотелось-бы формально описать алгоритм голосования и критерии отказа от показаний сенсора(сенсоров). Когда дохнит один или два датчика - на основании каких критериев принимать решение о "адекватности" датчиков?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проект по созданию Электроники для Ребризера
СообщениеДобавлено: 15 мар 2013, 01:03 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 21 дек 2010, 20:13
Сообщения: 162
Balik68 писал(а):
Вот блин! Еще забыл... Установленные сетпоинты (0м, 10м, 20м, 40м) могут меняться от РРО2 по воздуху до 1.6 для 20м и 40м. Для 10м от 0.4 до 1.0. Для 0м от 0.2 до 0.4. При чем, для 0м (поверхность) меняются единицы (самый младший разряд), т.е. 0.20 0.21 0.22 и т.д. до 0.40. А для 10м 20м и 40м меняются десятки, т.е. 1.00 1.10 1.20 и т.д.
Идея с лимитами в зависимости по глубине мне понятна. Вот только это ограничивает Дайвера рамками "нашего" понимания...
А как насчет автоматического переключения сетпоинтов - есть-ли гистерезис, или что-либо подобное, чтоб не "счелкать" ели глубина около граничной?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проект по созданию Электроники для Ребризера
СообщениеДобавлено: 15 мар 2013, 18:37 
Не в сети

Зарегистрирован: 10 мар 2013, 17:19
Сообщения: 9
Э мужики, я кажись не очень все понял.
Подскажите как правильно понимать.
1 Проектируемый девайс это декомпресиметр Сивуч МК2 к которому просто добавлены порты подключения внешних датчиков и програмные функции по обслуживанию ребризерной периферии?
2 Пректируемый девайс это отдельное унитарное устройство в котором имеются порты и алгоритмы для обслуживания ребризерной перефирии и которое должно подключаться к Сивуч МК2? Это устройство самостоятельно не ведет расчет погружений?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проект по созданию Электроники для Ребризера
СообщениеДобавлено: 15 мар 2013, 20:06 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 21 дек 2010, 20:13
Сообщения: 162
7Fantomas7 писал(а):
Э мужики, я кажись не очень все понял.
Подскажите как правильно понимать.
1 Проектируемый девайс это декомпресиметр Сивуч МК2 к которому просто добавлены порты подключения внешних датчиков и програмные функции по обслуживанию ребризерной периферии?
2 Пректируемый девайс это отдельное унитарное устройство в котором имеются порты и алгоритмы для обслуживания ребризерной перефирии и которое должно подключаться к Сивуч МК2? Это устройство самостоятельно не ведет расчет погружений?

Контроллер - самотоятельная железка, которая опрашивает датчики и управляет Соленоидом впрыска кислорода для поддержания постоянного ppO2.

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


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проект по созданию Электроники для Ребризера
СообщениеДобавлено: 15 мар 2013, 20:35 
Не в сети

Зарегистрирован: 10 мар 2013, 17:19
Сообщения: 9
Ооо. Тогда я должен извинится за то что обнадежил с тестированием.
Я не правильно понял концепцию прибора. В любом случае буду брать Сивуч МК2.
С управлялкой ребризером как по мне концептуальное решение не верно. Но все равно Вы делаете хорошее дело.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Проект по созданию Электроники для Ребризера
СообщениеДобавлено: 15 мар 2013, 20:43 
Не в сети

Зарегистрирован: 13 мар 2013, 00:01
Сообщения: 20
Balik68:Вот блин! Еще забыл... Установленные сетпоинты (0м, 10м, 20м, 40м) могут меняться от РРО2 по воздуху до 1.6 для 20м и 40м. Для 10м от 0.4 до 1.0. Для 0м от 0.2 до 0.4. При чем, для 0м (поверхность) меняются единицы (самый младший разряд), т.е. 0.20 0.21 0.22 и т.д. до 0.40. А для 10м 20м и 40м меняются десятки, т.е. 1.00 1.10 1.20 и т.д.
BANDiver:Идея с лимитами в зависимости по глубине мне понятна. Вот только это ограничивает Дайвера рамками "нашего" понимания...
Balik68:А какие рамки? Самые широкие. Хочешь, поставь для всех глубин 1.3 и будет классический сетпоинт. Ограничения-то реальные. Не ниже РРО2 по воздуху для конкретной глубины и не выше 1.6.
BANDiver:А как насчет автоматического переключения сетпоинтов - есть-ли гистерезис, или что-либо подобное, чтоб не "счелкать" ели глубина около граничной?
Balik68:Смотри алгоритм расчета сетпоинта. Изменение плавное.
if (depth < 400) tmp = ppod[1] + (ppod[2] - ppod[1]) * (depth - 200) / (400 - 200);
if (depth < 200) tmp = ppod[0] + (ppod[1] - ppod[0]) * (depth - 100) / (200 - 100);
if (depth < 100) tmp = ppo_start + (ppod[0] - ppo_start) * (depth - 0) / (100 - 0);


Balik68:Вверху допустил "ляп", исправляю: "Ну вот на 30м подал контроллер О2 на сенсор (сколько по времени?) до получения РРО2 = 4"

BANDiver: Внешнего супервизора не будет - встроенный более чем достаточем - ИМХО...
Balik68: А вот это зря. Лев, поверьте (а может на "ты"?), зависания бывают самые разные. В моей практике было, что внутренняя "собака" зависла наглухо вместе с ядром. В этом случае и спасает внешний супервазер со встроенной "собакой". Я это имел ввиду.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 51 ]  На страницу Пред.  1, 2, 3, 4, 5, 6  След.

Часовой пояс: UTC + 2 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB