Search the Community
Showing results for tags 'ADC'.
-
Программа-счетчик ампер-часов В ней условие //=====Напряжение минимальное при разрядке аккумулятора============================ if (volt <= 1050) // Если напряжение меньше-равно 10.50 вольт { PORTD |= (1<<PD7); // Устанавливаем бит 7 порта D в 1 (светодиод горит) } else { // Иначе PORTD &= ~( 1 << PD7 );// Устанавливаем бит 7 порта D в 0 (светодиод не горит) } Как проще добавить несколько вариантов условий if (volt <= 1050) // Если напряжение меньше-равно 10.50 вольт для разных напряжений, чтобы при запуске программы можно было выбрать и задействовать нужное? Я ничего подобного раньше еще не делал, так что прошу отнестись соответственно.
-
Приветствую всех на этом форуме! Есть необходимость измерять сигнал при помощи данного АЦП. С помощью этого АЦП можно измерять 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(); Результат аналогичный. Кто что подскажет? Может кто заметит какой косяк в коде? Уже голова дымит ..
-
Продам адаптеры 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 р.).
-
Доброго времени суток. Понадобилось разобраться с АЦП. Основной материал использовал Евстифеева (микроконтроллеры семейства мега) и учебный курс Di-Halt. На первый раз задача простая - обработать напряжение с переменного резистора и послать по UART в терминал. С терминалом уже кое-что делал, так что тут вряд ли косяк есть. Кратко опишу программу: каждую секунду в обработчике прерывания таймера (не совсем точно, прерывание по переполнению Т0) запускаю преобразование АЦП установкой в 1 бита ADSC. В обработчике прерывания АЦП читаю байт ADCH (выравнивание по левому краю ADLAR=1) и шлю по уарт. Но в терминал приходят одни FF независимо от положения движка потенциометра (подключен к PC1 средним контактом, крайними на землю и AVCC) ADC_test.zip
-
Дано: отладочная плата STM32F303VC, индукционный датчик. Доброго времени суток, суть моего проекта в детектировании вибраций(ударов) при помощи аналогового датчика. Код отслеживания удара написан, но я не пойму то ли я ошибся с алгоритмом его работы то ли не правильно сконфигурировал отладочную плату. Информация по датчику. Индукционный датчик удара, шок сенсор, Arduino может использоваться в проектах на микроконтроллерах (в т.ч. Arduino), в которых нужно следить за уровнем вибрации или подобных механических возмущений. Принцип действия датчика основан на электромагнитной индукции. Движущийся стальной, ферритовый или магнитный сердечник относительно катушки создает в катушке ЭДС, подходящую по амплитуде ударного воздействия на систему. Чувствительный элемент датчика установлен в прозрачный пластиковый параллелепипед для защиты от действий внешней среды. Для использования датчика нужно подключить его к Arduino контроллеру или другому микропроцессорному управляющему устройству, подать питание, создать программу для работы с датчиком или использовать готовое решение. На корпусе датчика есть два отверстия, с помощью которых можно жестко закрепить датчик на плоской поверхности. В состоянии покоя напряжение на выходе из датчика около 5 В, при возмущении напряжение на датчике падает пропорционально силе возмущения. Индукционный датчик удара, шок сенсор, Arduino имеет один 3-контактный разъем для подключения к контроллеру и питания: контакт обозначенный «–» – общий контакт; средний контакт – напряжение питания; контакт S – аналоговый выходной сигнал датчика. Датчик может питаться как от Arduino контроллера (другого микропроцессорного управляющего устройства), так и от внешнего источника питания. Напряжение питания 3,3 – 5 вольт постоянного тока. Характеристики: принцип действия: индукционный; выходной сигнал: аналоговый; напряжение питания: 3,3 – 5 вольт постоянного тока; размеры: 30 х 18 х 11; вес: 2 г. Shock.7z
- 3 replies
-
- stm32f303vc
- avr
-
(and 3 more)
Tagged with:
-
Помогите передать данные ADC по SMS. UART.zip
-
Есть чип NXP LPC1788. Есть пример программы где в начале происходит инициализация второго канала, далее в цикле происходит обращение к функции считывания (ADC) данных с порта, но при считывании номер канала не указывается(по умолчанию информация забирается из инициализированного канала), отсюда вопрос - можно ли одновременно работать с несколькими каналами или каждый раз придётся перенастраивать систему на новый канал? (хочется одновременно работать со всеми)