Background of the Invention
Strap currency is defined as a wrapped bundle of a predetermined quantity of paper currency of the same denomination. For example, strap currency is typically prepared and wrapped in bundles of 100 one dollar bills; 100 five dollar bills; 100 ten dollar bills; and so forth. Quantities of fifty bills of the same denomination are also frequently prepared. These wrapped bundles are prepared by retail establishments, small banks and the like, and are presented to larger banks, clearing houses, and/or Federal Reserve branches, together with a statement identifying the number of the bundles of strap currency, their denomination, and so forth.
It is desirable, and in many cases required, to confirm that the number of bills, i.e. the counts of each of the strap currency received at the clearance house are, in fact, accurate. In addition thereto, it is desirable to be able to count at least small quantities of unstrapped currency and to further be assured that the strap currency is properly averaged to take into account the deviations in unit currency weight due to normal wear and tear experienced by paper currency, as well as the effect of foreign matter upon currency weight, such as dirt, moisture, foreign materials or objects such as adhesive tape and paper clips utilized to repair currency, and so forth. It is also most efficient to verify the bundle count without the necessity for unwrapping, counting and rewrapping the strap currency.
Brief Description of the Invention
The present invention is characterized by comprising a hardware system including a microprocessor interfaced with an electronic scale and a manually-operable keyboard.
The electronic scale is designed to accommodate a pack of paper currency, either strapped or unstrapped, and is provided with a visually observable digital display for displaying a numeric value representing the bundle weight.
The bundle weight value is transferred to the microprocessor for evaluation. Assuming that the calibration being performed is the first calibration, the bundle weight is stored in ten separate memory locations, forming a special table; the bundle weight is also multiplied by ten, the first stored value is subtracted from the ten-pack weight; all the other stored values are moved up one position; the new weight is placed in the tenth position; and a correction factor is introduced to compensate for inaccuracy in the weight measurement due to binary notation and to allow for strap weight. The resulting sum is then divided by ten and stored in low and high storage locations. A factor is added to the low and high storage locations respectively, the total average weight is divided by one hundred to obtain the single bill weight; a factor is added to the single total in the table. This process is repeated twenty-five times to create a table of weights for counts from one to twenty-five bills.
Thereafter, the tables created in the manner described hereinabove are then utilized to create low and high values for a fifty count strap.
The same operation is performed for the denominations for each strap, i.e. $1, $2, $5, $10, $20, $50, $100 and the like. The storage of data for each bill denomination takes fully into account the differences in the amount of printing on each bill denomination and the resulting effect of these differences on bill weight.
To verify a currency strap, a weight measurement is taken and an identification of the strap size and denomination is provided. The microprocessor compares the currency strap weight produced by the scale against the high-low weight limits stored in memory. A visual indication is provided of the strap weight, i.e., an indicator that the strap weight falls within the present tolerances, or is above or below the acceptable weight range.
As each new measurement is made, the measurement value is introduced into the average, the oldest measurement of the group of ten being removed to allow for introduction of the most recent measurement. The average strap weight and upper and lower weight limits are automatically recalibrated each time a measurement is made. The piece weights (1 through 25) are also reclibrated at the same time.
The system automatically determines the range of the bundle being verified or counted. If the bundle weight is greater than a first predetermined value, the bundle being weighed is compared against the stored values for a one hundred bill strap. In the event that the bundle weight is less than the aforesaid first amount but greater than a second predetermined amount, the bundle weight is compared against the stored values for a fifty bill strap. In the event that the bundle weight is less than the aforesaid second amount and greater than a third predetermined amount, the bundle weight is compared against the values stored for individual bill counts.
In the case where an unstrapped quantity of bills is being weighed for counting purposes, the bundle weight is compared against the high and low acceptable weights for each possible count from one through twenty-five.
In all three weight comparison operations, the weight of the last bundle of 100 to be accepted is introduced into the stored data to update the averages for each particular weighing and/or counting condition.
Objects of the Invention and Brief Description of the Figures
It is therefore one object of the present invention to provide novel apparatus for automatically verifying strap currency counts employing a weighing technique.
Still another object of the present invention is to provide novel method and apparatus for automatically verifying a strap currency count and/or counting unstrapped currency employing a weighing technique.
Still another object of the present invention is to provide novel method and apparatus for verifying the count of strapped currency and/or counting unstrapped currency through the employment of a weighing technique and further utilizing the weight value of each weighed bundle for updating the stored values against which the bundles to be verified and/or counted are compared.
The above, as well as other objects of the present invention, will become apparent when reading the accompanying description and drawing in which:
FIG. 1 shows a weighing and counting system partially in perspective and partially in diagrammatic fashion.
FIGS. 2a through 2g are flow diagrams useful in explaining the operating method employed in the system shown in FIG. 1.
Detailed Description of the Invention
The system 10 of the present invention is shown in FIG. 1 and is comprised of a CPU 12 coupled to a printer 14, keyboard 16, electronic scale 18 and display 20.
The CPU 16 is preferably a model F8 CPU manufactured by both Fairchild and Mostek.
CPU 12 interfaces with a memory controller 22, a programmable read-only memory (PROM) 24, a random access memory (RAM), display controller 28 and printer controller 30. Parallel input/output (I/O) controller 32 couples keyboard 16 with CPU 12. I/O controller 34 couples CPU 12 with oscillator 36, UART (Universal Automatic Receiver/Transmitter) 38, control strobe selector 40, auxiliary device selector 42, and demultiplexers 44 and 46.
Multiplexer 48 couples data derived from solid state scale 18 to UART 38. Demultiplexers 44, 46 couple signals from the CPU to the solid state scale 18 to operate the scale. UART 38 is a two-way parallel to serial converter and is employed in the system shown in FIG. 1 to convert serial data from scale 18 to parallel data for transfer to CPU 12.
The solid state scale is preferably of the type described, for example, in U.S. Pat. Nos. 3,986,012 and 4,139,069, and it is sufficient for purposes of the present invention to understand that the electronic scale is capable of providing a binary output representing the weight of the measured bundle. Scale 18 is provided with its own visual display 18b for displaying in decimal form the weight of the bundle placed within the U-shaped receiving bracket 60 mounted upon the weighing platform 62 arranged upon the top surface of the scale housing 18a. A separate off/on switch 64 is provided as are a pair of three position switches 66 and 68 for selecting the responsive time, i.e. settling time, of the scale (slow, normal or fast) and for selectively omitting or including the decimal position for reading in hundredths of a gram. The off position omits the hundredths position from the display. The on position includes the hundredths position in the display. The automatic position omits the hundredths position from the display when the scale is setting. A depressible tare touch pad 70 enables the solid state scale to automatically adjust its "zero" weight to compensate for the weight of the platform 62, bundle holder 60 and the like.
The operation of the system 10 is as follows:
Considering FIG. 2a, when the scale routine is called at 100, the RAM memory 26 is cleared at 102. At 104, the keyboard 16 is scanned. The CPU 12 at 106 determines if any keys have been hit. If any keys have been depressed, the identity of the depressed key or keys is determined at 108.
If no keys have been depressed, the CPU at 110 determines if any notes have been counted from the counter. This step relates to the capability of the system of FIG. 1 to be integrated with a document counter (not shown) and to process this count. If a note count is present in the counter, the note count is processed at 112 and the CPU exits from the scale routine at 114. If no note count has been developed by the counter, and a 100 millisecond delay has expired as of 116, characters are transferred, one ASCII character at a time, from electronic scale 18. This is accomplished by selecting (i.e., enabling) scale 18 through demultiplexer 44 and providing a data control signal through demultiplexer 46 instructing the electronic scale 18 to transmit the data one character at a time. In the preferred embodiment, an RS 232 interface 55 is utilized between scale 18 and the CPU 12. The interface unit 55 can simultaneously send and receive one character at a time between CPU 12 and scale 18.
At 120, a count of the number of characters received is retained and until all characters are received, the CPU continues to loop between steps 118 and 120.
When all characters have been received, the scale reading is examined at 122. If the scale reading is zero and the scale zero bit is set, at 124, the routine branches at 126 to return to step 104 to again scan keyboard 16.
In the event that the scale zero bit is not set, and the scale reading is zero, the scale zero bit is reset at 128, the category is redisplayed and CPU 12 exits from the scale routine at 130 to return to the main program.
In the event that the reading from the scale is not zero, at 122, and the scale zero bit is set, the routine branches at 126 to return to the scanning keyboard step 104.
In the event that the scale zero bit is not set, the zero bit is reset and the currency counter which, as was previously mentioned, may be coupled to CPU 12, is halted to prevent an operator from simultaneously weighing currency with scale 18 and counting currency with a currency counter (not shown for purposes of simplicity). After these operations are completed at step 134, the data representing the depressed keys of keyboard 16 stored in the key buffer is cleared from the key buffer at 136.
The weight of the bundle which has been placed within the bundle holder 60 is compared against a weight value stored in memory representing 100 grams. If the weight value of the bundle presently being weighed is greater than 100 grams, the computer branches to the pack 100 subroutine shown in FIG. 2b, as will be more fully described. In the event that the weight of the bundle in holder 60 is less than 100 grams, CPU 12 at step 140 compares the weight of the bundle against a weight value of 40 grams stored in memory. If the weight value of the bundle is less than 40 grams, the CPU branches at 144 to the piece routine shown in FIG. 2c. In the event that the weight of the bundle in holder 60 is greater than 40 grams, the CPU 12 at step 146 compares the bundle in holder 60 with a value in a value stored memory representing 90 grams. If the bundle in holder 60 weighs more that 90 grams, the CPU branches at 148 to the pack 100 subroutine shown in FIG. 2b. In the event that the bundle in holder 60 is less than 90 grams, the CPU 12 branches at 150 to the pack 50 subroutine shown in FIG. 2d.
The pack 100 subroutine shown in FIG. 2b is entered either from step 140 or 148 of FIG. 2 and advances from 152 to step 154 where the "less" value is called out from memory. The "less" value is the lower weight limit for a valid one hundred bill currency strap of the desired denomination. The valid low for the strap is compared against the weight of the bundle in holder 60. If the weight is less than the valid low, an error signal is provided at 158.
If the bundle weight is greater than the valid low, the computer calls the "great" value out of memory which represents the valid high weight for a one hundred bill strap. The bundle weight is compared against the valid high and if the bundle is greater than the valid high, an error signal is given at 158. If the bundle is less than the valid high, then the bundle resides within the valid limits. Obviously the comparison operations may be reversed in that the bundle weight value may first be compared against the valid high and thereafter compared against the valid low.
The CPU 12 keeps a count of the number of currency straps [each currency strap containing one hundred (100) bills] of each denomination measured. In the event that the present bundle is the first such strap being measured, or the operator has requested re-calibration, the program branches at 172 to the Calibrate subroutine shown in FIG. 2e. In the vent that the bundle presently being measured is not the first pack of one hundred bills to be weighed, the weight value is converted to the monetary value of the total pack and stored in the key buffer at 166, and the CPU 12 branches at 168 to the continuation subroutine shown in FIG. 2d.
The pack 50 subroutine shown in FIG. 2d is quite similar to the pack 100 subroutine shown in FIG. 2b, and is entered at step 152 and advances to the call less 194 at which time the value representing the valid low limit for a fifty bill strap is called from memory. The value is compared against the bundle in holder 60. The weight comparison is made at 196 and if the bundle weight is less than the weight for a valid low, the error step is entered at 198. If the bundle weight is greater than the valid low, the "great" value is called from memory. The bundle weight is compared against the "great" value and if the bundle weight is greater than the valid high, an invalid strap message is provided at 204. The invalid strap message is also activated when the error advances to step 158 of the subroutine shown in FIG. 2b, step 198, and then step 204 of FIG. 2d, to cause the invalid strap message to be displayed by visual display 20 (FIG. 1). After the invalid strap display is generated, the CPU 12 advances to step 210 to return to the control input 126 to reinitiate a scan of the keyboard 16, shown in FIG. 2a.
Returning to step 162, if the weight of the bundle is less than the valid high for a fifty bill strap, the weight is converted to the monetary value of the pack of 50 bills and stored in the key buffer 206, and thereafter at step 208, the CPU 12 advances to the continuation subroutine shown in FIG. 2e.
Considering the CONTINUATION subroutine of FIG. 2e which is entered by CPU 12 when either a valid one hundred bill strap or a valid fifty bill strap is present. The CPU 12 advances from step 170 to display the value or total number of bills at 172.
The system of the present invention may also be utilized to accommodate a coin counting operation through the use of apparatus employing a direct counting technique as opposed to apparatus employing a technique of weighing the coins for the purposes of counting.
In the event that any keys have been hit, CPU 12 determines if the enter key has been hit at 182. If the enter key has not been hit, the key is processed at 184 and the CPU exits at 186 to the main program to perform other calculations and summaries of the coins and currency obtained from a particular source.
When the computer branches to the check key step 108, due to the fact that at least one key of keyboard 18 has been operated, the CPU 12 branches out of the routine shown in FIG. 2a at step 108 and enters step 180 shown in FIG. 2e.
If the ENTER key has not been hit, the operated key is processed at step 184, the CPU 12 returns to the main program through step 186. If the key operated is the ENTER key, and the pack being weighed is a one hundred bill strap, the key is processed at 190, and the CPU advances to the calibrate subroutine through step 192.
If the bundle being weighed is not a one hundred bill strap, the key is processed at 184 and the CPU 12 branches to the main program through step 186.
If the ENTER key of the keyboard has been hit, the program advances to step 188 to determine if a one hundred bill stap has been selected. If a one hundred bill strap has not been selected, the program branches to step 184 to process the key and ultimately exit to the main program at 186. If a one hundred bill strap has been selected, CPU 12 branches to 190 to process the key and to enter the calibrate subroutine at 192, the CALIBRATE routine being described and shown in FIG. 2f.
The PIECE subroutine is shown in FIG. 2c and step 220 is entered from step 144 shown in FIG. 2a. CPU 12 at step 222 calls the "less" value stored in memory and compares it with the weight value of unstrapped bundle presently within the holder 60. If the weight value of the bundle is greater than the valid low for a single bill, the "great" value is called from memory at 226. If the weight is less than the valid low for a single bill, the program branches at 228 to display an invalid weight message and advances to step 230 to return to the control input 126 shown in FIG. 2.
If the weight value of unstrapped the bundle is greater than the valid low, the "great" value is called at 226 and is compared against the unstrapped bundle weight corresponding to the count of the number of notes. If the weight is less than the valid high, the number representing the count is passed through the loop and stored in the key buffer at step 234 and advances to step 236 to branch to the CONTINUATION subroutine shown in FIG. 2d.
In the event that the weight of the unstrapped bundle is greater than the valid high weight of a single piece, the counter is incremented at 238 and a determination is made at 240 if twenty-five comparing operations have been performed. In the event that twenty-five comparing operations have not yet been performed, the program branches back to step 222 which calls the greater value for an appropriate unit count bundle. The comparison operations are repeated comparing the unstrapped bundle being weighed against the valid upper and lower limits for a two-bill bundle and providing either an invalid or a valid weight display.
In the event that neither an invalid weight message nor a valid weight condition is obtained, the subroutine continues to repeat the operation calling the upper and lower limit values for each possible unstrapped bundle from a count of one to a count of twenty-five.
In the event that the weight of an unstrapped bundle has a value greater than the valid high for a twenty-five bill unstrapped bundle, at steps 232 and 240, the counter retaining the count is reset to zero at step 242, and thereafter CPU 12 at step 244 causes display 20 in FIG. 1 to display an excess weight message. Thereafter, the CPU 12 advances to the control step 246 to return to the program step 104 through return step 126 shown in FIG. 2.
The CALIBRATE subroutine is shown in FIG. 2f. The CALIBRATE subroutine may be entered either from step 172 shown in FIG. 2b or step 192 shown in FIG. 2d. When the CALIBRATE subroutine is entered at 250, CPU 12 advances to step 252 which determines what calibration is being made. Assuming that the calibration presently being made is not the first calibration, the program branches to step 260. In the event that the present calibration is the first calibration, the program branches to step 254 at which time the CPU 12 displays and prints the message "calibrate all". Thereafter, at step 256, the weight of the one hundred bill currency strap is successively stored in ten memory locations forming the one hundred bill currency strap table. Thereafter, the weight of the one hundred bill currency strap presently being measured is multiplied by ten at 258. The weight value W.sub.1 in the first table position is subtracted from the ten-pack weight at 260. At 262, the weight value stored in the second through the tenth table positions are each moved up one position in the table. In other words, the weight value W.sub.1 in the first position in the table is removed from memory; the weight value W.sub.2 in the second position in the table is moved to the first position in the table previously occupied by weight value W.sub.1 and so forth. Upon completion of this step, the weight values previously identified as W.sub.2 through W.sub.10 are now stored in the memory positions in the table previously occupied by the weight values W.sub.1 through W.sub.9.
The weight value of the new one hundred bill strap is then added to the weight obtained at step 260 and is also placed in the tenth position in the table, at step 264.
At step 266, a truncate factor in binary form representing a factor value of 0.5 grams is added to the total weight. This correction factor provides for the rounding of binary coded decimal numbers by truncating to the appropriate decimal place, after addition of the truncate factor. For example, a value of 1.7 is truncated to 2.0 by adding 0.5 to obtain 2.2 which is truncated to 2.0.
Thereafter, at step 268, the total weight obtained at step 266 is divided by ten and is stored in the locations in which the valid low and valid high value for a one hundred bill strap of a particular denomination are stored. Thereafter, at step 270, a binary value representing a decimal value of 0.7 grams is added to the quantity of the valid high location and is subtracted from the quantity of the valid low memory location.
Thereafter, the total average weight is divided by one hundred at step 272 to obtain the single bill weight.
At step 274, the single bill weight value is added to the single total. At 274, a truncate factor in binary form representative of the value of 0.5 grams is added to the single total and stored in the single total position in that portion of memory storing the weight values in the table utilized to count unstrapped bundles having a count of up to twenty-five bills of a particular denomination.
A count is kept of the number of individual operations performed at 278 and when the high and low weights for twenty-five bills have been developed, the CPU 12 advances to step 280 to the A portion of the CALIBRATION subroutine shown in FIG. 2f. When the count is less than twenty-five, the single weight as well as the truncate factor are again added to the single total during each iterative operation to create and store counts representative of the weights of bundles of 1, 2, 3, 4, 5 . . . and 25 bills of unstrapped currency.
Once the twenty-five counts have been completed, the A part of the CALIBRATION subroutine is entered at 282 shown in FIG. 2f, causing the CPU 12 to advance to step 284 which adds and subtracts a binary value equal to 0.4 grams to create the valid high and valid low weights for each piece count of one through twenty-five bills.
Thereafter, at step 286, the total weight of a pack of ten straps (each of 100 bills) previously stored in memory is called from memory and is added five times in a computer buffer, at step 286. Thereafter, at step 288, a truncate factor in the form of a binary number representing the weight value of 5.0 grams is added to the total weight count obtained at step 286. This total, with the truncate factor added, is divided by one-hundred (100) at step 290 to obtain the weight for a strapped fifty bill pack. At step 292, the truncate value of 1.0 grams is added to the fifty bill strap weight to obtain the valid high for a pack of fifty. At 294, a binary value representing 0.4 grams is subtracted from the fifty bill strap weight to obtain the valid low for a pack of fifty. Thereafter, at 296, CPU 12 reenters the program shown in FIGS. 2 at branch input 126.
At this time, all of the data necessary for verifying one hundred bill straps and fifty bill straps and for counting unstrapped currency in bundles of no greater than twenty-five bills, is stored in memory in readiness for any of the permitted verification or counting operations. In the preferred embodiment, the table for the high and low valid weights for one hundred bill straps of each denomination is retained in memory. The same is true for fifty bill straps and for unstrapped bundles of up to twenty-five bills. The use of different tables for each bill denomination has the advantage of fully taking into account different weights per bundle due to differing amount of inks utilized in the printing of each bill denomination.
Each time a one hundred bill strap is measured, updated calibrations are performed for the one-hundred bill strap and the one through twenty-five unstrapped bill bundles, thereby taking into account the most recently weighed hundred bill straps in determining the average bundle weight as well as the individual piece weight.
A latitude of modification, change and substitution is intended in the foregoing disclosure, and in some instances, some features of the invention will be employed without a corresponding use of other features. Accordingly, it is appropriate that the appended claims be construed broadly and in a manner consistent with the spirit and scope of the invention herein.