Three hours is plenty of time.
It never takes more than an hour to go DCA-IAD. In rush hour it can take an hour; in dead of night could be under 30 minutes. Check in and security and moving to the mid-field terminal at IAD will all take an hour or less total. You will have an hour at the gate.
All this is assuming you land at DCA on time.