keitanakのアイコン画像
keitanak 2023年05月02日作成 (2023年05月06日更新) © MIT
セットアップや使用方法 セットアップや使用方法 閲覧数 777
keitanak 2023年05月02日作成 (2023年05月06日更新) © MIT セットアップや使用方法 セットアップや使用方法 閲覧数 777

デジタルマルチメータIC(ICL7139)とラズパイPICO Wをつないでみる(実験編2)

設計

前回に引き続き、ICL7139をラズパイWから制御してみます。
こんな感じの構成になります。
ラズパイ側とICL7139側は電源電圧も異なることや、デジタルとアナログを分離する観点からも、絶縁された状態で信号をやり取りするために、リレーとフォトカプラを利用して結合します。
この図には入っていませんが、ラズパイWにはI2C接続のOLED LCD(128x64)とプッシュスイッチも接続しています。

キャプションを入力できます

ソースコード

今回ははやりのPythonを利用して作ってみます。MicroPythonのFWをラズパイWにインストールして、Thonnyで開発です。
こちらの書籍で勉強中です。Arduinoに比較して、敷居が低く簡単に開発ができますね。

from machine import Pin, I2C import sh1106 import time # ICL 7319 mode controll function def setmode(a): if (a == 0): # DC V relyreset.on() time.sleep_ms(100) relyreset.off() photor.off() amper.off() hilo.on() elif (a == 1): # AC V relyreset.on() time.sleep_ms(100) relyreset.off() photor.off() amper.off() hilo.off() elif (a == 2 ): # Ω LO relyset.on() time.sleep_ms(100) relyset.off() photor.off() hilo.off() elif ( a == 3 ): # Ω HI relyset.on() time.sleep_ms(100) relyset.off() photor.off() hilo.on() elif ( a == 4 ): # micro A photor.on() relyreset.on() time.sleep_ms(100) relyreset.off() amper.off() elif ( a == 5 ): # m A photor.on() relyreset.on() time.sleep_ms(100) relyreset.off() amper.on() display.fill(0) display.text(dispstr[mode], 0, 0, 1) display.show() return # Initialize display i2c = machine.SoftI2C(scl=machine.Pin(5), sda=machine.Pin(4), freq=400000) display = sh1106.SH1106_I2C(128, 64, i2c, Pin(16), 0x3c, 180) display.sleep(False) dispstr = ["DC Voltage","AC Voltage","LO Register","HI Register","Micro Ampere","Milli Ampere"] # Initialize ICL7139 control pin # default = DC V pin0=off, pin3=off, pin6=on Relay reset # phtor is used to controll DVM mode to Ampere. You need to reset rely. photor = Pin(0, Pin.OUT) photor.off() # relyset is used to set relay mode = Ω relyset = Pin(1, Pin.OUT) relyset.off() # relyreset is used to reset relay mode = V or A relyreset = Pin(2, Pin.OUT) relyreset.on() time.sleep_ms(100) relyreset.off() # apmer is used to swtich microA/mA off = microA on = mA amper = Pin(3, Pin.OUT) amper.off() # hilo is used to swtich HI-DC/LO-AC off = LO-AC = HI-DC hilo = Pin(6, Pin.OUT) hilo.on() # Initialize Push button pin pushb = Pin(7, Pin.IN,Pin.PULL_UP) # set mode = 0 (DCV) mode = 0 setmode(mode) # Wait push Button and increment mode value while True: if pushb.value() == 0: time.sleep_ms(20) mode +=1 mode = mode % 6 display.fill(0) display.text(str(mode), 0, 0, 1) display.show() setmode(mode) while (pushb.value() == 0): time.sleep_ms(100) continue continue

動作確認

実際にブレッドボード上で組み上げて動作の確認をしました。
プッシュスイッチを押すたびに、モードが切り替わっています。

キャプションを入力できます

キャプションを入力できます

キャプションを入力できます

次回はICL7139の7セグメント出力を読み取って、逆デコードすることで、数値化を行う為の実験をやりたいと思います。

ログインしてコメントを投稿する