質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

Q&A

4回答

396閲覧

C言語に関するご質問です。

Snowflake

総合スコア12

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Arduino

Arduinoは、AVRマイコン、単純なI/O(入出力)ポートを備えた基板、C言語を元としたArduinoのプログラム言語と、それを実装した統合開発環境から構成されたシステムです。

0グッド

2クリップ

投稿2019/06/06 23:56

編集2019/06/07 23:35

ご質問バイポーラ型のステッピングモータをアルディーノとL6470というモータドライバで動かすための配線とプログラムが知りたいですが、もしお分かりになるようであれば教えていただけないでしょうか。プログラムは複雑なものでなくてよく、正転、逆転だけで良いです。

追記
早速レスを頂いた方、ありがとうございます。基礎知識もない初心者で、仕事上どうしても必要になりこちらでご質問させていただきましたが、解決のために他にどんな情報が必要かもわかっておりません。もしそのあたりも含めてアドバイスいただけると非常に有難いです。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

1T2R3M4

2019/06/06 23:58

ボールドテキストバイポーラ型とは。
Snowflake

2019/06/07 00:01

失礼致しました。ボールドテキストは誤記でしたので削除しました。
y_waiwai

2019/06/07 00:02

タグがC#になってます。修正しましょう
k.matsuda

2019/06/07 00:46

一応、プログラムに関することの質問サイトなので 配線などは管轄外だと思いますが・・・。 電源については、モーターの仕様にもよるかもしれませんが、別途モーター用の電源も必要かと思います。 配線図はないんですか?
k.matsuda

2019/06/07 01:08

あと、タグは「C」と入力すると候補が出てくると思いますよ。
m.ts10806

2019/06/07 01:30

>仕事上どうしても必要になり 仕事で必要なことを質問サイトで片づけるのは仕事のやり方しては疑問です。 どうしてもというのでしたら専門の業者や外注するのが確実でしょう。 あなたがやるべきことは仕事の完遂であって、実作業をすることではないのでは。
Snowflake

2019/06/09 13:37

K.matsuda 様 ご回答ありがとうございます。 買ったコンバーターが壊れてることが確認できたため、電源を取り替えてやり直します。それでダメなら配線図、準備出来次第投稿させていただく予定です。 よろしくお願いします。
guest

回答4

0

公式サイトらしきところはありましたけど、ソースのサンプルが載っているかは不明です。

投稿2019/06/07 01:17

stdio

総合スコア3307

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Snowflake

2019/06/07 23:34

Stdioさま ご回答、ありがとうございます。 参考にさせていただきます。
guest

0

2年前にこのHPを参考に動作できました。
L6470をArduinoで簡単に動かすスケッチ

色々注意点はありますが、希望の範囲はカバーできると思います。(ステッピングモーターの特性で小型のモーターなら簡単。大きいものはL6480で同様に動かせます)

2019年6月12日追加

まず参考ページのL6470をArduinoで簡単に動かすスケッチ
からサンプルのスケッチをダウンロード。解凍する。
イメージ説明

これの’L6470_SPI_stepMoter_sketch'をダブルクリック。
イメージ説明

ここで重要なのはスケッチの上を見るとタブが2つに(ここポイント)
これをまずコンパイルされてください。

投稿2019/06/10 01:13

編集2019/06/12 04:26
MasahikoHirata

総合スコア3747

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Snowflake

2019/06/11 11:41

