Patent Description:
The invention relates to a fastener driver including an electronic clutch according to the preamble of claim <NUM> and a method for operating a fastener driver according to the preamble of claim <NUM>. Such a fastener driver and such a method are known from <CIT>.

Embodiments described herein provide systems and methods for implementing an electronic clutch in a powered fastener driver.

The invention provides a fastener driver including an electronic clutch according to claim <NUM>.

Fastener drivers described herein include a motor, a trigger, a lifting assembly, a position sensor, a speed sensor, and a controller. The lifting assembly is operable to be moved by the motor. The position sensor is configured to sense a position of the lifting assembly. The speed sensor is configured to sense a speed of the motor. The controller is connected to the trigger, the motor, the position sensor, and the speed sensor. The controller is configured to provide, in response to actuation of the trigger and based on the position of the lifting assembly, power to the motor, receive speed signals from the speed sensor indicative of the speed of the motor, determine whether the speed of the motor has dropped by a speed drop threshold within a first period of time, activate the electronic clutch, in response to determining that the speed of the motor has dropped by the speed drop threshold within the first period of time, to electronically brake the motor for a second period of time, and provide, in response to the second period of time having passed, power to the motor.

In some aspects, the controller is further configured to determine, based on the speed of the motor and a speed command signal, a torque value at which to drive the motor, compare the torque value to a torque-velocity-current look-up table, determine, based on the comparison, a current value to provide to the motor, and provide the current value to the motor to drive the motor.

In some aspects, the fastener driver further includes a current sensor configured to provide current signals indicative of a current of the motor. The controller is further configured to receive, from the current sensor, the current signals indicative of the current of the motor, determine a pulse width modulation (PWM) duty cycle ratio based on the current of the motor and the current value, and drive the motor according to the PWM duty cycle ratio.

In some aspects, the controller is further configured to set a position command used to drive the motor to a first position command when the lifting assembly is at a first position, set the position command to a second position command when the lifting assembly is at a second position, and set the position command to a third position command when the lifting assembly is at a third position.

In some aspects, the controller is further configured to compare the position command to the position of the lifting assembly sensed by the position sensor and provide, in response to the position of the lifting assembly being less than the position command, power to the motor.

In some aspects, the controller is further configured to determine a torque limit based on the position of the lifting assembly and control the motor based in part on the torque limit.

In some aspects, the fastener driver further includes a temperature sensor configured to provide temperature signals indicative of a temperature of the lifting assembly. The controller is further configured to receive, from the temperature sensor, the temperature signals indicative of the temperature of the lifting assembly and determine, based on the speed signals and the temperature signals, a torque value at which to drive the motor.

In some aspects, the controller is further configured to detect a high load state of the motor based on the speed of the motor and limit, in response to the high load state of the motor, a torque value at which to drive the motor.

In some aspects, the controller is further configured to drive, in response to the second period of time having passed, the motor according to a low speed setting for a third period of time.

In some aspects, the controller is further configured to electronically brake the motor in response to the third period of time having passed.

The invention also provides a method for operating a fastener driver according to claim <NUM>.

Methods for operating a fastener driving including an electronic clutch described herein include providing, in response to actuation of a trigger and based on a position of a lifting assembly, power to a motor, receiving speed signals from a speed sensor indicative of a speed of the motor, determining whether the speed of the motor has dropped by a speed drop threshold within a first period of time, activating the electronic clutch, in response to determining that the speed of the motor has dropped by the speed drop threshold within the first period of time, to electronically brake the motor for a second period of time, and providing, in response to the second period of time having passed, power to the motor.

In some aspects, the method further includes determining, based on the speed of the motor and a speed command, a torque value at which to drive the motor, comparing the torque value to a torque-velocity-current look-up table, determining, based on the comparison, a current value to provide to the motor, and providing the current value to the motor to drive the motor.

In some aspects, the method further includes receiving, from a current sensor, current signals indicative of a current of the motor, determining a PWM duty cycle ratio based on the current of the motor and the current value, and driving the motor according to the PWM duty cycle ratio.

In some aspects, the method further includes setting a position command used to drive the motor to a first position command when the lifting assembly is at a first position, setting the position command to a second position command when the lifting assembly is at a second position, and setting the position command to a third position command when the lifting assembly is at a third position.

In some aspects, the method further includes comparing the position command to the position of the lifting assembly, and providing, in response to the position of the lifting assembly being less than the position command, power to the motor.

In some aspects, the method further includes determining a torque limit based on the position of the lifting assembly and controlling the motor based in part on the torque limit.

Power tools described herein include a motor, a lifting assembly, a speed sensor, a position sensor, and a controller. The lifting assembly is operable to be moved by the motor. The speed sensor is configured to sense a speed of the motor. The position sensor is configured to sense a position of the lifting assembly. The controller is connected to the motor, the speed sensor, and the position sensor. The controller is configured to drive, based on the position of the lifting assembly, the motor according to a first speed setting, receive speed signals from the speed sensor indicative of the speed of the motor, determine, while in the first speed setting, whether the speed of the motor is greater than or equal to a speed threshold, drive, in response to the speed of the motor being greater than or equal to the speed threshold and based on the position of the lifting assembly, the motor according to a second speed setting, determine, while in the second speed setting, whether the speed of the motor is less than the speed threshold, and activate the electronic clutch, in response to determining that the speed of the motor is below the speed threshold, to drive the motor at a low current command for a first predetermined time period.

In some aspects, the controller is further configured to drive, in response to the first predetermined time period having passed and based on the position of the lifting assembly, the motor according to the first speed setting.

In some aspects, the controller is further configured to drive the motor according to the first speed setting for a second predetermined time period and drive, in response to determining that the second predetermined time period has passed, the motor at the low current command for the first predetermined time period.

Additional fastener drivers described herein include a motor, a trigger, a lifting assembly, a position sensor, a speed sensor, and a controller. The lifting assembly is operable to be moved by the motor. The position sensor is configured to sense a position of the lifting assembly. The speed sensor is configured to sense a speed of the motor. The controller is connected to the trigger, the motor, the position sensor, and the speed sensor. The controller is configured to detect actuation of the trigger, drive, in response to actuation of the trigger, the motor according to a maximum speed command for a first period of time, drive, when the first period of time is satisfied, the motor based on the position of the lifting assembly, receive speed signals from the speed sensor indicative of the speed of the motor, determine whether the speed of the motor has dropped by a speed drop threshold within a first period of time, activate the electronic clutch, in response to determining that the speed of the motor has dropped by the speed drop threshold within the first period of time, to electronically brake the motor for a second period of time, and provide, in response to the second period of time having passed, power to the motor.

