[{"data":1,"prerenderedAt":455},["ShallowReactive",2],{"blog-en-/en/blog/high-precision-adc-selection":3},{"id":4,"title":5,"body":6,"description":440,"extension":441,"meta":442,"navigation":154,"path":451,"seo":452,"stem":453,"__hash__":454},"en_blog/en/blog/high-precision-adc-selection.md","High Precision ADC Selection and Applications",{"type":7,"value":8,"toc":420},"minimark",[9,14,18,22,27,30,47,51,54,65,69,73,76,82,86,89,109,113,116,227,231,234,240,244,248,298,302,336,340,367,371,374,400,404,407,410,416],[10,11,13],"h2",{"id":12},"importance-of-adc-in-precision-measurement","Importance of ADC in Precision Measurement",[15,16,17],"p",{},"In industrial measurement systems, choosing the right ADC (Analog-Digital Converter) directly affects system performance. 24-bit resolution offers the ability to measure at the microVolt level.",[10,19,21],{"id":20},"adc-performance-criteria","ADC Performance Criteria",[23,24,26],"h3",{"id":25},"resolution-vs-effective-number-of-bits-enob","Resolution vs. Effective Number of Bits (ENOB)",[15,28,29],{},"The difference between theoretical resolution and actual performance is critical:",[31,32,33,41],"ul",{},[34,35,36,40],"li",{},[37,38,39],"strong",{},"24-bit resolution",": 16,777,216 discrete levels",[34,42,43,46],{},[37,44,45],{},"ENOB",": Effective resolution reduced by noise and distortion",[23,48,50],{"id":49},"sampling-rate","Sampling Rate",[15,52,53],{},"Typically 1kHz sampling rate is used in industrial applications:",[55,56,61],"pre",{"className":57,"code":59,"language":60},[58],"language-text","f_sample = 1kHz\nT_sample = 1ms\nNyquist Frequency = 500Hz\n","text",[62,63,59],"code",{"__ignoreMap":64},"",[10,66,68],{"id":67},"signal-conditioning","Signal Conditioning",[23,70,72],{"id":71},"anti-aliasing-filter","Anti-Aliasing Filter",[15,74,75],{},"Analog filtering before sampling is mandatory:",[55,77,80],{"className":78,"code":79,"language":60},[58],"f_cutoff = 0.4 * f_sample = 400Hz (for 1kHz)\nFilter Order: 4th order Butterworth\n",[62,81,79],{"__ignoreMap":64},[23,83,85],{"id":84},"reference-voltage-stability","Reference Voltage Stability",[15,87,88],{},"Ultra-low drift reference for precision measurements:",[31,90,91,97,103],{},[34,92,93,96],{},[37,94,95],{},"Drift",": \u003C 2ppm/°C",[34,98,99,102],{},[37,100,101],{},"Noise",": \u003C 10µVrms",[34,104,105,108],{},[37,106,107],{},"Long-term stability",": \u003C 50ppm/1000hr",[10,110,112],{"id":111},"loadcell-application","Loadcell Application",[15,114,115],{},"Example 2mV/V loadcell reading circuit commonly used in industrial weighing systems:",[55,117,121],{"className":118,"code":119,"language":120,"meta":64,"style":64},"language-c shiki shiki-themes github-light github-dark","// 10V excitation, 2mV/V loadcell\n// Full scale: 20mV\n// 24-bit ADC: 2.5V reference\n// Gain: 2.5V / 20mV = 125\n\n#define ADC_REF_VOLTAGE 2.5\n#define LOADCELL_SENSITIVITY 2.0  // mV/V\n#define EXCITATION_VOLTAGE 10.0   // V\n#define PGA_GAIN 125\n\nfloat calculate_weight(uint32_t adc_value) {\n    float voltage = (adc_value / 16777216.0) * ADC_REF_VOLTAGE;\n    float loadcell_mv = (voltage / PGA_GAIN) * 1000;\n    float weight_kg = loadcell_mv / (LOADCELL_SENSITIVITY * EXCITATION_VOLTAGE);\n    return weight_kg * calibration_factor;\n}\n","c",[62,122,123,131,137,143,149,156,162,171,180,186,191,197,203,209,215,221],{"__ignoreMap":64},[124,125,128],"span",{"class":126,"line":127},"line",1,[124,129,130],{},"// 10V excitation, 2mV/V loadcell\n",[124,132,134],{"class":126,"line":133},2,[124,135,136],{},"// Full scale: 20mV\n",[124,138,140],{"class":126,"line":139},3,[124,141,142],{},"// 24-bit ADC: 2.5V reference\n",[124,144,146],{"class":126,"line":145},4,[124,147,148],{},"// Gain: 2.5V / 20mV = 125\n",[124,150,152],{"class":126,"line":151},5,[124,153,155],{"emptyLinePlaceholder":154},true,"\n",[124,157,159],{"class":126,"line":158},6,[124,160,161],{},"#define ADC_REF_VOLTAGE 2.5\n",[124,163,165,168],{"class":126,"line":164},7,[124,166,167],{},"#define LOADCELL_SENSITIVITY 2.0",[124,169,170],{},"  // mV/V\n",[124,172,174,177],{"class":126,"line":173},8,[124,175,176],{},"#define EXCITATION_VOLTAGE 10.0",[124,178,179],{},"   // V\n",[124,181,183],{"class":126,"line":182},9,[124,184,185],{},"#define PGA_GAIN 125\n",[124,187,189],{"class":126,"line":188},10,[124,190,155],{"emptyLinePlaceholder":154},[124,192,194],{"class":126,"line":193},11,[124,195,196],{},"float calculate_weight(uint32_t adc_value) {\n",[124,198,200],{"class":126,"line":199},12,[124,201,202],{},"    float voltage = (adc_value / 16777216.0) * ADC_REF_VOLTAGE;\n",[124,204,206],{"class":126,"line":205},13,[124,207,208],{},"    float loadcell_mv = (voltage / PGA_GAIN) * 1000;\n",[124,210,212],{"class":126,"line":211},14,[124,213,214],{},"    float weight_kg = loadcell_mv / (LOADCELL_SENSITIVITY * EXCITATION_VOLTAGE);\n",[124,216,218],{"class":126,"line":217},15,[124,219,220],{},"    return weight_kg * calibration_factor;\n",[124,222,224],{"class":126,"line":223},16,[124,225,226],{},"}\n",[10,228,230],{"id":229},"_4-20ma-current-loop-reading","4-20mA Current Loop Reading",[15,232,233],{},"Industrial sensor standard:",[55,235,238],{"className":236,"code":237,"language":60},[58],"I_min = 4mA  → Sensor minimum\nI_max = 20mA → Sensor maximum\nR_shunt = 250Ω\n\nV_min = 4mA × 250Ω = 1V\nV_max = 20mA × 250Ω = 5V\n",[62,239,237],{"__ignoreMap":64},[10,241,243],{"id":242},"calibration-and-linearization","Calibration and Linearization",[23,245,247],{"id":246},"two-point-calibration","Two-Point Calibration",[55,249,253],{"className":250,"code":251,"language":252,"meta":64,"style":64},"language-python shiki shiki-themes github-light github-dark","# Zero calibration\nzero_reading = adc.read()\n\n# Span calibration (known weight)\nspan_reading = adc.read()\nspan_weight = 10.0  # kg\n\ngain = span_weight / (span_reading - zero_reading)\noffset = -zero_reading * gain\n","python",[62,254,255,260,265,269,274,279,284,288,293],{"__ignoreMap":64},[124,256,257],{"class":126,"line":127},[124,258,259],{},"# Zero calibration\n",[124,261,262],{"class":126,"line":133},[124,263,264],{},"zero_reading = adc.read()\n",[124,266,267],{"class":126,"line":139},[124,268,155],{"emptyLinePlaceholder":154},[124,270,271],{"class":126,"line":145},[124,272,273],{},"# Span calibration (known weight)\n",[124,275,276],{"class":126,"line":151},[124,277,278],{},"span_reading = adc.read()\n",[124,280,281],{"class":126,"line":158},[124,282,283],{},"span_weight = 10.0  # kg\n",[124,285,286],{"class":126,"line":164},[124,287,155],{"emptyLinePlaceholder":154},[124,289,290],{"class":126,"line":173},[124,291,292],{},"gain = span_weight / (span_reading - zero_reading)\n",[124,294,295],{"class":126,"line":182},[124,296,297],{},"offset = -zero_reading * gain\n",[23,299,301],{"id":300},"temperature-compensation","Temperature Compensation",[55,303,305],{"className":118,"code":304,"language":120,"meta":64,"style":64},"float temp_coefficient = -0.002;  // %/°C\nfloat reference_temp = 25.0;      // °C\nfloat current_temp = read_temperature();\n\nfloat temp_correction = 1.0 + temp_coefficient * (current_temp - reference_temp);\nfloat corrected_value = raw_value * temp_correction;\n",[62,306,307,312,317,322,326,331],{"__ignoreMap":64},[124,308,309],{"class":126,"line":127},[124,310,311],{},"float temp_coefficient = -0.002;  // %/°C\n",[124,313,314],{"class":126,"line":133},[124,315,316],{},"float reference_temp = 25.0;      // °C\n",[124,318,319],{"class":126,"line":139},[124,320,321],{},"float current_temp = read_temperature();\n",[124,323,324],{"class":126,"line":145},[124,325,155],{"emptyLinePlaceholder":154},[124,327,328],{"class":126,"line":151},[124,329,330],{},"float temp_correction = 1.0 + temp_coefficient * (current_temp - reference_temp);\n",[124,332,333],{"class":126,"line":158},[124,334,335],{},"float corrected_value = raw_value * temp_correction;\n",[10,337,339],{"id":338},"pcb-layout-recommendations","PCB Layout Recommendations",[341,342,343,349,355,361],"ol",{},[34,344,345,348],{},[37,346,347],{},"Analog Ground Plane",": Separate from digital, single point connection",[34,350,351,354],{},[37,352,353],{},"Kelvin Connection",": For 4-wire measurement",[34,356,357,360],{},[37,358,359],{},"Guard Rings",": Preventing leakage currents",[34,362,363,366],{},[37,364,365],{},"Component Placement",": Reference and filter components close to ADC",[10,368,370],{"id":369},"emiemc-protection","EMI/EMC Protection",[15,372,373],{},"EMI protection is critical in industrial environments:",[31,375,376,382,388,394],{},[34,377,378,381],{},[37,379,380],{},"Differential Input",": Common mode noise suppression",[34,383,384,387],{},[37,385,386],{},"RC Filtering",": 1kΩ + 100nF at ADC input",[34,389,390,393],{},[37,391,392],{},"Shielded Cable",": Twisted pair, shield grounded",[34,395,396,399],{},[37,397,398],{},"Ferrite Beads",": At power inputs",[10,401,403],{"id":402},"conclusion","Conclusion",[15,405,406],{},"High precision ADC selection and implementation requires careful design and calibration. By applying these principles, industry-standard precision can be achieved.",[408,409],"hr",{},[15,411,412],{},[413,414,415],"em",{},"With over 10 years of experience in precision measurement systems design, Amazeng offers customized solutions for you.",[417,418,419],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":64,"searchDepth":133,"depth":133,"links":421},[422,423,427,431,432,433,437,438,439],{"id":12,"depth":133,"text":13},{"id":20,"depth":133,"text":21,"children":424},[425,426],{"id":25,"depth":139,"text":26},{"id":49,"depth":139,"text":50},{"id":67,"depth":133,"text":68,"children":428},[429,430],{"id":71,"depth":139,"text":72},{"id":84,"depth":139,"text":85},{"id":111,"depth":133,"text":112},{"id":229,"depth":133,"text":230},{"id":242,"depth":133,"text":243,"children":434},[435,436],{"id":246,"depth":139,"text":247},{"id":300,"depth":139,"text":301},{"id":338,"depth":133,"text":339},{"id":369,"depth":133,"text":370},{"id":402,"depth":133,"text":403},"Detailed guide on the use of 24-bit ADC solutions in industrial measurement systems, calibration, and performance optimization.","md",{"date":443,"author":444,"readTime":188,"tags":445},"2024-01-05","Amazeng Technical Team",[446,447,448,449,450],"ADC","Analog","Measurement","Sensors","PCB Design","/en/blog/high-precision-adc-selection",{"title":5,"description":440},"en/blog/high-precision-adc-selection","GhEo_eQz_ml99FiLxl8SZpcHsB0713BiQLv8xiir2oI",1778229659020]