Форум самогонщиков Сайт Барахолка Магазин Помощь солдатам

Ненавязчивая автоматизация ректификационной установки

Форум самогонщиков Автоматика
1 ... 47 48 49 50 51 52 53 ... 132 50
OldBean Доцент Красноярск 1K 1.4K
Отв.980  08 Янв. 18, 07:38
Посоветуйте самый простой модуль+ индикатор температуры с изменением до десятых или тысячных ( 0,01 или 0,001) градуса.если можно ссылку..И схему подключения.vag377, 08 Янв. 18, 07:19
Боюсь, что в такой постановке задачи я не смогу, к сожалению, Вам что-нибудь полезное посоветовать. Может быть кто-нибудь из коллег...
gol_avto Доцент Москва - Серпухов - Анапа 1.3K 458
Отв.981  08 Янв. 18, 08:55
В новых "модульках" индикаторы будут 4-разрядные и они будут показывать не %, как сейчас, а реальные ватты, мл/час, °C и т.п.OldBean, 16 Дек. 17, 11:32
А разве в варианте LITE предусматриваются индикаторы при наличии монитора?
Можно ведь сделать, как например, у коллеги C-Bell  [Smart Distiller (Умный дистиллятор с управлением по интернет). Страница 9]
Вид стрелочных термометровC-Bell, 11 Сент. 17, 10:00
1234.jpg
1234.jpg Ненавязчивая автоматизация ректификационной установки. Автоматика.
BogAD Кандидат наук Красногорск - Белово 403 184
Отв.982  08 Янв. 18, 12:56
У меня LM2596 на подобной плате очень бодро взорвалась при токе около 2 А без доп. радиатора, к тому же это модуль step-down, он из 3,7 В 5 никогда не сделает.Dmi_D, 08 Янв. 18, 05:52

Согласен, неудачно модуль подобрал.

Второй (TP4065) является чисто контроллером заряда, притом на токи ДО 1 А.Dmi_D, 08 Янв. 18, 05:52

Так и хотел. При нормальном, входном 5В, он не будет участвует в питании схемы, только заряд LiION, диоды Шотки не позволят это. При пропадании 5В, DС/DС будет питаться от LiION через VD2.
В точке коллекторов уровень напряжения будет всегда с учётом падение на VD1 (при наличии входного 5В), а минимальное понижение напряжения в этой точке (катодов), не станет меньше чем напряжение от значения напряжения LiION+падение на диоде. Так что уровень напряжения в точке катодов будет от 5 до 3В (без падения на VD1-2), с учетом питания от LiION.

