Objetivo: demostrar nociones de C/C++, adquisición analógica y control básico implementando un PI que regula una “temperatura” simulada (potenciómetro o NTC) actuando vía PWM (ventilador/resistencia a través de MOSFET).
- Arduino UNO/Nano (o compatible).
- Entrada analógica: potenciómetro (simula sensor) o NTC en divisor resistivo.
- Salida PWM: pin con PWM a MOSFET + carga (ventilador/resistencia). Si no tienes hardware, puedes observar el PWM sin carga.
- Alimentación y masa comunes, ESD y cableado seguro.
A0
→ cursor de potenciómetro (extremos a 5V y GND).D9
→ puerta de MOSFET (con resistencia serie 100–220 Ω). Drenaje a carga, fuente a GND. Carga a +V.- GND común entre sensor y actuador.
El archivo temp_pi_controller.ino
implementa:
- Lectura analógica en
A0
(0–1023) como “temperatura”. - Control PI con saturación de PWM (0–255).
- Log por serie a 115200 baudios con
raw
,error
ypwm
.
- Abre el sketch en Arduino IDE, selecciona la placa/puerto y sube.
- Abre el Monitor Serie a 115200.
- Mueve el potenciómetro: verás
raw
,error
,pwm
evolucionar. AjustaKp
/Ki
si deseas. - (Opcional) Con Python puedes graficar el log pegado desde el monitor serie.
- Empieza con
Kp = 0.8
,Ki = 0.05
. Sube/baja hasta lograr respuesta suave sin oscilación. setpoint
se expresa en unidades ADC (0–1023). Cambia a unidades físicas si calibras una NTC.- Añade anti-windup limitando el integrador si llevas el montaje más allá de la demo.
- Si conectas una carga real, usa MOSFET y disipación adecuados; revisa corrientes y potencias.
- Mantén masas y retornos cortos; añade diodo de flyback para cargas inductivas.
MIT — Úsalo como base para tu portfolio.