Has anyone found a schematic for the Arduino variant of the CN0216 (CN0216-ARDZ)?
The CD that comes with the EvKit has very little on it, and refers to the SDP variant.
(A bit of reverse engineering shows) There is an odd ADG3308 voltage translator that is powered via the "i/o ref" pin. Given that the "I/Oref" pin isn't present on all Arduinos , and Arduinos run on 5v like the AD7791 there is no need for the level translators.
The power arrangement is a bit odd. I'm just going to connect +5 from my CPU to the power input, and see how well the LDP3301 manages with 0v headroom, and connect same 5v to straingage , and to level converter, and see how it all goes.
The schematic and other design files for the Arduino version of the CN0216 can be found in this zip file (http://www.analog.com/CN0216-Shield-DesignSupport )
There is actually a whole wiki page dedicated to the CN0216 Arduino Shield (CN0216 Shield Evaluation Board User Guide [Analog Devices Wiki] ) but because there is no hardware ordering capability on the wiki, we needed to add the ordering information to the CN0216 web page.
Without looking at the designs, my guess is that the ADG3308 is only present on the SDP version of the board because of the 3.3V requirements coming from the SDP. I believe you won't find this on the Arduino version, and like you said should work with 5V with no problem.
Hi Brandon thanks for that.
A couple of hours after posting the first message, I managed to get the board working.
The "http://www.analog.com/CN0216-Shield-DesignSupport.html " seems to be a "page not found".
Ah the wiki page page, I found that before then lost it again. Now I have the link where I can find it again.
The directory on the CD is mostly about the SDP version.
I did eventually find a schematic for the CN0216-ARDZ buried in the thousands of files on the CD. It was named 1508723.pdf
It looks like the CN0216-ARDZ PCB was a job given to a vacation student : "Take the existing CN0216-SDPZ and make it fit an Arduino shield" . Lots of minor issues like a 10v MLCC on the 12v input, the right angle strain gage connector wrong way around, unable to plug ISP programmer in, 1206 resistors jammed onto 0805 pads, and a major goof up using the ADG3304 (it's actually the 04 not the 08, my mistake- didn't count the pins). Having a good look at the ADG3304 shows it is a special purpose device with an extremely limited application area. As a level converter, it is completely incapable of driving TTL, which, as a "level converter" makes it as useless as a screen door on a submarine. A handful of MOSFETs in cascode configuration would be more than adequate level translators, and in the case of an Arduino , a 5v to 5v level converter can be achieved with 4 pieces of wire (4 x 100R resistors for some protection).
In the real world, an SPI bus can be attached to many devices , and may include small pullup resistors.
The particular development SBC I am using has a 4k7 pullup on the MISO line. So while I was reading actual strain gage data, that changed when the load cell was loaded, but it also changed erratically when a finger was placed on the MISO line or a scope probe was connected. With a scope probe connected it could be seen that the line was only being pulled down to ~2.8v (A surprise that any data was being read at all) , more disturbingly the MISO line had ~ 1v of high frequency oscillation on it , even when the CN0216 was de-selected. Seems that on a bus with modest capacitance and a 4k7 pullup resistor, the ADG330x with its 6k output impedance and SCR-like functionality turned into a relaxation oscillator.
Anyway I can get back to the job at hand, the AD7791 and ADA4528 are examples of Analog Devices doing what it does best!
My apologizes for that link not working, it is supposed to be a virtual URL that redirects users to a zip file location. We just had a website redesign and it appears that did not propagate over. I've put in a ticket to our web team to address this.
I agree with the remainder of your points, and I hope they aren't a huge burden on what you are doing. I've played with this board as well and the programmer and the board can be plugged in at the same time, but they don't quite sit flush. I didn't do the design myself so I can't comment on the reason for having the ADG3304, but the goal was to have this board work with many different Arduino type form factors. So I think it was put there to ensure there was always 5V coming to the circuit.
This was our first board attempting to use the Arduino form factor, and feedback such as this is important to making improvements. I hope you'll continue to use ADI, and to help us improve our designs with feedback like this.
I'm certainly not going to stop using ADI !. See figures 2 and 3 below !!
These eval PCB's are great because they save you a first round of PCB layout, better to learn from someone elses mistakes!
I actually stumbled on the CN0216 while ordering parts for an unrelated project.
========== Some numbers if anyone is interested======================
(a) Using the CN0216-ARDZ board with the digital interface 6 x 24g wires soldered to the PCB with a plug to match the JED256 SBC. Wires about 12" long with an additional 22g between mounting screws for earth bond. There is a 100ohm series resistor on the MISO line to stop the ADG3304 oscillations.
(b) There are two layers of bubble wrap around the CN-216 and the load cell connector to minimise thermal effects.
(c) The ADC is in default state, (I write 0x38 and get 3bytes back), this is 9.5Hz update mode, I read the data every 2 seconds, it's squirted over a serial port to a simple Labview vi that plots it , saves as CSV etc.
(d) The loadcell is a LSP-1 , 1kg at 1mv/V, it's just a bare beam load cell , it has 1m of screened cable attached. One end is clamped in a drill vise on my wooden bench
(e) So if I take blocks of 120 samples (= 1minute) I get an RMS average over 5 blocks of 5.01milligrams or 14.75 counts (8.8uV at ADC input); For peak-peak I get about 120counts over 5 minutes or ~ 80 counts over a minute, so somewhat better than the CN016 app note measurements.
(f) I do get a lot of thermal drift from the load cell, (it's a bare beam, and I'm directly under the aircon, and it's summer in Australia) , if I place a 2 litre plastic tub over the load cell , most of the thermal drift goes away, see first snapshot below.
(g) I've also attached a plot comparing the noise of the CN0216 (upper), with an existing weigh scale (lower) we are intending to upgrade, as you can see the RMS noise is ~10x better than the "other system" although my thermal drift is worse (the "other" system has a better, more expensive load cell, but clearly the AFE is not doing it justice).
Fig 1: Covered (first 30minutes) then uncovered weight measurement on 1kg load cell,
3.5g weight added at end of run for scale. The Yaxis is 0-4.5g or ~ 1/200 of full scale of load cell
Fig 2 Analog Devices CN0216 chipset effective noise (2hz sampled, 9.5Hz update mode)
The 0.01% FSD dimension(100mg) is 1/10,000 of full scale
Fig 3 The "other guys" , same axis scales as fig2. (1Hz sample, AFE bandwidth unknown)
Hi Brandon , The AD website is a bit messed up! . Tried to get to AN940 by clicking a link in the ADA4528A datasheet, http://www.analog.com/an-940?doc=ADA4528-1_4528-2.pdf but a dead end, what's worse is that the search terms "AN940" or "AN-940" failed to locate it. But good old google to the rescue, it found http://www.analog.com/media/en/technical-documentation/application-notes/AN-940.pdf Actually none of the hyperlinks sprinkled through the ADA4528A data sheet work.
Ok they work all right if you remove the "?doc=ADA4528-1_4528-2.pdf "
Thanks for pointing those linking issues out, I'll get them over to the web team as well. The website migration didn't go as smoothly as we would have hoped, and there are several linking errors we are experiencing at the moments. So thanks for finding these and reporting them, it will help us correct them as quickly as possible. Again sorry for the hassle.