In some aspects, the fastener driver further includes a current sensor configured to provide current signals indicative of a current of the motor. The controller is further configured to receive, from the current sensor, the current signals indicative of the current of the motor, determine a PWM duty cycle ratio based on the current of the motor and the current value, and drive the motor according to the PWM duty cycle ratio.

Before any embodiments are explained in detail, it is to be understood that the embodiments are not limited in application to the details of the configurations and arrangements of components set forth in the following description or illustrated in the accompanying drawings. The embodiments are capable of being practiced or of being carried out in various ways. Also, it is to be understood that the phraseology and terminology used herein are for the purpose of description and should not be regarded as limiting. The use of "including," "comprising," or "having" and variations thereof are meant to encompass the items listed thereafter and equivalents thereof as well as additional items.

In addition, it should be understood that embodiments may include hardware, software, and electronic components or modules that, for purposes of discussion, may be illustrated and described as if the majority of the components were implemented solely in hardware. However, one of ordinary skill in the art, and based on a reading of this detailed description, would recognize that, in at least one embodiment, the electronic-based aspects may be implemented in software (e.g., stored on non-transitory computer-readable medium) executable by one or more processing units, such as a microprocessor and/or application specific integrated circuits ("ASICs"). As such, it should be noted that a plurality of hardware and software based devices, as well as a plurality of different structural components, may be utilized to implement the embodiments. For example, "servers," "computing devices," "controllers," "processors," etc., described in the specification can include one or more processing units, one or more computer-readable medium modules, one or more input/output interfaces, and various connections (e.g., a system bus) connecting the components.

Relative terminology, such as, for example, "about," "approximately," "substantially," etc., used in connection with a quantity or condition would be understood by those of ordinary skill to be inclusive of the stated value and has the meaning dictated by the context (e.g., the term includes at least the degree of error associated with the measurement accuracy, tolerances [e.g., manufacturing, assembly, use, etc.] associated with the particular value, etc.). Such terminology should also be considered as disclosing the range defined by the absolute values of the two endpoints. For example, the expression "from about <NUM> to about <NUM>" also discloses the range "from <NUM> to <NUM>". The relative terminology may refer to plus or minus a percentage (e.g., <NUM>%, <NUM>%, <NUM>%, or more) of an indicated value.

It should be understood that although certain drawings illustrate hardware and software located within particular devices, these depictions are for illustrative purposes only. Functionality described herein as being performed by one component may be performed by multiple components in a distributed manner. Likewise, functionality performed by multiple components may be consolidated and performed by a single component. In some embodiments, the illustrated components may be combined or divided into separate software, firmware and/or hardware. For example, instead of being located within and performed by a single electronic processor, logic and processing may be distributed among multiple electronic processors. Regardless of how they are combined or divided, hardware and software components may be located on the same computing device or may be distributed among different computing devices connected by one or more networks or other suitable communication links. Similarly, a component described as performing particular functionality may also perform additional functionality not described herein. For example, a device or structure that is "configured" in a certain way is configured in at least that way but may also be configured in ways that are not explicitly listed.

Other features and aspects will become apparent by consideration of the following detailed description and accompanying drawings.

<FIG> and <FIG> illustrate a powered fastener driver <NUM> operable to drive fasteners (e.g., nails, tacks, staples, etc.) held within a magazine <NUM> into a workpiece. The fastener driver <NUM> includes an inner cylinder <NUM> and a moveable piston <NUM> positioned within the cylinder <NUM> (see <FIG>). The fastener driver <NUM> further includes a driver blade <NUM> that is attached to the piston <NUM> and moveable therewith. The fastener driver <NUM> does not require an external source of air pressure, but rather includes an outer storage chamber cylinder <NUM> of pressurized gas in fluid communication with the inner cylinder <NUM>. In the illustrated embodiment, the inner cylinder <NUM> and moveable piston <NUM> are positioned within the storage chamber cylinder <NUM>. With reference to <FIG>, the driver <NUM> further includes a fill valve assembly <NUM> coupled to the storage chamber cylinder <NUM>. When connected with a source of compressed gas, the fill valve assembly <NUM> permits the storage chamber cylinder <NUM> to be refilled with compressed gas if any prior leakage has occurred. The fill valve assembly <NUM> may be configured as a Schrader valve, for example.

With reference to <FIG>, the inner cylinder <NUM> and the driver blade <NUM> define a driving axis <NUM>. During a driving cycle, the driver blade <NUM> and piston <NUM> are moveable between a top-dead-center (TDC) (i.e., retracted) position and a driven or bottom-dead-center (BDC) (i.e., extended) position. The fastener driver <NUM> further includes a lifting assembly <NUM>, which is powered by a motor <NUM>, and which is operable to move the driver blade <NUM> from the BDC position to the TDC position.

In operation, the lifting assembly <NUM> drives the piston <NUM> and the driver blade <NUM> toward the TDC position by energizing the motor <NUM>. As the piston <NUM> and the driver blade <NUM> are driving toward the TDC position, the gas above the piston <NUM> and the gas within the storage chamber cylinder <NUM> is compressed. Prior to reaching the TDC position, the motor <NUM> is deactivated and the piston <NUM> and the driver blade <NUM> are held in a ready position, which is located between the TDC and the BDC positions, until being released by user activation of a trigger <NUM>. When released, the compressed gas above the piston <NUM> and within the storage chamber cylinder <NUM> drives the piston <NUM> and the driver blade <NUM> toward the BDC position, thereby driving a fastener into the workpiece. A power source (e.g., a battery pack <NUM>) is coupled to a battery pack interface <NUM> (e.g., a battery attachment portion) near the end of the handle portion <NUM>. The battery pack <NUM> is electrically connectable to the motor <NUM> for supplying electrical power to the motor <NUM>.

A controller <NUM> for the fastener driver <NUM> is illustrated in <FIG>. The controller <NUM> is electrically and/or communicatively connected to a variety of modules or components of the fastener driver <NUM>. For example, the illustrated controller <NUM> is connected to indicators <NUM>, a current sensor <NUM>, a speed sensor <NUM>, a temperature sensor <NUM>, secondary sensor(s) <NUM> (e.g., a voltage sensor, an accelerometer, a workpiece contact sensor, etc.), a position sensor <NUM>, the trigger <NUM> (via a trigger switch <NUM>), a power switching network <NUM>, and a power input unit <NUM>.

