忍者ブログ
[10]  [11]  [12]  [13]  [14]  [15]  [16]  [17]  [18]  [19]  [20
×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

raspberypi3 b+でmcp3208のSPIが使えない
mcp3208からSPIでLM35の温度を取り出すコード

raspberyPi3 Bで作成したSPIDEVでLM35から電圧(温度)
を取り出している(ソースA)

同じソースをraspberypi3 b+で実行しようとすると
mcp3208の12ビットモードでSPIが使えない現象が発生
raspberyPi3 Bでは0が帰ってくる

gpiozeroを使うとデータが帰ってくる(ソースB)

ls -la /dev/spidev*でライブラリを見ると
0.0と0.1が存在している

ネットをググって見ると結構混乱しておりOSがハードの
差を吸収していない様子

Raspvian 9.4 stretch 2018/08/19現在

(ソースA)
import spidev
import time
import sys
spi= spidev.SpiDev()
spi.open(0,0)
def  adc_read12(ch):
    r = spi.xfer2([4|2|(ch >> 2), (ch & 3) << 6,0])
    v=((r[1] & 0xF) << 8 ) + r[2]
    return v
def conv_volts(data,places):
    volts = (data *3.3)/float(4096)
    volts=round(volts,places)
    return volts
def conv_temp(volts,places):
    temp =  volts * 100 
    temp  =round(temp,places)
    return temp
while True:
    try:
        d=adc_read12(0)
        #print("adc  : {:8} ".format(d))
        v=conv_volts(d,4)
        #print("volts: {:8.2f}".format(v))
        t=conv_temp(v,4)
        print("temp : {:8.2f}".format(t))
        print("------------------------")
        time.sleep(1)
    except KeyboardInterrupt:
        break
spi.close()  

(ソースB)
from gpiozero import MCP3208
import time
Vref = 3.30
def conv_temp(volts,places):
    temp =  volts * 100 
    temp  =round(temp,places)
    return temp
 
while True:
    try:
        pot = MCP3208(channel=0)
        v=pot.value * Vref
        #print(str(pot.value * Vref) + "V")
        t=conv_temp(v,4)
        print("temp : {:8.2f}".format(t))
        time.sleep(1)
    except KeyboardInterrupt:
        break

解決方法

A案:SPI.openのあとにmax_speed_hzを記述する
 spi.open(0,0)
 spi.max_speed_hz =5000 #5khz
追記:
 データシートを見ると
 5Vで2Mhz
 2.7vで1Mhzなので

 spi.max_speed_hz =1000000 #1MHZ

 でテストするとこれでも動作OK 試しに2Mhzにすると電圧が低下した
 状態になる

 多チャンネルを使うときはレートを落とす必要があるので
 spi.max_speed_hz =200000 #200KHZあたりが適当かもしれな

 ちなみにRaspberrypi3Bは1.2GHZ 3B+は1.4GHzだがバスクロックも
 アップしたのだろうか?


B案:gpiozeroを使って書き換える
 from gpiozero import MCP3208

 pot = MCP3208(channel=0)
   v=pot.value * Vref
 
 

拍手

PR
SQLserverでデータベースのコピーができない

・expressでは出来ないバージョンがある

・必要なサービスは
 SQLserverIntegrationサービス
 SQLserverエージェント

・マネジメントスタジオで
 コピーしたいデータベースを右クリック>>タスク>>データベースのコピー

・コピーを開始するとエージェント開始でエラーになる

・原因
 マネジメントスタジオの権限ではエージェントを起動できない

・対応
 SQLserverのConfigrationManager(構成マネージャ)
 SQLserverエージェントを右クリック
 ログオンで規定値の状態なら、○このアカウントを変える
 参照を押してアドミニ権限ユーザを登録


拍手

・TEAC Hi-Res Editor

マイク一体型レコーダーでハイレゾ録音をしているが、録音を回しぱなしに
しているので、編集が必要である

TEAC Hi-Res Editorは無償で公開されているが、範囲を指定して
ハイレゾで出力可能でありトラックのカットには最適である

・オプションでいいので、編集機能強化版があればいいのだが、、

拍手

・WindowsUpdate後に音楽編集や画像編集ソフトが全滅の確立が高い

・通常は再インストールやインストールCDでなんとかなるが、今回はCubaseをはじめ
音楽ソフト系が全滅

・ソフトによっては共通しているのはUR22(USBDAC)なので、ヤマハのサイトを見ると
2018/6月でドライバーが上がっている。

・ドライバーをダウンロードしてインストールすると全音楽関連が復活、、、

・MSさんセキュリティ以外の無駄なバージョンアップは頼むからWindowsUpdate
で対応しないでください。

・つい最近もVPNで特定のPCだけ起動しても接続できす。VPNを再インストール
すると何事もなかったように正常動作した。


拍手

・24ビットサンプリング98で生録をした、いざCubaseで音源読み込みをすると
音が変、、、

・プロジェクト>>プロジェクト設定で
 24ビット、サンプリング98に変更する

・次にファイル>>読み込み>>オーディオファイルで
 □プロジェクトにコピーにチェックを入れて読み込み

拍手

カレンダー
03 2025/04 05
S M T W T F S
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
フリーエリア
最新CM
[03/10 DORA]
最新TB
プロフィール
HN:
dorabu
性別:
非公開
バーコード
ブログ内検索
P R
Copyright © ドラブーのアンドロイドとIoTなブログ All rights reserved. / Template by 四季. / Material by てんせん.

忍者ブログ [PR]