rogy Advent Calendar 2015も余すところ二つとなりました。どうもこんにちはめかとろの玩具箱の州すけです。
PCとマイコンの間の通信は組み込みでのデバッグでとても便利です。そこでよく使われる通信方式がRS232Cという方式でマイコン側はUARTを利用して送受信を行います。PC側のソフトはというと、組み込み向けの本には「ターミナルソフトを使ってね」とTeraTermやHyperTerminalが挙げられます。
これらのソフトウェアを利用すれば手軽にマイコンとPCが通信できるのですが、受信したデータをグラフにしたりPCで計算したデータをマイコンに送信したりするのにはひと手間かかります。
そこで他の処理と組み合わせられるようにRS232C通信のプログラムを書こうというわけです。
めかとろの玩具箱
新入生歓迎展示で展示していたライントレースロボットです。とりあえずひとまずの完成となりました。
家では問題なく動いていたのですが、展示では講義室の照明が明るかったためかうまく動いてくれず、動画を流しているだけという結果になってしまいました。
現在のプログラムでは動作前に白い場所において白地のデータを読み取りそれを基準値とし、ライントレース中に取得した値と基準値との差分の定数倍をPWM最大値から引いて出力するという構成になっています。
pwm=MAX-k(基準値-取得値)
のような感じ。センサは6つついているため、
pwm左=MAX-k1(基準値左1-取得値左1)-k2(基準値左2-取得値左2)-k3(基準値左3-取得値左3)
pwm右=MAX-k4(基準値右1-取得値右1)-k5(基準値右2-取得値右2)-k6(基準値右3-取得値右3)
みたいな感じになっています。
線を見ているセンサがある方のタイヤが減速するイメージです。
これからは微分制御を加えることと、外乱光の対策に始めに黒の値を取得して走行時の値との比を扱うことを考えています。
また今回は消費電力が大きかったために電池がモーターを別にせざるを得なかったため、そこをどうにかして2本にしたいなと思っています。
それではまた来月お会いしましょう。
新歓展示のために作っているライントレースロボットの基盤が完成しました。
電源約2.5V(単4NiMH充電池2本)→DC/DCコンバータで3.3Vに昇圧→マイコン・LED・フォトトランジスタを駆動。モーターの電源は電池から直接取る。
で動かしています。
下に回路図(とても見にくい)も載せてありますが、
マイコン:PIC16F1827
DC/DCコンバーター:HT7733A
FET:IRLU3410PBF
フォトトランジスタ:NJL7502L
モーター:タミヤミニモーターセット
モーターは小さくて安い(200円)ことだけを理由に選定。トルク不足でFA-130に切り替える可能性も考えていましたがなんとか動くようなのでこのまま行きます。
昇圧は回路の勉強して計算もしなければいけないのかと思っていましたが、最近は便利なICがありまして、今回使用したHT7733A(http://akizukidenshi.com/catalog/g/gI-02799/)は200mVまでしか出力できないですが、小型でショットキーバリアダイオードとインダクタを加えてあげれば場所も使わずに簡単に昇圧できます。200mVでは電流不足になることが不安だったので並列に2つつなげています。
人がマジックで書いた線をたどることを目標にしているので、高輝度LEDに入れた抵抗は10kΩと大き目なものですが、ネームペンで書いた線で300mV程度の電圧降下が見られたのでどうにかなると信じています。実際は太いマジックで書けばいいかと考えています。
今週中には走行させたいところですが、USARTがうまく動かずセンサの値が表示できないので閾値の設定は手さぐりになっています。そのため前回に載せていたXBeeは外してあります。
それでは新歓展示でお会いしましょう。
こんばんは、めかとろの玩具箱の州すけ(@schu_suke)です。
修理に出したPCが壊れて帰ってきたり、そのせいでMPLABを再インストールしたらビルドできなくなったりしたおかげでほとんど作業が進まず、未だライントレースロボットは完成せずといったところです。
まずMPLABXIDEの不具合なのですが、以前私はWindows8にMPLABXとXC16コンパイラをインストールして、その後にWindows8.1にアップグレードさせて使っており、この時は何の問題もなく動作していました。
ところがPC修理後にWindows8.1に再インストールを行ったところ、makefileに失敗しビルドができなくなっていました。optionのEmbeddedやProjectPropertiesを確認してもコンパイラは認識されており、環境変数Pathにコンパイラを追加しても上手くいきません。
結局Windows8にして再インストールを行ったところ問題なくビルドに成功しました。詳しい原因はわかりませんがInventorもパッチがないと8.1では動作しませんし中身が割と違うのかもしれません。Windows8.1をお使いのPICerの皆様お気を付けください。MPLABXは2.05と1.85、XC16は1.11と1.21を試しました。
ライントレースロボットはPCの修理期間中にセンサ回路を新しいものを作りました。赤外線だとLEDが光っているのかわかりにくいので赤色LEDに、それに伴いフォトトランジスタはNJL7502Lに変更。またXBeeも基盤に載せました。下がその写真です。
現在鋭意プログラムを書いているところなので動作は今しばらくお待ちください。
上のロボットは横幅が18㎝ぐらいの大き目なものなので狭い場所で走らせることは難しいです。そこで机の上で走らせることのできる、新歓や工大際の展示にも便利な小さ目なライントレースロボットを作ろう!ということにしまして、C基盤を車体としたサイズのものの製作にも入りました。
電源は単4のNiMHを2本直列にしてあまり高価なものやプリント基板は使わないことを目標に製作していますが、このままではおそらくトルク不足になりそうです。使っているマイコンやICなどの仕様はもう少し固まってから紹介したいと思います。
新歓展示に間に合うように頑張ります。それではまた今度。
どうもこんにちは、州すけ(@schu_suke)です。12月から研究室「めかとろの玩具箱」を立ち上げて活動しています。
「めかとろの玩具箱」はmechanics(機械工学)とelectronics(電子工学)の両方の知識や技術を使ったものづくりをコンセプトに私、州すけが好き勝手する研究室です。
現在では、古典制御理論であるPID制御の練習としてライントレーサを作っています。
取りあえず形だけ作ってみた感じなので昔適当に作ったセンサを流用したり、XBeeがちゃんと載っていなかったりいい加減なつくりをしています。
主に今回の進捗内容はXBeeの導入です。今までセンサの値を読むなどのデバッグは有線でシリアル通信をしていたのですが、それだと走行中のデバッグができなかったので無線、その中でも法律に抵触せずに簡単に使えるXBeeを導入しました。
XBeeはPICではUARTに直接つなげばいいだけなのでUARTを使ったシリアル通信をしたことがある方なら知識を増やすことなく使えます。XBeeやPCとつなぐ親機のUSBシリアル変換IC(FT232RLシリアル変換モジュール)は秋月電子通商で購入しました。
親機です。USB端子を基盤につけて直接PCに挿せるようにしました。幅もUSB端子の幅とあまり変わらないため隣のUSBポートの邪魔もしないので便利です。
通信させてライントレーサに搭載したフォトリフレクタのA/D変換値を送信させた様子↑。12bitなので最大が4095になっており、すべてのセンサに同じ大きさの抵抗を使っているのでセンサごとの個体差が大きいことがよくわかります。
次回までにはセンサを見直してPID制御でのライントレースができるようにしたいと思います。