ADS1210

Akademik33

✩✩✩✩✩✩✩
19 Сен 2020
30
0
Ребят. Подскажите пожалуйста. Есть у кого возможность написать под ads1210 библиотеку? Либо помочь разобраться как ее запустить. Очень нужно. Спасибо!
 

Akademik33

✩✩✩✩✩✩✩
19 Сен 2020
30
0

@PiratFox,
Вроде запустилась . но судя по всему в примере однократный замер. Как можно переписать на постоянный замер?
 

PiratFox

★★★★★✩✩
13 Фев 2020
1,706
474
Как можно переписать на постоянный замер?
Для этого библиотеку переписывать ни к чему. Просто в своём коде организуйте, скажем, циклический опрос по какому-либо условию. Или по таймеру.

@Akademik33, а вообще вынесите опрос этого ацп в отдельную функцию, аргументами которой будут настройки параметров опроса, а возвращаемый результат - полученным значением. И вызывайте её из кода по мере необходимости. Как-то так.;)
 

Akademik33

✩✩✩✩✩✩✩
19 Сен 2020
30
0

@PiratFox,
Хорошая задумка. Но мне надо сначала разобраться чтобы он хотя бы на одной выборке работал😊
 

bort707

★★★★★★✩
21 Сен 2020
3,061
912
Есть у кого возможность написать под ads1210 библиотеку?
посмотрел, писал под ADS1220
Он похожий, но есть и отличия - главное что он только SPI
Если у вас используется SPI интерфейс, то дальше можно обсудить.
Если нет, то мои исходники вам ничем не помогут
 

bort707

★★★★★★✩
21 Сен 2020
3,061
912
Наверно лучше перейти в личку
Напишите, в чем собственно задача
 
  • Лойс +1
Реакции: Akademik33

Akademik33

✩✩✩✩✩✩✩
19 Сен 2020
30
0

@PiratFox,
Не могу разобраться с примером "Basic из кода. Судя по всему ардуанка зависает на строке инициализации ацп .
Если закомментировать :
ADS1213 ADC_ext(10.0, false, 9,10,6,5); то программа начинает отправлять все принты сериал. А раскоментировав это устроку. Даже из сетапа не отправляется ничего в порт.
 

bort707

★★★★★★✩
21 Сен 2020
3,061
912
А что её писать, есть готовая с примерами работы.
Пират, а ты ею сам пользовался или просто в инете нашел?
Что-то я глянул - там же даже интерфейс другой, у 1210 SPI, а тут SSI
И хотя они "типа совместимы", но разбирать написанный на регистрах неизвестно какого АВР "SPI через ногодрыг" - это грустно
 

PiratFox

★★★★★✩✩
13 Фев 2020
1,706
474
@bort707, сам не пользовал, приятель посоветовал. Сказал, что почти одно и то же. Я в детали не вникал, теперь вижу, что зря. Вот и верь после такого людям.:cry:
должно было остаться, вечером поищу
А твоя не подошла?
 
Изменено:

bort707

★★★★★★✩
21 Сен 2020
3,061
912
@PiratFox, у меня тоже не под тот чип, у меня 1220, а надо 1210
Насчет подошла не знаю - чтобы пробовать надо чип на руках иметь, а у меня нет :)
 

PiratFox

★★★★★✩✩
13 Фев 2020
1,706
474
Посмотрел внимательно даташиты 1210 и 1213 . Собсна, внутренняя структура одинаковая, разная только разрядность АЦП. У обоих интерфейсы похожи, но не абсолютно одинаковые. Вот тут и могут быть проблемы. Завтра посмотрю, есть ли у меня в протеусе их модели.

@Akademik33, вот этот скетч пробовали:
LibraryTest.ino:
#include <ADS1213.h>
ADS1213 ADC_ext;  //Creates an empty ADC object
#define PWMout 3
#define light 7
int count = 0;

void setup() {
  pinMode(light, OUTPUT);
  digitalWrite(light, HIGH);
  delay(500);
  digitalWrite(light, LOW);
  TCCR2A = 0xB3 ; // fast PWM with programmed TOP val
  TCCR2B = 0x09 ; // divide by 1 prescale
  TCNT2  = 0x00 ;
  OCR2A  = 0x0F ; // TOP = 15, cycles every 16 clocks
  OCR2B  = 0x07 ; // COMP for pin3
  pinMode (PWMout, OUTPUT) ;
  delay(500);
  Serial.begin(9600);
  ADS1213 temp(1,false,8,10,5,0);  //Initializes a temporary ADC object with arguments
  // clockspeed in MHz, Offset Binary, SCLK pin, IO pin, DRDY pin,(optional) CS pin(0 if unused)
  digitalWrite(light, HIGH);
  delay(500);
  digitalWrite(light, LOW);
  delay(500);
  ADC_ext = temp;                  //Sets the inital empty ADC value equal to the initalized temporary ADC
  digitalWrite(light, HIGH);
  delay(500);
  digitalWrite(light, LOW);
  ADC_ext.CMRwrite(1,B001,1,1,255);//Writes values to the command register
  // channel 1, mode 001 (self-calibration), gain 1, TMR 1, DR 255
  Serial.println("Done with setup");
}

void loop() {
  long output = 1;
  int val = analogRead(0);
  output = ADC_ext.readSigned(3);
  if(count == 10){
    Serial.print("output ADS1210: ");
    Serial.println(output);
    Serial.print("output Arduino: ");
    Serial.println(val); 
    count = -1;
  }
  count++;
}
 
Изменено:

PiratFox

★★★★★✩✩
13 Фев 2020
1,706
474
@Akademik33, жаль, что у меня в протеусе нет модели ads1210, поэтому проверить никак. Пока даже не знаю, чем помочь.:cry:
 

PiratFox

★★★★★✩✩
13 Фев 2020
1,706
474
@Akademik33, для меня проще было бы написать свою библиотеку, чем разбираться в чужой. Но, к сожалению, я не могу уделить этому время. Работы много. :cry:
 
Изменено:

Akademik33

✩✩✩✩✩✩✩
19 Сен 2020
30
0

@PiratFox,
Понял. Спасибо большое за ответ. Я уже начал писать свою библиотеку. Вроде начинает работать.