| Ваш IP: 3.237.186.116 | Online(19) - гости: 15, боты: 4 | Загрузка сервера: 0.53 ::::::::::::


STM32 + MAX6675 — терморегулятор (Arduino)

MAX6675 в комплекте с термопарой типа К рассчитан на измерение температуры в диапазоне от 0 до 1024 ºС, с разрешением 0.25 ºС. Для передачи данных используется SPI интерфейс.

При совместном использовании MAX6675 и отладочной платы STM32 (базе микроконтроллера STM32F103C8T6) можно сделать простой терморегулятор (0…999.0 °С). Управление температурой регулирования осуществляется при помощи энкодера ky-040Температура регулирования сохраняется в энергонезависимой памяти.

#define pinA PB6
#define pinB PB5
#define SO   PB7
#define CS   PB9
#define CLK  PB8
 
#include <STM32_MAX6675.h> //http://forum.rcl-radio.ru/misc.php?action=pan_download&item=410&download=1
#include <STM32_TM1637.h> // http://forum.rcl-radio.ru/misc.php?action=pan_download&item=403&download=1
#include <EEPROM.h>       // Библиотека Arduino_STM32-master.zip
#include <STM32_Encoder.h> // https://rcl-radio.ru/wp-content/uploads/2020/01/STM32_Encoder.zip
  STM32_Encoder encoder(pinA, pinB);
  STM32_TM1637 tm(PB0,PB1);// CLK, DIO
  STM32_MAX6675 max6675(CLK, CS, SO);
 
int position = -999;
byte w,i;
int reg;
const float gis = 1.0;// гистерезис
unsigned long times;
float celsius,sum;
 
void setup() {
  Serial.begin(9600);  
  tm.brig(7); // ЯРКОСТЬ 0...7
  EEPROM.init(0x801F000,0x801F800,0x400);// 1024 byte
  encoder.begin();                                                         
  attachInterrupt(digitalPinToInterrupt(pinA),Read,CHANGE);  
  attachInterrupt(digitalPinToInterrupt(pinB),Read,CHANGE); 
  pinMode(PB7,OUTPUT);// выход управления реле
  reg = EEPROM.read(10);
  delay(500);
}
 
void loop() { 
   if(millis()-times>3000){
   for(i=0;i<3;i++){
   celsius = max6675.readCelsius();
   sum = sum + celsius;
   delay(500);}celsius = sum/3;sum=0;}
 
    if(position != encoder.getPosition()){position = encoder.getPosition();
    reg = reg + encoder.getPosition();encoder.setPosition(0);position = 0;
    w=1;times = millis();if(reg>999){reg=999;}if(reg<0){reg=0;}}   
 
    if(millis()-times<3000){tm.print_float(reg,0,  0b01010000,0,0,0);}
    else{tm.print_float(celsius,1,  0,0,0,0);}
    if(celsius>999||celsius<0){tm.print_float(celsius,0,  0b01000000,0b01000000,0b01000000,0b01000000);}
 
    if(reg >= celsius + gis){digitalWrite(PB7,HIGH);}
    if(reg <= celsius - gis){digitalWrite(PB7,LOW);}
 
    if(millis()-times>1000&&w==1){w=0;EEPROM.update(10, reg);}
  }
 
void Read(){encoder.readAB();}

В скетче указан гистерезис значение которого Вы можете изменить:

const float gis = 1.0;// гистерезис

Погрешность измерений по результатам тестирования не превышает 1 %

Результаты измерений:

Показания прибора, °С Полученное значение, °С
100 100.3
200 201.5
300 302.5
400 400.3
500 497.8
600 595.2
700 690.5
800 790.3
900 892.8
990 985.0

Форум — http://forum.rcl-radio.ru/viewtopic.php?pid=1031#p1031

Добавить комментарий

Войти с помощью: 

Случайные статьи

  • Частотомер STM32 + индикатор на MAX7219 (Arduino)

    Частотомер STM32 + индикатор на MAX7219 (Arduino)

    На базе отладочной платы STM32 с использованием 8-и разрядного семисегментного индикатора на микросхеме MAX7219 можно собрать простой частотомер. Так же частотомер содержит простой усилитель — формирователь сигнала, который состоит из одного транзистора КТ3102 и нескольких пассивных элементов. На вход частотомера можно подавать синусоидальный или импульсный сигнал амплитудой от 0,5 до …Подробнее...
  • Выключатель света с задержкой

    Главная особенность выключателя с задержкой в том что после включения света, он гаснет через 1-2 минуты, такой выключатель целесообразно устанавливать в помещениях общего пользования, например в подъездах домов. Кнопку включения освещения целесообразно совместить с открыванием двери и каждый раз когда дверь будет открываться свет будет включаться и гореть 1-2 минуты, …Подробнее...
  • 4-х канальный УМЗЧ на LA4743B (45 Вт на канал)

    4-х канальный УМЗЧ на LA4743B (45 Вт на канал)

    Микросхема LA4743B является 4х канальным усилителем мощности, разработанная компанией SANYO для применения в автомобильных аудиосистемах. При номинальном напряжении питания от бортовой сети 14.4 В микросхема способна развить мощность до 45 Вт на каждый канал. Микросхема имеет встроенную защита от короткого замыкания выходов, защиту от перегрева, функцию ослабления сигнала, выключение в дежурный …Подробнее...
  • Электронный стимулятор мышц

    На рисунке показаны схемы электронного стимулятора мышц, схема состоит из двух частей, первая часть сам стимулятор мышц, вторая схема — таймер рассчитанный 10 минут. Основа стимулятора мышц это таймер на ИС 7555 которая генерирует импульсы с частотой 80 Гц. Использование потенциометра VR1 позволяет управлять интенсивностью тока на электродах. Уровень яркости …Подробнее...
  • Фазоуказатель

    Фазоуказатель

    Подключение некоторых устройств, работающих от трехфазной сети переменного тока напряжением 380 В, например электродвигателей, должно соответствовать правильной последовательности чередования фаз. Для определения последовательности чередования фаз можно собрать индикатор, схема которого показана на рисунке. Прибор имеет простую схему, высокую надежность и не требует автономного источника питания. Принцип работы прибора основан на …Подробнее...