スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PSoC5LPとTFT液晶パネルを使ったパルスカウンタ

作ってyoutube上にはUPしてあったけれども、多分ブログ上には貼り付けてなかった?と思ったので貼り付けてみます。





基本的には、以前の記事にも貼り付けてあった下の動画の描画ルーチン違い。



PSoC5LPのUDB(プログラマブルロジック部分)でアップダウンカウンタを3つ作りマイコン部分で、アップダウンカウンタの数値を読取り描画しています。

カウンタ値リセット用のタッチパネル液晶コントローラーからの「タッチがある」信号のマイコンへの入力に割り込み処理を使っているだけで、カウンタの計数その物はUDBで生成されたロジック回路にて読み取っています。

上手くプログラムが書ければ、3軸分のパルス入力をマイコンの割り込み処理で作動させることもできるのかもしれませんが、そのような技能は無いので^^; カウンタ部分はマイコンの処理より速いであろうロジック部分での処理としました。

通常のマイコンのペリフェラル内に3軸分の32bitアップダウンカウンタとして使えるものが有ればソレを利用して、、となるのですが、サラッと探してみた所見当たらないご様子。

かといって、CPLDやFPGAで3軸分の32bitアップダウンカウンタと、アップダウンカウンタの操作と、データ通信用のインターフェースを作り、マイコンで読取り、、とゆう事も出来なくはないですが非常に手間なので、プログラマブルなロジック部分とマイコン部分を持つPSoCが非常に便利です。

PSoC5LP、PSoCシリーズ自体、このプログラマブルなロジックや、アナログ部分が有り、この部分の設定や書き込みが必要な為、メーカーご謹製の無償で使用できるPSoC用のIDEが用意されていて、開発を始めるのは開発環境から整えなければならないMCUに比べかなり楽なんではないでしょうか。

また、今回UDB部分に載せたカウンタ、その他機能も、一般的なものは最初からUDB作成用のコンポーネントとゆうブロックになっており、IDE上で既成なコンポーネントの設定はGUIを使用して設定出来ます。
更に、UDB作成用回路図上に置かれたコンポーネントを回路図を作成してしまい、コンパイルすると設定したようにマイコン側から操作出来るAPI(アプリケーションプログラムインターフェース)が生成され、生成された関数によってマイコン側から生成したハードウエアを操作できます。

LEDのチカチカとか、マイコン部分とGPIOを使って、ロジック回路を使いマイコンを使用せずに、また、組み合わせてなどなど、同じ作動をする物でも幾通りの方法で行うことが出来ます。

PSoC5LP、4つ有るI/OバンクごとにI/Oの電圧を変更出来るので(例えば、バンク0と1は5Vロジック、2と3は3.3Vロジックなど)電源電圧、I/O電圧の異なったセンサ等のデバイスでも、一つのMCUからコントロールすることも可能です。
ただ、秋月電子で販売されているPSoC 5LP Prototyping Kitなどは、I/Oバンク毎の電源ピンが一つにまとめられているので単一のI/O電圧でしか使用できません。書き込み器を切り離さないで使うと5VのI/Oとなります。

I/Oバンクごとの電圧設定出来るのですが、残念なことに安価なボードではI/O電源電圧の変更できる物が見当たらないので、動画上でも使用している自作のボードを使用しています。

PSoC5LPの書き込み自体はPSoC5LPPrototypingKitに付属するKitProgを使用しての書き込みが安価です。

PSoC5LP開発用の、Cypressから提供されているPSoCクリエーターは基本GCC_ARMを使用したものなので、C言語で書かれたルーチンなど、ハードウエアを操作するものでなければ、割と流用等がしやすく、また、PSoC5LP自体に載っているマイコン部分は他デバイスメーカーも採用しているCortexM3なのでCortexM3を搭載したマイコンとなんら変わりません。


異なるI/O電源電圧に設定できて、プログラマブルなロジック部分を持つPSoC5LP、NCコントローラーからのトリガ等で作動する回路等々に使用するのにとても便利だと思われます。


~を作る、とゆうような作成を目的としてこのようなデバイスを使うには扱いやすく良いデバイスだと思います。


スポンサーサイト

テーマ : プログラミング
ジャンル : コンピュータ

ラズパイ3の発表

RaspberryPi3が販売開始(日本ではもうチョット先の模様)されたようです。

RaspberryPi公式より
https://www.raspberrypi.org/blog/raspberry-pi-3-on-sale/

MCUがより高速になったのと、Wifiなどの無線通信が可能になったのが大きな変更、、ですかね。

NCコントローラーとしてRaspberryPi2の場合、ステップシグナルは外部のMCUなりを使わないと、、でしたが、3ではどうなるんでしょうか?
Beagleboneの場合、BeagleboardのプロジェクトとしてMachinekit LinuxCNCj派生が継続的に開発されているようですが、Piの場合、そのようなプロジェクト的に動いているッて感じでは無いので期待薄なのかも。。

