Поиск сообщества
Показаны результаты для тегов 'ацп'.
Найдено: 40 результатов
-
В данной теме обсуждаем АЦП серии КР572 и их аналоги ICL71 Микросхемы КР572ПВ2, КР572ПВ5 представляют собой интегрирующие аналого-цифровые преобразователи на 3,5 десятичных разряда с выводом информации на семисегментные индикаторы, . Аналоги: ICL71G6, ICL7107 фирм INTERSIL и MAXIM (США). Микросхемы предназначены для применения в измерительных приборах напряжения, тока, сопротивления, температуры, массы и других с выводом информации на семисегментный жидкокристаллический (КР572ПВ5) или светодиодный (КР572ПВ2) индикаторы. Конструктивное исполнение - 40-выводной корпус 2123.40-1 или подтипа 45 по ГОСТ 17467-88. Хотелось бы собрать на этой странице схемы, ссылки и т.п. на ПВ2,5,6 и т.д.. Было бы не плохо если бы вы поделились с нами своими рабочими схемами и их печатками.
-
Уважаемые форумчане, всех с праздниками! Пытаюсь использовать АЦП AVR в режиме периодического автозапуска от таймера. Код пытается работать, опрос АЦП осуществляется, но почему-то ровно 2 раза, а не до бесконечности, как планировалось. После этого код висит в вечном цикле (проверял, тестовый код в вечном цикле корректно выполняется), а прерывание АЦП не вызывается более 2 раз. Тестирую на ATmega16, тактовая частота 4МГц, на входе потенциометр, результат наблюдаю в программе-читалке COM-порта. По задумке должно возникать событие Compare Match B таймера 1 с частотой 2Гц (проверял, возникает c нужной частотой), которое автотриггерит АЦП, запуская прерывание АЦП по окончанию преобразования (запускается, но ровно 2 раза, если жать на Reset, то снова 2 раза и дальше тишина до Reset), в прерывании АЦП результат отправляю по UART (результат корректный, по UART доходит) Использую Microchip Studio 7.0, оптимизация отключена. Помогите, товарищи! Сломал всю голову, скурил весь даташит, ничего не понимаю! Возможно, глаз замылился, но не настолько же! Четвертые сутки бьюсь с простеньким, вроде бы, кодом ( Код ниже: #include <avr/io.h> #include <avr/interrupt.h> void init(); void uart_init(); void timer1_init(); void adc_init(); void uart_send( char x ); ISR( ADC_vect ) { uart_send( ADCH ); } int main(void) { init(); while (1){} } void init() { uart_init(); timer1_init(); adc_init(); sei(); } void uart_init() { UBRRL = 25; // 9600bod at CLK = 4MHz UCSRB = 1 << TXEN; } void timer1_init() { OCR1A = 31250; OCR1B = OCR1A; TCCR1B = ( 1 << WGM12 ) | ( 1 << CS11 ) | ( 1 << CS10 ); // /64 2Hz at CLK=4MHz } void adc_init() { ADMUX = ( 1 << REFS0 ) | ( 1 << ADLAR ); // PA0, AVCC, PA0 SFIOR = ( 1 << ADTS2 ) | ( 1 << ADTS0 ); // COMPB ADCSRA = ( 1 << ADEN ) | ( 1 << ADSC ) | ( 1 << ADATE ) | ( 1 << ADIE ) | ( 1 << ADPS2 ) | ( 1 << ADPS0 ); //COMPB, ADCclk=125kHz } void uart_send( char x ) { while ( !( UCSRA & ( 1 << UDRE ) ) ); UDR = x; } main.c
-
Добрый день, нужна помощь со схемой включения ядерного квантового преобразователя. Она есть на фотке, но как сказал препод - она неправильная, т.к. не будет работать. Также вроде надо как-то настроить эту схему, чтобы индукция передавалась в момент магнитного резонанса (т.е. при максимальном её значении). Прошу помочь новичку кто чем может. Также ниже сбросил файл реферата по квантовым преобразователям, может поможет.квантовыепреобр.docx Также есть пример схема включения ферроиндукционного преобразователя вроде как правильная для примера.
- 5 ответов
-
- преобразователь
- АЦП
-
(и ещё 1 )
C тегом:
-
Здравствуйте! Имеется плата на основе микрокотроллера stm32f405vg, есть задача получения значения rms(среднеквадратичное значение тока) посредством АЦП ade7953. Данные с АЦП принимаются по SPI(посредством обращения к регистру 0x31a) в массив по типу arr[0] = 0x00, arr[1] = 0x00, arr[2] = 0xB1, arr[3] = 2C. Столкнулся с проблемой перевода этого значения в амперы. В application note к АЦП я нашел формулу, прикреплённых ниже, которая должна решать этот вопрос, но как применить её так и не додумался, прошу знающих помочь. Язык Си
-
Здравствуйте коллеги, друзья и единомышленики. Вообще моя специфика это электротехника и электрооборудование. Поскольку нередко приходится проектировать и изготовлять различные щиты, управления различного электрооборудования, то есть необходимость в различных контроллерах, которые бы измеряя параметры сети предпринимали те или иные функциональные процедуры. Да сегодня существую различные ПЛК, и прочие устройства под дин рейку на которых можно реализовать все, что угодно. Но к сожалению, либо, они дороги, либо недоступнн. Кроме того вообще ПЛК умеющих "из коробки" измерять сетевое напряжение по всем фазам (не говоря про ток) в природе пока не встречал. Поэтому к ПЛК, приходится покупать т.н. датчики или измерители сетевых параметров, стоимость которых сопоставима с ПЛК, к тому же растет габарит щита где все это будет стоять. Так или иначе я решил научится делать хотябы простейшие контроллеры, с обычной прошивкой, которые бы могли реализовать все мои предпочтения. Выбрав МК STM32, подобрав схемотехнику внешних интерфейсов и исполнительных устройств. Пока, я остановился перед выбором каким образом измерять, сетевое напряжение переменного тока. На первый взгляд почти, все производители реле напряжений используют вот такую схему: Но мнению специалистов, эта схема плоха наличия невысокого внутреннего сопротивления самого АЦП микроконтроллера. Поэтому рекомендуют добавить ОУ в режиме буфера: В обоих схемах, измеряемый сигнал смещают на половину питающего/опорного напряжения, в результате теряется один бит точности АЦП. Поиск в интернете, навел на следующие материалы: 1. Диапазон преобразования АЦП микроконтроллера можно расширить вдвое без потери точности. В схеме используются два однопериодных выпрямителя на ОУ, соответственно необходимо два входа АЦП. Соответственно хочется схема по лучше. 2. Двухполупериодный активный выпрямитель без диодов. Все прекрасно и просто, но рекомендуется использовать дорогой и труднодоступный ОУ. Простые и дешевые ОУ типа МСP6002/4, при моделировании этой, схемы (в Multisim) ее работоспособность не подтвердили. Я был не один, кто хотел ее реализовать, у котов на форуме есть обсуждение этой схемы, но там тоже судя по всему тоже успехов не достигли. Поэтому я продолжил поиск и попал на третий вариант, это... 3. Учебный материал - Прецизионные выпрямители. Предложенная схема в идеальных условиях (когда на вход подключен генератор сигналов) показала работоспособность в среде Multisim. Однако когда я дочертил высоковольтный делитель, и подал высокое напряжение, то на выходе получил также модуль синусоиды, но его амплитуда была снижена на 35-40%, от того кот. был на выходе резист делителя. В итоге в эту схему я добавил буферный каскад ОУю В итоге, схема обрела следующий вид: В этот раз моделирование уже подтвердило ожидаемые результаты: - на выходе имеем, модуль синусоиды, причем с той же амплитудой, которая имеется на входном резистивном делителе. - если подать напряжение превышающее номинал резист делителя, то на входе МК оно будет срезанным на уровне 3вольт. - теперь можно использовать все 12бит АЦП, для оцифровки Но получилась схема какая-то громоздкая на один канал напряжения. Можно ли ее упростить, и есть ли более простые схемы решающие данную проблему??
-
Помогите понять где ошибка... не получается реализовать попеременный опрос 2ух каналов АЦП. Данные с одного канала должны передаваться на первый индикатор как напряжение, а со второго, соответственно на второй индикатор как сила тока. #define F_CPU 8000000U #include <avr/io.h> #include <avr/interrupt.h> #include <stdlib.h> #include <util/delay.h> #define INDICATOR PORTD #define RANK PORTB unsigned int UR1=0, UR2=0, UR3=0, UR4=0; //переменные для деления на разряды значения напряжения unsigned int IR1=0, IR2=0, IR3=0, IR4=0; //переменные для деления на разряды значения силы тока int GainControl=1; int current_ch=0; float I, U; unsigned char voltage, current; unsigned int NUMS [10] = {0b11000000, 0b11111001, 0b10100100, 0b10110000, 0b10011001, 0b10010010, 0b10000010, 0b11111000, 0b10000000, 0b10010000}; // от 0 до 9 int main(void) { DDRB=0xFF; PORTB=0x00; //ножки порта B для разряда DDRC=0x00; PORTC=0x00; //ножки порта C для АЦП DDRD=0xFF; PORTD=0xFF; //ножки порта D для индикаторов TCCR0 |= (1<<CS01); TCCR0 &= ~((1<<CS00) | (1<<CS02)); //настройка частоты таймера f/8 TIMSK |= (1<<TOIE0); //разрешение прерываний по переполнению таймера TCNT0=0; // обнуление счетчика ADCSRA |= ((1<<ADEN) | (1<<ADSC) | (1<<ADPS2)); // запуск АЦП, запуск преобразования, предделитель 16 ADCSRA &= ~((1<<ADFR) | (1<<ADIF) | (1<<ADPS1) | (1<<ADPS0)); // режим преобразвания прерывестый, флаг перобразования опущен, предделитель 16 ADMUX |= ((1<<REFS0) | (1<<REFS1)); //источник опорного напряжения 2.56В ADMUX &= ~((1<<ADLAR) | (1<<MUX0) | (1<<MUX1) | (1<< MUX2) | (1<<MUX3)); // направление записи, измерительная ножка ADC0; sei(); // вкл прерывания while (1) { if (ADCSRA & (1<<ADIF)) { U_Convert((U*5.00/1024)*100); I_convert((I*5.00/1024)*100); } } } void U_Convert (unsigned int U_num) //деление на разряды напряжения { UR1=U_num/100; UR2=U_num%100/10; UR3=U_num%10; } void I_convert (unsigned int I_num) //деление на разряды тока { IR1=I_num/100; IR2=I_num%100/10; IR3=I_num%10; } ISR (TIMER0_OVF_vect) { if (GainControl == 1) {INDICATOR = 0b11111110; RANK = NUMS[UR1];} //отображение 1ого разряда напряжения if (GainControl == 2) {INDICATOR = 0b11111101; RANK = NUMS[UR2];} //отображение 2ого разряда напряжения if (GainControl == 3) {INDICATOR = 0b11111011; RANK = NUMS[UR3];} //отображение 3ого разряда напряжения if (GainControl == 4) {INDICATOR = 0b11110111; RANK = NUMS[IR1];} //отображение 1ого разряды силы тока if (GainControl == 5) {INDICATOR = 0b11101111; RANK = NUMS[IR2];} //отображение 2ого разряды силы тока if (GainControl == 6) {INDICATOR = 0b11011111; RANK = NUMS[IR3];} //отображение 3ого разряды силы тока GainControl++; if (GainControl > 6) GainControl=0; // мониторинг переменной для управления затворами } ISR (ADC_vect) { if (current_ch == 0) { U = ADC; voltage = (U*2.56/1024)*100; ADMUX |= (1<<MUX0); current_ch = 1; ADCSRA |= (1<<ADSC); } else { I = ADC; current = (I*2.56/1024)*100; ADMUX &= ~(1<<MUX0); current_ch = 0; ADCSRA |= (1<<ADSC); } }
-
День добрый! Сегодня хотелось бы ра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
-
Помогите, пожалуйста, со схемой подключения ПЗС-линейки к микроконтроллеру. Задача заключается в том, чтобы определить координату падения светового пятна, сформированного линзой, в пределах линейки. Модель линейки TCD132D на 1024 пикселя. Согласно даташиту необходимо три управляющих частоты - M, CCD, SH, питающее напряжение 12 В и опорное 5 В. Все эти условия были выполнены. Данные считываются. Выход данных с линейки пока просто выведен на осциллограф (красный канал). Я плохо понимаю физические основы работы ПЗС-линейки, но ее работа кажется мне очень странной и нелогичной. 1) При равномерной фоновой засветке при считывании получается равномерное низкое напряжение на всех пикселях. (Рисунок 1). 2) При закрытии части линейки чем-либо напряжение на закрытых пикселях возрастает (Рисунок 2). 3) При включении фонарика или лазерной указки все пиксели зашкаливают, определить максимум не удается (Рисунок 3). Если поместить линейку в темное место и светить очень тусклым лазером, то общий уровень напряжения на пикселях высокий, а в месте попадания света наблюдается едва заметный минимум. Возможно так и должно быть и нужно просто инвертировать и усилить сигнал? В чем может заключаться проблема? Как грамотно снимать выходной сигнал с линейки и заводить его на АЦП МК? Даташит приложен снизу. tcd132d.pdf
- 4 ответа
-
- микроконтроллер
- линейка
-
(и ещё 3 )
C тегом:
-
Доброго времени! Суть дальнейшего моего повествования связана с наводками на прототипе фотометрического оборудования. Вот фото данного прототипа: Если опусти работу таких узлов как управление насосами накачки жидкости, насос откачки жидкости, управление воздушным компрессором, то суть устройства сводится к аналоговой части: ацп микроконтроллера и схемы усилителя фотодиода. Вот блок-схема и принципиальная схема усилителя фотодиода: Далее 6 ножка ОУ подаётся на вход ацп микроконтроллера. Печатные платы сделаны таким образом, что схема ОУ и фотодиод расположены на одной плате, а микроконтроллера на другой – основной плате. Плата фотодиода разведена таким образом, что вход ОУ имеет земляную петлю, нижняя сторона является общей землёй: В целом, эта плата работает нормально. Я ее проверял питая от аккумулятора и сигнал на выходе хороший и чистый. Проблема сама вот в чём. Что когда всё собрано во едино, а точнее, прототип запитан от внешнего сетевого адаптера от ноутбука, то сигнал превращается в бороду: Судя даже по этому показометру, размах равен около 35-40 мв при частоте в 50 Гц. И когда я просто подношу ладонь к плате фотодиода на расстояние в 20-50 мм, то размах увеличивается уже за 100 мв. Тут нужно пояснить вот какой факт. Сейчас я питаю схему ОУ и фотодиода от отдельного аккумулятора (его видно на фото ниже), Так я думал, что питая от общего источника аналоговую часть и цифровую, даёт такой результат. Но как показала практика, что питать от аккумулятора, что от общего источника, результат одинаковый. Как выяснилось, даже если отключить питание от цифровой части (тумблер по положительному полюсу питания), а аналоговая питается от аккумулятора, то на показометре картина остаётся той же, видна та же борода. Но если выдернуть провод питания от этой конструкции, то результат на показометре следующий: Размах снизился до менее 10 мв и частота увеличилась примерно до 400 Гц. Вероятно тут уже собственные шумы показометра + незначительные наводки на схеме ОУ. Пока писал этот текст включил приборчик, чтобы посмотреть на его показания с отключённым щупом, вот результат: Вердикт. Проблему в том, что устройство питается от сети. Как побороть эту беду? P.s. Есть еще один интересный момент. Когда я пальцем дотрагиваюсь до полигона, но борода исчезает, как будто я действую как-то своей ёмкостью на схему. Документ Microsoft Word (2).pdf
- 17 ответов
-
- фотометрия
- операционник
-
(и ещё 2 )
C тегом:
-
Приветствую всех на этом форуме! Есть необходимость измерять сигнал при помощи данного АЦП. С помощью этого АЦП можно измерять 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(); Результат аналогичный. Кто что подскажет? Может кто заметит какой косяк в коде? Уже голова дымит ..
-
Доброго времени суток. Понадобилось разобраться с АЦП. Основной материал использовал Евстифеева (микроконтроллеры семейства мега) и учебный курс Di-Halt. На первый раз задача простая - обработать напряжение с переменного резистора и послать по UART в терминал. С терминалом уже кое-что делал, так что тут вряд ли косяк есть. Кратко опишу программу: каждую секунду в обработчике прерывания таймера (не совсем точно, прерывание по переполнению Т0) запускаю преобразование АЦП установкой в 1 бита ADSC. В обработчике прерывания АЦП читаю байт ADCH (выравнивание по левому краю ADLAR=1) и шлю по уарт. Но в терминал приходят одни FF независимо от положения движка потенциометра (подключен к PC1 средним контактом, крайними на землю и AVCC) ADC_test.zip
-
Кто-нибудь запускал скоростные АЦП AD7606(последовательного приближения) в последовательном режиме считывания данных ?, из 4 шт одна заработала, остальные на выводе последовательного вывода DOUT ничего не выдают постоянно 0. пробовал переключаться с внутренним опорным источником(выдает 2.49), и с внешним без разницы. Может у них есть какая то очередность включения?
-
Добрый день! Имею следующую ситуацию : на базе PIC16f676 создал приблуду для "управления нештатной магнитолой с руля", а именно сигнал с руля это 4,8в и в зависимости от нажатой кнопки падает дискретной до 0.8в мк с помощью АЦП отслеживает на магнитолу паралельно кнопкам кинул оптрони которыми управляет МК. Питание от LM с фильтрующими конденсаторами. При тестових прогонах всё работало как надо (программно реализовано защиту от дребезга аж на 0.1 сек в поисках решений) и в машине и от штатного БП . Но заметил закономерность сейчас на улице - 2 и при первом запуске минут 5, МК "шумит" несоотвецтвует нажатия на руле кнопке на магнитоле ! Сигнал с руля смотрел стабильный без дребезга , притом когда тестил вынес магнитолу подключил всё работало гуд но пока устанавливал закручивал она остыла и начинались эти тацы . Кто что подскажет? МК или ЛМ могут так реагировать на температуру ? Прошу прощения у модераторов за повторение теми (может в этом разделе будет актуальней)
- 28 ответов
-
Распродаю остатки радиодеталей. Для удобного поиска написал WEB страничку http://detali.syremo.com.ua/ Количество может не совпадать. Пишите - отвечу. Договоримся... Отправляю только по Украине. Перед отправкой смогу сделать фото.
- 8 ответов
-
- микросхемы
- транзисторы
-
(и ещё 2 )
C тегом:
-
Добрый день. Реализовал получение и обработку аналогового сигнала как в данной статье -> ссылка. Т.е. используется внутреннее опорное напряжение 2,56 Вольта, прием через прерывания, а на дисплее выводится числовое значение напряжения, которое присутствует на входе АЦП - нога ADC6. В обработчике прерывания считываются значения из регистров ADCL и ADCH, из которых формируется значение переменной adc_value. В теле программы данное значение АЦП преобразуется в значение напряжения, посредством деления adc_value на 400. Затем полученный результат выводится на дисплей. Проблема в том, что выводимое значение не стабильно и скачет в диапазоне +/- 300 мВ. Т.е. если к аналоговому входу приложено напряжение 1,4 вольта, то на дисплее значения будут хаотично меняться в диапазоне от 1,1 Вольт до 1,7 вольт, т.е. весьма ощутимый разброс в сотни милливольт. При этом если смотреть сигнал на входе осциллографом, то по факту нет такой картины - максимальный разброс (Vpp) составляет несколько десятков милливольт, но никак не сотен. Даже если этот вход посадить на землю, все равно на дисплее будут хаотичные значения доходящие до 0.4 вольта. Откуда он берет такие цифры на понятно. Подскажите, в чем может быть проблема и как получить стабильные показания, хотя бы до сотен милливольт? unsigned int adc_value; char high_adc=0, low_adc=0; ISR(ADC_vect) //обработчик прерывания ADC_vect { low_adc = ADCL; high_adc = ADCH; //Верхняя часть регистра ADC должна быть считана последней иначе не продолжится преобразование adc_value = high_adc * 256 + low_adc; //значение АЦП } void ADC_Init(void) //инициализация АЦП { ADCSRA |= (1<<ADEN) // Разрешение использования АЦП |(1<<ADSC) //Запуск преобразования |(1<<ADATE) //Непрерывный режим работы АЦП |(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0)//Делитель 128 = 64 кГц |(1<<ADIE); //Разрешение прерывания от АЦП ADMUX |= 0b11000110; //Внутренний Источник ОН 2,56В вход ADC6 } void main(void) { float n = 0; while(1) { n = (float) adc_value / 400; // преобразование значения АЦП в напряжение /* Отправка на дисплей */ _delay_ms(2); } }
-
Приветствую всех любителей турбореактивной тяги любителей и профессионалов Имеется АЦП 12 бит, 750 КГц, для крейта КАМАК. Но ввиду его ограничения по длине выборки в 65536 точек (для наших задач желательно больше в разы), настала пора его менять. В виду того что КАМАК уже устаревший стандарт у нас сейчас идет поиск решения нашей проблемы (прошу не предлагать крейты NI), глаз упал на крейты l-card, но их покупку решили оставить на попозже. Собственно суть, перед мною стоит задача научиться изготавливать АЦП для подключения к компьютеру. А это значит: освоить работу со скоростными интерфейсами (LVDS, PCI-e и т.п.)(ибо требования выдвигающиеся к АЦП следующие, от 14 бит и от 1 МГц, и хотелось бы получать информацию с АЦП в реальном времени). Вас Уважаемые я прошу подсказать литературу по данной тематике. А также подсказок в выборе интерфейсов самих микросхем АЦП и их путей согласования с интерфейсами компьютера. P.S. Конечно такой сложный АЦП я сразу собирать не планирую, сначала научиться работать с интерфейсами, после собрать очень простенький АЦП. P.P.S Управлять планируется через LabView. да, осциллографические приставки имеются, но работая через USB они крайне медленные.
-
Дано: отладочная плата STM32F303VC, индукционный датчик. Доброго времени суток, суть моего проекта в детектировании вибраций(ударов) при помощи аналогового датчика. Код отслеживания удара написан, но я не пойму то ли я ошибся с алгоритмом его работы то ли не правильно сконфигурировал отладочную плату. Информация по датчику. Индукционный датчик удара, шок сенсор, Arduino может использоваться в проектах на микроконтроллерах (в т.ч. Arduino), в которых нужно следить за уровнем вибрации или подобных механических возмущений. Принцип действия датчика основан на электромагнитной индукции. Движущийся стальной, ферритовый или магнитный сердечник относительно катушки создает в катушке ЭДС, подходящую по амплитуде ударного воздействия на систему. Чувствительный элемент датчика установлен в прозрачный пластиковый параллелепипед для защиты от действий внешней среды. Для использования датчика нужно подключить его к Arduino контроллеру или другому микропроцессорному управляющему устройству, подать питание, создать программу для работы с датчиком или использовать готовое решение. На корпусе датчика есть два отверстия, с помощью которых можно жестко закрепить датчик на плоской поверхности. В состоянии покоя напряжение на выходе из датчика около 5 В, при возмущении напряжение на датчике падает пропорционально силе возмущения. Индукционный датчик удара, шок сенсор, Arduino имеет один 3-контактный разъем для подключения к контроллеру и питания: контакт обозначенный «–» – общий контакт; средний контакт – напряжение питания; контакт S – аналоговый выходной сигнал датчика. Датчик может питаться как от Arduino контроллера (другого микропроцессорного управляющего устройства), так и от внешнего источника питания. Напряжение питания 3,3 – 5 вольт постоянного тока. Характеристики: принцип действия: индукционный; выходной сигнал: аналоговый; напряжение питания: 3,3 – 5 вольт постоянного тока; размеры: 30 х 18 х 11; вес: 2 г. Shock.7z
- 3 ответа
-
- stm32f303vc
- avr
-
(и ещё 3 )
C тегом:
-
Всем здравствуйте! Есть необходимость метирить переменное напряжение от трех источников 220v. И питание получать от них же. (1.) Набросал схемку, будет ли она мерить и с какой точностью? измерять думаю в диапазоне от 150 до 250в. по идее точность будет 0.1 вольт. (2.) Но какие подводные камни я могу поймать? (3.) Или придется еще и операционный усилитель лепить на каждый вход АЦП?
-
Добрый день, Никак не могу, подключить АЦП к микроконтроллеру. Будет здраво, если кто-нибудь сможет подсказать где моя ошибка или хотя бы где ее искать. Я подключаю ADS1240 к arduino UNO. Описание АЦП слишком тяжелое, поэтому прикрепляю ссылку http://www.ti.com/lit/ds/sbas173f/sbas173f.pdf Также во вложении прикрепил 2 схемы подключения, которые побывал. Контроллер общается с АЦП по SPI, где D10 -SS, D11 - MOSI, D12 - MISO, D13 - SCLK. Сейчас моя задача, измерять напряжение на потенциометре с достаточной точностью. К сожалению внутренний АЦП arduino 10 разрядный, поэтому пытаюсь подключить внешний. Также прикрепляю программу, при помощи которой пытаюсь снимать показания. Но к сожалению на контроллер приходит только "0". Схема_2.pdf Схема_1.pdf Тестова программа.txt Схема_2.pdf Схема_1.pdf Тестова программа.txt
-
Доброго времени всем! Собрал паяльную станцию теперь из схемы хочу попробовать исключить операционный усилитель, т.к. паяльник с терморезистором сделать по схеме резистивного делителя. Диапазон регулировки напряжений получается мал. Помогите программно рассчитать рабочий диапазон чтобы показания на дисплей выводились от 0 до 420. Все значения на рисунке условны, главное узнать общий принцип расчета. PS: Очень нужно да и для будущих поделок пригодится.
-
Добрый день. Хочу более глубоко влезть в разработку измерительных система на основе моста Уитстона. Собирал из готовых компонентов (Arduino + hx711) простые варианты, все с этим понятно. Теперь хочу "ручками" подобрать и собрать компоненты самостоятельно. Можете пожалуйста покритиковать подбор компонентов: усилитель INA333, АЦП ADS8887 Мне необходимо снимать показания с моста достаточно оперативно. Реальных измерений мне нужно хотя бы две тысячи в секунду. Т.к. я очень плох в электронике, объясните мне пожалуйста, показатель SPS (samples per second) отвечает за скорость съема? В указанном мной АЦП стоит 100-kSPS. Если еще вспомнить теорему Найквиста, можно ли утверждать, что я получу до 50k измерений в секунду? При поиске АЦП я находил сигма-дельта варианты в 24 бита с 1 миллионом SPS. Сколько такое АЦП может выдать реальных измерений? И второй вопрос: как мне подобрать микроконтроллер под эту пару компонентов? Подойдет ли мне обычный MSP432? Для нее есть MSP432-Launchpad и может это будет правильным началом? Спасибо, извините если вопросы глупые.
-
Уважаемые форумчане, помогите в выборе измерительных устройств! Задача следующая: выводить на ПК осциллограммы 4х каналов по напряжению (до 80 В) и 4х каналов по току (до 120 А) с возможностью записи до 10 минут и сохранения в .csv. Нужны устройства внесённые в госреестр. Все каналы должны быть гальванически развязаны (без общей земли) Рассматривается вариант связки 4х канального USB осциллографа и USB АЦП/ЦАП на 16 каналов с датчиками тока типа ДТХ. В идеале хотелось бы иметь одно устройство, чтобы сразу выводить данные в одну программу (в одно окно) с одинаковой выборкой и одинаковым временем старта записи, для наглядного анализа сразу на месте.
- 7 ответов
-
- USB
- осциллограф
-
(и ещё 1 )
C тегом:
-
Добрый день, за основу взял эту схему http://www.diy-electronic-projects.com/p215-Led-display-digital-Voltmeter. Питание на ней +5 и -5в, я хотел сделать только +5в. По даташиту так можно было сделать, но добавив стабилитрон и делитель, потом наткнулся на пример где просто выводы 26 и 21 соединены на землю, тот писал что и так сойдет и будет работать. Будет ли моя схема вообще измерять, какой у нее будет предел и "точность...". Какие конденсаторы должны быть ну прямо очень обязательно пленочными? R1 180k R2 22k R3 12k R4 1M R5 470k R6 560 Ohm C1 100pF C2, C6, C7 100nF C3 47nF C4 10nF C5 220nF P1 20k trimmer multi turn U1 ICL 7107 7107.sch 7107.brd
-
Влияние измеряемых сигналов друг на друга
serj280294 опубликовал тема в Периферия и внешние устройства
Всем привет. Собираю вольтамперметр на микроконтроллере. Снимаю напряжение с шунта и усиливаю его с помощью ОУ. Развел плату, собрал, но при подключении к плате проводов, измеряющих напряжение самого источника питания и напряжение снятое с шунта, на последнем сильно проседает напряжение. Я понимаю, что ОУ при таком подключении не должен влиять на измеряемое напряжение. Я предполагаю, что проблема может скрываться в разнице потенциалов земель измеряемых напряжений и источника питания вольтамперметра. Вольтамперметр имеет отдельное питание. Если отключить контакты, измеряющие напряжение источника питания, амперметр работает как и задумано и напряжение на шунте падает в соответствии с измеренным при проектировании вольтамперметра. Подскажите пожалуйста, как правильно развести земли или изменить схему подключения.