От переразряда LiION, если верить ,
китайцу
модуль заточен, т.к. работает на диапазоне;
"Вход напряжение:DC 3 ~ 5 В (если Входное напряжение менее 3 В, он не может достичь номинального выхода)".
ps Предыдущий пост поправил.
makh Профессор Sаmara 2.1K 1.1K
Отв.983  08 Янв. 18, 13:47, через 51 мин
USB-3 (у которого нормальные, мощные 5В на USBOldBean, 08 Янв. 18, 07:11
Практика показывает, что USB2 (500мА по стандарту, если ничо не путаю) более чем достаточно. Нам ведь только на логику надо, не клапанами же пятивольтовыми дергать. Более того, на нотиках (старших, по крайей мере) производители частенько отходили от стандарта в сторону увеличения возможной нагрузки. Сам пользую для самогонных дел древний ASUS F2F, так там система гасит порт при существенно больших нагрузках, не помню уже точных чисел.
BogAD Кандидат наук Красногорск - Белово 403 184
Отв.984  08 Янв. 18, 14:01, через 14 мин
Весьма "легкая" и гибкая распределенная система может получиться. И, главное (!), UPS уже есть в ноутбуке. ПодмигивающийOldBean, 08 Янв. 18, 07:11

Выходные сказываются. Подмигивающий
Сергей, из-за UPS'а с Малинки переключаться на ноутбук? А потом?
Страшно подумать...
Оставим концепцию, тем более LITE еще не рожден, только вынашивается. Может когда "родится" он всех устроит.
Сам же убедил всех, что малинка, по факту, сама себя обслужит по всем критериям, включая прошивку модулей. Надо только чуток ей помочь с внешними факторами. Это я про бесперебойность 5В... 
stasolegch Специалист Самара 140 64
Отв.985  08 Янв. 18, 14:16, через 16 мин
Т.е. каждый модуль распределенной системы выполнен в виде USB-коробочки. В одной (унифицированной) USB-коробочке - контроллер ТЭНа, в другой - контроллер клапана отбора и т.д. N+1-я USB-коробочка собирает данные с датчиков и т.д... Весьма "легкая" и гибкая распределенная система может получиться.OldBean, 08 Янв. 18, 07:11
...а в каждой коробочке Arduino Micro + нужное количество Pro Mini: на кубе (ПВК) датчики + РМ + клапан сброса воздуха из рубашки,
на колонне датчики + клапана,
на автономке,
на бродилке...
и всё на комп/малинку с мощным USB-хабом, по вкусу

красота! ненавижу паять)
OldBean Доцент Красноярск 1K 1.4K
Отв.986  08 Янв. 18, 16:05
А разве в варианте LITE предусматриваются индикаторы при наличии монитора?
gol_avto, 08 Янв. 18, 08:55
Нет, конечно. Там речь шла о ревизии и небольшом развитии предыдущей (первой) версии системы (с модульками, которые с кнопочками и индикаторами и могут использоваться автономно). Кое что удалось сделать, но, увы, свободного времени в декабре оказалось слишком мало для всех запланированных задач :(

Давайте об UI варианта LITE, поговорим уже после того, как будет изготовлено железо и отлажен базовый софт, дающий приличный спирт. Поверьте, пожалуйста, что главное назначение автоматизации кубовой ректификации - это стабильное получение максимально качественного продукта, а совсем не в том, чтобы красиво нарисовать стрелочки да кнопочки.

из-за UPS'а с Малинки переключаться на ноутбук? А потом?
Страшно подумать...BogAD, 08 Янв. 18, 14:01
Уважаемый коллега, BogAD! Но ведь это же шутка! Насчет того, что главное в superLITE - это UPSик ;))) Там даже смайлик был поставлен! Мда...с. Похоже, шутки у меня уже не получаются. Устаток, однако. Значит пора помаленьку на работу собираться. Все. Праздники заканчиваются, завтра начинаются трудовые будни...
BogAD Кандидат наук Красногорск - Белово 403 184
Отв.987  08 Янв. 18, 16:23, через 18 мин
Да...Я смотрю тут одни маньяки электронщики собрались!)) Уважаю!
Просьба к вам. Посоветуйте самый простой модуль+ индикатор температуры с изменением до десятых или тысячных ( 0,01 или 0,001) градуса.если можно ссылку..vag377, 08 Янв. 18, 07:19

Интересно сформулирован вопрос...
Только не понятно, "0,01 или 0,001" это точность или цена младшего разряда индикатора?
И если не трудно, поясни к чему тебе такие параметры?

Вообще-то такие параметры только у лабораторных термометрах.
Вот к примеру, Термометр электронный контактный "ЛТ-300-Н"
Выжимка из характеристик
Технические характеристики термометра ЛТ-300
Диапазон измеряемых температур - 50...+300 °С
Предел допускаемой абсолютной погрешности измерения температуры:
• в диапазоне -50.00...+199.99 °С ±0.05 °С
• в диапазоне +200.0...+300.0 °С ±0.2 °С
Цена единицы младшего разряда измеряемой температуры:
• в диапазоне -50.00...+199.99 °С 0.01 °С
• в диапазоне +200.0...+300.0 °С 0.1 °С

но его цена... 19 000,00 руб...
не думаю что другие варианты будут сильно дешевле.

На на счет самодельных, так я, на сколько понял, вы не "электронщик". А если сильно хочется, сначала надо найти миниатюрную платиновую термопару. А далее самое интересное...
ZagAl Доцент Прибалтика 1.9K 916
Отв.988  08 Янв. 18, 22:29
Ребята, подскажите. Ищу на алиэкспресс ATMEGA328. Но там либо ничего не говорится о частоте, либо указано 20 мГц, как здесь: https://ru.aliexpress.com/...iceBeautifyAB=0
Запрашиваю у продавцов, но они понятия об этом не имеют. Нам же нужно на 16 мГц?
U-M Магистр MSK 210 39
Отв.989  08 Янв. 18, 22:32, через 4 мин
А они ж вроде частоту от напряжения питания меняют? На 5В будут 20 МГц тянуть?

