From 4556f934557566b36e773edc404f67ed8543fba4 Mon Sep 17 00:00:00 2001 From: Barb Date: Sat, 17 Jun 2023 07:15:00 +0200 Subject: [PATCH] readme update --- README.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/README.md b/README.md index a3da7f1..73ba7ef 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,20 @@ Newer ThinkPads are dumb, their fan controllers use an obscure method of communi This project aims to replace the built-in PWM controller with an attiny or other arduino compatible board containing a custom fan curve. The controller reads a temperature value from a thermocouple and sets the fan accordingly, proportionally to the given temperature. +Required parts: +- Attiny45 or similar (I suggest using an arduino nano or esp32/esp8266 if you wan to add serial/wireless functionality) +- 3x 1k resistors if using a 5V microcontroller (build a voltage divider on the PWM output, as the fan operates at 3.3V); esp boards do not need this, but an output resistor at 1~3k in series with the output is recommended to protect the microcontroller and fan. +- 10~100k resistor (or potentiometer if you want to perform manual calibration of the thermocouple) +- some perfboard +- NTC thermocouple (10 or 100k, calibrate accordingly) +- some wires (AWG24 or thereabout) +- bulk capacitor (a few 10s of uF, value is non critical, if in doubt, use electrolytic, 10V 100uF) + +Quirks: +- arduino and other 8-bit AVRs usually generate 1KHz PWM, but computer fans run on 25KHz (will usually spin with anything from about 20 to 30KHz, but different ones may have other tolerances). Access to the individual hardware timers is needed to circumvent this problem and the "analogWrite" command cannot be used. +- desired PWM value is calculated in real time, but is averaged over the last 10 values to dampen "noise" (spikes and dips in temperature would otherwise lead to abrupt speed changes). +- some fans operate on a reversed PWM logic, with speed following an inverse relation to duty cycle + Future goals: - add serial/usb communication - add buttons/switch to choose between fan curves