Arduino модуль ацп на ad7705
AD7705 and AD7706 are two 16-bit Sigma Delta ADCs. Equipped with on-chip digital filters and programmable gain front ends, these chips are ideal for low frequency multi-channel signal measurements. The main difference between AD7705 and AD7706 is that AD7705 has two fully differential input channels while AD7706 has three pseudo differential input channels.
This library I created interfaces with Arduino using the standard SPI bus. Most of the complexity is hidden behind the scene, and only a single parameter — the reference voltage — is needed to initialize the library since the reference voltage can vary depending on the particular implementation.
The following code snippet illustrates how to use this library. In this example, channel 1 of AD7706 is setup in bipolar mode with a unity gain. The common pin of the pseudo differential inputs (AIN1 to AIN3) is tied to the 2.5V voltage reference. This gives a measurement range of -2.5 V to +2.5 V. Pin SCK, CS, MOSI, MISO correspond to Arduino pin 13, 10, 11 and 12 respectively.
Here is the schematics I used for the sample program above:
For a supply voltage of 5V, the recommended voltage reference is AD780/REF192. I used two 1.25 V precision shunt voltage references ADR1581 to form a 2.5V reference instead since those are the components I have on hand.
The library also provides an overloaded init method to setup channel, gain and update rate:
The available gain settings are defined as:
And the update rate settings can be chosen from:
Other settings can be accessed via the setup register directly using the writeSetupRegister method defined below:
For more details, please refer to the datasheet and the code in the download section. AD7706 Test Setup
AD7705 – SPI модуль АЦП/ЦАП 16 бит
Аналого-цифровой преобразователь AD7705 используется при снятии показаний датчиков с аналоговым выходом.
Москва и МО: Самовывоз
Курьерская доставка
Россия и СНГ: СДЭК
Почта РФ / Достависта
Купить AD7705 — SPI модуль АЦП/ЦАП 16 бит в Москве или с доставкой по России и СНГ очень просто — до покупки осталось всего 3 клика!
- Добавьте товар в корзину
- Оформите заказ, выбрав наиболее удобный способ доставки и оплаты
- Дождитесь подтверждения от менеджеров или позвоните самостоятельно
- Оплатите заказ удобным способом и получите его в ближайшее время
Модуль АЦП/ЦАП 16 бит SPI AD7705 для Arduino
АЦП модуль на базе AD7705 можно использовать и для замены уже имеющегося в микроконтроллере. Его разрядность – 16 бит, что в 64 раза точнее встроенных в ATmega 10-битных (65536 значений против 1024).
Устройство имеет два независимых канала, каждый из которых оснащён усилителем с настраиваемым коэффициентом до 128, так что проблем со слабыми источниками не будет.
AD7705 может работать при напряжении как 3, так и 5 В. Максимальная потребляемая сила тока в режиме ожидания – 8 мкА, что не станет препятствием использованию модуля при батареечном или аккумуляторном питании.
Arduino.ru
Внешний АЦП
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Появилась необходимость более точнее считывать напряжение на аналоговом входе. Купил 2 внешних АЦП:
Пытался подключить по SPI:
т.к. максимальный уровень 65535 соответствует 2.5В, подключая на аналог #1 1.2В я должен получить что-то похожее на 65535/2, однако на монитор выводятся только нули.
Скетчи я испробовал разные, например:
Ничего не помогло.
Аналогичено предыдущему примеру, на мониторе одни нули.
Скетчи пробывал изменять как и для 16 бит, так и пытался использовать:
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
DATAOUT 11 // MOSI
DATAIN 12 // MISO
Если DATAOUT это выход АЦП (и вроде-бы АЦП у нас слейвом работает, а Ардуина мастером)
то MOSI это MacterOUT — SlaveIN для Ардуины.
Может я ошибаюсь, но мне кажется что MOSI MISO перепутаны.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Может я ошибаюсь, но мне кажется что MOSI MISO перепутаны.
Подсоеденил по следующей схеме:
Для конкретного разбора взял ad7705.
Иногда работает правильно, но потом появляются не понятные мне цифры, например, опорное 4.8V, на аналог (1) идет 2.5, кварц — 2MHz
Жму кнопку reset на плате, затем в пор идут первые 2-е адекватные цифры, потом пауза в секунды 2 и снова 2048:
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Поставьте кондёрчики на входы для проверки.
Хотя-бы 0.1 мкф, если сигнал не слишком быстро меняется.
Или подайте на входы 3.3 Вольта прямо с платы. И тогда смотрите что будет.
И ещё возможно вы читаете когда этого нельзя делать, там есть интересный выход DRDY (Data Ready).
Он выставляется в «0» при готовности данных.
Вешайте на прерывание (я бы поставил на FALLING) и читайте правильные данные.
Или в цикле через digitalRead.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Наверное железка не успевает отдавать данные. Кроме того, в даташите что-то говорится про Master clock frequency = 400 KHz. Вобщем, я бы, для начала, сделал паузу между считыванием в секунду-две, а потом уменьшал бы ее.
Вот эти ссылки, надеюсь, уже изучили?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Автор, разобраться таки получилось?
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Не так давно пытался запустить эту микросхему. Нужна была высокая скорость обработки АЦП. Не взлетело на 2 микросхемах. т.е. иногда данные шли, но непонятно какие. Грешу на кварц (ставил 4 МГц), так как частота не соответсвует даташиту.
В итоге заказал китайский аналаг распаенный на платке. Если кому интересно, когда придет отпишусь как заработало. Тока напомните.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Если кому интересно, заработало со следующим кодом. ВАЖНО используется пин dataReadyPin, который DRDY
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Сколько реально получилось выборок в сек. ? Там по даташиту вроде не менее 19,2кГц (38кГц. на усилении =1)
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Для одного канала, сколько укажете в UPDATE_RATE столько и будет. Чем выше частота, тем больше плавает значение
на 500 кГц у меня сложилось впечатление что 3 — 4 разряда плавают
Если переключать каналы, то частота опроса падает в 3 раза на 1 канал (т.е. при переключении канала он автоматически берет первые 3 значения на фильтр и только потом выдает результат). Т.е. если при частоте 50 кГц один канал опрашивается за 20 мС, то 2 канала опрашиваютя за (20 * 3) * 2 = 120 мС
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Автор, разобраться таки получилось?
Да, мне удалось запустить его (AD7705), уже и не помню как и что делал. Если надо, могу покапаться на диске и поискать скетчи.
- Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии
Я тоже сейчас заморочился с внешним ацп AD7707. Сразу повылезали проблемы: 1. Длительная смена канала. 2. При смене канала — почему-то данные были устаревшие. Решил я эту проблему вот таким скетчем:
И ура — все заработало без всяких millis и delay. Правда на одно измерение мне надо реально 300-450мс. Измерения очень стабильные.
Вопрос — можно ли как нибудь оптимизировать время чтения по SPI при выборе канала? Я сделал так, что в момент когда DRDY == LOW происходит считывание. В остальное время система просто ждет в цикле while. Правда если у меня в программе прилетит прерывание вероятно может это все испортить. Это я проверю чуть позже. Может есть какой нибудь более оптимальный вариант кода ?
AD7705 — 2-х канальный 16 битный сигма-дельта АЦП
Модуль AD7705 представляет собой 2-х канальный сигма- дельта 16 битный АЦП, гарантирующий отсутствие потери кодов. Выбранный входной сигнал поступает на усилитель с программируемым коэффициентом усиления, а с его выхода на аналоговый модулятор. Сигнал с выхода модулятора поступает на внутренний цифровой фильтр. Предыдущее значение фильтра может быть перенесено из внутреннего управляющего регистра, что позволяет регулировать порог отсечки фильтра и частоту обновления.
Модуль AD7705 работает от однополярного источника питания с напряжением от 4.75 В до 5.25 В, модуль содержит встроенный источник опорного напряжения LM285. AD7705 имеет два канала с полностью дифференциальными входами. Входы первого канала AN1+ AN1- и AN2+ AN2- для второго канала. При измерении однополярного напряжения входы AN1- и AN2- необходимо подключить к общему проводу (GND). При этом на входы AN1+ и AN2+ можно подавать напряжение только положительной полярности.
При использовании дифференциального входа, входы AN+ и AN- обеих каналов не должны соединяться с общим проводом (GND) при этом входное напряжение может быть в пределах от -2,5 до +2,5 В. При измерении однополярного напряжения входы AN- обеих каналов должны быть соединены с общим проводом (GND), а входное напряжение положительной полярности подается на входы AN+ и не должно превышать +5 В. Режим работы входов задается в функции setSetup(). При не соблюдении данных правил, АЦП может выйти из строя.
AD7705 работает с интерфейсом SPI. При помощи этого интерфейса могут быть выбраны коэффициент усиления, полярность сигнала и частота дискретизации. AD7705 содержит внутреннюю калибровку и системную градуировку для устранения ошибки усиления и смещения.
Основные параметры AD7705:
- AD7705: двухканальный АЦП с дифференциальными входами
- 16 битное разрешение
- Коэффициент нелинейности 0.003 %
- Программируемый коэффициент усиления от 1 до 128
- Трехпроводный последовательный SPI, QSPI, MICROWIRE и DSP совместимый интерфейс
- Однополярное питание от 4.75 В до 5.25 В
При использовании платформы Arduino можно легко запустить и настроить модуль AD7705. Библиотека https://github.com/liman324/AD7705.git позволяет запустить модуль, настроить коэффициент усиления, выбрать полярность входного сигнала и частоту дискретизации. Оба входа работают независимо друг от друга, каждому входу можно задать разные режимы работы.
При использовании библиотеки необходимо учитывать порядок применения функций записи параметров и чтения цифрового значения измеренного напряжения. Сначала необходимо задать параметры первого канала при помощи функции setSetup() , а затем считать цифровое измеренное значение входа CH1 при помощи функции read_unipolar() или read_bipolar() при использовании дифференциального входа. Аналогично записываются и считываются параметры для канала CH2.
Обновлено: 08.01.2022 в 18:11 | Просмотров: 4 848
AD7793 + термопара + термометр сопротивления (Arduino)
AD7793 — малошумящий 24-разрядный сигма-дельта АЦП с тремя дифференциальными аналоговыми входами. АЦП AD7793 предназначен для высокоточного измерения постоянного напряжения, может применяться для измерения напряжения термопар и других датчиков с выходным напряжением в несколько единиц или десятков мВ. Перед прочтением статьи рекомендую ознакомится с двумя первыми статьями про АЦП AD7793: AD7793 AD7793 + термопара (Arduino) В статье AD7793 + термопара (Arduino) был рассмотрен.
AD7793 + термопара (Arduino)
AD7793 — малошумящий 24-разрядный сигма-дельта АЦП с тремя дифференциальными аналоговыми входами. АЦП AD7793 предназначен для высокоточного измерения постоянного напряжения, может применяться для измерения напряжения термопар и других датчиков с выходным напряжением в несколько единиц или десятков мВ. Более подробно об АЦП AD7793 можно узнать из — http://rcl-radio.ru/?p=128932 На базе АЦП AD7793 можно сделать высокоточный измеритель температуры термопары. Для примера в измерителе.
AD7715 — 16bit АЦП (Arduino)
АЦП AD7715 — это сигма-дельта 16 битный АЦП, гарантирующий отсутствие потери кодов. Выбранный входной сигнал поступает на усилитель с программируемым коэффициентом усиления, а с его выхода- на аналоговый модулятор. Сигнал с выхода модулятора поступает на внутренний цифровой фильтр. Предыдущее значение фильтра может быть перенесено из внутреннего управляющего регистра, что позволяет регулировать порог отсечки фильтра и частоту обновления. AD7715 имеет дифференциальные аналоговый и опорный.
АЦП AD7793 (Arduino)
AD7793 — малошумящий 24-разрядный сигма-дельта АЦП с тремя дифференциальными аналоговыми входами. АЦП AD7793 предназначен для высокоточного измерения постоянного напряжения, может применяться для измерения напряжения термопар и других датчиков с выходным напряжением в несколько единиц или десятков мВ. Так имеет два выхода стабилизированного тока для питания термометров сопротивления. Входное напряжение АЦП ограничено напряжением опорного источника питания которое может иметь значения 1,25.
AD7714 (Arduino)
AD7714 представляет собой аналого-цифровой преобразователь для низкочастотных измерений. АЦП измеряет низкоуровневые сигналы непосредственно от датчиков и преобразует их в результат преобразования (цифровое слово). Максимальное разрешение АЦП 24 бит, точность преобразования 0,0015%. Имеется несколько режимов калибровки (корректировка нуля и диапазона измерений), внутренний усилитель сигнала с коэффициентом усиления от 1 до 128. АЦП AD7714 имeет три дифференциальных входа (AIN1_AIN2.
detector