Hi!
Ich kann auch nur die HardwarePWM empfehlen. Damit wird das fast ein 3-Zeiler:
Timer aktivieren und einstellen (einmal in der Init)
OutPutCompare Unit aktivieren und einstellen (einmal in der Init)
IRQs initialisieren (einmal in der Init)
Und dann brauchst Du nur noch entsprechende Werte in die OCR-Register zu schreiben, um das Tastverhältnis einzustellen. Das kann zu jeder Zeit geschehen.
Die Sache benötigt im Hauptprogramm auschließlich die Zeit zum Ändern der OCRWerte.
Dafür würde auch der Mega8 ausreichen, weil Du ja nur 3 PWM Kanäle brauchst. Allerdings musst Du prüfen, ob du die Pins nicht noch für was anderes brauchst und Du dann doch lieber den Mega88 nimmst.
Der Transistor sollte gehen (Basisvorwiderstand nicht vergessen), ein FET, zB IRL3803 wäre auch ok, dann wird auch nichts warm. Mit einem Widerstand vor zwischen Gate und µCAusgang (zB 200Ohm) und von Gate nach GND (10k). Beim BD sind es schon rund 3Watt, die Du wegkühlen musst, wenn ich das auf die schnelle richtig gelesen habe.
Gruß