The Friis transmission path-loss equation in decibels is this: -
Path loss (dB) = 32.45 + 20\$log_{10}\$(f) + 20\$log_{10}\$(d)
Where f is in MHz and d is in kilometres. So, If I assume 100 MHz (sub 1 GHz) and a distance of 50 km, I get an attenuation of 32.45 dB + 40 dB + 33.98 dB = 106.4 dB.
And, this agrees with you expecting a receiver level of -90 dBm from a carrier transmit power of +16 dBm.
I don't know if this is the correct way to determine power at a
certain range or not
Well, it's a good start. You can make directional antennas to increase the receiver level by many decibels. You can also be prudent with the bandwidth of the information you wish to send to get a few more decibels too.
but either way, this is not enough (receive power).
Well, that depends on the bandwidth of the information you wish to send (and you haven't told us that). The formula for a decent receive level (ignoring fading) is this: -
Power (dBm) needed by a receiver is -154 dBm + \$10log_{10}\$(data rate)
So, if your data rate is (say) 1 kHz, the receiver power needed is -154 dBm + 30 dBm = -124 dBm, then with an extra 20 dB added in to account for fading, you'd be looking at -124 dBm.
But, of course, your bandwidth might be much bigger than what I've assumed.
Can I use something like an op-amp to just increase the output power
and get higher range?
No, you'd never do this for two reasons: -
- You might exceed the regulatory specifications on power emitted (ideal op-amp)
- Ideal op-amps might do the job but, real op-amps wont, ever.
Extra information here and here.