My son just finished his freshman year of college. It sounds like you are doing things right. My son's grades flucuated from time to time. He would bring homes As then Cs and Ds. I finally determined he knew exactly what he had to do to "get by" and would just get lazy sometimes. Finding what motivates kids is the biggest thing. Of course, keep encouraging him and teaching/showing him to always do his best, no matter what the grade shows at the end of the day.
I learned early on that my son wasn't as "into" my hobbies as I was. He would join me, occasionally, but my son was never "Can we go do this or that". All he wanted to do was stay home and play video games. Don't get me wrong, he has grown into a mature young man that I am proud of, but he enjoys playing games in his spare time and I enjoy being outside... Believe me when I say I used the video games as motivation for the grades. We came up with a sliding scale, Ds got him no playing time, straight As got him almost as much time as he wanted. With all that said, my son and wife are coming with me to a four day rifle class next week!
God luck, just keep pouring into him, showing interest in both his grades and hobbies, and always encourage/respect him. (Respecting is a whole other topic, but can make all the difference in the world.)