I have students using an arduino to control a fan. We have multiple types of fans. We want to turn the fan off/on with digital HIGH. When the 5V fan is plugged into 5V and ground, it runs. When I ground it and attached the power side to a pin set to HIGH the voltage drops down to 2.2V??? When the fan is not plugged into the pin there is 5V. Why would the power drop when the fan is plugged in?
Most digital pins on Arduinos are qualified to handle up to 25 mA typically and 40 mA at most. If more current than that is drawn or sunk, the pin voltage will drop or rise, out of specification. This is due to resistance in the pin drivers, and by Ohm's law, voltage equal to current times resistance will develop. That “lost” power (voltage times current) is converted to heat within the microcontroller, and can damage it.
The fan motors probably draw rather more than 25 mA; they probably require a few hundred mA. You can add transistors or motor controllers between the Arduinos and the fans to deal with such current loads.
Absolute Maximum Current per Pin is 40mA (in Arduino Uno) so when you connect the fan with the I/O pins at that time the fan may draw more current from the pin and because of this the voltage level of the pin may drop down. Because Fan or Motor want more current then the capacity of Arduino pins capacity so if you want to On/Start the Fan/Motor then you have to connect Fan/Motor Driver between the Arduino Pin and Fan/Motor. And you have to provide external power source to the motor driver circuit. For your reference: