Sensore di temperatura max6675 termocoppia k con stm32f103c8t6 fino a 600 gradi
- Postato 25 agosto 2024
- Elettronica
- By Daniele Baglivo
- 520 Views
Adattiamo il sensore di temperatura max6675 termocoppia k per farlo funzionare con stm32f103c8t6
In questa semplice guida vi faro` vedere come utilizzare una termocoppia k max6675 + stm32 con temperatura fino a 600 gradi, il sensore utilizzato e` questo Link
Includendo la libreria come si farebbe normalmente con arduino (#include "max6675.h") ho riscontrato problemi di compatibilita`, quindi ho deciso di riportare quest`ultima direttamente nello sketch, estraendo la parte utile al funzionamento del sensore...
Di seguito i cablaggi da effettuare:
| Stm32f103c8t6 | Max6675 |
| PA5 | SCK |
| PA6 | SO |
| PA4 | CS |
| +3.3V | VCC |
| GND | GND |
Ecco a voi un esempio di codice base che stampa sulla seriale la temperatura rilevata:
#include SPI.h
int SO = PA6;
int CS = PA4;
int SLK = PA5;
float tempCelsius;
float tempFahrenheit;
void setup() {
Serial.begin(9600);
delay(500);
}
void loop() {
tempCelsius = readCelsius();
tempFahrenheit = readFahrenheit();
Serial.print(tempCelsius);
Serial.println(" C");
Serial.print(tempFahrenheit);
Serial.println(" F");
delay(1000);
}
double readCelsius(void) {
uint16_t v;
pinMode(CS, OUTPUT);
pinMode(SO, INPUT);
pinMode(SLK, OUTPUT);
digitalWrite(CS, LOW);
delay(1);
v = spiread();
v <<= 8;
v |= spiread();
digitalWrite(CS, HIGH);
if (v & 0x4)
{
return NAN; //SENSORE MAX6675 SCOLLEGATO
}
v >>= 3;
return v*0.25;
}
double readFahrenheit(void) {
return readCelsius() * 9.0/5.0 + 32;
}
byte spiread(void) {
int i;
byte d = 0;
for (i=7; i>=0; i--)
{
digitalWrite(SLK, LOW);
delay(1);
if (digitalRead(SO)) {
d |= (1 << i);
}
digitalWrite(SLK, HIGH);
delay(1);
}
return d;
}
Spero che la guida sia stata di vostro interesse!
Come sempre vi sarei molto grato se mettete un bel like e vi inscrivete al nostro canale youtube, dove ci impegneremo a renderlo sempre piu interessante con nuovi contenuti😜