The controller <NUM> includes a plurality of electrical and electronic components that provide power, operational control, and protection to the components and modules within the controller <NUM> and/or fastener driver <NUM>. For example, the controller <NUM> includes, among other things, a processing unit <NUM> (e.g., a microprocessor, an electronic processor, an electronic controller, a microcontroller, or another suitable programmable device), a memory <NUM>, input units <NUM>, and output units <NUM>. The processing unit <NUM> includes, among other things, a control unit <NUM>, an arithmetic logic unit ("ALU") <NUM>, and a plurality of registers <NUM> (shown as a group of registers in <FIG>), and is implemented using a known computer architecture (e.g., a modified Harvard architecture, a von Neumann architecture, etc.). The processing unit <NUM>, the memory <NUM>, the input units <NUM>, and the output units <NUM>, as well as the various modules connected to the controller <NUM> are connected by one or more control and/or data buses (e.g., common bus <NUM>). The control and/or data buses are shown generally in <FIG> for illustrative purposes. The use of one or more control and/or data buses for the interconnection between and communication among the various modules and components would be known to a person skilled in the art in view of the embodiments described herein.

The memory <NUM> is a non-transitory computer readable medium and includes, for example, a program storage area and a data storage area. The program storage area and the data storage area can include combinations of different types of memory, such as a ROM, a RAM (e.g., DRAM, SDRAM, etc.), EEPROM, flash memory, a hard disk, an SD card, or other suitable magnetic, optical, physical, or electronic memory devices. The processing unit <NUM> is connected to the memory <NUM> and executes software instructions that are capable of being stored in a RAM of the memory <NUM> (e.g., during execution), a ROM of the memory <NUM> (e.g., on a generally permanent basis), or another non-transitory computer readable medium such as another memory or a disc. Software included in the implementation of the fastener driver <NUM> can be stored in the memory <NUM> of the controller <NUM>. The software includes, for example, firmware, one or more applications, program data, filters, rules, one or more program modules, and other executable instructions. The controller <NUM> is configured to retrieve from the memory <NUM> and execute, among other things, instructions related to the control processes and methods described herein. In other embodiments, the controller <NUM> includes additional, fewer, or different components.

The controller <NUM> drives the motor <NUM> to drive the piston <NUM> and the driver blade <NUM> in response to a user's actuation of the trigger <NUM>. Depression of the trigger <NUM> actuates a trigger switch <NUM>, which outputs a signal to the controller <NUM> to drive the motor <NUM>, and therefore the piston <NUM> and the driver blade <NUM>. In some embodiments, the controller <NUM> controls the power switching network <NUM> (e.g., a FET switching bridge) to drive the motor <NUM>. For example, the power switching network <NUM> may include a plurality of high side switching elements (e.g., FETs) and a plurality of low side switching elements. The controller <NUM> may control each FET of the plurality of high side switching elements and the plurality of low side switching elements to drive each phase of the motor <NUM>. For example, the power switching network <NUM> may be controlled to more quickly deaccelerate the motor <NUM>. In some embodiments, the controller <NUM> monitors a rotation of the motor <NUM> (e.g., a rotational rate of the motor <NUM>, a velocity of the motor <NUM>, a position of the motor <NUM>, and the like) via the speed sensor <NUM>. The motor <NUM> may be configured to drive a mechanism <NUM> (e.g., the piston <NUM>, the driver blade <NUM>, etc.).

The indicators <NUM> are also connected to the controller <NUM> and receive control signals from the controller <NUM> to turn on and off or otherwise convey information based on different states of the fastener driver <NUM>. The indicators <NUM> include, for example, one or more lightemitting diodes (LEDs), or a display screen. The indicators <NUM> can be configured to display conditions of, or information associated with, the fastener driver <NUM>. For example, the indicators <NUM> can display information relating to an operational state of the fastener driver <NUM>, such as a mode or speed setting. The indicators <NUM> may also display information relating to a fault condition, or other abnormality of the fastener driver <NUM>. In addition to or in place of visual indicators, the indicators <NUM> may also include a speaker or a tactile feedback mechanism to convey information to a user through audible or tactile outputs. In some embodiments, the indicators <NUM> display information related to a braking operation or a clutch operation (e.g., an electronic clutch operation) of the controller <NUM>. For example, one or more LEDs are activated when the controller <NUM> is performing a clutch operation.

The battery pack interface <NUM> is connected to the controller <NUM> and is configured to couple with a battery pack <NUM>. The battery pack interface <NUM> includes a combination of mechanical (e.g., a battery pack receiving portion) and electrical components configured to and operable for interfacing (e.g., mechanically, electrically, and communicatively connecting) the fastener driver <NUM> with the battery pack <NUM>. The battery pack interface <NUM> is coupled to the power input unit <NUM>. The battery pack interface <NUM> transmits the power received from the battery pack <NUM> to the power input unit <NUM>. The power input unit <NUM> includes active and/or passive components (e.g., voltage step-down controllers, voltage converters, rectifiers, filters, etc.) to regulate or control the power received through the battery pack interface <NUM> and to the controller <NUM>. In some embodiments, the battery pack interface <NUM> is also coupled to the power switching network <NUM>. The operation of the power switching network <NUM>, as controlled by the controller <NUM>, determines how power is supplied to the motor <NUM>.

The current sensor <NUM> senses a current provided by the battery pack <NUM>, a current associated with the motor <NUM>, or a combination thereof. In some embodiments, the current sensor <NUM> senses at least one of the phase currents of the motor. The current sensor <NUM> may be, for example, an inline phase current sensor, a pulse-width-modulation-center-sampled inverter bus current sensor, or the like. The speed sensor <NUM> senses a speed of the motor <NUM>. The speed sensor <NUM> may include, for example, one or more Hall effect sensors. In some embodiments, the temperature sensor <NUM> senses a temperature of the switching network <NUM>, the battery pack <NUM>, the motor <NUM>, the mechanism <NUM>, or a combination thereof. The position sensor <NUM> senses a position of the mechanism <NUM> (e.g., the piston <NUM>, the driver blade <NUM>, and/or the lifting assembly <NUM>). The position sensor <NUM> may be an absolute position sensor, such as an optical or mechanical rotary encoder, a magnetic position sensor, a capacitive position sensor, an inductive sensor, or the like.

The controller <NUM> is configured to monitor operating characteristics of the fastener driver <NUM> to drive the motor <NUM>. For example, <FIG> provides a block diagram of a control architecture <NUM> implemented by the controller <NUM>. The control architecture <NUM> includes, among other things, a position controller <NUM>, a temperature reader module <NUM>, a current reader module <NUM>, a pulse width modulation (PWM) limiter <NUM>, a field weakening module <NUM>, a dynamic commutation module <NUM>, a control state machine <NUM>, and a driving algorithm <NUM>. The driving algorithm <NUM> includes, among other things, software and applications used to drive the motor <NUM>, such as a speed controller <NUM>, a torque limiter module <NUM>, a braking control module <NUM>, a look-up table <NUM>, and a bus current controller <NUM>. The control architecture <NUM> of <FIG> is merely an example. In other embodiments, functions of the various modules and controllers may be combined or separated into additional modules.