日本ではRSコンポーネンツが取り扱うようです。近日発売になってますね。
http://jp.rs-online.com/web/generalDisplay.html?id=raspberrypi

http://jp.rs-online.com/web/p/products/8968660/


どちらにしろ、BeagleboardのようにCPUと独立したロジックで動くPRUや、xilinxのZynqのようにパルス生成器が作れるようなFPGA部が無いので、デバイスドライバ書いて、外部パルスジェネレータを駆動する事となるのかな。

RaspberryPi自体GPUを持っているのでBeagleboneBlackよりも、GUIが綺麗で速いんですけどね。。

テーマ : 自作・改造
ジャンル : コンピュータ

BeagleboneGreen秋月で取り扱い開始!




秋月でbeaglebonegreen取り扱いが始まりました。

多分BeagleboneBlackとたいして変わらないのでBBBLinuxCNCのインストール、使用は可能なはず。

BeagleboneBlackは相変わらず、品切れ状態ですがぁ。。

Greenは豊富に在庫してるのかしらん??


数日前にseeeedに発注しちゃったよ、、Orz..

テーマ : 自作・改造
ジャンル : コンピュータ

BeagleboneBlackの電源の切り方。。

ボード単体でLinuxCNCが動くBeagleBoneBlackですが、ちゃんとした電源の切り方がよくわからなかったのでWeb上を徘徊。

ありました。

How to Shut Down and Reboot Your BeagleBone

電源はUSBコネクタを繋ぐことで入りますが、電源の切り方が、S3のスイッチを長押し、、と、なんかスコっと電源を切ってるイメージだったので。。


具体的には

sudo shutdown -h now

これでコンソールからのコマンドで切ることができます。

で、リブートは

sudo reboot


忘れそうなので、メモとして。。


ところで、BeagleboneBlackの姉妹製品?のBeagleBoneGreenSeeedStudioの方で販売が始まっているようです。

BlackとGreenの大きな違いはHDMIコントローラーの削除。スタンドアローン作動時には必要と思えるHDMI、多分リモートデスクトップ環境では、必要ないと判断されたのかもしれません。その分価格はちょっとお安くなっている模様。。

OSからNCコントローラーまで、1ボードで対応できるので、かなりお買い得なのでは?

基本的なところはPCでのLinuxCNCと違う所はありませんが、I/O周りはリアルタイム性を担保するためにBeagleboneblackに使われているMCU内の独立したサブプロセッサであるPRUを使用するので、LinuxCNC設定ファイルであるHALファイル内の接続設定するデバイス名がちょっと特徴のあるものに変わります。

単純に、PCと違い、MCU自体に直接UARTやSPI,I2Cなどのペリフェラルが内蔵されていることもあり、PCからI/Oを引き出す事を考えると、余計な手間が少なく済むのでは?と思います。
更にオンボードでADCが載っているのでLinuxCNCに直接ADCの値を読み込むことが出来たり、、PCをつかってやろうとするとどうしてもPCI PCI-E接続のFPGAカードが必要だったことが、設定は手間かもですが、1ボードで出来てしまいます。

また、PC側から見ると、USB接続で、リモートデスクトップな環境での操作。USBCNCも良いとは思うのですが、NCコントローラーそのものをリモートデスクトップで使うBeagleBoneBlack on LinuxCNC な環境も操作を行うPCに負荷を掛けずに使用出来るって事で良いのでは??と思います。

多分ホビー用途には十分過ぎる機能でしょう。。

テーマ : 自作・改造
ジャンル : コンピュータ

PSoCLP5でカラーグラフィックLCDパネルを表示してみる。(実践編2 16bitインターフェース)

前回に引き続きPSoC5LPでからグラフィックLCDパネルを表示してみるの2です。

今回は16bitインターフェースです。
ソフトウエア的には、8bitインターフェースとほとんど変わりません。ハードウエア部分の変更とゆうか改造が主な作業となります。
また、前回はLCDパネル側の電源の3.3VにPSoC側の電圧を合わせましたが、今回は5V駆動のPSoCにLCDパネル側を合わせる形となります。

まず、★特売品★2.4インチ液晶 with 基板 [L024AC-2P]には8bit分の信号線しか引き出されてません。
なので、0.26mm程度のUEWを使って基板上から8本のバスを引き出します。
引き出す位置はTFT液晶モジュール(2.4/240x320/TP) [CP2401T-C]LCDパネル自体のデータシートの5ページ目のピン番号と信号の表を参考に引き出します。

IMG_2326.jpg

画像の②の所です。フレキシブル基板を取り付けても、基板上のパッド、画像上で下側に向けて開いているところに取り付け引き出します。この基板には都合よく両面ハンダ付け出来るスルーホールが開いているので利用して、ピンソケットやピンヘッダを使って、下の基板に信号を繋ぎます。
また、8bitモード、16bitモードを選択している抵抗、を取り除き、R1R2の液晶パネル側(画像では上側)のフレキシブル基板の端子上①から、1本線を引き出します。この基板では、③の位置にあるジャンパピンとジャンパを使ってバス数のモードを変更出来るようにしてあります。この端子がVCC(電源電圧)で、8bitバスモード、GNDで16bitバスモードです。
取り付いていた抵抗の抵抗値を測った所、0Ω抵抗でした。。

