По 1-ware иногда выскакивают очень большие величины. Причину найти не могу. Может много всего на линии (17 шт) ,может далеко (20 м), может преобразование ,но скорее всего всё в куче. Искать нет смысла ,проще отфильтровать. У вас всё рядом проблем быть не должно.
По 1-ware иногда выскакивают очень большие величины. Причину найти не могу. Может много всего на линии (17 шт) ,может далеко (20 м), может преобразование ,но скорее всего всё в куче. Искать нет смысла ,проще отфильтровать. У вас всё рядом проблем быть не должно.
ясно, вы подтвердили мое предположение. у меня было такое с 1-wire - причина была во включенном таймере, и выключить его нельзя (динамическая индикация) и помехи он дает на код 1-wire который критичен к временным интервалам. Решал тоже просто - выкидывая мусор
началось.... измеряю максимум при нулевом токе и получаю аж 400-500 мА! что я теперь упускаю? ошибки измерений остались теже. но похоже наводки дают выбросы значений
алгоритм с поиском максимума дает очень сильные шумы. не понимаю как с этим бороться. по сути к нужному значению добавляются лишние 300-400 мА, смотрю на осциилографе - дейсвительно есть выбросы на синусоиде
та ето с аналоговой частью бороться надо... провода покороче и потолще, снимать показания тока как можно ближе к клемам, фильтр замутить...
посмотрите в инете темы про переделку АТХ блоков питания...там где народ мутит контрольную панель на МК, вот там есть дельные советы по реализации приборов контроля
та ето с аналоговой частью бороться надо... провода покороче и потолще, снимать показания тока как можно ближе к клемам, фильтр замутить...
посмотрите в инете темы про переделку АТХ блоков питания...там где народ мутит контрольную панель на МК, вот там есть дельные советы по реализации приборов контроля
результат меня теперь вполне устраивает. Даже удивлен, что мк может снимать по 5000 измерений в секунду. Может это даже лишнее, но раз работает - оставлю. Сейчас другая проблема )) Отладил на кроликах - подключаю диспенсер а там ток при старте зашкаливает за 8А. Наверно надо менять датчик 5-ти амперный на 20ти
а смысл в чем? можно много чего прикрутить, только в этом должен быть смысл. Весь смысл предложенного вамим документа относится к выполнени требований Европы по экологии. Мой диспенсер и так соотвествует всем нормам, включаю я его кнопкой вручную или через реле - без разницы
Нет. Там по-русски написано: "для уменьшения бросков тока".
я не собираюсь быть умней производителя измельчителя, мне это ни к чему, а то мания величия еще нагрянет )
не нужен мне NTC, если он нужен, он наверняка уже встроен. А если не встроен - то не факт, что его подключение не выведет мотор в непредусмотренный режим - начнет клинить или стартовать через раз. У всего должен быть смысл. Я уверен, что все, что надо уже предусмотрено. Вот если бы я делал новое устройство, то обязательно бы прислушался.
кстати, у МК есть режим когда измерение по АЦП автоматически запускаются по таймеру - нет необходимости писать обработчик для таймера и в него вставлять код считывания данных с АЦП.
Ардуина напрямую не дает возможность это использовать, но можно самому настроить такой режим через контрольные регистры. Настраиваем таймер, в качестве триггера для него ставим timer overflow после чего пишем обработчик прерывания для ADC_vect. Этот обработчик будет срабатывать всегда когда у нас завершилась оцифровка. Такой способ позволяет наиболее эффективно организовать оцифровку для случаев когда нужны измерения с заданными интервалами
я понял, что вы предлагали сделать обработчик прерывний по таймеру и в нем считывать показания. В моем варианте обработчик прерываний по таймеру вообще не нужен. Возможно я не верно вас понял.
Да бы не плодить лишних тем, отпишусь тут. Решил поиграться с датчиком тока ACS712 20А в связке с Teensy 3.1(МК). Питание использую внешнее( что на рисунке и видно) Так как этот МК не имеет выходов 5V для питания датчиков - подключил датчик параллельно МК. Пунуктиром отметил подключение для измерения потребляемогог тока всей цепью и получения результатов без нагрузки.
Изза особенности АЦП на МК (3.3 V и выше = 1023) получаем при 2.5v 775 (а не 512 как у ардуинки). Теоретически это должно повысить точность, если пренебречь токами, дающими на АЦП от дачика более 3.3V - то есть принять число разрядов не 1023 а 775*2=1550.
При пересчёте получил коэффициент 0,0322580
Вот код программы:
float Ival = 0;
int AV9;
void setup() {
Serial.begin(9600);
}
void loop() {
calcI();
delay(2000);
}
void calcI(){
int values[100];
int summ = 0;
int count = 0;
float pre;
// Вычисляем среднее значение из 100 измерений
for (int i=0; i <= 100; i++){
values[i] = analogRead(A9);
summ += values[i];
}
pre = summ / 100;
// Пересчёт среднего значения без учёта величин, отклоняющихся на 10 единиц
summ = 0;
for (int i=0; i <= 100; i++){
if(abs(values[i] - pre) < 10){
count++;
summ += values[i];
};
}
Serial.print("Count = ");
Serial.print(count);
Serial.print("; Summ = ");
Serial.print(summ);
Serial.print("; Calc I = ");
//754 вместо 775 - из за падения напряжения
Serial.println((754-(summ/count))*0.0331125827814569);
}
Но результаты очень непредсказуемы. Значения скачут бывает в пределах 1.5А без нагрузки. Я так полагаю из-за незащищённости от разного рода помех. Да и напряжение питания на контактах МК и датчика гуляет от 4.88 до 4.96, хотя источник питания мне на вольтметре клёнтся, что 5v.
Иммет вообще место такая схема подключения и каковы советы по повышению стабильности значений?
Это всего лишь выборки, усреднения, которые отлавнивают разловые скачки. Но бывают периоды когда датчик довольноо долго клинит В сторону - на пол ампера или выше. тут не в количестве итераций дело. А формула, приведённая мной верна для АЦП с потолком 3.3V. И она верна. Не в ней был вопрос.
Как мысль - через делитель мерять входное напряжение на датчике - для компенсации скачков. И могут ли в цепи питания возрастать помехи, если датчики питаются от одной линии, а нет от МК. Тем более что датчков может быть довольно много. Это вданном случае 1.
Корректировка с помощью делителя напряжения дейсвительно сработала (2 резистора по 710ОМ вполне подошли)! Немного доработав схему, получил весьма точные результаты, при чём 100 выборок воплне достаточно для усреднения результата. Да и формула получилась довольно простой. Хотя напряжение весьма сильно гуляет при этом.
Резултаты измерений (без усреднения):
Vcc = 4.69; Vd = 727; Id = 728; Iv = 0.03
Vcc = 4.55; Vd = 705; Id = 704; Iv = -0.03
Vcc = 4.66; Vd = 722; Id = 715; Iv = -0.23
Vcc = 4.40; Vd = 682; Id = 676; Iv = -0.19
Vcc = 4.57; Vd = 709; Id = 706; Iv = -0.10
Vcc = 4.50; Vd = 697; Id = 700; Iv = 0.10
Vcc = 4.46; Vd = 691; Id = 692; Iv = 0.03
Vcc = 4.32; Vd = 669; Id = 668; Iv = -0.03
Vcc = 4.61; Vd = 715; Id = 716; Iv = 0.03
Vcc = 4.46; Vd = 692; Id = 694; Iv = 0.06
Vcc = 4.58; Vd = 710; Id = 710; Iv = 0.00
Vcc = 4.61; Vd = 715; Id = 711; Iv = -0.13
Vcc = 4.61; Vd = 714; Id = 717; Iv = 0.10
Vcc = 4.69; Vd = 727; Id = 725; Iv = -0.06
Vcc = 4.49; Vd = 696; Id = 703; Iv = 0.23
Vcc = 4.55; Vd = 705; Id = 705; Iv = 0.00
Vcc = 4.67; Vd = 724; Id = 713; Iv = -0.35
Vcc = 4.65; Vd = 721; Id = 716; Iv = -0.16
Vcc = 4.59; Vd = 712; Id = 705; Iv = -0.23
Vcc = 4.39; Vd = 680; Id = 680; Iv = 0.00
Vcc = 4.54; Vd = 703; Id = 695; Iv = -0.26
Vcc = 4.54; Vd = 703; Id = 702; Iv = -0.03
Vcc = 4.54; Vd = 704; Id = 699; Iv = -0.16
Vcc = 4.37; Vd = 677; Id = 674; Iv = -0.10
Vcc = 4.42; Vd = 685; Id = 678; Iv = -0.23
Vcc = 4.39; Vd = 680; Id = 677; Iv = -0.10
Vcc = 4.36; Vd = 676; Id = 674; Iv = -0.06
Vcc = 4.32; Vd = 670; Id = 671; Iv = 0.03
Vcc = 4.37; Vd = 677; Id = 680; Iv = 0.10
Судя по всему вы сами осознали.
А про какие ошибки вы пишите? У меня нет ошибок измерений
По 1-ware иногда выскакивают очень большие величины. Причину найти не могу. Может много всего на линии (17 шт) ,может далеко (20 м), может преобразование ,но скорее всего всё в куче. Искать нет смысла ,проще отфильтровать. У вас всё рядом проблем быть не должно.
По 1-ware иногда выскакивают очень большие величины. Причину найти не могу. Может много всего на линии (17 шт) ,может далеко (20 м), может преобразование ,но скорее всего всё в куче. Искать нет смысла ,проще отфильтровать. У вас всё рядом проблем быть не должно.
ясно, вы подтвердили мое предположение. у меня было такое с 1-wire - причина была во включенном таймере, и выключить его нельзя (динамическая индикация) и помехи он дает на код 1-wire который критичен к временным интервалам. Решал тоже просто - выкидывая мусор
началось.... измеряю максимум при нулевом токе и получаю аж 400-500 мА! что я теперь упускаю? ошибки измерений остались теже. но похоже наводки дают выбросы значений
алгоритм с поиском максимума дает очень сильные шумы. не понимаю как с этим бороться. по сути к нужному значению добавляются лишние 300-400 мА, смотрю на осциилографе - дейсвительно есть выбросы на синусоиде
та ето с аналоговой частью бороться надо... провода покороче и потолще, снимать показания тока как можно ближе к клемам, фильтр замутить...
посмотрите в инете темы про переделку АТХ блоков питания...там где народ мутит контрольную панель на МК, вот там есть дельные советы по реализации приборов контроля
та ето с аналоговой частью бороться надо... провода покороче и потолще, снимать показания тока как можно ближе к клемам, фильтр замутить...
посмотрите в инете темы про переделку АТХ блоков питания...там где народ мутит контрольную панель на МК, вот там есть дельные советы по реализации приборов контроля
сделал усреднение перед поиском максимума
результат меня теперь вполне устраивает. Даже удивлен, что мк может снимать по 5000 измерений в секунду. Может это даже лишнее, но раз работает - оставлю. Сейчас другая проблема )) Отладил на кроликах - подключаю диспенсер а там ток при старте зашкаливает за 8А. Наверно надо менять датчик 5-ти амперный на 20ти
подключаю диспенсер а там ток при старте зашкаливает за 8А. Наверно надо менять датчик 5-ти амперный на 20ти
Я бы, для начала, поставил туда зелененький NTC-резистор из компьютерного блока питания для сглаживания броска тока. :)
Я бы, для начала, поставил туда зелененький NTC-резистор из компьютерного блока питания для сглаживания броска тока. :)
да не буду заморачиваться - по даташиту у acs712 пятикратный запас по току
я просто в программе поставил - первые 5 секунд контроль по двухратному току, а через 5 секунд по нормальному, все вроде работает
да не буду заморачиваться - по даташиту у acs712 пятикратный запас по току
Оно не для защиты датчика, а для того, чтобы не было перегрузки входной линии и того, чем она у Вас питается...
Оно не для защиты датчика, а для того, чтобы не было перегрузки входной линии и того, чем она у Вас питается...
о чем вы? коллекторный двигатель в момент старта потребляет существенно больший ток, пока не раскрутится
и что и от кого вы предлагаете защищать?
О чем вы? коллекторный двигатель в момент старта потребляет существенно больший ток, пока не раскрутится и что и от кого вы предлагаете защищать?
Ну, я даже не знаю... Почитайте что-нибудь, типа: http://www.kit-e.ru/assets/files/pdf/2008_11_92.pdf
Ну, я даже не знаю... Почитайте что-нибудь, типа: http://www.kit-e.ru/assets/files/pdf/2008_11_92.pdf
а смысл в чем? можно много чего прикрутить, только в этом должен быть смысл. Весь смысл предложенного вамим документа относится к выполнени требований Европы по экологии. Мой диспенсер и так соотвествует всем нормам, включаю я его кнопкой вручную или через реле - без разницы
смысл предложенного вамим документа относится к выполнени требований Европы по экологии.
Нет. Там по-русски написано: "для уменьшения бросков тока".
Нет. Там по-русски написано: "для уменьшения бросков тока".
я не собираюсь быть умней производителя измельчителя, мне это ни к чему, а то мания величия еще нагрянет )
не нужен мне NTC, если он нужен, он наверняка уже встроен. А если не встроен - то не факт, что его подключение не выведет мотор в непредусмотренный режим - начнет клинить или стартовать через раз. У всего должен быть смысл. Я уверен, что все, что надо уже предусмотрено. Вот если бы я делал новое устройство, то обязательно бы прислушался.
кстати, у МК есть режим когда измерение по АЦП автоматически запускаются по таймеру - нет необходимости писать обработчик для таймера и в него вставлять код считывания данных с АЦП.
Ардуина напрямую не дает возможность это использовать, но можно самому настроить такой режим через контрольные регистры. Настраиваем таймер, в качестве триггера для него ставим timer overflow после чего пишем обработчик прерывания для ADC_vect. Этот обработчик будет срабатывать всегда когда у нас завершилась оцифровка. Такой способ позволяет наиболее эффективно организовать оцифровку для случаев когда нужны измерения с заданными интервалами
я же вам такое и предлогал :)
я же вам такое и предлогал :)
я понял, что вы предлагали сделать обработчик прерывний по таймеру и в нем считывать показания. В моем варианте обработчик прерываний по таймеру вообще не нужен. Возможно я не верно вас понял.
ну да, таймер только для отключения АЦП, а АЦП работает в режими повторных перобразований
режим повторных преобразований это другой режим )) легко запутаться
я имел в виду режим преобразований который начинается по timer overflow
а есть режим пофторных бесконечных преобразований когда следующее преобразование начинается как только завершилось предыдущее
Да бы не плодить лишних тем, отпишусь тут. Решил поиграться с датчиком тока ACS712 20А в связке с Teensy 3.1(МК). Питание использую внешнее( что на рисунке и видно) Так как этот МК не имеет выходов 5V для питания датчиков - подключил датчик параллельно МК. Пунуктиром отметил подключение для измерения потребляемогог тока всей цепью и получения результатов без нагрузки.
Изза особенности АЦП на МК (3.3 V и выше = 1023) получаем при 2.5v 775 (а не 512 как у ардуинки). Теоретически это должно повысить точность, если пренебречь токами, дающими на АЦП от дачика более 3.3V - то есть принять число разрядов не 1023 а 775*2=1550.
При пересчёте получил коэффициент 0,0322580
Вот код программы:
Но результаты очень непредсказуемы. Значения скачут бывает в пределах 1.5А без нагрузки. Я так полагаю из-за незащищённости от разного рода помех. Да и напряжение питания на контактах МК и датчика гуляет от 4.88 до 4.96, хотя источник питания мне на вольтметре клёнтся, что 5v.
Иммет вообще место такая схема подключения и каковы советы по повышению стабильности значений?
А вот здесь http://www.lucadentella.it/en/2011/11/29/sensore-di-corrente-con-arduino/ почитайте.
for
(
int
i=0; i <= 100; i++), 100 маловато будет.
A = 0.026394 * units - 13.513514
:)
Это всего лишь выборки, усреднения, которые отлавнивают разловые скачки. Но бывают периоды когда датчик довольноо долго клинит В сторону - на пол ампера или выше. тут не в количестве итераций дело. А формула, приведённая мной верна для АЦП с потолком 3.3V. И она верна. Не в ней был вопрос.
Как мысль - через делитель мерять входное напряжение на датчике - для компенсации скачков. И могут ли в цепи питания возрастать помехи, если датчики питаются от одной линии, а нет от МК. Тем более что датчков может быть довольно много. Это вданном случае 1.
Корректировка с помощью делителя напряжения дейсвительно сработала (2 резистора по 710ОМ вполне подошли)! Немного доработав схему, получил весьма точные результаты, при чём 100 выборок воплне достаточно для усреднения результата. Да и формула получилась довольно простой. Хотя напряжение весьма сильно гуляет при этом.
Резултаты измерений (без усреднения):