15 сентября 2016 в 09:46

Работа с датчиками тока на эффекте Холла: ACS758 из песочницы

Всем привет!

Пожалуй, стоит представиться немного — я обычный инженер-схемотехник, который интересуется также программированием и некоторыми другими областями электроники: ЦОС, ПЛИС, радиосвязь и некоторые другие. В последнее время с головой погрузился в SDR-приемники. Первую свою статью (надеюсь, не последнюю) я сначала хотел посвятить какой-то более серьезной теме, но для многих она станет лишь чтивом и не принесет пользы. Поэтому тема выбрана узкоспециализированная и исключительно прикладная. Также хочу отметить, что, наверное, все статьи и вопросы в них будут рассматриваться больше со стороны схемотехника, а не программиста или кого-либо еще. Ну что же — поехали!

Не так давно у меня заказывали проектирование «Система мониторинга энергоснабжения жилого дома», заказчик занимается строительством загородных домов, так что кто-то из вас, возможно, даже уже видел мое устройство. Данный девайс измерял токи потребления на каждой вводной фазе и напряжение, попутно пересылая данные по радиоканалу уже установленной системе «Умный дом» + умел вырубать пускатель на вводе в дом. Но разговор сегодня пойдет не о нем, а о его небольшой, но очень важной составляющей — датчике тока. И как вы уже поняли из названия статьи, это будут «бесконтактные» датчики тока от компании Allegro — ACS758-100.
________________________________________________________________________________________________________________________

Даташит, на датчик о котором я буду рассказывать, можно посмотреть тут. Как несложно догадаться, цифра «100» в конце маркировки — это предельный ток, который датчик может измерить. Скажу честно — есть у меня сомнения по этому поводу, мне кажется, выводы просто не выдержат 200А долговременно, хотя для измерения пускового тока вполне подойдет. В моем устройстве датчик на 100А без проблем пропускает через себя постоянно не менее 35А + бывают пики потребления до 60А.

image
Рисунок 1 — Внешний вид датчика ACS758-100(50/200)

Перед тем, как перейду к основной части статьи, я предлагаю вам ознакомиться с двумя источниками. Если у вас есть базовые знания по электронике, то они будут избыточными и смело пропускайте этот абзац. Остальным же советую пробежаться для общего развития и понимания:

1) Эффект Холла. Явление и принцип работы
2) Современные датчики тока
________________________________________________________________________________________________________________________

Ну что же, начнем с самого важного, а именно с маркировки. Покупаю комплектующие в 90% случаев на www.digikey.com. В Россию компоненты приезжают через 5-6 дней, на сайте есть пожалуй все, также очень удобный параметрический поиск и документация. Так что полный список датчиков семейства можно посмотреть там по запросу "ACS758". Датчики мои были куплены там же — ACS758LCB-100B.

Внутри даташита по маркировке все расписано, но я все равно обращу внимание на ключевой момент "100В":

1) 100 — это предел измерения в амперах, то есть мой датчик умеет измерять до 100А;
2) "В" — вот на эту букву стоит обратить внимание особо, вместо нее может быть также буква "U". Датчик с буквой B умеет измерять переменный ток, а соответственно и постоянный. Датчик с буквой U умеет измерять только постоянный ток.

Также в начале даташита есть отличная табличка на данную тему:
image
Рисунок 2 — Типы датчиков тока семейства ACS758

Также одной из важнейших причин использования подобного датчика стала — гальваническая развязка. Силовые выводы 4 и 5 не связаны электрически с выводами 1,2,3. В данном датчике связь лишь в виде наведенного поля.

Еще в данной таблицы появился еще один важный параметр — зависимости выходного напряжения от тока. Прелесть данного типа датчиков в том, что у них выход напряжения, а не тока как у классических трансформаторов тока, что очень удобно. Например, выход датчика можно подсоединить напрямую ко входу АЦП микроконтроллера и снимать показания.

У моего датчика данное значение равно 20 мВ/А. Это означает, что при протекании тока 1А через выводы 4-5 датчика напряжение на его выходе увеличится на 20 мВ. Думаю логика ясна.

