raspberry pi – python GPIO.output no funciona

Tengo una raspberry pi 4 con el sistema operativo raspbian.
estoy haciendo un script en python para encender automaticamente el ventilador cuando la temperatura sea mayor que 50. Todo funciona bien, pero cuando lo “enciende” imprime en la consola “ON” pero realmente no enciende el ventilador. la parte del codigo que controla el GPIO es esta

fan = 12
min_temp = 40
max_temp = 42

GPIO.setmode(GPIO.BOARD)
GPIO.setup(fan, GPIO.OUT)

while(True):
    cpu_temp = get_temp()
    print(cpu_temp)

    try:
        if(cpu_temp >= max_temp):
            if(not GPIO.input(fan)):
                GPIO.output(fan, True)
                print(" ON")
        else:
            if(cpu_temp <= min_temp and GPIO.input(fan)):
                GPIO.output(fan, False)
                print("OFF")
    except:
        print("Some errors")
    finally:
        GPIO.cleanup()
        GPIO.setmode(GPIO.BOARD)
        GPIO.setup(fan, GPIO.OUT)
    time.sleep(3)

En la raspberry tengo el ventilador conectados a los pines 12 y 14, donde el 14 es GND (si paso el pin del 12 al de 5v (pin 2) el ventilador enciende)) no se por que no está encendiendo.