Чтение с аналогового магнитометра с Raspberry Pi

Я пытаюсь прочитать аналоговый магнитометр с помощью Raspberry Pi Zero. Я никогда раньше не работал непосредственно с Pi; это всегда было через Arduino, подключенную к Raspberry Pi. Однако в ходе исследований я обнаружил, что Pi не очень хорошо работает с аналоговыми датчиками, поэтому мне нужно преобразовать аналоговый сигнал в цифровой, чтобы Pi мог его прочитать.

Помимо чтения через Arduino, Adafruit упомянул, что вы можете подключить свой аналоговый датчик к MCP3008, чтобы преобразовать его в цифровой вход. Очень грубая схема показана ниже:

схематический

смоделируйте эту схему - схема, созданная с помощью CircuitLab

Помимо выбора магнитометра, какие конструктивные соображения следует учитывать при работе с АЦП? Нужно ли что-то делать, чтобы обеспечить стабильность часов и линий DIN/DOUT? Целесообразно ли, чтобы AGND и DGND были подключены к одной и той же плоскости GND с Pi? Эта схема выглядит слишком упрощенной, так нужно ли что-то еще, чтобы она работала?

На всякий случай, если кто-то спросит, я использую магнитометр в рамках проекта по измерению поля в 10 тесла и записи данных с помощью Raspberry Pi.

MCP3008 — это просто расширение Raspberry Pi. Он имеет 10-битное разрешение, поэтому ваша шкала (округленная) составляет от 000 до 999. Если ваш магнитометр дает очень точные показания, вам следует рассмотреть 12- или 16-битный АЦП.
@Sparky256Sparky256 Спасибо за ответ. Придется искать другие АЦП. Честно говоря, движущим фактором является используемый магнитометр, потому что он должен работать в поле 10 тесла.
Десять Тесла! OMG, это мощное магнитное поле. LHC всего 8 тесла.
@Sparky256Sparky256 Ну, так сказала моя команда. Интересный момент. Тем не менее, магнитометры, которые мы использовали, перенасытились, поэтому нам пришлось их сбросить. Итак, отложив в сторону мои поиски нового магнитометра, учитывая эту общую схему аналогового датчика и АЦП, предполагая, что все они следуют одной и той же общей схеме со стороны цифровых проводов, будет ли здесь работать любой 12-16-битный АЦП? Что мне следует искать в АЦП, совместимом с Pi?
Я бы проверил 16-битный АЦП LTC1605. Используйте для этого LT1027 Vref. Этот АЦП предлагает вариант 16-битного вывода как 8- или 16-битного. В 8-битном режиме вы делаете 2 чтения, чтобы получить все 16 бит. Я уверен, что Arduino предлагает только 8-битный порт.

Ответы (1)

Это не специально для АЦП, а для смешивания аналоговых и цифровых схем в одном устройстве.

Цифровые схемы обычно довольно шумные, и вы хотите, чтобы этот шум был как можно дальше от аналоговой части вашей схемы, и часть этого заключается в разделении двух систем.

  • Во-первых, вы хотите убедиться, что у вас хорошая развязка на шинах питания, и, похоже, вы это сделали.

  • Во-вторых, вы хотите, чтобы цифровые сигналы (в вашем случае линии данных и особенно часы) были отделены от любых аналоговых сигналов, чтобы минимизировать перекрестные помехи.

  • Наконец, вы хотите разделить цифровой источник питания, если можете, и иметь одно соединение с шиной, если не можете. В вашем случае это будет означать соединение AGND и земли для вашего магнитометра вместе, а также развязку компонентов, а также наличие одного провода или дорожки, соединяющей цифровую землю, то же самое для питания.

В зависимости от того, насколько точным вы пытаетесь быть, в этом может не быть необходимости , но они помогают для более требовательных аналоговых схем.

Редактировать: что касается одного заземляющего соединения, представьте, что у вас есть аналоговая заземляющая плоскость и цифровая заземляющая плоскость, и ваша аналоговая плоскость соединяется с цифровой плоскостью в месте, где есть шум 0,1 В. Предполагая, что у вас хорошая развязка, это не должно быть проблемой, потому что на вашей шине Vcc будет такой же шум, и ваш аналоговый сигнал будет видеть только разницу между Gnd и Vcc, которая должна быть достаточно стабильной. Ваши аналоговые сигналы будут иметь шум 0,1 В относительно источника питания/цифровой земли, но, поскольку шум одинаков для всей аналоговой схемы, это не имеет значения.

Теперь давайте предположим, что ваш АЦП подключен к тому же месту с шумом 0,1 В, а ваш магнитометр подключен к месту с шумом 0,2 В. Опять же, источник питания для каждого чипа будет иметь одинаковый шум (из-за развязки), поэтому по отдельности чипы не будут видеть шум. Однако, когда вы подаете сигнал от магнитометра (который имеет 0,2 В шума поверх него) на АЦП (у которого земля имеет 0,1 В шума), АЦП увидит 0,1 В шума в сигнале магнитометра.

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

Спасибо за ваш ответ. Все сводится к тому, какой магнитометр мне нужно использовать, так как я все еще ищу его. DRV5033 - просто заполнитель, пока я не найду подходящий. Только аналоговые сигналы поступают на одну сторону АЦП в зависимости от корпуса и контактов, поэтому в идеале дорожки аналоговой и цифровой сторон не должны пересекаться, за исключением питания и земли. Когда вы сказали одну трассу для DGND и питания, все питается от 3,3 В, поэтому они будут использовать одну и ту же линию. Как я могу их разделить? Кроме того, DGND просто вернется к Pi, чтобы эффективно изолировать DGND и AGND?
Одна трасса означает соединение всех ваших аналоговых заземлений вместе и подключение к цифровому заземлению одним проводом. Так что не используйте только глобальную заземляющую пластину или используйте более одного провода. Идея состоит в том, чтобы убедиться, что все аналоговые цепи видят землю с одинаковым потенциалом, а потенциально высокие переходные токи с цифровой стороны могут привести к тому, что разные части земли будут находиться под разным напряжением (поскольку она не является идеально проводящей).
Спасибо за ваш ответ. Вы имеете в виду соединить AGND вместе с одной трассой, а не соединить эту трассу с DGND? То, как вы это сформулировали, кажется излишним, если мы просто подключим AGND к DGND одним проводом. Звучит не очень хорошо, если бы DGND был плоскостью земли, изолировавшей AGND через одну трассу; если бы DGND и AGND видели разные напряжения, не привело бы это к увеличению емкости между двумя GND?
Нет, соедините все узлы AGND вместе, как вам нравится, и запустите одну трассировку до DGND. Вам нужно, чтобы они были подключены, иначе ваш чип АЦП не будет доволен. Я отредактировал свой ответ с лучшим объяснением, почему.