科学おもちゃプログラミング | (C)inakakoubouKANAI |
LOGO言語を応用して、お小遣い程度の費用で作れる科学おもちゃを作って、楽しみながら科学的に考える力をつけよう。 |
乾電池で動くような科学おもちゃでは、モーターを動かしたり、LEDを点灯させたりする部品として小さなコンピュータを使います。この小さなコンピュータのプログラミングをするには、専用の命令語のあるプログラミング言語を使います。LOGO言語には、このような小さなコンピュータ用の命令語が無いので、無料の専用のC言語を使います。 |
1.使うコンピュータ |
PICとよばれるマイクロコンピュータを使います。 マイクロコンピュータは、接続するデバイスを制御する機能が組み込まれた小さなコンピュータでマイコンともよばれています。 |
|
乾電池2個~4個で使える小さなコンピュータで8ビットから32ビットのものまであります。 モーターやLEDをコントロールしたり、センサーにつないで計測したりするのに使うのは左の写真のような8ビットのPICで、現時点で120円から170円です。 PICは小さくて軽いのでドローンや模型飛行機にも使えます。 このPICの中で動作するプログラムをパソコンの画面でプログラミングします。 |
2.プログラミングの準備 (費用:5000円程度) |
PICを使うために必要な物です。 | ||||||||||||||||||||
|
プログラミングソフトをセットアップする | |||||||||
|
3.作りたい科学おもちゃを考える |
土手でラジコン飛行機をさがしている人がいました。草むらの中に降りてしまったラジコン飛行機が見つからないようです。 そこで、「ピッピッ」と音のするブザーを作って飛行機に載せ、ブザーの音で見つかるようにしたいと思いました。 |
4.PICの使い方を考える |
1つの信号をもらい、1つの信号を出してブザーを鳴らすだけなのでピンの数が8本で十分です。PIC12F683 を使えば良いでしょう。 PICの電源は、受信機からもらいます。受信機は、6Vの電圧を使っているので、5.5V以下に下げてPICに使います。 受信機からは、デジタル信号が出ます。送信機を操作すると、このデジタル信号が変化するので、PICでデジタル信号の変化を調べて、ブザーを鳴らせばよいでしょう。PICから出力される電流は小さいので、ブザーを鳴るには、トランジスタを使います。 |
(1)今回使うのは PIC12F683 でいいかな? |
(2)PIC12F683のデータシートを調べる 詳しくはデータシートを調べる |
|
VDDは、電源+、VSSは、電源- GP0~GP2,GP4~GP5は入出力として使用でき 各ピンは最大25mAの電流が流せる。 GP3は入力専用で出力には使用できない。 |
|||||||||||||||||||||||||||
|
(3)PICの使い方を決める | |||
|
5.プログラムで何をするか、手順を考える |
受信機から、デジタル信号が出ます。 デジタル信号は、20msec程度の周期で、送信機のレバーがニュートラルのときの1.52msecを中心に1~2msec程度に変化します。 そこで、送信機のレバーを下げたときと、上げたときにブザーが鳴るようにしたいと思います。 |
||||
<手順> | ||||
1 | タイマー0を使って、0.01msecごとに受信機からのGP4を調べ、信号がONになっている回数を調べる。 | |||
2 | 信号が162回以上ONだったら、GP5をONにする。 | |||
3 | 信号が142回以上ONだったら、GP5をOFFにする。 | |||
4 | 信号が142回より短かったら、GP5をONにする。 | |||
6.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 が追加される。 | |
2 | ソースファイルを開き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言語を記述するソースファイルの画面になる。 | |
/* から */までの間の注釈欄を作品名などに書き換える。 | |
3 | ソースにコンフィグレーションを書きます。 |
選択するだけで、コンフィグレーションが書き出されます。コンフィグレーションで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使わない |
4 | メインルーチン、サブルーチンを書き加えます。 |
設 定 |
|
メ イ ン ル | チ ン |
|
サ ブ ル | チ ン |
5 | PICに書き込む形式にビルドして完成です。 |
を左クリックしてビルドします。( → Clean and Build Main Project) | |
Loding completed と表示されれば成功です。 |
7.PICとPICkit3をつなぎプログラムを書き込むアダプターを作る (費用:200円程度) |
PICのピンに直接、PICkit3をつながないで、ソケットを使ってつなぐようにすると便利です。 |
ソケットと10KΩの抵抗で作ります。 小さいソケットでも16ピンの穴があるので、 半分を使います。 レバーを動かして、PICを外したり、止めたりします。 |
8.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Ω |
9.PICへ書き込む |
MPLAB X IDE を起動してから、 パソコン→PICKIT3→書き込みアダプター→PIC をつなぎ 以下の手順を実行します。 |
プロジェクトが開いていなかったら、開きます。 | |
書き込みツールを PICkit3に指定します。 | |
供給するPowerを指定します。 | |
電圧を4Vにします。 | |
4Vにします。 他の電圧だとうまくいかないようです。 |
|
を左クリックして、書き込みます。 | |
Verify completeと表示されれば成功です。 |
10.完成 |
ビルドしたプログラムをPICに書き込んだら、完成です。 動作を確かめ、問題があったら、プログラミングからやり直します。100回ほど書き直しができます。 |