汎用の自作mbedの新型が出来たので紹介します。写真左が旧型、右が新型です。旧型は幅1100milで作っていたのですが、これだとブレッドボードには刺せるのですが、ジャンパーがさせないので意味は無く、900milで作り直しました。
ほとんど青mbedと同じサイズです。
回路図はこちら
青mbedとの違いは、interfaceICが無くなって(よって6pinのシリアルで書き込み)、ボタンがリセット以外に4つ、LEDが8つ、USBとEthernetのピンが無くなって、CAN(トランシーバーは内蔵)x2、シリアルx4、SPI、IIC、アナログ入力x6、GPIOx12というIOマシマシの構成になっています。
2016年5月28日土曜日
2016年5月27日金曜日
自作mbed用USB書き込み器
自作mbedを書き込むのに秋月のUSBシリアル変換ケーブルとユニバーサル基板で作った変換基板を通して書き込んでいたのですが、良く使うので基板から起こしてみました。
上の基板がFT231Xを使ったUSBシリアル変換基板で下がADuM1401を使ったアイソレーターです。事故が起きたときにPCが壊れないように電源を分離しています。
USBシリアル変換
アイソレーター
5ピン、6ピンにRTS、DTRをつなげているために書き込み時に自動でブートモードに入ります。
上の基板がFT231Xを使ったUSBシリアル変換基板で下がADuM1401を使ったアイソレーターです。事故が起きたときにPCが壊れないように電源を分離しています。
USBシリアル変換
アイソレーター
5ピン、6ピンにRTS、DTRをつなげているために書き込み時に自動でブートモードに入ります。
レッグコントローラーが完成
今回作っている6足歩行ロボットですが、この足には結構色々な機能が付いています。挙げると
前にあげた足の動作テストの動画では足の内側に緑色の基板が着いていたはずですが、それの実装が完了して動作テストが終わったのでここに載せておきます。
上の2ピンコネクタがファン、6ピンコネクタが足先のセンサ・LED、3ピンのコネクタはサーボモーターで4ピンが本体とのCAN通信です。何も刺さっていないコネクタは書き込み用です。
- サーボモーター(KRS4031)x3のコントロール
- ファンのコントロール
- 足先の荷重センサの読み取り
- フルカラーLEDの点灯
- 本体とのCAN通信
前にあげた足の動作テストの動画では足の内側に緑色の基板が着いていたはずですが、それの実装が完了して動作テストが終わったのでここに載せておきます。
上の2ピンコネクタがファン、6ピンコネクタが足先のセンサ・LED、3ピンのコネクタはサーボモーターで4ピンが本体とのCAN通信です。何も刺さっていないコネクタは書き込み用です。
2016年5月26日木曜日
pyserialのRTS、DTR
pythonから自作mbedにデータを送ろうとしたのですが、プログラムのダウンロード用のケーブルと共用しているためにえらい目にあいました。
ダウンロード用のケーブルは6ピンで
1:電源(12Vか5V)
2:GND
3:TxD
4:RxD
5:RTS(ISPモードセレクト:P2_10に接続)
6:DTR(Resetに接続)
となっているためにRTS、DTRが暴れると、通信時にリセットがかかりどうしようもありません。
pyserialのマニュアルだと初期設定では両方とも無効になっているので(rtscts==False、dsrdtr==False)問題ないと思ったのですが、どうもうまく行きません。結論から言うとこの
サンプルコード
ser = serial.Serial()
ser.port="/dev/ttyUSB0"
ser.boudrate=9600
ser.open()
ser.rtscts=False
ser.dsrdtr=False
ser.rts=False
ser.dtr=False
#ser.write("data") # 出力
ダウンロード用のケーブルは6ピンで
1:電源(12Vか5V)
2:GND
3:TxD
4:RxD
5:RTS(ISPモードセレクト:P2_10に接続)
6:DTR(Resetに接続)
となっているためにRTS、DTRが暴れると、通信時にリセットがかかりどうしようもありません。
pyserialのマニュアルだと初期設定では両方とも無効になっているので(rtscts==False、dsrdtr==False)問題ないと思ったのですが、どうもうまく行きません。結論から言うとこの
- 2つのパラメーターは少なくともrtsctsは初期設定でTrueになっています。
- open()時に無効に設定していても内部処理の都合なのか一旦有効になってからすぐに無効になります。
- ser.rts=FalseでrtsはHiに、ser.rts=TrueでrtsはLoになります(負論理)。
サンプルコード
ser = serial.Serial()
ser.port="/dev/ttyUSB0"
ser.boudrate=9600
ser.open()
ser.rtscts=False
ser.dsrdtr=False
ser.rts=False
ser.dtr=False
#ser.write("data") # 出力
2016年5月10日火曜日
USBシリアル変換と絶縁ユニット
FTDI231Xを使ったUSBシリアル変換基板を作りました。これでLPCマイコンの書き込みがコンパクトになりました。5V、GND、TXD、RXD、RTS、DTRを引き出しているので自動ブートが可能です。lpc21ispで書き込む場合、自動でブートモードに入るので書き込みボタンを押すだけで書き込めます。
ケーブルの途中にある謎の基板はADuM1403を使った絶縁回路です。フォトカプラでは10kHzがせいぜいですが、これなら1MHz程度の信号でもやすやすと伝達できます。この絶縁回路越しでも書き込みは可能です。
本来PCの電源は絶縁されていますが、なんとなく怖いのでつけました。
ケーブルの途中にある謎の基板はADuM1403を使った絶縁回路です。フォトカプラでは10kHzがせいぜいですが、これなら1MHz程度の信号でもやすやすと伝達できます。この絶縁回路越しでも書き込みは可能です。
本来PCの電源は絶縁されていますが、なんとなく怖いのでつけました。
2016年5月6日金曜日
ユニットレッグ動作テスト
3年前ぐらいに6足歩行ロボットを製作して実際に歩かせるところまでは出来たのですが、だいぶ雑に作ったために改良などもこれ以上は出来なくそのままお蔵入りの状態でした。
そこで今回は改良を施して汎用性の高い6足歩行ロボットを完成させていくつもりです。
電気系での問題点
サーボモーターはKRS4031を使っています。これはシリアル通信で目標角度を送るとそこに移動するというものなのですが、このまま使うと「ロボット的な」カクカクした動作になります。今回はマイコンから動きが滑らかな2次関数の形になるようにしています。いわゆる台形加速ってやつです。
そこで今回は改良を施して汎用性の高い6足歩行ロボットを完成させていくつもりです。
電気系での問題点
- 接触不良が多くまともに動かない
→今回は使う基板は全てプリント基板に起こして使用 - マイコンの開発に時間がかかる
→mbedとmbed rtosを使い開発速度の向上 - 通信がバイナリ形式でややこしく拡張性が低い
→シリアル通信ではSRScodeとして通信形式を決め通信の共通化を進める。またバス接続はCANを共通で使う。
- フレームの製作に時間がかかる
→外注することで高速化 - 途中での設計変更が多いためにフレームの作り直しが多い
→重量増加・内部スペースの減少と引き換えだが、ユニットごとに分けれるようにして接続部の寸法を決定。ユニットごとに開発を進める。
2016年5月4日水曜日
ドットマトリクス&オルゴールのテスト
DCardの表示部と音源部のテストが出来たので公開します。
表示部は横30x縦7のLEDのドットマトリクス。210個のLEDを手半田するのはつかれた。実装を注文したい。
Hello World!という文字が流れます。
続いて音源部、アンプはTPA2001D1、でスピーカーは表面実装でUM1515
まあオルゴールぐらいかなという感じの音、そんなにはよくないけど仕方ない。
このスピーカーが曲者でデータシートでは700Hz~しか鳴らなく、また共振周波数は20kHzと特性のグラフにはあるが、実際に使うと700Hz付近でも共鳴を起こす。しかも状況によっては1.1kHzぐらいでも起こす。もともとスピーカーではなくブザー用なのかで仕方が無いのかな。
表示部は横30x縦7のLEDのドットマトリクス。210個のLEDを手半田するのはつかれた。実装を注文したい。
Hello World!という文字が流れます。
まあオルゴールぐらいかなという感じの音、そんなにはよくないけど仕方ない。
登録:
投稿 (Atom)