Нам пока Attiny85 надо на 16 МГц
BogAD Кандидат наук Красногорск - Белово 403 184
Отв.990  08 Янв. 18, 22:37, через 5 мин
Ребята, подскажите. Ищу на алиэкспресс ATMEGA328. Но там либо ничего не говорится о частоте, либо указано 20 мГц, как здесь: https://ru.aliexpress.com/...iceBeautifyAB=0
Запрашиваю у продавцов, но они понятия об этом не имеют. Нам же нужно на 16 мГц?ZagAl, 08 Янв. 18, 22:29

Для ATMEGA328 частоту задаем кварцем...
Указывают максимально возможную частоту (20 мгц)
Тут я уже писал [сообщение #13202447], все зашифровано в надписи микроконтроллера.
Взято отсюда Маркировка микроконтроллеров AVR семейства ATmega и ATtiny
С продаванов на Али это не стоит спрашивать - они обычные перекупы. На производителей там сложно нарваться...

Добавлено через 3мин.:

А они ж вроде частоту от напряжения питания меняют? На 5В будут 20 МГц тянуть?

Нам пока Attiny85 надо на 16 МГцU-M, 08 Янв. 18, 22:32
Не  прав...
Для Attiny  частоту задаем фьюзами, как советует наш гуру:
2. Подготовка тиньки к работе. Если микроконтроллер, который мы установили на макет, совсем новый, то нам нужно перепрошить часть его фьюзов (fuse). Дело в том, что тактовая частота на заводе установлена на 1 МГц (внутренний калиброванный генератор на 8 МГц и делитель тактовой частоты на Крутой. А нам бы хотелось тактировать МК от высокочастотного внутреннего ФАПЧ-генератора, который выдает 16 МГц. Эти дела, как раз и устанавливаются фьюзами.OldBean, 01 Янв. 18, 10:01
[сообщение #13202256]
U-M Магистр MSK 210 39
Отв.991  08 Янв. 18, 22:59, через 23 мин
А, спорить не буду, только тинька с индексом V может не более 10 МГц тянуть. Для маломощнопотребляемых девайсов что-ли?
BogAD Кандидат наук Красногорск - Белово 403 184
Отв.992  08 Янв. 18, 23:09, через 10 мин
тинька с индексом V может не более 10 МГцU-M, 08 Янв. 18, 22:59

А индекс "V" - версии контроллеров, работающих на низком напряжении питания (1,8 — 5,5 вольт) и для других частот, кроме 10,  с "V" не выпускают (из даташита). Причину не знаю.
OldBean Доцент Красноярск 1K 1.4K
Отв.993  13 Янв. 18, 07:40
17.2. Вариант LITE. Датчик RMS с детектором нуля. Преамбула

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

Итак, рассмотрим постановку задачи для программирования микроконтроллера модуля датчика RMS и детектора нуля.

1. С определенной частотой (раз в 200 мкс) производится запуск АЦП. Для этого используется один 8-разрядный таймер, работающий в режиме CTC (т.е. автоматический сброс по совпадению счетчика с содержимым одного из регистров сравнения). При совпадении инициируется прерывание, в обработчике которого как раз и производится старт преобразования АЦП.
2. Процесс преобразования 10-разрядного АЦП длится приблизительно 100-110 мкс. По завершению преобразования тоже инициируется прерывание. В обработчике этого прерывания производится возведение полученного кода АЦП в квадрат, прибавление квадрата к 32-битному сумматору и проверка условия - достаточно ли квадратов мы уже накопили и не пора ли посчитать RMS. Для этого существует счетчик запусков АЦП. Изредка (раз в 1 сек) это условие выполняется. В этом случае, в этом же обработчике прерывания, выполняется достаточно трудоемкий (для 8 -разрядного AVR без математического сопроцессора) процесс деления и вычисления квадратного корня. Этот процесс занимает примерно 60-70 мкс. Тем не менее, все эти вычисления и последующее помещения данных в буфер обмена по i2c, заканчиваются задолго (за 20-30 мкс) до следующего запуска АЦП. В этой ситуации другие прерывания можно разрешить, снизив, тем самым, приоритет данного обработчика.
3. Параллельно с оцифровкой напряжения сети, тинька ловит внешние прерывания, формируемые обостряющей цепочкой (резистор + стабилитрон). Это - "упреждающий ноль" напряжения сети. В обработчике этого прерывания запускается еще один 8-разрядный таймер для формирования импульса Zero на соответствующей шине крейта. Поскольку пониженное напряжение сети берется с трансформатора, то сигнал "как бы нуля" приходит заметно раньше (почти на 1 мс), чем истинный ноль в сети. Поэтому в этом таймере используются два регистра сравнения A и B. По совпадению содержимого счетчика со значением первого регистра (A) инициируется прерывание, в обработчике которого формируется фронт импульса Zero. А по совпадению со вторым регистром (B) - спад импульса Zero.
4. Ну и параллельно со всей этой суетой пунктов 1-3, идет программно-аппаратная работа с шиной i2c при помощи тинькиного модуля USI и библиотеки usiTwiSlave. Которая тоже построена на прерываниях.

По отдельности все это быстро, легко и весело заработало. Но все вместе (плюс контактор на шине i2c) - никак. Почти два дня морщил мозг, пытаясь примирить независимые внешние события друг с другом и - с целым зоопарком внутренних прерываний. Устал. Более 10-20 минут стабильной работы никак не получается. Возможно, здесь уже нужен более квалифицированный программист, чем я.

Основной источник всех этих бед - программная реализация i2c у тиньки. Получается два вида независимых (неконтролируемых) внешних событий: ноль по сети и "старт" от мастера (малинки) на шине i2c. Питающей сетью я управлять, естественно, не могу. Но можно усложнить протокол обмена по i2c, анализировать готовности устройств к обмену и т.п. Тем не менее, "вздрагивания" и прерывание работы всех slave-тинек, при любом "старте" на шине i2c, не избежать. Я живо представил какая "шиза" начнется на шине, если в нее воткнуть пять-шесть таких устройств. "Нет, только после Вас!". "Проходите, пожалуйста, побыстрее. К Вам скоро ноль прилетит!". Можно, конечно, "докатиться" и до извращений типа синхронизации обмена по i2c с питающей сетью ;) Часть Европы нервно курит в стороне... К концу второго дня этих развлечений стало заметно портиться настроение...

Самое обидное, что одна из важнейших целей создания распределенных (многопроцессорных) систем автоматизации (как в данной ветке) это, как раз, существенное упрощение программирования. А здесь (с программной реализацией протокола i2c в тиньке) я блестяще добился совершенно противоположного эффекта! ;)

Короче - плюнул я на тиньку и датчик RMS с детектором нуля сделал на Меге (ATMega328P). У нее - полная аппаратная реализация TWI/I2C. Тут уже работу МК нужно прерывать только в двух случаях - забрать из буфера прилетевший (только ему конкретно!) байт или наоборот - засунуть байт в буфер, если малинка его затребовала (тоже, конкретно, от него!). Уже буквально через час после принятия решения, новый макет был собран, софт "накидан", и малика, весело подмигивая зелененьким светодиодиком, выдавала в терминале бесконечную змейку совершенно безошибочных цифр RMS, получаемых от меги. Час, другой, третий... Все работает как часы.

Ниже - краткое описание этого решения. На нем я, наверное, и остановлюсь. Естественно, после тестирования в сочетании с силовым модулем, тоже сделанным на меге. Ну это уже - на всякий случай... ;)))

