Är du säker på det? Man brukar normalt låta transistorerna switcha hårt på/av för att få ner värmeförlusterna, det är sällsynt att köra i linjära området om man ska styra en stegmotor. Fyrkantvågen (sannolikt PWM) efter transistorn skickar man oftast genom en drossel för att medelvärdesbilda strömmen, gör man inte det så skenar värmeförlusterna i motorlindningarna.
I en frekvensomriktare så varierar man pwm-signalens duty cycle så att strömmen efter medelvärdesbildning i drosseln ser ut som en sinus.
Jag har inte studerat just hur man styr USM-motorn i en kamera, generellt så har man problemet att man inte vet var stegmotorn befinner sig mekaniskt när man slår på strömmen. Därför är vanligt att man stegar ut till ena ändläget där någon form av gränslägesbrytare talar om när man är framme, sen handlar det om att hela tiden räkna pulser när man rör sig framåt eller bakåt. Jag försökte köra mot mekaniskt ändläge utan gränslägesbrytare i ett projekt, det gick inget bra eftersom stegmotorer kan studsa mot ändläget och börja gå åt fel håll. Jag sätter en spänn på att Canon har petat in en läsgaffel eller hallgivare eller kanske en enkoder som ger mikrokontrollern kontinuerlig information om var motorn befinner sig. Ett fel där kommer att ställa till trubbel..