Следующий момент, какое же напряжение будет на выходе? Учитывая, что питание «человеческое», то есть однополярное, то при измерение переменного тока должна быть «точка отсчета». В данном датчике эта точка отсчета равна 1/2 питания (Vcc). Такое решение часто бывает и это удобно. При протекании тока в одну сторону на выходе будет "1/2 Vcc + I*0.02V", в другом полупериоде, когда ток протекает в обратную сторону напряжение на выходе будет уже "1/2 Vcc — I*0.02V". На выходе мы получаем синусоиду, где «ноль» это 1/2Vcc. Если же мы измеряем постоянный ток, то на выходе у нас будет "1/2 Vcc + I*0.02V", потом при обработке данных на АЦП просто вычитаем постоянную составляющую 1/2 Vcc и работаем с истинными данными, то есть с остатком I*0.02V.

Теперь пришло время проверить на практике то, что я описал выше, а вернее вычитал в даташите. Чтобы поработать с датчиком и проверить его возможности, я соорудил вот такой «мини-стенд»:

image
Рисунок 3 — Площадка для тестирования датчика тока

Первым делом я решил подать на датчик питание и измерить его выход, чтобы убедиться в том, что за «ноль» у него принято 1/2 Vcc. Схему подключения можно взять в даташите, я же, желая лишь ознакомиться, не стал тратить время и лепить фильтрующий конденсатор по питанию + RC цепочку ФНЧ на выводе Vout. В реальном же устройстве без них никуда! Получил в итоге такую картинку:

image
Рисунок 4 — Результат измерения «нуля»

При подаче питания с моей платки STM32VL-Discovery я увидел вот такие результаты — 2.38В. Первый же вопрос, который возник: "Почему 2,38, а не описанные в даташите 2.5?" Вопрос отпал практически мгновенно — измерил я шину питания на отладке, а там 4.76-4.77В. А дело все в том, что питание идет с USB, там уже 5В, после USB стоит линейный стабилизатор LM7805, а это явно не LDO с 40 мВ падением. Вот на нем это 250 мВ примерно и падают. Ну да ладно, это не критично, главное знать, что «ноль» это 2.38В. Именно эту константу я буду вычитать при обработке данных с АЦП.

А теперь проведем первое измерение, пока лишь с помощью осциллографа. Измерять буду ток КЗ моего регулируемого блока питания, он равен 3.06А. Это и встроенный амперметр показывает и флюка такой же результат дала. Ну что же, подключаем выходы БП к ногам 4 и 5 датчика (на фото у меня витуха брошена) и смотрим, что получилось:

image
Рисунок 5 — Измерение тока короткого замыкания БП

Как мы видим, напряжение на Vout увеличилось с 2.38В до 2.44В. Если посмотреть на зависимость выше, то у нас должно было получиться 2.38В + 3.06А*0.02В/А, что соответствует значению 2.44В. Результат соответствует ожиданиям, при токе 3А мы получили прибавку к «нулю» равную 60 мВ. Вывод — датчик работает, можно уже работать с ним с помощью МК.

Теперь необходимо подключить датчик тока с одному из выводов АЦП на микроконтроллере STM32F100RBT6. Сам камушек очень посредственный, системная частота всего 24 МГц, но данная платка у меня пережила очень много и зарекомендовала себя. Владею ею уже, наверное, лет 5, ибо была получена нахаляву во времена, когда ST их раздавали направо и налево.

Сначала по привычке я хотел после датчика поставить ОУ с коэф. усиления «1», но, глянув на структурную схему, понял, что он внутри уже стоит. Единственное стоит учесть, что при максимальном токе выходное питание будет равно питанию датчика Vcc, то есть около 5В, а STM умеет измерять от 0 до 3.3В, так что необходимо в таком случае поставить делитель напряжения резистивный, например, 1:1,5 или 1:2. У меня же ток мизерный, поэтому пренебрегу пока этим моментом. Выглядит мое тестовое устройство примерно так:

image
Рисунок 6 — Собираем наш «амперметр»

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

Теперь необходимо написать функцию для измерения Vout с помощью АЦП микроконтроллера. Рассказывать подробно не буду, по STM32 уже и так море информации и уроков. Так что просто смотрим:

uint16_t get_adc_value()
    {
    ADC_SoftwareStartConvCmd(ADC1, ENABLE);
    while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC) == RESET);
    return ADC_GetConversionValue(ADC1);
    }

