Its not your mash temps (probably), it's the salt & mineral composition of your mash water. If your mineral composition starts changing without you knowing it, your mash will be affected and it could result in an astringent beer, among other possible off-flavors.
After reading about the myriad of ways to adjust your water profile for given styles, I personally decided to start with straight Reserve Osmosis water, and to add Acid Malt, Calcium Chloride and/or Gypsum to (1) drop the pH of the beer to acceptable ranges, and (2) add flavor to the beer (the chloride accents malty flavors, the gypsum increase hop sharpness, acid malt drops pH without affecting flavor).
I would recommend that you download the "EZ Water Spreadsheet" (Google for it) and use all RO or Distilled water for a test batch. Here's how you'll use the spreadsheet if you are making a beer with 10lb base malt, 1lb crystal and .5lb roasted malt, for example (beers with roasted malt were the one's messing up my mashes originally):
I use 3.5gal water in the mash, and 3gal for my sparge, so I enter those numbers in the spreadsheet, and I indicate that its 100% RO/Distilled. I enter 10lb of Base Malt (flagged as Maris Otter in this case), and I also enter .5lb of roasted malt and 1lb of Crystal Malt. The spreadsheet asks for the Lovibond value of the crystal because the darker the grain, the more it drives down mash pH. I'll use 60L for this example.
With nothing else going into the mash, the spreadsheet tells me that my estimated mash pH will be 5.66, which is too high.
However, I haven't added the proper brewing salts to make a dark beer like this anyway. Using all RO water with no extra minerals is great for Pilsners, but not Porters. I'll enter 2g each of Calcium Chloride and Gypsum, and I'll check the box for "adjust sparge". This means that I'm putting that same amount into the sparge as well. So 4g each Calc. Chloride and Gypsum are going into the beer, but only 2g each are going into the mash (and thus affecting mash pH). The amount of these minerals that you add is determined by the style of beer and there's quite a bit of variance. However, if you use 4g CalChlor and 4g Gypsum, it puts you in the 'average' range for most. The water profile section of the spreadsheet will tell you the recommended ranges for these minerals, so you can play around with it and do some research to figure out the flavor contributions they are bringing to the table. The short answer (in my opinion) is that if you get your minerals in that 'average' range, the beer will taste fine, so don't sweat it too much at first.
This brings my estimated mash pH down to 5.61, which is still a little high. You can do a few things here, including (a) adding more Calc Chloride or Gypsum, (b) adding more dark roasted malt to the mash, or (c) adding a neutral, flavorless acid.
In my example, I don't want to add any more minerals, which can affect the flavor of the beer, and I still prefer the flavor of less roasted grain in the mash (cold steeping works well for me) so I'll instead opt for option (c) and add some "Acidulated Malt" to my mash. This is just a type of base malt made by the Germans that is acidified and can be used to drive down mash pH a little. I'll enter 2oz in the spreadsheet and I can see that it's saying my mash pH will now be 5.5, which is in the "desired" range. You should add your acid malt just like a normal grain, so it should be ran through the mill with the other grains. You can also use lactic acid, but you have to add that by the milliliter, and is a little trickier to measure.
A perfect experiment would be to brew the same beer back to back, using the above method once, and just your normal water on the second attempt. And then compare the flavor differences and decide which you prefer.
------------------------------------------------
tl;dr; Use all Reverse Osmosis Water, Download EZ Water Calculator spreadsheet, enter your water volumes and your grain, adjust Calc Chlor and/or Gypsum and/or Acid Malt until the spreadsheet tells you that your pH is good to go. Brew and enjoy.
------------------------------------------------
Since adopting this approach, I haven't had a beer come out astringent yet, and I even made an Oatmeal Porter that I am really enjoying right now, despite not being a big fan of porters, and pretty much hating stouts right now. So any astringency would make a dark beer undrinkable to me. I do have to say that I also haven't been eaten by a rainbow-colored tiger yet since adopting this approach either, so it might just be a coincidence, but I don't think it is. And ideally you should buy a pH meter and check your mash as you go, but I haven't bothered with that final step yet myself. If I start getting some funky flavors perhaps I will.