コンテンツへスキップ

マイクロマウス大会へ向けて動いていきたいと思います!今回はハードを作成しました。

マイクロマウス大会へ向けて動いていきたいと思います!

今回はハードを作成しました。special thanks for Furuta!!!

目次

  • マイクロマウスとは
  • 機能
  • 回路 
  • PCB
  • 部品
  • 基板注文
  • 完成
  • 雑記

マイクロマウスとは

迷路を自律走行ロボットが探索してゴールを目指す大会です。ゴールできたら、経過時間を競います。

公式:マイクロマウス2019 -公共財団ニューテクノロジー振興財団

機能

機能は以下のようになっています。EEPROMとは 不揮発性メモリの一種で 、マイコンに書き込んだデータを記憶してくれる物です。

  • 電源 12V-5V-3.3V
  • EEPROM
  • LED
  • スイッチ入力
  • 距離センサ 発光/ 受光
  • モータドライブ

回路

回路図はこちらです。お好きなマイコンをお使いください。

PCB

上の回路をKiCADでPCBデータにしました。

部品

多くは秋月電子へのリンクになっています。部品数は確認しましたが正確ではないかも知れませんのでご了承ください。

機能部品名個数備考
ICソケット28pin1
ICソケット8pin1
マイコンLPC1
モータードライバーa498821
XH3pinベース12
タクトスイッチ4
コンデンサ0.1uF6
EEPROM 24LC64-I/P1
LED3
RLED用3305
3端子レギュレータ12V-5V78051
3端子レギュレータ5V-3.3VLP29501
C100uF5
赤外線LED33
npnトランジスタ8050SL-C-T92-K3
R1k8
R10k14
R474
赤外線受光NJL7302L44
C0.01uF4
ステッピングモーター21
PH6pinハウジング 2
C220uF2
XH6pinハウジング2
XH6pinベース2
XH4pinハウジング2
XH4pinベース2
ピンヘッダ2pin6
VHベース2pin1
バッテリ3S12V 1000mA1+予備
鉄板底板15
スペーサー30mm2
スペーサー20mm2
スペーサー25mm4
スペーサー10mm 4
プラねじ とナットM34
熱収縮チューブ Φ5センサ用カバー1
R3.3k2
トグルスイッチ16
PHハウジング6pinモータ接続用2
PH圧着端子8
XH圧着端子32

チップ抵抗の読み方

  1. 解説動画です。https://www.youtube.com/watch?v=5CmjB4WF5XA
  2. ピンヘッドでも可
  3. 貰った物なのでわからないですが、 これとか。受光素子が反応する周波数を確認してください。
  4. これも貰った物なので、たぶんこれであろうと思うものを記載しました
  5. 貰ったものです。ミスミなどで買ったと思われます。
  6. カバーを取り外しました。

基板注文

注文したのはelecrowさんです。

注文方法に関しては過去のこちらの記事や他の方のブログなどをご覧ください。=>KiCADでプリント基板を作ってElecrowさんに注文

完成品

完成!電圧も大丈夫そうです。マウスのサイズになりました。

雑記

次からは動作確認をしています。

プリント基板(PCB)で名刺を作ろうということになったので、作ってみました。出来たものを自慢するのが目的です!

PCBで名刺をつくります。

目次

  • 目的と内容
  • KiCAD
  • 画像の加工
  • 完成
  • 雑記

目的と内容

プリント基板(PCB)で名刺を作ろうということになったので、作ってみました。出来たものを自慢するのが目的です!

KiCAD

KiCADについては以前使用した回をご覧ください。=> KiCADでプリント基板を作ってElecrowさんに注文

使い方は「KiCADことはじめ」を見ればだいたい大丈夫かと思います。

画像の加工

これをKiCAD のビットマップのインポートにロードして、好きなフォルダにアップロードします。

大きさを変更する場合は、元の画像かグレースケールかエクスポートのどこかの段階ですればOKです。

日本語で書けるらしいんですが、うまくいかなかったので今回は日本語も同じように画像を貼り付けます。

完成品

回路図

picの回で使ったものをつけられるようにしました。でもそれだけじゃ寂しかったのでモータードライバをつけてみました。