The control state machine <NUM> sets a position command based on the position of the mechanism <NUM> (as indicated by the position sensor <NUM>) and based on a control input (e.g., actuation of the trigger <NUM>, detection of the presence of a workpiece based on a signal from a workpiece contact sensor). For example, when the mechanism <NUM> reaches a ready-to-fire position (e.g., a first position) and the trigger <NUM> is actuated, the control state machine <NUM> sets the position command to a striker drop position command. When the mechanism <NUM> reaches the striker drop position (e.g., a second position), the control state machine <NUM> sets the position command to a striker re-mesh position command. When the mechanism <NUM> reaches the striker re-mesh position (e.g., a third position), the control state machine <NUM> sets the position command to a ready to fire position command, completing the control cycle.

The position controller <NUM> receives the position command from the control state machine <NUM> and receives the position of the mechanism <NUM> from the position sensor <NUM>. The position controller <NUM> compares the position command from the control state machine <NUM> to the actual position of the mechanism <NUM>. If the actual position of the mechanism <NUM> is less than the commanded position, the position controller <NUM> outputs a positive speed command. If the actual position of the mechanism <NUM> is greater than or equal to the commanded position, the position controller <NUM> outputs a zero speed command. Accordingly, when the actual position of the mechanism <NUM> is at or exceeds the position command provided by the control state machine <NUM>, the fastener driver <NUM> does nothing until the control state machine <NUM> catches up or a fault condition is corrected.

The temperature reader module <NUM> receives temperature signals from the temperature sensor <NUM> indicative of a temperature of the fastener driver <NUM>. For example, the temperature reader module <NUM> receives temperature signals indicative of a temperature of the mechanism <NUM>. In some embodiments, the temperature reader module <NUM> receives temperature signals indicative of a temperature of the motor <NUM> and/or the switching network <NUM>. The temperature reader module <NUM> converts the temperature signal to a temperature value that is then provided to the driving algorithm <NUM>. In some embodiments, the temperature signals from the temperature sensor <NUM> are provided directly to the driving algorithm <NUM>. The temperature signals may be used by the driving algorithm <NUM> to improve torque repeatability over a wide temperature range.

The current reader module <NUM> receives current signals from the current sensor <NUM> indicative of the current of the motor <NUM>. The current reader module <NUM> converts the received current signal to a current value (e.g., a voltage indicative of the current) that is then provided to the driving algorithm <NUM>. In some embodiments, the current signals from the current sensor <NUM> are provided directly to the driving algorithm <NUM>.

The PWM limiter <NUM> receives the current of the motor <NUM> from the current reader module <NUM>. The PWM limiter <NUM> limits the maximum PWM ratio command used to drive the motor <NUM> to prevent low voltage conditions on the switching network <NUM> (e.g., gate drivers). The PWM ratio command limit is provided to the bus current controller <NUM>.

<FIG> provides a block diagram of a control block <NUM> for control of the motor <NUM>. The control state machine <NUM> outputs a position command based on the position of mechanism <NUM> and a control input (e.g., actuation of the trigger <NUM>, detection of the presence of a workpiece based on a signal from a workpiece contact sensor, etc.). The position controller <NUM> receives the position command from the control state machine <NUM> and compares the position command to the actual position of the mechanism <NUM>. When the position of the mechanism <NUM> is less than the position indicated by the position command, the position controller <NUM> outputs a positive speed command. When the position of the mechanism <NUM> is greater than or equal to the position indicated by the position command, the position controller <NUM> outputs a zero speed command.

The speed controller <NUM> receives a speed command from the position controller <NUM>. Additionally, the speed controller <NUM> receives a speed of the motor <NUM> (as indicated by speed sensor <NUM>). The speed controller <NUM> compares the speed command provided by the position controller <NUM> with the detected speed of the motor <NUM> to determine a torque at which to drive the motor <NUM>. For example, if the motor speed is less than the speed command, the speed controller <NUM> outputs a torque command (e.g., a torque value) to increase the speed of the motor <NUM>. If the motor speed is greater than the speed command, the speed controller <NUM> outputs a torque command to decrease the speed of the motor <NUM>. If the motor speed is equal to the speed command, the speed controller <NUM> outputs a torque command to maintain the speed of the motor <NUM>.

The torque command and the motor speed are provided to the look-up table <NUM>. The torque command and the motor speed are compared to the look-up table <NUM> to determine a current command, such as a current value or bus current value at which to drive the motor <NUM>. The current command is provided to the bus current controller <NUM>. The bus current controller <NUM> then compares the current command to the measured bus current (e.g., the measured current of the motor <NUM> as provided by the current reader module <NUM>). The bus current controller <NUM> drives the switching network <NUM> with a PWM ratio command (e.g., a PWM duty cycle ratio command) based on this comparison. For example, if the current command is less than the measured bus current, the bus current controller <NUM> decreases the PWM duty cycle at which the switching network <NUM> is driven. If the current command is greater than the measured bus current, the bus current controller <NUM> increases the PWM duty cycle at which the switching network <NUM> is driven. If the current command is equal to the measured bus current, the bus current controller <NUM> maintains the PWM duty cycle at which the switching network <NUM> is driven.

In some embodiments, the torque limiter module <NUM> limits the torque command provided by the speed controller <NUM>. <FIG> provides a block diagram of a control block <NUM> for limiting the torque command. A torque setpoint is provided to the torque limiter module <NUM>. The torque setpoint may be a predetermined value stored in the memory <NUM> to protect the mechanism <NUM> from an over-torque condition. In some embodiments, the torque setpoint is a function of the lifter position (e.g., position of the piston <NUM>) that varies throughout the cycle of the fastener driver <NUM>.

The torque limiter module <NUM> limits the torque based on, for example, an estimated absorption energy of the motor <NUM>. The absorption energy is estimated based on the principle of balancing the mechanical flywheel energy of the motor <NUM> and the mechanism <NUM> with the available absorption energy of the components within the fastener driver <NUM>. For example, the torque setpoint is selected to limit the stress on the various components of the fastener driver <NUM> in situations of a fastener jam (e.g., a nail jam) or misalignment of the mechanism <NUM>.

The absorption energy of the fastener is the integral of torque with respect to angle, and the net absorption energy of the fastener is the absorption energy minus the energy delivered by the torque of the motor <NUM>. <FIG> provides an example of the absorption energy when the motor torque remains constant after joint. Equation <NUM> provides the absorption energy balanced with the flywheel energy: <MAT> where:.

