/*
Unidade 7 - Projeto Final
Lara Gardenia
Testador de Condutividade Térmica
Medir a variação de calor em um material condutor ou isolante, calcular a
condutividade términca (k) e classificar o material.
*/
#include <stdio.h>
#include "pico/stdlib.h"
#include "hardware/adc.h"
// Definição dos pinos ADC para os potenciômetros (simulando sensores de temperatura)
#define SENSOR_TEMP_1 26 // GPIO26 = ADC0
#define SENSOR_TEMP_2 27 // GPIO27 = ADC1
// Função para simular leitura de temperatura (conversão do ADC para °C)
float ler_temperatura(uint canal_adc) {
adc_select_input(canal_adc);
uint16_t valor_lido = adc_read();
float voltagem = valor_lido * (3.3f / (1 << 12)); // Conversão para Volts
return (voltagem * 100.0f); // Simulação de temperatura
}
// Função para calcular a condutividade térmica (k) em W/m·K
float calculo_k(float delta_temp, float fluxo_calor, float area, float espessura) {
if (delta_temp == 0) {
return 0.0; // Evita divisão por zero
}
return (fluxo_calor / (area * delta_temp)) * espessura;
}
// Classificação do material com base na condutividade térmica
const char* classificar_material(float k_valor) {
if (k_valor > 50.0) {
return "Bom Condutor"; // Metais como cobre e alumínio
}
else if (k_valor >= 5.0 && k_valor <= 50.0) {
return "Condutividade Intermediária"; // Materiais como vidro ou cerâmica
}
else {
return "Isolante"; // Materiais como plásticos e madeira
}
}
int main() {
stdio_init_all();
adc_init(); // Inicializa ADC
// Configura os pinos ADC para os potenciômetros
adc_gpio_init(SENSOR_TEMP_1);
adc_gpio_init(SENSOR_TEMP_2);
// Definição de valores fixos para execução do código no Wokwi
float fluxo_calor = 1000.0; // Exemplo: 1000W
float area = 0.02; // Exemplo: 0.02m²
float espessura = 0.005; // Exemplo: 0.005m
printf("Teste de Condutividade Térmica\n");
printf("Fluxo de Calor: %.2f W | Área: %.4f m² | Espessura: %.4f m\n", fluxo_calor, area, espessura);
while (true) {
float temp1 = ler_temperatura(0); // Simula sensor 1
float temp2 = ler_temperatura(1); // Simula sensor 2
float delta_temp = temp1 - temp2; // Diferença de temperatura
float k_valor = calculo_k(delta_temp, fluxo_calor, area, espessura);
const char* classificacao = classificar_material(k_valor);
printf("Temp 1: %.2f°C | Temp 2: %.2f°C | ΔT: %.2f°C\n", temp1, temp2, delta_temp);
printf("A condutividade térmica (k) do material é: %.2f W/m·K\n", k_valor);
printf("O material é: %s\n", classificacao);
printf("________________________________________________________\n");
sleep_ms(5000); // Espera 5 segundos antes da próxima leitura
}
return 0;
}
SENSOR 1 (LADO AQUECIDO)
SENSOR 2 (LADO NÃO AQUECIDO)