FFT resolution and sampling frequency
One issue is that, for the first two sampling frequencies, you are not sampling a full wave of the signal.  

Below is a plot of the time domain signal (1024 samples) and the resulting FFT.  For the first two, the DC bin (0 index) will capture all the energy.  For the 1kHz example, the first bin (the one after 0 index) will capture it.  Bin 10 is where the peak is for 100 Hz sampling rate.

Perhaps your sampling isn't happening quite the way you expect?





R Code Below

# 43563

N &lt;- 1024

fs &lt;- c(20000, 10000, 1000, 100) 
res &lt;- c(0,0,0,0)
idx &lt;- 1

par(mfrow=c(4,2))
for (freq in fs)
{
  res[idx] &lt;- freq / N
  idx &lt;- idx + 1
  t &lt;- seq(0,N-1) / freq
  x &lt;- sin(2*pi*t + 0.892340923)
  plot(x, type='l')
  title(paste('time domain for ', freq))
  x_fft &lt;- abs(fft(x))
  plot(x_fft[1:100], type='l')
  title(paste('100 bins in frequency domain for ', freq))
}