You forgot to post the actual entry from your crontab file which would help others to help you. When you run it manually, does it succeed? The link below gives a pretty detailed explanation of using crontab with examples which should help.
Just use the crontab -e command as the user you want the script to run as … that will spawn your default editor (or give you a choice of editors if you do not have one yet) and open a user crontab with a descriptive comment block at the top that explains the fields and what to put in them … once you save the file in your editor it will verify it for typos and make sure what you put into it is valid … (both examples @wgarcia gives above are indeed valid, but it is always helpful to use the tools the maintainers of a package have intended for it (and the mentioned comment block should actually help you understand it a bit better too))
Sounds like you are actually asking for producing a hardware failure …
Blindly just forcing the fan speed down without at least checking the temperature value to make sure you do not damage your disks will clearly not do your hardware any good.
I’d extend the script to do some temp reading before enforcing a fan value so you do not accidentally turn it down while the disks are actually overheating…
Is there a particular reason you call the set_speed four times in succession instead of once ?
What I would do if I was you would be to turn the script into an actual daemon by using a systemd timer that fires every 15min, switch the script itself to use /bin/sh instead of bash (there is no need to load a wasteful 5MB shell binary into ram when you do not use bash specific scripting, /bin/sh will just do the same but a lot faster and with eating less RAM) and add some actual temperature check to the script before enforcing any fan speed changes …