MCP3008八路ADC怎么接线?Arduino SPI扩展模拟口避坑

2026-10-18 09:39:40 38阅读

Arduino Uno本身只有A0到A5六个模拟输入口,想同时接好几个模拟传感器往往不够用。MCP3008是一颗很便宜的8通道10位AD转换芯片,走SPI只用四根线就能扩展出8路模拟输入。这篇文章讲接线和几处容易错的地方。

MCP3008芯片16引脚定义图

认识这颗16脚的芯片

MCP3008是16脚DIP封装,8路模拟输入在这边,SPI四根线在另一边。芯片凹口方向或圆点用来确定第1脚。它把模拟电压转成0到1023的10位数字量,输入范围由参考电压VREF决定。

供电常规接法:VDD接3.3V,VREF也接3.3V(它就是比较量程的基准),AGND和DGND都接地。模拟输入通道CH0到CH7分别接各路传感器信号。

SPI四根线要一一对上:CLK接主控的SCK,DOUT接主控的MISO,DIN接主控的MOSI,CS接主控的片选脚(Uno上硬件SPI是13/12/11脚,片选CS可以自己挑一个空闲数字脚)。

MCP3008与主控SPI接线示意图

用库读取,几行出数据

Arduino里可以用Adafruit的MCP3008库或MCP3xxx系列库,封装好了SPI的读写。核心就是初始化时指定片选脚,然后逐个通道read(),就能拿到0到1023的数字量,再按VREF换算成实际电压。

因为走的是共享SPI总线,如果板上还挂了别的不支持SPI的设备,记得保证同一时间只有MCP3008的CS被拉低,才不会互相抢总线。

三个高频坑提前避掉

坑一:SPI引脚没接对。Uno的硬件SPI就是SCK=13、MISO=12、MOSI=11,别接反DOUT和DIN,接反就读出全是乱的。

坑二:模拟输入电压别超过VREF/VDD。超了会读成满值甚至损坏输入端,要确保信号只在这个范围。

坑三:VREF忘了接,或直接接了5V让量程对不上。VREF决定转换满度,务必和你的信号量程匹配。

扩好之后,一口气接七八个光敏、电位器、水流或气体传感器,做多参数监测板会轻松很多。


作者:开源复现员
链接:https://www.aiddithome.com/p/1505eacd132c6f.html
本作版权归作者所有,未经允许请勿转载。若存在违规行为,您可以点击 “举报”。


登录 后发表评论
4条评论
只看不说话
1楼 · 2026-10-18 09:39:41

VREF决定量程,接错就量不准,先确认信号范围再定参考电压

参数党小马
2楼 · 2026-10-18 09:39:41

模拟输入别超VREF,超了读数顶格还可能伤输入端

调参到凌晨
3楼 · 2026-10-18 09:39:41

一次挂8路光敏做监测板真香,多参传感器一下够用了

天快亮了
4楼 · 2026-10-18 09:39:40

SPI四根线要接对,DOUT和DIN接反读出来的全是乱的,别踩