STマイクロニクス製L6480のステッピングモーターが回らない

このQ&Aのポイント
  • STマイクロニクス製L6480のステッピングモーターを回すための制御を行っているが、エラーが発生し、出力が停止している。
  • ADCが正しく機能せず、内部のADコンバーターが正常に動作していない可能性がある。
  • 質問者はPICマイコンを使用したSPI制御でステッピングモーターを動かしており、配線や設定に問題はないか確認している。
回答を見る
  • 締切済み

STマイクロニクス製L6480にてステッピンク…

STマイクロニクス製L6480にてステッピングモーターが回らない 電子機器を開発しています者ですが、開発がうまくいかず行き詰っております。 ご教授頂ける方がいましたらお願い致します。 長文ですみませんが宜しくお願い致します。 STマイクロニクス製ステッピングモータードライバIC L6480にてステッピングモーターを回そうとしているのですが、モーターが回りません。 原因を調べると、エラーが出ているために出力が停止してるみたいです。 ですが、そのエラーが発生する原因がわかりません。 ネットで調べる回してる方はちらほら見かけるのですが、具体的にどのように設定・プログラミング・対策をして回しているのかが描かれておりません。 現在の配線・設定・状況は下記のとおりですが、おかしいところがありましたら、ご指摘・ご指南をお願い致します。 制御:PICマイコンにてSPI制御(PIC16F1517を使用) 開発環境:MPLABX IDE+XC8(C言語記述)      ICD3 デバッガー 配線:データシートに記載されている推奨回路    外付けのFETはルネサス製2SK3402を8個使用    モーターはミネベア製GT0100 (ギアBOX付きハイブリットステッピングモーター)(バイポーラ接続) 設定:L6480のVS電源は12~14V(バッテリ駆動ができるようにしているため)    SPI制御のIO電源はCPUと同じ5V(DC12V-5V降圧回路にて)    モーターを一定の速度で回すようにL6480のパラメーターを設定    フルステップモードで回転させています。 状況:エラーフラグが出ており、エラーは以下になります。     STEP_LOSS、OCD、UVLO_ADC    L6480の各入出力及びパラメーターの設定は下記に記載しています。 原因:ステータス情報を見るとADC_INに1.7Vを入力しているにも関わらず、    ADC_OUTは0になっています。そのため、エラーが発生し、出力を停止させ    ていると思われます。    なぜ、内部のADコンバーターが正常に機能していないかがわかりません。 質問:ADCが働かないのはなぜでしょうか?    パラメーターの設定に問題はないでしょうか?    パラメーター設定する際の条件(設定タイミング等)はありますでしょうか?    (ちなみに外部スイッチが入るとVS電源をONし、初期パラメータを設定して     から、一定のスピードで回転させるようにしています。)  各入力電圧   VS電源:14V、VCC:7.5V(パラメーター設定により)、CP:7.5Vパルス出力、   VBOOT:16V、VREF:3.3V、ADC_IN:1.7V(VSからの抵抗分圧にて)  パラメーター設定   ACC,DEC:0x20、MAX_SPD:0xDB(1000r/min)、FS_SPD:0x0A(50r/min)   KVAL_HOLD,RUN,ACC,DEC:0x10,0x6F,0x3F,0x3F、INT_SPD:0xFF、 ST_SLP:0x10、FN_SLP_ACC,DEC:0x30、OCD_TH,STALL_TH:0x0F(0.5V)、   STEP_MODE:0x00(フルステップ)   CONFIG:2C38    (PWM周波数:15.6kHz、Vcc出力電圧:7.5V、UVLOスレッシュホールド:VccOn 6.9V     出力過電流保護:なし、BEMF補正:あり、外部SW:オフ、クロック:内部16MHz、     OSCOUT出力:2MHz)   他デフォルト設定 L6480データシート http://www.st-japan.co.jp/web/jp/catalog/sense_power/FM142/CL851/SC1794/SS1498/LN1794/PF253950

noname#230358
noname#230358

みんなの回答

noname#230359
noname#230359
回答No.2

パッと見、OCD、UVLO_ADCがエラーということは負荷が重くて過電流エラー、 且つ、電源がへたって電源電圧エラーの様に見える。電源Vsはオシロでチェックしましたか? 負荷を抵抗に且つ値を軽めの負荷になる様にしてみれば如何。 パラメータが正しく設定されたかどうかはGetParamコマンドで分かりますよね。

