Большинство микроконтроллеров (ОК) имеют аналого-цифровой преобразователь (АЦП) в составе своего периферийного устройства, что является феноменальным, поскольку объединяет два компонента в один пакет. Эти АЦП обычно также отображаются в регистре, что позволяет быстро и легко извлекать данные.
Несмотря на тесную интеграцию, вы все равно можете приобрести внешние АЦП. Я вижу несколько случаев для них:
- АЦП должен быть изолирован от ОК.
- Битовая глубина отсчетов АЦП должна быть выше, чем АЦП ОК.
- Определяемое напряжение далеко от микроконтроллера, и длинные аналоговые линии не приемлемы.
- Напряжение на ощупь в суровых условиях, не подходит для ОК.
- Внешний АЦП сэмплирует намного быстрее, чем АЦП ОК.
- Опорное напряжение для некоторого образца отличается, чем для других, требующих нескольких штифтов Vref (и, таким образом, несколько внешних АЦП).
- Нынешнему ОК не хватает каналов АЦП, и стоимость установки нового ОК непомерно высока.
- Внешний АЦП потребляет меньше энергии, чем АЦП ОК (мне нужен пример, чтобы в это поверить).
- Каналы АЦП должны выбираться одновременно (редкий сценарий).
- Стоимость программно-аппаратного обеспечения во время производства превышает стоимость более дорогой части АЦП (маловероятно).
- Печатная плата имеет ограниченное пространство, и никакой UC не подходит (маловероятно).
Это все хорошо, но то, что мне кажется странным, это то, что внешние АЦП, как правило, немного дороже своих аналогов в УК, но обеспечивают эквивалентную функциональность. Например, вы можете приобрести деталь EFM32Z с 12-битным АЦП 1 Мбит / с (с внутренней ссылкой) примерно за 1 доллар США или купить эквивалентный 12-битный АЦП 200 кбит / с примерно за 3,50 доллара США (те же скорости (ish), относительно те же цифры мощности и т. Д.) И выполнить ту же задачу (извлечение данных АЦП).
Тогда возникает вопрос: есть ли веские причины, по которым инженер предпочел бы внешний АЦП, а не АЦП ОК, когда последний может выполнять те же функции?
источник
Ответы:
Если внутренний АЦП вашего микроконтроллера выполняет ту работу, которая вам нужна, то нет, внешние АЦП не нужны. Но тогда это не то, на кого они нацелены.
Вы рассмотрели большинство причин внешнего АЦП, но есть еще несколько, и, на мой взгляд, они являются одними из наиболее важных:
Для пункта 3, например, возьмите Raspberry Pi. У него вообще нет доступного АЦП, вы должны добавить внешний, чтобы вообще выполнять аналоговую работу.
источник
Еще несколько причин отдать предпочтение внешнему АЦП:
Многие внешние компоненты АЦП имеют дифференциальные входы, в то время как встроенные в микроконтроллеры преобразователи часто этого не делают. В случаях, когда на входах много синфазного шума, это может быть очень важно.
Многие внешние части АЦП включают каскад усилителя перед самим преобразователем, что позволяет преобразователю непосредственно измерять сигнал с высоким импедансом. На многих микроконтроллерах выборка входного сигнала может нарушить его. В зависимости от характера входного сигнала это может значительно увеличить время сбора данных, необходимое для проведения точных измерений.
Даже если внутренний АЦП имеет ширину в двенадцать битов, это, как правило, не означает, что он принимает показания с точностью до одной части в 4096 году. Типичный внешний АЦП часто будет иметь лучшие характеристики, чем внутренний, даже если оба имеют одинаковую объявленную битовую глубину.
Интегрировать АЦП в микроконтроллер очень просто. Интегрировать хороший АЦП гораздо сложнее. Угадай, что более распространено.
источник
Еще одна причина существования некоторых внешних АЦП: они существовали намного дольше, чем микро-с внутренними АЦП, и встроены во многие продукты. Возможно, на 20 или 30 лет дольше. (Вероятно, это не относится к связанной части SOIC, хотя это может быть модернизированный вариант классической детали)
Там, где АЦП не имеет звездного разрешения, точности или скорости, но требует более высокой цены, это может быть причиной.
Даже для новых разработок может быть предпочтительнее повторно использовать блоки, которые работают хорошо, а не заново проектировать вокруг новой детали (даже если полученная интеграция снижает стоимость спецификации). Этот реинжиниринг может быть дорогим; процесс испытаний и одобрения регулирующих органов, тем более.
Теперь, если вы начинаете с нуля, и у выбранного вами микроконтроллера достаточно каналов АЦП, которые соответствуют вашим требованиям, ни одно из вышеперечисленного не применимо.
источник
Я понимаю, что это очень старый вопрос, но этот вопрос мы обсуждаем довольно часто.
Вы правы, было бы необычно выбирать внешний АЦП, если бы внешняя версия была точно функционально эквивалентной. Однако, по моему опыту, у недорогих микро обычно есть паршивые АЦП с температурным дрейфом, низким количеством битов (10 - 12 бит) и шумом от VCC (+/- 20 мВ в некоторых случаях) ... хотя обратное может быть правдой. .. вы можете улучшить отношение S / N, если у вас есть избыточный сэмпл и присутствует шум. В нашей деятельности по разработке продуктов довольно редко основывать наш выбор MCU на качестве АЦП, присутствующего внутри. Обычно это больше о наборе инструментов, стоимости, существующем встроенном программном обеспечении и т. Д. Внутренние АЦП обычно ограничены некритическими задачами, такими как считывание напряжения батареи.
С различными микро-устройствами также могут быть проблемы с общими таймерами, которые необходимо монополизировать для быстрого времени выборки, но мешать другим вещам в MCU (программные последовательные порты, ISR и т. Д.), Когда они монополизированы для АЦП.
Кроме того, что такое VREF? Если вы используете VCC в качестве эталона в прошивке, даже если вы калибруете по «настоящему» VCC, это значение может довольно сильно колебаться во время работы. Если у вас на борту имеется сильнотоковое устройство (радио, Wi-Fi, MCU и т. Д.) С большим переходным током, VCC может упасть до 4,8 вольт во время передачи, и если ваша выборка происходит во время этого окна, и вы наивно конвертируете 0-1023 АЦП считывает значение напряжения с помощью ADC_VAL / 1023 * 5.0 - вы потеряли колоссальные 200 мВ точности. Или, если у вас разные режимы питания (USB, Wall wart, battery) - VCC на MCU может измениться (особенно с USB). Внешние АЦП (даже с одинаковым количеством битов) могут обеспечить надежное внутреннее vref в условиях колебания VCC.
Разрешение довольно важно. Я предполагаю, что есть какое-то использование (в реальном мире) для разрешения 10-12 бит, но для любого реального применения (детектирование газа, акустические измерения, измерение акселерометра, точное измерение температуры и т. Д.) Обычно используется 16 бит минимальное разрешение для достижения адекватного соотношения сигнал / шум и разрешения. Даже действительно хороший 32-битный MCU, такой как SAMD от Atmel, ограничен 12-битными внутренними АЦП.
Дрожание тактовых импульсов также является проблемой, и существует также некоторая внутренняя неточность, когда другие 8-битные микросхемы требуются для считывания 12-битной ширины, и для манипулирования 12-битным значением требуются как минимум 2 тактовых цикла, что может быть неверно с внешним АЦП (так как они могут иметь внутренние генераторы).
Есть также моменты, когда важна физическая близость к вашему датчику и изоляция от MCU. Некоторые очень чувствительные преобразователи требуют собственной кондиционированной мощности, изолированных заземляющих плоскостей и чрезвычайно чувствительных усилителей с трансимпедансными прерывателями с пассивом 0,01%.
Иногда есть веские причины для использования внутренних АЦП. DMA - одна из причин ... частота дискретизации - другая. Легкость передискретизации - это другое. Сопряжение с внешними АЦП с высокими скоростями передачи данных может поглотить много ценных мультиплексированных выводов ввода / вывода и создать более сложную конструкцию. Кроме того, многие из используемых нами АЦП основаны на I2C, поэтому частота дискретизации очень ограничена скоростью шины I2C. Даже при скорости 1 Мбит / с 16-битное чтение занимает мучительно много времени.
источник