Далее, чтобы получить результаты измерения АЦП в исполняемом коде основного тела или прерывания, надо прописать следующее:

 data_adc = get_adc_value();

Предварительно объявив переменную data_adc:

 extern uint16_t data_adc;

В итоге мы получаем переменную data_adc, которая принимает значение от 0 до 4095, т.к. АЦП в STM32 идет 12 битный. Далее нам необходимо превратить полученный результат «в попугаях» в более привычный для нас вид, то есть в амперы. Поэтому необходимо для начала посчитать цену деления. После стабилизатора на шине 3.3В у меня осциллограф показал 3.17В, не стал разбираться, с чем это связано. Поэтому, разделив 3.17В на 4095, мы получим значение 0.000774В — это и есть цена деления. То есть получив с АЦП результат, например, 2711 я просто домножу его на 0.000774В и получу 2.09В.

В нашей же задачи напряжение лишь «посредник», его нам еще необходимо перевести в амперы. Для этого нам надо вычесть из результата 2.38В, а остаток поделить на 0.02 [В/А]. Получилась вот такая формула:

float I_out = ((((float)data_adc * presc)-2.38)/0.02);

Ну что же, пора залить прошивку в микроконтроллер и посмотреть результаты:

image
Рисунок 7 — Результаты измерения данных с датчика и их обработка

Измерил собственное потребление схемы как видно 230 мА. Измерив тоже самое поверенной флюкой, оказалось, что потребление 201 мА. Ну что же — точность в один знак после запятой это уже очень круто. Объясню, почему… Диапазон измеряемого тока 0..100А, то есть точность до 1А это 1%, а точность до десятых ампера это уже 0,1%! И прошу заметить, это без каких либо схемотехнических решений. Я даже поленился повесить фильтрующие кондеры по питанию.

Теперь необходимо замерить ток короткого замыкания (КЗ) моего источника питания. Выкручиваю ручку на максимум и получаю следующую картину:

image
Рисунок 8 — Измерения тока КЗ

Ну и собственно показания на самом источнике с его родным амперметром:

image
Рисунок 9 — Значение на шкале БП

На самом деле там показывало 3.09А, но пока я фотографировал, витуха нагрелась, и ее сопротивление выросло, а ток, соответственно, упал, но это не так страшно.

В заключение даже и не знаю, чего сказать. Надеюсь, моя статья хоть как-то поможет начинающим радиолюбителям в их нелегком пути. Возможно, кому-то понравится моя форма изложения материала, тогда могу продолжить периодически писать о работе с различными компонентами. Свои пожелания по тематике можно высказать в комментариях, я постараюсь учесть.

Ну и конечно же прилагаю исходники программки, глядишь, кому понадобится библиотека для работы с дисплеем или АЦП. Сам проект в Keil 5.
@Leerooooy
карма
38,0
рейтинг 0,2
Инженер-схемотехник
Самое читаемое

