Arduino与Proteus仿真实例-MCP3208模数转换驱动仿真
MCP3208模数转换驱动仿真
1、MCP3208介绍
MCP3208 12 位模数转换器 (ADC) 在小型封装中结合了高性能和低功耗,非常适合嵌入式控制应用。 MCP3208 采用逐次逼近寄存器 (SAR) 架构和行业标准 SPI™ 串行接口,允许将 12 位 ADC 功能添加到任何 PICmicro® 微控制器。 MCP3208 具有 100k 采样/秒、8 个输入通道、低功耗(典型待机为 5nA,最大活动电流为 400 µA),并采用 16 引脚 PDIP 和 SOIC 封装。 MCP3208 的应用包括数据采集、仪器仪表和测量、多通道数据记录器、工业 PC、电机控制、机器人、工业自动化、智能传感器、便携式仪器仪表和家用医疗器械。
MCP3208有如下特性:
- 12 位分辨率
- 八个单端输入
- SPI接口
- ±1 LSB DNL
- ±1 LSB INL
- 100 ksps 样品
- -40 至 +85°C 温度范围
- AEC-Q100 3 级

MCP3028的引脚功能如下:

2、仿真电路原理图

3、仿真代码实现
本次实例使用到如下开源库:
演示代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| /\*\* \* Basic ADC reading example. \* - connects to ADC \* - reads value from channel \* - converts value to analog voltage \*/
#include <SPI.h> #include <Mcp320x.h>
#define SPI\_CS SS // SPI slave select #define ADC\_VREF 5000 // 5V Vref #define ADC\_CLK 1600000 // SPI clock 1.6MHz
MCP3208 adc(ADC_VREF, SPI_CS);
void setup() {
// configure PIN mode pinMode(SPI_CS, OUTPUT);
// set initial PIN state digitalWrite(SPI_CS, HIGH);
// initialize serial Serial.begin(9600);
// initialize SPI interface for MCP3208 SPISettings settings(ADC_CLK, MSBFIRST, SPI_MODE0); SPI.begin(); SPI.beginTransaction(settings); }
void loop() {
uint32\_t t1; uint32\_t t2;
// start sampling Serial.println("Reading...");
t1 = micros(); uint16\_t raw = adc.read(MCP3208::Channel::SINGLE_0); t2 = micros();
// get analog value uint16\_t val = adc.toAnalog(raw);
// readed value Serial.print("value: "); Serial.print(raw); Serial.print(" ("); Serial.print(val); Serial.println(" mV)");
// sampling time Serial.print("Sampling time: "); Serial.print(static_cast<double>(t2 - t1) / 1000, 4); Serial.println("ms");
delay(500); }
|
4、仿真结果

文章来源: https://iotsmart.blog.csdn.net/article/details/121678961
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!