connecting a small motor to arduino using a transistor

I want to connect a small motor (water pump) to an arduino, and I am not sure about the circuit.

The pump is small, works with 3.3V, but consumes 0.1A so I decided to use a transistor. The one I have is BF547, an NPN type small transistor. It supports currents up to 100 mA.

I measured the hfe (beta) of the transistor, and it is 370. The Vcc is 3.3V, and the current through the motor is 0.1 A, therefore:

A. the Ib equals to Ic/hfe = 0.1A/370 giving Ib = 0,00027A

B. with the Vb at 3.3V(pin voltage) and Vbe at 0.7 (datasheet) the Rb = (Vb-Vbe)/Ib = 9558 Ohm (10kOhm)

My questions are:

1. Did I calculate the base resistance correctly?
2. Do I need any additional resistor for the collector, next to the pump? Is it possible that more current flows through the collector-emitter?
3. According to the datasheet of BF457 100mA is the max Ic it can take. Should I limit the pump by adding a small (10 Ohm) resistor to it (33 Ohm[motors resitance] + 10 Ohm for 3.3 V gives a current of 76 mA)

I am attaching the schematics (linear voltage regulator is there only to stabilise the Vcc provided by an old dc power source I found)

Thanks a lot for any suggestions! • use a MOSFET for switching loads; cooler, simpler, more powerful, etc. May 27 '21 at 7:33