Jump to content
freebits

Atmega16 - значения с АЦП "пляшут"

Recommended Posts

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

Что было сделано:

1. Программно: переделал постоянное измерение на измерение по таймеру.

2. Аппаратно: подключил блокировочные конденсаторы 100 нФ к опорному напряжению и входу АЦП, а также добавил фильтр питания АЦП, состоящий из катушки 10 мкГн и конденсатора 100 нФ (схема внизу). Питание АЦП завел из точки подачи 5-ти Вольт на плату, без подключения к этой линии цифровых потребителей. 

На текущий момент с переменным резистором все работает как надо - показания меняются в требуемом диапазоне, все как нужно.Даже уже сделал конвертацию в температуру и при 10 омах показывает 27°С. Единственное - с датчиком почему-то картина немного другая - при его подключении вместо переменного резистора, его сопротивление как-будто падает с 10 Ом до 0, хотя КЗ по этой линии нет - сопротивление измеряется. Странное поведение, но это уже другая история, буду разбираться, возможно другие датчики буду пробовать. Главное - теперь измерение регистрируется как мне нужно. 

Всем спасибо еще раз.

5c4d1cf484b62_.thumb.png.00aed5923f0dcd53524686642854156d.png

Share this post


Link to post
Share on other sites

Так в чем же была причина "пляшущих" показаний?  После чего заработало?

После  выполнения п.1?   Или после п.1+2? 

Вывод-то какой сделан? 

17 минут назад, freebits сказал:

Странное поведение

Повторю еще раз, что при однополярном питании 358 и околонулевом входном сигнале возможны чудеса.

Share this post


Link to post
Share on other sites
2 часа назад, freebits сказал:

Единственное - с датчиком почему-то картина немного другая - при его подключении вместо переменного резистора, его сопротивление как-будто падает с 10 Ом до 0,

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

1 час назад, _abk_ сказал:

Так в чем же была причина "пляшущих" показаний?  После чего заработало?

После  выполнения п.1?   Или после п.1+2? 

Вывод-то какой сделан? 

По отдельности не  проверял, запустил только после всех переделок, аппаратных и программных. Думаю, все в кипе было - п.1+2, хотя как мне кажется больше всего влияние оказывал способ замера, т.е. п.1. 

Edited by freebits

Share this post


Link to post
Share on other sites

Технология Maxim Integrated nanoPower: когда малый IQ имеет преимущества

При разработке устройств с батарейным питанием важно выбирать компоненты не просто с малым потреблением, но и с предельно малым током покоя. При этом следует обратить внимание на линейку nanoPower производства компании Maxim Integrated. В статье рассмотрено их применение на примере системы датчиков беспроводной оконной сигнализации.

Подробнее

То есть, все наши старания были напрасны? Мы так и не узнали, в чем было дело.

Вы можете залить прежнюю прошивку с непрерывным измерением ацп и посмотреть?  Ибо в модели она работает.

Share this post


Link to post
Share on other sites
44 минуты назад, _abk_ сказал:

То есть, все наши старания были напрасны? Мы так и не узнали, в чем было дело.

Вы можете залить прежнюю прошивку с непрерывным измерением ацп и посмотреть?  Ибо в модели она работает.

Да, был старый вариант проекта (как раз который вам отправлял), откомпилил его, прошил, и в общем... он теперь тоже нормально работает:wacko: Получается решили проблему все-таки аппаратные модификации, а не программные. Хмм, неожиданно, но интересно)) значит все-таки наличие фильтрованного питания и блокировочных конденсаторов весьма критично при аналого-цифровом преобразовании.

Edited by freebits

Share this post


Link to post
Share on other sites
                     

Платы Nucleo на базе STM32G0: чего можно добиться с помощью связки Nucleo и Arduino

Платы Nucleo и платы расширения X-NUCLEO от STMicroelectronics можно интегрировать в платформу Arduino с помощью библиотеки STM32duino. Связка плат Nucleo и платформы Arduino, и наличие готовых библиотек – представляет удобный инструмент для создания прототипов и конечных приложений в условиях ограниченного времени. Статья содержит пошаговые инструкции по установке библиотек и запуску примеров для Nucleo.

Подробнее...

Спасибо, что попробовали. 

3 часа назад, freebits сказал:

Хмм, неожиданно...

Ну вы, блин,  даете! После всего написанного!.. Наоборот, очень ожидаемо, говорил же вам - 95%

В общем, читайте  чаще книжку  Евстифеева. :)

Ну и конечно, хорошо, что заработало, желаю дальнейшего успеха! Доделаете, не забудьте похвалиться :)

Share this post


Link to post
Share on other sites
2 часа назад, _abk_ сказал:

Ну и конечно, хорошо, что заработало, желаю дальнейшего успеха! Доделаете, не забудьте похвалиться :)

