Как читать 4 канала, используя библиотеку MCP342x? - PullRequest
0 голосов
/ 25 апреля 2019

Я использую Arduino Mega2560 и MCP3424 со следующей библиотекой (https://github.com/stevemarple/MCP342x) для чтения данных с термопар. Это прекрасно работает для одного канала. Но когда я пытаюсь добавить второй канал (фактически мне нужны все 4 канала) ) Я получаю неправильные данные. Что я не прав?

Я попытался создать 2 объекта MCP342x с одинаковым адресом и настроить их отдельно, но это не сработало.

Ниже немного изменен пример GeneralCallConversion из библиотеки

uint8_t address = 0x6E;
MCP342x adc_ch1 = MCP342x(address);
MCP342x adc_ch2 = MCP342x(address);
// Configuration settings
MCP342x::Config config1(MCP342x::channel1, MCP342x::oneShot,
           MCP342x::resolution18, MCP342x::gain8);
MCP342x::Config config2(MCP342x::channel2, MCP342x::oneShot,
           MCP342x::resolution18, MCP342x::gain8);
// Configuration/status read back from the ADC
MCP342x::Config status1;
MCP342x::Config status2;
//some code here
// Configure the device with the desired settings. If there are
// multiple devices you must do this for each one.
adc_ch1.configure(config1);
adc_ch2.configure(config2);
// some code here

void setup(void)
{some code here}

void loop(void)
{
  long value1 = 0;
  long value2 = 0;
  uint8_t err1;
  uint8_t err2;
  if (startConversion) {
    MCP342x::generalCallConversion();
    startConversion = false;
  }
  err1 = adc_ch1.read(value1, status1);
  err2 = adc_ch2.read(value2, status2);
  if (!err1 && !err2 && status1.isReady() && status2.isReady()) { 
    Serial.print("Value: ");
    Serial.print(value1);
    Serial.print("  ");
    Serial.println(value2);
    startConversion = true;
  }
  delay(5000);
}

Выходные показания примерно на два порядка меньше, чем они должны быть.

...