Hello Hello I am making a controller of a small cooler (dry ice) PID but Im not sure if I am using the indicated mosfet
Im trying with a NPN 222a
and my second option is IRFZ44
Which would be the best option?
#include <DallasTemperature.h>
#include <OneWire.h>
#define PWM 13 //-------------Aquà definimos las constantes que se van a utilizar en el programa
const int analogin_potA = A0;
//Definiciones componentes
#define heater1 5 //TIP34c
#define sensor1 A2 //TMP36
// Variables globales
byte man_byte=0;
float Kc=1; //---- Constante proporcional del PID
float Taui=100000; //----- Constante integral del PID
float Taud=0; //----- Constante derivativa del PID
float T=0.5; //------ Periodo de muestreo de la variable de proceso // Ts
float Mk=0; //----Manipulación del PID actual
float Mk1=0; //----- Manipulación del PID del tiempo de muestreo anterior
float E=0; //----- Error actual
float E1=0; //----- Error anterior
float E2=0; //------- Eerror 2 veces atrás del tiempo de muestreo actual
float Ref_Temp=5; //-------- Referencia de la temperatura (°C)
float Temp=0; //----- Variable de proceso (temperatura)
//---------------- Constantes del PID digital ---------------
float BC1=0;
float BC2=0;
float BC3=0;
//----------------
void setup() {
%Serial.begin(9600);
%Serial.write(Temp);
pinMode(analogin_potA, INPUT);
BC1=Kc*(1+(T/Taui)+(Taud/T));
BC2=Kc*(-1-(2*Taud/T));
BC3=Kc*Taud/T;
}
void loop() { // Este es la función que se ejecuta cÃclicamente dentro del Arduino
Temp = analogRead(analogin_potA);
// Aquà va la calibración del sensor para convertir los volts leidos en °C
//
E = Ref_Temp - Temp;
Mk=Mk1+BC1*E+BC2*E1+BC3*E2; // Esta es la ecuación del PID que calcula la manipulación actual (Mk)
// Aquà estamos limitando el valor máximo y mÃnimo de la manipulación a 0-255
if (Mk > 255){
Mk=255;}
if (Mk < 0){
Mk=0;}
man_byte=Mk;
analogWrite(PWM, man_byte); //Aquà mandamos la manipulación actual al pin generador de PWM (pin 5 del arduino)
//Aquà recorremos la manipulación actual a la manipulación anterior, el error actual al error anterior y el error 2 veces anterior al error anterior.
Mk1=Mk;
E2=E1;
E1=E;
//Aquà irÃa la comunicaci+on serial con la computadora para desplegar el valor de la temperatura y leer el valor de la referencia.
Serial.println("Temperatura_1");
Serial.print(Temp);
delay(1000);
//
}
best option
actually means and your post is not about arduino