The field relates generally to dispenser control, and more particularly, to controlling a dispenser to indicate that a low-material state exists.
Automatic sheet material dispensers, such as paper towel dispensers and the like, are widely used to supply paper towel and other types of sheet material to persons in public restrooms, kitchens, food-preparation facilities and other settings in which hygiene and cleanliness are desired or in which sheet material is desired for some other purpose. The sheet material dispensed by these dispensers is typically in the form of a web wound into a roll on a core. The sheet material is unwound from the roll by the dispenser and is dispensed to the user.
A typical automatic paper towel dispenser is a battery-operated device with a direct current (DC) motor that is activated by a proximity sensor or contact switch. A controller controls the DC motor to dispense a predetermined amount of sheet material (e.g., 12 inches) for each activation of the proximity sensor or contact switch.
A problem with automatic sheet material dispensers, such as paper towel dispensers and the like, is that it can be difficult for the attendant to determine the amount of sheet material remaining on the roll and to determine whether a replacement roll should be loaded in the dispenser. It can be difficult to determine the amount of material remaining in the dispenser because the roll typically cannot be seen within the opaque dispenser housing. Therefore, the attendant must manually unlock and open the dispenser to view the roll and to determine whether a replacement roll should be loaded into the dispenser. This is time consuming and inconvenient for the attendant, particularly in facilities such as public restrooms which may include many dispensers. Obviously, it is important that the automatic sheet material dispenser have a supply of material because the dispenser cannot be used if there is no material available to be dispensed.
A paper towel dispenser with a low-paper indicator has been proposed as described in International Publication No. WO 2007/068270A1. The paper towel dispenser described in this document uses an angular displacement measurement system which may lack accuracy and requires parts which may increase the dispenser cost.
Automatic paper towel dispensers which detect loading of a proper roll of paper towel are known as described in U.S. Pat. No. 7,040,566 (Rodrian et al.). Also known are motor pulse counting techniques used to turn a paper towel dispenser motor “on” and “off” to dispense a length of paper as described in U.S. Pat. No. 7,084,592 (Rodrian). These technologies have not been utilized to control dispenser operation to indicate a low-material state.
Accordingly, what is needed are techniques to control automatic sheet material dispenser apparatus to indicate a low-material state which are efficient, cost effective, and which generally provide an improved dispenser.
Low-material sensing apparatus, systems and methods are disclosed for indicating that sheet material dispensed from a sheet material roll is depleted or nearing depletion. The low-material sensing provides an indication that the depleted sheet material roll should be replaced with a full roll. This arrangement makes it possible to quickly and easily determine whether the sheet material roll requires replacement without having to open the apparatus to look at the sheet material roll. A highly-preferred application of the low-material sensing apparatus, systems and methods is in an automatic paper towel dispenser, although the low-material sensing may be implemented in other apparatus.
In an embodiment, the low-material sensing system includes a sensor, a motor, and a controller which controls the dispenser to provide an indication that a low-material state exists. Preferably, the indication is an indicator which is activated by the controller and alerts the attendant of the low-material state. The preferred controller provides a circuit which is preferably coupled to the sensor, motor and indicator and preferably includes a software-controlled microcontroller with an embedded analog-to-digital (A/D) converter.
According to a preferred embodiment, the sensor generates a sensor signal indicative of sheet material roll rotation. The motor has an armature and produces movement of the sheet material when current is supplied to the motor. The motor produces a motor signal indicative of at least one of motor current and motor voltage as the armature rotates. Preferably, the motor signal is produced when current supply to the motor is activated and when current supply to the motor is deactivated and the motor is coasting. The circuit supplies to the microcontroller processing device a digitized motor signal indicative of at least one of motor current and motor voltage and a digitized sensor signal. Digitizing of the motor signal and sensor signal is preferably performed by the embedded A/D converter of the microcontroller.
The preferred controller is further operable to detect pulses in the digitized motor signal during a time interval of motor armature rotation and to detect pulses in the digitized sensor signal during a time interval of sheet material roll rotation. The time intervals of digitized sensor signal and digitized motor signal pulse detection need not be identical. Most preferably, the controller is operable to detect pulses in the digitized motor signal after current supply to the motor is deactivated. The microcontroller can also be configured to detect the digitized motor signal while current is supplied to the motor.
The preferred controller determines the rotational speed of the motor from the digitized motor signal and determines the rotational speed of the sheet material roll from the digitized sensor signal. The controller further compares the rotational speeds and controls the dispenser to provide the low-material state indication when the comparison reaches a threshold representative of a low-material state. In an embodiment, the comparison is a determination of the ratio of the rotational speeds and the indicator is activated when the ratio of the sheet material roll speed to the motor speed exceeds a preset threshold.
Preferably, the controller is operable to measure a time interval of motor armature rotation between detected pulses. It is highly preferred that the motor pulse detection comprises detecting three contiguous pulses and the time interval measurement comprises measuring the time between the first and last of the contiguous pulses.
A highly preferred sensor type is a bar code sensor which senses a bar code on the sheet material roll. It is highly preferred that the sheet material is wound on a core and the bar code is located on a core inner surface. It is preferred that the bar code sensor is on a support for the roll. A preferred bar code sensor may include an optical source operable to direct optical energy toward the bar code and an optical detector operable to receive optical energy from the bar code to generate the sensor signal.
The low-material indication controlled by the controller may include activation by the controller of any indicator capable of indicating the low-material state. It is preferred that the low-material indicator is a visual or audible indicator. A lamp visible to a person responsible for replacing the sheet material roll is a suitable type of visual indicator. A light-emitting-diode (LED) is a particularly preferred type of lamp. Other indications, such as dispensing a shortened sheet material length in the next dispense cycle, could be implemented.
A preferred method of indicating that a supply of sheet material on a roll is low comprises digitizing a motor signal indicative of at least one of motor current and motor voltage and a sensor signal indicative of sheet material roll rotation, detecting pulses in the digitized motor signal during a time interval of motor armature rotation and determining the rotational speed of the motor therefrom, detecting pulses in the digitized sensor signal during a time interval of sheet material roll rotation and determining rotational speed of the sheet material roll therefrom, comparing the rotational speeds, and providing an indication when the comparison reaches a threshold representative that the supply of sheet material on the roll is low. The preferred indication is activating an indicator which alerts the attendant that the material is low.
Other objects, advantages and features will become apparent from the following specification when taken in conjunction with the accompanying drawings.
The invention may be understood by reference to the following description taken in conjunction with the accompanying drawings, in which like reference numerals identify like elements. The drawings are not necessarily to scale, emphasis instead being placed upon illustrating the principles of the invention. In the accompanying drawings:
While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof have been shown by way of example in the drawings and are herein described in detail. It should be understood, however, that the description herein of specific embodiments is not intended to limit the invention to the particular forms disclosed, but on the contrary, the intention is to cover all modifications, equivalents, and alternatives falling within the spirit and scope of the invention as defined by the appended claims.
While the present invention may be embodied in any of several different forms, the present invention is described here with the understanding that the present disclosure is to be considered as setting forth an exemplification of the present invention that is not intended to limit the invention to the specific embodiment(s) illustrated. Nothing in this application is considered critical or essential to the present invention unless explicitly indicated as being “critical” or “essential.”
Referring first to
Dispenser 10 includes a low-material sensing system. The dispenser 10 low-material sensing system determines that a low-material state exists and provides an indication to alert an attendant that the sheet-material roll 11 supplying material 12 (e.g., paper towel) to the dispenser 10 is nearly or fully depleted of material and must be replaced with a full roll. The indication informs the attendant that a full roll is required without the necessity to manually open the dispenser 10 to view the amount of material remaining.
The parameters defining a low-material state can be determined and set based the needs of the party providing the dispenser 10 for users. For example, some dispenser providers may wish to define the low-material state as including relatively more material remaining on the roll 11 than would other dispenser providers. The low-material sensing system described herein may be designed to activate the low-material indicator to accommodate these potentially different needs; there is no particular amount of material depletion required before activation of the low-material indicator.
Referring to
Paper 12 from roll 11 is dispensed through a slot 35 in housing 13. One edge 37 of slot 35 may have a serrated surface to cut paper 12 as a user grasps paper 12 extending beyond slot 35 and pulls the paper 12 into contact with the serrated surface on edge 37.
Referring to
A representative proximity sensor 41 which may be used to detect the presence of a user's hand is described in U.S. patent application Ser. No. 11/566,465 (Rodrian), the contents of which are incorporated herein by reference. A contact switch (not shown) operated by a push button or the like (not shown) on housing 13 could be used in place of proximity sensor 41.
A battery 43 is preferably provided for powering components such as the motor 21, controller 39, proximity sensor 41, and indicator 45. Indicator 45 is activated by controller 39 to provide the low-material indication in the illustrated example. A preferred indicator 45 is a lamp. A preferred lamp is a light-emitting diode (LED). Indicator types, in addition to, or other than, a viewable LED-type lamp 45 may be used. For example, an audio emitter could be used to provide an audible signal indicative that dispenser 10 is in the low-material state. Other indications, such as controlling motor 21 to shorten or lengthen the sheet material dispensed in subsequent dispense cycles relative to the standard length (e.g., 12 inches), could be implemented. A DC power source, such as an AC-powered DC power supply, may be utilized in place of battery 43.
A support 47 is provided to support roll 11 in dispenser 10. Referring to the example of
Referring to
The sensor signal output by sensor 61 during roll 11 rotation may also be used for the further purpose of recognizing roll 11, thereby permitting dispenser 10 operation with a roll 11 from an authorized source. One such roll recognition system is as described in U.S. Pat. No. 7,040,566 (Rodrian et al.), the contents of which are incorporated by reference. Operation of dispenser 10 with a recognized roll 11 advantageously permits use of paper 12 or other forms of sheet material which are optimized for use with the dispenser 10. The recognition that sensor 61 may be used for both roll 11 recognition and as part of a low-material sensing system represents an opportunity to provide the useful low-paper sensing capability without the necessity of additional hardware providing an opportunity for an additional feature without an increase in product cost. Exemplary sensor 61 structure is described more fully below in connection with
Referring now to
In the example, bar code 75 is located on core 59 inner surface 71. In the example, there are four repeated copies of bar code 75 on core inner surface 71. No particular bar code 75 quantity required. In the example, sensor 61 is in a fixed position on roll holder 57 and bar code 75 is sensed by sensor 61 as roll 11 rotates. In the example, each bar code 75 consists of a series of varying width bars 77 and spaces 79 which are the elements of bar code 75. A relatively larger space referred to as a quiet zone 81 exists between adjacent copies of the bar code 75 for a purpose described herein. For convenience,
Referring to FIGS. 3 and 5-6, each bar code 75 is preferably printed on the paper used to form core 59 during core manufacture. Bar code 75 on core 59 has a helical appearance consistent with the helical winding of the paper forming core 59. This helical arrangement of bar code 75 is advantageous because it permits efficient manufacture of core 59 with each bar code 75 being uniformly positioned along the axial length of core 59 while using mass production processes commonly used in the sheet-material industry.
The placement and orientation of bar code 75 with respect to roll 11 is limited only insofar as bar code 75 must be in a position capable of being sensed by sensor 61. Therefore, and by way of example only, exemplary bar code 75 may be positioned: (a) in a helically-disposed pattern as shown in
Referring further to
The sensor signal output by sensor apparatus 61 corresponding to bar code 75 is typically an analog voltage signal representative of the amount of IR radiation reflected from bar code 75 as the bars 77, spaces 79 and quiet zones 81 (e.g.,
If a roll-recognition capability is included in the dispenser 10 and if bar code 75 is not present on core 59 or is a bar code which includes an unauthorized or incorrect code, then the sensor signal output by sensor 61 will be recognized by controller 39 as an invalid signal. Controller 39 then prevents proper operation of dispenser 10. For example, controller 39 could prevent powering of motor 21 as described in U.S. Pat. No. 7,040,566.
While dispenser 10 is shown with sensor 61 comprising a bar code sensor system with an optical emitter and detector (e.g., sensor source 105, sensor element 107), it is envisioned that other types of sensor apparatus 61 could be utilized to detect types of machine-readable indicia other than a bar code 75 associated with roll 11, provided that sensor 61 is capable of detecting roll 11 rotation during a dispense cycle. Other suitable sensor apparatus 61 could include, for example, a magnetic sensor adapted to detect the presence of magnetic ink or other magnetic object on roll 11 or a capacitive field disturbance/proximity detector detecting objects embedded in roll 11.
Referring next to
Microcontroller 109 receives signals from proximity sensor 41 representing a request for a sheet of paper towel to be dispensed. Microcontroller 109 turns motor 21 “on” in response to signals output from proximity sensor 41 in this embodiment.
Microcontroller 109 includes an integrated analog-to-digital (A/D) converter 111 that is connected to a “motor signal” output from motor 21 both during powered motor 21 operation and when motor 21 armature 23 is coasting after current supply to motor 21 is deactivated by controller 39. The motor signal from motor 21 is indicative of at least one of motor current and voltage. The motor signal is also referred to herein as the motor current (Im) and the digitized motor signal is also referred to herein as the digitized motor current. A/D converter 111 measures the motor signal digitally.
Microcontroller 109 employs the data collected by the A/D converter 111 to detect the pulses in both (1) the digitized motor signal (i.e., digitized motor current) resulting from armature 23 rotational displacement and (2) the digitized sensor signal. Microcontroller 109 further determines the motor 21 speed during a time interval of motor armature 23 rotation based on the digitized motor signal pulses and determines the core 59 speed during a time interval of roll 11 rotation based on the detected sensor signal pulses. Thus, motor 21 speed is determined using information in the motor signal, and sheet material roll 11 speed is determined using information in the sensor signal in the example.
Microcontroller 109 compares the rotational speeds of the motor 21 and core 59 and activates the indicator 45 when the comparison reaches a threshold representative of a low-material state. This strategy provides for accurate sensing of the low-material state because the comparison is most preferably based on steady-state speeds of motor 21 and core 59, thereby avoiding potential errors associated with displacement-type detectors which may not control for supply roll 11 overspin resulting from inertia.
In addition, the microcontroller 109 employs the data collected by the A/D converter 111 to detect the pulses in the digitized motor signal (i.e., digitized motor current) and turn the motor 21 “off” once the required quantity of pulses have been detected. As described for example in connection with
Controller 39 includes a field effect transistor 113 connected to an activation output terminal 115 of the microcontroller 109 for activating the motor 21. A resistor 117 is provided to ensure that the transistor 113 is deactivated after a reset of the microcontroller 109 before its I/O ports are initialized. A resistor 119 limits short-term oscillation that may occur at the input of the transistor 113 when it is activated. A capacitor 121 is coupled across the terminals of the motor 21 to reduce radiation of RF energy due to brush noise (commutator switching noise) in the motor 21. A diode 123 is also provided across the motor terminals to suppress a voltage spike (
Controller 39 further includes a first current-sensing resistor 125 which is provided to generate a voltage proportional to the motor current when the motor 21 is activated through the transistor 113. A second current-sensing resistor 127 bypasses the transistor 113 and generates a voltage proportional to the motor current when the motor 21 is turned off, and the first current-sensing resistor 125 is isolated by the transistor 113. The resistors 127, 129 and capacitor 131 are provided to act as a low-pass anti-aliasing filter on the motor signal (i.e., motor current) input to A/D converter 111 at input terminal 132. The resistors 125, 127, and 127 provide a speed-sensing apparatus for producing the motor signal indicative of motor 21 speed. The motor signal (i.e., motor current) is received by A/D converter 111 and is digitized by A/D converter 111 for determination of motor 21 speed by microcontroller 109.
In the example, sensor 61 is connected to microcontroller 109 of controller 39 as follows. Sensor source 105 (a discrete infrared laser LED in this example) is connected to battery 43 and transistor 136. Transistor 136 in combination with resistors 135 and 137 form a constant current source connected to output terminal 133 of microcontroller 109 to activate the source 105. Sensor element 107 (a phototransistor in this example) is connected to battery 43 and A/D converter 111 of microcontroller 109 through resistor 139. The analog sensor signal output from sensor element 107 is a current that passes through resistor 139 to generate an analog voltage signal that is applied to the A/D converter 111 input terminal 140. This analog voltage signal is digitized by A/D converter 111 for determination of core 59 speed by microcontroller 109.
Indicator 45 is connected to controller 39 at an activation output terminal 141 of the microcontroller 109 for activating the indicator 45. A resistor 143 of controller 39 is provided to limit the current that flows through indicator 45.
Battery 43 powers operation of controller 39, motor 21, indicator 45, and sensor 61.
The structure of exemplary bar code 75 will now be explained in greater detail with reference to
In this embodiment of bar code 75, bar code 75 is repeated such that four copies of bar code 75 are printed on core 59 as illustrated in
In
The information represented by bar code 75 is contained within the relative widths of the bars 77 (Bars 1-6) and spaces 79 (Spaces 1-5). For convenience, reference terms Bar 1 through Bar 6 are used herein to indicate both the bars themselves and the widths of the bars such that the statement “the width of Bar 1 equals the width of Bar 6” can also be written as Bar 1=Bar 6. In this embodiment, bar code 75 is symmetrical around its center such that Bar 1=Bar 6, Bar 2=Bar 5, Bar 3=Bar 4, Space 1=Space 5, and Space 2=Space 4.” Also in this embodiment of bar code 75, a logical “0” is represented by a “narrow” bar, a logical “1” is represented by a “wide” bar, and the width of “narrow” and “wide” spaces is equal to those of “narrow” and “wide” bars, respectively. “Wide” bars and spaces are twice the width of “narrow” bars and spaces, and a “narrow” space follows a “wide” bar for Bar 1 to Bar 3 when viewed in the forward direction (Bar 1 to Bar 2 to Bar 3), and the same is true for Bar 4 to Bar 6 when viewed in the reverse direction (Bar 6 to Bar 5 to Bar 4). Bar code 75 in
Before describing the exemplary logic of
In the description of the flow diagrams (
Referring to
Referring now to
Referring then to
In functional element 203, a start-up routine is carried out which initializes the I/O pins and the devices connected to microcontroller 109 and resets low-material indicator 45. In this embodiment, part of the function of controller 39 is to control the length of material dispensed during each dispense cycle. In functional element 203, an initial value Initial Coasting Pulses representing the length of material dispensed during coasting (after the deactivating of motor 21) is loaded into the variable CoastingPulses. How this variable is used to control material length is discussed below. Once dispenser 10 start-up routine is complete in element 203, dispenser 10 is ready for detection of a user's hand, indicative of a user request for a sheet of paper towel 12.
In decision element 207, detection by proximity detector 41 of a user's hand adjacent dispenser 10 is determined. If a hand is detected, a “YES” decision is made within decision element 207 and the logic flow continues to element 209. If the presence of a hand is not detected, a “NO” decision is generated and the logic flow continues to interrogate hand-detection in a short logic loop around decision element 207 until a “YES” decision is generated.
When the presence of a user's hand is detected in decision element 207, the logic flow proceeds to initialize to 0 two arrays of variables SpaceWidth[ ] and BarWidth[ ] in functional element 209 and a number of variables in functional element 211. Array SpaceWidth[ ] is a one-dimensional list (vector) of values which, when loaded, contains time intervals which represent the widths of the spaces 79 (Spaces 1-5) in bar code 75. In a similar fashion, BarWidth[ ] is a one-dimensional list (vector) of values which, when loaded, contains time intervals which represent the widths of the bars 77 (Bars 1-6) in bar code 75.
Referring further to the initialization in functional element 211, the variable Int_Count is set to 0. Int_Count is a variable which is used to count the number of interrupts encountered. In this embodiment, interrupts occur every 50 μs and provide the time base information for controller 39.
Referring further to element 211, MotorPulses is a variable which is used to count electrical pulses generated by motor 21 as described above. PulseLevel of element 211 is a variable which is either a logical “0” (“low” indicates the absence of a motor pulse) or a logical “1” (“high” indicates the presence of a motor pulse). PreviousLevel is a variable which is set in the logic to the previous value of PulseLevel. BC_Index is a pointer variable which is used to indicate which entry in the BarWidth[ ] and SpaceWidth[ ] arrays is being used at a point in time within the logic flow.
Also in element 211, the variable BarCodeTimer is set to 0.
BarCodeTimer is a counter variable which causes execution of the logic 290 of
Referring to functional element 213, following initialization in functional elements 209 and 211, main control loop 200 enables the 50 μs interrupt timer allowing interrupts to occur, interrupting the logic flow every 50 μs when enabled. Whenever an interrupt occurs, at whatever point in the logic flow the process happens to be, the logic within interrupt logic 240 in
Referring further to
After the 50 μs interrupt is enabled in functional element 213, controller 39 activates the supply of current to motor 21 in element 215, beginning the dispensing of a paper towel 12. In this embodiment of controller 39, a preset length of paper towel is dispensed and the preset length of towel is represented by pulses generated by motor 21 both while motor 21 is powered and while it is coasting after controller 39 deactivates current supply to motor 21.
In decision element 217, the logic determines whether the motor 21 has been activated sufficiently to dispense the preset length of towel 12 in the dispense cycle. In the example, motor 21 is deactivated when counted motor 21 pulses during motor operation equal a value representing pulses required for a full sheet minus coasting pulses from the preceding dispense cycle.
Referring further to element 217, the preset length of paper towel to be dispensed is the constant Sheet Length Pulses. While motor 21 is being powered, the variable MotorPulses is used to count (within interrupt logic 240 of
In decision element 217, the variable MotorPulses is compared with the preset constant Sheet Length Pulses minus CoastingPulses to determine if motor 21 should be deactivated. As long as the decision is “NO” in decision element 217, the logic flow remains in a short logic loop around decision element 217 while motor 21 is powered and the variable MotorPulses is incremented in interrupt logic 240 (
Referring again to functional element 217, when the value of MotorPulses is greater than the difference of Sheet Length Pulses minus CoastingPulses, a “YES” decision is reached and motor 21 is depowered. In element 219, the variable MotorPulses is reset to 0, initializing the value of MotorPulses which will then be used to determine the value of CoastingPulses for the next dispense cycle.
Referring now to element 221, motor 21 speed is next determined once current to motor 21 is deactivated by controller 39 and a fourth motor pulse has been detected. In this embodiment, motor 21 speed is the steady-state speed determined once motor 21 is coasting. During coasting, motor 21 behaves as a generator. Motor 21 speed is determined by reference to the three pulses 153, 155, 157 following a transition pulse 151 (
As can be seen in
These three coasting pulses 153, 155, 159 are selected by the short logic loop around decision element 221 which tests the number of pulses which have occurred after motor depowering by comparing the variable MotorPulses, incremented in interrupt logic 240 (
In element 223, when MotorPulses is greater than 3, the variable MotorSpeed is set to the time variable TwoPulsePeriods. TwoPulsePeriods varies with the speed of motor 21 but not in the normal fashion. In this case, as the speed of motor 21 is higher, the value of TwoPulsePeriods is lower. Nevertheless, since the final result eventually required in the logic of microcontroller 109 is a comparison of the motor 21 speed with the speed of core 59 (a ratio comparison), this different relationship is suitable and will be described further below.
In functional element 225, after the variable MotorSpeed has been set, decision element 225 and the short logic loop around it are used to determine when the speed of motor 21 has slowed sufficiently to estimate how far it has coasted after depowering. When the variable PulsePeriod is longer than 200 milliseconds, the variable CoastingPulses is set in functional element 227 to the number of motor pulses which have occurred during coasting for use during the next dispense cycle to determine paper towel length. At this point (functional element 227), the 50 μs interrupt is also disabled.
At functional element 229 of
Referring now to
In
In this embodiment, the measurement of MotorCurrent in functional element 245 also includes filtering the digital stream of motor signal (i.e., the digitized motor current) measurements from A/D converter 111 with a low-pass filter. As an example, the filter may utilize a filter equation such as:
MotorCurrent(i+1)=⅞*MotorCurrent(i)+⅛*MotorCurrent(i+1).
That is, the new filtered value of the variable MotorCurrent(i+1) at time “i+1” is set equal to a weighted sum of the previous filtered value of the variable MotorCurrent(i) at time “i” and the new measured value of MotorCurrent(i+1). Use of such a low-pass filter is not required but may improve motor pulse detection.
Referring again to
In functional element 247, a calculation of the derivative of the motor signal (i.e., the motor current), MotorCurrentDerivative, is used to sense the rising and falling edges (e.g., edges 167, 169) of such pulses (pulses 153, 155, 157). In this embodiment, a “boxcar” derivative calculation is performed using the eight most recent measurements values of MotorCurrent, as follows: MotorCurrentDerivative is equal to the sum of the four most recent values of MotorCurrent minus the sum of the previous four values of MotorCurrent. (No division by a time value is necessary because such time value is always the same, given that the interrupt is occurring at regular 50 μs time intervals.) After the MotorCurrentDerivative is calculated, interrupt logic 240 calculates the elapsed time (PulsePeriod) since the last motor current pulse in functional element 249.
Interrupt logic 240 then proceeds to decision element 251 in which the value of the MotorCurrentDerivative is compared to a preset threshold Motor Edge High Limit. In this embodiment, Motor Edge High Limit may have a value on the order of 50. (MotorCurrent and MotorCurrentDerivative are values of A/D counts, and in this embodiment, A/D convertor 111 has a full-scale of 1023 counts for a full-scale voltage of 1.5 volts.) Thus, decision element 251 is looking for increases of MotorCurrent on the order of 50 or above to indicate that a rising edge (e.g., rising edge 167) is occurring in MotorCurrent. If a “NO” decision is reached in decision element 251, a similar comparison is made in decision element 265 looking for falling edges (e.g., falling edge 169) of motor pulses (pulses 153-157) using a preset threshold Motor Edge Low Limit, which in this embodiment may have a value on the order of −50.
In decision element 251, if MotorCurrentDerivative is found to be above the threshold Motor High Edge Limit, interrupt logic 240 proceeds to set a variable PulseLevel to “1” (logical high) to indicate that a rising edge (e.g., rising edge 167) has been found in the motor current.
In decision element 255, the logic flow branches depending on whether the previous value of PulseLevel (called PreviousLevel) is a “0” or a “1” (logical low or high). If the decision is a “YES” (i.e., this is a new pulse), interrupt logic 240 proceeds to the following steps: (a) MotorPulses is incremented by 1 in functional element 257 to provide a count of motor pulses; (b) a variable TimeOfLastPulse is set to the time value Int_Count in functional element 259; (c) the time variable TwoPulsePeriods is set to the sum of the two most recent values of PulsePeriod (PulsePeriod+PreviousPeriod) in element 261; and (d) the variable PreviousPeriod is set to the current value of PulsePeriod in element 263.
From element 263, the flow of interrupt logic 240 proceeds to connection element 268 which is the same point (connection element 268) at which the logic would have proceeded if a “NO” decision had been reached at decision element 255 (i.e., the rising edge 167 is not in a new pulse 153). Connection element 268 is also reached when the logic flow passes through decision element 265 looking for falling edges within the motor signal (i.e., the motor current).
In decision element 265, if a falling edge (e.g., falling edge 169) is detected (a “YES” decision in element 265 based on comparison of MotorCurrentDerivative with the threshold Motor Edge Low Limit), the variable PulseLevel is set to “0” (logical low) in functional element 267. If no falling edge is detected in decision element 265, no further action is taken and the logic proceeds to functional element 269.
In summary, in the logic 240 of
In functional element 223 of main control logic 200 (see
In functional element 271, the counter-timer variable BarCodeTimer is incremented by 1. BarCodeTimer serves as a timer to trigger bar-code-detection logic 290 in
In decision element 273, after every 10 interrupt cycles (or 500 μs), decision element 273 redirects interrupt logic 240 to branch to the bar-code-detection logic 290 of
Termination element 279 is entered either from decision point 273 (after a “No” decision) or from element 277. In termination element 279, the interrupt logic 240 returns to the point from which it was triggered.
Referring next to
Bar-code-detection logic 290 is entered at element 291 and proceeds in functional element 293 to measure the sensor signal from bar code sensor 61 and place the measured value in the variable BarCodeSignal. This digitized measurement is made by A/D converter 111 in a manner similar to the measurement of motor current.
In functional element 295, the derivative of BarCodeSignal is calculated, using the same “boxcar” derivative calculation as is used to calculate a value for MotorCurrentDerivative in functional element 247 within interrupt logic 240 (
In decision element 297, the logic seeks to detect bar 77 to space 79 transitions in bar code 75 within the digitized sensor signal output from A/D converter 111. This edge-detection process is similar to the measurements related to motor current. Therefore, after calculation of the BarCodeSignalDerivative in functional element 295, the bar-code-detection logic 290 proceeds to look for edges in BarCodeSignal in decision element 297, in which the current value of BarCodeSignalDerivative is compared to a preset threshold Edge High Limit. In this embodiment, Edge High Limit may have a value on the order of 70, and in similar fashion in decision element 313, the value of threshold Edge Low Limit may be on the order of −70. If in decision element 297, a rising edge (e.g., rising edge 171) is not detected by the comparison with threshold Edge High Limit, then bar-code-detection logic 290 proceeds to look for a falling edge (e.g., falling edge 173) in functional element 313. If no falling edge is detected in functional element 313, then bar-code-detection logic 290 ends at termination element 327, and the logic flow returns to interrupt logic 240 at functional element 277 in
Decision element 299 is entered if a rising edge is detected in decision element 297. In decision element 299, if the value of a variable DerivativeLevel is not −1, the logic flow branches around functional elements 301, 303, and 305. A value of DerivativeLevel of 1 indicates that a rising edge has been detected, and a value of −1 indicates that a falling edge has been detected. Decision element 299 examines the previously-set value of DerivativeLevel to see if a falling edge had been detected the last time the variable DerivativeLevel was set. If a rising edge is detected in decision element 297 and a rising edge had also been detected previous to such detection in element 299, then a branching around functional element 301, 303, and 305 occurs.
In decision element 299, if the value of DerivativeLevel is −1, then the combination of the current rising edge (detected in decision element 297) and the most recent falling edge (confirmed in decision element 299) means that the leading and trailing edges of a space in bar code 75 have been detected.
Then, in functional element 301, the value of DerivativeLevel is set to 1 to indicate the start of a space (end of a bar).
In functional element 303, array entry SpaceWidth[BC_Index] is set to the time interval BarStart-BarEnd.
The values of time (indicated as 50 μs counts) BarStart and BarEnd used in the calculation of SpaceWidth[BC_Index] have been set during previous iterations of bar-code-detection logic 290. The timer-counter variables BarStart and BarEnd are set at points in bar-code-detection logic 290 which are downstream of functional element 303 and will be discussed below. The result of functional element 303 is that the time interval representing the width of a space in bar code 75 is loaded into one entry of the array SpaceWidth[ ].
The index pointer BC_Index is then incremented by 1 in functional element 305 in preparation for loading the next entry into the array BarWidth[ ].
Decision element 307 determines if the value of BarCodeSignal Derivative is a local maximum by comparing its value with its previously-saved value PreviousDerivative. If BarCodeSignalDerivative is found to be greater than its previous value, then the value of time BarEnd is set to the value of Int_Count in functional element 309, and the value of BarCodeSignalDerivative is saved as PreviousDerivative. This is the determination that a bar 77 has ended and a space 79 has started in the sensing process as bar code 75 moves past sensor 61. Put another way, a bar-to-space transition (end of a bar 77 which also is the start of a space 79) or a space-to-bar transition (end of a space 79 which is also the start of a bar 77) occurs at a time equal to the value of the Int_Count variable. (The Int_Count is incremented every 50 microseconds.) The time difference of two edges determines the width of a bar 77 or the width of a space 79.
Bar-code-detection logic 290 ends from decision element 307 or functional element 311, returning logic flow to the end of interrupt logic 240.
Referring again to decision element 297, if the value of BarCodeSignalDerivative is not above threshold Edge High Limit, then BarCodeSignalDerivative is tested against a preset threshold Edge Low Limit in decision element 313 to determine if a falling edge has been reached in BarCodeSignal. If no such edge is detected in decision element 313, bar-code-detection logic 290 ends, returning logic flow to the end of interrupt logic 240.
In decision element 313, if a falling edge is detected, then bar-code-detection logic 290 proceeds through logic elements 315, 317, 319, 321, 323, and 325 in a fashion directly similar to logic elements 299, 301, 303, 305, 307, 309, and 311. In the case of a falling edge, BC_Index is not incremented (no functional element similar to functional element 305 exists). Thus, array BarWidth[ ] sequentially contains each bar width, array SpaceWidth[ ] sequentially contains each intervening space width, and the pair of arrays BarWidth[ ] and SpaceWidth[ ] contain a complete representation (widths represented by time in 50 μs counts) of bar code 75. In this embodiment, array values range from the low 10's to low 100's.
The bar-code-detection logic 290 of
Referring now to
In decision element 345, it is determined whether or not the variable BC_Index is greater than 2. The value of BC_Index at this point in the logic flow is equal to the number of bars 77 which have been loaded into array BarWidth[ ]. A value of BC_Index less than 2 indicates that an insufficient number of bars 77 have been detected to make a core 59 speed determination. If insufficient bars 77 have been detected in element 345, bar-code-analysis logic 340 ends at termination element 367, returning the flow of logic to main control logic 200 which proceeds to functional element 231 (
The logic moves to decision element 347 if the value of BC_Index is greater than 2 as determined in element 345. In decision element 347 a determination is made regarding whether or not the current space (i.e., the space width, expressed in 50μ time counts, in SpaceWidth[ ] pointed to by the current pointer value Search_Index) is a QuietZone 81. As explained with respect to
Logic elements 347, 349, 351, 353, and 355 form a loop which is configured to identify a QuietZone in bar code 75 by identifying the first full QuietZone (reference number 81—see
Decision element 349 identifies full Quiet Zone 81 based on the specific configurational rules of bar code 75 as described above, including the fact that there are six bars 77 between QuietZones 81 in the example. When QuietZone 81 is identified in functional element 347, if it is found in decision element 349 to be six entries away in the array SpaceWidth[ ], then it is determined that the repeated bar codes 75 are being properly sensed and QuiteZone 81 has already been identified. In this case, the value of QuietZone_Index is not set to a new value and the reading of the array SpaceWidth[ ] continues until the full number of spaces has been searched for QuietZones 81. This determination is made in decision element 355. If full QuietZone 81 has been found, then the value of the index QuietZone_Index is set to the current value of Search_Index in functional element 351, and Search_Index is incremented by 1 in functional element 353 to continue the search through the SpaceWidth[ ] array.
When the search for QuietZone 81 is completed, the bar-code-analysis logic 340 continues to decision element 357 in which, if the value of QuietZone_Index is not greater than 0, no calculation of core 59 speed is done since a value of 0 indicates that no full QuietZone 81 was found. If full QuietZone 81 has been found, then decision element 359 is used to filter out situations in which there is insufficient data in the arrays to make a good estimate of the core 59 speed, i.e., there are not at least two pairs of bars and spaces following the selected QuietZone 81.
Functional element 361 calculates the variable CoreSpeed if sufficient data is available as determined in element 359. In element 361, the value of the variable CoreSpeed is set to the sum of the time widths of the first bar 77 (Bar 1 in
Referring next to decision element 363, the ultimate determination is made with respect to whether core 59 speed has exceeded the motor armature 23 speed enough to trigger a low-material indication. Both of the variables CoreSpeed and MotorSpeed are measured in time represented by counts of 50 μs periods of time, CoreSpeed in functional element 361 and MotorSpeed in functional element 223. Higher values of speed are represented by lower values of time for both variables. During a dispense cycle, when roll 11 of paper towel is full, the rotational speed of roll core 59 is slow compared to its rotational speed when roll 11 is nearly depleted of paper 12. Slower speeds translate into longer times. Thus the ratio CoreSpeed/MotorSpeed is decreasing as roll 11 of paper towel is being depleted. Since both of the variables CoreSpeed and MotorSpeed are measured in time, the variables CoreSpeed and MotorSpeed are actually proportional to the inverses of the speed Cs of roll core 59 and speed Ms of motor armature 23, respectively. Thus, the comparison in decision element 363 is equivalent to determining whether or not Cs/Ms is greater than a preset ratio threshold. That is, the determination is whether or not the speed Cs of core 59 has increased relative to the speed Ms of motor armature 23 above a preset ratio threshold.
Now in decision element 363, the ratio CoreSpeed/MotorSpeed is compared to a preset ratio threshold to determine whether roll 11 of paper towel is near depletion and ready to be replaced. In this embodiment, the preset ratio threshold is shown as 7.5. The value of this ratio threshold depends on many factors in both the hardware and software of the embodiment of the invention, and the ratio threshold is chosen accordingly to indicate that roll 11 is nearly depleted and in a low-material state.
In functional element 365, indicator 45 is activated to provide a low-material indication if the speed ratio CoreSpeed/MotorSpeed has reached the preset ratio threshold in decision element 363. If not, no such signal is enabled.
At termination element 367, the bar-code-analysis logic 340 ends, and the flow of logic returns to main control logic 200 at functional element 231 (
Note that in this embodiment, the extra bar-and-space pair required by decision element 359 simply ensures that the bar 77 and space 79 used for the speed calculation are not the very last bar 77 and space 79 measured.
Alternative main control logic 200A proceeds in the same manner as described with respect to main control logic 200 in
The strategy described herein facilitates accurate determination of the low-material state. One factor contributing to such accuracy is that the motor 21 speed and core 59 speed determinations may be made during steady-state motor 21 operation and roll 11 rotation, thus avoiding potential inaccuracy associated with an angular displacement measurement system which may not account for supply roll 11 overspin resulting from inertia.
The present strategy is most preferably implemented by obtaining motor 21 speed and core 59 speed at different times in a dispense cycle. Motor 21 rotational speed is preferably obtained from motor 21 armature 23 rotation pulse data during the “motor coasting” portion of a dispense cycle, immediately after current to motor 21 is deactivated when the motor is at steady-state operation. During motor 21 coasting, well-defined pulses 153, 155 and 157 can be identified in the digitized motor signal as illustrated in
Supply roll 11 rotational speed is best determined from bar code data captured during the “motor on” portion of a dispense cycle when drive roller 17 pulls paper 12 through nip 15 and rotates roll 11. Such core 59 speed information represents steady-state roll 11 rotation which yields accurate core 59 speed information. The accuracy of the motor 21 speed and core 59 speed information provides for a reliable indication of the low-material state.
The particular embodiments disclosed above are illustrative only, as the invention may be modified and practiced in different but equivalent manners apparent to those skilled in the art having the benefit of the teachings herein. Furthermore, no limitations are intended to the details of construction or design herein shown, other than as described in the claims below. It is therefore evident that the particular embodiments disclosed above may be altered or modified and all such variations are considered within the scope and spirit of the invention. Accordingly, the protection sought herein is as set forth in the claims below.
Number | Name | Date | Kind |
---|---|---|---|
4450398 | Bose | May 1984 | A |
4463426 | Caddick et al. | Jul 1984 | A |
4738176 | Cassia | Apr 1988 | A |
4796825 | Hawkins | Jan 1989 | A |
4961088 | Gilliland et al. | Oct 1990 | A |
5268581 | Showalter | Dec 1993 | A |
5452033 | Balling et al. | Sep 1995 | A |
5481100 | Terauchi | Jan 1996 | A |
5497326 | Berland et al. | Mar 1996 | A |
5507277 | Rubsamen et al. | Apr 1996 | A |
5514977 | Agiman | May 1996 | A |
5694156 | Hoisington et al. | Dec 1997 | A |
5772291 | Byrd et al. | Jun 1998 | A |
5829434 | Ambrosio et al. | Nov 1998 | A |
5832972 | Thomas et al. | Nov 1998 | A |
5940103 | Hetzer et al. | Aug 1999 | A |
5992698 | Copeland et al. | Nov 1999 | A |
5995774 | Applegate et al. | Nov 1999 | A |
6068209 | Nakamura | May 2000 | A |
6069354 | Alfano et al. | May 2000 | A |
6105633 | Pedersen et al. | Aug 2000 | A |
6105898 | Byrd et al. | Aug 2000 | A |
6109480 | Monsrud et al. | Aug 2000 | A |
6143257 | Spriggs et al. | Nov 2000 | A |
6158486 | Olson et al. | Dec 2000 | A |
6170937 | Childers et al. | Jan 2001 | B1 |
6209184 | Copeland et al. | Apr 2001 | B1 |
6243635 | Swan et al. | Jun 2001 | B1 |
6250530 | LaCount et al. | Jun 2001 | B1 |
6262546 | Draves et al. | Jul 2001 | B1 |
6293486 | Byrd et al. | Sep 2001 | B1 |
6324350 | Ito et al. | Nov 2001 | B1 |
6325495 | Foth | Dec 2001 | B1 |
6363228 | Ream | Mar 2002 | B1 |
6406120 | Pauschinger | Jun 2002 | B2 |
6411920 | McConnell et al. | Jun 2002 | B1 |
6419136 | Formon et al. | Jul 2002 | B2 |
6446901 | Haen et al. | Sep 2002 | B1 |
6460798 | Haen et al. | Oct 2002 | B1 |
6517025 | Budz | Feb 2003 | B1 |
6592067 | Denen et al. | Jul 2003 | B2 |
6684751 | Kapiloff et al. | Feb 2004 | B2 |
6695246 | Elliott et al. | Feb 2004 | B1 |
6719167 | Chang | Apr 2004 | B2 |
6830210 | Formon et al. | Dec 2004 | B2 |
6854684 | Byrd et al. | Feb 2005 | B2 |
6903654 | Hansen et al. | Jun 2005 | B2 |
6977588 | Schotz et al. | Dec 2005 | B2 |
6988689 | Thomas et al. | Jan 2006 | B2 |
7040566 | Rodrian et al. | May 2006 | B1 |
7044421 | Omdoll et al. | May 2006 | B1 |
7084592 | Rodrian | Aug 2006 | B2 |
7161880 | Okajima | Jan 2007 | B2 |
7213782 | Osborne et al. | May 2007 | B2 |
7231317 | Todd et al. | Jun 2007 | B2 |
7296765 | Rodrian | Nov 2007 | B2 |
7325767 | Elliott et al. | Feb 2008 | B2 |
7325768 | Byrd et al. | Feb 2008 | B2 |
7341170 | Boone | Mar 2008 | B2 |
7354015 | Byrd et al. | Apr 2008 | B2 |
7357348 | Kananen | Apr 2008 | B2 |
7370824 | Osborne | May 2008 | B1 |
7398944 | Lewis et al. | Jul 2008 | B2 |
7434760 | Budz et al. | Oct 2008 | B2 |
7507045 | Harris et al. | Mar 2009 | B1 |
7546973 | Budz et al. | Jun 2009 | B2 |
7549814 | Arrington et al. | Jun 2009 | B1 |
7594622 | Witt et al. | Sep 2009 | B2 |
7648098 | Goeking et al. | Jan 2010 | B2 |
7674054 | Vorhees | Mar 2010 | B2 |
8146471 | Hansen et al. | Apr 2012 | B2 |
20030107341 | Morris | Jun 2003 | A1 |
20040133378 | Todd et al. | Jul 2004 | A1 |
20050077419 | Thomas et al. | Apr 2005 | A1 |
20070158359 | Rodrian | Jul 2007 | A1 |
20100038987 | Kim | Feb 2010 | A1 |
20110148258 | Tanaka et al. | Jun 2011 | A1 |
Number | Date | Country |
---|---|---|
2328540 | Jun 2001 | CA |
2670927 | Dec 1990 | FR |
62111861 | May 1987 | JP |
5290227 | Nov 1996 | JP |
2000136058 | May 2000 | JP |
2002265115 | Sep 2002 | JP |
200514250 | Jan 2005 | JP |
2006256791 | Sep 2006 | JP |
WO2007068270 | Jun 2007 | WO |
Entry |
---|
Notification of Transmittal of the International Search Report and Written Opinion. PCT Serial No. PCT/05/36582. 7 pages. Date: Feb. 24, 2006. |
Notification of Transmittal of the International Search Report and Written Opinion. PCT Serial No. PCT/07/21176. 8 pages. Date: May 5, 2008. |
Notification of Transmittal of the International Search Report and Written Opinion. PCT Serial No. PCT/09/006131. 14 pages. Date: Oct. 4, 2010. |
Number | Date | Country | |
---|---|---|---|
20110114782 A1 | May 2011 | US |