Перейти к содержанию
    

Поиск

Показаны результаты для тегов 'adc'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип контента


Форумы

  • Сайт и форум
    • Новости и обсуждения сайта и форума
    • Другие известные форумы и сайты по электронике
    • В помощь начинающему
    • International Forum
    • Образование в области электроники
    • Обучающие видео-материалы и обмен опытом
  • Cистемный уровень проектирования
    • Вопросы системного уровня проектирования
    • Математика и Физика
    • Операционные системы
    • Документация
    • Системы CAD/CAM/CAE/PLM
    • Разработка цифровых, аналоговых, аналого-цифровых ИС
    • Электробезопасность и ЭМС
    • Управление проектами
    • Нейронные сети и машинное обучение (NN/ML)
  • Программируемая логика ПЛИС (FPGA,CPLD, PLD)
    • Среды разработки - обсуждаем САПРы
    • Работаем с ПЛИС, области применения, выбор
    • Языки проектирования на ПЛИС (FPGA)
    • Системы на ПЛИС - System on a Programmable Chip (SoPC)
    • Методы и средства верификации ПЛИС/ASIC
  • Цифровая обработка сигналов - ЦОС (DSP)
    • Сигнальные процессоры и их программирование - DSP
    • Алгоритмы ЦОС (DSP)
  • Микроконтроллеры (MCU)
    • Cредства разработки для МК
    • ARM
    • RISC-V
    • AVR
    • MSP430
    • Все остальные микроконтроллеры
    • Отладочные платы
  • Печатные платы (PCB)
    • Разрабатываем ПП в САПР - PCB development
    • Работаем с трассировкой
    • Изготовление ПП - PCB manufacturing
  • Сборка РЭУ
    • Пайка и монтаж
    • Корпуса
    • Вопросы надежности и испытаний
  • Аналоговая и цифровая техника, прикладная электроника
    • Вопросы аналоговой техники
    • Цифровые схемы, высокоскоростные ЦС
    • RF & Microwave Design
    • Метрология, датчики, измерительная техника
    • АВТО электроника
    • Умный дом
    • 3D печать
    • Робототехника
    • Ремонт и отладка
  • Силовая электроника - Power Electronics
    • Силовая Преобразовательная Техника
    • Обратная Связь, Стабилизация, Регулирование, Компенсация
    • Первичные и Вторичные Химические Источники Питания
    • Высоковольтные Устройства - High-Voltage
    • Электрические машины, Электропривод и Управление
    • Индукционный Нагрев - Induction Heating
    • Системы Охлаждения, Тепловой Расчет – Cooling Systems
    • Моделирование и Анализ Силовых Устройств – Power Supply Simulation
    • Компоненты Силовой Электроники - Parts for Power Supply Design
  • Интерфейсы
    • Форумы по интерфейсам
  • Поставщики компонентов для электроники
    • Поставщики всего остального
    • Компоненты
  • Майнеры криптовалют и их разработка, BitCoin, LightCoin, Dash, Zcash, Эфир
    • Обсуждение Майнеров, их поставки и производства
  • Дополнительные разделы - Additional sections
    • Встречи и поздравления
    • Ищу работу
    • Предлагаю работу
    • Куплю
    • Продам
    • Объявления пользователей
    • Общение заказчиков и потребителей электронных разработок

Поиск результатов в...

Поиск контента, содержащего...


Дата создания

  • Начало

    Конец


Дата обновления

  • Начало

    Конец


Фильтр по количеству...

Регистрация

  • Начало

    Конец


Группа


AIM


MSN


Сайт


ICQ


Yahoo


Jabber


Skype


Город


Код проверки


skype


Facebook


Vkontakte


LinkedIn


Twitter


G+


Одноклассники


Звание

