A method for calibrating a motor, the motor comprising a permanent magnet synchronous motor (108, 202), the method comprising: generating a rotating magnetic field using a voltage vector, the rotating magnetic field configured to rotate at a constant angular velocity independent of an actual rotor position, and the rotating magnetic field rotating in a first direction; identifying, by a processor, timing data associated with a plurality of digital Hall effect sensors (106, 204), by: detecting polarity changes (206, 314) of rotor magnets relative to the plurality of digital Hall effect sensors during rotation of the motor; identifying a plurality of time-stamps, each of the plurality of time-stamps associated with a respective one of the polarity changes, during rotation of the magnetic field; and calculating a plurality of time difference values associated with the plurality of time-stamps, wherein the timing data comprises at least the plurality of time difference values; computing, by the processor, accurate positions for each of the plurality of digital Hall effect sensors, using the timing data and the constant angular velocity, wherein the accurate positions comprise calculated distances between the digital Hall effect sensors; creating a reference table in a system memory, by the processor, the reference table comprising the accurate positions; and during operation of the motor, calculating accurate angular velocity values for the motor, using the calculated distances stored in the reference table. generating a rotating magnetic field using a voltage vector, the rotating magnetic field configured to rotate at a constant angular velocity independent of an actual rotor position, and the rotating magnetic field rotating in a first direction; identifying, by a processor, timing data associated with a plurality of digital Hall effect sensors (106, 204), by: detecting polarity changes (206, 314) of rotor magnets relative to the plurality of digital Hall effect sensors during rotation of the motor; identifying a plurality of time-stamps, each of the plurality of time-stamps associated with a respective one of the polarity changes, during rotation of the magnetic field; and calculating a plurality of time difference values associated with the plurality of time-stamps, wherein the timing data comprises at least the plurality of time difference values; detecting polarity changes (206, 314) of rotor magnets relative to the plurality of digital Hall effect sensors during rotation of the motor; identifying a plurality of time-stamps, each of the plurality of time-stamps associated with a respective one of the polarity changes, during rotation of the magnetic field; and calculating a plurality of time difference values associated with the plurality of time-stamps, wherein the timing data comprises at least the plurality of time difference values; computing, by the processor, accurate positions for each of the plurality of digital Hall effect sensors, using the timing data and the constant angular velocity, wherein the accurate positions comprise calculated distances between the digital Hall effect sensors; creating a reference table in a system memory, by the processor, the reference table comprising the accurate positions; and during operation of the motor, calculating accurate angular velocity values for the motor, using the calculated distances stored in the reference table.