パネル保持部分が金物でできているので、引き出した線のハンダ付けしてある所には、カプトンテープで絶縁としました。

パネル裏側から引き出した8本のバスラインとちゃんと引き出されてる8本のバスライン、リセット信号を含む5本の制御線をロジックICのバスバッファ、AHC541にてPSoC側の5Vの信号を3.3Vの信号に変換しました。
具体的にはAHC541の電源電圧に3.3V供給します。空きの入出力が3本ずつ出てくるので、使わない入出力の入力側をLowへ落としておきます。

はじめから基板上に有る8本のバスラインは16bitのバスラインの上位bitとなります。MSB
液晶パネル裏側から引き出した8本のバスラインは、16bitのバスラインの下位bitとなります。LSB



前回の記事でも書きましたが、ILI9325は双方向の通信が可能です。余裕があれば双方向のバストランスレータを使ってもよいでしょう。
IMG_2327.jpg

ロジックICとLCDパネル駆動用の3.3Vを作り出す為にLDOが載ってますね。PSoC5LP基板のVDDから5Vを引っ張ってきてます。
また、ロジックIC電源のピンに近いところにパスコンもお忘れなく。。

LDOを取り付け、信号電圧変換用のICを取り付け、電源配線をしバス配線をすれば終わりです。



あとはPSoC5LP 側。PSoCクリエーターでの作業です。

P008.jpg

トップデザインはGraphicLCD16-bitParallelInterfaceMacroを使用します。16bitとゆうだけで、設定自体は8bitのものと変わりません。

また、PSoC クリエーター上の配線自体も上位8bitか下位8bitかを間違えないように配線します。
もし、間違えて配線した場合、PSoCなら、物理的な配線を変えず、PSoCクリエーターを使って内部配線のつなぎ先を変更することによって、対処することも可能です。
ただ、一部、ハードウエアの専用回路として実装している場合、そのピンを使わなければならない、とゆう場合もあるので専用回路として搭載されてる機能を使う場合は気をつけたほうが良いかもしれません。

これであとはmain.cだけとなりました。

プログラムの変更は、プログラムからGraphicLCDインターフェースへデータを渡す関数を下記のように変更します。


//*************************************************************************************
void TFT_WriteCMD(uint16_t cmd)
{ GraphicLCDIntf_1_Write16(0,cmd);}
//*************************************************************************************
void TFT_WriteData(uint16_t Data)
{ GraphicLCDIntf_1_Write16(1,Data) ;}
//*************************************************************************************
void void ILI9325_Write(uint16 command,uint16 data)
{
GraphicLCDIntf_1_Write16(0,command);
GraphicLCDIntf_1_Write16(1,data);
}





PSoC5LPプロトタイピングキットを使ってカラーグラフィックLCDパネルの駆動をチョコっと解説してみたわけですが、PSoC3,5向けにえemWinとゆうグラフィックライブラリが提供されていますので、プロジェクトに組み込む段階での手続きがちょっと難解な記述になってはいるものの、タッチパネル対応だったりするので、本格的にグラフィック液晶を使うのであればソレを利用するのも手だと思います。

また、PSoCに限らず、駆動速度の速いSTM32などは当初から盛んにカラーグラフィック液晶の表示のチュートリアル等海外Web上では、かなりの量があります。

また、カラーLCDへの描画指示は別MCUで行い、そのMCUへデータを流して数値を表示するなどなど、要求する性能によって色々と手段があると思います。

たまたまebayで安値で売られているILI9341が乗ったSPI通信な液晶パネルが期待はずれの描画速度だった(ゆっくりした表示なら使用すI/Oピンを減らすのに有効)ので、速く描画出来る16bitバスインターフェースなILI9325Cを使用しましたが、普通に使う分には描画速度が必要なのかどうかは??なので、要求する機能を満足させる、とゆうことの方が重要だと思います。



テーマ : 自作・改造
ジャンル : コンピュータ

ライセンス
アクセスカウンター
プロフィール

あきらひとし。

Author:あきらひとし。
木工用CNCルーターフレームと、ステッピングモータードライバを作ってみました。
たぶん記事は一般的な人には殆ど必要のない事ばかりなの、かも。

モーターは回るだけでも楽しい。制御(速度、トルク、位置)できるともっと楽しい!

メールフォーム

名前:
メール:
件名:
本文:

リンク
最新記事
カテゴリ
スポンサードリンク
スポンサードリンク 
スポンサードリンク
オンラインカウンター
現在の閲覧者数:
検索フォーム
RSSリンクの表示
最新トラックバック
最新コメント
月別アーカイブ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。