9章: Arduino(アルドゥイーノ) unoアナログ出力の検討

    作成2017.05.26

  1. Arduino(アルドゥイーノ) uno の詳細
     Arduino(アルドゥイーノ) unoの詳細は
    Arduino(アルドゥイーノ) unoを参照願います。


  2. アナログ出力のスケッチ(プログラム)
    //analogWrite
    int led = 9;           // the PWM pin the LED is attached to
    int brightness;    // how bright the LED is
    String inputString = "";         // a string to hold incoming data
    boolean stringComplete = false;  // whether the string is complete
    
    void setup() 
    {
      pinMode(led, OUTPUT);
      Serial.begin(9600);
      inputString.reserve(100);
    }
    
    void loop() 
    {
      //analogWrite(led, brightness);
      if (stringComplete) 
      {
        brightness =inputString.toInt() ;
        analogWrite(led, brightness);
        Serial.print(inputString);
        inputString = "";
        stringComplete = false;
        delay(100);
      }
      
    }
    
    void serialEvent() 
    {
      while (Serial.available()) 
      {
        char inChar = (char)Serial.read();
        inputString += inChar;
        if (inChar == '\n')
        {
          stringComplete = true;
        }
      }
    }
    

     Arduinoスケッチ_テキストファイルは以下から参照できます。
    Arduinoスケッチ_テキストファイルにいく


  3. アナログ出力発生方法
    (1) Arduino(アルドゥイーノ) uno をパソコンに接続します。
    (2)ショートカット「Arduino」をダブルクリックします。
    (3)アナログ出力のスケッチをペーストします。
    (4)「マイコンボードに書き込む」ボタンを押します。
    (5)メニューの「ツール」_「シリアルモニタ」を選択します。
    (6)CRおよびLFを選択します。
    (7)9600bpsを選択します。
    (8)送信欄に0〜255の値を設定して「送信」ボタンを押します。
    (9)送信欄に64を設定して「送信」ボタンを押した場合は、brightness=64で9番ピンからanalogWriteが実行されます。
    (10)複数行のテキストボックスには64が表示されます。





  4. 矩形信号波形データの保存
     矩形信号波形データの保存は、Hantek 6022BE PC USB 2CH デジタルオシロスコープを使用します。
    詳細は Hantek 6022BEデジタルオシロスコープとAMラジオを参照願います。
    補足説明
    (1)Windows7からWindows10にアップグレード後正常動作しなくなりました。
    (2)Hantek 6022BEデジタルオシロスコープを接続後、「システム」_「デバイスマネージャー」_「Hantek622BE DRIVER 2」 を更新する必要がありました。
    (3)Hantek 6022BE PC USB 2CH デジタルオシロスコープの時間設定と時間間隔Δtとデータ数の関係を以下に示します。

    NoTime/divΔtデータ数
    110ms1us523264
    25ms1us523264
    32ms1us130048
    41ms1us130048
    5500us1us130048
    6200us1us130048
    7100us1us130048
    850us1us130048
    920us0.25us130048
    1010us0.125us130048
    115us0.0625us130048
    122us0.02us1016
    131us0.01us1016

    上記の表から、Time/div時間設定5us以上でデータ数が約13万以上となり EXCELの 表計算機能が使いにくくなることがわかります。


  5. 積分回路
     図9-2に積分回路を示します。



     図9-2において、入力電圧はArduino(アルドゥイーノ) unoを使用し、アナログ出力のスケッチ(プログラム)を使用します。
     PWM(矩形)信号波形データはHantek 6022BE PC USB 2CH デジタルオシロスコープを使用して保存したデータを使用します。
     さらに、ファイルのサイズダウンプログラムでデータサイズを1/100にします。
    ファイルのサイズダウンプログラムの詳細は
    10章:ファイルのサイズダウンプログラムを参照願います。
     このデータを「V0=f(t)」とします。
     コンデンサーに蓄積される電荷Q(単位クーロン)は電流をi(単位A)とすると

    抵抗とコンデンサの電圧の和は、入力電圧に等しくなります。すなわち

    出力電圧V1は

    電荷Qの初期値をゼロとするならば、 (9-2)式から電流iが求まります。
    電流iが決定されれば、 (9-1)式から電荷Qの計算ができます。
    電流iが決定されれば、 (9-3)式から出力電圧V1が計算できます。
    これらの計算はEXCELの表計算で実行できます。


  6. 9-1.xls( Arduino(アルドゥイーノ) unoアナログ出力の計算)のダウンロード
      9-1.xls( Arduino(アルドゥイーノ) unoアナログ出力の計算)は以下からダウンロードできます。
    9-1.xls( Arduino(アルドゥイーノ) unoアナログ出力の計算)をダウンロードする。
     9-1.xlsはOpenOffice 4.1.3でも問題無く動作しました。


  7. brightness =64積分回路の計算結果と実測値の比較グラフ
     計算結果と実測値の比較グラフを以下に示します。
    brightness =64
    周波数=約500Hz
    時間間隔Δt=100μs
    抵抗R=330Ω
    コンデンサ容量C=220μF





  8. brightness =128積分回路の計算結果と実測値の比較グラフ
     計算結果と実測値の比較グラフを以下に示します。
    brightness =128
    周波数=約500Hz
    時間間隔Δt=100μs
    抵抗R=330Ω
    コンデンサ容量C=220μF





  9. brightness =192積分回路の計算結果と実測値の比較グラフ
     計算結果と実測値の比較グラフを以下に示します。
    brightness =192
    周波数=約500Hz
    時間間隔Δt=100μs
    抵抗R=330Ω
    コンデンサ容量C=220μF





  10. Arduino(アルドゥイーノ) unoアナログ出力の検討まとめ
    (1) Arduino(アルドゥイーノ) unoアナログ出力は約500HzのPWM( pulse width modulation)信号です。
    (2)これに積分回路を追加すると、アナログ電圧に変換できます。
    (3)積分回路の出力電圧波形の検討で、計算値と実測値がほぼ一致することが確認できました。
    (2)計算はマクロを使用しないため扱いが容易です。





トップページに戻る。