1

Тема: STM32_MAX6675

Библиотека:
Данный контент доступен только зарегистрированным пользователям.


test.ino

#include <STM32_MAX6675.h>

int thermoDO = PB7;
int thermoCS = PB9;
int thermoCLK = PB8;

STM32_MAX6675 max6675(thermoCLK, thermoCS, thermoDO);

void setup() {
  Serial.begin(9600);
}

void loop() {
  
   Serial.print("C = "); 
   Serial.println(max6675.readCelsius());
   delay(1000);
}

2

Re: STM32_MAX6675

#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
#include <STM32_Encoder.h> // http://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();}

3

Re: STM32_MAX6675

Доброе утро.
Почему  вы применяете  stm, а не ардуино.
Можно вместо МАХ, использовать термопару от мультиметра + операционник? (так дешевле)

4

Re: STM32_MAX6675

http://rcl-radio.ru/?p=45845

STM дешеве.

5

Re: STM32_MAX6675

sanj76a пишет:

Доброе утро.
Почему  вы применяете  stm, а не ардуино.
Можно вместо МАХ, использовать термопару от мультиметра + операционник? (так дешевле)

MAX стоит как 2 STM,   заменить бы его, (понимаю, что с ним проще, делаю инфрокрасный подогреватель для плат),
И управление лсд по шине.