admin

Модуль АЦП на ADS1115

1 сообщение в этой теме

admin    2 236

Купить ADS1115 за ~2$
Ссылка на datasheet ADS1115

Дополнительные файлы с описанием микросхемы: ADS1115.pdf

Библиотека для модуля на микросхеме ADS1115: Adafruit_ADS1X15-master.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00

Ваша публикация должна быть проверена модератором

Гость
Вы не авторизованы. Если у вас есть аккаунт, пожалуйста, войдите.
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Восстановить форматирование

  Разрешено не более 75 смайлов.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

Загрузка...

  • Похожие публикации

    • Автор: oner
      Пишу программу для датчика освещенности, который должен по нажатию кнопки измерять напряжение на одном из портов своего АЦП и записывать измеренное значение (в вольтах) на SD-карту. При повторном нжатии на кнопку результат измерения должен записываться на карту в тот же файл, но на новую строку.
       
      Сопротивление фоторезистора в зависимости от освещенности изменяется пимерно от 0,5 до 25 кОм, поэтому в качестве второго резистора делителя напряжения, результат деления которого и замеряем, выбран 27 кОм, чтобы не перегружать вход АЦП.
      Собственно, а куда по схеме эту кнопку лучше ставить? На питание или на какой-нибудь порт?

       
      В коде отталкиваюсь от такого:
      #include <mega8.h> #include <stdio.h> #include <stdlib.h> #define ADC_VREF_TYPE 0x00 unsigned int result; unsigned int read_adc(unsigned char adc_input); // volatile unsigned int count; //счетчик скопированных данных { ADMUX=adc_input | (ADC_VREF_TYPE & 0xff); // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=0x40; // Wait for the AD conversion to complete while ((ADCSRA & 0x10)==0); ADCSRA|=0x10; return ADCW; } #asm("sei") ADMUX=ADC_VREF_TYPE & 0xff; ADCSRA=0x81; while (1) { result=read_adc(0); result=(result*500L)/1024; // Тут мы измерили напряжение на резисторе if(disk_initialize()==0) //инициализируем флешку { FILE *file; //Открываем текстовый файл с правами на запись file = fopen("light.txt", "w+t"); //Пишем в файл fprintf(file, result); //Закрываем файл fclose(file); getch(); pf_mount(0x00); //демонтируем фат } }  
    • Автор: Amiva
      Добрый день всем. Недавно начал изучать ардуино и основы работы с ним.  Вообщем в справочнике по работе с ним дошёл до работы с АЦП и тут возник вопрос, на который я пока не понимаю ответа. Когда я измеряю напряжение с входа, т.е подаю 5 В, все хорошо он их определяет и пишет 5 В соответственно, но когда я снимаю напряжение со входа, т.е ничего не подумаю, всё равно есть какие то измерения? Для себя я выделил 2 варианта ответа.
      1) Это случайные наводки, которые ловит вывод.
      2) Это из-за того, что измерение всегда производится относительно опорного напряжения, что вносит свои погрешности.
      Можете сказать, я думаю в правильном направлении?
    • Автор: oner
      Собираю устройство, которое на основании измеренного напряжения на резисторе своим АЦП на одном из своих портов выдает импульсы широтой, зависящей от измеренного напряжения. Широтой этого импульса задается ток, который, протекая через вышеупомянуты резистор, формирует вновь измеряемое напряжение. Пока результат такой. Зеленым цветом - сигнал на выходе контроллера, красным - напряжение на резисторе в цепи истока полевого транзистора, оно пропорционально току, протекающему через этот транзистор.Результат такой:

      Вопрос знатокам: почему это измеренное напряжение всегда застывает на одной и той же величине (0,8В)? Код:
      #include <mega8.h> #include <delay.h> #include <stdio.h> long result; long n=1; // Voltage Reference: AVCC pin #define ADC_VREF_TYPE ((0<<REFS1) | (1<<REFS0) | (1<<ADLAR)) unsigned char read_adc(unsigned char adc_input) { ADMUX=adc_input | ADC_VREF_TYPE; // Delay needed for the stabilization of the ADC input voltage delay_us(10); // Start the AD conversion ADCSRA|=(1<<ADSC); // Wait for the AD conversion to complete while ((ADCSRA & (1<<ADIF))==0); ADCSRA|=(1<<ADIF); return ADCH; } void main(void) { // Input/Output Ports initialization // Port B initialization // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRB=(0<<DDB7) | (0<<DDB6) | (0<<DDB5) | (0<<DDB4) | (0<<DDB3) | (0<<DDB2) | (0<<DDB1) | (0<<DDB0); // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTB=(0<<PORTB7) | (0<<PORTB6) | (0<<PORTB5) | (0<<PORTB4) | (0<<PORTB3) | (0<<PORTB2) | (0<<PORTB1) | (0<<PORTB0); // Port C initialization // Function: Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRC=(0<<DDC6) | (0<<DDC5) | (0<<DDC4) | (0<<DDC3) | (0<<DDC2) | (0<<DDC1) | (0<<DDC0); // State: Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTC=(0<<PORTC6) | (0<<PORTC5) | (0<<PORTC4) | (0<<PORTC3) | (0<<PORTC2) | (0<<PORTC1) | (0<<PORTC0); // Port D initialization // Function: Bit7=In Bit6=In Bit5=In Bit4=In Bit3=In Bit2=In Bit1=In Bit0=In DDRD=(0<<DDD7) | (0<<DDD6) | (0<<DDD5) | (0<<DDD4) | (0<<DDD3) | (0<<DDD2) | (0<<DDD1) | (0<<DDD0); // State: Bit7=T Bit6=T Bit5=T Bit4=T Bit3=T Bit2=T Bit1=T Bit0=T PORTD=(0<<PORTD7) | (0<<PORTD6) | (0<<PORTD5) | (0<<PORTD4) | (0<<PORTD3) | (0<<PORTD2) | (0<<PORTD1) | (0<<PORTD0); // ADC initialization // ADC Clock frequency: 125,000 kHz // ADC Voltage Reference: AVCC pin // Only the 8 most significant bits of // the AD conversion result are used ADMUX=ADC_VREF_TYPE; ADCSRA=(1<<ADEN) | (0<<ADSC) | (0<<ADFR) | (0<<ADIF) | (0<<ADIE) | (1<<ADPS2) | (1<<ADPS1) | (0<<ADPS0); SFIOR=(0<<ACME); PORTB=0x00; DDRB=0x01; #asm("sei") while (1) { result=((read_adc(0)*5)/256.00); // Тут мы измерили напряжение на резисторе if (result>2) // и сравниваем, например, с 2В. В случае отклонения // измеренной величины от 2В меняем длительнось импульса n. { n=n-1; PORTB.0=1; delay_ms(n); PORTB.0=0; delay_ms(20); } if (result<2) { n=n+1; PORTB.0=1; delay_ms(n); PORTB.0=0; delay_ms(20); } }; }  
    • Гость Сергей
      Автор: Гость Сергей
      Здравствуйте.
      Купил АЦП для ардуино ADS1115 by Adafruit. И столкнулся с такой проблемой АЦП нормально работает с сигналом 110 Гц ниже данного выдает какую-то мешанину.
      Спасибо. 
    • Автор: Vascom
      Требуется высокоскоростной АЦП (80-125МГц) с минимальным потреблением.
      Вот нашёл такой https://www.maximintegrated.com/en/products/analog/data-converters/analog-to-digital-converters/MAX19516.html
      MAX19516, двухканальный, 57мВт на канал при 100МГц
      Есть ли ещё 8-12-битные АЦП с меньшим потреблением?