HD_v4UI_v40 от Phisik русскоязычный на 4 строкиВиктор 37, 05 Апр. 22, 08:45Доброго времени
в теме "WEB интерфейс к HelloDistiller на ESP8266" на 9 стр
HD_v4UI_v40 от Phisik русскоязычный на 4 строкиВиктор 37, 05 Апр. 22, 08:45Доброго времени
А вот такая ПлатаNepjuodin, 01 Апр. 22, 22:34Если сможешь залить скетчи - то пойдёт. Но местные гуру настоятельно НЕ рекомендуют-эти платы глючные.
скетч HD_v4UI_v40 от PhisikВиктор 37, 05 Апр. 22, 08:45Смотри здесь:
#if USE_MPX5010_SENSOR && defined(PIN_MPX5010)
U_MPX5010=analogRead(PIN_MPX5010);
#if SIMPLED_VERSION==20
DEBUG_SERIAL.println(U_MPX5010);
if (UstPowerReg!=(U_MPX5010))
{
UstPowerReg=U_MPX5010;
flNeedAnalyse=1;
}
#endif
#if PRESSURE_SENSOR_TYPE==0 //MPX5010
// Updated on 2018-12-20 by Phisik
// https://www.nxp.com/...eet/MPX5010.pdf
// Nominal Transfer Value: P[kPa] = (Vout/Vs-0.04)/0.09
//
// Vout = analogRead(PIN_MPX5010);
// Vs = 1024;
//
// P[kPa] = (100*Vout/1024-4)/9;
// P[mmHg] = P[kPa]*15/2; // 1 mmHg = 1 kPa x 7.50062
// C++ integer code
// U_MPX5010 = 10 * (100*Vout/1023-4)/9 * 15 / 2
//U_MPX5010 = int(((long(15000 * U_MPX5010) >> 10) - 600) / 18);
// Simplified msg31 equation gives 1-2% error
U_MPX5010=(U_MPX5010*4-160)/5; //Перевод прочитанного напряжения на ножке в мм. рт. столба (в 10 мм р.ст, то есть 100, это 10 мм рст).
#endif
#if PRESSURE_SENSOR_TYPE==1 //Датчик давления масла автомобильный
// Updated on 2022-04-05 by ildarunic
// Китайский Датчик якобы выдает от 0,5 до 4,5 вольт в зависимости от давления, что соответствует диапазону 102-922 единиц АЦП из 1024 при опорном напряжении 5 вольт.
// Не буду переводить АЦП в вольты, а сразу смашстабирую значения в PSI
// датчик такой https://aliexpress.ru/item/4000263159708.html, нужно брать на 5 PSI
//
// -= ПОИЩИТЕ ДАТЧИК ДАВЛЕНИЯ МАСЛА В ЛЮБОМ АВТОМОБИЛЬНОМ МАГАЗИНЕ, красная цена им 200-300 руб. =-
if ((U_MPX5010 >= PRESSURE_SENSOR_MIN_ADC)&&(U_MPX5010 <= PRESSURE_SENSOR_MAX_ADC)) // берем значения из рабочего диапазона датчика давления
{
U_MPX5010 = (map(U_MPX5010, PRESSURE_SENSOR_MIN_ADC, PRESSURE_SENSOR_MAX_ADC, 0, 500)) * 5.171507548025; // масштабируем значения АЦП в значения давления и переводим в мм рт. столба
// (PRESSURE_SENSOR_MIN_ADC - минимальные показания АЦП при атмосферном давлении = 95)
// (PRESSURE_SENSOR_MAX_ADC - максимальные покания АЦП при максимально допустимом давлении датчика = 922)
// (500 - верхний диапазон датчика давления для датчика 5 PSI; 500 тут надо так как функция map не работает с дробными частями)
// Иначе говоря смасштабирались в диапазон 0-500 и разделили на 100, получили дапазон 0-5 PSI
// Но переменная U_MPX5010 хранит значения в 10 раз больше (100 - это 10 мм рт. столба), а 1 PSI = 51.71507548025 мм. рт. столба
// в итоге получаем "/ 100 * 10 * 51.71507548025" = "* 5.171507548025"
}
else if (U_MPX5010 < PRESSURE_SENSOR_MIN_ADC) // присваиваем граничные значения при выходе за пределы рабочего диапазона датчика давления
{ U_MPX5010 = 0.00; }
else if (U_MPX5010 > PRESSURE_SENSOR_MAX_ADC)
{ U_MPX5010 = 2586; } // 2586 = 5 PSI * 51.71507548025 * 10
#endif
#define USE_MPX5010_SENSOR 1 // Phisik: раньше использовалось условие #ifdef PIN_MPX5010,
// из-за чего приходилось постоянно следить чтобы пин не был определен
#define PRESSURE_SENSOR_TYPE 1 //ildarunic: 0 = MPX5010, 1 = автомобильный датчик давления
#define PRESSURE_SENSOR_MIN_ADC 95 // минимальные показания АЦП при атмосферном давлении (95)
#define PRESSURE_SENSOR_MAX_ADC 922 // максимальные покания АЦП при максимально допустимом давлении датчика (922)
// китайский датчик на словах выдает 0.5-4.5 вольт, что соответсвует АЦП 102-922 из 1024
// но на деле нижние показания начинаются с 92-95 (430 мВ)
нужно брать на 5 PSIildarunic, 05 Апр. 22, 16:58Доброго времени
5 фунт-сила на квадратный дюйм (фунт-сила/дюйм², psi) = 258.5 миллиметров ртутного столба (мм рт. ст.)SerjikP66, 06 Апр. 22, 08:27
Давление в колонне бывает около 20 мм рт.столбаildarunic, 06 Апр. 22, 09:36Разъясните пожалуйста тогда, в каком месте установливать сей датчик. Я полагал, что его необходимо наворачивать на куб. Или я ошибаюсь судя по давлению это чуть ли не связь с атмосферой. Или я снова путаю дифференциальное давления и абсолютное
Далее отрегулируйте мощность/отбор так, чтобы давление было рабочее давление было в примерно 70% от предзахлебного.ildarunic, 06 Апр. 22, 12:17Спасибо за легбез прочитал
Платы от Бенгура v3alk0m, 07 Апр. 22, 23:21Доброго времени
Если у Вас оборудование типа "Прима"serjrv, 10 Окт. 20, 00:10
если данный алгоритм кто то захочет реализовать и в данной автоматике, наработками поделюсь.serjrv, 10 Окт. 20, 00:10Хорошего дня.
Очень интересует реализация управления краном.Схема для преобразования ШИМ в напряжение:
Поделитесь пожалуйстаffasad, 08 Апр. 22, 12:04
// переменная прилетающая из web для коррекции полного открытия шарового крана, примерные значения: 120 = 7 вольт максимум, 180 = 10 вольт максимум.
// на практике 100% открытие шарового крана обычно не требуется, поэтому и введена данная поправка. Так же и 0-5 вольт легко реализовать.
uint8_t TapCorrectionWeb = 120;
// переменная в которой как раз и задается % открытия, значения от 0 до 200
// когда прилетает из web или локальных установок значение с шагом 0.5%, просто умножаем его на 2 чтобы избавится от переменной float
// (так проще при необходимости в EEPROM сохранять).
uint8_t steamPercent;
// массив значений % -> ШИМ для шарового крана 0-10 вольт, т.к. проходная дырка не имеет линейной зависимости от угла.
// 0% - 100% с шагом 5%
uint16_t percentCorrectSquare[22] = { 200,2107,2299,2545,2833,3154,3505,3881,4278,4695,5128,5576,6037,6509,6991,7480,7976,8478,8983,9491,10000,10000 };
// пересчет процентов в значение 12 битного ШИМ для шарового крана
// data = 200 это 100% т.к. шаг изменения 0.5
uint16_t percentCalc(uint8_t data) {
uint8_t cnt = data / 10;
float TapCorrection = (float)TapCorrectionWeb / 100;
// т.к. в массиве забиты значения с шагом в 5%, производим вычисление промежуточных значений для ШИМ
uint16_t percent_1 = (uint16_t)((float)(TapCorrection * percentCorrectSquare[cnt]) / 10);
uint16_t percent_2 = (uint16_t)((float)(TapCorrection * percentCorrectSquare[cnt + 1]) / 10);
uint16_t percent = (uint16_t)((float)(TapCorrection * percentCorrectSquare[cnt])) + (percent_2 - percent_1) * (data - cnt * 10);
// результат
if (percent / 5 > 4095) return 4095; // подстраховка )))
else return (percent / 5);
}
// установка ШИМ для шарового крана 0-10 вольт
// канакл, значение для 12 битного ШИМ
setPWM(PWM_CH5, percentCalc(steamPercent));
// p.s. реализация функции setPWM() зависит уже от вашего железа, на чем ШИМ реализован.
Добрый день, дошли руки до автоматики, все спаял, в корпус разместил, датчики подключил, все вроде работает. Платы от Бенгура v3Сегодня все запаял на плату. 1, 2 и 3 на 12В плату, а на 220В плату 4, 5 (вместо 10кОм впаял 5,1)
Встал вопрос, как запитать плату через автомат и УЗО. Платы мне распаивал Бенгур (за что ему отдельное спасибо), но закралось сомнение в том, что не хватает деталей для сторожа. Может быть кто ни будь подскажет?
Как я понял надо впаять:
1. CD4060
2. smd сопротивление 10кОм
3. Конденсатор 10 мф 25 В
4. МОС3023
5. Сопротивление 10кОм
Заработает сторож в данном случае?
Вот тут Бенгур писал, что надо вместо 10 кОм поставить 5.1 кОм, но я не понял какого резистора это касается? [сообщение #13749489]alk0m, 07 Апр. 22, 23:21
Поменял в скетче значение #define USE_BRESENHAM_ASC71 с 1 на 0 в секции settingsalk0m, 08 Апр. 22, 22:57Доброго времени
Хочу сделать с пассивным охлаждениемalk0m, 09 Апр. 22, 11:53Это как? Каким способом, можно инфу?