Зуммер мешает показаниям термистора
Вот как я подключил термистор и зуммер:
И код:
#define RT0 10000
#define B 3977
#define R 10000
float RT, VR, ln, TX, T0, VRT;
void setup() {
T0 = 25 + 273.15;
}
void loop() {
VRT = analogRead(A3);
VRT = (5.00 / 1023.00) * VRT;
VR = 3.3 - VRT;
RT = VRT / (VR / R);
ln = log(RT / RT0);
TX = (1 / ((ln / B) + (1 / T0)));
TX = TX - 273.15;
}
Когда я подключаю зуммер, это вызывает небольшое падение напряжения, которое искажает показания температуры. Как я могу получить стабильные показания температуры, когда в цепи есть зуммер?
@ElectronSurf, 👍0
Обсуждение2 ответа
Лучший ответ:
Вы можете использовать выход регулятора в качестве опорного напряжения для аналоговых показаний. Таким образом, независимо от того, какое напряжение использует делитель напряжения для термистора, «верхнее» напряжение, которое использует АЦП, всегда совпадает с напряжением термистора.
Просто подключите выход регулятора к контакту AREF
и настройте АЦП на использование внешнего опорного напряжения:
analogReference(EXTERNAL);
Теперь у вас есть диапазон 0–1023, охватывающий 0–3,3 В (или любое другое напряжение, которое выдает регулятор), и, поскольку выход вашего делителя напряжения представляет собой просто отношение этого напряжения, это отношение будет всегда должен быть коэффициент 1023, независимо от напряжения.
По сути, вы убрали напряжение из уравнения. Все, что у вас осталось, — это значение в виде дроби от 1023, которое затем прямо пропорционально сопротивлению термистора.
Я сделал именно то, что сказал, и показания стабильны даже при падении напряжения, побочный вопрос; в этой строке «VR = 3,3 - VRT» напряжение определено как 3,3 В, но я получаю ложные показания и должен изменить его на «VR = 5 - VRT;». разве напряжение AREF и напряжение на термисторно-резисторном делителе напряжения не 3,3 В? почему я должен определить это 5V, чтобы получить правильное чтение температуры?, @ElectronSurf
Потому что в линии перед вами 5в по напряжению. Измените это на 3,3 В., @Majenko
После небольшого исследования я понял, что LF33Cv не является надежным Vref, вы предлагаете LM336 или TL431?, @ElectronSurf
Стабильность не имеет значения для этого приложения. Напряжение тоже. Вы можете использовать любое напряжение, которое находится в пределах спецификации АЦП, и результаты будут такими же. Вы заботитесь о точном Vref только в том случае, если вы сравниваете что-то внешнее с этим Vref. Вы не. Вы просто смотрите на соотношение двух резисторов между Vref и GND. Формула для R2 может быть сокращена до «(A * 10000) / (1023 - A)», где «A» — это значение, считанное с АЦП. Там вообще нет напряжения. Это все отменяется., @Majenko
Спасибо и извините за вопрос за вопросом ... у меня есть датчик Холла UGN35, который также подключен к аналоговому выводу, и аналоговые показания меняются с падением напряжения, в этом конкретном случае я должен изменить источник Vref на TL431 или это так. что-то, что можно исправить с помощью программного обеспечения?, @ElectronSurf
@newbie Может быть, вам следует разобраться, почему у вас падает напряжение, а не пытаться его компенсировать., @Majenko
даже включение простого светодиода вызывает изменение аналоговых показаний датчика холла! это немного, но это что-то... я должен задать это в отдельном вопросе?, @ElectronSurf
Ага. И предоставить полную подробную схему., @Majenko
Подключите выход регулятора к другому аналоговому входу. Прочитайте это непосредственно перед тем, как прочитать термистор. Используйте это напряжение при расчете делителя напряжения. Звуковой сигнал должен быть одинаковым (в идеале выключенным) во время обоих считываний.
- Самый эффективный делитель напряжения для Arduino?
- Считанное значение не меняется при вращении потенциометра в Arduino?
- Измерение 12 В через делитель напряжения: правильный выбор резисторов
- Будет ли резистор сопротивлением 100 кОм, подключенный к земле, понизить сопротивление открытой аналоговой линии до 0?
- Измерение 600 В постоянного тока с помощью Arduino (делитель напряжения)
- Отправка значения с одного Arduino на другой
- Использование аналогового входа для чтения кнопки
- Как работать с аналоговыми контактами в цикле?
Использовать выход LF33CV в качестве AREF?, @Majenko
Насколько падает напряжение? Можете ли вы просто использовать источник питания, который может работать с током зуммера без падения напряжения? И в ваших схемах зуммер подключен постоянно, поэтому падение напряжения должно быть постоянным, а это значит, что вы сможете обойти его, измерив результирующее напряжение и включив его в свои расчеты., @chrisl
@Majenko как? подключить 3,3 В к контакту AREF И термистору?, @ElectronSurf
@chrisl Я не измерял падение напряжения, но оно должно быть ~ 1 В, это активный зуммер. зуммер управляется микроконтроллером, я просто не добавил это в схему..., @ElectronSurf
@новичек Ага. и установите
analogReference(EXTERNAL);
-- https://www.arduino.cc/reference/en/language/functions/analog-io/analogreference/, @Majenko