Ок, спасибо:)

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Similar Content

    • By artos5
      Приветствую всех на этом форуме!
      Есть необходимость измерять сигнал при помощи данного АЦП. С помощью этого АЦП можно измерять 4 аналоговых не дифференциальных сигнала . Схема следующая:
      Schematic_Temp_opto_sens_V2_20190817124112.pdf
      Картинками с более низким разрешением:
      библиотеку за основу взял эту:
      https://github.com/nsaspook/nidaq700/blob/master/supermoon/example/ADS1220.c
      Путем незначительного допиливания, получилась такая библиотека:
       
      Поправил только эти функции:
      void ADS1220SendByte(unsigned char Byte) { unsigned char Result = 0x01, i=0, flg=0; MOSI_LO; Delay_us(1); for(i=0;i<8;i++) { SCK_LO; //ADC_CLK=0 Delay_us(4); if (flg) MOSI_LO; Delay_us(1); SCK_HI; //ADC_CLK=1 Delay_us(1); if (Byte&Result){ MOSI_HI; flg=1; } else MOSI_LO; Delay_us(4); Result<<=1; } SCK_LO; //ADC_CLK=0 } unsigned char ADS1220ReceiveByte(void) { unsigned char Result = 0, i=0; for(i=0;i<8;i++) { Result<<=1; SCK_LO; //ADC_CLK=0 Delay_us(5); //Delay_us(5); SCK_HI; //ADC_CLK=1 Delay_us(3); if (MISO) Result++; Delay_us(2); } SCK_LO; //ADC_CLK=0 return Result; } И добавил эту функцию:
      void ADS1220Config_MUX_GAIN(uint8_t mux, uint8_t gain) { unsigned Temp; ADS1220ReadRegister(ADS1220_0_REGISTER, 0x01, &Temp); // clear prev value; Temp &= 0x0f; Temp |= gain; Temp |= mux; // write the register value containing the new value back to the ADS ADS1220WriteRegister(ADS1220_0_REGISTER, 0x01, &Temp); ADS1220ReadRegister(ADS1220_1_REGISTER, 0x01, &Temp); // clear prev DataRate code; Temp &= 0x1f; Temp |= (ADS1220_DR_600 + ADS1220_CC); // Set default start mode to 600sps and continuous conversions // write the register value containing the new value back to the ADS ADS1220WriteRegister(ADS1220_1_REGISTER, 0x01, &Temp); } ADS1220.h :
      в результате получаю такую осциллограмму :

      То есть , постоянно считывается 0.
      А вот регистры конфигурации:
      Задаю номер входа MUX и усиление :
       

       
      Читаю данные так:
      ADS1220Config_MUX_GAIN(ADS1220_MUX_0_G, ADS1220_GAIN_1); HAL_Delay(10); temp_[0] = ADS1220ReadData(); Это для 0 канала. 
      Пробовал и так:
      ADS1220SetChannel(ADS1220_MUX_0_G); ADS1220SetGain(ADS1220_GAIN_1); temp_[0] = ADS1220ReadData(); Результат аналогичный. Кто что подскажет? Может кто заметит какой косяк в коде? Уже голова дымит ..
    • By pryanic
      Доброго времени суток. Понадобилось разобраться с АЦП.  Основной материал использовал Евстифеева (микроконтроллеры семейства мега) и учебный курс Di-Halt.
      На первый раз задача простая - обработать напряжение с переменного резистора и послать по UART в терминал. С терминалом уже кое-что делал, так что тут вряд ли косяк есть.
      Кратко опишу программу: каждую секунду в обработчике прерывания таймера (не совсем точно, прерывание по переполнению Т0) запускаю преобразование АЦП установкой в 1 бита ADSC. 
      В обработчике прерывания АЦП читаю байт ADCH (выравнивание по левому краю ADLAR=1) и шлю по уарт. Но в терминал приходят одни FF независимо от положения движка потенциометра (подключен к PC1 средним контактом, крайними на землю и AVCC)
       
       
      ADC_test.zip
    • By dav1977
      Кто-нибудь запускал скоростные  АЦП  AD7606(последовательного приближения)
       в последовательном режиме считывания данных ?,
      из 4 шт одна заработала, остальные на выводе последовательного вывода DOUT ничего не выдают постоянно 0.
      пробовал переключаться с внутренним опорным источником(выдает 2.49), и с внешним без разницы.
      Может у них есть какая то очередность включения?
       

    • By dommax
      Распродаю остатки радиодеталей.
      Для удобного поиска написал WEB страничку http://detali.syremo.com.ua/
      Количество может не совпадать. Пишите - отвечу. Договоримся...
      Отправляю только по Украине. Перед отправкой смогу сделать фото.
    • By maxssau
      День добрый!
      Сегодня хотелось бы раcсказать о своей разработке - АЦП AD-01 на преобразователе от Cirrus Logic CS5381.
      Целью данной разработки было получение близких к даташитным параметрам характеристики АЦП, при этом плату имеющeю не высокую стоимость и универсальность.
      На данный момент это уже третья версия платы. Первая версия была сделана ЛУТом, для отработки схемотехники АЦП. Далее последовала вторая версия на заводских платах:

      Схемотехника была взята полностью из даташитов. Стандартное включение CS5381, стабилизаторы питания в цифровой части AMS1117-3.3, в аналоговой из серии TPS7A.
      Схемотехника входного буфера взята из даташита на OPA1632.
      После опробования данной платы, были выявлены некоторые недочеты и разработана третья версия версия:

       
      Входной буфер сделан для 2х вариантов: с конденсатором и без, для чего на ПП предусмотрены соответствующие площадки.

      Топология такого буфера позволяет без переделок проводить замеры/запись как балансного сигнала так и не балансного, достаточно вывод 3 посадить на землю (2). Это достаточно удобно, для различных типов сигнала достаточно иметь 2 пары кабелей с различной распайкой.
      Питание аналоговой части сделано на малошумящих стабилизатора TPS7A4901 и TPS7A3001.

      Питание цифровой части на 2х AMS1117-3.3В, схему нет смысла приводить, она из даташита на стабилизаторы.
      На плате всего 1 генератор на 512fs (24.576 Мгц). Такая частота выбрана не случайно, для работы SPDIF передатчика необходимо иметь частоту мастерклока не ниже 256fs для работы на частоте 96к, я использую передатчик на WM8805 (о этой плате чуть ниже). В качестве интерфейса на компьютере я использую ЗК E-MU 0404 PCIe.
      Полная схема преобразователя:

      На плате присутствует место под DIP переключатель, для настройки режимов работы АЦП. Выход АЦП - I2S, уровни 3.3В.
      Для соединения с компьютером была разработана плата SPDIF интерфейса SI-01.

      Схему приводить особого смысла нет, она повторяет даташитную для WM8805 включенным в HW режиме. В этом режиме есть определенные ограничения, связанные с работой PLL, поэтому максимальная частота приёма/передачи ограничена в 96к. WM8805 позволяет работать как в Master режиме, так и в Slave, что очень удобно. Выбор режима осуществляется установкой джампера. Так же на плате присутствуют джамперы выбора питания, от ЦАП или АЦП. В качестве выходного буфера для передатчика используется 1G125.
       
      Шумовая полка:

      В качестве источника питания пара трансформаторов с стабилизаторами 317/337, даже имея ёмкости в 10000 мкФ полностью подавть 50Гц и гармоники пока не удалось, возможно проблема в корпусе и компоновке.
      Замер моего ЦАПа на 4490, к сожалению не обошлось без земляных петель, поэтому присутствует шум на уровне -125дБ и ниже.

       
      Есть определенные особенности применения ИМС CS5381, скупо описанные в App Notes, позволяющие реализовать данную ИМС в двойном моно и теоретическим уровнем THD+N в -123дБ, что позволит производить оценку и замеры искажений у большинства современных ИМС ЦАП без режекторов.
      В проекте плата с 2мя генераторам на сетки частот 44.1 кГц и 48 кГц, АЦП включенным в моно режимах и DSP процессором ADAU1452.
      Подробную инструкцию с описание на текущую схемы и платы прикладываю.
      инструкция.pdf
  • Сообщения

    • Так и собирался делать. Диод д603 подойдёт?
    • Несложная схема индикатора поля в которой можно применить один BAS70-04, вместо двух 1N5711. Для экспериментов с микроволновкой вполне достаточно пассивного варианта исполнения. https://www.qsl.net/n9zia/wireless/pics/fs_meter.png
    • Примерно так же, как вы сделали эти тестовые записи. Регулятор громкости - в максимальное положение. Вход замкнут. И напишите, какой звуковой картой вы измеряете. Выход у этого темброблока один? Или есть отдельный на наушники?
    • Для чего такой вопрос Витала? лучше стесняйся и читай литературу(Но чювствую это лишнее,так ведь!?) Я же не оставляю включенным для измерения его дальности работы,тщательно не подогнав его под свою аппаратуру!! -и стараюсь именно туда где УКВ диапазон,либо самое начало ФМ 64.5 - 65.0мГц(я знаю что точного опр.нет!) и все же,в Киеве тут тишина! но вообще предпочитаю быстро выйти на УКВ,и приступаю к проверке и подгонке!  Если на частоты по выше,то на 320мГц и 400мГц,но там чаще мешают! Сейчас как раз буду приступать к сборке (Колибри 400мГц)
    • Напомнило. У знакомой есть небольшое радио, от аккумулторра телефонного работает. В него втыкается флешка, с неё записанную музыку читает. Так вот, перестало опознавать флешку. Вставишь, оно несколько секунд подумает, напишет-= реад (ну типа- реадинг), и переключается на радио. Вставлял её флешку себе в системник, открывается, музыку читает. Вставлял свою флешку ей, музыку читает. А вот её флешку на её радио нехочет. Может там формат записи расформатировался?
×
×
  • Create New...