I want to be able to output frequencies ranging from 20,000Hz to 60,000Hz from my Arduino UNO. I also would like to be able to control this using the tone() function (so i just type in the frequency as the function parameter. Apparently this supports unsigned integers (0-65535) which appears to cover my range of frequencies sufficiently.
Is there a piezo speaker (ultrasonic?) available on the market I can connect simply using the 5v on the board to support this?
Piezo speakers need relatively high voltages to generate an appreciable signal (10-40 volts) so you may need a bit of external circuitry. Also, they are very frequency selective and won't reproduce the range from 20,000 - 60,000 Hz uniformly.
How important is the sound volume and uniformity of response to you?
An alternative is the foil membrane transducer used in the Polaroid ultrasonic ranging modules, which has very flat response from 20 kHz - 100 kHz, but those require 200-300 volts to drive them.
The volume and uniformity aren't that important to be honest.
Assuming there is a speaker out there suitable for this task, I need to increase the 5v power the arduino is currently able to output. Is this done through a shield (like the Make shed motor shield kit)?
This page describes some ways of driving a piezo disk from an Arduino port http://cladlab.com/electronics/components/piezos In particular the circuit I've attached is useful, but be sure to use a transistor with a high Vce breakdown voltage, as noted.
No! Don't lower the inductance. That actually increases the current, mainly because a lower inductance means less and/or heavier wire and less resistance.
Do you have an oscilloscope? You could add resistance in series with the inductor. You could also reduce the duty cycle of the driving signal.
Because I intend on using the Tone() function of the ardunio library it "Generates a square wave of the specified frequency (and 50% duty cycle) on a pin", so I don't believe there is any room for manouvre on the duty cycle.
Although ideally i'd like it to be variable between 10%-50% duty cycle.
It is certainly possible to have adjustable duty cycle and I imagine one could change the code in the tone library to accomplish that. Consider this to be a challenge!