When the torque limit is set to the driving torque, Equation <NUM> can be rearranged such that the torque limit is set based on the motor speed, the torque setpoint, driver fastener inertia, and joint stiffness, as shown in Equation <NUM>: <MAT> where:
Tlimit - torque limit (Nm).

In another example, all of the absorption energy of the piston <NUM> and the driver blade <NUM> is used to stop the motor <NUM>. When the fastener is driven into a workpiece, the motor <NUM> returns the piston <NUM> and the driver blade <NUM> to its original position to reload for a new operation (e.g., moves the driver blade <NUM> and piston <NUM> from the BDC position to the TDC position). Accordingly, the motor <NUM> is de-energized the instant the fastener is secured (e.g., the driver blade <NUM> is in the BDC position), and negative torque is introduced in applying a brake. The absorption energy is absorbed back into the driver blade <NUM> and piston <NUM> (e.g., as binding energy). <FIG> provides an example of the absorption energy when the motor <NUM> is de-energized. Equation <NUM> provides the absorption energy balanced with the flywheel energy.

When the torque limit is set to the driving torque, Equation <NUM> can be rearranged such that the torque limit is set based on the motor speed, the torque setpoint, drill inertia, and joint stiffness, as shown in Equation <NUM>: <MAT>.

In another example, the torque limit is dynamic as a function of the system position. <FIG> provides a graph <NUM> illustrating the torque limit as a function of the position of the piston <NUM>. The graph <NUM> includes a system limit torque <NUM>, an e-clutch torque setting <NUM>, a torque limit <NUM> set by the torque limiter module <NUM>, and an operational torque <NUM> indicative of the torque as the fastener driver <NUM> operates (e.g., a motor current provided to the motor <NUM>). Within a first region <NUM>, the piston is fully compressed and the driver blade <NUM> drops to secure a fastener in the workpiece. At this point, the torque limit <NUM> is at its highest value T1.

Within the second region <NUM>, lifter lugs within the lifting assembly <NUM> are re-meshed with striker teeth within the lifting assembly <NUM>. At this point, the torque limit <NUM> is at its lowest value T2. The torque limit <NUM> in the second region <NUM> limits stresses applied by the lifter lugs and the striker teeth when they are not aligned and the system experiences a binding event.

Within the third region <NUM>, the piston <NUM> begins to compress partially to complete the reload cycle and prepare the fastener driver <NUM> to drive the next fastener. The torque limit <NUM> raises with the operational torque <NUM> to reload the piston <NUM> until the torque limit <NUM> reaches an intermediate or medium value T3.

Returning to <FIG>, if the torque command is greater than the torque limit, the torque limit is instead provided to the look-up table <NUM>. Control of the motor <NUM> is then continued using the torque limit as the torque command, as shown in <FIG>.

In some embodiments, the PWM ratio command provided by the bus current controller <NUM> is overridden by the braking control module <NUM>. For example, based on the motor speed sensed by the speed sensor <NUM>, the braking control module <NUM> may determine to brake the motor <NUM>. <FIG> provides a state diagram <NUM> illustrating operation of the fastener driver <NUM>, as performed by the controller <NUM>.

When the speed command of the motor <NUM> is set to <NUM> (e.g., when the trigger <NUM> is not actuated), the controller <NUM> is in an idle mode (block <NUM>). When in the idle mode, the controller <NUM> monitors for actuation of the trigger <NUM>, and the switching network <NUM> is placed in a high impedance state to prevent power transfer from the battery pack <NUM> to the motor <NUM>. When the trigger <NUM> is actuated (e.g., when the speed command is greater than <NUM>), the controller <NUM> proceeds to block <NUM> and operates the motor <NUM> according to a low speed mode (e.g., a first operating mode, a first speed setting, etc.). The low speed mode may be, for example, an operating mode associated with beginning of driving the motor <NUM> when the motor <NUM> was fully stopped. While in the low-speed mode, the controller <NUM> monitors the speed of the motor <NUM> as provided by the speed sensor <NUM>. In some embodiments, while in the low-speed mode, the speed controller <NUM> is bypassed, and the motor <NUM> is controlled such that the torque output of the speed controller <NUM> is equal to the torque setpoint. If the speed of the motor <NUM> increases above or equal to a minimum speed threshold, the controller <NUM> proceeds to block <NUM>. In some embodiments, the minimum speed threshold has a value of between <NUM> rotations per minute ("RPM") and <NUM> RPM. In some embodiments, the minimum speed threshold has a value of approximately <NUM> RPM. However, if the speed of the motor <NUM> remains below the minimum speed threshold for a low speed timeout period (e.g., a first predetermined time period), the controller <NUM> instead proceeds to block <NUM>. If the speed command is set to zero (o) at any point (e.g., the trigger <NUM> is de-actuated), the controller <NUM> transitions back to the idle mode (block <NUM>).

When the speed of the motor <NUM> exceeds or is equal to the minimum speed threshold, the controller <NUM> proceeds to block <NUM> and operates in a high speed mode (e.g., a second operating mode, a second speed setting). While in the high speed mode, the controller <NUM> drives the motor <NUM> according to received speed commands while within the set torque limits. The speed controller <NUM> is active, and the torque limiter module <NUM> may limit the torque output of the speed controller <NUM>, which may reduce speed for clutch settings or when a significant load is applied. For example, when a high load state is detected based on the speed of the motor <NUM>, the torque output of the speed controller <NUM> is limited.

When the speed of the motor <NUM> drops below the minimum speed threshold while operating in the high speed mode, the controller <NUM> proceeds to block <NUM> and operates in a clutch mode. In some embodiments, hysteresis can be used such that different speed thresholds are used to control transitions from the low speed mode and high speed mode. Additionally, when the controller <NUM> operates in the low speed mode (block <NUM>) for a predetermined time period, the controller <NUM> proceeds to block <NUM> and operates in the clutch mode. While in the clutch mode, the controller <NUM> limits the current of the motor <NUM>. For example, the current command provided to the bus current controller <NUM> by the look-up table <NUM> is overwritten by a low current command. In some embodiments, the low current command corresponds to a current value low enough to maintain engagement of the motor <NUM> with a related geartrain, but does not overcome geartrain friction. This results in a zero torque value of the lifting assembly <NUM>. The low current command is maintained for a clutch timeout period, at which point the controller <NUM> returns to block <NUM> and operates in the low speed mode. If the trigger <NUM> is de-actuated while the controller <NUM> is in the clutch mode, the controller <NUM> returns to block <NUM> and operates in the idle mode. Additionally, in some instances, due to the clutch timeout period and the low speed timeout period, the controller <NUM> may alternate between the low speed mode at block <NUM> and the clutch mode at block <NUM> indefinitely until the trigger <NUM> is de-actuated. In some instances, the current of the motor <NUM> is limited by reducing the duty cycle of the PWM used to drive the motor <NUM>. In some embodiments, the clutch timeout period and the low speed timeout period have values between <NUM> milli-seconds and <NUM> milli-seconds. In some embodiments, the clutch timeout period and the low speed timeout period have values of approximately <NUM> milli-seconds.

