LEAD SENSE SYSTEM FOR COMPONENT INSERTION MACHINE

Abstract: Apparatus for analyzing an image produced by a camera (24) focused on the leads of a component (10) that have been inserted into a printed circuit board (16) by a component insertion machine. The apparatus includes the construction of arrays of information pertaining to individual leads that should be present in the image produced by the camera (24). Individual strings of pixel information in the form of binary encoded bits within each array are analyzed for the presence of a pattern of bits that would indicate a lead. The apparatus is operative with respect to a pixel resolution that may only produce a single properly encoded bit per width of inserted lead.

Description: This invention relates to the verification that all of leads of an electrical component which were to be inserted into the holes of a printed circuit board were, in fact, inserted correctly. DE-A-3 346 822 discloses a system for verifying the proper insertion of leads of an electronic component into a printed circuit board. The system comprises a photosensitive element for each lead to be detected. The elements are arranged to exhibit a certain value when the respective lead is present. In G.B. Patent Specification No. 2 184 538 published after the priority date of the present patent, a system is described for sensing up to 20 leads of a DIP component inserted by a component insertion machine through the holes of a printed circuit board using a remotely located camera. The camera has a plurality of photosensitive binary elements arranged in horizontal and vertical rows to define a two dimensional array. The system involves defining "windows" within the array in which the image of a lead should be detected. For example, the "windows" are squares 15 elements by 15 and an image is expected to occupy the entire height of a window and a width of about 6 elements. The system analyses each window by examining each horizontal row in turn for two consecutive elements detecting an image and, if 10 consecutive rows have two such consecutive elements, a lead is considered as being present. Where more leads are present, however, so that the size of the "windows" has to be decreased this system is not sufficiently accurate. It is an object of the present invention to provide an improved system of verifying the proper insertion of leads. The invention provides a system for verifying the proper insertion of leads of an electronic component such as a DIP into a printed circuit board prior to securing the leads to the board comprising: camera means including a plurality of photosensitive binary elements arranged in horizontal and vertical rows to define a two-dimensional array, such elements being arranged to exhibit one value when the lead is present and the image of the lead falls thereon and another value when said image is absent therefrom, and means arranged to determine whether each of the component leads is present by examining a set of discrete windows of the photosensitive elements, one window being associated with each lead, each lead having a plurality of consecutive horizontal rows of the elements and a plurality of consecutive vertical rows of the elements, said determining means comprises means arranged to ascertain whether one of the vertical rows of photosensitive elements within a window or a combination of a selected number of said vertical rows of photosensitive elements within a window exhibits a predetermined number of consecutive elements having a value indicating that a lead is present. In a system according to claim 1, lead images which only occupy parts of adjacent vertical rows in a "window" can be detected. A preferred embodiment of the invention is described below with reference to the accompanying drawings. In the drawings: Figure 1 is a perspective view of a camera oriented toward the underside of a printed circuit board within a component insertion machine; Figure 2 is a front view of the camera oriented toward the underside of the printed circuit board; Figure 3 is a close-up view of a component having leads extending down through the printed circuit board; Figure 4 is a block diagram of a system associated with the camera and various other elements of a component insertion machine; Figure 5 illustrates the image field of the camera that is to be analyzed by the system of Figure 4; Figure 6A and 6B illustrate the overall operation of a second central processor used within the system of Figure 4 which implements the image analysis; Figures 7A through 7F illustrate the operation of the second central processor in implementing an operating mode program; and Figure 8 illustrates a bit pattern masking comparison implemented within the operating mode program of Figures 7A through 7F. Referring to Figure 1, an electrical component 10 is held by a pair of finger grippers 12 and 14 which are part of an insertion head mechanism within a component insertion machine. The component leads will be partially inserted into appropriate holes in the printed circuit board 16, and a pusher element 18 will move downwardly to fully insert the leads into the holes of the printed circuit board (a pair of columns 20 and 22 will support the circuit board when the pusher element 18 seats the component 10). The light source 26 is positioned on the opposite side of the cut and clinch mechanism 28 and immediately below the supporting table 29 (Figure 2) for the printed circuit board. The positioning of the light source 26 with respect to the leads of the component allows for the projection of an appropriately illuminated image onto the lens of the camera 24. The electronics within the camera 24 preferably include discrete light sensitive elements each producing a pixel of information having a resolution of approximately six thousandths of an inch (a minimum width of an inserted lead which may be only eighteen thousandths of an inch). The component may have up to forty leads with twenty leads extending downwardly from each long side of the component. The long side of the component farthest from the camera 24 is seen to have the component lead 30 extending downwardly therefrom whereas the long front side of the component is seen to have the component lead 31 extending downwardly therefrom. Referring to Figure 2, it is to be appreciated that the distance of the leads 30 and 31 from the camera will vary slightly depending on the width of the component. In accordance with the practice used herein for counting leads, lead 30 will be the first lead to be counted whereas lead 31 will be the second. The third lead to be counted will be the lead adjacent to lead 30 along the backside of the component whereas the fourth lead to be counted will be the lead adjacent to lead 31 along the front side of the component. Successive lead counts are indicated in Figure 3 by the "LC" labels. Referring now to Figure 4, two separate computer systems are illustrated relative to certain previously described elements of Figure 1. In particular, a machine control system 32 is illustrated relative to certain elements of the component insertion machine described in Figure 1, whereas an image analysis system 34 is illustrated relative to the camera 24. Each system comprises a central processor unit, such as CPU 36 for the machine control system, and CPU 38 for the image analysis system. These central processor units are preferably Intel 8080 microprocessors which interface with randomly addressable memories 40 and 42 via Intel multibus circuitry 44 and 46. The central processor units 36 and 38 communicate with each other via a multiple line database 48. Referring to the image analysis system 34, the central processor units 36 and 38 addresses a camera interface unit (CIU) 50 via the multibus 46. The CIU 50 is preferably a standard interface for a charge coupled device type of solid state camera. Such devices are available from various analog to digital product manufacturers, i.e., for example, Data Cube, Inc. of Peabody, Massachusetts. A particular camera interface unit from Data Cube which may be used is a VG-132. The charge coupled device camera 24 is connected to the camera interface unit 50 via a line 52 which is a standard RS 170 line. Following receipt of an authorization from the central processor 38, the camera interface unit 50 will automatically proceed to look for a synchronizing signal from the camera on the line 52. The CIU will thereafter store binary coded information defining an array of pixels numbering 384 horizontally by 242 vertically. In this regard, the camera interface unit will read an analog signal depicting the voltage level of each pixel. The camera interface unit 50 will arbitrarily assign a binary value to the thus read signal based on a predefined threshold value which divides that which is to be regarded as light (binary 0) from that which is to be regarded as dark (binary 1). The resulting pixel bits are stored within an internal memory of the camera interface unit 50 for later use by the central processor unit 38. The CIU 50 is connected by an RS 170 output line 54 to a monitor 56. Referring now to Figure 5, an X, Y coordinate system is set forth which defines the location of each pixel within the aforementioned array of 384 by 242 pixels. The address location within the CIU 50 for each stored pixel bit corresponding to a pixel located at one of the four corners of the array of pixels is also shown in Figure 5. In this regard, the address locations are indicated for addressable eight bit bytes of information stored within a randomly addressable memory in the CIU 50. The first eight bit byte having a CIU memory address of zero contains, as its most significant bit, the pixel bit corresponding to the pixel located at X equals zero, Y equals 241. Since there are 384 pixel bits in a row, there will be forty-eight bytes of information in a given row. The memory address of 47 will hence define the last addressable byte in the Y equals 241 row and the least significant bit of this addressable byte will correspond to the pixel bit for the pixel occupying the coordinate position of X equals 383 and Y equals 241. In a similar fashion, the addressable byte containing the pixel bit for the pixel located at X equals zero, Y equals zero will have a memory address of 11568 whereas the CIU memory address for X equal to 383, Y equal to zero will be 11615. It is to be noted from the above that an address may be calculated for the first byte of information within a given row of bits defined by the Y-coordinate as follows: memory address equals 48(241-Y). A set of windows labeled W₁ through W₄₀ is illustrated in Figure 5 relative to the X, Y coordinate system. Each window is seen to have a specific X i , Y i coordinate defining the left corner of the window. The location of each window as defined by its respective X i , Y i coordinate should coincide with a lead on the maximum size of component 10 set forth in Figure 3. In this regard, a portion of each of the leads having lead counts LC₁ through LC₄₀ in Figure 3 should appear within a respective window W i . As has been previously discussed, each window W i will have a left corner coordinate X i , Y i . These coordinates are initially defined in a table of coordinate values as a set of coordinates for each respective window index number. The initial coordinates are such as to space the windows relative to the center of the field of vision of the camera lens so that a camera mounted along the centerline of Figure 2 should produce an image of leads falling within the windows. Each window having its particular coordinate values is preferably eight pixel locations in width by eight pixel locations in height. The lead length should extend from top to bottom of the window. The lead width of eighteen thousandths should produce three dark pixels along the horizontal window width. It is to be noted, however, that the edges of the leads may appear grey to the camera as a result of the white background lighting. This may result in less than three dark pixels being present along a given horizontal width of a window. The CIU 50 may therefore have encoded only one pixel bit as a binary one indicative of a truly dark pixel having been produced by the camera 24. The stored pixel bits for a given lead for a given window may therefore consist of a thin lead image from top to bottom consisting of possibly only one properly encoded binary one pixel bit per width of lead. Referring now to the image analysis system 34 in Figure 4, it is seen that the central processor unit 38 communicates via a bus 58 with a terminal 60. The bus 58 is preferably a three wire bus allowing for normal eight bit ASCII coded communications to the central processor unit 38. Referring now to the machine control system 32, the central processor unit 36 addresses a particular input/output function of an input/output (I/O) circuit 62 via the multibus 44. In this manner, the central processor unit 36 monitors and/or controls certain functions of the component insertion machine. The first machine control function to be monitored is that of a switch 64 which trips when the pusher element 18 moves to its downward position against the component 10. A pressure sensitive switch 66 also provides a signal to the I/O circuit 62. In this regard, the pressure sensitive switch 66 monitors the pressure in a pneumatic line 68 associated with the pneumatic drive for the pusher element 18. The input/output circuit 62 is seen to also be connected to a switch 70 which trips when the grippers 12 and 14 move to the downward position so as to position the component 10 with respect to the board 16. The input/output circuit 62 is also seen to be connected to a switch 71 which trips when the cut and clinch mechanism 28 has moved upwardly into place for cutting and clinching the leads. The I/O circuit 62 is also connected to various solenoid controlled valves which control the pneumatic pressures to various machine elements. In this regard, a line 72 provides a control signal to a solenoid controlled valve associated with the pneumatic system for the pusher element 18. A drive line 74 provides a control signal to a solenoid controlled valve associated with the pneumatic system for the component insertion head which houses the grippers 12 and 14. A line 76 provides a command signal to a solenoid controlled valve associated with a pneumatic drive for the supports 20 and 22. Finally, a command is provided over a line 78 to a solenoid controlled valve associated with the pneumatic drive for elevating the cut and clinch mechanism 28. Referring now to Figure 6A, a flow chart of the initial steps of the image analysis process is illustrated. The process begins with steps 300 to 304 wherein certain information is initially read into the memory 42. In the preferred embodiment, however, this information is obtained from a read-only memory associated with the CPU 38. This memory is merely addressed and the information is thereafter transferred via the multibus 46 to the memory 42. Step 300 relates to the accessing and storing of a window correlation table (a cross correlation between lead count and window index value). Step 302 relates to the reading of a threshold value for the CIU 50. This defines what analog voltage level from the camera 24 is to be used as the cross-over point between a light and dark image connotation. Higher than the threshold value will be interpreted by the CIU 50 as light or a binary zero. Step 304 involves the reading into memory of an "M" mask table. This table consists of a number of eight bit masks that are to be successively applied to certain bit strings of information in a manner that will be described in detail hereinafter. In the following step 308 appearing in Figure 6B, the central processor 38 awaits a picture authorization communication from the CPU 36 via the bus 48. When a picture authorization is received, the central processor 38 pursues the "yes" path to a step 310 and reads the width and lead information identifying the component whose leads have been inserted. The central processor 38 thereafter stores the lead information as a numerical value in the software variable "lead total" in step 312. The central processor also reads the table of X i , Y i coordinate values for the identified component width in a step 314. The table of X i , Y i coordinates will be the coordinate values for each window W i . The central processor 38 now proceeds to step 316 and exits to an operating mode program. Referring again to step 308, in the event that a picture authorization is not received, the central processor unit 38 merely awaits a keyboard entry from the terminal 60 in a step 318. In the event that a keyboard entry is made, the central processor unit 38 exits to a diagnostic program in a step 320. Following any adjustment that may be necessary to the windows of Figure 5, the central processor 38 will return through the re-entry point A and await a picture authorization in step 308. The central processor 38 will then exit to an operating program. Referring to Figure 7A, the operating mode program begins with a step 400 wherein the threshold value (initially stored in the software reference "T" in step 304) is transmitted to the CIU 50. Each so characterized pixel voltage is stored as either a binary one (dark) or binary zero (light) in step 402. The central processor unit 38 proceeds to a step 404 and awaits the completion of this storage. This will be indicated to the central processor 38 by a status signal from the CIU 50. At this point in time there will be a complete storage of the entire array of 384 by 242 pixel bits in a randomly addressable memory within the CIU 50. These pixel bits will be stored in the CIU memory as addressable bytes in accordance with the addressing scheme previously discussed relative to Figure 5. Following storage of the binary coded image in pixel bit form, the central processor 38 proceeds to step 406 and sets the window index variable "I", equal to one. The central processor 38 then proceeds to step 407 and sets the "lead count" variable equal to one. The central processor 38 now proceeds to a step 408 and sets a window row array index "J" equal to one. It is to be noted that this index will always be set equal to one each time the central processor returns to the step 408 via a return point B. The central processor 38 proceeds from step 408 to a step 410 and obtains the X i and Y i coordinates for the current value of the window index variable "I". Since this variable is initially set equal to one in step 406, the first pass through step 410 will result in the coordinates X₁ and Y₁ being obtained. These coordinates will be stored in step 412. The central processor 38 now proceeds to a step 414 and calculates a "base address" using the coordinate value of Y i (the first addressable byte in any given Y-row in Figure 5). The central processor 38 now proceeds to step 416 and divides the X i coordinate value by eight and saves both the dividend "D" and the remainder "R" of this division operation. In step 417, a window row array index "K" is set equal to one. The Dividend "D" is thereafter added to the "base address" and saved as a "current address" in step 418. The central processor 38 now proceeds to step 420 and reads the addressable byte of information from the CIU 50 as defined by the current address. This byte of information is saved as "byte 1". The central processor 38 now proceeds to step 422 in Figure 7B and increments the value of the current address by one. The addressable byte in the CIU defined by the thus incremented address is stored as "byte 2". It is to be appreciated that the steps 418 through 422 have located two bytes of information in the CIU memory which contain the pixel bits for the bottom-most row of pixels in the first window W₁. It, therefore, remains to isolate the particular eight pixel bits from the bytes identified as byte 1 and byte 2. The extraction of meaningful pixel bits from these two bytes begins with step 424 wherein the bits of byte 1 beginning with bit position 7-R are extracted. This effectively disregards any bits in byte 1 that are not a pixel bit within the window. Each extracted bit is stored as a particular bit in a window bit array B jk . In particular, the first bit to be extracted in step 424 will be stored as a bit B₁₁ whereas the second extracted bit will be stored as a bit B₁₂. This will continue until the bit of byte 1 corresponding to bit position zero is stored as a bit in the window bit array. It is to be noted that if "R" equals zero then all eight bits of byte 1 will have been stored as a row of bits in the window bit array. In this case the central processor 38 will proceed through step 426 to step 428 and compute a new base address for the next row of bits. The central processor 38 will otherwise proceed to a step 430 and extract the bits out of byte 2 beginning with bit position 7 and extending to bit position 8-R. The thus extracted bits are stored as the last remaining bits in the particular row of bits of the window bit array currently being formed. In other words, the last bit to be extracted from byte 2 will become bit B₁₈ in the window bit array. The central processor 38 will now proceed to step 428 and calculate a new base address for the next row of pixel bits to be examined for particular window bits. The central processor 38 will then proceed to step 432 and increment the window array row index "J" by one. This will allow the next extracted bits from bytes 1 and 2 to be stored in row 2 of the window bit array. This occurs when the central processor 38 proceeds through step 434 back through the re-entry point C to step 418 in Figure 7A and again calculates the appropriate addresses for bytes 1 and 2 in steps 420, 422 and thereafter extracts the appropriate window bits in steps 424, 426 and 430. The appropriate row of bits within the window bit array B jk is formed upon the reiteration of these steps through to and including the formation of row eight. At this point the central processor 38 proceeds through step 434 to step 436. Referring to step 436, the window bit array is rotated so that each previously formed column of window bits becomes a correspondingly numbered row in a rotated window bit array. In this manner, the first column of bits in the previously formed window bit array will become the first row in the rotated array whereas the eighth column will become the eighth row. The new rotated column or row index is "L". The "L" index is set equal to eight in step 438 and the eight transposed bits comprising row eight of the rotated window bit array are fetched in step 440. The central processor 38 now proceeds to a step 442 wherein the eight transposed bits are successively compared with bit pattern masks illustrated in an "M" mask table of Figure 8. Referring to Figure 8, it is to be noted that each of the bit pattern masks defines a bit pattern having at least six consecutive binary one bits. In the event that the fetched bits compare to any of these masks, the central processor will proceed to a step 444 in Figure 7D and set a test flag "F i " equal to one indicating that at least one rotated column of window bits from the window bit array B jk has been found to have at least six successive binary one bits. Since the test flag "F i " is itself indexed by the window index "I", the particular test flag will be specific to the window then under examination. Referring again to step 442, in the event that the particular fetched bits of step 440 do not contain six consecutive binary one bits, then the central processor 38 will proceed to a step 446 and decrement the "L" index. The process defined by steps 440, 442 and 446 will again be repeated by virtue of step 448. The next rotated column of window bits indicated by the new "L" will be fetched and compared with the "M" masks. This reiteration will continue until either a rotated column is found to have six consecutive binary one bits or all eight rotated columns have been examined. In the latter event, the "L" index will have been decremented to zero causing the central processor to proceed through step 448 to step 450 wherein the index "L" is again set equal to eight. The central processor now fetches both the rotated column of window bits identified by "L" in a step 452 as well as the next rotated column of window bits identified by "L-1" in a step 454. These two successively fetched rotated columns of eight bits each are now logically ORed together in a step 456. The resultant eight bits are now compared in a step 458 with each of the bit pattern masks in the "M" mask table of Figure 8. In the event that the resultant eight bits contain six consecutive binary one bits, then the central processor 38 immediately proceeds out of step 458 to the step 444 in Figure 7d via their re-entry point D. This indicates that at least two successive columns of the window bit array B jk can be combined to show a continuous string of six consecutive binary one bits. In other words, if a binary one bit is missing from a bit position in one column of the window bit array B jk but found in the corresponding bit position of the immediately adjacent column, then the logical OR operation of step 456 will have produced a binary one bit in the resultant eight bit string being compared with the "M" masks in Figure 8. This will constitute a "pass" condition being indicated by the test flag "F i " in step 444. Referring again to step 458 in Figure 7E, if the resultant eight bits formed in step 456 do not indicate a continuous string of at least six consecutive binary one bits, then the index "L" is decremented in step 460 and the process of steps 452, 454, 456 and 458 is again repeated in a step 462 and re-entry point E. This continues to occur until either six consecutive binary one bits are found in two combined adjacent columns of the window bit array or the index "L" has been decremented to one. In the latter case the central processor 38 proceeds through step 462 to a step 464 and sets the test flag "F i " equal to zero indicating a "fail" condition. It is to be noted that regardless of whether the test flag "F i " is set equal to zero in step 464 or set equal to one in step 444, the central processor 38 will always proceed from either step to a step 466 in Figure 7F. Referring to step 466 in Figure 7F, the central processor 38 compares the current value of "lead count" to the value of "lead total". In this regard, it will be remembered that "lead total" is defined in a step 312 as the number of leads for the component that is being inserted. It will also be remembered that the software variable "lead count" is initially set equal to one in a step 407. Since most components will have several leads, the central processor will proceed to increment "lead count" in a step 468. The incremented "lead count" of step 468 will now be used in a step 470 to define the next window which is to be examined for the presence or absence of a lead. In this regard the central processor 38 will proceed to the window correlation table and read the value of "I" for the incremented "lead count" of step 468. The central processor 38 will now proceed via return point B to Figure 7A and again initialize the window row index "J" equal to one in step 408. The central processor will then proceed to go to the table of X i , Y i coordinates and obtain the coordinates for "I". These coordinates will be stored in step 412 and the "base address" for the Y i coordinate will be calculated in step 414. The X i coordinate will be divided by eight in step 416 and both the dividend "D" and the remainder "R" will be saved. The two bytes within the Y i row will then be identified and the eight window bits within these two bytes will be extracted and set equal to the first row of the newly constructed window bit array B jk . Following construction of each row of the window bit array, the columns will be rotated and examined for six consecutive binary one bits in any one column or in the resultant eight bits formed by combining two adjacent columns by the logical OR operation of step 456. The test flag "F i " for the particular window under examination will either be set equal to one in step 444 or set equal to zero in step 464 before returning to step 466 in Figure 8F. The central processor 38 will continue through the above steps until such time as the "lead count" equals "lead total" in step 466. At this time the central processor 38 will proceed to a step 472 in Figure 8F and again set the software variable "lead count" equal to one. The central processor 38 then proceeds to set "I" equal to one in a step 474 and obtains the particular "F i " corresponding to the value of "I" in step 476. The value of the thus obtained "F i " is checked for a failure condition in a step 478. In the event that the currently examined "F i " has a value of zero, the central processor 38 will immediately exit to a step 480 and transmit a "fail" signal to central processor 36. On the other hand, if a given "F i " is equal to one, the central processor will proceed to a step 482 and check as to whether "lead count" equals "lead total". In the event that the "lead count" remains less than "lead total", the central processor will proceed to increment the "lead count" in a step 484 and read the current value of "I" for the incremented "lead count" in step 486. The "F i " corresponding to the thus incremented value of "I" will be obtained in step 476 and analyzed as to failure in step 478. This will continue to occur until such time as a particular "F i " is equal to zero or until the "lead count" is equal to "lead total". In the latter event, the central processor 38 will exit from step 482 to a step 488 and send a "pass" message to the central processor 36.