Комментарии (81)

  • +2
    U=unidirectional, т.е. одной полярности, при этом он может быть переменным, но не уходящим в отрицательные значения.
  • +1

    Спасибо большое за труды.
    Реквестирую вторую часть, как померять ток на АС 220 и посчитать потребляемую мощность.

    • 0
      Да, хорошо. Тоже думал по поводу измерения переменки, помучаю чайник)) Кстати судя по комментариям ниже придется ради эксперимента 3-4 датчика подключить, чтобы убедить в их минимальной погрешности.
  • +2
    Советую учесть, что вы работаете с измериловкой. Тут очень легко напороться на трудности, которые не очевидны на первый взгляд. В первую очередь это касается точности измерений. Вся ваша радость от быстрого решения пройдет быстро, когда вы поставите второй датчик, а он покажет вам плюс 0.5А. Или нагреете его на 20 градусов и поплывут ваши показатели. Да что-там. В данном случае замена блока питания может принести неприятный сюрприз.
    Советую обращать на это внимание в первую очередь еще до того, как вы выберете датчик. Например эти самые ACS758 по даташиту обладают весьма посредственными характеристиками по точности, доходящим аж до 3%. Не стоит упоминать, сколько это на 3-х амперах от 100. А также там есть нехилая нелинейность, зависимость от температуры, дрифт нуля и естественно зависимость от напряжения питания.
    В общем в единственном экземпляре после калибровки можно добиться приемлемых результатов, но так чтобы поставил и забыл, надо еще работать и работать. Вплоть до того, что я вместо этих выбрал другие более точные датчики, так как сразу понял что с этими дела не будет.
    • 0
      Поддерживаю. Помня, что датчик аналоговый нужно и сигнал с него дотянуть до АЦП правильно и измерить его правильно (чтоб от напряжения питания МК показания не плыли). На моей памяти алегровские датчики дохли как мухи (правда на 30А) — возможно брак, но осадочек остался…
      • 0

        А когда применение датчиков Холла оправдано по сравнением с токовым трансформатором?

        • +1
          Датчики Холла могут измерять постоянный ток (переменный с постоянной составляющей, или переменный с очень низкой частотой и т.п.).
        • 0
          Еще им не нужен измерительный шунт, усилитель, а также нет проблемы с разорваной вторичной цепью. Также они не насыщаются.
          Но есть проблема дрейфа нуля и им нужно питание, лучше всего отфильтрованое. Ну и дороже они, чем ТТ
          • 0
            Нужно понимать, что эта статья лишь описывает принцип и не является устройством. Зачем говорить о точности голой железки без обвязки?

            Относительно друг друга они отличаются в показаниях на единицы мкВ, так то этим явно можно пренебречь. В температурном диапазоне 0… +40 выход не плывет, при больших флуктуациях необходимо ставить уже датчик температуры и вводить компенсацию схемы, как минимум аналоговой части.

            3% — это откуда такие данные? 1% это 1А. Таких погрешностей нету даже при минусовой температуре.

            Вообще говоря о точности и надежности необходимо рассматривать готовое устройство и схемотехническое решение. Тут же лишь обзор компонента. Возможно чуть дальше я покажу как получить от него реальные +-0,01А в устройстве.
  • 0
    Очень классные штуки, на самом деле — впервые столкнулся с ними в киловатном BLDC контроллере. То есть, по сути, они как раз для контроля пиковых токов и нужны (чтобы не сжечь двигатель/батарею/проводку. но именно для контроля, а не отсечки, как предохранитель).

    Стоит отметить, что это вообще (пока?) единственное, что удалось найти с адекватными размерами и ценой для таких мощностей.
    Если кто-то знает аналоги — был бы признателен.
  • 0

    На днях возился с младшей серией тех же датчиков — ACS712. Предел измерения — от 5 до 30 А, поэтому они умещаются в SOIC-8 без дополнительных выводов.


    Вот такие картинки получались

    Сверху — ток через люминесцентную лампу, снизу — через лампу накаливания. После предусилителя на ОУ, естественно.

    • 0
      Тоже такие использую (на 5А) для защиты цифры. Весьма удобные корпуса и измерять можно до +-1 мА без особых ухищрений))
  • +2
    Не надо высчитывать константу, надо просто сделать самокалибрацию, что бы при первом включении (или по нажатию какой кнопки) измерялось нулевое безтоковое состояние на выходе, сохранялось в EEPROM и потом уже плясать от него, в идеале можно еще сделать дополнительную калибрацию по току, скажем для 5 или 10А по точному амперметру.
    • 0
      А разве в STM нельзя завести опорное напряжение для АЦП ( Питание датчика то есть)? По моему это самый точный и правильный способ для данного случая…
      • 0
        можно, но где гарантия что сама микросхема тоже точно 1/2U выдавать будет
        а ее питание и так мерять надо будет, что б его дрейф по времени компенсировать, всего пара команд добавится, но точность резко выше будет, достаточно будет раз подать питание в бестоковом состоянии или кнопку нажать, и перекалибровать раз в год можно будет.
        • 0
          При производстве вы откалибровали микросхему и как бы ничего в ней не поменяется… А вот если Питание под нагрузкой просядет то привет приплыли?
          • 0
            его тоже постоянно измерять надо
            • 0
              как я понимаю, если завести его как опорное — то не надо?
              • 0
                проще измерять, а то опорное оно для всего ADC использоваться будет
                надо постоянно про это помнить, переключать регистры на другое опорное если что другое измерять надо, обязательно в паре мест забудешь и т.д.
              • 0
                Для STM32 напряжения как питания, так и опорное аналоговой части, не могут превышать 3V6. Если датчик питается от 5V, то…
                • 0
                  так там же резистивный делитель, так что будет то?
                  • 0
                    Резистивный делитель со своими допусками на каждый резистор -> калибровка ещё и делителя.

                    Нет, я согласен, что входное питание надо измерять. Но, на мой взгляд, лучше иметь стабилизированное питание аналоговой части (LDO 5V->3V3) и замерять всё остальное относительно него.
                    • 0
                      А зачем вообще датчик питать от 5 V и вот с этим вот всем делением возиться?
                      • 0
                        Не за чем. Просто так было сделано у автора: питание датчика — USB 5V; питание MCU — на своей плате.
                        При изготовлении законченного устройства питание проще сделать одинаковым, да (как вы в самом начале и написали, собственно).
                      • 0
                        Во-первых, ИОН можно подцепить к АЦП, это необходимо если нужна супер точность. Во-вторых, в статье я написал про делитель напряжения, чтобы напряжение на входе АЦП не превысило максимально допустимое. В-третьих, запитать от 3.3В можно, но при питании ниже 4.2В выход начинает «плясать», порядка +-120 мВ, поэтому стабильность выше при рекомендованных 5В.
                    • 0
                      В одной катушке резисторы, как правило, одинаковые. Указанный допуск — это расхождения между партиями. Соответственно, если набрать делитель из одинаковых резисторов из одной катушки, калибровать ничего не нужно.
                      • 0
                        Слова «как правило, одинаковые» — не самые хорошие =) Особенно, если мы говорим о *простых* резисторах с погрешностью 5% или о более точных с погрешностью 1%.

                        Есть где-нибудь заявление производителя, что резисторы будут точно одинаковыми в одной партии? Просто, просматривая даташит (http://www.vishay.com/docs/20035/dcrcwe3.pdf), то в месте описания reel, такого упоминания нет. Думаю, в этом случае, стоит относиться ко всем резисторам с максимально возможной погрешностью (тут — 1%). Просто во избежание.

                        Единственное, они пишут, что reel соответствует спецификации IEC 60068-3. Сама она платная, но пробежав по оглавлению (https://webstore.iec.ch/preview/info_iec60068-3-13%7Bed1.0%7Db.pdf) я сделал вывод, что она о геометрических параметрах (и, соответственно, о монтаже на установщике).
                        • 0
                          а зачем калибровать резистором? Для этого есть код, достаточно измерить точно параметры делителя и внести поправку. На этом все. Такое действо актуально даже для 0.5-1% резюков.
                          • 0
                            Верно. Просто если у вас несколько таких плат, то эту калибровку надо делать на каждой плате.
                            • 0
                              Если резисторы с одной партии, так же как и датчики, то для получения +-0.5% хватит подобрать на одной и дальше расклонировать прошивку по остальным. Большую точность от меня по крайней мере еще никто не требовал))
                        • 0
                          В данном случае «как правило» стоит понимать как «я не встречал обратного».
      • 0
        Это даже нужно сделать, но к сожалению спасет не от всех проблем.
        Проблема с самокалибровкой в том, что часто в измеряемой цепи ток всегда есть (например как вы откалибруете прибор если датчик тока меряет собственное потребление этого прибора?)
        • 0
          Я собственно считаю, что раз у микросхемы ratiometric output ( не знаю толкового перевода) то и цифровать ее надо от того же напряжения питания
      • 0
        Самый простой способ это завести напряжение с делителя на одинаковых резисторах на второй канал АЦП, измерения проводить измеряя оба напряжения и простой операцией вычитания. В некоторых контроллерах для этого предусмотрен дифференциальный режим работы АЦП и сигналы двух входов вычитаются ещё до подачи на АЦП. но… всё это не нужно, если в качестве опорного выбрать напряжение питания и датчик будет подключен к тому же напряжению что и АЦП, просто старший бит использовать как знаковый — на многих АЦП предусмотрен такой режим работы когда результат 12-битного измерения расширяется на 16-битный как знаковое число — под такое использование повидимому и предусмотрен данный датчик.
  • 0
    День добрый, вопросы новичка.
    Я правильно понимаю что чем больше mV/A, тем точнее я смогу снять показания?
    Проводилось ли тестирование при низких токах (->0), средних и высоких (применительно к этому датчику ->100A)? Точность не изменяется?
    • –1
      > Я правильно понимаю что чем больше mV/A, тем точнее я смогу снять показания?
      <...> тем менее точный ADC вам нужен, чтобы снять точные показания (впрочем, у STM32 точность — 12 бит (если точнее, то берём только 10). А значит, MCU способен измерять напряжения с точностью 3mV, чего достаточно). Но тем быстрее вы упрётесь в верхний порог измерений:
      1. Датчик питается 5V
      2. MCU питается 3V3
      3. mV/A == 100

      При токе 50A уровень напряжения будет: (5V/2) + (50A*100mV/A) = 2.5 + 5 = 7.5V, что больше допустимых 3V3.
      • +1
        Как вы себе представляете, что датчик выдаст на выходе сигнал больший, чем его питание?
        • 0
          Разумеется, это моя ошибка на невнимательность. Датчик выдаст своё напряжение питания.
          Основной посыл был в том, что датчик может выдать больше напряжения питания MCU.
    • 0
      чем больше зависимость мВ/А, тем точнее, но это связано с разрядностью АЦП. Если поставить внешний АЦП на 24 бит, то можно получить на порядок лучшие результаты, но это удорожание.

      Низкий ток это сколько? 200 мА для датчика в 100А это вполне себе маленький ток. Микроамперы им разумеется не измерить, придется брать датчик с меньшим пределом, например, на 5А. Там вроде выход 180 мВ/А если память не отбило.
  • 0
    А в чем радость переплачивать в два раза на digikey?
    • 0
      в два раза переплачивать чем где?
      лучше один раз купить рабочую деталь, чем 2 раза получить какой-нибудь перемаркированный хлам
      • 0
        В Китае вестимо. За левый хлам из китайцев прекрасно выбиваются деньги, а товар остается вам бесплатно. В остальных (удачных) случаях вы просто платите в 2 раза меньше.
        • 0
          1. Вы ждете товар около месяца, а не 5-9 дней
          2. Для диспута необходимо доказать, что товар перемаркирован и его параметры не соответствуют спецификации
          3. Для всех деталей из китая необходимо будет проводить входное тестирование на соответствие параметров
          можно еще несколько пунктов написать, но думаю и этих будет достаточно

          для любительских целей купить 1-2 ардуины и радоваться это подойдет, а вот для работы или разработки — все не так уж сказочно

          и да, в случае диспута Вам бесплатно остается не товар, а хлам, который и применить то можно будет с трудом
          это все так, из личного опыта :)
        • 0
          Одно дело, если вам привезли явно что-то не то. Скажем, вы заказывали танталовые конденсаторы 470uF, а привезли танталовые конденсаторы с *маркировкой* 470 (47uF, соответственно). Это видно сразу и можно поругаться.

          Но совсем другое дело, когда через месяц-полтора проданные устройства возвращаются из-за того, что эти самые танталы просто взрываются на платах (в процессе более длительных тестов пара таких кондёров взорвалась наконец-то и у инженеров на столе). Замена на кондёры *нормального* производителя и поставщика решает проблему.
        • 0
          Кроме перечисленного, посылку могут завернуть на таможне с заключением «коммерческая партия». Также интересно как вы будете проводить покупку на «алиэкспресс» по бухгалтерии.
        • 0
          В 2 раза переплачиваю? Это почему? Основная часть компонентов там дешевле китая. Но самое главное — там оригиналы. Я не хочу мучиться потом с поиском косяка, убить 2 недели чтобы понять, что компоненты хлам левый. Время оно деньги.

          Да и быстрее доставка + с юр. лицом никаких проблем по белой кассе.
          • 0
            Думал увидеть в рекомендуемом вами магазине конские цены, но на поверку оказалось что этой серии датчиков у них просто нет в продаже — хорошие рекомендации магазину в котором ни чего нет
            • +1
              Я вас огорчу — вы просто не умеете его готовить. Написать менеджеру по позиции не уж-то так долго? Цены там не конские, а что не на есть нормальные за оригинальные компоненты. Вроде как я не агетировал любителей китайчатины пересаживаться))) таких уже ничем не выличить к сожалению. Просто порекомендовал для тех, кто ценит свое время, оно порой стоит явно больше 8$.
  • 0
    Используем эти датчики на наших коптерах, хочу отметить что они очень чувствительны к помехам от ЭМП, точных цифр нет, но на датчиках ACS758LCB-100u, в зависимости от расположения силовых проводов, показания изменялись на 1-10А. Пока опытным путём не выяснил, очень нервировали такие показания на практически выключенном оборудовании, где расчётное потребление не должно было превышать 1А.
    • 0
      Датчики эти крайне чувствительный к наводкам, поэтому в реальном устройстве необходим ФНЧ на 150 кГц по Vout. Так же необходимо собирать данные за 20-30 замеров и потом усреднять данные, так картинка более реальная будет.
  • 0
    Есть и совсем бесконтактные датчики, например от Honeywell, их просто на шину крепят и всё, тоже на эфф. Холла.

    Недавно пришлось работать с датчиком тока фирмы АББ, под названием FOCS, работает с оптоволокном вокруг проводника с током, измеряет поляризацию света в энтом самом оптоволокне, в общем мощная штукарация, стоит 100к Евро…
    • 0
      Оптический ТТ? ставите куда или игрались просто?
      • 0
        Стоит на мощном выпрямителе 60 кА, после 5-ти лет работы датчик стал иметь собственное мнение об измерениях далекое от реальности, пришлось заняться ремонтом…
        • 0
          60кА, ОМГ… это что? Электролизная ванна на алюминиевом заводе? оО
          Что за диковинный источник, и не менее удивительный потребитель?
  • 0
    Правильно ли я понимаю?
    Датчик будет давать напряжение от 1/2 Vcc до какой то величины. Идеально до VCC, но данном случае 4.33В при 100А
    Встроенный АЦП мерит от 0 до VCC. Большинство контроллеров имеют 10-битный АЦП, который я могу использовать только в лучшем случае на половину своего диапазона.
    • +2
      Всегда можно с операционными усилителями поработать, чтобы нужный диапазон на АЦП развернуть.
    • 0
      Если ток только одной (положительной) полярности, то да, от 1/2 до VCC. Но зачем для таких случаев брать датчики, рассчитанные на двухполярный ток? Берите с индексом U и будет Вам диапазон от 0 до VCC :)
      • 0
        С индексом В более универсален, я их беру по 10-20 штук. Кто знает куда он в итоге встанет?)
        • 0
          С этим согласен, но это если брать их «куда-нить пригодятся», а не «вот сюда нужен датчик тока» :)
  • +1
    пиши лучше про сдр
    как в коде на C# сделать ам демодулятор и как это выглядит с точки зрения матана и почему так, а не этак
    и графики анимированные там надо

    датчики такие есть на 5а, показания гуляют от магнитных полей соседних проводов
    • 0
      К сожалению в С# практически не обладаю знаниями, пишу на верилоге) Да и С# вроде для ПЛИС можно использовать лишь при применение NIOS на SoC.
      • 0
        а зачем плис? есть же rtlsdr и приемник за 10 баксов, там уже написаны заготовки, но демодуляторов нет
        • 0
          это игрушка и не более. Все что обладает чуйкой 0.05 мкВ и может полосу от 2 до 60 МГц оцифровать и вывести в панораму стоит уже пару тысяч баксов. Да и передачи нету. Хотя на деле у меня самая главная задача — избавиться от компа и обработать все в ПЛИС, дальше звук в кодек, водопад в STM и на TFT панельку.
    • +1
      Эти датчики нужно юзать очень внимательно, заботясь о том, чтобы их другие магнитные поля не пересекали. Например 30-40мм по pcb до дросселя или трансформатора импульсного источника им хватает, чтобы они превратились в показометр.
      • +1
        Полностью согласен, про это упоминал. Чтобы трансы не фонили на них обычно поверх обмоток мотают 1 незамкнутый виток из фольги медной и на землю. Спасает от излучения.
        • 0
          Ага, только поверх всего магнитопровода и виток замкнутый должен быть. Незамкнутые на каркасе это электростатические экраны, а магнитный поверх всего магнитопровода. Хотя, честно сказать, в моём случае он не сильно спасал. У этих холлов очень хорошая чуйка. Пришлось цифровой фильтр лепить, чтобы как-то выкрутиться. Плату переделывать уже не вариант было.
  • 0
    Очень понравились мне эти датчики, особенно гальванической развязкой с измеряемой цепью. Но паять измеряющие лапы даже 40-ваттным паяльником — сущая мука.
  • 0
    Есть и совсем бесконтактные датчики, например от Honeywell.
    А подробнее можно?
    как у них с точностью?
    для коптеров.
    • 0
      Да, это так называемые датчики магнитного поля с линейным выходом, выдают сигнал пропорциональный магнитному потоку создаваемому током в проводнике. Они очень малогабаритные и крепятся жестко на проводник, так как при смещении датчика (удалении или приближении) будет и меняться поток в пространстве, чем ближе, тем надежнее.
      Вот например такой: SS59ET, Датчик Холла линейный -/+1000G в корпусе SOT23…

    • 0
      В плане точности спокойно рассчитывать можно на те же +-1%. В идеале можно и лучшую точность получить. Единственный минус у них — ценник.
    • 0
      Есть еще вроде датчики тока в которых микросхема SO-8 просто стоит над проводником на плате и меряет его ток по создаваемому магнитному полю. Но там точность плюс минус бесконечность.
      • 0
        Есть и такие, кстати если верить ДШ и отзывам достаточно точные, главное выдержать зазор от «жопы» корпуса до платы. Хотя в живую не работал с такими, что-то конкретное не скажу.
  • 0
    А можно для них окончательную принципиальную «рабочую» схему подключения увидеть?
    • 0
      Рабочую схему чего именно? Я дал корм для ума и пример описал как с ними работать. В следующей статье покажу как с переменкой. Готовое устройство уже под свои задачи сами)) Если будут вопросы подсказать готов.
      • 0
        Я не силен в аналоговой части. С питанием понятно, а вот с выходными фильтрами я не очень понял по обрывкам брошенных фраз.
        • 0
          В даташите есть резистор, который включен последовательно Vout и после него конденсатор, вот эта RC-цепочка и есть ФНЧ. Она отфильтровывает шумы выше 150 кГц. Посчитать номиналы RC эти можно в любом онлайн калькуляторе для расчета ФНЧ. В статье про переменку покажу как считать «руками».
          • 0
            Тут бы упомянуть, что если дальше сигнал пойдёт на оцифровку АЦП то частота среза фильтра не должна быть больше половины частоты семплирования АЦП, и этот простейший ФНЧ темболее на 150кГц часто оказывается просто бесполезным. В идеале, там должен быть фильтр высокого порядка а это уже как минимум схема с несколькими операционниками и тщательно подобранными компонентами.
            • 0
              Это актуально если АЦП какой-то внешний, если же МК или DSP, то гораздо проще и актуальнее использовать цифровую фильтрацию, чтобы не усложнять аналоговую часть схемы.
              • 0
                Это актуально с любым АЦП, если не фильтровать то 100% получишь стробоскопический эффект. И больше это касается именно встроенных АЦП, имеющих небольшое быстродействие. Причём стробоскопический эффект программно отфильтровать невозможно.
                Для программной обработки критически важно чтобы на вход АЦП не поступал сигнал с частотой выше половины частоты семплирования. Именно этим и должен заниматься аналоговый фильтр, а программная обработка будет делать всё остальное.
                • 0
                  У примитивных STM32 встроенный АЦП обладает 1 Мсемплов, ФНЧ 4-го порядка уже «очищает» от верхних гармоник настолько, что шум вносимый ими сопоставим с чувствительностью. Фильтр на ОУ сделает абсолютно тоже самое, что и LC или RC, не стоит забывать о его собственных шумах. Поэтому решение усложнения аналогового фильтра несколько сомнительно.
                  • 0
                    И сколько же там бит будет на на скорости 1MS/s около 6 наверно… Да и что-то у меня закрадываются сомнения в целесообразности ЦОС на высоких скоростях в данном случае. 1 мегасемпл, при частоте ядра 72Мгц всю работу надо сделать менее чем за 72 такта на один семпл. Да и надо ли расходовать всю мощь контроллера на такую простую задачу?
                    Хорошего ФНЧ 4-го порядка на пассивных компонентах не получится. Даже у фильтра второго порядка без операционника уже проблемы с согласованием входного и выходного импендансов.

Только зарегистрированные пользователи могут оставлять комментарии. Войдите, пожалуйста.