忘備録-備忘録

技術的な備忘録

Raspberry pi でアナログ入力

2019-11-19 21:06:53 | raspberry ...

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(bufbuf.length,function(e,d) {
        if (econsole.error(e);
    else {
        var val;
        val = ((d[1] & 0x0f) << 8) | d[2];
        console.log("ad value "val)
    }
});

spi.close(function(e) {
    if (econsole.error(e);
});



最新の画像もっと見る

コメントを投稿