MasahiroHirata様 アドバイスありがとうございます。こちらのサイトを参考にやってみたらエラーが出てしまいコンパイルできません。。 このスレッドに長いプログラムを載せてしまい恐縮なのですが、下記のプログラムがエラーになってしまいます。おそらく基本的なところでつまづいているのだろうなと思うのですが、もし何かお気づきのことがあったら教えて頂けないでしょうか。よろしくお願いいたします。 #include <SPI.h> //#include <MsTimer2.h> // ピン定義。 #define PIN_SPI_MOSI 11 #define PIN_SPI_MISO 12 #define PIN_SPI_SCK 13 #define PIN_SPI_SS 10 #define PIN_BUSY 9 void setup() { delay(1000); pinMode(PIN_SPI_MOSI, OUTPUT); pinMode(PIN_SPI_MISO, INPUT); pinMode(PIN_SPI_SCK, OUTPUT); pinMode(PIN_SPI_SS, OUTPUT); pinMode(PIN_BUSY, INPUT); SPI.begin(); SPI.setDataMode(SPI_MODE3); SPI.setBitOrder(MSBFIRST); Serial.begin(9600); digitalWrite(PIN_SPI_SS, HIGH); L6470_resetdevice(); //L6470リセット L6470_setup(); //L6470を設定 //MsTimer2::set(50, fulash);//シリアルモニター用のタイマー割り込み //MsTimer2::start(); delay(4000); L6470_move(1,1600);//指定方向に指定数ステップする L6470_busydelay(5000); //busyフラグがHIGHになってから、指定ミリ秒待つ。 L6470_run(0,10000);//指定方向に連続回転 delay(6000); L6470_softstop();//回転停止、保持トルクあり L6470_busydelay(5000); L6470_goto(0x6789);//指定座標に最短でいける回転方向で移動 L6470_busydelay(5000); L6470_run(0,0x4567); delay(6000); L6470_hardhiz();//回転急停止、保持トルクなし } void loop(){ } void L6470_setup(){ L6470_setparam_acc(0x40); //[R, WS] 加速度default 0x08A (12bit) (14.55*val+14.55[step/s^2]) L6470_setparam_dec(0x40); //[R, WS] 減速度default 0x08A (12bit) (14.55*val+14.55[step/s^2]) L6470_setparam_maxspeed(0x40); //[R, WR]最大速度default 0x041 (10bit) (15.25*val+15.25[step/s]) L6470_setparam_minspeed(0x01); //[R, WS]最小速度default 0x000 (1+12bit) (0.238*val[step/s]) L6470_setparam_fsspd(0x3ff); //[R, WR]μステップからフルステップへの切替点速度default 0x027 (10bit) (15.25*val+7.63[step/s]) L6470_setparam_kvalhold(0x50); //[R, WR]停止時励磁電圧default 0x29 (8bit) (Vs[V]*val/256) L6470_setparam_kvalrun(0x50); //[R, WR]定速回転時励磁電圧default 0x29 (8bit) (Vs[V]*val/256) L6470_setparam_kvalacc(0x50); //[R, WR]加速時励磁電圧default 0x29 (8bit) (Vs[V]*val/256) L6470_setparam_kvaldec(0x50); //[R, WR]減速時励磁電圧default 0x29 (8bit) (Vs[V]*val/256) L6470_setparam_stepmood(0x03); //ステップモードdefault 0x07 (1+3+1+3bit) } void fulash(){ Serial.print("0x"); Serial.print( L6470_getparam_abspos(),HEX); Serial.print(" "); Serial.print("0x"); Serial.println( L6470_getparam_speed(),HEX); }
MasahikoHirata

2019/06/11 23:53