Итак,

17.2.1. Вариант LITE. Датчик RMS с детектором нуля. Макет

Схема и общий вид макета датчика RMS с детектором нуля представлены на рисунке ниже.
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

Схема (на рисунке слева) не сильно отличается от варианта с тинькой. Добавлена оснастка (кварц с конденсаторами C3 и C4) и дополнительные емкости для AREF и аналогового питания AVCC. У меги есть конструктивня возможность разделить аналоговые и цифровые земли для уменьшения шумов АЦП. Эти земли должны соединяться в одной точке.

На следующем рисунке представлены несколько осциллограмм: в контрольных точках 1, 2 (соответствующие номера осциллограмм) и на выходе Zero (пин PB1) - осциллограмма 3 и растянутая по времени развертки - 4.
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

По осциллограммам 1 и 2 видно, что после трансформатора импульс нуля приходит заметно раньше (около 1 мс) истинного нуля сети (желтые осциллограммы). Микроконтроллер (при помощи таймера) корректирует задержку и формирует короткий (100 мкс) импульс нуля для шины Zero, задний фронт которого совпадает с истинным нулем напряжения сети.

Текст firmware приведен ниже (и в приложении к топику - файл main.c):
Скрытый текст
//------------------------------------------------------------------------------
// Датчик RMS и детектор нуля на ATMega328P
// OldBean, 12.01.2018
//------------------------------------------------------------------------------
#include <util/twi.h>
#include <avr/interrupt.h>
#include <math.h>

