Подскажите, возможна ли защита аналогового входа Ардуины от статического электричества по такой схеме? Это для контроля разлития жидкости на полу будут валяться два контакта, периодически будут считываться показания АЦП ардуины, если обнаруживается не 0, тогда тревога. Пол покрыт линолеумом, соответственно вероятность образования статики 99.9%
Аппаратная платформа Arduino для автоматизации наших процессов
msg31
Научный сотрудник
Барнаул
4.6K 2.5K
Отв.720 22 Дек. 13, 06:47
lakmus
Специалист
С-Петербург
196 49
Отв.721 22 Дек. 13, 16:05
на датчик через напр. 10к , потом цепочка из двух послед диодов (+5-вход-общ) и кондюк не повредит
чтоб 50Hz убрать
да, и датчик зашунтировать напр. 1МОм.
(или я чето не понял?)
чтоб 50Hz убрать
да, и датчик зашунтировать напр. 1МОм.
(или я чето не понял?)
alekslug
Научный сотрудник
винокур, Лобня.
5.2K 1.7K
Отв.722 22 Дек. 13, 16:46, через 42 мин
На линолеуме статическое напряжение образуется нехило. Обслуживал на Севере одну координатную телефонную станцию.Она была смонтирована в вагончике. Полы холодные! работать можно было только в валенках.За стеной -50*С. Било током очень сильно. Два шага сделаю и сразу разряд в виде искры сантиметров 7-10. Привязал на руку провод и заземлил его. Так и ходил привязанный. АТСК на релюхах, квазиэлектронная, ей статика пополам была.
msg31
Научный сотрудник
Барнаул
4.6K 2.5K
Отв.723 22 Дек. 13, 16:51, через 6 мин
на датчик через напр. 10к , потом цепочка из двух послед диодов (+5-вход-общ) и кондюк не повредитНу где-то так... Резюк точно будет только 10кил или 300 ом разницы для напряжения 10Киловольт (а статика такая часто встречается) немного... В общем-то я недавно стал варисторы использовать и убедился, что они зачастую заменяют и диод обратный и кондюк. А в итоге дешевле и, главное, проще делать. Вот и хотел спросить у спецов, достаточно ли просто варисторов?
чтоб 50Hz убрать
да, и датчик зашунтировать напр. 1МОм.
(или я чето не понял?)
lakmus, 22 Дек. 13, 16:05
ironman
Академик
Синегорье
5.2K 2.7K
Отв.724 22 Дек. 13, 18:39
и сразу разряд в виде искры сантиметров 7-10alekslug, 22 Дек. 13, 18:46Нихрена се разряд, это уже не разряд, а молния )))
lakmus
Специалист
С-Петербург
196 49
Отв.725 22 Дек. 13, 19:59
Ну где-то так... Резюк точно будет только 10кил или 300 ом разницы для напряжения 10Киловольт (а статика такая часто встречается) немного... В общем-то я недавно стал варисторы использовать и убедился, что они зачастую заменяют и диод обратный и кондюк. А в итоге дешевле и, главное, проще делать. Вот и хотел спросить у спецов, достаточно ли просто варисторов?msg31, 22 Дек. 13, 16:51по твоей логике тогда и 1Ом мона ставить
-варисторы не для того - не спасут они (разве что благодаря своей емкости и утечкам)
-вполне может сгодится RC - цепь - разряд очень короткий и будет изрядно ослаблен
(нуно керамику ставить) заодно и сетевые помехи уменьшит
-параллельный датчику резюк вообще не даст накопится статике
имхо
Alex2x
Кандидат наук
DЕ
325 64
Отв.726 27 Дек. 13, 13:53
Парни, ну нифига у меня не получается измерение мощности с ACS712.
Дома, когда пробовал с 1квт кипятильником, всё получалось.(без "Kemo" пробовал)
Теперь же, когда всё собрал поместу, никак не получается пересчёт.
Меряет неправильно ток, соответственно и мощность не правильно.
Соответственно не могу и дальше автоматику доделать до ума.
С "Ардуино" сигнал пошёл на "Kemo" M150, дальше на "Kemo" M028 и от него на 3квт ТЕН.
Переменным сопротивлением регулируется(мощность показывается неправильно)
http://www.kemo-electronic.de/datasheets/m150.pdf (описание на русском есть)
http://www.kemo-electronic.de/datasheets/m028.pdf (описание на русском есть)
Дома, когда пробовал с 1квт кипятильником, всё получалось.(без "Kemo" пробовал)
Теперь же, когда всё собрал поместу, никак не получается пересчёт.
Меряет неправильно ток, соответственно и мощность не правильно.
Соответственно не могу и дальше автоматику доделать до ума.
С "Ардуино" сигнал пошёл на "Kemo" M150, дальше на "Kemo" M028 и от него на 3квт ТЕН.
Переменным сопротивлением регулируется(мощность показывается неправильно)
http://www.kemo-electronic.de/datasheets/m150.pdf (описание на русском есть)
http://www.kemo-electronic.de/datasheets/m028.pdf (описание на русском есть)
#define ACS712PIN A3
#define BETRIEBSSPANNUNG 4.85 // VSS in Volt
#define SENSITIVITY 100 // Empfindlichkeit in mV/A
#define MEDIAN 512
volatile unsigned long sumMesswerte,countMesswerte;
void einMesswert() {
sumMesswerte += abs(analogRead(ACS712PIN)-MEDIAN);
countMesswerte++;
}
void auswertung()
{
char buffer[35];
int messwert;
float strom;
long spannungMV,stromMA;
if (countMesswerte>=1000)
{
noInterrupts();
messwert= sumMesswerte/countMesswerte;
sumMesswerte=0;
countMesswerte=0;
interrupts();
spannungMV= messwert / 1023.0 * BETRIEBSSPANNUNG * 1000L;
stromMA=spannungMV*1000/SENSITIVITY;
snprintf(buffer,sizeof(buffer),"%d - %ld mV - %ld mA",messwert,spannungMV,stromMA);
Serial.println(buffer);
}
}
void stopTimer0() {
// ensure that the standard timer interrupts will not
// mess with msTimer2
TIMSK0 = 0;
}
ISR(TIMER2_COMPA_vect) {
einMesswert();
}
void initTimer2() {
// Timer 2 CTC mode, prescaler 64
TCCR2B = (1<<WGM22) | (1<<CS22);
TCCR2A = (1<<WGM21);
// 249 + 1 == 250 == 250 000 / 1000 = (16 000 000 / 64) / 1000
OCR2A = 249;
// enable Timer 2 interrupts
TIMSK2 = (1<<OCIE2A);
}
void setup() {
Serial.begin(9600);
Serial.println();
Serial.println("ACS712 Test Program );
Serial.println();
initTimer2();
stopTimer0();
}
void loop() {
auswertung();
}
lakmus
Специалист
С-Петербург
196 49
Отв.727 27 Дек. 13, 17:10
sumMesswerte += abs(analogRead(ACS712PIN)-MEDIAN);Alex2x, 27 Дек. 13, 13:53вообще то надо не абс - надо и ток и напряжение среднеквадратичное брать - в квадрат возводить, накапливать, а потом квадратный корень из среднего квадрата-
потому как у фазового управления не синусный сигнал и честно посчитать мощность с абс не получится
почитай напр
Alex2x
Кандидат наук
DЕ
325 64
Отв.728 27 Дек. 13, 19:37
вообще то надо не абс - надо и ток и напряжение среднеквадратичное брать - в квадрат возводить, накапливать, а потом квадратный корень из среднего квадрата-Получается выкинуть это "Kemo" и самому спаять?
потому как у фазового управления не синусный сигнал и честно посчитать мощность с абс не получится
почитай напр
lakmus, 27 Дек. 13, 17:10
Что посоветуете, надёжно работающее?
Alex2x
Кандидат наук
DЕ
325 64
Отв.729 27 Дек. 13, 19:40, через 3 мин
.
lakmus
Специалист
С-Петербург
196 49
Отв.730 27 Дек. 13, 22:13
Получается выкинуть это "Kemo" и самому спаять?зачем выкидывать? практически у всех регуляторов не синусный ток(и соотв напряжение) на нагрузке...
Что посоветуете, надежно работающее?Alex2x, 27 Дек. 13, 19:37
это не причина их не использовать - если надо считать мощность(или просто померять напругу на нагрузке) -
надо считать RMS (рут-меан-сквеа) - среднеквадратичное значение - оно не зависит от формы сигнала ...
Alex2x
Кандидат наук
DЕ
325 64
Отв.731 28 Дек. 13, 11:04
зачем выкидывать? практически у всех регуляторов не синусный ток(и соотв напряжение) на нагрузке...Пример скеча можешь?
это не причина их не использовать - если надо считать мощность(или просто померять напругу на нагрузке) -
надо считать RMS (рут-меан-сквеа) - среднеквадратичное значение - оно не зависит от формы сигнала ...
lakmus, 27 Дек. 13, 22:13
lakmus
Специалист
С-Петербург
196 49
Отв.732 28 Дек. 13, 13:21
Пример скеча можешь?Alex2x, 28 Дек. 13, 11:04кусок могу накропать
//*****************************
long curr,sum_curr_sq,rms_curr;
long volt,sum_volt_sq,rms_volt;
long rms_pow;
int countMesswerte;
#define ACS712PIN 3 // пишешь свой пин
#define VoltPIN 4 // пишешь свой пин
#define MEDIAN_curr 511 // к примеру такое
#define MEDIAN_volt 512 // к примеру
void einMesswert() {
curr=(long)(analogRead(ACS712PIN));
volt=(long)(analogRead(VoltPIN));
sum_curr_sq = sum_curr_sq + curr*curr;
sum_volt_sq = sum_volt_sq + volt*volt;
countMesswerte++;
// средние значения вычтем потом один раз - зачем загружать прерывание
}
void auswertung()
{
if (countMesswerte>=1000)
{
long tmp_volt,tmp_curr;
int temp_cnt;
noInterrupts();
tmp_volt=sum_volt_sq;
tmp_curr=sum_curr_sq;
temp_cnt=countMesswerte;
sum_volt_sq=0;
sum_curr_sq=0;
countMesswerte=0;
interrupts();
// на всякий случай вычисления вынес чтоб не тормозили прерывания
rms_curr= sqrt(tmp_curr/temp_cnt) - MEDIAN_curr;
rms_volt= sqrt(tmp_volt/temp_cnt) - MEDIAN_volt;
rms_pow=rms_curr*rms_volt;
/*
здесь пишешь свои калибровки (присвоение физ смысла - вольты амперы ватты) напряж. тока и мощности
*/
}
}
//*****************************
примерно так, вроде ничё не напутал.
ps: надобно брать выборки раз в сто чаще чем 20мсек - но ардуина может не потянуть
другой вариант с использованием аналогового умножителя (получить квадрат) и потом усреднить
либо использовать микросхему RMS-TO-DC CONVERTER напр от analog.com
Alex2x
Кандидат наук
DЕ
325 64
Отв.733 28 Дек. 13, 18:29
Ух накропал!
Скажи пожалуйста, что это:
#define VoltPIN 4 //
Откуда взялся этот пин?
Ты считаешь, что RMS-TO-DC CONVERTER лучше(проще, точнее...) чем ACS712?
И как с ним(RMS-TO-DC CONVERTER) работать?
Какие формулы пересчёта нужны?
Как его подключать?
Скажи пожалуйста, что это:
#define VoltPIN 4 //
Откуда взялся этот пин?
Ты считаешь, что RMS-TO-DC CONVERTER лучше(проще, точнее...) чем ACS712?
И как с ним(RMS-TO-DC CONVERTER) работать?
Какие формулы пересчёта нужны?
Как его подключать?
lakmus
Специалист
С-Петербург
196 49
Отв.734 28 Дек. 13, 21:00
Ух накропал!по порядку
Скажи пожалуйста, что это:
#define VoltPIN 4 //
Откуда взялся этот пин?
Ты считаешь, что RMS-TO-DC CONVERTER лучше(проще, точнее...) чем ACS712?
И как с ним(RMS-TO-DC CONVERTER) работать?
Какие формулы пересчёта нужны?
Как его подключать?Alex2x, 28 Дек. 13, 18:29
-#define VoltPIN 4 //
это пин куда подведено (через транс или еще как) напряжение на нагрузке (напр на ТЭН-не)
я его придумал тк считал что тебе хочется мерять мощность , а она равна вольты умножить на токи
-RMS-TO-DC CONVERTER никак не заменяет датчик тока ACS712...он может быть полезен чтоб разгрузить процессор (посчитать квадраты и усреднить он может)
-как с ним работать - по русски не знаю(наверн есть - гуглим) но вот аппликэйшн и схемы включения и тд итп
Alex2x
Кандидат наук
DЕ
325 64
Отв.735 28 Дек. 13, 21:15, через 15 мин
...это пин куда подведено (через транс или еще как) напряжение на нагрузке (напр на ТЭН-не)
Можно ли показать схематически, для дальнейшего повторения?
Можно ли показать схематически, для дальнейшего повторения?
lakmus
Специалист
С-Петербург
196 49
Отв.736 28 Дек. 13, 22:32
Можно ли показать схематически, для дальнейшего повторения?Alex2x, 28 Дек. 13, 21:15попробую но я не художник
Alex2x
Кандидат наук
DЕ
325 64
Отв.737 28 Дек. 13, 22:46, через 14 мин
А трансформатор обычный 5-10Вт?
И ещё хотел спросить, как отсюда rms_pow=rms_curr*rms_volt перещитывать в мощность ?
И ещё хотел спросить, как отсюда rms_pow=rms_curr*rms_volt перещитывать в мощность ?
lakmus
Специалист
С-Петербург
196 49
Отв.738 29 Дек. 13, 00:03
А трансформатор обычный 5-10Вт?-ну да, трансформатор любой, чтоб на вторичной от пика-до-пика было минимум примерно 5Volt когда напруга в сети достигает максимума - напр. 240V.
И еще хотел спросить, как отсюда rms_pow=rms_curr*rms_volt перещитывать в мощность ?Alex2x, 28 Дек. 13, 22:46
-мощность будет в Ваттах автоматом , когда токи будут в Амперах, а напряжения в Вольтах
пс: диоды пририсовал - их надо поставить!!!!
Alex2x
Кандидат наук
DЕ
325 64
Отв.739 29 Дек. 13, 16:10
Прости, всё равно не представляю.
Можно ли пример,как сигнал пересчитывать от VoltPIN ?
Сигнал с ACS712 так пересчитывать?
spannungMV= messwert / 1023.0 * BETRIEBSSPANNUNG * 1000L;
stromMA=spannungMV*1000/SENSITIVITY;
Можно ли пример,как сигнал пересчитывать от VoltPIN ?
Сигнал с ACS712 так пересчитывать?
spannungMV= messwert / 1023.0 * BETRIEBSSPANNUNG * 1000L;
stromMA=spannungMV*1000/SENSITIVITY;