noname#230359
noname#230359
回答No.1

自作ハードでの不具合では、回路設計のミスなのか ソフトの馬具なのかも切り分けが不明確なので ストロベリーリナックスの L6480 大電流ステッピングモータ・ドライバキット http://strawberry-linux.com/catalog/items?code=12080 か ST-MicroのL6480エバリュエーションボード あたりで、 ソフトウェアのデバッグしてからの方が良いと思うのですが… ズルズルと回答待ってるより5000円程度なら買って試したほうが早いですよ。

関連するQ&A

  • オーディオ

    私のテレビは日立のP50HR02です。音声出力の所に ACCとPCMの切り替えがあります。 ONKYO ホームシアターシステム BASE-V20X(S) どちらの設定にすればよいのですか?

  • 球の表面積と円の面積

    球の表面積や円の面積を積分により求める場合、パラメータの取り方によって計算結果が変わってきます(添付画像参照)。球の表面積の場合は関数f(x)=√(r^2-x^2)の長さLを、円の面積の場合はxをパラメータにとると正しい計算結果が得られるようですが、なぜ似たような図形であるにも関わらずこのようにパラメータの取り方が違ってくるのでしょうか。 ("似たような"という表現は些か数学的ではないですがご容赦ください) ちなみに球の体積を積分で求めたい場合は、xをパラメータに取るとV=(4πr^3)/3が得られるようです。

  • 振幅変調波の復調について

    2乗検波回路で復調を行います。 非線形特性を v2=a0+a1v1+a2(v1)^2 ・・・(1) とし、AM波 v1=A(1+mcosωst)cosωct ・・・(2) を入力する。 v2の直流成分及び高周波成分を除去すると、出力信号vsは、 vs=a2mA^2(cosωst+(m/4)cos2ωst) ・・・(3) となる。 (1)と(2)から(3)が導出されるようなのですが、どうやれば(3)が導き出されるのかが分かりません。 どう頑張っても、a1やcosωcが残ってしまうような気がするのですが・・・ どなたかご教授願います。

  • モータードライバTA7291Pの出力電圧低下につい

    NゲージをArduinoで自動運転に挑戦中です。 モータードライバTA7291PのVs:12V、Vcc:5VでVrefにanalogWriteでパラメータ255としましたが6Vしか出力せず列車がゆっくりとしか走りません。 試しにVrefを使用せず抵抗3kΩを介してVSと繋ぐと12Vが出ます。 徐々に加減速させたくてVrefを使いたいのですが最高で12V近くまで出せないものでしょうか? 宜しくお願いします。

  • 複素関数の同等角について

    次の問題なのですが、証明がわかりません。 f(z)=u(x,y)+iv(x,y)(z=x+iy)を正則関数とし、写像φ:(x、y)∈R^2 →(u(x,y),v(x,y))∈R^2 について考える。 f'(z。)≠0と仮定する。((x。,y。)を通り、角度αで交わる)2本の直線L1,L2を以下で定める: L1:(x,y)=(x。+tcosθ,y。+tsinθ) (t∈R) L2:(x,y)=(x。+tcos(θ+α),y。+tsin(θ+α))  このとき、曲線φ(L1)、φ(L2)が点φ(x。,y。)で交わるときの角度を求めよ。 という問題なんですが。答えは、等角性からαと思うんですが、導き出し方がわかりません。というのも、パラメータ表示されているので、微分もうまくいかないので、接ベクトルも出せない状況です。お願いします。

  • L4Dについて

    私はL4Dを買おうと思っています。 しかしL4dのデモで、起動してメインのメニューも出るのですが、ゲームをプレイしようとするとエラーが出てしまいまだ一度もプレイができていません・・・ エラーはこちらです アプリケーションエラー 例外 unknown software exception (0xc00000d) アプリケーションの *0x0c8af56f* で発生しました。 というものです。*の中の部分がたまに変わっています。 私のPCスペックはこちらです。 Windows XP AMD Athlon(tm) 64 Processor 3500+ 2.20GHz,1.00GB RAM グラフィック GeF 7600GT スペック的には問題ないと思うのですが・・・ どなたか問題の解決策などをお答えしていただけないでしょうか?

  • 統計学の問題なのですが、まったく理解できません。。

    統計学の問題なのですが、まったく理解できません。。 どなたか回答していただけないでしょうか。 大きさ n のデータ X1, X2, ..., Xn が互いに独立にパラメータ λ の指数分布( f (x) = λexp(-λx) 、x ? 0)に従っている時、尤度関数 L(λ)と対数尤度関数 log L(λ) を求めよ。また、パラメータ λ の最尤推定量を求めよ。 よろしくおねがいします。

  • PIC16F874Aについて

    16F874Aを使用して回路をつくっているのですが、I/Oピンの出力(LEDを接続)はちゃんと動作してくれるのに、入力(スイッチを接続)が全く動作してくれません。動作確認のために、 void main(){ PORTB=0x01; TRISB=0x01; while(1){ if(PORTB.F0==0){ PORTB.F1=1;     } }        } という簡単なプログラムでも動作しません。 また、AN0~AN7をデジタルで使用したいため、A/D変換のプログラムとして、 setup_adc_ports(0b00000000); をプログラム中に入れてビルドすると、エラーが出てしまいます。 PIC素人のため初歩的な質問かとは思いますが、回答よろしくお願いします。

  • 随伴写像の存在性の証明は?

    随伴写像についての質問です。 [随伴写像とは] A∈L(V)({=f∈Map(V,V);f is linear}),∃1C∈L(V')(V'はF線形空間Vの双対空間);∀(x,y)∈V×V',y(Ax)=(Cy)(x)(∈F) (i.e. [Ax,y]=[x,Cy]) (⇔def) C をAのadjoint(随伴写像)と言い、adjA:=Cと示す。 ここで 「A∈L(V)({=f∈Map(V,V);f is linear})に対して∀(x,y)∈V×V',y(Ax)=(Cy)(x)(∈F) (i.e. [Ax,y]=[x,Cy]) を満たすようなC∈L(V')(V'はF線形空間Vの双対空間)が一意的に存在する」 を示したいのですが どうやって存在性を示せばいいかわかりません。 Cをどのように採ればいいのでしょうか?

  • c言語を用いた電流フィードバック回路

    c言語プログラムについての質問です。画像のハーフブリッジインバータ回路で正弦波と三角波を用いたPWM制御で、抵抗の値関係なく目標電流値を出力するプログラムが作りたいのですがどうすればいいのでしょうか。 #include <math.h> #include <stdio.h> __declspec(dllexport) void simuser (t, delt, in, out) double t, delt; double *in, *out; { static double f1=10000,f2=60,v=0,n=0,h=0,c=0,x1=0,x2=0,s=0,im=0; double vout=0,k1,k2,vs,vtri,vt,pai=3.14,rad,vsin,i,j,k3,k4,va,vs1=0,vs2=0,iout,ts=0.0000025; 三角波 vtri=2; k1=1/delt; k2=(k1/f1)/2; vs=vtri/k2; h=h+1; if(h<=k2){ v=v+vs; }else if(h>=k2){ v=v-vs; }else{ v=v; } if(h>=(k2*2)){ h=0; } vt=v-(vtri/2); 正弦波 j=90; k3=1/delt; k4=(k3/f2)/4; i=j/k4; n=n+i; rad=(pai*n)/180; vsin=sin(rad); スイッチ制御1 if(vsin<vt){ x1=x1+delt; if(x1>=ts){ vs1=1; }else if(x1<ts){ vs1=0; }else{ x1=x1; } }else if(vsin>vt){ vs1=0; x1=0; }else{ vs1=vs1; } スイッチ制御2 if(vsin<vt){ vs2=0; x2=0; }else if(vsin>vt){ x2=x2+delt; if(x2>=ts){ vs2=1; }else if(x2<ts){ vs2=0; }else{ x2=x2; } }else{ vs2=vs2; } ここからが上手くいきません。 電流フィードバック iout=in[0]; im=1.5; if(im<iout){ vsin=vsin*0.09; }else if(im>iout){ vsin=vsin*1.01; }else if(im=iout){ vsin=vsin; } 出力 out[0]=vs1; out[1]=vs2; out[2]=vt; out[3]=vsin; } プログラムはこのようにしています。vsinの値を増減することで、出力電流は制御できます。プログラムとしては、出力電流値ioutをフィードバックし、目標値imと比べ、vsinの大きさを変えて、目標値に近づける、というものが作りたいです。自分で作ったものでは上手く動作しません。 c言語については初心者なので、どなたか教えていただけるとありがたいです。