The 16-year-old was considered one of the best young talents at Glanford Park, and went on trial with the Italian giants AC Milan last season.
He was also on the bench in pre-season when the Iron took on a Manchester United XI in a pre-season friendly.
But he turned down a scholarship with the club, and after months of haggling an undisclosed transfer fee has been agreed.
"When Derby came in for Charles, both he and his father were keen to explore their options which is understandable," said the Iron's general manager David Beeby on the club's official website.
"They have a really good setup at Derby and when they had a look around they were keen for the move to happen. "Charles' contract was due to expire at the end of the season and he could have signed for Derby with the fee set by the new Elite Player Performance Plan compensation which has just come in. "The club worked hard to try and persuade Charles to stay, with both Tony Daws and Alan Knill holding discussion with his family."