Returning to <FIG>, the field weakening module <NUM> is configured to improve torque capability at high speeds when the back-electromotive force ("EMF") of the motor <NUM> causes the drive to become voltage limited. Field weakening may be applied by identifying the relationship between motor current, motor torque, and motor speed at a steady state. This relationship may be used to correct nominal field weakening. In some embodiments, the field weakening module <NUM> is disabled.

<FIG> illustrates an example block diagram of the speed controller <NUM>. Equation <NUM> provides an example model for determining a torque command based on the motor speed: <MAT>.

Equation <NUM> provides a simplified transfer function of the model of Equation <NUM>: <MAT>.

The torque command output by the speed controller <NUM> is locked to the upper torque limit any time the controller <NUM> is operating in the low speed mode. When the controller <NUM> is in the clutch mode, the torque command is overwritten downstream. However, the speed controller <NUM> continues operation. The illustrated speed controller <NUM> includes two gains: a proportional gain KP and an integral gain KI.

<FIG> illustrates an example block diagram of the look-up table <NUM>. The torque command from the speed controller <NUM> is compared to the motor speed at a torque look-up table <NUM>. The torque look-up table <NUM> (e.g., a torque-velocity-current look-up table) outputs a baseline bus current command. Additionally, the motor speed is compared to the measured temperature, as provided by the temperature reader module <NUM>, at a temperature look-up table <NUM>. The output of the temperature look-up table <NUM> is a temperature adjustment output. The temperature adjustment output is applied to the baseline bus current command to create the bus current command provided to the bus current controller <NUM>.

In some embodiments, rather than using the look-up table <NUM>, the torque command is converted to the bus current command using a slope-intercept method. The slope-intercept method converts torque to current independent of the motor speed and the temperature. For a given gear ratio, a slope and an intercept are provided to convert the torque to a current command.

<FIG> illustrates an example block diagram of the bus current controller <NUM>. The bus current controller <NUM> outputs a PWM ratio command signal based on the bus current command from the look-up table <NUM>. Equation <NUM> provides an example model for determining a PWM ratio command signal based on the bus current: <MAT>.

If velocity is constant relative to the electrodynamics and the battery voltage is constant, the model of Equation <NUM> becomes a transfer function defined by Equation <NUM>: <MAT>.

When the controller <NUM> is operating in the low speed mode or the high speed mode, the bus current controller <NUM> operates normally. When in the idle mode or when braking, the PWM ratio command output is overridden to zero. When in the clutch mode, the bus current command is overridden to another value to overcome cogging torque and reduce system backlash. Additionally, in some embodiments, when transitioning from the clutch mode to the low speed mode, the PWM ratio command is overwritten to a value that increases jerk of the fastener driver <NUM>. Additionally, the bus current controller <NUM> may limit the PWM ratio command output to prevent bus current overshoot (e.g., an overcurrent condition). The illustrated bus current controller <NUM> includes two gains: a proportional gain KP and an integral gain KI.

<FIG> provides a method <NUM> for controlling the motor <NUM>. The method <NUM> may be performed by the controller <NUM>. At block <NUM>, the controller <NUM> drives the motor <NUM> according to the position of the lifting assembly <NUM>. For example, the controller <NUM> drives the motor <NUM> according to the high speed mode while the trigger <NUM> is actuated and based on the position of the lifting assembly <NUM>. At block <NUM>, the controller <NUM> receives speed signals from the speed sensor <NUM> indicative of the speed of the motor <NUM>. In other embodiments, the controller <NUM> determines the speed of the motor <NUM> based on current signals from the current sensor <NUM>.

At block <NUM>, the controller <NUM> determines whether a rate of change of the speed of the motor <NUM> is greater than or equal to a speed drop threshold (e.g., a speed rate of change threshold). If the rate of change of the speed of the motor <NUM> is less than the speed drop threshold, the controller <NUM> returns to block <NUM> and continues to drive the motor <NUM> according to the position of the lifting assembly <NUM>. For example, the speed of the motor <NUM> experiences minor variations in speed. If the rate of change of the speed of the motor <NUM> is greater than or equal to the speed drop threshold (for example, a reduction in speed of <NUM>-<NUM> RPM over a <NUM> period of time), the controller <NUM> proceeds to block <NUM>. In some embodiments, the speed drop threshold corresponds to a change in rotations per minute ("RPM") of between <NUM> RPM and <NUM> RPM during the first time period. In some embodiments, the speed drop threshold corresponds to a change in RPM of approximately <NUM> RPM during the first time period. In some embodiments, the controller <NUM> monitors the speed of the motor <NUM> over a first period of time to determine the rate of change, such as between <NUM> milli-seconds and <NUM> milli-seconds. In some embodiments, the first period of time is approximately <NUM> milli-seconds.

At block <NUM>, the controller <NUM> determines whether braking of the motor <NUM> is allowed. For example, to prevent false braking triggers, braking of the motor <NUM> may be disallowed for a predetermined period of time after a braking event is completed, as braking causes deceleration of the motor that may result in a reduction of speed that satisfies the speed drop threshold a second time. By disallowing recurrent braking events, the controller <NUM> avoids false braking events. If braking events are not allowed, the controller <NUM> returns to block <NUM> and continues to drive the motor <NUM> according to the position of the lifting assembly <NUM>. If braking events are allowed, the controller proceeds to block <NUM>. In some embodiments, braking events are not disallowed, and block <NUM> (and blocks <NUM> and <NUM>) may be removed from the method <NUM>.

At block <NUM>, the controller <NUM> brakes the motor <NUM> for a predetermined time period. For example, the controller <NUM> controls the switching network <NUM> to electronically brake the motor <NUM>. Once the predetermined period of time is satisfied, the controller <NUM> disallows braking events (at block <NUM>) and returns to block <NUM>. The controller <NUM> disallows braking events for a second predetermined time period to prevent false braking triggers. Once the second predetermined time period is satisfied, the controller <NUM> allows braking events to be performed (at block <NUM>). In some embodiments, braking is disabled at low speeds (e.g., <NUM> RPM or fewer).

