Jump to content
gc986

Одновременная Работа С Несколькими Каналами Adc

Recommended Posts

Есть чип NXP LPC1788. Есть пример программы где в начале происходит инициализация второго канала, далее в цикле происходит обращение к функции считывания (ADC) данных с порта, но при считывании номер канала не указывается(по умолчанию информация забирается из инициализированного канала), отсюда вопрос - можно ли одновременно работать с несколькими каналами или каждый раз придётся перенастраивать систему на новый канал?

(хочется одновременно работать со всеми)

Share this post


Link to post
Share on other sites

Читайте документацию, сколько в контроллере АЦП и на сколько каналов они мультиплексируются. Каждый АЦП может одновременно работать только с одним входом, остальные каналы "оторваны" от него.

Share this post


Link to post
Share on other sites

при считывании номер канала не указывается(по умолчанию информация забирается из инициализированного канала), отсюда вопрос

Какие могут быть вопросы, после своего же ответа?

Share this post


Link to post
Share on other sites

Особенности схемотехники и трассировки печатных плат для STM32WB55

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

Читать статью

при считывании номер канала не указывается(по умолчанию информация забирается из инициализированного канала), отсюда вопрос

Какие могут быть вопросы, после своего же ответа?

Но это же не круто! Я реализовал приложение в котором циклично перебирается два канала, каждый раз происходит перенастройка на новый канал, в результате производительность падает. Это нормальная практика или я что-то не правильно делаю?

Share this post


Link to post
Share on other sites

Join the conversation

