Vol.762 1.Feb.2019

ACアダプター用電圧・電流モニタ 高機能な8ビットPIC(1)〜PIC16F1ファミリー〜 ラズベリーパイ(26)〜各種設定のTips〜

A ACアダプター用電圧・電流モニタ

by fjk

ACアダプターに接続した機器の使用時のDC電流を知りたいことがある。そこで、無線パーツで電圧・電流同時表示LEDデジタルパネルメーター(DE-2645-02、DC100V/10A、\1,000程度)、ケース、ミニジャック端子などを購入し、ACアダプター用DC電圧・電流計を作成した。
 DE-2645-02の動作電源はDC4.5〜24Vで、5〜12VのACアダプターを対象とするので、電池を使わず、アダプターの出力をそのまま動作電源にすることにした。  カー用品の電流測定には、車用プラグに合わせるため、市販の後席用延長ケーブルを切断し、切断したケーブルそれぞれにDCミニジャックを取付けた。
揃えたパーツ 電圧・電流計の内部 車用製品の電圧・電流測定例


P 高機能な8ビットPIC(1) 〜PIC16F1ファミリー〜

by fjk

PICは8〜32ビットマイクロMCU(Micro Controller)で、ユーザーの要求機能が増すにつれ8ビットMCUの需要が少なくなると予想されていましたが、大幅に機能が強化された「エンハンストミッドレンジ」と呼ばれる8ビットファミリー(PIC16F1ファミリー)の登場により、逆にその需要が増えているようです。PICの開発言語としては主にC言語が使われます。
 PIIC16F1ファミリーには「コアインデペンデントペリフェラル」(CIP)と呼ばれる数多くの周辺モジュールがコアとは別に独立して実装され、これらはプログラム制御無しで動作させることが出来、動作速度の向上、省電力化とプログラム負荷を大幅に減らしてくれます。
 しかし、CIPは種類が多く、さらに複雑な設定が必要なものもあり、使い切ることが難しいと思われていましたが、MCC(MPLAB Code Configurator)というプラグインが開発され、GUIで簡単な設定を行うだけで必要なプログラムコードを自動生成してくれます。
 PIC16F1ファミリーの使用例は、書籍やネット上で既に多くの例が紹介されており、PIC+ラズベリーパイとして、久しぶりにPICマイコンを使ってみたいので、PIC開発環境の構築も含め、復習を兼ねてPICを使ってみる。PICへの書込とデバッグには手持ちのPICkit3を用いた。
 また、「C言語によるPICプログラム大全」(技術評論社)を参考にさせて戴いた。

Microchip社のソフトの入手にはここへアクセスし、Designページ、 さらに Developlment Tools/Software Tools for PIC MCU and dsPIC DScs で

1.MPLABX IDE
・入手・・・・  MPLABX IDE−>下のDownloadタブ
・インストール
ダウンロードしたMPLABX-v5.10-windows-installer.exeを実行
−>続けてCコンパイラをインストール
2.MPLAB XC8コンパイラ
・入手・・・・ MPLABXCCompilers−>下のDownloadタブ
・インストール
  downloadしたxc8-v2.05-full-install-windows-installer.exeを実行
・MPLABXの起動
  @MPLAB X IDEアイコンをクリック
   ANew/projectをクリック
  Bプロジェクトの種類の選択(StanderdProject)
  Cデバイスの選択(PIC16F18313など)
  Dプログラミングツールの選択(Pickit3)
  Eコンパイラの選択(XC8)
  Fプロジェクト名とフォルダーの指定
  −>これで新規のプロジェクトが作製される
3.MCC(MPLAB Code Configurator)
・インストール(X-IDEからpluginとして)
  @X-IDEを起動(プロジェクトが既にあること)
  Atools/pluginsを開きAvailablePluginタブをクリック
  BMCCをチェックしinstallをクリック
  −>再起動後toolbarにMCCアイコンが追加される。
・MCCの起動
  @MCCアイコンをクリックするとMCC画面となる
  A条件を設定後Generateボタンを押すとソースファイルの雛形ができる
MPLAB X IDE入手画面 MPLAB X XC8入手画面 MPLAB X IDE起動画面
4.テストプログラム(PIC16F18313を使用)
@動作クロックを設定
  Oscillator Select = HFINTOSC
  HF InternalClock = 4MHz
  Clock Dvider = 4 (SystemClockは1MHzとなる)
  Low-voltage Programing Enableのチェックを外す