回路図

データ

下にある大きいRefのCu部分に電源を繋げるつもりです。

PCB data

3D view

3D view

雑記

今回は特に技術的に取り上げるものがありませんので以上です。

回路は一応動くだろうと思うんですが、テストしてないので分かりません。最低限Lチカはできるはず。

参考

PICマイコンを使ってみます。使用するのはpic16f886で、windows10、MPLAB v5.10。

PICマイコンを使ってみます。使用するのはpic16f886で、windows10、MPLAB v5.10

目次

  • PIC開発環境
  • 回路
  • コード
  • 書き込み
  • 動作確認
  • 雑記
  • 参考

PIC開発環境

ソフトウェアでコーディングした後、ライターを用いてマイコンに書き込みます。

  • ソフト (MPLAB X IDE + MPLAB XC8コンパイラ)

IDEは統合開発環境で、エディタ、デバッカ、シミュレータなどほとんどのプログラムを内蔵しています。MPLAB X IDEは8bit~32bitマイコンで共通で使用できます。 コンパイラはC言語のようなコンパイラ言語をコンパイルして機械語に翻訳するプログラムです。Cコンパイラは別にインストールし、MPLAB X IDE に統合します。

私はwindows10ですが、macでもlinuxでも同様の環境でOKみたいです。

コンパイラはいくつかありますが、microchip社が比較的新しく発表したのが MPLAB XC8コンパイラです。 MPLAB IDE8.84迄のバージョンには既にHI-TECH Cが同梱されているみたいです。

・ MPLAB X IDE | Microchip Technology


MPLAB XC Compilers| Microchip Technology

  • 書き込み機(ライター)

記事によって互換品の付属のアダプタが危険っぽかったので別途用意しました。ネタバレですが、書き込み機の一部機能が壊れてました。

回路

2つLEDをつけて交互に点滅させます。 簡単で良いです。実験中に電源が入っているかを確認するためのLEDと、電源を外したときに瞬間的にマイコン電源がなくなるのを防ぐために (一応)つけているコンデンサが加わっています。

回路図

データシートを見ながら回路を組み立てます。リンクは秋月さんのとこのです。

マイコンのpin

コード

PICに書きこむ例としてリモコンのコードを見ながら、自分でコードを書いていきたいと思います。

プロジェクト

file/New Projectから作成します。MicrochipのStandalone Projectを選択します。

new project

今回使うpic16f886を選択します。

ライターは使用するPickit3を選択します。

コンパイラはXC8を選択します。

ファイル名は適当に決めます。

sourceフォルダの中に1つmainのファイルが必要です。

cファイルを開き、コードを書いていきます。

設定

production/set configuration bit の設定をしていきます。 なお、このマイコンはMCC対応してません。MCCは、簡単に設定できる超便利ツール、らしいです。

MPLAB® Code Configurator -microchip

set configuration bit

出来たら、generate source codeをクリックしてコードをコピペします。

configuration

設定は秋月のリモコンと一緒にします。今回は関数など使ってないので、I/Oさえ間違わなければ問題ないと思われます。

// CONFIG1
#pragma config FOSC     = INTRC_NOCLKOUT    // 発振回路設定 Oscillator Selection bits (INTOSCIO oscillator: I/O function on RA6/OSC2/CLKOUT pin, I/O function on RA7/OSC1/CLKIN)
#pragma config WDTE     = OFF               // Watchdog Timer Enable bit (WDT disabled and can be enabled by SWDTEN bit of the WDTCON register)
#pragma config PWRTE    = OFF               // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE    = ON                // 外部リセット/汎用入力の選択で外部リセット有効化 RE3/MCLR pin function select bit (RE3/MCLR pin function is MCLR)
#pragma config CP       = OFF               // Code Protection bit (Program memory code protection is disabled)
#pragma config CPD      = OFF               // Data Code Protection bit (Data memory code protection is disabled)
#pragma config BOREN    = OFF               // Brown Out Reset Selection bits (BOR disabled)
#pragma config IESO     = ON                // オシレータのスタートアップとコード実行の潜在時間を最小化Internal External Switchover bit (Internal/External Switchover mode is enabled)
#pragma config FCMEN    = ON                // オシレータの故障の場合さえ、デバイスが作動し続けるのを許容するように設計Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is enabled)
#pragma config LVP      = OFF               // Low Voltage Programming Enable bit (RB3 pin has digital I/O, HV on MCLR must be used for programming)