#define F_CPU 16000000UL

#define ADDR 0x11  // Адрес устройства на шине I2C
#define ZERO_START 111 // Определяет фронт импульса Zero
#define ZERO_WIDTH 13 // Определяет ширину импульса Zero
#define T_ADC 49 // Определяет интервал между запусками АЦП
#define SUM_MAX 5000 // Количество суммируемых отсчетов (5000 - это за 1 сек)
                       
static volatile uint8_t index = 0; // Номер отправляемого байта (0 или 1)
static volatile uint8_t buf[2]; // Младший (0) и старший (1) байт
static volatile uint8_t zFlag = 0; // Разрешение формирования импульсов Zero

static volatile uint32_t sum; // Сумматор квадратов отсчетов АЦП
static volatile uint16_t sc = 0; // Счетчик квадратов
static volatile uint16_t crms; // "Среднеквадратичный" код
//------------------------------------------------------------------------------
ISR(TWI_vect) { // Обработчик событий модуля TWI
 switch(TW_STATUS) {    // Статус - в 5 старших битах регистра TWSR
   case TW_SR_DATA_ACK: // Данные приняты, ACK отправлен - 0x80
     index = 0; // При приеме любого байта индекс - на первый байт буфера
     break;
   case TW_ST_SLA_ACK:  // Запрос SLA+R, ACK отправлен - 0xA8
     TWDR = buf[index]; index = 1 - index;
     break;
   case TW_BUS_ERROR:   // Неверные условия "старт" или "стоп" - 0x00
     TWCR = _BV(TWIE) | _BV(TWINT) | _BV(TWEA) | _BV(TWEN); // "Пересброс" TWI ;)
     break;
 }
 TWCR |= _BV(TWINT);   // Флаг TWINT здесь НЕ очищается автоматически! Очистим.
}
//------------------------------------------------------------------------------
ISR(TIMER0_COMPA_vect) { // Обработчик по совпадению с регистром A
 ADCSRA |= _BV(ADSC); // Запуск преобразования
}
//------------------------------------------------------------------------------
ISR(ADC_vect) { // Преобразование закончено
 uint32_t val = ADCL; val |= ((uint32_t)ADCH) << 8;
 sum += val*val; // Суммируем квадраты
 if(++sc == SUM_MAX) { // Насуммировали достаточно
   crms = (uint16_t)sqrt(((double)sum)/SUM_MAX); // 64-68 мкс
   buf[0] = crms & 0xFF; buf[1] = (crms >> 8) & 0xFF; // Занесем rms в буфер
   sc = 0; sum = 0; // Сбрасываем счетчик и сумматор
 }
}
//------------------------------------------------------------------------------
ISR(INT0_vect) { // Внешнее прерывание на пине PB2/INT0
 GTCCR = _BV(PSRASY); // Сброс предделителя таймера 2
 TCNT2 = 0; // Обнуляем счетчик таймера 2
 zFlag = 1; // Разрешаем формирование импульса Zero
}
//------------------------------------------------------------------------------
ISR(TIMER2_COMPA_vect) { // Обработчик по совпадению с регистром A
 if(!zFlag) return;
 PORTB |= _BV(PB1); // Формируем фронт импульса на шине Zero
}
//------------------------------------------------------------------------------
ISR(TIMER2_COMPB_vect) { // Обработчик по совпадению с регистром B
 if(!zFlag) return;
 PORTB &= ~_BV(PB1); // Формируем спад импульса на шине Zero
 zFlag = 0; // Запрещаем формирование "ложных" импульсов Zero
}
//------------------------------------------------------------------------------
int main(void) {
 DDRB = _BV(PB0); // Пин PB0 используется для диагностических целей
 DDRB |= _BV(PB1); // Пин PB1 - на вывод (сигнал Zero)
 // Инициализация TWI-модуля --------------------------------------------------
 TWAR = ADDR << 1;   // Адрес устройства - в старших 7 битах
 TWCR = _BV(TWIE);   // Разрешаем прерывания от TWI
 TWCR |= _BV(TWEA);  // Разрешаем подачу импульса ACK
 TWCR |= _BV(TWINT); // Очистим флаг TWINT (очищается при установке в 1)
 TWCR |= _BV(TWEN);  // Разрешаем работу TWI и активирует TWI-интерфейс
 // Инициализация таймера 0 для тактирования АЦП ------------------------------
 TCCR0A = _BV(WGM01); // Счетчик работает в режиме CTC (сброс по совпадению)
 TCCR0B = _BV(CS01) | _BV(CS00); // Предделитель на 64 (на счетчик - 250 кГц)
 OCR0A = T_ADC; // Определяет период запуска АЦП (49 - 200 мкс)
 TIMSK0 |= _BV(OCIE0A); // Разрешаем прерывания по совпадению с OCR0A
 // Инициализация АЦП ---------------------------------------------------------
 ADMUX = 0; // Канал 0 (ADC0), MUX3...0 = 0
 ADMUX = _BV(REFS1) | _BV(REFS0); // Внутр. источник опорного напряжения 1.1V
 ADCSRA = _BV(ADEN); // АЦП включен
 ADCSRA |= _BV(ADIE); // По окончанию преобразования - прерывание
 ADCSRA |= _BV(ADPS2) | _BV(ADPS1) | _BV(ADPS0); // Предделитель на 128
 // Инициализация внешнего прерывания INT0
 EICRA = _BV(ISC01); // Прерывания по спаду уровня на пине PD2/INT0
 EIMSK = _BV(INT0); // Разрешаем внешние прерывания на пине PD2/INT0
 // Инициализация таймера 2 для формирования импульса нуля Zero
 // Счетчик работает в обычном режиме (Normal mode)
 TCCR2B |= _BV(CS22) | _BV(CS20); // Предделитель на 128 (сч. - 125 кГц)
 OCR2A = ZERO_START; // Фронт импульса Zero
 OCR2B = ZERO_START + ZERO_WIDTH; // Спад импульcа Zero
 TIMSK2 = _BV(OCIE2A) | _BV(OCIE2B); // Разрешаем прерывания по совпадению
 
 sei(); // Разрешаем глобальные прерывания
 while(1) { // Бесконечный цикл
 }
 return 0;
}
//------------------------------------------------------------------------------
Программа очень проста, почти каждая строчка кода прокомментирована. В сочетании с постановкой задачи, описанной в преамбуле, разобраться несложно. В верхней части - объявления рабочих переменных. В средней части текста - реализации функций-обработчиков прерываний. В этой программе вся бизнес-логика построена на прерываниях. В нижней части (функция main()) - почти исключительно инициализация всей, необходимой для работы, периферии меги.

