BCAM Head (A3025) Design and Development

© 2012-2025 Kevan Hashemi, Open Source Instruments Inc.

Contents

Design
Modifications
Development

Design

[25-SEP-25] The A3025 introduced the first dual-ICX424AL camera. We discuss the behavior of the clock signals for the dual-sensor drive, in particular for quadruple-pixel readout, in this study.

Modifications

[05-JAN-16] The A3025A requires no modifications. The A3025B requires a piece of kapton tape over the via that connects U1-2 through the board beneath J1. Without this tape, the via makes contact with the J1 shield.

Development

[09-JAN-13] We have the A302501A (Black H-BCAM main board), A302601A (Black H-BCAM side board), and a prototype chassis, not anodized, with two sensor mounting pegs. We assemble them together to test the mechanical fit. See H-BCAM, Top View for photograph. The flex cables must be bent several times, but they fit in the available space. See H-BCAM, End View for photograph. The lower mounting screw of the A302601A end board requires that we go through the opposite lens hole with the screwdriver shaft. We put up with this in the Polar BCAMs, so we can tolerate it in this design too. Once the pegs are in place, however, we cannot undo the lower screw, even if we remove the lens. This we will tolerate also. See H-BCAM, Top Angle View and See H-BCAM, Side View for photographs. We recommend the following changes.

  1. Increase peg diameter to 250 mils. Will give more flat-on-flat contact at base.
  2. Increase peg mounting thread length by 3 mm if possible. Allows us to use one of our standard M2.5 lengths.
  3. At either end, on the top of the ledge that supports the lid, the drawing shows a radius. Change the drawing to show a 45° cut, because that's how we have to make it with a three-axis mill.
  4. The A302601A side head interferes with the top of the side of the chassis. We should raise the edge that rests upon the side of the chassis by 40 mil. This change we can make in the Gerber Files.
  5. The A302601A LED footprint holes are 25 mils. They should be 30 mils. The LED leads have a thick spot of side 21 mil, at which they require 30 mil diameter hole to be pressed all the way into the circuit board.
  6. The LED holes in the chassis are only 100 mil. The LEDs are 100 mil in diameter. Increase hole size to 120 mil to give some play.
  7. The laser holes in the chassis are only 120 mil. The lasers are 120 mil in diameter. Increase hole size to 150 mil to give some play. Previous BCAMs used 146 mil. With six components sliding into adjacent holes, we need extra clearance to accommodate misplacement of the components.
  8. The laser holes need a larger 45° chamfer on the inner side, which requires a special tool. The chamfer is necessary to make sure the anodizing remains intact when we insert the laser.
  9. The lens hole diameter is 270 mil. The lens holders are 280 mil. Increase hole size for tight fit to existing lens holder. Previous BCAMs used 297 mil.
  10. The 6-way flex cable in the A302601A should be moved 40 mil to the right, as seen looking at the board from the inside of the BCAM, which is the side holding the connector.

[14-JAN-13] We assemble one A302501A printed circuit board. We have difficulty with solder bridges between vias and pads, especially when the vias are obscured beneath P0805 components. But the board works with both image sensors and appears to switch its source control pins to 0V.

[01-MAR-13] We now have four working A3025As.

[04-MAR-13] We discover that the A302501A layout has J2 and J3 in the wrong place, when compared to our original schematic, which was based upon the arrangement to be found in the Polar BCAM Head (A2051L). J2 was at the front of the board, when it should have been at the back for use in the front-facing camera. This problem can be fixed in the firmware, so we produce P2074A05, in which the CCD1 signal becomes CCD2, and we modify page three of the schematic to match.

