From what I've read, dogs and other mammals of similar size behave much differently than insects. They tend to respond best to frequencies between 15 and 25 kHz and the older ones are less susceptible to higher tones. This means that an ordinary pest repeller won't work simply because dogs can't hear it. Therefore, I decided to construct a new circuit (based on the venerable 555, of course) with a variable pitch and a relatively loud 82 dB miniature piezo beeper.
The circuit is very simple and can be easily assembled in half an hour. Most of the components are not really critical, but you should keep in mind that other values will probably change the operating frequency. Potentiometer determines the pitch: higher resistance means lower frequency. Since different dogs react to different frequencies, you'll probably have to experiment a bit to get the most out of this tiny circuit. The circuit is shown below:
Ultrasonic Dog Whistle Circuit diagram
There is no need to etch a PCB for this project, perf board will do. Test the circuit to see how it responds at different frequencies. A 4k7 potentiometer in conjunction with a 10nF (or slightly bigger) capacitor gives some 11 to 22kHz, which should do just fine. Install the circuit in a small plastic box and if you want to, you can add a LED pilot light. Power consumption is very small and a 9V battery should last a long time. Possible further experimentation:
I'm working on an amplified version of the whistle to get a louder beep. All attempts so far haven't been successful as high frequency performance tends to drop dramatically with the 555. Perhaps I could use a frequency doubler circuit - I just don't know and I've run out of ideas. One other slightly more advanced project could be a simple "anti-bark" device with a sound-triggered (clap) switch that sets off the ultrasonic buzzer as soon as your dog starts to bark.