Как создать код, позволяющий использовать массив из 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);
}
@Jen, 👍-2
Обсуждение1 ответ
Вы не сказали, какой (из многих видов) "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
- Как повторить кусок кода
- Arduino Мигает двумя светодиодами без задержки (количество повторений)
- Как увеличить срок службы EEPROM?
- Генерация истинного аналогового сигнала с помощью Arduino
- Ошибка в проекте ИК-приемника
- Почему показания моего термистора отстают?
- Преобразование int или float в массив байтов в ардуино
- Как закодировать светодиодные поворотники на умной машине
пожалуйста, пересмотрите свой вопрос ... "как мне создать код?` есть ответ "используйте текстовый редактор"... я верю, что это не то, о чем вы хотите спросить, @jsotola
ответ зависит от того, как вы собираетесь подключить 10 термисторов к arduino, @jsotola