PIC-USB の改善

以前作成したPIC-CDCのプログラムを修正するたびにUSBの認識が正常に行われたり異常になったりと不安定な要素を持っていたのだけれどもこれの原因がようやく判明。おそらくこれで解決したはずだ。

はじめは変数の保存されるアドレスが原因で、バンク切り換えの問題なのかと思っていたがどうやら違うらしく、不安定ながらリセット押しながらUSBつなげて認識させるとかムリムリ動作させていた。

で、秋月電子通商さんとこのライタープログラムを見ていたら、拡張命令が有効になっていることに気がついた。

確かオフにしてたはずなんだがなと思いつつコンフィグレーションビットの行を見ると

#pragma DATA    _CONFIG4L, _DEBUG_OFF_4L & _XINST_ON_4L & _LVP_OFF_4L & _STVREN_ON_4L

となっていた。オンになってるじゃないですか。というわけで

#pragma DATA    _CONFIG4L, _DEBUG_OFF_4L & _XINST_OFF_4L & _LVP_OFF_4L & _STVREN_ON_4L

としてオフにして従来モードへ。
再度ビルドを行い書き込んだところこれまでの不安定が嘘のように収まった。

今のところ再現しなくなったので拡張命令とインデックスアドレスの機能が悪さしていたのだろうと思われます。
こういうこともあるのね。

 

PICでステッピングモーター駆動

ステッピングモーターを使う案件が来た。
ステッピングモーターは6本線が普通だと思っていたら、今回使うサンプルを見たら4本線だった。あれ?こんなのあるんだと初めて知った。
どうやって動かすの?と調べたらステッピングモーターにはユニポーラ駆動とバイポーラ駆動とか他にも2相じゃなくて3相、5相とかあるんですね。ふむむ。

とりあえず回路を作ろうと思ったが簡単な回路だとトランジスタ8個使うことになる…。複雑になりそうだ。ということでドライバICを使うことにした。
秋月電子通商さんで TA7774FG を発見。これだと入力端子に交互にパルスを入れてやれば回せるのでお手軽だなと選択し購入。

あとはモーターの制御。最終的にパソコンで制御したいらしいので、間に PIC を入れて制御しやすくしておいた。使ったのはPIC12F675。8本足のやつです。

ざっくりとPIC は GP0 ~ GP2 を出力、GP3 ~ GP5 を入力に設定。
ADC は未使用。内部発振。GP5 の IOポート割り込み有り。で設定。
動作は GP3 の状態を反転して GP2 へ。
GPIO の変化を検知して割り込み実行。
GP5 に入る負理論パルスを正理論に変換してドライバICへ伝達。
このとき GP4 の状態によりA,B チャネルのパルスの流れを反転。
という感じの仕様で作りました。
今回、割り込みを自分で組んだものでは初めて使ってみたけど意外と便利。使えるときは使っていこう。

プログラムは楽勝だ~とさくっと作成したら、いきなり2カ所ほどポカミスをやらかしました。
GP3 は入力のみだということを忘れて出力設定にしたら動かなかったという単純ミス。
プルアップの設定は wpu レジスタだけじゃなくて option レジスタの NOT_GPPU ビットを 0 にしないと有効にならないということ。
なんとまぁ。

そんなこんなで、間違いはあったけどPICは意図した動作をきちんとしてる。のだが、モーターを回すと回っているけどカクカク…?。
原因調査。
まずはモーターメーカーの制御ボードで実験。めっちゃスムーズに回る。原因はモーターではない。
次はドライバIC の特性なのか。ということで、発信器があったら良かったけどないので、PIC でパルス発生のプログラム書いて送信してみた。これも評価ボードほどではないけどスムーズに回る。
結論。パソコンが悪い。VEEでパソコンから制御パルス送っているのだけれどもどうやらこれがくせ者らしい。おそらく、VEE のデバッグモードだと割り込みやらなんやらでウェイトがきちんと動作しないようでこれが原因っぽい。
はじめは自作PIC-CDCのデジタルIOでカクカク動作だったのでメーカーもののDIOだと大丈夫かなと思ったがやはりダメっぽい。ランタイムにして動作させればもしかしたらうまく動くかもしれないが、パソコン制御は別担当なので、また後日その辺試してもらおう。
パルスも PIC 制御しなきゃダメなのかな。それの方が面白いけど。ちょっと期待。

一応、ソースコード。続きを読む以降に貼っておきました。
SourceBoost の BoostC 使ってます。どれもまあ似たようなものかと。

続きを読む

AE-PICPGM2 のUSBシリアル改造

入手しました。
先日秋月電子通商の web カタログで見つけた小型USB-RS232C変換基板の AE-FT234X。ホントに小さい。
wpid-dsc_0418.jpg

これを秋月電子通商で売ってる AE-PICPGM2 に搭載してしまおうという改造計画を実行しました。
wpid-dsc_0415.jpg

まあ、改造と言ってもコネクタ外して基板をのせるだけなんですが…。
まずはシリアルコネクタを外します。基板に切り込みが入ってるのは自作 RS232C ケーブルのD-SUBコネクタカバーが干渉したため削ってあるだけで今回の改造とは関係ないです。
wpid-dsc_0416.jpg
AE-FT234X で使うのは4つの端子のうち RxD,TxD,GND の3端子を使い、+5V はフリーにしてあります。USB バスパワーで給電も考えたのですが安全を見てやめておきました。
接続は RS232C の2,3,4番端子を使いました。マジックでR,Tと書いてある端子です。この並びだと FT234X の基板を裏返して接続したらちょうど良い感じになるので。あとは、RS232C の 4,5番をブリッジして 4番を GND にする。
次にピンヘッダを立てるわけですが、この並びだと FT234X の +5V がちょうど RS232C の GND になってしまうのでここはつなげず 2,3,4 番にピンヘッダをさして接続します。ピンヘッダをカットするのがイヤだったので1,2,3,4 端子にピンヘッダを付けてます。パターンの改造はこんな感じです。
wpid-dsc_0427.jpg