Найдено: 0 результатов

  1. Поиск ерраты на GD32F103 ни к чему не привел. Может, кто-то знает что по этому поводу?
  2. Atmega328 ADC/ИОН/Aref/R32K

    день добрый, уважаемые колдуны! :о) есть некоторое непонимание... URL по ссылке говориться про > имеется встроенный резистор 32 кОм, подключенный к выводу AREF упоминание про даный резистор так-же встречал в сети неск. раз в частности, по пункту > 23.5.2 ADC Voltage Reference упоминания о сопротивлении нет возможно не прав, ткните носом, заранее благодарен, спасибо :о)
  3. Здравствуйте. Использую AD7799 для считывания напряжения с тензометрического датчика (взвешивает до 5 кг). Чипом АЦП управляет STM32. AD7799 установлен на печатной плате собственной разработки (ссылка на тех. спецификацию: https://www.analog.com/media/en/technical-documentation/data-sheets/ad7798_7799.pdf) . В процессе работы упёрся в проблему - никак не могу считать корректное значение с аналогового входа АЦП - приложение усилия на тензодатчик никак не влияет на считываемое значение. Вместо этого, якобы считывается какое-то +- постоянное значение, на которое я при этом не могу повлиять. SPI интерфейс работает исправно - данные успешно отправляются и считываются с/на АЦП, что подтверждается как логическим анализатором, так и выводом данных в компьютер посредством последовательного порта. Если мультиметром замерить напряжение между выходами тензодатчика, и надавить на него пальцем, видно как напряжение меняется на несколько милливольт - из чего я делаю вывод, что тензодатчик исправен. Система ведёт себя не так как я ожидаю, особенно это проявляется при изменении параметра GAIN. Как я подхожу к выбору коэффициента усиления входного сигнала (GAIN): заявленная чувствительность тензодатчика 2 мВ/В, что при питании 5 В даёт +-10 мВ диапазона в каждую сторону (сжатие и растяжение), а в сумме целых 20 мВ диапазона для входного сигнала в АЦП. В соответствии с таблицей №1 (стр. 3) даташита я высчитал "Differential Input Voltage Range": Имея 20 мВ диапазон входного сигнала и Vref = 5В, я могу позволить себе усиление в 128 раз (максимальное), потому как в этом случае допустимый диапазон входящего дифф. сигнала будет равен 5000/128 = 39.06 мВ, что почти вдвое превышает диапазон фактического входного сигнала. Что я получил на практике: если значение GAIN в CONFIGURATION регистре установить в 128, то при считывании STATUS регистра бит ERR встаёт в единицу, а считываемое значение АЦП будет равнятся 0xFFFFFF (16777215 DEC), что сигрализирует об ошибке - "Error sources include overrange and underrange". Такая же ошибка проявляется, если GAIN выставить в 1 или 2 (это когда усилитель не используется). При установке всех остальных значений GAIN (от 4 до 64 включая) ошибки не появляется, но и "считываемое" значение тоже странное - обычно где-то 98-99% от максимального значения 0xFFFFFF, например 16750362 (DEC). Данная ошибка проявляется как при Single Conversion Mode, так и при Continuous Conversion Mode. Данная ошибка проявляется как при Buffered Mode, так и при Unbuffered Mode. Есть подозрение, что проблема кроется не в неправильном конфигурировании регистров АЦП, а в разводке электросхемы. К сожалению у меня недостаточно знаний, чтобы диагностировать это самостоятельно в приемлемые сроки. Опорное напряжение V-ref замкнуто с AVDD, и равняется 5 В. Тензодатчик также запитан пятью вольтами. Напряжение между землёй и любым из двух выходов тензодатчика (подключены к пинам AIN2- и AIN2+ на АЦП) равняется половине от V-опорного, т.е. около 2.5 Вольт, что также находится в допуске, согласно параметру "Absolute AIN Voltage Limits" из таблицы №1. Напряжение между выходами датчика (пины AIN2- и AIN2+ у АЦП) в состоянии покоя равняется 0 В, а если приложить какой-то вес, поднимается до ~8 мВ, что определённо попадает в обозначенный выше диапазон "Differential Input Voltage Ranges" из той же таблицы №1. Не понимаю, что не даёт мне считать истинное значение сигнала. Буду рад, если кто-то сможет подсказать, в каком направлении искать решение. Ниже приложен код, управляющий коммуникацией, схема платы а также фото "живого" решения. При необходимости могу приложить скриншоты SPI коммуникации из логического анализатора. //Reset AD7799 txBuff[0]=0xFF; txBuff[1]=0xFF; txBuff[2]=0xFF; txBuff[3]=0xFF; CS_Clear HAL_SPI_TransmitReceive(&hspi2, txBuff, rxBuff, 4, 300); CS_Set HAL_Delay(50); //Write to CONFIGURATION REGISTER. Set polarity to Bipolar. Set gain to 64, Reference_detect to 1. Buff to 0. Channel to 1 (AIN2). txBuff[0]=0b00010000; // Write operation to CONF_REG txBuff[1]=0b00000110; //0,0,BO,U/B' 0,G2,G2,G0 txBuff[2]=0b00100001; //0,0,REF_DET,BUF 0,CH2,CH1,CH0 txBuff[3]=0; CS_Clear HAL_SPI_TransmitReceive(&hspi2, txBuff, rxBuff, 4, 300); CS_Set HAL_Delay(50); // Write to MODE REGISTER. Set Continuous Conversion Mode. Set Update rate to 4.17 Hz txBuff[0]=0b00001000; txBuff[1]=0b00000000; // MD2, MD1, MD0 , PSW, 0000 txBuff[2]=0b00001111; // 0000, FS3, FS2, FS1, FS0 txBuff[3]=0; CS_Clear HAL_SPI_TransmitReceive(&hspi2, txBuff, rxBuff, 3, 300); CS_Set HAL_Delay(480); // Settle time is 480 ms, according to Table No. 14 while (1) { HAL_Delay(235); RDY = false; //Read from STATUS REGISTER until RDY goes low. Check errors. txBuff[0]=0b01000000; txBuff[1]=0; txBuff[2]=0; txBuff[3]=0; timeout = AD7799_TIMEOUT; CS_Clear while((timeout > 0) && !RDY) { HAL_SPI_TransmitReceive(&hspi2, txBuff, rxBuff, 2, 300); if ((rxBuff[1] >> 7) == 0) // Если бит RDY становится в ноль { RDY = true; if ((rxBuff[1] & 0b01000000) == 0b01000000) // Если бит ERR становится в еденицу { char* error = "ERR\n"; CDC_Transmit_FS((uint8_t *)error, 4); } if ((rxBuff[1] & 0b00100000) == 0b00100000) // Если бит NOREF становится в еденицу { char* error = "NOREF\n"; CDC_Transmit_FS((uint8_t *)error, 6); } } else timeout--; } CS_Set HAL_Delay(3); //Read from DATA REGISTER. txBuff[0]=0b01011000; txBuff[1]=0; txBuff[2]=0; txBuff[3]=0; CS_Clear HAL_SPI_TransmitReceive(&hspi2, txBuff, rxBuff, 4, 300); CS_Set reg_data = rxBuff[0]; reg_data = (reg_data << 8) | rxBuff[1]; reg_data = (reg_data << 8) | rxBuff[2]; reg_data = (reg_data << 8) | rxBuff[3]; #define SIZE sizeof(uint8_t)*8+1 char buffer [SIZE]; itoa (reg_data,buffer,10); buffer[SIZE-1] = '\n'; CDC_Transmit_FS((uint8_t *)&buffer, SIZE); // Вывод считываемого значения через USB на компьютер } }
  4. Сначала суть проблемы, а потом собственно вопрос. Встал вопрос и переносе проекта с PIC18 на STM32 - основная причина - нехватка скорости АПЦ, скорости работы, плюс увеличение разрядности АПЦ с 10 до 12 бит. Раньше с STM32 почти не работал. Выбор пал на STM32F401CCU6. Тактовая устраивает, скорость АЦП тоже. Цена опять же вполне приемлемая. Начал изучать АПЦ - а там чудеса... Внутри не оказалось источника опорного напряжения, даже одного. В корпусах 48/64 вывода вывод Vref+ не выведен на ружу. Точнее он объединен с VDDA. Т.е. диапазон измеряемых напряжение от 0 до 3-х вольт (питания 3В). Vref- даже если в большом корпусе выведен отдельным выводом, он обязательно должен быть соединен с землей. Т.е. смещение шкалы АЦП такого вида не пройдет: на Vref- 0.4В, на Vref+ 2.2В. Измеряем в коридоре 1,8В. С PIC18 такое легко прокатывает. Собственно вопрос - есть ли среди STM32 камни с более развитым модулем АЦП? Чтобы можно было, бы хотя бы, просто на Vref+ подать 2В, не в монструозном корпусе.
  5. АЦП, ДМА и таймер

    Здравствуйте! Имеется отладочная плата с STM32F303. Задача: измерять импульсный сигнал длинной 100 мкс и частотой 1000 Гц и выводить измерения на ПК. Запускаю два таймера. Первый имитирует измеряемый сигнал. Второй "толкает" АЦП Измеряю через внутренний 12-битный АЦП с использованием ДМА и запуском по таймеру. и сохраняю измерения в массив. Затем этот массив через ДМА передаю ЮАРТУ и вывожу на ПК. На выходе получаю поток невнятных чисел. Помогите разобраться в чем ошибка.
  6. Доброго дня уважаемые форумчане! Потратила уже кучу времени, но, почему-то, ничего внятного найти по своему вопросу на русском языке не смогла, а с английским все очень сложно. Решила спросить, может быть здесь мне смогут помочь. Хочется раставить, так сказать, все точки над i для себя, наконец. Задача, по сути своей тривиальная - имеется датчик, у датчика аналоговый выход 0,5...2,5В. Необходимо считать это значение с точностью 16 бит на частотах около 250 кГц. Первое, что пришло мне в голову это сделать масштабирующий усилитель, который просто "растягивает" сигнал до 0...5В и подать на АЦП AD7685. Собрала схему, как на картинке ниже - в целом, что в Proteus (на номиналы резисторов смотреть не стоит, там немного другой масштаб, но суть та же), что в реальности работает, но хотелось бы сделать какую-то более адекватную схему, с применением дифференциального АЦП, чтобы сразу на него подать сигнал 0,5...2,5В и получить заветные 16 бит данных, да и вообще разобраться как они работают. Выбрала АЦП из этой же серии AD7693, но не могу понять, что подавать на V_REF и на V_IN-. Посмотрев видео (не знаю, можно ли прикреплять ссылки.. надеюсь, что да https://www.youtube.com/watch?v=qAPUqajE1cw) сложилось впечатление что надо подать на V_REF = 1В (амплитуда сигнала относительно V_IN-), а на V_IN- = 1.5В (середина сигнала). Но по datasheet на V_REF нельзя подать менее 2.5В. Как быть, что делать, может какой-то другой АЦП и все очевидно? Прошу помочь и обьяснить, как это вообще работает (или должно работать). Заранее благодарю, Александара.
  7. Разработка электроники. Полное ведение проекта, от проработки устройства, написания софта и firmware до отладки образца. FPGA Xilinx - проекты любой сложности. Опыт больше 20 лет. STM32 - включая BLE устройства. Большой опыт разработки для разных заказчиков. Altium Designer - разработка печатных плат. Опыт работы с JKLC PCB. Сделаны многие проекты. Написание приложений под ОС Android. ADC приложения и ЦОС (DSP). Почта для связи [email protected]
  8. На время карантина ищу удаленную работу, дабы скомпенсировать денежные потери. Большой опыт в разработке как аппаратной части так и ПО. НО в данный момент приоритеты на стороне программного обеспечения, хотя если будет интересная (в смысле оплачиваемая) работа, то есть возможность разработки схем и трассировки PCB. Есть опыт работы с IDE: Eclipse, Keil, MPLAB, CodeComposer. Сейчас работаю в Eclipse + GCC, это среда разработки по умолчанию. Опять же если у заказчика есть жесткие требования, то можно будет использовать и другую среду разработки. Ради интереса не работаю, проекты на 2 часа (как бы) где 95% уже сделано, осталось всего 5% доделать тоже не интересны. Адрес для связи: [email protected]
  9. В двух словах. Во-первых, это мой первый опыт с Zynq, во-вторых, не могу уловить суть работы с потоковой шиной AXI-Stream. Или не понимаю сообщений от тайминг-аналайзера. Теперь подробней... Перед собственно запуском АЦП, наслушавшись как в Zynq все быстро и удобно, посмотрев несколько видео, и почитав несколько статей, создал простой проект, где Microblaze для конфигурирования в будущем АЦП и ЦАП, а ARM уже для работы с данными. Есть общая память между Zynq и Microblaze, есть общая периферия. Частота работа с периферией 50 Мгц. Раньше делал со стороны ARM 100 МГц, сейчас сделал поменьше. Не уверен, что выходную частоту процессорного ядра можно использовать в FPGA безболезненно, поэтому пропустил на всякий случай клок через Clock-wizard. Создал пару кастомных компонентов куда в дальнейшем перекочует работа с АЦП и ЦАП соответственно. И для проверки "скелета" все соединил и собрал. Сообщения про времянки уверяют меня, что ничего не работает. Пробовал вставлять регистры, вставил двухклоковую FIFO, опустил частоту работы с портом HP до смешных значений. Увеличил разрядность с 32 до 64 разрядов, завел два выхода в компоненте и использовал сразу два порта HP, помня рекомендацию Xilinx, что подключать нужно к портам через один, т.е. к 0 и 2 или к 1 и 3. Можно услышать от опытных людей критику по структуре проекта в целом и рекомендации по констрейнам? Я так понял, что как и для спартан-6 констрейны нужно прописывать только ко входной частоте, а производные клоки просчитываются автоматически. Тут также? Проект размещу по ссылке, т.к. его размер превышает ограничение в 5 Мб: EK-Z7-ZC702-G_Zynq_MB
  10. Есть необходимость создания проекта под Artix в Vivado: АЦП -> ФНЧ -> ЦАП Цель - на простом проекте отработать навыки работы с констрейнами в Vivado. Вводные: АЦП - выходы LVDS, тактовая данных (64МГц) - тактируют плис ФНЧ - КИХ на частоте 384 МГц ЦАП - КМОП 32 МГц Пока пытаюсь сделать упрощённый вариант - генерировать синус на ЦАП по 16 точкам. Вопрос 1 У меня есть ноги CLK64_P и CLK64_N, из них я создаю клок CLK64 методом: Удивлён, что констрейн на клок приходится задавать для CLK64_P а не для CLK64, это правильно? #create_clock -add -name sys_clk_pin -period 15.625 -waveform {0 7.8125} [get_ports { CLK64_P }]; сколько цифр после точки можно вводить? Vivado понимает 7.8125 или округлит до 7.81? Вопрос 2 Мне нужны частоты 384МГц и 32МГц, 384МГц получаю так: Мне надо прописывать констрейн на клок CLK384 или Vivado сам поймёт что он и всё что от него тактируется работает на частоте 384МГц? Вопрос 3 Как лучше получить частоту 32 МГц - своим счётчиком или с PLL? Вопрос 4 Счётчики в Vivado оптимизируются? В ISE я брал 32 разрядный регистр, делел на нём 3 разрядный счётчик и при синтезе у меня старшие разряды отбрасывались и получался 3 разрядный счётчик в Vivado я что-то этого не замечаю, он что пытается развести 32 разряда? Вопрос 5 Как передавать данные между блоками работающими на частотах 64, 384, 32 МГц - напрямую или ставить регистры типа FIFO для надёжности? Вопрос 6 Хочется сделать выходные и входные триггеры и разместить их рядом с ножками - как это описать в констрейнах и как задать время запаздывания/распространения? Вопрос 7 Файл .xdc - один на проект или можно создать некую иерархию из .xdc файлов? констрейны только в .xdc? В верилоге сразу указать нельзя?
×
×
  • Создать...