Abstract:
A method and apparatus automatically associate a sensed mechanical parameter to a range of motor velocity for controlling the rotational velocity of a motor driving a medical instrument. The method and apparatus sense or measure the mechanical parameter whose value, controlled by a human operator, through for example, a footpad, can be measured and converted to a digital signal. The method and apparatus, in response to the measured sensed mechanical parameter, automatically scale the range of parameter values to a new range of motor velocity values thereby adjusting, to the mechanical displacement (force or distance) with which the user is most comfortable. The transformation also provides deadband values around the minimum and maximum motor velocities so that maximum motor velocity is not &#34;chased&#34; and minimum motor velocity is not sensitive to small perturbations due to thermal effects and other events which may affect the mechanical sensor output.

Description:
The invention relates to control methods and apparatus for controlling motor velocity for driving medical devices, and more particularly, to a method and apparatus for effecting automatic control and scaling of motor velocity in a system for driving surgical cutting instruments. 
     BACKGROUND OF THE INVENTION 
     In surgical processes which employ motor driven drills, saws, and other generally rotary or oscillatory tools, it is common to use a mechanically responsive sensor, such as a footpad, to control the rotational speed of the drive motor. In typical use, if the footpad uses positional sensing to control the speed of the drive motor, different operators, having different sensitivity to the footpad position, can find that the motor velocity varies unexpectedly depending upon the last adjustments to footpad operation and accordingly manual readjustment of the footpad sensor response may be required to acceptably control the rotational speed of the drive motor for different users. 
     Footpads or footswitches which use force sensing technology, as opposed to displacement, possess a different variable quality which varies from person to person. That is, the actuation pressure and the span pressure can vary significantly from person to person. Existing methods for tailoring a specific footpad or footswitch to an operator use, like the displacement sensitive footpads, manual adjustments or buttons. 
     It is accordingly an object of the invention to correlate the pressure applied to a footpad or footswitch to the maximum rotational velocity of a driven motor for driving a surgical instrument without requiring manual adjustments such as the need to manually control speed varying buttons or switches. Other objects of the invention are a low cost, reliable, automatic method and apparatus for adapting automatically to different operators to control a motor driven surgical instrument. 
     SUMMARY OF THE INVENTION 
     The invention relates to a method and apparatus for automatically associating a sensed mechanical parameter to a transformed value in a range of motor velocity values for controlling the rotational velocity of a motor driving a medical instrument. The mechanical parameter has a value which is controlled by a human operator, and is typically set using, for example, a foot pad. The method features the steps of measuring the value of the sensed mechanical parameter controlled by the operator, automatically determining a user controlled maximum parameter value from measurements of the sensed parameter, and scaling the measured values of the sensed parameter to the range of values of the motor velocity wherein a minimum value of the sensed parameter corresponds to no rotation of the motor and the determined maximum value of the sensed parameter corresponds to a maximum rotational value of the motor. 
     In specific aspects, the method of the invention further features the steps of determining whether a current measured parameter has at least a minimum value and, if the value is not greater than the minimum value, maintaining the motor at a zero velocity. If the value is greater than the minimum value, the velocity of the motor is set to a value corresponding to the current measured parameter value. The actual motor velocity is set in accordance with the scaled range of values. 
     In other particular embodiments of the invention, the scaling step operates to provide a substantially linear transformation from the range of parameter values to the range of motor velocity values, and the method can further feature the steps of defining a maximum deadband range of values bracketing the determined maximum determined parameter value and setting the velocity of the motor to the motor maximum velocity value whenever the scaled value of the mechanical parameter is within the bracketed deadband range of values. The method can also provide for stopping the rotational motion of the motor when the measured parameter value is below a determined lower limit. 
     The apparatus of the invention features a sensor for measuring the value of the sensed mechanical parameter controlled by the operator, a controller for automatically determining a user controlled maximum parameter value from measurements of the sensed parameter, and wherein the controller scales the measured values of the sensed parameter to a range of motor velocity values so that a minimum value of the parameter corresponds to no rotation of the motor and the determined maximum value of the parameter corresponds to a maximum rotational velocity of the motor. 
     In specific embodiments of the apparatus, according to the invention, a controller determines whether a current measured parameter value has at least a minimum value and if the value is greater than the minimum value, the controller sets the motor velocity to a value corresponding to the measured parameter value using the scaled range of values. The maximum parameter value is set to a higher value if the current measured parameter value exceeds the previously set maximum parameter value; and if that occurs, the controller provides for rescaling the new range of possible parameter values to the range of motor velocity values. Preferably, the scaling is performed by a substantially linear-transformation scaler. 
     In yet other aspects of the invention, the controller can provide a deadband range of values bracketing the determined maximum parameter value so that the controller sets the velocity of the motor to the motor maximum velocity value whenever the scaled value of the mechanical parameter is within the bracketed deadband range of values. The apparatus can also feature a braking circuit for stopping rotational motion of the motor when the measured value is below a determined lower limit. 
    
    
     BRIEF DESCRIPTION OF THE DRAWINGS 
     Other objects features and advantages of the invention will be apparent from the following description taken together with the drawings in which: 
     FIG. 1 is a general block diagram illustrating the operation of the invention; 
     FIG. 2 is a flow chart illustrating operation of the controller in accordance with a preferred embodiment of the invention; and 
     FIG. 3 is a more detailed flow chart of a section of FIG. 2. 
    
    
     DESCRIPTION OF THE PREFERRED EMBODIMENT 
     Referring to FIG. 1, in a typical system 10, according to the invention, there is a footpad 12, a controller 14, and a driven surgical instrument 16. The footpad 12 typically has a pressure sensitive activation surface 17 to which a pressure sensor 18 shown in phantom in FIG. 1 is sensitive. The output of the pressure sensor represents the amount of force applied to surface 17 and thus represents a mechanical parameter in response to which controller 14 determines the rotational velocity of a motor 20 within and driving surgical instrument 16. 
     The controller 14, for example a microprocessor driven device such as Phillips microcontroller model No. 87-C-552, receives the output of pressure sensor 18 and converts it to a digital value (an eight bit value between 0 and 255 in the illustrated embodiment). In response to the received digital values from pressure sensor 18, the controller scales a range of pressures corresponding to the forces measured by the pressure sensor 18 to a range of 0 to 255 (a full 8 bit range) and then translates that scaled range to a motor drive signal which is available over lines 22 to the motor 20. The motor 20 is operatively connected to drive a medical instrument such as a saw, drill, etc. for use by the surgeon during an operation. 
     In operation, referring to FIG. 2, the controller first reads the sensed parameter and determines, at 100, whether its value corresponds to a pressure greater than zero (that is, whether the sensor has been activated). In order to accommodate thermal and other error inducing effects, an offset value is subtracted from the pressure reading to create, effectively, a deadband region around zero pressure. If the offset modified pressure reading is not greater than zero (the minimum parameter value), then the system loops back on itself, through path 102, waiting for activation of the apparatus. At this point in time, the maximum value of the parameter has been set to zero and the system is ready to automatically adapt to the applied pressure. 
     Once pressure is applied to the sensor 18, the offset modified sensor output parameter takes a value greater than zero. If the sensor parameter is greater than the previously sensed maximum value, at 104, then the previously sensed maximum parameter value is changed at 106, the values are rescaled at 108, and the motor velocity is accordingly set to its maximum value at 110. If the sensed offset modified parameter value is not greater than the previously determined maximum value, then the offset modified sensed value is converted to a motor velocity digital value, by scaling it in accordance with the previously determined range of parameter values, at 112, and the motor velocity is set according to the scaled value (the motor velocity parameter) at 114. Thereafter, a next value of the sensor output is read and sampled at 116. 
     If the new offset modified sensor value is greater than the old maximum sensor value, as determined at 118, than the old maximum value is changed at 106. Otherwise, the new value is checked to see whether it is greater than zero at 120. If it is not greater than zero, the motor is turned off at 122 in accordance with a predetermined process. Otherwise, the value is scaled according to the previously determined range of values at 112. If the motor is turned off, the process terminates and awaits a new sensed parameter at which time the maximum value will have again been reset to zero. In a preferred particular embodiment of the invention, the maximum value is immediately reset to zero and a new offset value is determined when the motor is off. Further, to accommodate thermal and other effects, which may cause drift, a new offset value is determined approximately every one-half second when the motor is off. 
     Referring now to FIG. 3, the motor velocity is set according to the scaled digital value by first checking whether the scaled motor velocity digital value is within a deadband which extends below the maximum motor velocity (or maximum scaled parameter value of 255). This is indicated at 140. If the value is within the deadband, the motor velocity is set to a maximum motor velocity at 142. This allows a small variation (20% in the illustrated embodiment) in the pressure applied to the footpad around the maximum pressure value, without having the motor velocity change (fall) precipitously, for example, during an operation, even though the sensed footpedal or footpad pressure may vary slightly. It also eliminates the need to chase the maximum motor velocity value. If the motor value is not within the deadband, the new motor value replaces the old motor value at 144 and the new motor value is used to control and set the motor velocity, at 146, by setting the motor velocity equal to a value corresponding to the new motor parameter digital value. Thereafter, the set motor velocity step terminates; and the system and method pass to the next step to read the next value at block 116. 
     In operation, the process of scaling, or rescaling, by controller 14, works according to the following principle. (The attached software appendix describes this method of operation in greater detail, and provides a working software program written in microprocessor assembly language.) 
     First, an offset modified variable speed index (R3) having a value of 0-255 (in other words 8 bit accuracy) is tested for an &#34;off&#34; (zero) value. The offset modified, variable speed index is determined by subtracting the offset value from the measured values. The offset is determined to be that value, which, when subtracted from the current &#34;off&#34; measured value (that is, no pressure on the footpad) corresponds to negative 0.098 volts, in the illustrated embodiment. If the offset modified variable speed index, is less than zero, then the &#34;maximum&#34; variable (R6) indicating the maximum value of the mechanical parameter, is reset to zero. If the offset modified variable speed index is greater than zero, indicating that the footswitch is determined to be in an &#34;on&#34; state, the variable speed index (R3) is compared with the maximum value previously determined by the controller, that is the current value of R6, and if the newly read value of the variable speed index R3 is greater than the current value of the maximum value (R6), then R6 is updated with the value of R3. This automatically detects, therefore, the maximum pressure applied during this &#34;on&#34; cycle and it is this value which is used to scale the lesser values of the variable speed index R3 up to a full scale eight bit value (of 255). In this manner, also, the full scale index becomes the motor velocity value index so that the motor velocity controlling parameter always has a range of values between zero and 255. 
     With enough microprocessor power, a conventional method for determining the velocity digital value is to multiply R3 times 255 (using a 16 bit multiply) and dividing the result by R6 to get an 8 bit result x. Thus, the value of x is determined by the result of Equation 1 which reads as follows: 
     
         x/255=R3/R6 (Eq. 1) 
    
     This takes approximately, in the microprocessor system described above, 250 microseconds. In a second, preferred, alternate method of operation, an approximate value of x can be determined as follows. 
     In accordance with the preferred embodiment of the invention, an approximately linear transformation is obtained, at a substantial savings in calculation time, by first dividing 255 by the maximum sensed parameter value (R6). The fractional portion (255 modulus R6) is saved and the integer value of the division is multiplied by the value of the current measured parameter (R3). The product of the current parameter value (R3), times the integer value of the previous division+1, times the saved fractional value (255 modulus R6) is then divided by 256 (an 8 bit shift in the microprocessor) to yield an 8 bit result. The 8 bit result is then added to the previous multiplication of R3 and the integer value. This produces a value which approximates the value of x identified above in Equation 1 and using the microprocessor system described above takes about 25 microseconds. 
     The method described above provides a &#34;landing pad&#34; so that a user does not chase the maximum pressure value by, for example, pushing the footpad pedal &#34;through the floor&#34;. In accordance with the method, the digital motor parameter &#34;x&#34; is increased by adding approximately 20 percent to the previous calculation of &#34;x&#34;. In the microprocessor, this is performed by multiplying x by 51 and adding the upper 8 bits of the 16 bit product to x. This value is also protected from overflow and the result is used by the system as the motor variable speed index for controlling and determining motor velocity. &#34;x&#34; is thus an 8 bit parameter and has a range of zero to 255. 
     Thus, in accordance with the invention, and as described above, two provisions are made to better control motor velocity. First, a deadband of values is placed below the maximum value of the variable speed motor index, so that small changes in the variable speed index from the maximum value will not have any effect upon the actual motor velocity. Thus, in a preferred embodiment, the deadband is such that if any scaled value from 230 through and including 255 results in a maximum motor output speed. The effect is to allow an approximately 20 percent variation in foot pressure before motor speed will be impacted. Thus the user does not have to chase the maximum pressure &#34;through the floor&#34;. This allows an appropriate upper landing pad for the system thereby enabling better user control over the driven surgical instrument. 
     In the second aspect, a deadband is effectively provided to effect a &#34;landing pad&#34; or &#34;soft landing&#34; around zero motor velocity by subtracting an offset from the measured pressure parameter. In the illustrated embodiment, the offset is selected so that a zero pressure on the footpad corresponds to a negative 0.098 volts. 
     It is important to recognize that while the invention has been described primarily in terms of the computer program of the Software Appendix, the controller 14 can, of course, also be implemented in hardware or in a combination hardware and software. When implemented in hardware, that is, using the equivalent hardware components to the Software Appendix program, the controller 14 would include, with appropriate interconnection as is well known in the art, a resetting circuit 200, a rescaling circuit 202, a transforming circuit 204, a comparer 206, a circuit for increasing the scaled measured value 208, arithmetic elements including at least one multiplier 214, at least one adder 216, at least one divider 218, a subtractor 220, and circuitry 222 for periodically determining the offset value. In addition, the controller can implement the transformation S=S m  ·X c  /X m  where X c  is a current measured parameter value, S is the scaled parameter value, X m  is the maximum parameter value, and X c  is the maximum allowable scaled value. This equation, as will be apparent, is completely equivalent to equation one noted above 
     Addition, subtractions, and other modifications of the described embodiments will be apparent to one of ordinary skill in the field and are within the scope of the following claims. 
     
         __________________________________________________________________________Software Appendixstatus acall     device mov a,r7    ; indicates if footswitch is on jz  off     ; footswitch was off mov a,#offset add a,mask mov r0,a    ; pointer to active offset acall     adc subb     a,@r0   ; subtract offset jnc on      ; pedal is still on mov calctr,#255 mov calctr+1,#7off inc calctr mov a,calctr jnz off0 inc calctr+1 mov a,calctr+1 cjne     a,#8,off0             ; about 1/2 second mov calctr+1,#0 acall     calibrate             ; reset counter and calibrateoff0  mov r0,#offset mov mask,#0off1  acall     adc clr c subb     a,@r0   ; subtract offset jnc on      ; pedal turned on if &gt;=0 inc r0 inc mask cjne     r0,#offset+3,off1             ; loop until doneoff3  clr a       ; all three pedals are off so reset mov r7,a mov mask,a mov max,a mov target,adigital mov a,p3 cpl a anl a,#18h  ; read speed buttons orl a,r7    ; combine with pedal status cjne     a,stat,state             ; goto new state if different reton mov r2,a    ; save adc value cjne     a,max,$+3             ; compare with max jc  on1 mov max,a   ; save if new or same maxon1   mov a,#255  ; autosensitivity mov b,max div ab      ; a = int(255 / max) mov r3,a    ; b = 255 mod max inc a mul ab mov b,r2 mul ab      ; b =  r2 * (int+1) * mod! / 256 mov a,r3 mov r3,b mov b,r2 mul ab      ; a = r2 * int add a,r3    ; a =  r2 * int! +  r2 * (int+1) * mod! / 256 jc  on2 mov r2,a mov b,#51 mul ab mov a,r2    ; add 20% hysteresis add a,b jnc on3on2   mov a,#255on3   mov target,a mov a,mask inc a       ; indicates pedal status rl  a mov r7,a ajmp     digital; subroutine reads 8 bits from adc channel maskadc   mov adcn,mask             ; prepare to read adc channel orl adcn,#8 mov a,adcn jnb acc.4,$-2 anl adcn,#0EFh             ; reset interrupt flag mov a,adch  ; read high byte cpl a ret; subroutine calculates new offsetscalibrate mov r0,#offset mov mask,#0 ; channel 0cal   acall     adc     ; start adc add a,#5    ; .098 volt guard band jnc call mov a,#255  ; clamp at maximumcall  mov @r0,a   ; new offset for channel inc mask    ; next channel inc r0 cjne     r0,#offset+3,cal ret__________________________________________________________________________