Никаких дополнительных файлов библиотек не используется. Поэтому для компиляции и прошивки можно воспользоваться простыми командами сборки (F8 и F9), которые мы настраивали при работе с geany. Только не забудьте откорректировать команды сборки с тиньки на мегу (atmega328p) в команде для компиляции и прошивки.

На данном этапе, как уже говорил, все работает очень стабильно. Zero выдает, RMS измеряет. Поскольку в модулях варианта LITE индикации нет, то преобразование "среднеквадартичного кода" АЦП в вольты можно выполнять уже на малинке (а не в самом модуле, как раньше). Пример калибровочного графика - на рисунке ниже, формула регрессии - тоже на графике.
 Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.

Для калибровки использовался ЛАТР и обычный бытовой ваттметр, который умеет показывать еще и RMS напряжения сети. Поскольку в данной задаче каких-то особых требований к точности нет, то такая "бытовая" калибровка вполне приемлема. Как видно из графика, в диапазоне напряжений сети 120-270 В линейность датчика RMS очень даже приличная. Ниже 120 В - отрубается ваттметр, а выше 270 В начинает срабатывать дифавтомат. Но ему виднее... ;)

Ну вот пока и все про датчик RMS с детектором нуля для варианта LITE. Разводка будет после полных испытаний (в сочетании с другими устройствами на шине i2c).

