I am using the DS1340Z-33 RTC for time keeping on the OctoPROBER. Interfaces with i2c. It has a built in trickle charger which I disabled as the RTC pulls power off the main lithium battery when the device is turned off. Last thing to test are the MAX31855K thermocouple chips….kinda the entire reason I designed this board hehe.
Finished programming the ADC which is a MCP3021. It is a 10bit i2c compatible ADC with one channel. A limited ADC but perfect for measuring battery voltages.
Operation is very simple. Just request a word from the device using 10011011 as the device ID and it will spit out the analog value. I had some issues with the i2c driver I used though.
The ADC is supposed to return the 10bit value like so 0000XXXXXXXXXX00. I was receiving XXXXXX000000XXXX. The upper and lower bytes where transposed. Fixed by swapping them around.
*With hardware fixes
I was having an issue with the FT230X being active while the 3.3V rails being turned off. The FT230X would backfeed voltage down the TXRX lines into the propeller which would power the 3.3V rail to ~2.7V causing the soft power switch circuit to turn on. I fixed this by running the RESET pin of the FT230X to the propeller and pulling it up to the switched 3.3V rail. The propeller can control whether the FT230X is in suspend mode or is active. Pulling RESET low will HI-Z the TXRX pins and allowing the propeller to turn off the soft power circuit completely without voltage backfeed.
Changed the 16×2 char display from running in 4-bit parallel mode to serial com. This saves 2 I/O lines and is much faster then the 4-bit mode.
Since the main way of charging the OctoPROBER is over USB I needed a way to disable the auto reset. Don’t want the device to reset when its taking samples and low battery warning pops up! This is cause when a computer connects to the FT230X it sends a reset signal to the FT230X which is connected to the reset line on the propeller. Disconnected that and routed the FT230X signal to a free I/O line. This way the prop can control whether or not to reset upon connecting to a computer.
Couple more hardware systems to test then REV 1 boards will be ordered!
Three boards arrived from OSH Park today. First 4-Layer board I have ordered from them. Quality is pretty good. Silkscreen is a bit weak but that is probably due to me running the weight of the text to thin.
Internal two layers are GND and 3.3V. Outside two layers are signals.
Close up of the kickass OctoPROBER logo.
Character display mounts on the back of the PCB. This way the PCB can be mounted to the front of the case without silly long button caps on the tact switches.
Full parts list for the OctoPROBER. Turned out a bit more expensive then I thought. Might turn the MAX31855KASA+ chips into socketable modules. That way you only add as many channels as you need which will get the initial cost down.
Part Value BATT1 MIKROE-1120 C1 0.1uF C2 0.1uF C3 0.1uF C4 0.1uF C5 0.1uF C6 0.1uF C7 10uF C8 10uF C9 0.1uF C10 0.1uF C11 0.1uF C12 0.1uF C13 0.1uF C14 0.1uF C15 0.1uF C16 0.01uF C17 0.1uF C18 0.01uF C19 0.1uF C20 0.01uF C21 0.1uF C22 0.01uF C23 0.1uF C24 0.01uF C25 0.1uF C26 0.01uF C27 0.1uF C28 0.01uF C29 0.1uF C30 0.01uF C31 10uF C32 10uF C33 10uF C34 0.1uF C35 0.1uF C36 10uF C37 0.1uF C38 0.1uF C39 0.1uF D1 598-8070-107F D2 598-8070-107F D3 PMEG6030EP,115 D4 NUP2105LT1G D5 NUP2105LT1G D6 NUP2105LT1G D7 NUP2105LT1G D8 NUP2105LT1G D9 NUP2105LT1G D10 NUP2105LT1G D11 NUP2105LT1G J1 10118193-0001LF J2 26-60-4020 L1 MI0603K300R-10 L2 BK1005HM471-T L3 BK1005HM471-T L4 BK1005HM471-T L5 BK1005HM471-T L6 BK1005HM471-T L7 BK1005HM471-T L8 BK1005HM471-T L9 BK1005HM471-T L10 BK1005HM471-T L11 BK1005HM471-T L12 BK1005HM471-T L13 BK1005HM471-T L14 BK1005HM471-T L15 BK1005HM471-T L16 BK1005HM471-T L17 BK1005HM471-T LCD1 OP1 ACPL-227 P1 TC33X-2-103E R1 10K R2 10K R3 10K R4 10K R5 10K R6 10K R7 10K R8 10K R9 10K R10 22 R11 22 R12 330 R13 330 R14 10K R15 10K R16 10K R17 1.18K R18 1.13K R19 10K R20 10K R21 10K R22 10K R23 10K R24 100K R25 10K R26 100K R27 300K R28 120 R29 100K R30 254K SD1 502570-0893 SW1 101-0134-EV SW2 EVQ-Q2203W SW3 EVQ-Q2203W SW4 EVQ-Q2203W SW5 EVQ-Q2203W TC1 282834-2 TC2 282834-2 TC3 282834-2 TC4 282834-2 TC5 282834-2 TC6 282834-2 TC7 282834-2 TC8 282834-2 U$1 LHE_FRAME U$2 OCTOPROBER_LOGONORMAL U1 P8X32A-M44 U2 CAT24C512WI-GT3 U3 ADP3338AKCZ-3.3-RL U4 FT230XQ-R U5 BQ24075RGTT U6 74HC2G04GV,125 U7 MAX31855KASA+ U8 MAX31855KASA+ U9 MAX31855KASA+ U10 MAX31855KASA+ U11 MAX31855KASA+ U12 MAX31855KASA+ U13 MAX31855KASA+ U14 MAX31855KASA+ U15 PMV22EN,215 U16 PMV22EN,215 U17 PMV160UP,215 U18 DS1340Z-33+ U19 MCP3021A5T-E/OT X1 ATS060CSM-1 X2 ABS25-32.768KHz-1-T
The Pinheck Pinball System uses a PIC32MX795F512L-80I/PT mcu. It is a 32bit mcu running at 80MHz with 512KB of program space. Plenty fast enough for pinball. The only reasonable package it comes in however is TQ-100 package which has a pitch width of 0.5mm. This pushes the limit of the vision system of the DP2600-2 but I managed to get the system dialed in to make the placement.
The PIC32MX795F512L-80I/PT is a tray part so the machine does not pick the part up from a feeder. Instead you line up all the chips in a row and the machine knows where to look for it. Uses the vision system to find and locate the part.
After picking up the chip the machine takes it over to the “Uplook” camera. Here is can make sure the part is oriented correctly and lined up.
The machine then moves on over to the part location on the PCB and places the part. In the image you can see the dark areas between the shiny leads of the PIC32. The dark areas are the solder mask showing through which means the part was placed correctly and straight.
Finished REV 0 of OctoPROBER last night. I added a MCP3021 which is a I2C 10bit ADC with one analog channel. It will be used to monitor the battery voltage and indicate when the lithium battery is close to being dead.
Schematic is a bit of a mess but I will be cleaning it up.
Files are on GitHub. Will start programming the hardware test software this weekend for the propeller.
An update on the OctoPROBER layout. I added a Real Time Clock (RTC part # DS1340Z-33+) to the I2C buss. Temperature recordings can be logged with an accurate time stamp.
To keep the time when the unit is off it pulls power directly from the lithium battery. When the OctoPROBER is powered on it pulls power from the 3.3V power rail.
Speaking of the battery the OctoPROBER’s main power source is a 18650 lithium cell. Power draw is around 200mA so a 2600mA battery will last around 13 hours. The RTC in standby mode pulls 125uA max which gives it a max standby time of 866 days. That should be plenty for most use cases.
Fixed some more traces. Just need to work on cleaning up the silkscreen then it is off to the fab house!