<FIG> provide a method <NUM> for controlling the motor <NUM>. The method <NUM> may be performed by the controller <NUM>. The method <NUM> may be performed in parallel to the method <NUM> of <FIG>. At block <NUM>, the controller <NUM> drives the motor <NUM> according to the position of the lifting assembly <NUM> and at a first speed setting. For example, the controller <NUM> drives the motor <NUM> according to the low speed mode while receiving a speed command from the trigger <NUM> and based on the position of the lifting assembly <NUM>. At block <NUM>, the controller <NUM> determines the speed of the motor <NUM>. For example, in some embodiments, the controller <NUM> receives speed signals from the speed sensor <NUM> indicative of the speed of the motor <NUM>. In other embodiments, the controller <NUM> determines the speed of the motor <NUM> based on current signals from the current sensor <NUM>.

At block <NUM>, the controller <NUM> determines whether the speed of the motor <NUM> is greater than or equal to a speed threshold. If the speed of the motor <NUM> is greater than or equal to the speed threshold, the controller <NUM> proceeds to block <NUM> (see <FIG>). If the speed of the motor <NUM> is less than the speed threshold, the controller <NUM> determines whether the low speed timeout threshold has been satisfied (block <NUM>). If the low speed timeout threshold is not satisfied, the controller <NUM> returns to block <NUM> and continues to drive the motor <NUM> according to the position of the lifting assembly <NUM>.

If the low speed timeout threshold is satisfied, the controller <NUM> proceeds to block <NUM> and enters the electronic clutch mode. In the electronic clutch mode, the controller <NUM> drives the motor <NUM> according to a low current command (e.g., reduced PWM duty cycle), as previously described. At block <NUM>, the controller <NUM> determines whether the clutch timeout period is satisfied. If the clutch timeout period is satisfied, the controller <NUM> returns to block <NUM> and drives the motor <NUM> according to the first speed setting. If the clutch timeout period is not satisfied, the controller <NUM> returns to block <NUM> and continues to operate in the electronic clutch mode. In some embodiments, the clutch timeout period corresponds to between <NUM> and <NUM> milli-seconds. In some embodiments, the clutch timeout period is approximately <NUM> milli-seconds.

Returning to block <NUM>, if the speed of the motor is greater than or equal to the speed threshold, the controller <NUM> proceeds to block <NUM>. At block <NUM>, the controller <NUM> drives the motor <NUM> according to the position of the lifting assembly <NUM> and at a second speed setting. In some embodiments, the second speed setting is the high speed mode. At block <NUM>, the controller <NUM> determines the speed of the motor <NUM>. For example, in some embodiments, the controller <NUM> receives speed signals from the speed sensor <NUM> indicative of the speed of the motor <NUM>. In other embodiments, the controller <NUM> determines the speed of the motor <NUM> based on current signals from the current sensor <NUM>.

At block <NUM>, the controller <NUM> determines whether the speed of the motor <NUM> is less than or equal to the speed threshold. If the speed of the motor <NUM> is greater than the speed threshold, the controller <NUM> continues to drive the motor <NUM> according to the position of the lifting assembly <NUM> and at the second speed setting. If the speed of the motor <NUM> is less than or equal to the speed threshold, the controller <NUM> proceeds to block <NUM> and enters the electronic clutch mode. For example, the method <NUM> in <FIG> can cause a rapid slowdown of the motor <NUM> that causes the motor speed to become less than the speed threshold and the transition from the second speed setting to the electronic clutch mode.

To avoid distributed stopping positions throughout an operating cycle of the fastener driver <NUM>, embodiments described herein provide for alternative stopping point biasing and dynamic error margins for control of the motor <NUM>. For example, embodiments described herein may bias the stopping point of the motor <NUM> closer to the striker drop position, reducing time between the trigger pull and driving of a fastener. Additionally, the tolerance window may have a lower bound to avoid a double fire event (e.g., from about <NUM> degrees to about <NUM> degrees).

<FIG> provides a block diagram of a control block <NUM> for position control of the motor <NUM>. The control state machine <NUM> outputs a position command based on the position of mechanism <NUM> (indicated by position feedback from the position sensors <NUM>) and a control input (e.g., actuation of the trigger <NUM>, detection of the presence of a workpiece based on a signal from a workpiece contact sensor, etc.). The position command is provided to a position control loop <NUM>, illustrated in <FIG> in more detail.

In some instances, there is a rollover point of the position sensor <NUM> when the position of the mechanism <NUM> wraps from <NUM>° to <NUM>°. This rollover position introduces a discontinuity in the control input from the position sensor <NUM> to the controller <NUM>. The rollover point may result in an undesired stopping of the motor <NUM>. The position control loop <NUM> addresses the rollover point by aligning the rollover position with the window where the lifter and striker disengage while the striker drives the fastener into the workpiece. As position information is not needed during this period of the cycle, the rollover point is "hidden" so as to not impact operation of the fastener driver <NUM>. In some instances, position signals from the position sensor <NUM> are corrected by using a linear slope and an offset transformation function to map the position signals to a continuous function (e.g., from zero to a set maximum value). Additionally, the input to the position controller <NUM> is switched such that the position controller <NUM> receives, for example, a fake or artificial position error and commands maximum output at the beginning of an operation cycle. By providing a fake position error and commanding maximum output, the motor <NUM> provides maximum effort at start-up and produces a fast time-to-fire. Additionally, a seamless transition to proportional control is provided when the control state machine <NUM> determines rollover has occurred and position error (e.g., the difference between the position command and the actual position of the mechanism <NUM>) is calculated normally. Position error override also provides a means to abort slowdown during a reload cycle.

As shown in <FIG>, the position control loop <NUM> includes a calculate error block <NUM>, a position command <NUM>, and a maximum error block <NUM> provided to the position controller <NUM>. During the beginning of an operation cycle, the position controller <NUM> refers to the maximum error block <NUM> and outputs a maximum speed command. During other periods of time in the operation cycle, the position controller <NUM> refers to the position command <NUM> and position feedback from the position sensor <NUM> (e.g., the actual position of the mechanism <NUM> indicated by position sensor <NUM>). The position controller <NUM> implements instructions included in the calculate error block <NUM> to determine the difference between the position command and the actual position of the mechanism <NUM>. The position controller <NUM> then determines a speed command based on the difference between the position command and the actual position of the mechanism <NUM>, as previously described.

