Amiva

Aцп и Ардуино

2 posts in this topic

Amiva    0

Добрый день всем. Недавно начал изучать ардуино и основы работы с ним.  Вообщем в справочнике по работе с ним дошёл до работы с АЦП и тут возник вопрос, на который я пока не понимаю ответа. Когда я измеряю напряжение с входа, т.е подаю 5 В, все хорошо он их определяет и пишет 5 В соответственно, но когда я снимаю напряжение со входа, т.е ничего не подумаю, всё равно есть какие то измерения? Для себя я выделил 2 варианта ответа.
1) Это случайные наводки, которые ловит вывод.
2) Это из-за того, что измерение всегда производится относительно опорного напряжения, что вносит свои погрешности.
Можете сказать, я думаю в правильном направлении?

Share this post


Link to post
Share on other sites
BARS_    996
Только что, Amiva сказал:

всё равно есть какие то измерения?

Только что, Amiva сказал:

Это случайные наводки, которые ловит вывод.

Вывод в воздухе висит и ловит наводки. Кончай заниматься чушью, выкинь Arduino IDE, открой даташит на МК и пиши по человечески.

 

Share this post


Link to post
Share on other sites

Your content will need to be approved by a moderator

Guest
You are commenting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoticons maximum 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 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
    • By freebits
      Добрый день.
      Реализовал получение и обработку аналогового сигнала как в данной статье -> ссылка. Т.е. используется внутреннее опорное напряжение 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); } }  
  • Сообщения

    • @ZLOdeyB@sil@ я собирал в один тройник печку кухонную, чайник, утюг , нагрузка нормальная получалась, даже с запасом  
    • Ты как обычно , дурак и не лечишься! Где ты увидел 2,2 ком там резистор. Ясно написано 750 ом и 2200,0 это электролит параллельно и объединено кавычкой. Был бы резистор 2,2 ком и подписал бы 2,2 ком , а так 2200,0. Ещё раз подтверждается,что практики нет ни какой,один теоретический бред несёшь всегда! И тема эта ни какого отношения не имеет к Корректору МС.Просто создал автор дубль тему ( Корректор Василича) и все разговоры те же что и в основной теме о ММ  корректоре ламповом на 6Н17Б+6Н16Б а создание дубль темы запрещено правилами.. Все корректоры ламповые являются ММ корректорами , для МС  просто трансформатор на вход ставится или каскад  транзисторный с коэф.ус. 5-10 раз . Вот и весь МС.
    • Уважаемый @ARV простите меня за этот код: lcd_dat(((checkcrc()/100)%10)+48); lcd_dat(((checkcrc()/10)%10)+48); lcd_dat((checkcrc()%10)+48); Хочется что-то сказать в свое оправдание.... Но на ум ничего не приходит.По всей видимости торопился, когда писал ответ на форум и скорей всего от незнания. Если я правильно понимаю, то возвращаемое значение функции должно быть присвоено глобальной переменной?  uint8_t crc_2; // объявлена глобально int checkcrc() // функция посчета значения контрольной суммы { uint8_t crc =0; for (uint8_t i=0; i<(sizeof term_code / sizeof term_code[0]); i++) //for (uint8_t i=0; i<8; i++) { crc = _crc_ibutton_update(crc, term_code[i]); } return crc_2=crc; }   Или есть другой способ отобразить, в данном случае, возвращаемые данные на LCD_дисплее? lcd_dat('R'); lcd_dat('C'); lcd_dat('_'); lcd_dat('2'); lcd_dat('='); lcd_dat(((crc_2/100)%10)+48); lcd_dat(((crc_2/10)%10)+48); lcd_dat((crc_2%10)+48); Подскажите пожалуйста. @Starichok  обязательно найду и разберусь в сути вопроса, но без учителя у меня уйдет много времени. В интернете находил такую информацию, но я ее читаю, а она от моей головы отскакивает как от стенки горох. Слишком уж много непонятных слов для меня (пока). Мне бы решение этого вопроса на бумагу переложить (подсчитать вручную с помощью карандаша и бумаги).  Если не получится самостоятельно разобраться, пойду в институт к своему преподавателю по математики, попрошу ее растолковать мне эту методику. Она нам всегда говорила, что красивей математики может быть только музыка.
    • Статья в ВРЛ N104 "Источники стабильного тока и их применение."  
    • Когда то долго искал. Ришад Шафиев и Гунеш,1984 год  
    • Заработал!!! Запутался с фазами по тгр. методом тыка нашел.     Пока снял 13.5воль под нагрузкой 2-3А  дальше лампа не дает напруга проседает до 140в (ток 260мА)  шим начинает глючить (быстро включается выключается) Транзисторы при такой нагрузке остаются холодными.  Что не нравится то что шим (обвязка управления) жутко глючит (как писал выше вкл-выкл )  при любых действиях на регулировку и при изменение нагрузки. в общем скарей всего и за того что все на соплях. это на выходе тл494. под нагрузкой.