Finished this puppy up. Contrary to what I was initially planning, I am not revising the board design to incorporate an off-board power supply subsystem.. If needed that'll happen down the road though. I have though come across numerous little bugs that I was not aware of or overlooked previously. Moreover, I feel I've significantly improved the base design of D-DAQ. Anyhow, the changes are as such:
Changes/Corrections/Bug fixes:
- ICSP lines need to have less than 100 Ohm resistance but have 470 Ohm PTCs on them. Added an additional pair of SSRs to 'drop in' a pair of 100 Ohm resistors in parallel to the PTCs giving a parallel resistance of ~82.5 ohms. Hopefully this will be low enough
- ICSP detection only engaged programming lines and MCLR. There was no indication to the PIC32 that the cable was plugged in so the programming lines remained AN inputs. This has been corrected.
- Due to apparently high noise automotive environment, decoupling capacitors were revisited. I was going to use decade pairs of 100 nF (0.1 uF) and 1 nF caps. However, at 7 pairs for just the PIC32, 9 for the whole board, this is a lot of board space and. I'm moving to using 4x 0.47uF feedthrough caps for decoupling..
- Using spare GPIO pins to bit bang a SPI interface
- Moved to a parallel-in to serial-out, 8-bit shift register for button support for the displays. As B1 on each display occupies the MISO line on the SPI interface to each display, this means 6 of the 8 bits are used. Soft SPI used for access. It's about the size of the accelerator so it won't use much space.
- SPI-SSx pins are now utilized as GPIO's, but dedicated to the current displays to toggles the display driver between command and data. Previously these were tied to ground and because I didn't know they could function independentlyf.
- Calculations show a best case scenario of ~2 Ksps with the I2C-to-SPI interface. Though slow, it yields a max 4-stroke RPM of ~6350 and 2-stroke RPM of ~12.7K. Though quick, this is under many red lines of performance gasoline engines. A faster interface is required so the IC is tossed out and I'm moving over to Soft SPI.
- To set a limit, even though motorbikes don't typically have a daq, 20K RPM seems to be a solid upper limit for gasoline engines. This requires a sample rate of ~6.67 Ksps. Due to the bit depth of AN channels being 10, I'll be oversampling 9 times giving me a solid 60 Ksps and output 12-bit values. This gives me a streaming output rate of ~1.1 Mbps.
- Moved to a parallel-in to serial-out, 8-bit shift register for button support for the displays. As B1 on each display occupies the MISO line on the SPI interface to each display, this means 6 of the 8 bits are used. Soft SPI used for access. It's about the size of the accelerator so it won't use much space.
- Due to possible streaming buffer issues, the 10ns, 1-Mbit SRAM IC has been upgraded to a 8ns, 4-Mbit chip that costs 2x as much and uses 35-50% less power to drive. This is also enough memory to buffer a single 24-bit frame at 480x272, which will be a theoretical limit for display size. As its possible to drive the PIC32MX to 120 MHz, this SRAM chip will still be able to clocked 1:1 with the CPU and P-bus. Each line has a serial termination of 140 ohms. Due to board space, 0402 resistors are used.
- Analog ground is connected to digital ground through a lossy filter. I'm using 0603 SMD ferrite beads with stated impedances of ~120 ohm @ 2 MHZ, 330 ohm @ 20 MHz, and 470 ohm @ 100 MHz.
- They should attenuate the first few odd harmonics of both my SPI and PMP interfaces fairly well by themselves. But if not, I'll solder in parallel capacitors to make LC filters.
- Crystal changed out from 16.368 MHz @ 0.5 ppm to 40 MHz @ 2 ppm to enable USB and maximum clock of 120 MHz if end user so desires. Though absolute timing accuracy is decreased, relative timing is minimally affected and greater functionality is obtained. I could not find any 20 MHz, 2ppm or better oscillators.
- DISP-1 now has hot-plug detection
- HPD pins now have pull ups. They should only be pulled down on a display board, not an adapter board.
- Though I'll test in the MPLAB X simulator, I believe I can add a 3rd Input capture. This means direct monitoring of RPM, Vehicle Speed Sensor, and for some of us diesels, fuel injection. I'm sure there is an equivalent on the gasser end, but I don't have one as a test bed right now.
- JTAG Header is now 5 pin instead of 4 so MCLR can be utilized by TRST and programming D-DAQ via JTAG is possible instead of just boundary scan and debugging.
- PIC32 package up-sized to 14x14 mm to allow for 8 mil traces and 8 mil spacing all around.
- Net classes have been defined and will be enforced on board layout
- min - 6 mil width, 13 mil drill, 6 mil clearance
- analog - 10 mil, 15 mil, 10 mil
- digital - 8 mil, 15 mil, 8 mil
- power-low - 16 mil, 15 mil, 10 mil
- power-med* - 24 mil, 20 mil, 16 mil
- power-hi* - 32 mil, 25 mill, 20 mil
- Status LED Added due to freed up pins!!!! =D
- Changed over several symbols to standardized practices. Kept a few as I've made them (the PIC32) because it'll take too much time to redo and then I have to figure out how to group things as pin declarations change as this evolves...
- Though not standardized, I have the schematic capture split up into pieces that represent different sections of D-DAQ. This is for anyone wanting to get acquainted with D-DAQ.
- Fixed uSD Card footprint. I had 2 Molex datasheets sitting in my folder and used the wrong one or bought the wrong part...
- Changed SMPS feedback resistors. I'm still within spec according to the datasheet, but I'm using one of both 499K ohm and 158K ohm resistors. I already have a precision 100K ohm in the circuit and that drops the 499K to a 316K ohm. One less unique part :)
- I'll clean up the BOM in a few days.
This has taken the better part of 3 days' work to overhaul, double check, and research. The schematic capture is updated, but there is no board layout to go with it at this time. Because I have theoretically decent EMI filtering from 2 MHz and above on the analog ground and have personally 'discovered' feedthrough capacitors, I'm comfortable starting the sensor board layouts. I know I said I'd start them more than a month ago if memory serves, but now I have a fair amount on confidence that I know which devices and filters I can use for helping with noise immunity. That being said, I need to figure out band pass noise suppression techniques for some of these sensors.
Discussions
Become a Hackaday.io Member
Create an account to leave a comment. Already have an account? Log In.