- 電子工作「無線操縦ラジコン車体の製作」のご紹介
- 「電子工作:無線操縦ラジコン車の製作」について
- 「基本検討と全体構成」について
- 「ラジコン車の内部構成」について
- 「車体の組み立て」について
- 「電源について」について
- 「無線送受信モジュールと通信データ構成」について
- 「無線モジュールの接続」について
- 「通信データフォーマット」について
- 「無線通信の方法」について
- 「受信ユニットの回路」について
- 「受信ユニットのパターン図」について
- 「組み立てに必要な部品」について
- 「組み立て」について
- 「受信ユニットのプログラム」について
- 「PICのプログラムの作成」について
- 「プログラム:宣言部」について
- 「【2】プログラム:メインループ部プログラム」について
- 「【3】プログラム:モータ制御のサブ関数プログラム」について
- 「動作テストと調整」
- 歴代ゲームソフト売上ランキングのご紹介|まとめ
- 海外人気のおすすめ名作ゲーム評価ランキングのご紹介
- 【ゲームランキング】世界・国内で最も売れたゲームランキングのご紹介
- 名作ゲームのご紹介│まとめ│家庭用ゲーム・PC・アーケードなど
- 【機種別ゲームTOP】PC・家庭用・アーケードゲーム・周辺機器のご紹介
- ジャンル別ゲームタイトルのご紹介│まとめ│
- 【ゲームTOP】ゲーム関連ページのご紹介
- 【書籍・雑誌TOP】書籍・雑誌サイトマップ関連ページのご紹介
- 【ホビーTOP】ホビーサイトマップ関連ページのご紹介
電子工作「無線操縦ラジコン車体の製作」のご紹介
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
ご訪問ありがとうございます。
今回は、電子工作「無線操縦ラジコン車体の製作」をご紹介します。
「電子工作/修理/メンテナンス」関連マップのご紹介
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
「電子工作/修理/メンテナンス」関連サイトをご紹介します。
「電子工作:無線操縦ラジコン車の製作」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
無線操縦で動くラジコン車を作ってみましょう。基本的な動作を確認する模型ということで、下記のようなタミヤ模型のパーツでシャーシを製作しました。
ラジコン車外観
![](https://kopenguin.com/wp-content/uploads/2020/03/kopen-icon.png)
市販/ジャンク品のラジコンカーを改造して理想のラジコンを作ることもできます。
「基本検討と全体構成」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
無線操縦、つまりラジオコントロール(ラジコン)ですから、無線通信が必要です。無線通信の送受信部分は高周波を扱いますので、ちょっと簡単に自作するというのは難しいので、ここは市販の無線通信モジュール部品を使って作ることにします。
315MHz帯・無線通信モジュールを採用
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
ここで使った無線通信モジュールは、315MHz帯を使った無許可で通信できる無線通信モジュールで、高周波技術のことを何も知らなくてもできてしまうので便利なものです。
駆動部について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
駆動部はハンドルにするとちょっとメカ部が複雑になってしまいますから、2個のDCモーターを独立に動かすことで、前後進、左右旋回を行うことにします。これで、2個のモータの回転方向の切り替えと可変速制御が必要になります。
![](https://kopenguin.com/wp-content/uploads/2020/03/kopen-icon.png)
これらを実現するには、フルブリッジ(Hブリッジ)構成でモーターを動かすのが簡単です。これで可変速制御はPWM制御ということになりますから、マイコンで制御するのが便利です。
「ラジコン車の内部構成」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
これらの基本検討結果から、ラジコン車の内部構成は、下記のようにします。大きく駆動部と受信ユニット部で構成されています。
ラジコン車の内部構成
「駆動部」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
市販のツインギヤモーターセットを使うことで簡単な構成にできます。車体の前輪にはタミヤの組み立て型ボールキャスタを使っています。このボールキャスターは、組み立て方により高さが4種類に変えられるため便利です。シャーシはこれもタミヤの模型セットのプレートを使います。
ツインギヤモーターセット(タミヤ)
ボールキャスタ
「受信ユニット部」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
受信ユニットの中心はPICマイコンです。モータ駆動部はMOSFETトランジスタアレイを使ったフルブリッジ構成となるようにして、PICマイコンのCCPモジュールによるPWM制御で行うことにします。
![](https://kopenguin.com/wp-content/uploads/2020/03/kopen-icon.png)
無線通信の受信モジュールは、PICマイコンの内蔵USARTモジュールに接続して2400bpsの速度で通信を行います。
「電源」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
モーター用と受信ユニット用に別々のバッテリとして、構成を簡単化しています。
「車体の組み立て」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
車体の組み立ては、大部分市販品だけで組み立てられますので、プラモデルと同じ要領でできます。まず使うパーツは、下記表となります。シャーシ、駆動部ギヤユニット、車輪、ボールキャスタなど、いずれもタミヤの模型工作シリーズを使いました。
車体のパーツ一覧 | ||
名称 | 型名仕様 | 数量 |
シャーシ | タミヤ ユニバーサルプレート | 1 |
タイヤ | タミヤ スポーツタイヤセット | 1 |
モーター | タミヤ ツインモーターギヤセット | 1 |
キャスタ | タミヤ ボールキャスタ | 1 |
コンデンサ | 0.001μF セラミックコンデンサ | 2 |
電池ホルダ | 単3 2本金属製 | 1 |
電池 | 単3 | 2 |
電池 | 006P 9V | 1 |
アンテナ | ピンチッププラグに2Φすずメッキ線を固定 | 1 |
取り付けねじ、カラースペーサ、線材 | 少数 |
「電源について」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
電源として、モーター用には単3電池2本を、受信ユニット用には006Pの9Vの電池を使います。単3電池は丈夫な金属ホルダを車体シャーシにねじ止めして固定します。
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
006P電池は単3電池と基板でサンドイッチした状態で十分固定できますが、タイラップか輪ゴムなどで固定してもよいでしょう。あとは基板と電池の間を配線しますが、シャーシの穴を通して配線がぶらつかないようにします。下図が車体を組み立てたところです。
![](https://kopenguin.com/wp-content/uploads/2020/03/kopen-icon.png)
写真のように、モータの端子間に0.001μFのコンデンサをはんだ付けしています。これはモータから発生するノイズを抑えるためのもので、PICマイコンがノイズで誤動作するのを防止します。
「無線送受信モジュールと通信データ構成」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
無線送受信の部分には、315MHzという許可不要の微弱電波を使った無線送受信モジュールを使います。このモジュールはECサイトなどで入手できます。
![](https://kopenguin.com/wp-content/uploads/2020/03/kopen-icon.png)
これをラジコン自動車に利用すれば、簡単な銅線アンテナでも10m程度は届きそうなので室内用に使う分には十分です。また周波数が高いので送受信も安定していて、モーターのノイズの影響も少なく安定した送受信ができます。
無線送受信モジュールの仕様
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
無線送受信モジュールの仕様は下記のようになっています。
使い方としては、
- 単純に標準のデジタルICレベルのシリアル信号を送信モジュールに入力すれば無線信号として出力され、
- 受信モジュールから同じシリアルデータがやはり標準デジタルICレベルで出力されるという単純動作です。
無線送受信モジュールの規格 | ||
項目 | 規格仕様他 | 備考 |
製造メーカ | RFSolution | 英国 |
販売元 | アイ・ピー・アイ社 | |
電波仕様 |
315MHz帯 微弱電波
|
|
受信モジュール(AM-HRR3-315)
|
||
電源電圧 | 5V±0.5V | |
消費電流 | 最大3mA | |
受信周波数 | 200~450MHz | |
受信感度 | -105dBm | |
通信速度 | 最大3kHz | 3kbps |
出力信号 |
TTLレベル(High3.7Vtyp)
|
|
外形寸法 | 約38×13×3mm | |
送信モジュール(AM-RT5-315)
|
||
電源電圧 | 2~14V(通常5V) | |
消費電流 | 通常4mA | |
送信周波数 | 0dBm | |
送信出力 |
303.8~433.92MHz
(AM変調方式) |
|
スプリアス | -30dBc | |
送信速度 |
最大4kHz(4kbps)
|
|
入力信号 |
TTLレベル(High>2V)
|
|
外形寸法 | 約18×12×3mm |
【質問】アンテナの長さは何cmにすればいいの?
【回答】今回使用する送受信機の周波数は315MHzです。315MHzのときは24cmにします。ちなみに周波数が433MHzなら17cmとなります。
電波の波長(λ)は、光速(c)周波数(F)で求められます(光速=3.0×1018)。また、アンテナの長さは、電波の波長の1/4にしたとき感度がよくなります。
λ(m) = c[m/s]+F[Hz]・315MHz
3.0×10¹⁸/3.15×10¹⁸≒0.95(m)
0.95/4≒0.24=24cm
ただし今回のような室内で数mも届けばよい場合は、厳密でなくても十分届きます。
下記が受信モジュールと送信モジュールの外観です。写真のように調整する部分が何もないのと、非常に小型にできていますので実装も簡単です。
受信モジュールの外観
送信モジュールの外観
「無線モジュールの接続」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
無線モジュールの接続は下記(無線送受信モジュールの接続)のようにします。外部端子は少ないので接続に迷うことはないでしょう。この送信モジュールのデジタル入力ピンにシリアル通信の信号を入力すれば、それがそのまま受信モジュールのデジタル出力ピンに出力されるということになります。
無線送受信モジュールの接続
無線送受信モジュール(部品実装面) |
+5V |
デジタル出力 |
テストピン(無接続) |
+5V |
GND |
+5V |
GND |
アンテナ |
GND |
+5V |
無線送信モジュール(部品実装面) |
+5V |
GND |
デジタル入力 |
アンテナ |
「通信データフォーマット」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
通信データとしてUSARTの調歩同期式の信号を使います。この方式では8ビットのデータを送るのに、下記(調歩同期の場合の信号フォーマット)のようにスタートビットとストップビットという各1ビット分のLowの時間を8ビットのデータの前後に追加して送ります。
これで信号が送られていないときは必ずHighの状態となっていて、信号の最初はスタートビットで必ず1ビット分だけLowになりますから、このLowになる瞬間を見つければデータの通信が始まることがわかります。
この後は1ビット分の時間間隔で順番にデータを取り込めば8ビットのデータが受信できることになります。
調歩同期の場合の信号フォーマット
調歩同期の場合の信号フォーマット | |
S | スタートビット 最初は必ずLowになってからデータが送られてくる |
bit0 |
8ビットのデータ(キャラクタとも呼ばれる)
|
bit1 | |
bit2 | |
bit3 | |
bit4 | |
bit5 | |
bit6 | |
bit7 | |
P | ストップビット ここで必ずHighこの状態に戻る 次のデータの始まりは任意の位置から可能 |
「無線通信の方法」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
次に無線通信の方法ですが、調歩同期の8ビット(1バイト)のデータを連続させて、下記(受信ユニット回路図)の形式で合計15バイトのデータが送信機から送られてくるものとします。
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
【1】まずデータの開始記号である文字Sを2個受信します。
【2】そのあとにモータ1、モータ2の回転方向指定と、そのときのモータ速度値を受信します。この速度値については、バイナリデータそのものではデバッグしにくいので、1バイトのデータを上位4ビットと下位4ビットに分け、それぞれに30Hを加えて数字のASCII文字コードに変換しています。
【3】この2バイトを受信して8ビットのバイナリ値に戻してから、モータのPWMのデューティ値として使います。
通信データの構成
反転2連送照合(誤りチェック方法)
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
これに続いて同じデータの”0″と”1″を反転させたデータを追加して受信し、最後に終わりのマークとして文字Eの受信をします。
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
文字Eを受信したら、前半の受信データが、後半の反転されたデータを反転させたものと一致するかどうかで、受信したデータに誤りがないかどうかを判定しています。
![](https://kopenguin.com/wp-content/uploads/2020/03/kopen-icon.png)
このような誤りチェック方法を反転2連送照合と呼んでいます。この誤りチェックを行うことで、誤ったデータにより受信側が誤動作するのを防ぐことができます。以上で通信データの構成が決まりました。
「受信ユニットの回路」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
ラジコン車に搭載する受信ユニットの回路は下記(受信ユニット回路図)のようになります。モーターと電池部を除いた部分が受信ユニット部で、プリント基板に実装されます。
受信ユニット回路図
「受信ユニットとその周辺」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
受信ユニットは、PICマイコンのPIC16F876Aを中心に構成し、無線受信モジュールで受けたデータをPICマイコン内蔵のシリアル通信機能のUSARTで受信することとします。
データ受信確認と通信エラー表示用に発光ダイオードをPICマイコンに直接接続しています。センススイッチがPICマイコンに接続されていますが、今回は使っていません。
「モータの制御」について
CCPモジュールを使ったPWM制御で行います。2チャネルあるPICマイコン内蔵CCPモジュールをパルス幅制御(PWM)モードとして、2個のモータをそれぞれ独立に可変速、正転/逆転の制御ができるようにしています。
「モータのドライブ」について
MOSFETアレイICによるHブリッジで構成してモータの制御を効率よくできるようにします。さらにこのHブリッジには、正転/逆転切り替えのためNANDのデジタルICを1個使用しています。
![](https://kopenguin.com/wp-content/uploads/2020/03/kopen-icon.png)
これでモータの正転と逆転を瞬時に切り替えることができますし、MOSFETの両方を同時にオンにして電源をショートしてしまう問題もなくすことができます。
「モータ用の電源」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
独立にして、外部から供給することとしています。NANDゲートの出力でP型MOSFETの制御をしていますので、NANDゲートの出力は5V以上にはできませんから、結局モーター用の電源としては、5V以上にはできません。
「受信ユニットのパターン図」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
回路図から基板のパターン図を作成します。プリント基板は自作の片面基板ですが、それほど混んだ配線ではないので、ユニバーサル基板でも組み立ては可能です。作成したパターン図が下記となります。下側と右側の余白部はエッチング不要ですからベタパターンで塗りつぶしています。
受信ユニットのパターン図
【質問】どうして、使わない余白をベタパターンにするのですか?
「組み立てに必要な部品」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
受信ユニットの組み立てに必要な部品は下記のようになります。部品点数は少ないので実装はさほど難しくはありません。モータとの接続はコネクタ接続として取り外しが簡単にできるようにします。
![](https://kopenguin.com/wp-content/uploads/2020/03/kopen-icon.png)
またアンテナは太さ2mmの錫メッキ線を15cm〜24cm程度の長さにしたものをシャーシのピンに直接はんだ付けで接続することにしました。
受信ユニット基板パーツ一覧 | |||
名称 | 品名 | 型名仕様 | 数量 |
U1,U2 | MOSFETアレイIC | MP4212 | 2 |
U3 | PICマイコン | PIC16F876A-20-1/SP | 1 |
U4 | 3端子レギュレータ | TA7805F | 1 |
U5 | IC(NANDゲート) | 74AC00 | 1 |
RX1 | 無線受信モジュール | AM-HRR3-315(71E-711) | 1 |
D3,D4 | 発光ダイオード | TLR113 赤 | 2 |
D1,D2 | 発光ダイオード | TLG113 緑 | 2 |
Q1 | MOSFET | 2SK2231 | 1 |
X1 | セラミック振動子 | 10MHz3端子型 | 1 |
C1,2 | 電解コンデンサ | 33μF35V | 2 |
C3 | 電解コンデンサ | 33μF16V | 1 |
C4,5,6 | 積層セラミック コンデンサ |
0.1μF | 3 |
RM1 | 抵抗アレイ | 470Ω 4素子 | 1 |
R1-7 | 抵抗 | 10kΩ 1/4W | 7 |
S1,S3 | スイッチ | 基板用小型プッシュスイッチ | 2 |
S2 | DIPスイッチ | 4P DIPスイッチ | 1 |
S4 | スイッチ | 小型スライドスイッチ | 1 |
J1 | モレックスコネクタ | 6ピンコネクタ、ソケット | 1 |
J2 | モレックスコネクタ | 10ピンコネクタ、ソケット | 1 |
基板 | 感光基板 10K | 1 | |
ICソケット | 28ピン スリムICソケット | 1 | |
ICソケット | 14ピン ICソケット | 1 | |
その他小物 | カラー、ねじ、テストピン等 | 1 |
「組み立て」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
下記(受信ユニット組み立て完成/はんだ面)が、受信ユニット基板の組み立て完成状態のものです。無線受信モジュールは高価なパーツですから最後に取り付けるようにします。
アンテナ用端子 |
抵抗アレイ |
ジャンパ線(10箇所)
|
MP4212 |
2SK2231 |
セラミック振動子
|
MP4212 |
3端子レギュレータ
|
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
受信ユニットが完成したら、シャーシに取り付けます。
- シャーシのプレートにあいている穴と受信ユニットの固定用の穴位置は合うようにしています。
- 穴位置を合わせ、間にカラースペーサを挟んで、基板下側にスペースをあけて(はんだ面を浮かすようにして)ねじで固定します。
はんだ面
「受信ユニットのプログラム」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
受信ユニットのプログラムはC言語で記述しています。PICマイコン内蔵のUSARTやCCPモジュールを使っていますので、簡単に高機能なPWM制御を実現できます。
![](https://kopenguin.com/wp-content/uploads/2020/03/kopen-icon.png)
PICマイコンには、無線通信からモータを制御するPWM制御の機能がたった1個のマイコンの中に入っているのです。こう考えるとこれを使わない手はありません。また学習しておいて損はないはずです。
「PICのプログラムの作成」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
PICマイコンのプログラムの作成は「開発環境を揃え→プログラミング→PICマイコンに書き込む」という手順になります。
MPLAB IDE
PICマイコンのプログラムの作成作業のほとんどは「MPLABIDE」という統合開発環境のもとで行うことになります。このMPLABIDEは米国マイクロチップテクノロジー社が開発し、無料で公開している開発用ソフトウェアで、自由にダウンロードして使うことができます。
Cコンパイラ
プログラミングにはCコンパイラが必要です。Cコンパイラとは、C言語で書いたプログラムをコンピュータが理解し、実行できる機械語に変換するソフトのことです。
プログラムの全体フロー
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
受信ユニットのプログラムの全体フローは、下記のようになります。
受信ユニットプログラムフロー
![](https://kopenguin.com/wp-content/uploads/2020/03/kopen-icon.png)
受信ユニットは全体がステートマシンという構成になっていて、RevStateという変数がステータスのシーケンスの順序を示す変数となっています。
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
【1】まず、RevStateが「0」から始まり、送信機からの通信データを受信して、文字Sならステートを+1して次に進みます。次のデータ受信ではRevStateが「1」ですから、再度文字Sをチェックすることになり、文字SであればRevState=2となります。
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
【2】あとは順次受信したデータをバッファに格納します。最後に文字「E」を受信したら、そこで受信完了ということで、緑の発光ダイオードを反転制御してから、バッファ内のデータの照合チェックを行います。
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
【3】照合が一致したらはじめてモーター制御用にデューティ値を求めて設定制御します。制御したらすぐRevStateを「0」に戻し、最初の受信から繰り返します。
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
【4】照合が不一致の場合には、赤色の発光ダイオードを点灯させて、RevStateを「0」にクリアしてリセットし、最初の受信からやり直します。
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
このフローに従ったプログラムのリストが、プログラム【1】【2】【3】となります。
【1】 | 宣言部と初期設定部(C言語)プログラム |
【2】 | メインループ部プログラム |
【3】 | モータ制御のサブ関数プログラム |
「プログラム:宣言部」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
リスト下記は宣言部と初期設定部でコンフィギュレーションの設定とユーザ変数の宣言定義をしています。初期設定では各モジュールの初期設定と変数の初期化を行っています。
【1】宣言部と初期設定部(C言語)プログラム
/*********************************************************
*ラジコンロボット受信ユニットプログラム
*無線のデータをUSARTで取り込み、2個のDCモータを2つのPWMで制御
*********************************************************/
//コンフィギュレーションの設定
#include<16F876A.h>
#fusesHS,NOWDT,NOPROTECTPUT,BROWNOUT,NODEBUG,NOLVP
//USART初期設定
#usedelay(CLOCK = 10000000)
#users232(BAUD = 2400,XMIT = PIN_C6,RCV = PIN_C7,ERRORS)
//変数定義
#byte PORTA = 5
#bytePORTB = 6
#bytePORTC = 7
charRcvData,RcvBuf1[10],RcvBuf2[10];
//ユーザ変数の宣言定義
unsigned int RcvState,RcvCount,ErrFlag;
unsigned long Duty1,Duty2;
//プロトタイピング
void MotorCnt(void);
//メイン関数
voidmain(void)
{
int i;
//入出力ポートの設定/ポート初期設定
//全ピンデジタルモード
setup_adc_ports(NO_ANALOGS);
//ポートCはUSART受信以外全て出力
set_tris_c(0x80);
//ポートB上位入力下位出力
set_tris_b(0xF0);
//ポートA全て出力(未使用)
set_tris_a(0);
//ポートBのプルアップオン
port_b_pullups(TRUE);
//全LED消去
portb=0x0f;
//CCPモジュール、タイマ2の初期設定
//CCP1,CCP2をPWMモードに
setup_ccp1(CCP_PWM);
setup_ccp2(CCP_PWM);
//タイマ2の設定
//10ビット分解能
setup_timer_2(T2_DIV_BY_1,0xFF,1);
//停止
set_pwm1_duty(0);
set_pwm2_duty(0);
//ポートと変数の初期化 ブリッジ設定停止
//全LED消灯
portc = 0;
//スタートLED点灯
output_low(PIN_B3);
//ステート初期化
RcvState=0;
//受信カウンタ初期化
RcvCount=0;
「【2】プログラム:メインループ部プログラム」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
下記がメインループ部で、ステートマシンを実行して受信データを順番にメモリに格納し、受信完了したら誤りチェックをしてからモータ制御を実行しています。
【2】プログラム:メインループ部プログラム
//メインループ
while(1)
{
//1文字受信
RcvData=getc();
//ステートで分岐 ステート0 文字S受信でステート1へ
switch(RcvState)
{
//初期ステートS受信で+1
case0: if(RcvData == 'S')
RcvState = 1;
break;
//ステート1 文字S受信でステート2へ 次のS受信で+1
case1:if(RcvData == 'S')
RcvState=2;
else
//異なれば初期ステートへ戻る
RcvState=0;
break;
//ステート2 6文字受信保存後ステート3へ
case2:RcvBuf1[RcvCount]=RcvData;
//受信カウンタ更新
RcvCount++;
if(RcvCount >= 6){
//受信カウンタクリア
RcvCount = 0;
//6バイト受信でステート+1
RcvState = 3;
}
break;
//ステート3 6文字受信保存後 ステート4へ
//反転データ受信。反転して格納
case3: RCVBuf2[RcvCount] = "RcvData;
//受信カウンタ更新
RcvCount++;
if(RcvCount >= 6){
//受信カウンタクリア
RcvCount = 0;
//ステート+1
RcvState = 4;
}
break;
//ステート4文字E受信でデータ処理実行
//終了E受信
case4:if(RcvData == 'E')
{
//照合チェック
ErrFlag = 0;
for(i = 0;i<6;i++){
if(RcvBuf[i] ! = RcvBuf2[i])
ErrFlag = 1;
}
//照合チェックOKでモータ制御実行
//照合OKか?
if(ErrFlag == 0)
{
//照合OKモータ制御
//緑LED点滅
output_toggle(PIN_B2);
output_high(PIN_BO);
//モータ制御実行
MotorCnt();
}
else
//照合チェックNGで赤色LED点灯 エラー時赤色LED点灯
output_low(PIN_B0);
}
//ステート初期状態へ戻る
RcvState = 0;
break;
default:RcvState = 0;
break;
}
}
}
「【3】プログラム:モータ制御のサブ関数プログラム」について
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
下記はモータ制御のサブ関数で受信データをデューティ値に変換し、実際にモーターのデューティ制御をします。
【3】プログラム:モータ制御のサブ関数プログラム」
//***********************
*モータ制御サブ関数
************************//
void MotorCnt(void)
{
//モータ1の方向判定し正転、逆転の制御
/モータ1の制御
if(RcvBuf1[0] == '0'){
//正転の制御
output_low(PIN_C3);output_high(PIN_CO);
}
else{
//逆転の制御
output_high(PIN_C3);
output_low(PIN_CO);
}
//モータ1速度設定8ビットを10ビットに変換
Duty1 = ((RcvBuf1[1]&0x0F)<<4) + (RcvBuf1[2]&0x0F);
set_pwm1_duty(Duty1<<2);
//モータ2の方向判定し正転、逆転の制御
if(RcvBuf1[3] == ’0’){
//正転制御
output_low(PIN_C5);
output_high(PIN_C4);
}
else{
//逆転制御
output_high(PIN_C5);
output_Low(PIN_C4);
}
//速度データ2の上位4ビット十下位4ビットで8ビットに変換しDuty2にセット
Duty2 = ((RcvBuf1[4]&0x0F)<<4) + (RcvBuf1[5]&0x0F);
set_pwm2_duty(Duty2<<2);
}
![](https://kopenguin.com/wp-content/uploads/2020/03/kopen-icon.png)
以上で受信ユニットのプログラムも完成しますから、これをPICマイコンに書き込んで完成となります。
「動作テストと調整」
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
動作テストは無線通信の部分は送信機ができてからでないとできませんから、後回しにします。
電源電圧の確認
まずPICマイコンを実装しない状態で電源をオンとし、テスタで電源電圧が5Vであることを確認します。
発光ダイオードのテスト
ICソケットの発光ダイオード接続ピンを仮にグランドに接続すれば、対応する発光ダイオードが点灯するはずです。
スイッチのテスト
テスタ(DMM)でPICマイコンのソケットの対応するピンの電圧を測定し、常時5Vでスイッチを押している間はOVになれば正常に動作しています。
モータの単体テスト
モーターのコネクタを接続し、モーター用の電池も実装します。74AC00のICも実装します。この状態で電源をオンとしPICマイコンのソケットのピンを、仮に電源に接続してモータの回転を確認しますが、下記(モータの回転テスト方法)のように接続し回転を確認し
ます。
モータの回転テスト方法
モータの回転テスト方法 | |||||||
電源に仮接続するピン(○印) |
モータの回転
|
||||||
RC0 | RC1 | RC2 | RC3 | RC4 | RC5 | ||
◯ | ◯ |
モータ1
|
正回転 | ||||
◯ | ◯ | 逆回転 | |||||
◯ | ◯ |
モータ2
|
正回転 | ||||
◯ | ◯ | 逆回転 |
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
これで基本的な動作は確認できますので、あとはPICマイコンのプログラムと無線通信の動作テストが残るだけとなります。次は送信機の製作をしましょう。
![](https://kopenguin.com/wp-content/uploads/2023/09/2023-0911-1756-0508-160x99.jpg)
「電子工作/修理/メンテナンス」関連マップのご紹介
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
「電子工作/修理/メンテナンス」関連サイトをご紹介します。
「電子工作/修理/メンテナンス」関連マップのご紹介
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
「電子工作/修理/メンテナンス」関連サイトをご紹介します。
【ゲームメーカー別ランキング】サイトマップのご紹介
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
ゲームメーカー別ランキングの関連サイトをご紹介します。
【ゲームメーカー別ランキング】関連ページのご紹介
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
【ゲームメーカー別ランキング】関連ページをご紹介します。
【ゲームランキング】サイトマップのご紹介
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
ゲーム・ランキングの関連サイトをご紹介します。
【ゲームランキング】サイト関連ページのご紹介
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
【ゲームランキング】サイト関連ページをご紹介します。
歴代ゲームソフト売上ランキングのご紹介|まとめ
![](https://kopenguin.com/wp-content/uploads/2023/02/2023-0207-2322-0-160x99.jpg)
海外人気のおすすめ名作ゲーム評価ランキングのご紹介
![](https://kopenguin.com/wp-content/uploads/2021/06/edfv09445rf0639-160x99.jpg)
ゲームTOPサイトマップ
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
ゲームTOPのサイトマップをご紹介します。
【ゲームTOP】サイトマップ | ||||
ゲームTOP > ランキング│傑作・名作│機種別│ジャンル別 | ||||
■ランキングTOP > ハード│ソフト(売上(世界│国内)│海外評価) ■傑作・名作ゲームTOP > ■ゲーム機種別TOP > 据置│携帯│AC│PC│周辺機器 ■ジャンル別TOP > アクション系(プラットフォーム│対戦アクション│FPS│TPS│STG│フライト)|AVG│RPG│SLG│レース│スポーツ│パズル│テーブル |
||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
ゲーム関連ページのご紹介
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
ゲーム関連ページをご紹介します。
【ゲームランキング】世界・国内で最も売れたゲームランキングのご紹介
![](https://kopenguin.com/wp-content/uploads/2021/10/20211011-0009-160x99.jpg)
名作ゲームのご紹介│まとめ│家庭用ゲーム・PC・アーケードなど
![](https://kopenguin.com/wp-content/uploads/2021/06/rfvgh96-160x99.jpg)
【機種別ゲームTOP】PC・家庭用・アーケードゲーム・周辺機器のご紹介
![](https://kopenguin.com/wp-content/uploads/2021/06/rfvgh78-160x99.jpg)
ジャンル別ゲームタイトルのご紹介│まとめ│
![](https://kopenguin.com/wp-content/uploads/2021/06/rfvgh80-160x99.jpg)
コペンギン・サイトマップ
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
コペンギンのサイトマップをご紹介します。
【コペンギンTOP】サイトマップ | ||||
コペンギンTOP > ゲーム│ホビー│書籍・マンガ│ | ||||
■■│コペンギンTOP > ゲーム│ホビー│書籍・マンガ│■■ |
||||
サイトマップ一覧 |
懐かしの名作から最新作までの豊富な品揃え!通販ショップの駿河屋
コペンギンサイトマップ関連ページのご紹介
![](https://kopenguin.com/wp-content/uploads/2020/03/Penguin-icon-2.png)
コペンギン関連ページをご紹介します。
【ゲームTOP】ゲーム関連ページのご紹介
![](https://kopenguin.com/wp-content/uploads/2022/03/20220314-1308-160x99.jpg)
【書籍・雑誌TOP】書籍・雑誌サイトマップ関連ページのご紹介
![](https://kopenguin.com/wp-content/uploads/2022/03/20220313-2158-160x99.png)
【ホビーTOP】ホビーサイトマップ関連ページのご紹介
![](https://kopenguin.com/wp-content/uploads/2022/03/20220313-2313-160x99.jpg)