マイコンプラス

    二足歩行ロボットの制御やセンサの使い方、ロボットキット、ロボットの大会などについて紹介します

    スポンサーサイト

    上記の広告は1ヶ月以上更新のないブログに表示されています。
    新しい記事を書く事で広告が消せます。
    [ --/--/-- --:-- ] スポンサー広告 | TB(-) | CM(-)

    [C++]1次元配列を3次元配列に整形する

     外部RAMなんかに書き込んでおいたデータを扱いやすくするために3次元配列の形にしたいことがありました.案外てこずったのでメモしておきます.
     3次元として持つための領域を動的に確保しているのでサイズが可変です.


    #include <iostream>
    using namespace std;

    int data[256]; //元となるデータ領域

    int main()
    {
    //データ領域への値の代入
    for(int i = 0; i < 256; ++i) {
    data[i] = i;
    }

    //3次元配列の大きさ
    char size_z = 3;
    char size_y = 4;
    char size_x = 5;

    //とりあえずポインタに元のデータ領域の先頭アドレスを代入
    int* p = data;

    //3次元配列arrayへの整形
    int*** array = new int**[size_z];
    for (int i = 0; i < size_z; ++i) {
    array[i] = new int*[size_y];
    for (int j = 0; j < size_y; ++j) {
    array[i][j] = p + size_x * j;
    }
    p += size_x * size_y;
    }

    //確認のため表示
    for (int i = 0; i < size_z; ++i) {
    for (int j = 0; j < size_y; ++j) {
    for (int k = 0; k < size_x; ++k) {
    cout << array[i][j][k] << endl;
    }
    }
    }

    //メモリの解放
        for (int i = 0; i < size_z; i++) {
    delete[] array[i];
    }
    delete[] array;

    }



    (sizeof int) * (1 + size_z)だけのメモリを消費します.
    [ 2012/11/16 01:15 ] C言語 | TB(0) | CM(0)

    中華CNC CNC3020導入記 設定編

    前回:中華CNC CNC3020導入記 購入編
     組み立て終わったので,動かしてみたいと思います.

    まず基板を見てみる


     とりあえず,一度見てみないと心配なので,コントロールBOXを開けてみました.

    sIMAG0151.jpg
     大きなトランスと,電源基板,ステッピングモータ制御基板が入ってました.

    sIMAG0152.jpg
     モータドライバは東芝 TB6560AHQでした.アルミの放熱板に固定されています.
     基板をよく見ると,

      LIMIT X Y Z
      GND PWM VCC
      PROBE


    などと書かれているピンがありました.リミットスイッチや,スピンドルの回転数の操作,切削Z軸センサの追加が可能なのかもしれません.

     コントロールBOX内で見つけた不具合なんですが,EMERGENCY STOPのスイッチに繋がる配線が抜けていたのでESTOPと書いてあるピンに差し直しました.
     それ以外はハンダ付けもきれいですし,問題ないようです.

    パラレルポートの増設


     コントロールボードはPCのD-sub25pinのパラレルポートに繋がなければなりません.しかし,そんなもの手持ちのPCに付いてないので,PCI Express接続のパラレルポート変換基板を用いました.
     変換基板はこれに似たものをヤフオクで買いました.「PCI-Express パラレル」とヤフオクで検索して出品されていればそれですhttp://auctions.search.yahoo.co.jp/search?p=PCIExpress+%E3%83%91%E3%83%A9%E3%83%AC%E3%83%AB&auccat=&aq=-1&oq=&ei=UTF-8&tab_ex=commerce&slider=0.Ubuntuの入ったPCで使うので,Linux対応と書いてあるのがポイントでした.

    OSについて


     CNC制御用のPCのOSにはUbuntu10.04を使います.
     この理由なんですが,
    ・手持ちのPCでPCIExpressポートが空いてるのがたまたまUbuntuの入ってるPCだった.
    ・Windowsで使えるCNC制御ソフトのMach3は32bitOSでないと使えなくて,しかもXP推奨だが,手持ちのWindowsは64bit版のWindows7しかない→Linuxしかない
    ・せっかく激安CNCなんだからフリーのソフトにこだわりたい.
    ・Ubuntuで使えるCNC制御ソフトのLinuxCNCがUbuntu10.04じゃないとだめだった.
    という感じです.
     Ubuntu10.04をインストールしていなければ,ここから日本語Remix版のISOを入手して,インストールしてください.
     さて,UbuntuをインストールしたPCの,PCI(Express)スロットに変換ボードを挿したら,端末より

    $ lspci -v


    と入力してパラレルポートのアドレスを調べます.私の場合は1000と1008の二つ出てきたんですが,どちらが使えるのかやってみないとわかりません.
     後で使うのでアドレスをメモしておきます.

    LinuxCNCのインストール


     LinuxCNCをlinuxcnc.org/からダウンロードします.
    HOME>Download>Other Installation Options と進んでいって,
    If you prefer to start with the distributed Ubuntu CD, you can install LinuxCNC yourself with these instructions:
    と書いてあるところから,「lucid-install」をクリックしてダウンロードします.lucidというのはUbuntu10.04の別名です.
     保存フォルダに移動して端末より以下のように入力してインストールします.

    $ chmod a+x linuxcnc-install.sh
    $ sudo ./linuxcnc-install.sh



     最終確認に「はい」と答えるとインストールされ,再起動すれば「アプリケーション」メニューに「CNC」が追加されているはずです.

    ブートローダの設定


     LinuxCNCをインストールし,再起動すると,リアルタイムカーネルも追加されます.OS起動時にこのRTカーネルを選択しないと,LinuxCNCは動作しません(エラーダイアログが出ます).
     起動時のカーネルの設定のため,まず,StartUp-Managerで設定します.StartUp-Managerはシステム>システム管理>Synapticパッケージマネージャーからインストールできます.インストールしたら,システム>システム管理>StartUp-Managerを立ち上げ,カーネル選択の待ち時間と,デフォルトのカーネルを設定します.
     次に端末で

    $ sudo gedit ../../etc/default/grub


    と入力し,ブートローダーの設定ファイルに変更を加えます.変更は
    GRUB_HIDDEN_TIMEOUT=0
    GRUB_HIDDEN_TIMEOUT_QUIET=true

    と書いてあるところを,
    #GRUB_HIDDEN_TIMEOUT=0
    GRUB_HIDDEN_TIMEOUT_QUIET=false

    に修正します.
     以上の設定を終え,OSを再起動すると,カーネル選択画面が出てくるようになります.kernel 2.6.31-11-rtaiを選択してOSを起動します.

    続き:中華CNC CNC3020導入記 設定編2
    [ 2012/11/14 02:14 ] CNC | TB(1) | CM(2)

    中華CNC CNC3020導入記 購入編

    CNCが欲しい!


     最近作りたいものが増える一方で,実際に工作する時間が無くなってきて,CNCが欲しいなぁと思うようになってきました.ろぼとまロボスポットヴィストンアミエなどで加工サービスがありますが,板厚に制限があったりして案外作れるものが少なく感じます.加工サービスにも一回1万円程度かかりますので,それならばいっそCNCを買ってしまおうと決断しました.

    何を買うか


     現在ホビー向けに小型CNCがいくつか売られています.

    ローランド: MODELAシリーズ
    オリジナルマインド: KitMillシリーズ
    秘密基地: 黒い奴
    中国製(不明): Sable-2015
    中国製(不明): CNC3020,3040,6040
    Edward氏: Shapeoko
    etc…


     今回は値段の安さや,人柱的チャレンジ精神から,中華製のCNC~シリーズの中から購入しようと決めました.
     この中華CNCには3040Tとか3040Nとか,命名規則のほどはよく分かりませんが,種類がいろいろあります.3040とかいう数字はX,Yの加工範囲を表しています.3020はDCモータ,台形ネジ駆動です.3040,6040にはDCモータ,台形ネジ駆動のものと,ACモータ,ボールネジ駆動のものがあって,後者のほうがお値段が高いです.またACモータのものにはインバータがセットになっていて,大抵AC200Vが必要になります.
     今回はサイズや値段を考えて,2012年新モデルのCNC3020T-DJを購入しました.

    中華CNC3020T-DJ


     CNC3020T-DJのスペックは以下の通りです.

    CNC3020T-DJスペック

    X,Y,Z 加工範囲: 300×200×45mm
    最大材料高さ: ≤60mm
    外形n: 520×400×370mm
    テーブルサイズ: 440×240mm
    構造材: 6061/6063 アルミニウム合金
    ステッピングモータ: 2相(バイポーラ型) 57/1.8A
    ドライブユニット: 1204 2条台形ネジ
    スライドユニット: Chromeplate shaft
    最大速度: 4000mm/min
    切削速度: 300-3000mm/min
    繰り返し位置精度: 0.05mm
    主軸モータ: 230W DC スピンドルモータ
    主軸速度: 11000RPM/MIN
    ツールホルダ: ER11/3.175mm
    インターフェース:パラレルポート
    利用可能なソフト:Mach3/Emc2,(Type3,Wentai, ArtCAM)
    コマンド: G code/.nc/.ncc/.tab/.txt
    重量: 21kg(梱包含む)


     AliExpressに出品してる会社のうちここ
    http://www.aliexpress.com/item/110V-230W-CNC-3020T-DJ-upgrade-from-3020T-3020-Router-Engraver-Milling-Drilling-Machine/434982856.html
    から購入しました.購入時最安でした.

     購入時は本体535.00ドル,送料153.97ドルでした. AliExpressからの請求は,クレジットカードの明細を見ると,54677円でした.安い!また,荷物到着から1週間後くらいにFedEXから封筒が届き,消費税/付加価値税 500円,関税・消費税特別手数料 500円の計1000円を請求されました.コンビニや銀行で払えます.

     購入日は9月14日でしたが,発送は9月26日だったようです.発送から到着までの詳細は以下のようでした.
    aliex.png

     なかなか発送の連絡がなかったので問い合わせしようかなと思っていたころに届きました.結局最後まで連絡はなかったです.到着の1日前に日本のFedEXから電話があり,関税のためにフルネームが要るのだが,書いていないので教えて欲しいとのことでした.名字が無く,名前だけ書かれていたようです.あと中身についても聞かれたので工作機械と答えました.

     翌日,FedEXの配達員が荷物を持ってきました.
    結構しっかり梱包してあります.
    IMAG0071.jpg

    本体
    IMAG0076.jpg

    コントロールBOX
    IMAG0074.jpg

    ステッピングモータ
    IMAG0078.jpg

     細かい傷は何カ所かありましたが,サビなどはありませんでした.でも結構埃が付いていたので,最初に拭きました.ステッピングモータ側の取り付け穴がちょっときつくて,どのモータもネジ4本のうち1本が入りませんでした.2種類のカップリングがありますが,切れ目の少ないものをZ軸に使うそうです.

    IMAG0162.jpg

    コントロールBOX
    IMAG0160.jpg
     主電源スイッチと,スピンドルのスイッチ,回転速度,緊急停止ボタンがあります.

    裏側
    IMAG0158.jpg
    X,Y,Z軸,スピンドルへとケーブルが繋がっています.PCとはDsub25pinのパラレルケーブルと繋げます.

     インターフェイスは結構洗練されてるなぁと感じました.

    続き:中華CNC CNC3020導入記 設定編
    [ 2012/10/09 00:14 ] CNC | TB(0) | CM(6)


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