AFON // радиотехник affonya@mail.ru
← Все проекты для дронов

Термоконтроль ESC (LM35)

Измерение температуры регулятора датчиком LM35 и защита по перегреву.

DMC.07 · Питание · ATmega328P

Задача

Считывать LM35 (10 мВ/°C) и включать сигнал при перегреве регулятора.

Алгоритм

T(°C) = отсчёт·Vref/1024/0.01. Сравнение с порогом включает светодиод/бузер.

Исходный код (C, avr-gcc)

⇩ Скачать 07-esc-temp-lm35.c

#ifndef F_CPU
#define F_CPU 16000000UL
#endif

#include <avr/io.h>
#include <util/delay.h>

static uint16_t adc_read11(uint8_t ch){
  ADMUX=(1<<REFS1)|(1<<REFS0)|(ch&0x0F);  // опора 1.1В
  ADCSRA=(1<<ADEN)|(1<<ADPS2)|(1<<ADPS1)|(1<<ADPS0);
  _delay_ms(1);
  ADCSRA|=(1<<ADSC); while(ADCSRA&(1<<ADSC));
  return ADC;
}
int main(void){
  DDRB|=(1<<PB5);
  const float VREF=1.1f, TH=70.0f;
  for(;;){
    float t = adc_read11(3)*VREF/1024.0f/0.01f;
    if(t>TH) PORTB|=(1<<PB5); else PORTB&=~(1<<PB5);
    _delay_ms(250);
  }
}

Сборка: avr-gcc -mmcu=atmega328p -DF_CPU=16000000UL -Os файл.c -o файл.elf

Пояснения

Для точности лучше внутренний ИОН 1.1В (ADMUX REFS1|REFS0) — выше разрешение на малых напряжениях.

Смотрите также

Тепловой режим ESC и моторов