Измерване на напрежение с ESP32-C3 и външно опорно напрежение с TL431

Измерване на напрежение с ESP32-C3 OLED 0.42″ и външно опорно напрежение TL431

В тази статия ще разгледаме как да измерваме напрежение с ESP32-C3 OLED 0.42″, използвайки външно опорно напрежение от TL431. Използването на външно опорно напрежение може значително да подобри точността и стабилността на измерванията. Ще обсъдим стъпка по стъпка как да инсталираме и конфигурираме необходимия хардуер и софтуер.

1. Какво е TL431?

TL431 е прецизен регулатор на напрежение, който осигурява стабилно опорно напрежение. Той може да бъде настроен да осигурява напрежения като 2.5V или 3.3V, което е много полезно за приложения, изискващи точност и стабилност. В нашия случай опорното напрежение което ще използваме е 2.5V. Може да прочетете как да направите това в нашата статията Опорно напрежение (Voltage Reference).

2. Защо да използваме външно опорно напрежение?

Използването на външно опорно напрежение има няколко предимства:

  • По-добра точност: Вътрешното опорно напрежение на микроконтролерите може да бъде нестабилно и неточно, особено когато има промени в захранващото напрежение или температура.
  • Стабилност: Външното опорно напрежение, като това от TL431, осигурява стабилни измервания без значителни вариации.

3. Необходими компоненти

  • ESP32-C3 OLED 0.42″: Микроконтролерът, който ще използваме за измерване на напрежението. Може да разгледате неговите характеристики в нашето ревю за него: ESP32-C3 PICO OLED 0.42″.
  • TL431: Прецизен регулатор на напрежение.
  • Резистори: За настройка на изходното напрежение на TL431. В нашия случай ни трябва само един ( подходящ 330ом за 5v ), за гасене на тока.
  • Потенциометър: За фина настройка на опорното напрежение (в този случай няма да използваме).
  • Проводници и макетна платка: За свързване на компонентите.

4. Свързване на компонентите

  1. Свържете TL431:
    • Референция (Ref): Свържете към VCC след резистор 330om.
    • Анод (Anode): Свържете към земя (GND).
    • Катод (Cathode): Свържете към захранване (Vcc) чрез подходящ резистор.
    • Опорно напрежение: Вземете стабилното опорно напрежение от TL431 (2.5v) и го свържете към ADC пина на ESP32.
  2. Свържете ESP32 C3:
    • Свържете изхода на TL431 към един от ADC пиновете на ESP32.
    • Уверете се, че GND на TL431 е свързан към GND на ESP32.

5. Програмиране на ESP32 C3

След като компонентите са свързани правилно, можем да напишем код за измерване на напрежението. Ние сме написали библиотека за ваше улеснение.

Създаване на библиотека vref.py

Създайте нов файл и го кръстете “vref.py”. В него копирайте кода отдолу, след това го запаметете. След което вашата библиотека е вече готова.

from machine import Pin, ADC
import time

class VRef:
    def __init__(self, pin, known_voltage, num_samples=500):
        self.adc = ADC(Pin(pin))
        self.adc.width(ADC.WIDTH_12BIT)
        self.adc.atten(ADC.ATTN_11DB)
        self.known_voltage = known_voltage
        self.num_samples = num_samples

    def get_vref(self):
        total = 0
        for _ in range(self.num_samples):
            total += self.adc.read()
            time.sleep(0.001)  # Малко забавяне между прочитанията (1 ms)
        
        avg_value = total / self.num_samples
        ref_voltage = (self.known_voltage * 4095) / avg_value
        return ref_voltage
Примерен код за изчитане на напрежение
from machine import Pin, ADC
from time import sleep
from vref import VRef

Vin = ADC(Pin(0)) # пин с който изкаме да измерим напрежението на источник
Vin.width(ADC.WIDTH_12BIT) # АЦП 12bit 0-4095
Vin.atten(ADC.ATTN_11DB)  # Full range: 3.3v

# Използване на външен източник TL431
# pin=1 - Пин на който сме свързали TL431
# known_voltage=2.5 - Измерено напрежение на TL431 Ref пин ( измерването е с мултицед )
vref = VRef(pin=1, known_voltage=2.5)

while True:
    Vin_value = 0
    
    for i in range(100):
        Vin_value += Vin.read()
    
    Vin_value = Vin_value / 100
    volt = (Vin_value * vref.get_vref()) / 4095
    
    print(round(volt, 2))
    sleep(0.5)

Резултати и анализ

След като изпълните кода, трябва да получите стабилни и точни измервания на напрежението. Въпреки това, може да установите, че максималното измервано напрежение е около 2.9V вместо очакваните 3.3V. Това може да се дължи на ограничения в характеристиките на ESP32 C3 или на калибрацията на външното опорно напрежение.

Заключение

Използването на външно опорно напрежение от TL431 заедно с ESP32 C3 може значително да подобри точността и стабилността на измерванията. Макар че може да има някои ограничения, свързани с максималното измервано напрежение, този метод предоставя стабилни резултати, които са полезни за много приложения.

Забележка: Срешнах този проблем при измерването на аналогови стойности с “ESP32-C3 OLED 0.42″”. Не съм пробвал всички ESP32 развойни платформи! С развитието на този сайт ще изпробвам и останалите.