Claims: A system for verifying the proper insertion of leads of an electronic component (10) such as a DIP into a printed circuit board (16) prior to securing the leads to the board comprising: camera means (24) including a plurality of photosensitive binary elements arranged in horizontal and vertical rows to define a two-dimensional array, such elements being arranged to exhibit one value when the lead is present and the image of the lead falls thereon and another value when said image is absent therefrom, and means (34) arranged to determine whether each of the component leads (LC1 to LC40) is present by examining a set of discrete windows (W1 to W40) of the photosensitive elements, one window being associated with each lead, each lead having a plurality of consecutive horizontal rows of the elements and a plurality of consecutive vertical rows of the elements, said determining means (34) comprises means arranged to ascertain whether one of the vertical rows of photosensitive elements within a window or a combination of a selected number of said vertical rows of photosensitive elements within a window exhibits a predetermined number of consecutive elements having a value indicating that a lead is present. A system according to claim 1, characterised in that the windows (W1 to W40) are approximately 8 rows in width by approximately 8 rows in height. A system according to either one of claims 1 and 2, characterised in that the image of a lead is arranged to occupy an area approximately 8 elements long by approximately 3 elements wide on the array of photosensitive elements. A system according to any one of claims 1 to 3, characterised in that the selected number of said vertical rows is two. A system according to any one of claims 1 to 4, characterised in that the predetermined number of consecutive elements is approximately six.

Inventors: DUNCAN, ROBERT J., MCLEAN, JEAN A.
Applicants: EMHART INC.
Application year: 1988
Main classification: H05K13
IPC codes: H05K13, G01R31