Aデジタル入出力ピンの設定(今回ADCは未使用)
  画面下部のPackageでA4をoutput、A5をinputに
  ProjectresouresのPinModuleをクリック
  RA4のAnalog(output)のチェックを外す
Bソースコードを作成
  ProjectResourcesのGenarateボタンをクリック
  −>以下のファイルが作成される
  mainc  ・・・・・・・・・・・メイン関数
   adc.c、adc.h ・・・・・・・・・AD変換
   device_config.h、device_config/h・・デバイス設定
   mcc.c、mcc.h ・・・・・・・・・初期化関数
   pin_manager.c、pin_manager.h ・・ピン設定
   Makefile ・・・・・・・・・・コンパイル用
   MyConfig.mc3 ・・・・・・・・MCC条件設定
C自動的に作成された関数を用いてコーディング
  (利用できる関数はpin_manager.hを参照)
   main.cにプログラムを記述
      void main(void)                    
      {
          SYSTEM_Initialize();
          while (1)
          {
             if(PSW_A5_PORT == HIGH){
                 LED_A4_Toggle();
             }else{}
                 LED_A4_SetHigh();
             }
             __delay_ms(500);
          }
      }          // 1秒点滅、ボタンを押すと常点灯
    
Dコンパイル
   金槌アイコンをクリックし、コンパイルを実行。
   ・"BuildSuccessfull"が出ればコンパイル成功。
Eデバッグ・シミュレーション
   実機に書き込む前にシミュレートできる
   ・File/ProjectPropertiesでSimulatorを選びApply
   ・CategoriesでSimulatorを選ぶ
   ・OscillatorOptionsで動作周波数をセット
   ・Windows/Simulator/Analyzerをクリック
   ・Buffer = 10000(max、1MHzで10msまで)
   ・EditPinで見たいピンを選択(IOPin画面に反映)
   ・[stimulus]AsynchronousでANA5を追加し、Applyボタンをクリック
   ・[stimulus]Pin/RegistarActionsでTime=0、ANA5=1にセット
    (一度実行後IOPin画面でPA5ピンを1(high)にセットでもOK)
   ・DebugMainProjectをクリック(自動的に実行)
   ・Pauseを押すと、LogicAnalyze画面に波形が表示される
    (Bufferが小さいのでdelayを5msでテスト)
F実験回路とPICへの書込
   ・書込ツールの指定(=pickit3)
   ・電源の供給(powerで5Vを選択し、OK)
   ・書込の実行(書込アイコンをクリック)
   ・"VeryfyComplete"と出れば書込成功
   ・書込成功後はプログラムが実行されている

MCCでconfig設定 実験回路図 pin_manager.hの例
windowsの設定 シミュレート中 ブレッドボードでテスト
主なPIC16F1ファミリーMCU


R ラズベリーパイ(26) 〜各種設定のTips〜

by fjk

@ 画面解像度の変更
/boot/config.txt ファイルを以下の様に変更。後−>ラズパイを再起動
24 # uncomment if hdmi display is not detected and composite is being output
25 hdmi_force_hotplug=1 # 外部モニタ接続が無い場合に対応 26 27 # uncomment to force a specific HDMI mode (this will force VGA) 28 hdmi_group=2 29 hdmi_mode=28 # 1280 x 800, 60Hz # hdmi_mode=16 # 1024 x 768, 60Hz # hdmi_mode=23 # 1280 x 768, 60Hz # hdmi_mode=82 # 1920 x 1080, 60Hz
A IPアドレスの固定
/etc/dhcpcd.conf の最後に以下を追加。後−>sudo ifdown eth0 −>sudo ifup eth0
interface eth0           		# 無線LANの場合はinterface wlan0
static ip_address=192.168.1.99/24  	# 設定したいIPアドレス
static routers=192.168.1.1		# ゲートウェィのアドレス
static domain_name_servers=192.168.1.1	# DNSサーバーのアドレス
※ 以前は/etc/network/interfacesで設定していたが、2015-05-05以降のラズパイは/etc/dhcpcd.confで指定。


ACアダプター用電圧・電流モニタ 高機能な8ビットPIC(1)〜PIC16F1ファミリー〜 ラズベリーパイ(26)〜各種設定のTips〜