Raspberry piにはアナログ入力端子がありません。Microchip Technology 社のSPI接続ADコンバータIC MCP3208を使用してアナログ電圧の入力ができるようにてみました。
回路図 3.3V電源
回路図 5V電源
Raspberry pi本体は3.3Vで動作しているため5V出力のICを直接接続するとよいことはないので、抵抗で電圧を返還しています。
プログラム python
#!/usr/bin/env python3
# MCP3208 ADコンバータ制御プログラム
import spidev
Vref = 3.3 #リファレンス電圧
ch = 0 #変換チャンネル
spi = spidev.SpiDev()
spi.open(0,0) #port 0,cs 0
# 電源電圧が3.3Vのとき最大500kHz
# 電源電圧が5Vのとき最大1MHz
spi.max_speed_hz = 500000
adc = spi.xfer2([0x06|((ch>>2)&0x01),ch<<6,0x00])
data = ((adc[1] & 0x0f) << 8) | adc[2]
print (str(Vref*data/4095) + "V")
spi.close()
|
プログラム javascript
$ npm install pi-spi
コマンドでライブラリをインストールする。
var SPI = require('pi-spi');
var spi = SPI.initialize("/dev/spidev0.0");
spi.clockSpeed(500000);
spi.dataMode();
spi.bitOrder(SPI.order.MSB_FIRST);
channel = 0;
var buf = new Buffer.alloc(3);
buf[0] = 0x06|((channel>>2)&0x01);
buf[1] = channel << 6;
buf[2] = 0x00;
spi.transfer(buf, buf.length,function(e,d) {
if (e) console.error(e);
else {
var val;
val = ((d[1] & 0x0f) << 8) | d[2];
console.log("ad value "+ val)
}
});
spi.close(function(e) {
if (e) console.error(e);
});
|
※コメント投稿者のブログIDはブログ作成者のみに通知されます