You are posting as a guest. 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 maxssau
      Продам адаптеры USB-I2S. 

       
      Возможности:
       
      стерео ввод/вывод PCM 16-32 бита, 44.1-384 кГц. Ввода DSD нет, как и драйверов для ввода DSD.
      вывод DSD в режиме DoP 64-128, в режиме Native 64-256. Native доступен в Linux без "хитрых" драйверов.
      Тактирование от платы ЦАП/АЦП, частоты 512 fs (22.5792/24.576 МГц). Теоретически возможно и 1024fs(скорости 768кГц и DSD512 Native), но это не опробовано.
      Гальваническая изоляция на Si8662/Si8640.
      Питание возможно как Self так и Bus Powered. В режиме Bus Powered необходимо самостоятельно позаботиться о мастерклоке, т.к. возможны сильные глюки при выключенном генераторе мастерклока.
       
      Тема: 
      срок изготовления 3-5 недель (сильно зависит от поставок процессоров).
      На данный момент полностью реализован интерфейс Legacy. Для отладки Native режима пока нет платы ЦАП, в процессе разработки, будет не раньше осени.
      Цена 6000 + пересылка (в среднем 250 р.).
    • By pryanic
      Доброго времени суток. Понадобилось разобраться с АЦП.  Основной материал использовал Евстифеева (микроконтроллеры семейства мега) и учебный курс Di-Halt.
      На первый раз задача простая - обработать напряжение с переменного резистора и послать по UART в терминал. С терминалом уже кое-что делал, так что тут вряд ли косяк есть.
      Кратко опишу программу: каждую секунду в обработчике прерывания таймера (не совсем точно, прерывание по переполнению Т0) запускаю преобразование АЦП установкой в 1 бита ADSC. 
      В обработчике прерывания АЦП читаю байт ADCH (выравнивание по левому краю ADLAR=1) и шлю по уарт. Но в терминал приходят одни FF независимо от положения движка потенциометра (подключен к PC1 средним контактом, крайними на землю и AVCC)
       
       
      ADC_test.zip
    • By Kirill Lubinets
      Дано: отладочная плата STM32F303VC, индукционный датчик.

      Доброго времени суток, суть моего проекта в  детектировании вибраций(ударов) при помощи аналогового датчика.
      Код отслеживания удара написан, но я не пойму то ли я ошибся с алгоритмом его работы то ли не правильно сконфигурировал отладочную плату.

      Информация по датчику.
      Индукционный датчик удара, шок сенсор, Arduino может использоваться в проектах на микроконтроллерах (в т.ч. Arduino), в которых нужно следить за уровнем вибрации или подобных механических возмущений. Принцип действия датчика основан на электромагнитной индукции. Движущийся стальной, ферритовый или магнитный сердечник относительно катушки создает в катушке ЭДС, подходящую по амплитуде ударного воздействия на систему. Чувствительный элемент датчика установлен в прозрачный пластиковый параллелепипед для защиты от действий внешней среды.
      Для использования датчика нужно подключить его к Arduino контроллеру или другому микропроцессорному управляющему устройству, подать питание, создать программу для работы с датчиком или использовать готовое решение. На корпусе датчика есть два отверстия, с помощью которых можно жестко закрепить датчик на плоской поверхности. В состоянии покоя напряжение на выходе из датчика около 5 В, при возмущении напряжение на датчике падает пропорционально силе возмущения.
      Индукционный датчик удара, шок сенсор, Arduino имеет один 3-контактный разъем для подключения к контроллеру и питания:
      контакт обозначенный «–» – общий контакт;
      средний контакт – напряжение питания;
      контакт S – аналоговый выходной сигнал датчика.
      Датчик может питаться как от Arduino контроллера (другого микропроцессорного управляющего устройства), так и от внешнего источника питания. Напряжение питания 3,3 – 5 вольт постоянного тока.
      Характеристики:
      принцип действия: индукционный;
      выходной сигнал: аналоговый;
      напряжение питания: 3,3 – 5 вольт постоянного тока;
      размеры: 30 х 18 х 11;
      вес: 2 г.
      Shock.7z
    • By Vladimir1960
      Помогите передать данные ADC по SMS.
      UART.zip
  • Сообщения

    • @slavake На 73 странице есть подробный материал по Вашей схеме. В таком варианте как Ваш, стрелка не становится на ноль. Надо добавить резистор. И в измерительную обмотку резистор 4 Ом. Тогда шкала получается более - менее равномерной. А так, в целом, схема проще не придумаешь! Хороший пробник. Сигнал приближенный к синусу.
    • В сплане я смотрел, но там нет информации какие резисторы чип, а какие выводные. Что за тип чип резисторов. В китах двухэтажника Nataly продавались готовые платы с уже запаяными чип резисторами, но вариант с форсированным питание, только голые платы. По фотографиам Вадима смотреть если только ....
    • Ну так смотря, где находится объект, может это новый микрорайон в пустом поле, автор же не уточнил. Можно шуметь и ночью. Да и рассуждения про ТБ тут излишние. Судя по тому, что строитель самостоятельно занимается обеспечением освещения своего рабочего места, а электрик, вместо того, чтобы вовремя менять лампочки, советует ему, как лучше переделать купленную за собственные деньги лампу, на этой стройке на ТБ с размаху клали (или ложили - не знаю как правильно).
    • Просто показать, собрал в симуляторе. V1,V2 имитируют обмотки трансформатора, на одной 23 вольта амплитуда, на другой 22, сопротивление я указал 0,5 Ом.(хз какое оно там) Получили  пульсации 50Гц на +, на нижнем графике. На среднем графике ток V1 и V2, при увеличении нагрузки ток через V2 тоже появится. На верхнем графике ток "по массе" между трансформатором и конденсаторами. При одинаковом напряжении на обмотках, ток отсутствует. Хотя в процессе работы усилителя он конечно будет кратковременно появляться из за разности потребляемого тока в плечах.
    • Дежурка не обдувается вентилятором, когда компьютер выключен, а потребление от неё всё равно может быть заметным (материнка, мышь, клавиатура, сетевая карта). Плюс к тому, ещё и компоновка иногда такая неудачная, что и с вентилятором там нифига не охлаждается. Самое смачное -  некоторые любят поставить конденсатор фильтра в непродуваемом месте, вплотную к радиатору или в щель между трансформатором дежурки и ТГР. Поэтому на пожилых БП надо всю дежурку сразу проверять поголовно, даже если она, вроде бы, работает.
×
×
  • Create New...