The position controller <NUM> includes, for example, a multiplexer <NUM>, a gain module <NUM>, and a limiter module <NUM>. The multiplexer <NUM> receives the error from the calculate error block <NUM>, the position command <NUM> (summed with the position feedback), and the maximum speed command from the maximum error block <NUM>, and determines a speed command based on a current position of the motor <NUM>. The speed command is multiplied with a proportional gain KP. The limiter module <NUM> ensures the speed command is set to a value between or equal to zero and the maximum allowed motor speed. When a speed command is above the maximum allowed motor speed, the limiter module <NUM> reduces the speed command to the maximum allowed motor speed.

Returning to <FIG>, the speed controller receives the speed command from the position controller <NUM>. Additionally, the speed controller <NUM> receives a speed of the motor <NUM>. In the example of <FIG>, the speed controller <NUM> determines the speed of the motor <NUM> based on position signals received from the position sensors <NUM>, for example, by determining a derivative of the position signals. However in other instances, the speed controller <NUM> may receive the speed of the motor <NUM> as indicated by speed sensor <NUM>. The speed controller <NUM> compares the speed command provided by the position controller <NUM> with the detected speed of the motor <NUM> to determine a torque at which to drive the motor <NUM>. For example, if the motor speed is less than the speed command, the speed controller <NUM> outputs a torque command to increase the speed of the motor <NUM>. If the motor speed is greater than the speed command, the speed controller <NUM> outputs a torque command to decrease the speed of the motor <NUM>. If the motor speed is equal to the speed command, the speed controller <NUM> outputs a torque command to maintain the speed of the motor <NUM>.

In some instances, the torque command is provided to look-up table <NUM> to determine a current command for bus current controller <NUM>, as previously described. In other instances, however, the control block <NUM> includes a torque controller <NUM>. The torque controller <NUM> receives the torque command from the speed controller <NUM> and a motor current of the motor <NUM> (indicated by the current sensors <NUM>). In some embodiments, the torque controller <NUM> determines a present torque of the motor <NUM> based on the motor current of the motor <NUM>. The torque controller <NUM> compares the torque command provided by the speed controller <NUM> with the detected torque of the motor <NUM> to determine whether to adjust the torque command provided to the look-up table <NUM>. For example, if the motor torque is less than the torque command, the torque controller <NUM> adjusts the torque command to increase the torque of the motor <NUM>. If the motor torque is greater than the torque command, the torque controller <NUM> adjusts the torque command to decrease the torque of the motor <NUM>. If the motor torque is equal to the torque command, the torque controller <NUM> maintains the value of the torque command provided by the speed controller <NUM>.

<FIG> illustrates a graph <NUM> showing an operating cycle of the fastener driver <NUM>. The graph <NUM> includes a state function <NUM> showing different states of the fastener driver <NUM>, a position function <NUM> showing a position of the mechanism <NUM>, a speed command function <NUM> showing the speed command provided by the speed controller <NUM>, and a motor speed function <NUM> showing the measured speed of the motor <NUM>. The graph <NUM> also includes the TDC position (indicated by dashed line <NUM>) and the BDC position (indicated by dotted line <NUM>).

From time T0 to T1, the controller <NUM> is in an idle state. While in the idle state, the controller <NUM> monitors for an input (e.g., monitors for actuation of the trigger <NUM>) indicating initiation of an operating cycle. From time T1 to time T2, the fastener driver <NUM> is depressed onto a workpiece (detected by a workpiece contact sensor). At time T2, the trigger <NUM> is actuated, transitioning the controller <NUM> to a trigger detection state. In response to the trigger <NUM> being actuated, at time T3, the fastener driver <NUM> transitions to a start-up check mode and performs start-up check operations.

Once the start-up check operations are complete, the position controller <NUM> outputs a maximum speed command to the speed controller <NUM> (from T3 to T5). During this time period, the position controller <NUM> overrides received position signals and calculated errors. Additionally, the controller <NUM> shifts to a run state (at time T3). At time T4, the mechanism <NUM> is controlled to strike a fastener. The rollover point of the mechanism <NUM> is aligned with this operation. The controller <NUM> continues to drive the motor <NUM> from time T4 to time T6.

At time T5, the position controller <NUM> returns to normal operation and determines the speed command provided to the speed controller <NUM> based on the distance between the desired position of the mechanism <NUM> and the actual position of the mechanism <NUM>. From time T5 to T6, the speed command decreases in value, decelerating the motor <NUM>. At time T6, the controller <NUM> shifts to a braking state and brakes the motor <NUM> (from time T6 to time T7). At time T7, the controller <NUM> returns to the idle state.

<FIG> provides a method <NUM> for controlling the motor <NUM>. The method <NUM> may be performed by the controller <NUM>. At block <NUM>, the controller <NUM> detects actuation of the trigger <NUM>. At block <NUM>, the controller <NUM> drives the motor <NUM> according to a maximum speed command for a first period of time. For example, at the beginning of an operating cycle, the position controller <NUM> provides a maximum speed command to the speed controller <NUM>, regardless of the position of the mechanism <NUM>.

When the first period of time is satisfied, at block <NUM>, the controller <NUM> drives the motor <NUM> according to the position of lifting assembly <NUM>, as previously described. For example, the position controller <NUM> returns to normal operation and sets the speed command based on the difference between the position command from the control state machine <NUM> and the actual position of the mechanism <NUM> (indicated by the position sensors <NUM>). In some embodiments, after performing block <NUM>, the controller <NUM> continues to block <NUM> of method <NUM> (see <FIG>) or block <NUM> of method <NUM> (see <FIG>). However, the position control described with respect to any of <FIG> can also be implemented independently of the electronic clutch.

Claim 1:
A fastener driver (<NUM>) including an electronic clutch, the fastener driver comprising: a motor (<NUM>); a trigger (<NUM>); a lifting assembly (<NUM>) operable to be moved by the motor (<NUM>); a position sensor (<NUM>) configured to sense a position of the lifting assembly (<NUM>); a speed sensor (<NUM>) configured to sense a speed of the motor (<NUM>); and a controller (<NUM>) connected to the trigger (<NUM>), the motor (<NUM>), the position sensor (<NUM>), and the speed sensor (<NUM>), the controller (<NUM>) configured to:
provide, in response to actuation of the trigger (<NUM>) and based on the position of the lifting assembly (<NUM>), power to the motor (<NUM>), and receive speed signals from the speed sensor (<NUM>) indicative of the speed of the motor (<NUM>),
characterized in that the controller (<NUM>) is further configured to:
determine whether the speed of the motor (<NUM>) has dropped by a speed drop threshold within a first period of time, activate, in response to determining that the speed of the motor (<NUM>) has dropped by the speed drop threshold within the first period of time, the electronic clutch to electronically brake the motor (<NUM>) for a second period of time, and provide, in response to the second period of time having passed, power to the motor (<NUM>).