Hi Denny, The manufacturer should provide a commutation table - sadly, they often do not provide them, but it is definitely worth asking for one. If they don't know the commutation table, ask them for a particular drive that is compatible with this motor and then look at the datasheet for that drive. You can determine the table by the method that you describe, but the result is not as simple as "apply phase combination X, record Hall output Y, and then whenever you see hall combination Y, apply X to the phases". This is because the goal of commutation is to achieve the minimum torque ripple and the maximum torque amplitude. If you lock the rotor by applying DC to a phase pair (winding), you have positioned the rotor at one of the zero torque positions for that particular phase pair. The hall to phase voltage mapping has to provide max torque, not zero torque, so for each given hall sensor output, you need to drive the phases in the combination which causes max torque for that rotor position, not zero torque. For most BLDC motors, the hall signals (call them A, B, and C) will each be in phase with the voltage between one pair of motor leads. If you can spin the motor externally while using a scope to look at both hall signals and back-EMF waveform, then you should be able to re-construct the commutation table. Your commutation should apply voltage which is in-phase with the back-EMF voltage. I know I am not being all that clear here on the exact procedure but that's because it is difficult to explain without showing someone in a hands-on way and I don't have time at the moment to write out a whole procedure here for you :) Some motors will have a phase offset between hall signals and the phase pairs but those type of motors will usually be ones that are designed to run in one direction only and at high speed, like hobby brushless motors for airplanes. The motivation here is that the phase shift in the winding current versus winding voltage due to inductance becomes significant at higher speeds and so the optimum commutation switch points change with speed. Servomotors like the one you are using operate at a wide range of speed and direction and so therefore cannot simply shift their hall sensors to optimize for one particular speed but rather they optimize around zero speed which gives good overall performance. Hobby motors optimize for the speed range where they will be generating the most output power and operating most frequently. Sean On Wed, Apr 18, 2012 at 12:15 PM, Denny Esterline wr= ote: > =A0Hmmmm... Possible I suppose. So I guess my next question is, How would= one > go about creating the hall table? > > My procedure was to excite a winding pair at lowish current (by loading o= ne > of my commutation states into OVDCON and setting 10% DC), waiting for the > rotor to stabilize and reading out the current hall data. > > So, P1OVDCON =3D StateLoTable[1]; and the hall sensors read 011. Thus the > third position in my sector table is set to one. > =A0P1OVDCON =3D StateLoTable[2]; and the hall sensors read 010. Thus the = second > position in my sector table is set to two. > and so on... > > > -Denny > -- > http://www.piclist.com PIC/SX FAQ & list archive > View/change your membership options at > http://mailman.mit.edu/mailman/listinfo/piclist --=20 http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist .