I don't think there is anything wrong with charging your DC "keep". I don't think anyone outside of the family can decide what should be a fair amount, that should be down to personal circumstances.
Our DS1(20) is earning £14,492 at present, at the end of this month it rises to £18K. He is in the Army so lives away. Out of that he pays for his food and board and then has a lot of money left over. He puts a substantial amount in a savings account at the beginning of the month, and whatever he has left at the end goes in too (he wants a new car).
Before he joined the Army 6 months ago, he had a P/T job, we didn't take "keep", because we knew he only had a small salary, but he was sensible with his money and he would buy stuff from the supermarket if we needed it, helped out round the house, gave his brother lifts etc. However, we did teach budgeting and feel that is the most important thing.
When DS1 was in Phase 1 training and they got their first pay packets, most of the recruits had no idea of what to do with this large amount of money that they had access to. They bought iPhones, PS4s, XBox ones etc and had no money a week after pay day.
Going back to the original point, DS1 was home for Christmas, I don't know how much electric or gas he used and I care not. I do know the food bill went up, I know I could have done with a cow in the garden for the amount of milk and youghurt we got through, boxes of cereal were gone through on an almost daily basis. I had forgotten how much he actually eats. If he was living at home, earning the money he is on now, he would be contributing around £300 because that's almost what he pays to the Army for his food and board, which is 3 meals and no cleaning!