Raspberry pi


ATLAS&LGAD用 Raspberry piのリスト

Update:2022/12/09

No type KEK registration name MAC address locationSorted ascending comment
eg Raspberry Pi 4 Model B atlasraspX   Fuji B2 using for CYRIC
1 Raspberry Pi 3 Model B+ kekrasp04 b8:27:eb:c8:fb:19 Fuji B2 i2c communication pin dead
2 Raspberry Pi 3 Model B v1.2 kekrasp07 b8:27:eb:09:00:c2 Fuji B2 Using for ITk pix module TB setup
3 Raspberry Pi 4 Model B kekrasp05 dc:a6:32:90:67:38 Fuji B2 Using for thermometer in bath
4          
5          
6          
7          
8          
9          
10          
11          

Raspberry piのOS インストール

SDカードにRaspbianをインストールする方法

まず、Raspberry piの公式サイト( https://www.raspberrypi.org/downloads/ )からRaspberry pi Imager をダウンロードする。

SDカードをフォーマットします。

SDカードをフォーマットするためにSD Formatter を使います。

SD Formatter を起動し、クイックフォーマットを選択、OKをおしてフォーマットする。

Raspberry pi Imager を開き、一番左はRaspberry pi osを選択、真ん中はSDカードを選択して、書き込む。

Raspberry piを初期設定する

電源、ディスプレイとマウス、キーボードをつなげる。

タイムゾーン、パスワードなどを設定する。

(KEKの場合)macアドレスを中村さんに報告して、KEK登録してもらう。

sshの起動

sudo systemctl enable ssh

SSHでログインして使いたいときは、予め事前にこれをやっておかないとラズパイにログインできなくなるので注意。

IPの設定方法

sudo emacs -nw /etc/dhcpcd.conf

static ip_addressのところを編集

編集が終わったらrebootする。

I2Cの設定

I2C のために/boot/config.txt に

dtparam=i2c_baudrate=100000

を追加。また、設定→Raspberry Piの設定→インターフェースにいって、I2Cが「無効」になっていたら「有効」にする。

Raspberry piの基本的な使い方

電源の入れ方

電源ボタンはありません。

USB-bを繋げば勝手に立ち上がります。

温度計の使い方

基板の構成

ラズベリーパイ+RaspiGeneralAdapter+ThermalUnit+センサーを載せるための基板。(RaspiGeneralAdapterとThermalUnitは回路図がTwikiのITK Pixel Detector Topics -> Drawing repository -> KEK->RaspiAdapter->RaspiGeneralAdapterにあり。(センサー用基板はどこー?))

ラズベリーパイ - RaspiGeneralAdapter 間はフラットケーブル、それ以外はイーサネットケーブルでつなぐ。

大事な注意事項

2021年7月以降、I2C通信をより安定してできるように改良した基板(v2.0)に代わっている。詳細は「Raspi Adapter board and thermal unit ver2」の項目を参照。RaspiGeneralAdapterとThermalUnitは、v1.0同士、もしくはv2.0同士で使用すること!

簡単な温度計の使い方

1.電源を入れssh(userがatlasjじゃなかったらsu atlasj)

2.cd work/CYRIC/

3.sudo i2cget -y 1 0x35 0xDF //ADCにsetupを書き込む

4.sudo python thermo_controllFNAL.py(湿度も測れるversion)

抵抗を載せ替えた場合はntccalc.pyの対応する抵抗を変えてください。

5.(別のterminalで)cd work/CYRIC/TempMon

6.source /usr/local/ROOT/v5.34.38/bin/thisroot.sh

7. ./mkplot.sh -l 3 -H 1

-H ○で○時間分グラフに表示。

-Mで分にもできる。

thermo_controll*.pyの中身の変数

settemp : 一定にしたい温度

twidth : 温度のマージン

SW1 or SW2:ON,OFF適時入れ替えて

故障かなと思ったら

温度が測れない(-45度とか明らかに低すぎる温度)

cd ~/work/dharada/test

sudo python I2Ctest.py

でtestの値が2500付近になっていたらadcは生きています。

配線まわり(断線、温度計upとdownが逆じゃないか)

もし0だったらadcが死んでいる可能性があります。サブボードとraspberry piの接続などを確認する必要があります。

sudo i2cdetect -y -r 1 0x1c 0x35 //I2Cで接続されている機器を探す

35が表示されない場合は接続が悪い気がします。つなぎ直したり電源まわりを見てください。ピンで電源供給を内部か外部か切り替えてます。そこがおかしいのかな?

35が表示されている場合。死亡の可能性が高まってます。解決方法は今のところ無いです。載せ替えるくらいしか。

温度がおかしい(若干低い)

sudo i2cget -y 0x35 0xDF

をためしてください

cd ~/work/dharada

sudo python I2Ctest.py

でtestが2500付近なら問題ないです。

温度が上がりつづけるor下がりつづける

設定温度(settemp)が正しいことを確認してください。

SW1とSW2が正しいか、4と15が使われているか確認してください。

上がりつづける場合、冷却材(ドライアイス、液体窒素)がなくなりかけている場合があります。補充してください。

温度測定が遅いor止まった

温度がsettemp付近の時

settemp±twidthの時測定結果が表示されないバグがあります(表示がされないだけで測定は続いています)。この範囲を出たらまた表示が始まります。

誰か直して見てくださいifの条件が原因です。

その他の場合

raspberry piが重くなってる可能性があります使ってないものは閉じてください。

thermo_controllを一度止めて再会すると直る場合もあります。

温度のグラフが表示されない

Xを飛ばしてください。

困ったら筑波大 原田まで

ADCの入力チャンネルとアドレスの対応

sudo i2cget -y 1 0x35 0xDF で何やってるか。

  • 0x35 = 0b0110101でアドレスを指定(マニュアルのp. 1: Ordering Informationを参照)。
  • 0xDF = 0b11011111がsetupの設定内容で、ここでは特にBIT 6で内部refference, BIT 3で外部clockを選択している(マニュアルのTable 1, 6を参照)。
MAX1238EEE マニュアル:

https://www.mouser.jp/Datasheets/_/?Keyword=MAX1238EEE&FS=True&utm_source=eciaauthorized&utm_medium=aggregator&utm_campaign=viewall&utm_term=MAX1238EEE

入力チャンネルの指定方法などは以下の表を参照。

i2c.read_i2c_block_data(arg1, arg2, arg3)

  • arg1: slave address (MAX1238EEE を使う限り常に0x35)
  • arg2: 011XXXX1のXXXXでチャンネルを指定(他のビットの意味はマニュアルのTable 2を参照)。
  • arg3: 読み出しバイト数(通常は0x02 = 2バイトにしている)

Input AINX Channel (bin) arg2
VNTC1 AIN0 0x01100001 0x61
oNTC1p AIN1 0x01100011 0x63
oNTC1n AIN2 0x01100101 0x65
VNTC2 AIN3 0x01100111 0x67
oNTC2p AIN4 0x01101001 0x69
oNTC2n AIN5 0x01101011 0x6B
HIHOUT1 AIN6 0x01101101 0x6D
HIHOUT2 AIN7 0x01101111 0x6F
VREF AIN11 0x01110111 0x77

!スペックシートなど

Adapter cards for Raspberry pi 3 model B+

First version of Adapter board for CYRIC & MPPC DAC config

2018-11-13.png

-- Atlasj Silicon - 2018-10-13

Raspi Adapter board and thermal unit ver2

Cernbox( RaspiGeneralAdapter - Files - CERNBox: the CERN Cloud Storage)の中にある

ラズパイアダプターボード(RaspiGeneralAdapter.pdf)

サーマルユニット(ThermalUnit.pdf)

(改良版)

改良点

・I2Cの信号線をGNDで挟む(長いケーブルでI2Cを送るときにサーマルユニットを感知できない問題に対する対応策)

・電源周りのノイズ対策にデカップリングキャパシタ―を追加

・ThermalUnit上にあるAmpからADCまでの間のバイパスコンデンサーの値を10nF→20uFに変更

-- Tatsuki Ueda - 2021-06-23

kekrasp04 【LGADグループが使ってる温湿度計(2021年6月23日時点)】

NTCの種類 Semitec 103KT1608T-1P [ smtcs00111_1-2281866.pdf (mouser.jp)]

参考値

R25:10kΩ

B value:3435K±1% (25℃~85℃)

備忘録(Log)

温度管理プログラム

kekrasp04→変更済み

kekrasp02→変更済み

サイリックのカチカチのためのif文で、coolingとwarmingが切り替わるようになってたところがもともと目的の温度になっていた時に対応できなくなってたため、そこを改良した

ntcのユニットのうち、Ttop(ntc1)とTbottom(ntc2)の値が違う場合

※ntcはその時の抵抗値を計算式を用いて温度に変換しているので、

実際の基板上に載っているntcの抵抗値をテスターで測定してみて一致している場合はおそらくプログラムや基板上の問題

(基板上だとほかの抵抗などの影響も多少あるので過信しすぎない方が良いかも、あくまでここでは相対的に差があるかどうかくらいのチェックで)

1.まずテストしてI2C周りが正しく動いているかを確認する(sudo python I2Ctest.pyなど/詳細はこのtwikiページの上の方を参照)

テスト値が2500であればntc側の問題だと思う

2.温度測定環境が同じかを確認

実際に温度の違うものを測ってしまっている可能性

一方は冷えたものに直接触れているが、片方は直接触れておらず、測定対象の周りの気温を測っている場合などは表示温度に差ができてしまう

例)測定対象にNTCをテープで押し当てて測定しているが、片方のテープが外れてしまってntcが離れている

3.基板に載っているntcの種類が違う

例)変化量や計算式などは合っているはずなのに、1度ずつ程度低く表示される場合

ntc の種類が違うと初期値が違うので数度ずつずれることになる

どちらも同じ種類のntcを付けると一致する

ディスプレイ

ssh で入る以外に直接HDMIにディスプレイを取り付けて操作することがある(特にCYRICやテストビームの時にアドレスの設定をするとき)

途中からディスプレイを取り付けても信号が入力されない(映らない)

→ラズパイ起動前に先につけておく(すでに動いているなら一度電源を抜き、もう一度入れ直す)と映るようになる

-- Tatsuki Ueda - 2021-07-01

Comments


Topic attachments
I Attachment History Action Size Date Who Comment
PNGpng 2018-11-13.png r1 manage 253.2 K 2018-11-13 - 14:44 KojiNakamura  
PDFpdf RaspiCYRICcontrol.pdf r1 manage 6288.3 K 2019-06-06 - 07:01 AtlasjSilicon  
Edit | Attach | Watch | Print version | History: r34 < r33 < r32 < r31 < r30 | Backlinks | Raw View | Raw edit | More topic actions
Topic revision: r34 - 2022-12-09 - AtlasjSilicon
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback