<< もどる 

C言語でラジコングライダー機の発見ブザーを作る

 コンピュータのプログラムを作成するには、LOGO言語以外にもコンピュータ言語があります。
C言語は、小さなコンピュータでも利用されている言語です。
 ラジコングライダーを飛ばしていると、草むらに着陸してしまったとき見つけるのが大変になることがあります。
そこで、ラジコングライダーにブザーをのせて、送信機のスイッチを大きく動かすと、ブザーを鳴るようにして、見つけやすくします。
ラジコングライダーにのせている 受信機に PICとよばれる100円程度で買える小さなコンピュータをつなぎます。
PICは、受信機から信号を受取り、信号が変化したらブザーを鳴らすプログラムをC言語でプログラミングします。



1.プログラミングの準備 (費用:5000円程度)
PICを使うために必要な物でを調べました。
パソコン パソコンの画面でC言語(またはアセンブラ)を使ってプログラミングします。 PICkit3、MPLABが使えるパソコンはWindows,LINUX,MACなどがある。
  PICkit3    USBでパソコンとつなぎ、PICにプログラムを書き込む装置です。
5000円程度ですが、機能が公開されているために同じ機能でもっと安価なものも売られています。
  書き込みアダプター   ソケットにPICをさして、PICにPICkit3からプログラムを書き込めるようにします。
200円程度で作ります。
 
  MPLAB X IDE  PICkit3へ作ったプログラムを送るソフトで、ネットからダウンロードします。 無料です。2020年は X IDE になっている。
  MPLAB XCコンパイラ  MPLAB X IDEをインストールするときに同時にインストールされるPIC専用のC言語です。MPLAB X IDEを起動して利用します。 無料です。いろいろな種類のCコンパイラーがある。Cコンパイラによって命令語の使い方が異なります。
プログラミングソフトをセットアップする
  MPLAB X IDE のインストール



※MPLAB X IDEからXCコンパイラが起動できるようになります。
https://www.microchip.com/mplab/mplab-x-ideを開きMPLAB X IDEをダウンロードしてインストールする。

  ↓

  ↓

  ↓

※MAC、Linux用もある。
      
  MPLAB XCコンパイラのインストール



※PIC専用のC言語です。PICの設定をする記述ができます。
https://www.microchip.com/mplab/mplab-x-ideを開きMPLAB Cをダウンロードしてインストールする。

  ↓

  ↓

  ↓


インストールの途中でMPLABと統合をする。



ライセンスを選ばなければ、無料版になる。
無料版は、最適化が行われない。


2.PICの使い方を考える
PICには、いろいろな種類があります。いったいどれを使ったら良いのかを考えます。
1つの信号をもらい、1つの信号を出してブザーを鳴らすだけなのでピンの数が8本で十分です。PIC12F683 を使えば良いでしょう。
PICの電源は、受信機からもらいます。受信機は、6Vの電圧を使っているので、5.5V以下に下げてPICに使います。
受信機からは、デジタル信号が出ます。送信機を操作すると、このデジタル信号が変化するので、PICでデジタル信号の変化を調べて、ブザーを鳴らせばよいでしょう。PICから出力される電流は小さいので、ブザーを鳴るには、トランジスタを使います。
 (1)今回使うのは PIC12F683 でいいかな? 
(2)PIC12F683のデータシートを調べる    詳しくはデータシートを調べる
最大20MHzのクロックで動作し、AD変換内蔵で内部発振による動作が可能
内部発振は、ソフトウエアにて変更可能最大8MH
スリープモードをサポート
動作電源電圧 2.0-5.5V
A/D変換 10ビット分解能
PWMサポート
プログラムメモリー 2048ワード
SRAM揮発性メモリー 128バイト
EEPROM不揮発性メモリー 256バイト
<絶対最大定格>
 ・動作温度  -40℃~125℃
 ・保存温度  -65℃~150℃
 ・電源電圧  -0.3V~6.5V
 ・入力電圧  -0.3V~電源電圧+0.3V
 ・出力電流  最大25mA
VDDは、電源+、VSSは、電源-

GP0~GP2,GP4~GP5は入出力として使用でき
各ピンは最大25mAの電流が流せる。

GP3は入力専用で出力には使用できない。
Vss 電源(0V) 
Vdd 電源(+5V) 
GP5/T1CKI/OSC1/CLKIN 出力用に設定 

GP0~GP2,GP4~GP5は入出力として使用でき、各ピンは最大25mAの電流が流せる。
GP3は入力専用で出力には使用できない。

GP4/AN3/^T1G/OSC2/CLKOUT 入力用に設定 
GP3/MCLR/Vpp PICkit3に接続
GP2/AN2/T0CKI/INT/COUT/CCP1 空き
GP1/AN1/CIN-/Vref/ICSPCLK PICkit3に接続 
GP0/AN0/CIN+/ICSPDAT/ULPWU PICkit3に接続 

(3)PICの使い方を決める 
PICは、ピンの使い方をプログラムで選択できます。
GP4ピンで受信機からの信号を受け取り、GP5ピンからブザーへの信号を送ることにして、
これらは、プログラムのコンフィグレーションで記述します。
→どこのピンを使うかをプログラムのレジスタ設定で行う。


3.プログラムの手順を考える
受信機から、デジタル信号が出ます。
デジタル信号は、20msec程度の周期で、送信機のレバーがニュートラルのときの1.52msecを中心に1~2msec程度に変化します。
そこで、送信機のレバーを下げたときと、上げたときにブザーが鳴るようにしたいと思います。
  


 
 
 <手順>
 1 タイマー0を使って、0.01msecごとに受信機からのGP4を調べ、信号がONになっている回数を調べる。
 2 信号が162回以上ONだったら、GP5をONにする。 
 3 信号が142回以上ONだったら、GP5をOFFにする。