[25-MAR-13] We have two fully-functional BCAM-HLDs, loaded with 7-mW lasers set to emit 5.5±0.5 mW. Because the laser power exceeds 5 mW, we apply Class 2M laser warning labels to the sides of the BCAMs. While testing these BCAMs we notice that a light source jut above the field of view of the rear-facing camera will shine light through the lens to the top surface of the RJ-45 connector, which is shiny metal. The result is light shining onto the image sensor from a light source outside its field of view. We were able to eliminate this reflection by placing a piece of tape on one side of the connector, protruding upwards, but not by applying nail polish. We will consider how to eliminate the reflection in future versions of the H-BCAM but for now we do not modify the BCAM to remove the reflection.

[27-MAR-13] The laser holes in the Blue H-BCAM chassis are making contact with the laser cans. We insulated the cans with kapton tape. In the future, we recommend increasing the diameter of the laser holes still further.

The spacers we are using for the side baords are 0.05" thick. We are doubling them up to make 0.10" spacing between the board and the chassis.

[02-APR-13] List of issues with the H-BCAM, including hardware. Overall, the new H-BCAM works well. It is accurate and all the circuits are correct and functiona. Here are some minor problems.

  1. Blue H-BCAM Main Board A302501B has a via under the RJ-45 connector that makes contact with the connector shield, resulting in the logic signal called "A" being shorted to 0V through a 10-nF capacitor. An interesting problem to find, and easy to fix with some kapton tape.
  2. Blue H-BCAM Side Board A302601C has resistors too close to the 6-way flex connector. In particular, the laser calibration resistor R13 is so close that you can't remove it without melting a bit of the connector.
  3. In all H-BCAM Side Boards, the LEDs are in two orientations, so that the assembler must place two with the anode on the left and two with the anode on the right.
  4. The Black H-BCAM Side Board A302601B has no ground plane and so must be painted black with nail polish to stop LED light shining back through it to the image sensor.
  5. The existing BCAM Main Board circuit does not provide reliable double-speed pixel clocking to two image sensors at once. Thus we cannot rely upon the quadruple-size pixel readout, not that we were planning on doing so. But I'd like to fix this with a change to some resistor values and maybe some firmware adjustments.
  6. Some BCAM Main Boards do not provide readout of image sensor number 2 when image sensor number 1 is not connected. I understand why, but what I don't understand is why some of the boards don't have this problem. I am uncomfortable about the fact that I don't understand what's going on.
  7. The BCAM Side Board standoffs should be plastic and 0.05". I'm doubling up the 0.025" standoffs that Jim bought. The doubling-up makes the side-head assembly difficult.
  8. The laser holes are still shorting to the laser cans. The method of using one BCAM as a jig to assemble the boards does not work. Even with the laser holes opened up to 0.149" from 0.146", the lasers press against one side or other of the holes in their destination board. We should return to the method we used with the black polar BCAMs: put the lasers in their destination holes, lower the board onto the legs, screw the board in place with the lasers still unsoldered and therefore loose, then solder. Also, we must make sure the chamfer around the holes extends to a diameter of at least 0.170", and that the finish in the holes and on the chamfer is quality 2.0.

[06-AUG-13] We find that with 47-Ω resistors in place of R41, R42, R43 the H1 and H2 clocks are not formed properly in quadruple-pixel readout. This contrasts with the A2075, in which the clocks are formed properly. The A3025 loads the clock signals with two image sensors, and as a result the rise and fall time of the clock signals is longer. The 25-ns pulse required to double-clock the image sensor is attenuated. The image below shows the smearing of a BCAM image due to these poorly formed pulses in the A3025 quadruple-pixel readout.


Figure: Smearing By Imperfect Quadruple-Pixel Readout.

We will solve this clocking problem in the future by replacing R41, R42, and R43 with 10-Ω resistors.

[03-SEP-13] The result of a study of double-speed clocking in the A3025 is here.

