Drew Miller and Cory Emmerton both had goals for the Red Wings, who bounced back from a loss in Montreal last Wednesday to win for the eighth time in the past nine games. Jimmy Howard stopped 28 shots in the win.
Emmerton scored 5:57 into the game when Jim Abdelkader fired a wrister on the rush from the right circle that Kiprusoff stopped, but he kicked the rebound out to the left and Emmerton was there to bury it.
The Flames tied the game 1:59 into the second on the power play as Cammalleri grabbed a rebound of an Alex Tanguay shot down low and backhanded it past Howard.
Hudler, though, gave his team a 2-1 lead with 8:31 to play in the third when Valtteri Filppula took the puck down the right wing to the side of the net and chipped it out front for Hudler, who snuck it in from there.
Miller gave Detroit an insurance goal with 4:02 to play, his eighth of the year.
Detroit continues its five-game road trip in Vancouver on Thursday...Calgary hosts Chicago on Friday...Each team won twice in the season series...Calgary was 1-for-2 on the power play while Detroit went 0-for-3.