Introduction: Forno Elétrico Para Revenimento De Aços Controlado Por Arduíno
Olá a todos!
Neste instructable, vou mostrar-lhe como construir um forno (neste caso específico ele será usado para revenimento). O processo de revenimento de um material é uma forma de tratamento térmico aplicado aos aços para corrigir a tenacidade e dureza excessiva dos aços. O processo consiste em reaquecer as peças já temperadas a temperaturas abaixo da linha inferior de transformação do aço. O sucesso do processo se encontra em manter a temperatura na faixa ideal para o revenimento do aço, que é entre 220ºC e 240ºC, por meio de um controlador digital, no caso o Arduíno.
Nas etapas a seguir descreveremos a idéia central do projeto e o passo a passo para a execução de toda a parte eletrônica envolvida, e um exemplo de construção do forno em si.
Lista de peças (parte eletrônica):
- Termopar tipo K Cerâmico 116 mm Bloco 14 AWG;
- Fio Kanthal DS 21 AWG 0,724mm, 3,729 Ω;
- Potenciômetro (10K) com eixo estriado;
- Módulo Display 7 segmentos;
- Módulo Dimmer para arduino/ Pic-MC-8A (220V);
- Kit dissipador de calor autoadesivo, Módulo conversor 24 bit hx711 p/ célula de carga (Amplificador). Além dos itens citados acima, também foram usados fios conectores para o arduíno.
Lista de peças (forno)*
- Tijolos refratários;
- Argamassa
*Lembrando que o sistema funciona para outras configurações do forno propriamente dito, aqui damos apenas um exemplo).
Step 1: Revenimento
O Revenimento é aplicado nos aços para corrigir a tenacidade e a dureza excessiva, conseguindo o aumento da tenacidade dos aços. Trata-se do reaquecimento das peças temperadas a temperaturas abaixo da linha inferior de transformação do aço.
Portanto o forno necessita manter a temperatura dentro de uma faixa pré-estabelecida (entre 220ºC e 240º C), de modo que o processo ocorra da melhor maneira possível.
Step 2: Conceitos
A idéia central do projeto é que o sistema leia a temperatura atual do forno, a corrija e controle para permanecer na temperatura solicitada.
Um termopar altamente resistente ao calor é instalado no interior do forno, responsável pela leitura constante da temperatura, a qual é indicada no primeiro display. Por tratar-se de um dispositivo extremamente sensível e fazer leituras constantes, as medidas tendem a oscilar no display, dentro de uma pequena faixa de valores, que poderia ser desconsiderada. Portanto optamos pela visualização no display ser a média entre as três últimas temperaturas lidas, o que melhorou visualmente o mecanismo sem perdas consideráveis na precisão. O aquecimento no interior do forno é feita por uma resistência, confeccionada com fio resistivo. As dimensões do fio (espessura, comprimento), capacidade resistiva e quantidade de voltas dependem do que é pretendido com o forno. No projeto em questão a resistência foi dimensionada para um fio de 0,724mm com capacidade resistiva de 3,729 Ω.m. Foram utilizados cerca de 10 metros de fio, que atuarão com uma resistência de aproximadamente 6,66 A e 220V, dando uma potencia de 15 KW. Fórmulas para o cálculo da resistência: R=ρLA Sendo: R a resistência; ρ = resistividade; L = comprimento total do fio, A = área da seção transversal.
Sabemos também que a potência é igual a quantidade de calor por unidade de tempo, e que: P=U²R U = diferença de potencial, P = potência. E: P=Qt Q = quantidade de calor, t= variação de tempo.
Os parâmetros que serão incógnita dependerão do objetivo pretendido e dos fatores limitantes do seu projeto. A resistência deve ser posicionada ao redor do forno, de preferência na região mais central, de modo que o forno seja aquecido da maneira mais uniforme possível
Step 3: Montagem Do Circuito
O passo seguinte é a montagem do sistema.
A leitura coletada pelo termopar (ligado ao amplificador HX711) é convertida para graus Celsius e apresentada no display. O usuário, utilizando o potenciômetro (o qual foi convertido no programa para variar dentro de uma faixa específica de temperatura de acordo com a variação de tensão) pode mudar a temperatura de acordo com a pretendida, a qual é indicada no segundo display. A resistência é ligada ao módulo dimmer triac, que tem como princípio de funcionamento o controle do ângulo de condução. Disparando-o em diversos pontos do sinal senoidal da rede de energia é possível aplicar a uma carga potências diferentes. Assim, se o disparo for feito no início do semiciclo, todo ele (o semiciclo de potência) poderá ser conduzido para a carga e ela receberá potência máxima. Entretanto, se o disparo ocorrer no final do semiciclo, pequena parcela da energia será conduzida até a carga que operará com potência reduzida. Abaixo reproduzimos as formas de onda, com disparos no início e no final do processo (entre esses dois extremos há toda uma gama de potências sob controle do potenciômetro):
Figura 1: Potência aplicada à carga em função do instante de disparo do TRIAC A porta representada pela entrada ZC (Zero Cross) manda um aviso para o microcontrolador de que a tensão está cruzando o zero. A Plataforma Microcontroladora, por sua vez, manda um pulso de volta para o Módulo Dimmer através da porta DIM que fará com que o módulo controle a resistência. Utilizamos também dissipadores de calor como medida de proteção, uma vez que os reguladores de tensão são dispositivos que tendem a superaquecer. Os componentes podem ser interligados entre si com o arduino com o auxílio de uma protoboard. OBS: Para dimmer Triac - Sufixo B para a rede de 110 V e sufixo D para a rede de 220 V.
Abaixo segue o programa utilizado:
#include #include #include #define PINO_ZC 2 //zerocross do dimmer #define PINO_DIM 3 // dim do dimmer
int potencia = 0; // 0 a 100 int dimdelay=8200; void zeroCross() { if (potencia >= 20){ delayMicroseconds(dimdelay); digitalWrite(PINO_DIM, HIGH); delayMicroseconds(10); // t2 digitalWrite(PINO_DIM, LOW); } }
class HX711 { uint8_t dataPin; uint8_t clockPin; uint8_t gain_ch_pulses;
public: enum gain_pulses { CHANNEL_A_128 = 1, CHANNEL_A_64 = 3, CHANNEL_B_32 = 2, }; HX711(uint8_t dataPin, uint8_t clockPin, uint8_t gain_ch_pulses=CHANNEL_A_128): dataPin(dataPin), clockPin(clockPin), gain_ch_pulses(gain_ch_pulses) { } void begin() { pinMode(clockPin, OUTPUT); pinMode(dataPin, INPUT); }
bool is_ready() { return digitalRead(dataPin) == LOW; } int32_t read(int8_t pulses_next=-1) { // Define which channel will be read next (default or specified) int gain_ch_pulses = pulses_next < 0 ? this->gain_ch_pulses : pulses_next; // Wait for chip to become ready while (!is_ready()); // Read the data int32_t data = (int32_t)shiftIn(dataPin, clockPin, MSBFIRST) << 16 | (int32_t)shiftIn(dataPin, clockPin, MSBFIRST) << 8 | shiftIn(dataPin, clockPin, MSBFIRST); // Configure the next measurement channel and gain for (uint8_t i = 0; i < gain_ch_pulses; i++) { digitalWrite(clockPin, HIGH); digitalWrite(clockPin, LOW); } // Extend the signal bit into the 4th data byte if (data & 0x800000ul) data |= 0xFF000000ul; return data; } };
HX711 termopar(9, 10); //9 data; 10 clock TM1637Display display(4, 5); //Clk 4 Dio 5 //Inicializa o display 1
const int numReadings = 10;
int readings[numReadings]; // the readings from the analog input int readIndex = 0; // the index of the current reading int total = 0; // the running total int average = 0; // the average
void setup() { pinMode(PINO_DIM, OUTPUT); attachInterrupt(0, zeroCross, RISING); termopar.begin(); pinMode(A0, INPUT); pinMode(A1, INPUT); for (int thisReading = 0; thisReading < numReadings; thisReading++) { readings[thisReading] = 0; } Serial.begin (230400);
}
void loop() {
//Temperatura de Referência total = total - readings[readIndex]; readings[readIndex] = analogRead(A0); total = total + readings[readIndex]; readIndex = readIndex + 1; if (readIndex >= numReadings) { readIndex = 0; } average = total / numReadings; int tempref=map(average,0,1023,41,14); tempref=tempref*10; if (tempref>400){ tempref=400; } if (tempref<150){ tempref=150; } //Mostra o valor no display display.setBrightness(0x0f); //Define o brilho do display display.showNumberDec(tempref, false); //Printa //Leitura da temperatura //long templ = 275; float x=termopar.read(); float tensao=(x/83886.080)*20; float templ=(tensao*1.100713)+23.764607; int templdisplay=templ; delay (100); //Mostra o valor no display 2 TM1637Display display(7, 6); //Clk 7 Dio 6 //Inicializa o display 2 display.setBrightness(0x0f); //Define o brilho do display display.showNumberDec(templdisplay, false); //Printa
//Calcula a resposta int dif=tempref-templ; if (dif<0) { potencia=0; // desligado } if (dif>=0 && dif<=100) { potencia=map(dif,0,100,20,90); //controlador proporcional } if (dif>100) { potencia=90; //potencia máxima } dimdelay=(8200*((100-potencia))/100); //Serial.print(dimdelay); //Serial.print(" "); //Serial.println(potencia); }
// termopar ->24C/mV //A+ amareelo A- Vermelho
Step 4: Montagem Do Forno
O forno do projeto em questão foi feito com tijolos refratários e argamassa, nas seguintes dimensões:
externas: 52.00 x 23.50 x 21.50; internas: 47.50 x 13.50 x 11.50.
É importante usar uma lima oval para criar uma deformação que permita a instalação da resistência, evitando que essa entre em contato com a lâmina.