Как создать код, позволяющий использовать массив из 10 термисторов на одном arduino?

Я новичок в программировании и пытаюсь создать массив из 10 термисторов на одном arduino. До сих пор я нашел код для датчика температуры с использованием термистора NTC, который предназначен только для одного термистора. Как исправить этот код для 10 термисторов? Вот ссылка, по которой я нашел код. https://thecustomizewindows.com/2020/10/temperature-sensor-using-ntc-thermistor-arduino-ntc/ Приведенный ниже код был немного изменен для термистора, который я использую. Спасибо.

#define RT0 10000   // Ω
#define B 3470      // K
#define VCC 5       //Supply voltage
#define R 10000     // R=10kΩ


float RT, VR, ln, TX, T0, VRT;

void setup() {
  Serial.begin(9600);
  T0 = 25 + 273.15;                 //Temperature, Celsius to Kelvin
}

void loop() {
  VRT = analogRead(A0);              //Acquisition analog value of VRT
  VRT = (5.00 / 1023.00) * VRT;      //Conversion to voltage
  VR = VCC - VRT;
  RT = VRT / (VR / R);               //Resistance of RT

  ln = log(RT / RT0);
  TX = (1 / ((ln / B) + (1 / T0))); //Temperature from NTC thermistor

  TX = TX - 273.15;                 //Conversion to Celsius

  Serial.print("Temperature:");
  Serial.print("\t");
  Serial.print(TX);
  Serial.print("C\t\t");
  Serial.print((TX * 1.8) + 32);    //Conversion to Fahrenheit
  Serial.println("F");
  delay(500);
}

, 👍-2

Обсуждение

пожалуйста, пересмотрите свой вопрос ... "как мне создать код?` есть ответ "используйте текстовый редактор"... я верю, что это не то, о чем вы хотите спросить, @jsotola

ответ зависит от того, как вы собираетесь подключить 10 термисторов к arduino, @jsotola


1 ответ


3

Вы не сказали, какой (из многих видов) "Arduino" вы планируете использовать, но, поскольку Uno является наиболее распространенным, я это предполагаю. Вы также не сказали, почему/нужно ли использовать конкретный датчик температуры, но если вы сможете проявить гибкость в этом вопросе, у вас будет больше вариантов решения.

Во-первых, термисторы: Вы читаете термисторы с аналого-цифровым преобразователем. Uno имеет A/D преобразователь, но у него доступно только 6 каналов - недостаточно для вашей спецификации из 10 датчиков.

  • Вы можете добавить внешний A/D мультиплексор с 5 каналами, подаваемыми в один из ваших бортовых каналов, плюс оставшиеся 5 бортовых каналов.
  • Или добавьте 10-канальный мультиплексор для всех 10 датчиков и подайте его на один из встроенных A/D каналов. Это лучше, потому что это проще - все сигналы датчиков будут обрабатываться одинаково, и доступ ко всем будет одинаковым в коде.
  • Добавьте внешний 10-канальный кондиционер. Это будет стоить немного дороже, но работать с ним будет еще проще.

Если вам не нужны термисторы, я бы предложил "1-проводные" датчики Dallas/Maxim DS18b20. Шина "1-проводная" - это запатентованный протокол, разработанный компанией Dallas Semiconductor, от которого зависят эти датчики. Вы используете одну простую шину витой пары для доступа ко всем из них, для обеспечения питания и связи с датчиками требуется только 1 вывод Arduino (и заземление). Для управления шиной и связью доступны библиотеки. 1-проводная шина может быть линейной или разветвленной в зависимости от вашей установки. Вы можете использовать 2 провода (заземление и питание+данные) или 3 провода (заземление, питание, данные). Вот ссылка на технический паспорт DS18b20 для получения подробной информации.

,

https://arduinoprosto.ru/q/14702/issue-with-cd74hc4067-mux-on-high-values имеет код для 16-канального мультиплексора, подключенного к A0, @Dave X