// CONFIG2
#pragma config BOR4V    = BOR40V            // リセットしきい値を4V Brown-out Reset Selection bit (Brown-out Reset set to 4.0V)
#pragma config WRT      = OFF               // Flash Program Memory Self Write Enable bits (Write protection off)

BORとは: 事故時などに信号が不安定になるとマイコンによくありません。そこで、一定のしきい値を設定し、4Vなら4V±0.2Vを下回るとリセットを書ける機能を設定します。そのような機能をブラウンアウトリセット機能(BOR)と呼びます。

main関数

I/Oポートを設定します。クロック周期設定 I/Oポートの指定は、init関数の中で行っています。関数の使い方が解らなかったので、0~9999まで数え上げさせて時間を作る雑なコードになりました。すべてPortAの8pinすべて出力にしています。RA2=1;は、RA2が割り当てられたpinに電圧をかける指令です。

void init(){
    OSCCON = 0b01110000; //8MHz
    ANSEL = 0b00000000; //
    TRISA = 0b00000000;//
    TRISB = 0b00000000;
    TRISC = 0x00;
    PORTA = 0b00000000;
}

void main(void){
    int i=0;
    init();
   
    while(1){
        
        i=0;
        while (i <10000){
            i++;
        }
        RA2 = 1;
        RA3 = 0;
        
        i=0;
        while (i <10000){
            i++;
        }
        RA2 = 0;
        RA3 = 1;
    } 
}
portA

書き込み

繋いだらメニューバーの下の△をクリックします。

警告がでました。C:\Program Files (x86)\Microchip\xc8\v2.05\pic\includeやC:\Program Files (x86)\Microchip\xc8\v2.05\pic\include\c99に入っているヘッダファイルを開きます。私の場合はなぜかここにありましたが、多くの場合はProgram Files (x86)じゃなくProgram Filesだと思います。 C標準ライブラリ -PICマイコンによる開発手法

なんだかよく分からないままひたすら関係ありそうなヘッダファイルを開いて確認していくと、xc.hがインクルードしているalloca.hが入っていない。

MPLAB X IDE v5.xxの注意点 -サヌキテックネット にしたがって、projectのプロパティから、XC8 Global OptionsでC99をC90に変更するとビルドに成功しました。警告は無視。

BUILD SUCCESSFUL (total time: 6s)

書き込んでいきます。

電源供給するように設定します(私のライターは安く買ったからか電源を供給する機能がうまくいきませんでした)。マイコンは電源がないと動作しませんので、ライターか回路から電源を供給して下さい。 project上右クリックでpropaties、hardware toolからPICkit3を選択、pickit3からpowerで、チェックボックスにチェック。マイコンのデータシートにWide Operating Voltage Range (2.0V-5.5V)とあったので、5.0Vの電圧を供給します。

電源がない場合はコンピュータがデバイスを見つけられない、とか、以下のようなメッセージが表示されます。

PICkit 3 is trying to supply 5.250000 volts from the USB port, but the target VDD is measured to be 4.875000 volts. This could be due to the USB port power capabilities or the target circuitry affecting the measured VDD.

私はライターが壊れていたので、無理やり外部から接続できるようにしました。

Programming...

The following memory area(s) will be programmed:
program memory: start address = 0x0, end address = 0xfff
configuration memory
Programming/Verify complete

ライターの画像です。Vddに電源+、VssにGNDを接続します。(Vssは本来電源がマイナスになり得る場合のマイナス側です。)ライター付属の紙より転載。

PICkit3

動作確認

チカチカした。

Lチカ
Lチカ

雑談

MCCという便利機能があるんですが、Tools/Embedded/MPLAB Code Configuratorで見たところ、最新版でもサポートしているデバイスが少なく今回使用したPIC16F886もサポートされていませんでした。悲しい。

参考