タグ

ブックマーク / www.denshi.club (9)

  • A-Dコンバータ その4 12ビットSPI MCP3208-(1) | Arduinoクックブック

    A-Dコンバータ その4 12ビットSPI MCP3208-(1) SPI AD DA A-Dコンバータ MCP3208 12ビットの分解能をもつMCP3208は、10ビットのMCP3008と同じ16ピンDIPで各機能も同じピン配置です。マスタから送るコマンドのフォーマットも同じですが、読み出すデータ長が異なるので、スケッチはそのままでは流用できません。5Vを基準電圧に使うと、1LSBが 5[V]/2^12=0.00122[V]とアナログ値を細かくディジタルに変換できます。 ●MCP3208のおもなスペック 分解能 12ビット 入力数 シングルエンド;8チャネル、疑似差動;4チャネル 動作電圧 2.7~5.5V サンプリング速度 100ksps クロック 最大2MHz 変換方式 逐次変換SAR(Successive Approximation Register) 動作時の電流 400uA(

    A-Dコンバータ その4 12ビットSPI MCP3208-(1) | Arduinoクックブック
    takuwz
    takuwz 2019/11/29
  • ラズパイでアナログ電圧を扱う (2) MCP3208② | 電子工作の環境向上

    TOPに戻る 電子工作をするMakerたちの生活環境を快適にするために PCの利用方法、周辺機器、ネットワーク、Wi-FiNAS、クラウドの利用 オーディオ、ビジュアル機器、料理のツール、キットの製作などを取り上げます。 ラズパイでアナログ電圧を扱う (2) MCP3208② ●12ビットA-DコンバータMCP3208のおもなスペック こちらから日語のデータシートが読めます。 分解能 12ビット 積分非直線性(INL) ±1LSB 微分非直線性(DNL) ±1LSB 入力数 シングルエンド;8チャネル、疑似差動;4チャネル 動作電圧 2.7~5.5V サンプリング速度 100ksps(Vdd=5V時)、50ksps(Vdd=2.7V時) クロック 最大2MHz(Vdd=5V)、最大1MHz(Vdd=2.7V) 変換方式 逐次変換SAR(Successive Approximation

    ラズパイでアナログ電圧を扱う (2) MCP3208② | 電子工作の環境向上
    takuwz
    takuwz 2019/11/29
    “ CH1=IN、CH0=IN- / CH1=IN+、CH2=IN+ / CH3=IN、CH2=IN- / CH3=IN+、CH4=IN+ / CH5=IN、CH4=IN- / CH5=IN+、CH6=IN+ / CH7=IN、CH6=IN- ”
  • ラズパイでアナログ電圧を扱う (6) MCP3208のプログラム② | 電子工作の環境向上

    TOPに戻る 電子工作をするMakerたちの生活環境を快適にするために PCの利用方法、周辺機器、ネットワーク、Wi-FiNAS、クラウドの利用 オーディオ、ビジュアル機器、料理のツール、キットの製作などを取り上げます。 ラズパイでアナログ電圧を扱う (6) MCP3208のプログラム② spidevライブラリを使った12ビットA-DコンバータMCP3208のプログラムが完成しました。ラズパイ3で動かしています。OSは2019/7/20版のRaspbian Busterです。実際に測定してみます。 電圧発生器は2種類を用意します。シングルエンド入力用にTR6142を、差動入力用には、電池を電源にしたTL431の出力です。電圧の測定はKeitley 2000です。いずれも電源を入れて30分以上経過している状態です。 ●シングルエンド入力 TR6142で「1.0000V」を発生し、Keitl

    ラズパイでアナログ電圧を扱う (6) MCP3208のプログラム② | 電子工作の環境向上
    takuwz
    takuwz 2019/11/29
    “MCP3208”
  • A-Dコンバータ その8 24ビットSPI ADS1220 | Arduinoクックブック

    A-Dコンバータ その8 24ビットSPI ADS1220 Arduino UNO 温度 SPI A-Dコンバータ ADS1220 アナログをディジタルに変換するA-Dコンバータは、ビット数が増えるほど、アナログ値の分解能が上がります。しかし、ノイズや温度変化の影響を受けるために、24ビットのA-Dコンバータを使っても18~21ビット程度の確度のデータしか得られません。IC自体が24ビットのディジタル値を出力するとしても、製品によって異なりますが、20ビットや22ビットまでのデータしか保証されていません。 特に、電子工作ではブレッドボードを利用するので、安定に動作させるための広い面積のグラウンドが用意できないので状況は最悪です。 この問題の多い状況を克服するには、デバイス選びと実装に工夫が必要です。 温度変化に対して安定な基準電圧源を使う アナログ・グラウンドとディジタル・グラウンドを分離

    A-Dコンバータ その8 24ビットSPI ADS1220 | Arduinoクックブック
    takuwz
    takuwz 2019/11/29
    “ADS1220”
  • ~閑話休題 割り算は遅いか | Arduinoクックブック

    ~閑話休題 割り算は遅いか Arduino センサを利用したプログラムでは、データシートに書かれた導出式にしたがって計算式を書いていますが、Arduino UNOは8ビット・マイコンです。Windows 10などでは当たり前にハードの支援が期待できる浮動小数点の演算は、8ビット・マイコンではとても複雑な処理が内部で行われます。処理時間もかかります。 Arduino IDE 1.8.8で実験しています。 ●2^16の計算 16ビットの温度などのデータを読み出した後、そのデータに対して2^16で除算するというケースがあります。Arduinoでは2^16はpow(2,16)です。 void setup() { Serial.begin(9600); float n = pow(2,16); float m = 1/n; Serial.println(n); Serial.println(m,18

    ~閑話休題 割り算は遅いか | Arduinoクックブック
    takuwz
    takuwz 2019/07/22
  • DIPマイコンLPC1114FNでmbed入門 <2>サーボ・テスタの製作 ~その1~ | 電子工作(MAKE)

    ■サーボ・テスタの製作 ~その1~ mbedマイコンLPC1114FN(以後、1114FN)は安価に購入できて、mbedクラウド開発環境を使ってプログラムを開発できるマイコンです。この1114FNを用いて、ラジコン用サーボ・モータの動作チェックや機体に搭載する際のニュートラル出しなどに便利に使えるサーボ・テスタを製作します。 2016年4月にARMはmbed OSをリリースしました。そのため、2015年5月現在、mbedのトップ・ページはmbed OS前提で作られています。連載は、それ以前の開発手法を使っています。入口はこちらです。 https://developer.mbed.org/ ●サーボ・テスタはニュートラル出しに使える ラジコン飛行機やロボットにサーボ・モータを搭載する際には、サーボ・モータを機体などに搭載後にニュートラルを出し、サーボ・モータの回転軸にサーボ・ホーンを取り付

    DIPマイコンLPC1114FNでmbed入門 <2>サーボ・テスタの製作 ~その1~ | 電子工作(MAKE)
    takuwz
    takuwz 2019/04/09
  • マスタリングWireライブラリ その6 温度センサLM75B リピーテッド・スタート・コンディション | Arduinoクックブック

    コンフィギュレーション・レジスタは何も変更しないのですが、0x00を書き込みます。設定していない割り込み発生温度Tos(高)は80℃、割り込み発生温度Thyst(低)は75℃がデフォルト値です。常温では割り込みはかかりません。マイナスは考慮していないスケッチです。 #include <Wire.h> unsigned char LM75B_address = 0x49; //A0=HIGH const unsigned char config_pointer = 0x01 ; const unsigned char Temp_pointer = 0x00 ; void setup() { Wire.begin(); Serial.begin(9600); Serial.println("start "); Wire.beginTransmission(LM75B_address); Wir

    マスタリングWireライブラリ その6 温度センサLM75B リピーテッド・スタート・コンディション | Arduinoクックブック
    takuwz
    takuwz 2019/02/19
    “ほかのデバイスが通信を始められます。そこで、スレーブ・デバイスがACKを返した後、ストップ・コンディションにはせずにスタート・コンディションにします。これをリピート・スタート・コンディションと呼び、
  • 5ドル!ラズパイ・ゼロ(Raspberry pi Zero)でIoT (17) ディジタル温度センサ2 I2C LM75B | 電子工作の環境向上

    ●接続 AQM0802のソケットのピン配置は、I2Cの信号に合わせています。しかし、GPIOに挿すと、LM75Bが接続できません。回路図ではAQM0802をGPIOに挿すように書きましたが、実際は、ラズパイのGPIOにあるI2C信号の3番ピンSDA、5番ピンSCL、1番ピンの3.3V、6番ピンのGNDをブレッドボードに持ってきて配線しました。 (※)I2Cの有効化は、前回の1-Wireの説明を参照ください。1-Wireと同じく、I2CもEnableにチェックを入れています。 i2cdetect -y 1 で配線が正しいかを確認します。3eと49にデバイスが見えているはずです。 ●プログラム LM75BとI2C接続のキャラクタLCD表示器はsmbusライブラリを利用します。変換待ちをするsleep()用にtimeライブラリを使います。 LCDcommand()とwriteLCD()はLCD用

    5ドル!ラズパイ・ゼロ(Raspberry pi Zero)でIoT (17) ディジタル温度センサ2 I2C LM75B | 電子工作の環境向上
    takuwz
    takuwz 2019/02/12
  • Arduino UnoのI/Oポートを高速に駆動する方法 | 電子工作の環境向上

    TOPに戻る 電子工作をするMakerたちの生活環境を快適にするために PCの利用方法、周辺機器、ネットワーク、Wi-FiNAS、クラウドの利用 オーディオ、ビジュアル機器、料理のツール、キットの製作などを取り上げます。 Arduino UnoのI/Oポートを高速に駆動する方法 Arduinoは、初心者が作りやすく開発時間が短くなる言語を用意しています。マイコンは一つの端子に複数の機能を割り当てていて、利用者はマニュアルを読んで何に使うかを初期設定しますが、Arduinoはその時間さえ省略できます。その反面、プログラムの実行速度が遅い場合があります。 たとえば、ディジタル・ポート8番を高速にON/OFFするには次のように記述します。delayMicroseconds()はμs単位で時間を指定できる待ち時間関数です。1~3は指定しても正確でないといわれています。 オシロスコープで観測します

    Arduino UnoのI/Oポートを高速に駆動する方法 | 電子工作の環境向上
    takuwz
    takuwz 2017/09/18
  • 1