[25-SEP-13] We have an order for 56 H-BCAMs, half black and half blue. We resolve the issues listed on 02-APR-13 in the following way.

  1. The via that shorts to the RJ-45-RS shield we will cover before we load the connector. We will have all the A3025 boards made at an assembly house, but without the RJ-45-RS and without the through-hole components. This will save money and ensure that there are no problems with one-sided flex connectors being put in the wrong way.
  2. The resistors too close to the flex connector we will resolve by modifying the A302601C layout. We will place both calibration resistors on the bottom side, so they can be changed without removing the board.
  3. To resolve the odd orientations of the LEDs, we will lay out a new version of the A302601B and A302601C.
  4. We will put a ground plane in the new A302601B, or copper to block light from the LEDs. We may remove the ground plane on the 01C board and replace with copper.
  5. We fix the double-speed clocking problem by changing R40..R43 to 10Ω.
  6. We have not been observing this single-ccd readout problem recently.
  7. We have 0.05" plastic standoffs.
  8. Now that we have the calibration resistors on the back side of the board, we can assemble the side head and lasers in place, which means we should have fewer problems with contact between the laser can and the chassis.

[06-JAN-15] We try various combinations of flex cables and image sensors in the two image sensor sockets, to see what kind of readout we can obtain.

CCD1 (J2, Rear Camera) CCD2 (J3, Front Camera) CCD1
(Single)
CCD1
(Quadruple)
CCD2
(Single)
CCD2
(Quadruple)
ICX424, 50-mm CableICX424, 50-mm CablePerfectPerfectPerfectPerfect
ICX424, 300-mm CableICX424, 300-mm CablePerfectPerfectPerfectPerfect
OmitICX424, 50-mm CableNoneNonePerfectPerfect
OmitICX424, 125-mm CableNoneNonePerfectPerfect
OmitICX424, 300-mm CableNoneNoneBright pixels turn grayPerfect
ICX424, 50-mm CableOmitVery dimVery dimNoneNone
ICX424, 300-mm CableOmitVery dimVery dimNoneNone
Table: A3025 Behavior for Various Flex Cables and Image Sensor Configurations. We give the behavior of the single and quadruple-pixel readout for both image sensors for each configuration.

These results show that the A3025 can operate with 300-mm flex cables, provided both image sensors are plugged in. If we want to load only one of the image sensors, it must be CCD2, but in that case the flex cable should be 125 mm or less.

As we can see, CCD2 must be loaded for CCD1 to be read out. When the A3025 wakes up to take part in a loop job, CCD2 is selected (see P2075A05.abl for firmware). The loop job measures the round-trip propagation time of the A3025's root and branch cables. If CCD2 is absent, input U11-8 to our image sensor selector switch floats to +15V, which sends a positive pulse through C12 to the output amplifier U13, resulting in a low pulse on R. The figure below shows the pulse on R− immediately after a wake command.


Figure: Wake Pulse on R− (Top Trace). Timebase is 10 μs/div. Top trace is 1 V/div (×10 probe) R−. Bottom trace is command active, which goes low when the wake bit is set.

The low pulse on R corrupts the driver's measurement of loop time. The driver transmits a low pulse of its own, and is waiting for this pulse to return, but the low pulse generated by the wake-up arrives immediately, resulting in a 0-ns loop time measurement regardless of cable length. In future circuits, we will add a pull-down resistor to the image sensor outputs so that an absent image sensor does not cause pulses on R.

[30-DEC-15] We have an order for 12 Blue H-BCAMs. We have in hand 14 of the A3025B. We program them with firmware P2075A05. We capture images and flash all six light sources. The delay A to DA is 104 ns, and A to DDA is 230 ns. Ideally, these should be 125 ns and 250 ns (see specification). We adjust the firmware and get DA at 132 ns and DDA at 258 ns. We now have P3025A01.

[05-JAN-16] We have 14 A3025Bs with connectors loaded. We program and test with all sources and sensors. We add support for the A3025A/B to the Analyzer Tool. Current error for all boards is less than 5 mA.

[24-JAN-24] We update the Black H-BCAM main board layout, creating A302501C with smaller vias that we will have tented and masked. We delete the holes for CCD posts, since we have eliminated the posts. We space out the component designations so they are easy to read. We add 0V pad and power supply test points. Submit for fabrication.

[22-MAR-24] The new Black H-BCAM main board A302501C was far easier to work with than its predecessor. We build around twenty by hand for a PIPII order. We have four of the boards left, not panelized.

[17-JUL-25] We have an order for 36 of Black H-BCAM. We plan to have the main boards and side boards made by machine. Bill of materials is A3025AV2. All components are in stock at Digi-Key except the obsolete NDS356AP. We have plenty of these on the shelf, and will assemble the new boards with our old stock. The NDS355AP's radiation tolerance is well-known.

[23-JUL-25] One of our A3025AV1 assemblies, build on the A302501C board, produces a perfect image with a short cable, a dark image with a 3-m cable, and a negative image with a 5-m cable. The loop-back at the start of a new image, which measures the cable propagation time, is failing. We have seen this problem before but can find no report on it. We find that the R− line is corrupted during readout of bright pixels. We replace U1 and the problem resolves: we see bright images for all cable lengths. We resolve to add to our quality control a test of the cameras with short and long cables.

[15-SEP-25] We have forty A3025LV1 assemblies. Almost half of them fail Diagnostic Instrument loopback, returning either 0 ns or 3125 ns. We set up our test board and a faulty board, looking at R+ and R− during the loopback, to see what difference we can find.


Figure: Loop-Back Signals. Blue: R+. Yellow: R−. Left: Working Board. Right: Faulty Board. 0.5 V/div, 100 μs/div.

In the working board, we see the R+ and R− settling to 1.4 V, as dictated by U13 through 100-Ω resistors. We see the two lines separating by 0.5 V during loop-back, when we enable the LVDS driver and assert a HI on the return lines. When we examine the loop-back event in detail we see HI with a short LO period that marks the loop-back return. We check LB on both boards and it is being asserted in the same way. We check the A-DA and DA-DDA delays and find them to be about 125 ns, which is perfect. On the faulty board, the return lines settle to 1.0 V. It turns out that the board is not waking up. When we send command 0x0080 we see a 10-ns pulse on WAKE. When we send 0xFFFF, WAKE is asserted. We set each other DC (device command) bit to 1 in turn and find that with 0x00A0, which is DC6 and DC8 asserted, WAKE turns on. We get no WAKE with 0x0020. Bit DC6 is the substrate clock control. We have S = DC6 and !S = !DC6. We set S = 0, no change. We restore S = DC6 and set !S = 0. No change. We try another of the faulty boards and it exhibits the exact same symptom. We add another gate to the ring oscillator: no change. We set S = 1 and !S = 0, so that there is no change to these two lines as we wake the board, and they are always HI and LO. Now we can wake the board with 0x0080. Restore firmware. Load 10 nF across R27 to slow down the SC pulse. Still have failure to wake with 0x0080. The signal on S is a 20-V oscillation with period 10 ns. We remove R25. No change. Raise U10-7 off its pad. No change. Restore the SC amplifier. Set S and !S to 0 in firmware. Now cannot wake the board with 0x00A0. In the firmwarwe, we are back to our original code. We change run_time from dda_delay+3 to dda_delay+7 and now we cannot wake the board with 0x00A0. We drop to dda_delay+1 and behavior is same as for dda_delay+3. We change the code so that the ring oscillator is running all the time. We now get wake on 0x0080 and loop time that varies from 0 to 100 ns. The board consumes 8 mA from +5 V. Right now we are compiling our firmware P3025A02 for the LC4064ZC. But our new boards are equipped with the LC4064ZE. We can configure each output individually. We turn on pull-up resistors, set the outputs to slow-slew, and configure for 3.3-V I/O. We re-program our two faulty boards and now they wake up with 0x0080 and perform perfectly.