RS232C のインターフェイスデバイス ADM3202 がついていたのですがこれは外して代わりにジャンパを入れてます。外さないとうまく動きませんでした。
写真は実験の為ホチキスの針でジャンパしてますが裏面を半田付けした方が良いと思います。
※ファームウェアのパラメータ設定で ADM3202 を付けていても動いたので最終的に元に戻しました。

改造は以上です。たいしたことはしてませんが…。完成基板はこんな感じ。
wpid-dsc_0419.jpg
横から見るとこんな感じ。
wpid-dsc_0420.jpg

FT234X はピンヘッダだけで固定されているので、パテか樹脂系の接着剤のようなものでコネクタあたりを固定した方が安心だと思います。

今回2台改造しました。
一応通信テストは成功でした。しかし個体差があるようで1台は通信できるのですがもう一台は通信できずという状態に。
症状は、FT234X を交換するとどちらも通信できる。但しメインIC AE-PGM877 を交換してもダメな方はどちらを付けてもダメだった。そうこうしているうちにどちらも通信できる状態に。なんか不思議な状態になってます。
違いといえば不安定な方は TxD が 3.2V 前後、安定してる方は 3.3V なので TxD の電圧が関係しているのではと思われますが FT234X を交換してどちらも動作。メインICを交換して動作しないというところからそれだけではないのかもしれません。不明です。

まあ、どちらにせよこれで 改良 AE-PICPGM2 の完成です。

で、これ書きながら、なぜ動作不安定なの? ADM3202 を外さないとうまく動かないの?ということをいろいろ考えながら調べてみると、この IC って NOT なんですね。
ということは、FT234X のファームウェアで反転動作すれば問題ないのではと考えて試してみました。

ファームウェアのパラメータ設定は FTDI 社のファーム設定ソフトを使って修正することができます。
[Hardware Specific] => [Invert RS232 Signals] の Invert TXD , Invert RXD にチェックを入れて書き込みを行います。そのあと、一度USBを抜き差ししたら設定が反映されて動作が反転が有効になります。
外した ADM3202 を元に戻して実験してみるとうまく動きました。実際こちらの方が安定するんじゃないかと思います。
スクリーンショット 2014-12-12 11.53.53

やっぱり PICライター Aki-V4 が使えない…

古いパソコンで書き込みしないとダメかなと古い XP パソコンに秋月電子通商のライターソフトをインストールしようとしたら、インストーラーを更新云々でインストールが進まない orz 何でやねん。

仕方ないから USB-232C を入手しないとダメかなと思って秋月電子通商のサイトを眺めていたら 「超小型USBシリアル変換モジュール」なるものを発見。
FTDI社のFT234Xを使っているようで基板サイズが15x11mm。一応 win8.1 にも対応しているようだ。

こ、これは。おもしろいもの発見したぞ。それに、このサイズだと今のRS232Cコネクタを取っ払ってそこに無理矢理くっつけてしまえばわざわざ USB-232C 接続しなくても、すっきり USB 接続のライターとして扱えるんじゃないかということを考えついた。だってusb-232c + rs232c の2本使うわけでケーブル長すぎるんだもん。
ということでこれ買ってみよう。改造結果はまた後日報告します。

他にも物色。お、ラズベリーパイも扱いだしたんだ。リビジョン B+ か。最新版だね。でも値段はRSの方が安いみたい。
ほしいなぁ。というかラズパイの他にも  BeagleBone Black とか intel edison とか言う超小型コンピューターなんてのが出てるんだ。おもしろそう。これ使ってなんかやってみたい。
今度なんか企画するかな。

ということで、今日はいろいろ調査な日でした。

 

PIC 焼き焼きしようと思ったが……

今日の作業日記~みたいなの。
久々に Microchip PIC を使っての制作。一応プログラム作ったので PIC に焼こうかと思ったのだけど焼けなかった。
3つの入力に対して出力パターンを変えつつブザーを鳴らすみたいなの。ちょっと依頼されたのでちょちょいと組んでみた。というか組んでみようとした。

プログラム自体はとりあえず完成。あとはご希望に応えつつ出力パターン変更ぐらいの調整で。ここまでは良かった。けど、この次でこけた。

ちなみに開発環境は SourceBoost の BoostC で開発して、秋月電子通商の PIC ライター の PICプログラマー V4 を使っています。
で、このライターとパソコンの接続はRS232Cを使うわけで、これまで RS232C も秋月電子通商の USB-232C を使っていました。

この USB-232C に使用しているチップが Prolific PL2303 と言うものらしくて windows 8 以降サポート中止になっているので使えなかったorz。そういえば、windows8 では何とか動いていたような記憶があるのだけど 8.1 にしてからは使えなかったような…。今思い出したよ。
結局何をしてもびっくり三角マークは消せなかった。とりあえず今は古いパソコン使うしかなさそうだ。

まあ、今後は win8 対応の USB-232C 秋月電子通商で発売開始してたけどいっそのこと PIC ライターも買い換えた方が良いかも。PICkit2互換のライター出てるからぼちぼち乗り換えしないとダメかも。対応していないPIC出てきているし。検討しよっと。