Со Старым Новым годом, коллеги!!!


Предыдущий топик  Вернуться к оглавлению  Следующий топик
19_rms_схема_и_макет.png
19_rms_схема_и_макет.png Ненавязчивая автоматизация ректификационной установки. Автоматика.
20_осциллограммы.png
20_осциллограммы.png Ненавязчивая автоматизация ректификационной установки. Автоматика.
21_калибровка.png
21_калибровка.png Ненавязчивая автоматизация ректификационной установки. Автоматика.

main.c.zip 2.4 Кб
U-M Магистр MSK 210 39
Отв.994  13 Янв. 18, 07:55, через 16 мин
Спасибо за материал. Единственно - фььзы для меги328 может указать?
OldBean Доцент Красноярск 1K 1.4K
Отв.995  13 Янв. 18, 08:13, через 18 мин
Единственно - фььзы для меги328 может указать?U-M, 13 Янв. 18, 07:55
Да, конечно. Нужно убрать заводские установки: делитель на 8 и внутренний генератор. Включить высокочастотный кристалл. Да еще полезно сделать полный размах осциллятора. К сожалению сейчас малинка далеко и выключена - дистанционно прочитать фьюзы не могу. Сейчас посмотрю в datasheet - допишу команды для дуды.

Вот нашел у себя "в склерознике" памятку ;) Полезная, все-таки, штука - автоматическая синронизация носителей...

Итак, имеем новый МК ATMega328P. Пишем команду:
avrdude -c usbasp -p m328p
должна показаться строчка типа такой:
avrdude: safemode: Fuses OK (E:FF, H:D9, L:62)
теперь перепрограммируем младший байт фьюзов на высокочастотный кварц и полный размах (Full Swing Crystal Oscillator)
avrdude -c usbasp -p m328p -U lfuse:w:0xE7:m
в выдаче дуды на терминале должны увидеть измененный младший байт фьюзов:
avrdude: safemode: Fuses OK (E:FF, H:D9, L:E7)
BogAD Кандидат наук Красногорск - Белово 403 184
Отв.996  13 Янв. 18, 09:15
Похоже, я, все-таки, немножко поторопился с тинькой (ATtiny85).OldBean, 13 Янв. 18, 07:40
Сергей, на сколько я понял, планируешь отказ полный от ATtiny85 и переход на ATMega328P?

Всех с Новым Годом по старому стилю!
Ненавязчивая автоматизация ректификационной установки
Ненавязчивая автоматизация ректификационной установки. Автоматика.


Добавлено через 2ч. 25мин.:

Сергей, подскажи, анод VD1 на цифровой земле или аналоговой?
Dmi_D Кандидат наук Минск 393 138
Отв.997  13 Янв. 18, 12:33
Судя по фото - на цифровой.
BogAD Кандидат наук Красногорск - Белово 403 184
Отв.998  13 Янв. 18, 12:49, через 17 мин
Судя по фото - на цифровой.Dmi_D, 13 Янв. 18, 12:33
Да, по схеме так, но... меня терзают сомнения. Думаю должно сидеть на аналоговой земле
OldBean Доцент Красноярск 1K 1.4K
Отв.999  13 Янв. 18, 13:28, через 39 мин
анод VD1 на цифровой земле или аналоговой?BogAD, 13 Янв. 18, 09:15
Главное при разделении земель - смотрите, чтобы большие импульсные токи (обычно выходные, на серьезные нагрузки) не текли по фрагментам аналоговой земли, создавая тем самым импульсные наводки (разности потенциалов на этих фрагментах).
Тем не менее, в данном случае пин PD2 работает как цифровой вход. Да и вообще ток через R2 довольно мал - на уровне сотни мкА. Поэтому - почти все равно. Конструктивно - здесь проще подцепить к цифровой земле (рядом с ножкой 8).

Кстати, этот же принцип (разделение силовых земель и земель схем управления) обычно используется и в силовой электронике. Ну, например, при разводке, в наших силовых модулях эти земли должны соединяться только в одной точке - непосредственно на ножке симистора.

отказ полный от ATtiny85 и переход на ATMega328P?BogAD, 13 Янв. 18, 09:15
Скорее всего - да. Жаль, конечно, уже собранные силовые модули ;( Но, думаю, проблем и возни с ними будет больше, чем спаять другие.