これをコンパイルしてエラーは sketch_jun12a:25:19: error: 'L6470_resetdevice' was not declared in this scope L6470_resetdevice(); //L6470リセット ^ sketch_jun12a:32:18: error: 'L6470_move' was not declared in this scope L6470_move(1,1600);//指定方向に指定数ステップする ^ sketch_jun12a:33:21: error: 'L6470_busydelay' was not declared in this scope L6470_busydelay(5000); //busyフラグがHIGHになってから、指定ミリ秒待つ。 ^ sketch_jun12a:34:18: error: 'L6470_run' was not declared in this scope L6470_run(0,10000);//指定方向に連続回転 ^ sketch_jun12a:36:16: error: 'L6470_softstop' was not declared in this scope L6470_softstop();//回転停止、保持トルクあり ^ sketch_jun12a:38:18: error: 'L6470_goto' was not declared in this scope L6470_goto(0x6789);//指定座標に最短でいける回転方向で移動 ^ sketch_jun12a:42:15: error: 'L6470_hardhiz' was not declared in this scope L6470_hardhiz();//回転急停止、保持トルクなし ^ C:\Users\hirata\Documents\Arduino\sketch_jun12a\sketch_jun12a.ino: In function 'void L6470_setup()': sketch_jun12a:49:24: error: 'L6470_setparam_acc' was not declared in this scope L6470_setparam_acc(0x40); //[R, WS] 加速度default 0x08A (12bit) (14.55*val+14.55[step/s^2]) ^ sketch_jun12a:50:24: error: 'L6470_setparam_dec' was not declared in this scope L6470_setparam_dec(0x40); //[R, WS] 減速度default 0x08A (12bit) (14.55*val+14.55[step/s^2]) ^ sketch_jun12a:51:29: error: 'L6470_setparam_maxspeed' was not declared in this scope L6470_setparam_maxspeed(0x40); //[R, WR]最大速度default 0x041 (10bit) (15.25*val+15.25[step/s]) ^ sketch_jun12a:52:29: error: 'L6470_setparam_minspeed' was not declared in this scope L6470_setparam_minspeed(0x01); //[R, WS]最小速度default 0x000 (1+12bit) (0.238*val[step/s]) ^ sketch_jun12a:53:27: error: 'L6470_setparam_fsspd' was not declared in this scope L6470_setparam_fsspd(0x3ff); //[R, WR]μステップからフルステップへの切替点速度default 0x027 (10bit) (15.25*val+7.63[step/s]) ^ sketch_jun12a:54:29: error: 'L6470_setparam_kvalhold' was not declared in this scope L6470_setparam_kvalhold(0x50); //[R, WR]停止時励磁電圧default 0x29 (8bit) (Vs[V]*val/256) ^ sketch_jun12a:55:28: error: 'L6470_setparam_kvalrun' was not declared in this scope L6470_setparam_kvalrun(0x50); //[R, WR]定速回転時励磁電圧default 0x29 (8bit) (Vs[V]*val/256) ^ sketch_jun12a:56:28: error: 'L6470_setparam_kvalacc' was not declared in this scope L6470_setparam_kvalacc(0x50); //[R, WR]加速時励磁電圧default 0x29 (8bit) (Vs[V]*val/256) ^ sketch_jun12a:57:28: error: 'L6470_setparam_kvaldec' was not declared in this scope L6470_setparam_kvaldec(0x50); //[R, WR]減速時励磁電圧default 0x29 (8bit) (Vs[V]*val/256) ^ sketch_jun12a:59:29: error: 'L6470_setparam_stepmood' was not declared in this scope L6470_setparam_stepmood(0x03); //ステップモードdefault 0x07 (1+3+1+3bit) ^ C:\Users\hirata\Documents\Arduino\sketch_jun12a\sketch_jun12a.ino: In function 'void fulash()': sketch_jun12a:64:37: error: 'L6470_getparam_abspos' was not declared in this scope Serial.print( L6470_getparam_abspos(),HEX); ^ sketch_jun12a:67:38: error: 'L6470_getparam_speed' was not declared in this scope Serial.println( L6470_getparam_speed(),HEX); ^ exit status 1 'L6470_resetdevice' was not declared in this scope ’ です。 一つずつ丹念につぶしましょう。
MasahikoHirata

2019/06/12 04:41

基の回答を修正しました。ご参考まで。
guest

0

順序として、まずはアルディーノでLEDを付けたり消したりできるようになりましょう。
その過程で質問があれば質問しましょう。

投稿2019/06/07 01:45

hillacken

総合スコア359

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Snowflake

2019/06/07 23:33

hillackenさま ご回答ありがとうございます。 LEDについては試して成功しています。 ありがとうございます。
guest

0

それそのまま、「L6470」でぐぐると、Arduinoと接続する記事が引っかかりますが、これではダメでしょうか

投稿2019/06/07 00:04

y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Snowflake

2019/06/07 00:28

y_waiwaiさま ご回答ありがとうございます。 試してみたのですが、アルディーノの5Vだけでも動くのか電池とかDCコンバータみたいな別電源が必要なのかがわかりませんでした。。 また、タグ修正のご指摘もありがとうございます。サイト初心者でC言語タブを見つけるのに時間かかっておりますが、修正させていただきます。
y_waiwai

2019/06/07 00:44

モータの定格を調べてください。12V必要なモータなら12Vの電源を用意する必要があります たとえ、モータが5Vだとしても、USBの電源では、電流が足りないため動かせません 必ず、モータ用に別に電源を用意しましょう
Snowflake

2019/06/11 11:30

アドバイスありがとうございます。 実は、DCコンバーター壊れてたことが判明したため新しいのを買ってこれからやってみるところなのです。。なかなか作業が進まず、回答が遅れて大変失礼いたしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問