信号が142回より短かったら、GP5をONにする。

4.C言語によるプログラミング
C言語でプログラミングするには、MPLAB X IDE を起動して、以下の手順で行います。
1 プロジェクトの作成からはじめます。
 File → New Project を選択 
Choose Project → Standard Project 
Select Device → Family = Mid Range 8-bit → PIC12F683 
Select Header → 変更無し 
 「4.Select Plugin Bord」はパス。
Select Compiler → XC8 
  Select Project Name and Folder → Project Name = PIPI → Encoding = ISO-2022-JP
     以上でProjectに PIPI が追加される。 
 

ソースファイルを開きC言語で記述する画面にします。
  Projects の PIPI のSource File を選び、メニューから File → New File を選択する  
  Choose File Tipe → Categries = MicrochipEmbedded → XC8 Compiler 、 FileTipe = main.c
   
  Name and Location → File Name = PIPI1 、 Extenion = c 
   
    以上でC言語を記述するソースファイルの画面になる。
   
    /* から */までの間の注釈欄を作品名などに書き換える。
   


ソースにコンフィグレーションを書きます。
選択するだけで、コンフィグレーションが書き出されます。コンフィグレーションでPICの基本的な使い方を指定します。
MLAB X IDEの画面で、 Production → Set Configuration Bits を左クリックする。
 
Option を選択する。 
 を左クリックして、表示された記述をコピーして、コーディングのページにペーストする。
   
<コンフィグレーションの設定項目> 
  FOSC:外部クロックを使うか、内部クロックを使うか → INTFCCLK内部を使う 
WDTE:ウォッチドッグタイマー(フリーズしたときに復帰させる処理を書くときに使う)を使うか → OFF使わない
MCLRE:ハードウェアリセット(スイッチで再起動する)を使うか → OFF使わない
CP:プログラムプロテクト(プログラムの読み出しを保護)を使うか → OFF使わない
CPP:データプロテクト(データの読み出しを保護)を使うか → OFF使わない
BOREN:ブラウンアウト(電源が不安定になったときの処理)を使うか → ONにしてブラウンアウト発生時にマイコンを停止する
IESO:2段階クロック(外部クロックを使う前に内部クロックを使う)を使うか → OFF使わない
FCMEN:バックアップクロック(外部クロックが壊れたら内部クロックを使う)を使うか → OFF使わない


メインルーチン、サブルーチンを書き加えます。


 







 





 



PICに書き込む形式にビルドして完成です。
を左クリックしてビルドします。( → Clean and Build Main Project)
Loding completed と表示されれば成功です。

5.PICとPICkit3をつなぎプログラムを書き込むアダプターを作る (費用:200円程度)
PICのピンに直接、PICkit3をつながないで、ソケットを使ってつなぐようにすると便利です。
    ソケットと10KΩの抵抗で作ります。
小さいソケットでも16ピンの穴があるので、
半分を使います。 
レバーを動かして、PICを外したり、止めたりします。

6.PICブザーを作る (費用:150円程度)
PICがブザーを鳴らす回路を作ります。
  ダイオード、コンデンサー、抵抗、トランジスタ、ブザー、PICソケットを使います。
全部で150円程度です。
 
<抵抗R1>
 マイコンの出力電圧 = 5V
 ベースエミッタ間飽和電圧 = 1.0V
 ベース電流 = 負荷の電流 ÷ 直流電流増幅率  = 30mA ÷  200 =  0.15 mA (2倍して0.3mA)
抵抗R1 = (マイコンの出力電圧 - ベースエミッタ間飽和電圧) ÷ ベース電流 = ( 5V  - 1.0V ) ÷  0.3mA = 10 kΩ
 

7.PICへ書き込む
MPLAB X IDE を起動してから、
パソコン→PICKIT3→書き込みアダプター→PIC をつなぎ
以下の手順を実行します。

プロジェクトが開いていなかったら、開きます。
 
書き込みツールを PICkit3に指定します。
   
供給するPowerを指定します。
   
電圧を4Vにします。
 





4Vにします。
他の電圧だとうまくいかないようです。
を左クリックして、書き込みます。 
 
 
 
 Verify completeと表示されれば成功です。


8.完成
ビルドしたプログラムをPICに書き込んだら、完成です。
動作を確かめ、問題があったら、プログラミングからやり直します。100回ほど書き直しができます。

1.使っている受信機のチャンネルにつなぎます。

2.受信機のスイッチを入れると、プログラムでスティックの位置を初期値として、設定します。

3.つないだチャンネルのスティックを動かすと、初期値から外れるのでブザーが鳴ります。



防犯ブザーの利用
ブザーは、1個120円程度です。ネットで購入すると郵送料もかかります。ところが、100円ショップに行くと防犯ブザーが100円で売られています。これは使えそうだと思い、試してみました。
防犯ブザーのケースを開けてみました。
電池は、4.76Vなので、受信機の電源をそのまま利用できそうです。

棒を引き抜くと、そのスイッチ部分の回路が切れ、ブザーが鳴るようです。
 
まずは、棒のソケット部分を切断します。
ソケット部分からつながる回路をたどり、
ブザーの回路をオンにしているトランジスタをハンダでショートさせます。
 
 電池の代わりにPICでブザーを鳴らす回路をつなぎます。
 
 ブザーは、共鳴部分となる空間ごと切り取って使います。