037449
48時間以内の記事は New Mark で表示されます
続9 PWM
maboさん

我がx9cが壊れて、ad5220見ました。
AD5220の方が出力10ma
使い易いかな。

ただ、プログラム変更に
必要な時間を読み取れませ。
分かりますか?
TR 2019/06/11(Tue) 16:34 No.1641  記事編集
Re: 続9 PWM
maboさん、今晩は、
続けて失礼します。
AD5220用の初期設定関数ですが、
2行目のカッコ内は、データシートのTCLの25nsとなり
4行目のカッコ内は、分からない、、。

写真は、左ページがx9cで、右ページがAD5220です。

初期設定関数
1 inc = 0;
2 __delay_us(1);
3 inc = 1;
4 __delay_us(500);

TR   2019/06/11(Tue) 19:49 No.1642 記事編集
Re: 続9 PWM
TRさん,猛牛ロックさん,今晩は。

プログラムの変更ですけど,そんなに時間はかからないような気がします。

5220は,アレイが128と出ていますので,

  100→128

それと,

  U/D立ち下がりの25μs後にCLSが10μs

みたいなかんじでしょうか。

inc = 0;
__delay_us(1);→→____delay_us(20)
inc = 1;
__delay_us(500);→いらないかも

でしょうか。ワイパーの移動時間については,

記載がないような気がします。

ちょと分からない部分ですが・・・・・・。



それから,X9C破損しましたか。

原因は,過電流?静電気?

私は,実際に,PWMのコントローラーに入れてみたいと

思いますが,

もし,それで,破損するようなら,ML4で使うも多分,難しいでしょうね。

初めに,このデジタルポテンショメーターを考えたとき,

もしだめだったらの頭ありましたが,

だめなら,抵抗アレイとトランジスタとPICで,

X9Cと同じような配線をすれば,10階の切り替えぐらいだったら,

そんなに手間かからずに,いけるかな,と思いました。

X9Cや,5220をためして,だめだったら,私は,

自分の興味のために,抵抗アレイとトランジスタアレイとPICで,同じようなもの作ってみようと思ってます。

PIC(18ピン)→→エンコーダー→→トランジスタアレイ→→抵抗アレイ

の組み合わせて,32個程度のトランジスタコントロールできますので,

約30段階のコントロールができるものが可能のような気がします。
 
mabo   2019/06/11(Tue) 22:46 No.1643 記事編集
Re: 続9 PWM
AD5220はX9Cと似ているデバイスです。違いは
・100ポジションと128ポジション
・ポジション記憶機能の有無
・make before breakとダイナミック動作
と言った所ですね。

初期化は特別なルーチンは必要ありません。外部変数で
volatile unsigned char AD5220_val=64;
としておけば良いです。


※この手のデバイスは可変抵抗と同じような動作をしますけど、可変抵抗では無いので注意が必要です。
例えば、通常の安い可変抵抗でも1/8W=125mWですけど、X9C103は10mWです。電流を流せる能力は1/10以下です。
(なので、安易にLED等を繋がないほうがいいです)
当然ながら、置き換えは、損失以外にも、全てのパラメータをパスする必要があります。


AD5220のデータシートの、8,9ページにあるように、可変抵抗には2通りの使い方があります。
そこで言う、可変抵抗器動作と電圧出力動作です。
可変抵抗器動作とは、平たく言えば、電流調整動作です。実際に流す電流を調整します。
電圧出力動作とは、電圧参照動作です。電圧値を読み込ませるだけで、ほとんど電気を流しません。

スピンドルの可変抵抗器が電圧参照として使われているのなら、殆どのデジタルポテンショでそのまま置き換え可能です。
電流調整として使われているのなら、何かしらの対処が必要になるかもしれません。

スピンドルに付いている可変抵抗器がどのように使われているのかは、別に、スピンドルの中(ドライバ)を見る必要はありません。
ちゃんと調べればどのように使われているのかは把握できます。



<追記します>

上記は、PICとAD5220が同時に電源投入がある、というのが前提です。
PICのみ或いはAD5220のみをリセットした場合は位置がずれる可能性があります。

あるサイトのX9Cのコードにでは、毎回、一番下まで下げてから目標位置まで上げていました。
その時は、馬鹿な事をしている人もいるなぁ、位にしか思いませんでしたけど、
どちらかが単独でリセット状態になる可能性があるなら、そういった処理も必要なのかもしれません。

デバイス的にはPIC16Fクラスのマイコンなら、操作にdelayは必要ありません。
ただ、UDをきめて、クロックを入れるだけです。
また、幾つかの図で分かるように、ワイパーの遅れもありません。ダイナミックに切り替わります。
(当然nsクラスの遅れはあるでしょうけど)
猛牛ロック   2019/06/12(Wed) 02:33 No.1644 記事編集
Re: 続9 PWM
猛牛ロックさん,TRさん,おはようございます。



猛牛ロックさん,詳しい解説ありがとうございます。

いつもながら,勉強になります。

ところで,一つ教えていただきたいのですが,

電圧参照と電流調整の見分け方ですが,

ボリュームを外した状態で,3本の線の2本を選んで,

抵抗を計って,抵抗0になる組み合わせがあるものは,

電流調整の方だた考えていいのでしょうか。

また,こんな調べ方して,回路等に,悪影響はないのでしょうか。

それと,もし,電圧参照の回路でしたら,アースの線と,

ワイパーの線を使って,外部からかける電圧を変更することで,

コントロールできるのでしょうか。



今日は,これから,実家の畑の草刈りです。

ああ,です。
mabo   2019/06/12(Wed) 07:37 No.1645 記事編集
Re: 続9 PWM
maboさんへ
おはようございます。

AD5220用プログラムの件、すみませんでした。



>それから,X9C破損しましたか。

原因は,過電流?静電気?



x9cのつなぎ方をよく知りませんでした。
最初は、写真の右側半分の左で実験していたら、動作していましたが、突然不動となりました。
LEDとx9cを並列に繋いだ感じです。
この使い方で、故障前は、LED15mA流れていました。
x9cのPower rating の表記は、10mAといなっていますが、これは、x9cに流れる上限電流だと思うんですよね、
並列接続で、分圧されて使っていた状態で、x9cにどれほど電流が流れていたかは、
測ったような測らなかったような、記憶があいまいです。


故障後は、合成写真右半分の右で繋いでいます。
可変抵抗としての機能はだめですが、一定の明るさで点灯はしています。
つまり調整が利きません。

原因は、繋ぎ方が悪かったのでしょうか?





>PIC(18ピン)→→エンコーダー→→トランジスタアレイ→→抵抗アレイ

の組み合わせて,32個程度のトランジスタコントロールできますので,


こういった方法もあるんですね!!
よくわかりませんが、行けそうですね(^^♪

TR   2019/06/12(Wed) 07:47 No.1646 記事編集
Re: 続9 PWM
猛牛ロックさんへ

>初期化は特別なルーチンは必要ありません。外部変数で
volatile unsigned char AD5220_val=64;
としておけば良いです。


この解釈についてお聴きします。

x9cの場合、ワイパ一を最下位までダウンさせた位置を「x9c_val=0」として、初期化の位置としました。

で、AD5220の場合は、
単に、volatile unsigned char AD5220_val=64;
としておけば良いです。 ということは、
百分率で、今回は、位置決めしているわけですけど、
64の位置が、再下位のスタート位置であることになるのでしょうか??
若し、そうであれば、
UP/DOWN関数の考え方も変えるのでしょうか?
ワイパーをひとつづつ、上げ下げするのではなく、
0〜128ポジション数をAD5220に入力するのでしょうか?

真理値表には、3種類しかない!!



それと、もう一点お願いします。
初期化関数について
__delay_us(500)の位置が、forループの中にありますが、
これでは、毎回500待つようになりますが、
本来は、forループを終えてから、
500を待つようにするのではないのでしょうか?
500待つのは、方向を変える場合ではなかったでしょうか?
INKの0と1を交互に繰り返すことは、
方向を変えることではないように思いますけど。
ただ、抵抗値を変えるために、500待つ必要があるというなら別ですが。

//デバイス初期化関数
void x9c_init(void) {
ud = 0;
for (char i = 0; i < 100; i++) {
inc = 0;
__delay_us(1);
inc = 1;
__delay_us(500);
}
x9c_val = 0;

}


変更後

void x9c_init(void) {
ud = 0;
for (char i = 0; i < 100; i++) {
inc = 0;
__delay_us(1);
inc = 1;

}
x9c_val = 0;__delay_us(500);

}

TR   2019/06/12(Wed) 08:45 No.1647 記事編集
Re: 続9 PWM
>MABOさん

実際に動かして見なければ流れる電流は判りません。
電流を計測できない機器なら、ボリューム位置に対する電圧を数点計測すれば判ります。

> 抵抗を計って,抵抗0になる組み合わせがあるものは,

これは典型的な電流調整の接続でしょうね。間違いないと思います。
(とはいえ、普通は目視で=ケーブルでつながっているのが見えるので、抵抗値を調べないのが普通ですけど基板上ですぐに短絡しているのかな?)
この場合は実電流がどの位流れるのかを調べる必要があります。



> TRさん

私はルネサスのデータシートを見ていますけど、ほぼ同じだと思います。
X9Cは最大絶対定格で、±4.4mAです。そして、10秒以内なら8.8mA流せます。
通常は2,3mAで抑えておくべきです。そして、その時の計測値(電圧)はあまり、正しくありません。

最大絶対定格の欄で
POWER RATING
X9C103 X0C104, and X9C503 . . .10mW
となっています。これはよく抵抗器で、1/2Wとか1/8Wとか呼んでいるものです。つまり1/100Wまで、という事です。

あぁ、左側の表ですね。ルネサスのものと同じです。Iwがワイパー電流=可動端子の電流です。

つなぎ方は右の方が優しいつなぎ方ではありますけど、どちらにしても、固定抵抗を2kΩにすれば壊れません。


> 百分率で、今回は、位置決めしているわけですけど、
> 64の位置が、再下位のスタート位置であることになるのでしょうか??

百分率なんてどこにも出てきません。何を見てそう思ったのでしょう?
「再下位」は「再開」のTYPOですね?そうです。ほぼ真ん中位置でスタートします。
使い方はX9Cと全く同じです。(位置記憶機能はありませんけど、X9Cでも元々使っていません)

> 初期化関数について
これはX9Cのものですよ。
で、初期化は電源が入ってい1瞬の出来事です。500usで、100回回したとしても0.06秒に満たない時間です。
この時間に拘ること自体ナンセンスです。


> 本来は、forループを終えてから、
> 500を待つようにするのではないのでしょうか?
> 500待つのは、方向を変える場合ではなかったでしょうか?
いいえ、電源が入っているのなら、同等の条件です。初期化でも、whileループでも、動かすのは同じことです。

あと、その変更後のプログラムでは駄目です。
適切な時間を取っていません。
猛牛ロック   2019/06/12(Wed) 12:43 No.1648 記事編集
Re: 続9 PWM
猛牛ロックさんへ

>X9Cは最大絶対定格で、±4.4mAです。そして、10秒以内なら8.8mA流せます。

このことは、写真の赤矢印の事ですか?
そして、合成写真右側の区間に流れる電流値ですか?



>そうです。ほぼ真ん中位置でスタートします。
使い方はX9Cと全く同じです。(位置記憶機能はありませんけど、X9Cでも元々使っていません)


MD5220は、電源ONで、0〜128ポジションの64に来るということですか、
ということは、スタート位置を0(0Ω)としたい場合は、

外部変数で
volatile unsigned char AD5220_val=0;
上記の様にポジションを0とすれば、0Ωとなるのでしょうか?

若し、そうであれば、U/P関数や、while (1) 関数内は、以下の様にすれば良いのでしょうか?

//U/D_up関数
void MD5220_up(void) {
cs=0; ud = 1;
clk = 0;
__delay_us(1);
clk = 1;
if (MD5520_val < 127)MD5220_val++;
//次の上げ下げは500us空ける
}


while (1) {
static unsigned int adc[32] = {0};
static char num = 0;
unsigned int target = 0;
adc[(++num)&31] = adconv();// アナログ値の変換と読込み処理関数呼び出しと配列による平準化
for (char i = 0; i < 32; i++)target += adc[i];
target /=327.4;
if ((target) > xMD5220_val)MD5220_up();
else if ((target) < AD5220_val)MD5220_dowm();//U/Ddown関数呼び出し
__delay_ms(1);
}

TR   2019/06/12(Wed) 14:41 No.1649 記事編集
Re: 続9 PWM
ワイパーは可動部の矢印です。つまり、TEST POINTと書いてある部分を流せる電流です。電圧値ならVw、抵抗値ならRw、電流値ならIwです。

> void AD5220_up(void) {
> cs=0; ud = 1;
> clk = 0;
> __delay_us(1);
> clk = 1;
> if (AD5520_val < 127)AD5220_val++;
> //次の上げ下げは500us空ける
> }

AD5220は即時に反映するのでdelayは要りません。なので、

void AD5220_up(void) {
ud = 1;
clk = 0;
clk = 1;
if (AD5520_val < 127)AD5220_val++;
}
です。

で、0に移動させるには書き方は色々ありますけど、

while(AD5220__val>0)AD5220_down();

です。勿論、上と同じ様に、AD5220_down関数を作る必要があります。

※別関数を作っても良いです。例えば
void AD5220(unsigned char pos){
int t=pos-AD5220_val;
if(t>0)ud=1;
else {
ud=0;
t=-t;
}
while(t){
clk=0;
clk=1;
t--;
}
}
みたいに、直接位置を指定する関数です。AD5220(0);で、0位置へ移動します。


あと、このデバイスは7ビットなので、
× target /=327.4;
○ target=target>>8;
です。
猛牛ロック   2019/06/12(Wed) 15:40 No.1650 記事編集
Re: 続9 PWM
猛牛ロックさんへ、

新しいx9cが来たらテストをしたいと思います。
テスト方法ですが、猛牛ロックさんの言われた方法は、写真の通りでよろしいでしょうか?



****************
MD5220
MD5220用ですが、一応、下記の通りやったらビルトまではOKですが、
如何でしょうか?
見てやって下さい。

#include <xc.h>
// クロック周波数指定
// (__delay_ms()関数が必要としているため)
#define _XTAL_FREQ
#define clk LATA1
#define ud LATA0
// プロトタイプ宣言
unsigned int adconv(void); //ADC読み込み関数
//外部変数
volatile unsigned char MD5220_val = 64; //電源ON時ワイパ中間位置

//デバイス初期化関数
void MD5220(unsigned char pos) {
int t = pos - MD5220_val;
if (t > 0)ud = 1;
else {
ud = 0;
t = -t;
}
while (t) {
clk = 0;
clk = 1;
t--;
}
}

//U/D_up関数
void MD5220_up(void) {
ud = 1;
clk = 0;
clk = 1;
if (MD5220_val < 127)MD5220_val++;
}
//U/Ddown関数
void MD5220_dowm(void) {
ud = 0;
clk = 0;
clk = 1;
if (MD5220_val > 0)MD5220_val--;
}
//メイン関数
void main() {
OPTION_REGbits.nWPUEN = 0; //内部プルアップ有効
OSCCON =
PORTA = 0x00; //全てLo
PORTB = 0x00; //全てLo
ANSELA = 0b00000000; //全てデジタルI/Oとする
ANSELB = 0b00001000; // SEC基板~ローパス経由でアナログ化信号をRB3でIN
// 入出力設定
TRISA = 0b00000000; // RA全て出力
TRISB = 0b00001000; //RB3 ADC用入力端子
// ADコンバータ設定
ADCON0 = 0b00100101; // アナログ変換情報設定(RB3から読込む)
ADCON1 = 0b11010000; // 読取値は右寄せ、A/D変換クロックはFOSC/16、VDDをリファレンスとする
MD5220(0); //初期化
while (1) {
static unsigned int adc[32] = {0};
static char num = 0;
unsigned int target = 0;
adc[(++num)&31] = adconv(); // アナログ値の変換と読込み処理関数呼び出しと配列によりAD変換値を平準化
for (char i = 0; i < 32; i++)target += adc[i];
target = target >> 8;
if (target > MD5220_val) {
MD5220_up();
} else if (target < MD5220_val) {
MD5220_dowm();//U/Ddown関数呼び出し
}
}
}
// アナログ値の変換と読込み処理関数
unsigned int adconv() {
GO_nDONE = 1; // アナログ値読取り開始指示
while (GO_nDONE); // 読取り完了まで待つ
return ADRES;
}

TR   2019/06/12(Wed) 17:02 No.1651 記事編集
Re: 続9 PWM
相変わらずdowmになっています。downです。
プログラム的にはおかしな所は見つかりませんでした。


その図はデジタルポテンショとして、x9cのテストですか?
でしたら、その状態で、「電圧値」を読んでください。
勿論、それ以外の色々な部分の抵抗値や電圧値を計測してもらって良いんですよ。
ただ、重要なのはその状態で、上から下まで電圧が動くかどうか?です。

※データシートから、ワイパーの抵抗値が210Ωはあり得ません
 今までの結果はワイパー位置が下がり切っていないか、測定ミスどちらかだと思っています。
 
プログラムも

while(1){

の後を変更して、

while(1){
for(char i=0;i<=100;i++){
x9c_up();
__delay_us(500);
}
__delay_ms(5000);
for(char i=0;i<=100;i++){
x9c_down();
__delay_us(500);
}
__delay_ms(5000);
}
に変えてGND-Vw間を計測して下さい。0〜5Vまで変化する筈です。
※今回は5秒間隔でワイパー位置を最上位⇔最下位に切り替えています。入力用のボリュームは使いません。
必ず、ICの抵抗部の先は何も接続しないで計測して下さい。、

猛牛ロック   2019/06/12(Wed) 17:57 No.1652 記事編集
Re: 続9 PWM
猛牛ロックさんへ

MD5220用プログラム有難うございます。


ご提案頂きました、下記プログラムは、x9cのテスト用ですよね?

プログラム変更方法
while(1){ の中をそっくりと入れ替えて、他のプログラムは変更なしでよろしいですか?


   記
プログラムも

while(1){

の後を変更して、

while(1){
for(char i=0;i<=100;i++){
x9c_up();
__delay_us(500);
}
__delay_ms(5000);
for(char i=0;i<=100;i++){
x9c_down();
__delay_us(500);
}
__delay_ms(5000);
}



追記

x9cのUP関数について
up関数は、下記の通りとなっていますよね

で、
if (x9c_val < 100)x9c_val++; この部分は、1ポジションづつ、抵抗値を上げていくわけですよね、
であれば、
抵抗値変更に必要な時間、100〜500μsの時間関数を入れるのでは?

   記
//U/D_up関数

void x9c_up(void) {
ud = 1;
inc = 0;
__delay_us(1);
inc = 1;
if (x9c_val < 100)x9c_val++;

//次の上げ下げは500us空ける
}


変更後
//U/D_up関数

void x9c_up(void) {
ud = 1;
inc = 0;
__delay_us(1);
inc = 1;
if (x9c_val < 100)x9c_val++;
  __delay_us(100);
//次の上げ下げは500us空ける
}
TR   2019/06/12(Wed) 18:15 No.1653 記事編集
Re: 続9 PWM
そうです。X9C用のプログラムです。

> 抵抗値変更に必要な時間、100〜500μsの時間関数を入れるのでは?

ほんの10行ちょっとのプログラムです。
その中に
__delay_us(500);
が2回も書いてあるのに何でそれが目に入らないのか不思議です。
既に書いてあります。

追記です。
御免なさい誤解したようです。
そのx9c_up関数の事ですね。

付ければ無駄な時間です。
その間にADCの取得や計算、etcをすれば、自然に経過するだろう、という考えて付けていません。
ADCの間隔を優先させる考えです。
そこで付けてしまうと、ADCの間隔がまばらになってしまいます。
猛牛ロック   2019/06/12(Wed) 22:54 No.1654 記事編集
Re: 続9 PWM
猛牛ロックさんおはようございます。

>ADCの間隔を優先させる考えです。
そこで付けてしまうと、ADCの間隔がまばらになってしまいます。


色々とお聴きしてよかったです。
有難うございます。

新めてローパスフィルターも考えてみようかと思いました。

ML4についている可変抵抗なんですが、ML4についた状態で、抵抗値を計測したら、1kΩでした。
MD5220の方が性能が良いので、MD5220にしたかったが、1kΩがないようです。
まいりました〜。
TR   2019/06/13(Thu) 07:02 No.1655 記事編集
Re: 続9 PWM
可変抵抗の抵抗値は、まずは、記載が無いかを確認して下さい。
多くのものは103Bのような表示があると思います。
また、どのクラス(何Wモノ)のものを使っているのか、とかも参考になります。


もし記載がなければ外して計測です。
それは添付図左のように、接続されている何かとの合成抵抗になるからです。
その何かの抵抗値が圧倒的に高い場合のみ、正確な抵抗値が判ります。

また、添付図右のように配線されている場合も多いです。(MABOさんもこの配線のようです)
この場合は左の固定端子から可動端子の抵抗値を計測している事になります。
(更に並列回路になっています)

猛牛ロック   2019/06/13(Thu) 09:42 No.1656 記事編集
Re: 続9 PWM
MD5220用プログラムですが、初期化がおかしいと思いますが。どうだろうか
TR   2019/06/13(Thu) 11:24 No.1657 記事編集
Re: 続9 PWM
> MD5220用プログラムですが、初期化がおかしいと思いますが。

どの点をみて、そう思うのでしょうか? No.1651ですよね?
私も完全では無い、と思ってはいますけど、「おかしい」と思うのなら、私の考えている部分では無いような気がします。
猛牛ロック   2019/06/13(Thu) 14:21 No.1658 記事編集
Re: 続9 PWM
MD5220の初期化関数ですが、最後の}の前に、MD5220_val=0;
が抜けていると思います。
 ただ、電源ONと共に、抵抗値ポジションが64になるという事が条件です。
TR   2019/06/13(Thu) 14:46 No.1659 記事編集
Re: 続9 PWM
あぁ、その通りですね。

で、MD5220関数の最後の行に
MD5220_val=pos;
の一行を入れておいて下さい。
※指定した位置に移動した後に、その位置(変数)も変更しておく
猛牛ロック   2019/06/13(Thu) 15:10 No.1660 記事編集
Re: 続9 PWM
posについて、ネット検索しましたが、分かりませんでした。難しく感じました。

まだ、実験前で、大きな事は言えません。ご容赦願います。

No1652のx9cテスト用プログラム(下記一部抜粋、気になる点のみ)は、実験していませんが、

>に変えてGND-Vw間を計測して下さい。0〜5Vまで変化する筈です。

同感です。
ただ、運転用のx9c用プログラムは、
__delay_us(500);
が無い点が気になります。
抵抗値変更に要する時間が有るのと無いのでは、差がでると推測します。
   記
x9c_down();
__delay_us(500);
}
TR   2019/06/13(Thu) 15:46 No.1661 記事編集
Re: 続8ーPWM
maboさんお疲れさま、
皆さんこんばんは。

マッハの、[CLOSED LOOP]の設定方法を教えてください。
自分のスピンドルモーターには、エンコーダーのようなものがありません。
それでも、[CLOSED LOOP]にチェックを入れたり、P I Dに何かしらの数値を入れるのでしょうか?

ご紹介くださったページ、難しそうですね。
https://ja.wikipedia.org/wiki/PID制御
デフォルトでも数値が入っていましたが、やはり弄らなくちゃいけないのでしょうか??

読んでみますが、わからなかったら、再度投稿しますので、その節は宜しくお願いします。


*********************
猛牛ロックさんへ
プログラムの件、了解しました。

それと、
No1617のお写真すみません。
了解しました。

既に写真の可変抵抗が結線された既存の状態で抵抗を測ってあります。
なんと、最大で1Ωでした。 外して、もう一度抵抗値を確認します。
また、結線状態で、写真箇所の電流も図ります。


で、なんですが、
写真右のテストですが、既存のシステムだけでテストですか?
既存だけでしたら、あまり意味がないようですが。


訂正とお詫び
1Ω 正しくは、1kΩ
でした。済みませんでした。



*******************
maboさんへ


◯SEC(PWM出力) → ローパスフィルター(直流変換) →X9C → コントローラー(電圧制御)→適当なDCモーター
(コントローラーのボリュームとX9Cを置き換え。)

解釈ですが、
適当なDCモーター(コントローラーのボリュームとX9Cを置き換え。)とあります。
DCモーターに括弧をつけて、抜き出しています。 DCモーターに付属する何かがあって、
その何かで何をするのでしょうか??


それと、SEC→→ローパスフィルター →→ PICのAD変換 →→ X9C →→ ML4

これですが、
ローパスフィルターで、PWMを平準化しますよね、で、この流れだと、PICとx9cによって、もう一度
直流の電圧を平準化します。 これでは、2度平準化しますよ!!
これでも良いのでしょうか? ちょっと見、無駄な感じがします。
このことは、猛牛ロックさんも言われていることだと思っていましたが。

TR 2019/06/08(Sat) 20:13 No.1618  記事編集
Re: 続8ーPWM
TRさん,こんばんは。

すみません間違いがありました。

◯SEC(PWM出力) → ローパスフィルター(直流変換) →X9C → コントローラー(電圧制御)→適当なDCモーター
(コントローラーのボリュームとX9Cを置き換え。)

これ,

◯SEC→ローパスフィルター→PICAD変換→X9C→コントローラー→適当なDCモーター

で,PICのAD変換がぬけてました。

括弧のなかは,この流れだと,PWMのコントローラーの
ボリュームとX9Cを置き換えて,確かめる,の意味でした。

モーターには,何もしなくて大丈夫です。


>それと、SEC→→ローパスフィルター →→ PICのAD変換 →→ X9C →→ ML4

>これですが、
>ローパスフィルターで、PWMを平準化しますよね、で、この流れだと、PICとx9cによって、もう一度
>直流の電圧を平準化します。 これでは、2度平準化しますよ!!
>これでも良いのでしょうか? ちょっと見、無駄な感じがします。
>このことは、猛牛ロックさんも言われていることだと思っていましたが。

これですが,PICでやってることは,

ローパスフィルターで読み取った電圧をならして,

それに応じたX9Cの設定をすることです。

ローパスフィルターでやることと,PICでならすことは,

どちらも必要なことだと思います。

ローパスフィルターを通った信号に乱れがあるので,

読み取るために,何回か平均をとってます。

この平均に基づいて,X9Cの設定をします。


それから,P I Dの設定ですけど,

すみません,研究中です。

なかなかうまくいきません。
mabo   2019/06/08(Sat) 20:46 No.1619 記事編集
Re: 続8ーPWM
maboさんへ

>これですが,PICでやってることは,

ローパスフィルターで読み取った電圧をならして,

それに応じたX9Cの設定をすることです。

ローパスフィルターでやることと,PICでならすことは,

どちらも必要なことだと思います。

ローパスフィルターを通った信号に乱れがあるので,

読み取るために,何回か平均をとってます。

この平均に基づいて,X9Cの設定をします。



大変恐縮ですが、怒らないで下さい。

x9cは、平準化プログラム込みのPICで使います。
コンデンサと抵抗は、無くて済むなら使わない方が良いと思います。
なので、先ずは、x9cは、平準化プログラム込みのPICの波形をオシロで比べてみて、それでも追いつかないようでしたら、
ローパスフィルターも併せて使った方が良いと思いますよ。
本当にごめんなさい。 言い過ぎかも。
TR   2019/06/08(Sat) 21:11 No.1620 記事編集
Re: 続8ーPWM
TRさん、こんばんは。

>大変恐縮ですが、怒らないで下さい。

大丈夫ですよ。

ローパスフィルター使わないのであれば、デジタルで受け取る

ということになると思います。

そうすると、猛牛ロックさんが、書いてくれた後の方のプログラムお使いいなるのかな。

AD変換しないで、デジタルで受け取ったものを処理した方が、

ノイズ等の心配も少なくなりますしね。

猛牛ロックさんも、デジタルで受け取る方が好みだとおっしゃってました。

今日は、ドライバー作って、TK100A08N1というFETで、

回転数調べていました。

回転始めから、最高回転までの、範囲が、狭いようでした。

PWMのコントローラーは、DUTY比が4%〜69%の範囲で
動いていましたが、

今回買い求めたのは、12%〜48%と狭くなりました。

FET差し替えられるようにしましたので、

いくつか変えて、検証してみようかなと思います。
mabo   2019/06/08(Sat) 23:25 No.1621 記事編集
Re: 続8ーPWM
> TRさん
やっている事の意味がわかりませんけど、内部を計測したいなら可変抵抗を外した方が良いです。
繋がった状態だとボリューム位置で抵抗値が変わります。
スピンドルの巻き線抵抗を調べているんですか?

> 写真右のテストですが、既存のシステムだけでテストですか?
そうです。その可変抵抗を1本の抵抗で置き換えて、その可変抵抗の意味を調べます。
つまり、どういった回路をそこに繋げば制御出来るのか、という、一番最初にやるべきことです。

入口(PCからのPWM)と出口(スピンドルへの出力)の仕様が判らなければ、動くかどうか聞かれても判断が付きません。


それと、8個の平均を出したのはアナログ受信のプログラムです。デジタルなら100以上にした方が良いです。


追記します

スピンドルの基板から回路(使っているIC)が解るなら、それでも構いません。
猛牛ロック   2019/06/08(Sat) 23:41 No.1622 記事編集
Re: 続8ーPWM
maboさん、おはようございます。

>そうすると、猛牛ロックさんが、書いてくれた後の方のプログラムお使いいなるのかな。


No1553ですか、1553は難しくて、、、理解できませんでした。



****************
猛牛ロックさんおはようございます。


既存の資料は何もないので、分かりません。
なので、改造できそうなスピードコントロールに使われている可変抵抗をx9cに変えようとしています。

で、
あえて、可変抵抗を外して、抵抗を入れて、既存システムでスピンドルを回すということは、
その理由が分かりません。

分からないという理由
可変抵抗で回るのでしょうから、固定抵抗に置き換えても、スピードは分かりませんが、回ると思います。

しかしながらテストをすることとは、、、を考えると。
それでもテストするということは、
可変抵抗が確実に、スピンドルモーターのスピードコントロールに寄与しているかどうかを
確認するということなんでしょうね。

分かりました。 やってみます。
テスト方法
再度、可変抵抗の最大抵抗値を計測し、その抵抗値の半分以上を使って、既存システムで、まわしてみる。



>それと、8個の平均を出したのはアナログ受信のプログラムです。デジタルなら100以上にした方が良いで


サンプリング回数を変える場合、プログラムを一部を変えるが、
デバイスの初期化関数は、デバイスの関係で500が上限と言っていました。
算出方法
PWM基本周波数/サンプル数

100Hzなら、1周期=0.01s
8サンプルで0.01/8=0.00125s=1250μs


8サンプルで1250、なのに、100サンプル、、
デバイスの上限を超えているので、、、、

*************
maboさん、、、、
ローパスと併用ですよ!! 多分。
TR   2019/06/09(Sun) 07:18 No.1623 記事編集
Re: 続8ーPWM
> 再度、可変抵抗の最大抵抗値を計測し、その抵抗値の半分以上を使って、既存システムで、まわしてみる。
可変抵抗の最大値の1倍(〜10倍程度)までならどれでも良いです。ただし、値は覚えておいてください。
可変抵抗の最大値(固定された端子間)は外した状態で測ってください。

まず、その3本を外した状態で、電源を入れて、赤-黒間の電圧を計測してください。
もしかしたら高い電圧かも知れません。
(ここで5Vならいい結果が期待出来ます。高い電圧だと厳しくなります)

元の可変抵抗の固定部を使って切り替えても良いです。
上図で、
「赤と青を使って最高速、黒と青を使って動かない」というのが「良い結果」です。
なので、それでテスト終了です。
それ以外の結果の場合は…
まぁその時考えましょう。
猛牛ロック   2019/06/09(Sun) 08:54 No.1624 記事編集
Re: 続8ーPWM
TRさん,猛牛ロックさん,おはようございます。


TRさん,ご指摘ありがとうございます。

>maboさん、、、、
>ローパスと併用ですよ!! 多分。

これ,ブログの方の,基本周波数の変換のプログラムですか?。

何年か前に,最初に取り組んだ時に,これではまりました。

プログラムは外国の諸兄,回路は日本の諸兄,

という組み合わせで,ローパスフィルター入れて,もがきました。

結果,ローパルフィルタ入れるとデジタルのサンプリング

できなくなりました。

今は,なんとなく理解できるのですが・・・・・・・。


それから,サンプリングですが,TRさんのおっしゃってることちょっとわからないのですが,

下記のように理解してます。

サンプリングの最小は,PICのクロック数に依存するので,

私が使ってるPICは,8Mhzで動作してますので,

クロック8MHz→1クロック0.125μs→1命令サイクル0.5μs

0.5μsより短い期間でのサンプリングはできませんが,

これより長ければ可と理解してます。


==================
違う種類のFETを注文しています。

一つは,諸兄のHPあった,3020のFET

もう一つは,ブログの方に書いた,値段の差のある

PWMのコントローラーです。

ちょっと,楽しみですが,X9Cは,まだとどきません。

アリでの購入の方がよかったかなあ。
mabo   2019/06/09(Sun) 09:23 No.1625 記事編集
Re: 続8ーPWM
猛牛ロックさん
恐縮ですが、写真付で、説明願います。
TR   2019/06/09(Sun) 09:44 No.1626 記事編集
Re: 続8ーPWM
maboさん

500マイクロは、1553にあるぷろぐらむで、初期化関数にあります。
猛牛ロックさんとのやり取りで、x9cの能力と聴いていました。

聞き間違えかもしれませんが、x9cは、500マイクロより、短時間では、動作しないと思いました。
猛牛ロックさんに、突っ込んで、聞けば良かった点です。
INCは500マイクロ必要かもしれません。

******
猛牛ロックさん
詳しく解説して下さい。x9cのデータシートの何処をどのように理解したらよろしいか。
TR   2019/06/09(Sun) 10:40 No.1627 記事編集
Re: 続8ーPWM
TRさん,はい,TRさんがおっしゃってたのは,

X9Cの500μsでしたか。

これは,サンプリングではなく,

X9Cが一つワイパーを動かすのにかかる時間と,

私は理解しました。

ですから,次の動作まで,500μs 待つのだと思ってました。

動作の途中で,次の命令しても,受け付けない,

と思ってました。
mabo   2019/06/09(Sun) 12:27 No.1628 記事編集
Re: 続8ーPWM
maboさん、右に同じです。
TR   2019/06/09(Sun) 12:36 No.1629 記事編集
Re: 続8ーPWM
その辺りは2つの値が記載されています。
命令自体は1usで良い筈です。
その後にワイパーが動いて完了するまでが最大500usです。(標準で100us)
ワイパー自体は“make-before-break”動作です。
つまり、次のワイパーを繋いでから前のワイパーを切ります。

※必ずしも待たなければならない訳では無いと思います。
つまり、「待て」と書いてあるわけではありません。

けれども、例えば30ワイパーとかを連続(2us)間隔で命令を入れれば、並列で数ワイパー繋がり、瞬間的に抵抗が下がります。
その辺りをどう判断するかです。実際には仕様上、1つのワイパー動作でも1つ並列状態にはなります。

私は、確実だと思う方法を書いただけです。
例えば10usでwhileループを回しても動作はすると思います。
猛牛ロック   2019/06/09(Sun) 17:36 No.1630 記事編集
Re: 続8ーPWM
TRさん,猛牛ロックさん,おはようございます。

TRさん,初期化関数変更して,抵抗どうなりましたか?

ワイパー一番端に行って,40Ωになったでしょうか。

私は,X9Cまだ届かないので,

疑似X9C作成して,あそんでました。

私のPWMコントローラーのボリュームと換装して,いじってみたら,

回転数は,

  90kΩ 1200rpm
  80kΩ 4300rpm
  70kΩ 6000rpm
  60kΩ 7000rpm
  50kΩ 7700rpm
  40kΩ 8100rpm
  30kΩ 8500rpm
  20kΩ 8700rpm
  10kΩ 9100rpm

 Ωで書いてますけど,10kΩの抵抗10個で,

 100kΩ(およそ90kΩ)にはなりませんでしたので,

   90kΩ→→10kΩ1個====10kΩ9個の分圧

 の結果ぐらいの意味しかないと思いますが,

 こんな結果でした。
 
 グラフにしてみると,Cカーブのボリュームのグラフ

 に近い傾向でした。


==========================
猛牛ロックさん,TRさん,下記の様な記事を見つけました。

https://www.cnczone.com/forums/mach-software-artsoft-software-/241922-pid-control-spindle-speed.html

この書き込みでは, PID control は,SS等ではできない

の書き込みでした。

パラレルで試すの,面倒ですねえ。

mabo   2019/06/10(Mon) 11:00 No.1633 記事編集
Re: 続8ーPWM
皆さん済みませんでした。

やはり、ローパスフィルターは必要でした。
PICのプログラムは、ADコンバーターでした。
なので、PICに入れる信号はローパスフィルターでアナログ化しなければなりません。
すっかり、勘違いしていました。

SEC基板〜ローパスフィルター(10μ・22Ω)〜PIC〜x9c〜ML4
でした。


************
maboさんへ、

>ワイパー一番端に行って,40Ωになったでしょうか。


x9cの1kΩを追加しましたので、
これが来たら、試すつもりです。
若し、好転しなくても、計画は進めてみます。
ML4のモーターが回れば、良しとします。
欲を言えば、実際に使えたらいいのですが。
今回の計画は、複雑です(笑)


それから、
1633の実験結果を見ると、全体の1割程度の抵抗値は、気にしなくてもよさそうですね。
というのも、予期してスピンドルモーターが回るなら、それはそれでいいと思います。
止まらなかったら、やばいけど、そういった事はないでしょうから。

理由
プログラムで、スピンドル停止の指令があると思うからです。
TR   2019/06/10(Mon) 11:29 No.1634 記事編集
Re: 続8ーPWM
maboさんへ

>この書き込みでは, PID control は,SS等ではできない


グーグル翻訳で解明しようとしましたが、ちんぷんかんぷん。

でも、maboさんの解説のとおりでしょうから、
マッハのPIDは、自分のSSでは無理だとわかりました。
有難うございます。
TR   2019/06/10(Mon) 13:52 No.1635 記事編集
Re: 続8ーPWM
TRさん,猛牛ロックさんこんばんは。

前記事で,PIDはSSでは動かないの記事を見つけた,
と書きました。

その記事は,

Jeff Birt at Warp9 says that one cannot use the PID
control with an external motion control device (eg ESS)

なんですけど,これ,又聞きなんでしょうかね。

本家 Warp9 のフォーラムのぞいてみたのですが,

PIDの話題が結構でてます。

もし動かないなら,話題にならないような気がしてきました。

MACH4でのコントロールの様子ですが,添付のグラフがありました。

もうちょとあさってみます。

PIDのことについては,分かり易いHPがありました。

http://www.picfun.com/motor05.html


◯mazonにX9Cはたのんだのですが,まだきません。

いろいろあさってたら,別な物見つけたので,
それ,追加で注文しました。

https://jp.rs-online.com/web/p/digital-potentiometers/5236816/

マニュアルも日本語のありました。

https://www.analog.com/media/jp/technical-documentation/data-sheets/AD5220_JP.pdf

分かれば,こちら頼んだのにと,思いました。

mabo   2019/06/10(Mon) 23:47 No.1636 記事編集
Re: 続8ーPWM
maboさん、おはようございます。

自分のx9cですが、壊れてしまったようで、
昨晩から、x9cにつなげたモニター用LEDが点灯しなくなりました。


取説、ありがとうございます。
INC・UDは、プルアップしないといけないようですね。
早速、INK/UDがつながっているPICの各ピンをプルアップに変更します。

それと、UP/DOWNのきっかけは、立下りエッジ検出のCLK=INKとなっていますね。
これで、初期化関数にある↓の意味が分かりました。

for (char i = 0; i < 100; i++) {
inc = 0;
__delay_us(1);
inc = 1;
__delay_us(500);
}


>分かれば,こちら頼んだのにと,思いました。

今回は、比較的に低廉な商品でよかったですね。
バイクの方は、そうはいきません、よくやりましたよ(笑)

TR   2019/06/11(Tue) 06:24 No.1637 記事編集
Re: 続8ーPWM
maboさんへ、 もう一件失礼します。

SEC→ローパスフィルター→PICAD変換→X9C→コントローラー→適当なDCモーター

この流れで、ローパスフィルターは成功しましたか?
成功しているようであれば、CとRの数値を教えてください。
また、カットオフ周波数も分かればお願いします。

というのも、↓の記事が目に止まりました。



No1625
プログラムは外国の諸兄,回路は日本の諸兄,

という組み合わせで,ローパスフィルター入れて,もがきました。

結果,ローパルフィルタ入れるとデジタルのサンプリング

できなくなりました。
TR   2019/06/11(Tue) 07:30 No.1638 記事編集
Re: 続8ーPWM
TRさん,おはようございます。

TRさん,取説は,X9Cのものではないので,

お間違いのないように。

AD5220という型番のものです。

>SEC→ローパスフィルター→PICAD変換→X9C→コントローラー→適当なDCモーター

実機が届いてないので,LEDでのPICの動作確認ですが,

SS→→ローパスフィルター→→PICAD変換→LED

で,動作の確認はしてます。

X9C→コントローラー→適当なDCモーター

の部分が未確認です。

ローパスフィルターは,20kと10μF だったと思います。


ローパスフィルターいれて,だめだったのは,

今考えると当たりまえなのですが,デジタルで受けたからです。

ローパスフィルタ(日本の諸兄の配線図)→→デジタル受け(外国の諸兄のプログラム)

での失敗です。ローパスフィルターに使った抵抗とコンデンサーの選択の失敗ではなくで,

アナログ→デジタル

のながれでのあたりまえの失敗でした。今週には,

X9CもAD5220も届くと思いますので,確認しようと思ってます。

それから,パラレルでのPIDの検証もしたいと思ってます。
mabo   2019/06/11(Tue) 09:40 No.1639 記事編集
Re: 続8ーPWM
maboさん

もうそろそろくるということで、ちょっと。
初期化関数に気になる点があります。
x9cに電源を入れて直ぐに、モニター用ledが点灯します。ただ、実際の影響は、定かでありません。

ローパスフィルターの情報有り難うございます。

実際、スピンドルが回るか?
TR   2019/06/11(Tue) 10:06 No.1640 記事編集
Re: 続7ーPWM
maboさんへ、

VGSの電圧ですが、2Vからですね、もっと低い電圧からの方がいいと思います。
TR 2019/06/07(Fri) 12:51 No.1597  記事編集
Re: 続7ーPWM
うわー、またまた引っかかってしまった―

…と思ったらTRさんが立ててくれてた(^^)/


> TRさん

薦める方法は特にありません。使用者が何を求めているか?でしょう。
総体としては、ちゃんとGコードで回転数まできちっと制御するのがマシンとしてはベストなのでしょう。
けれども私は、切削途中で様子を見ながら手動で変えたいタチなので、全くそのような制御は望みません。
強いて言えば、Gコードが終わった時に同時に止まってくれればOKという感じです。

つなぎ方から言えば、そのつなぎ方でも良いかもしれないし、上手くはいかないかも知れないし、といった所です。
重要な部分は最終的な部分、つまりx9c〜ML4が上手く行くかどうかです。
ここをテストしなければ方針も定まりません。

>デジタルでやった方が良いです。
これは「デジタル信号を受信するなら」デジタルで受けた方が良い、と言っただけです。アナログ信号ならADCで受けます。

>Maxでは1kΩ程度ですね。
これは〜4.5Vの部分です。5Vに「0.5V足りない」、という部分が1kΩ相当という意味です。

X9Cに関して、簡潔に言えば、出力ピン=VWピンからLEDを繋いだら(電気を使ったら)ダメという事です。
LEDを取った状態で計測しなければ意味がありません。



> MABOさん
電気を流す時間と回転数が比例するとは思えません。例え合わせたとしても、トルクをかけるとまた条件が変わるでしょう。
あくまで、MACHからの信号は目標回転数としてくるのであって、実際の回転数は別物として制御する必要があると思います。
※これはシンクロにチェックを入れない=PWMで目標回転数を伝える設定の場合です。

で、MACHにその機能(目標回転数に合わせてPWM信号が変化する)があるのなら、そっちがどう動くのかに期待しています。
猛牛ロック   2019/06/07(Fri) 12:57 No.1598 記事編集
Re: 続7ーPWM
>X9Cに関して、簡潔に言えば、出力ピン=VWピンからLEDを繋いだら(電気を使ったら)ダメという事です。
LEDを取った状態で計測しなければ意味がありません。


抵抗値計測の際を言っているのでしょうか?
無論、LEDやLED付属の抵抗を外しています。

それでも、300〜8500Ωです。
TR   2019/06/07(Fri) 13:58 No.1599 記事編集
Re: 続7ーPWM
いいえ、電圧を測る際の事です。

となると、RH-RL間は8200Ωなのでしょうか?
で、抵抗値が8500Ωは一応、想定内の数値です。
でも300Ωは多すぎますね。
まぁ、ワイパーの抵抗はあまり関係ないでしょうから、一番大事なのは出力される電圧値です。

でも、https://www.instructables.com/id/X9C103P-Basic-Operation/
あたりの結果が完璧なだけに、何故そんな特性なのか疑問です。
まぁ、販売元なので、信用できるデータかは判りませんけど。
猛牛ロック   2019/06/07(Fri) 14:45 No.1600 記事編集
Re: 続7ーPWM
猛牛ロックさんへ

英語ができて羨ましいです。

初期化関数の99回ダウンの数値を100に変更
ついでに、アップも99から、100に変更
抵抗値は、下が210Ωになりました。

データシートには100ワイパーとか書いてあったけど、
0を含んで数えている、含んでいないに迷うと、
どっちなんだろうと、悩みます。 
起算値を0にしてとか、表現をして欲しい。

上限の約8.5kΩは、データシートに
End-to-End Resistance, ±20%
と表記されていたので、この関係でしょうか。

一番心配なのは、回りだしてしまうことです。
TR   2019/06/07(Fri) 15:17 No.1601 記事編集
Re: 続7ーPWM
> 100ワイパーとか書いてあったけど、

その辺りは一緒ですよ。
で、ワイパー抵抗が300→210と約90Ωのダウンですね。
もしかしたらその下に2段階あるのかもしれません。
そして2つ下がったら40Ωになるのかも??
私のプログラムが悪いのかもしれませんね。※場合によってはその回路も含む


例えば、PICは1.8V?から動作します。一方、X9Cは推奨動作条件は5V±10%とかなり狭い範囲です。
で、100ufのコンデンサを付けたらゆっくり電圧は上昇しますから、最初にPICだけ起動して、X9Cが準備が出来る前に
初期化関数が走っている可能性があります。
なので、・・・

初期化関数の前に
__delay_ms(100);
と入れて試してみてください。


で、電圧の方ですけど、Vwの先に何も繋がなければ0〜5Vになると思っています。
(ワイパー抵抗は関係なく、という事です)
上も下も頭打ちなんで、さっぱりわかりません。


> 一番心配なのは、回りだしてしまうことです。
全くその通りですね。


<追記します>

私の読み取った限りでは、ワイパー抵抗とはいわゆる、FETのオン抵抗というやつじゃないかと思っています。
(確信はありませんけど)
つまり、添付図の赤点線の部分の抵抗だと思っています。
そうだとしたら、変形させれば右図のようになるので、ちゃんとRLに繋いだ電圧からRHに繋いだ電圧まで取得出来るだろう、
と考えています。

実際、そうなってくれないと困るんですけどね。

猛牛ロック   2019/06/07(Fri) 15:45 No.1602 記事編集
Re: 続7ーPWM
猛牛ロックさんへ

今、網戸を張り終えました〜。簡単。

おっしゃっているのは、下記の通りでしょうか?
試しにやってみましたが、相変わらず210Ω〜8.5kΩです。

   記
__delay_ms(100);
//初期化関数
x9c_init();
while (1) {


電圧ですか。
テスター棒の黒をGNDに
VWには何もつけずに、赤テスター棒をVH(テスター棒以外は、何も付けない)を計測
結果、0V

網戸と違って難しいです。


お写真すみません。
抵抗は、0〜99で、100ですね。
TR   2019/06/07(Fri) 16:54 No.1603 記事編集
Re: 続7ーPWM
プログラムはその通りです。
相変わらずですか。じゃあ、ワイパーは一番下まで来ているのかなぁ?
まぁ、上記のように、ワイパー抵抗はあまり関係ないと思っています。
位置が下がっている事が重要です。
重要なのは出力の電圧が0〜5Vまで動いてくれる事です。

VLにはGND、VHには5Vを繋いでください。


ウチは障子がボロボロになってるんだよなぁ(*_*;
猛牛ロック   2019/06/07(Fri) 17:02 No.1604 記事編集
Re: 続7ーPWM
maboさんへ
PWM用FETいいやつを思い出しました。

自分のクーラントポンプもPWMでやっています。
パワーMOS FET  IRLI520NPBF
もともとは、秋月電子のPWMキットに使われていました。確かそうです。
TR   2019/06/07(Fri) 21:07 No.1605 記事編集
Re: 続7ーPWM
TRさん,猛牛ロックさん,こんばんは。


今日は,DCモーターをPWMコントローラーのボリュームの

方に切り替えて,あれこれやってみました。

MACHからのPWMのDUTYをオシロで確認しながら,

ボリュームで,MACHへの入力RPMを変化させたとき,

DUTY比の変化があるのかないのか,確認しました。

同時に,P I Dのそれぞれの数値も大きく変えてみました。

結果,目視ですので,DUTYに多少の変化は見られるような気がするものの,大きな変化は少ない感じでした。

ただ,Pの値を大きくすると,DCモーターの回転が1秒ぐらい回転して,すぐ止まってしまいますので,

影響はあるようです。

調整の幅があるとすれば,そんなに大きくない感じです。



TRさん,FETの紹介ありがとうございます。

このへんは,本当に苦手で,困ります。

今実験に使ってるDCモーターが 24V 150W 6A


のもので,突入電流等を考えると,ちょっと,ぎりぎりかな,

なんて,思ってます。

それと,今使ってるPWMコントローラーのボリューム調べましたが,

やはり,5Vのコントロールで,100Kですので,

TRさんの注文したX9Cで使えるかもです。

ML4で実験する前に,PWMのコントローラー等で,

できるのなら,実験した方がいいかもですね。

コントローラーは,2800円ぐらいなので。

https://www.amazon.co.jp/ZhongKiYi-12V-110V-DC%E3%83%A2%E3%83%BC%E3%82%BF%E3%83%BC%E3%82%B9%E3%83%94%E3%83%BC%E3%83%89%E3%83%89%E3%83%A9%E3%82%A4%E3%83%90%E3%83%BC%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%BCPWM-MACH3%E3%82%B9%E3%83%94%E3%83%B3%E3%83%89%E3%83%AB%E3%82%AC%E3%83%90%E3%83%8E/dp/B07P6VPK5X/ref=sr_1_2?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=%EF%BC%B0%EF%BC%B7%EF%BC%AD+%EF%BC%AD%EF%BC%A1%EF%BC%A3%EF%BC%A8%EF%BC%93&qid=1559915654&s=gateway&sr=8-2


猛牛ロックさん,ありがとうございます。

>電気を流す時間と回転数が比例するとは思えません。例え合わせたとしても、トルクをかけるとまた条件が変わるでしょう。

だと思います。他の物はわかりませんが,今使ってるPWMコントローラーの

FETの特性が偏ってるようなきがしてるのです。

仮に,MACHに調整の機能があったとしても,

その,調整範囲を超えてるような気がするのです。

実際はわかりませんが。

猛牛ロックさんは,否定的なご意見でした

諸兄のHPにある,回転数を見るとMACHへの入力の

5%の範囲に収まってるとの記事があるので,

FETの違いなのかなと思った次第です。
mabo   2019/06/07(Fri) 22:56 No.1606 記事編集
Re: 続7ーPWM
maboさんへ


質問
ご紹介くださった、PWMコントローラーですが、秋月電子と同じ機能を持っていますか???
http://akizukidenshi.com/catalog/g/gK-06244/
以前、DCモーターのスピードコントロールに使っていました。

アマゾンの商品説明は分かりずらいのでお聞きしました。
同じ機能だと思いますがいかがでしょうか?


>同時に,P I Dのそれぞれの数値も大きく変えてみました。

PIDは、?今回の波形を見る機器ですか?
TR   2019/06/08(Sat) 05:42 No.1607 記事編集
Re: 続7ーPWM
maboさんへ
今、machの画面で気づきがありました。
smoothstepperのプラグインコントロール クリックして、
さらに、
スムスステッパーのデータモニタリングをクリックすると現れる画面です。
写真の右上方、赤矢印にPWMと怪しい!!
クリックするのでは、そうしたら、SSで、スピンドルの為につないだピンからPWMを発生できるのでは??

でも、今回の計画がうまくいったら、
FUSION360のCAMで作ったプログラムで
スピンドル迄、制御できるので
大変便利になる。

TR   2019/06/08(Sat) 09:01 No.1608 記事編集
Re: 続7ーPWM
> MABOさん

DCモータの特性から言えば、確かに電圧と測度は比例関係にありますね。
ただ、マブチモータとかはそうかもしれませんけど、工業用の可変速モータや
スピンドル用のモータはちょっと特性が違うと思います。
トルクをかけてもマブチモータのように速度は落ちませんし、(超)低速でも回りません。
回り始めた瞬間にはある程度の速度になります。
まぁ、FETを含めたドライバの特性という事になるんでしょうか。

私自身はモータとドライバと分けてテストする経験が無いので変えればより、比例に近くなるかもしれません。

それと、No.1595の特性ですけど、かなり良いと思います。でもこの特性図から、比例云々はわかりません。
この図で見るべきところはどの位でスイッチングされるか、そして、何アンペアまで流せるか、と言った事です。
「5VのPWMなら半分の2.5Vでスイッチングされているのが良い」、という事になります。
温度特性にもブレが無いですし、電流値、まぁそれはFETの種類で大きく変わりますけど、自分の予定よりも充分大きければ
良いのではないでしょうか。
ただ、問題の「比例関係」の部分では関係のない特性図です。
要はスイッチング速度が速い、ターンオン時間とターンオフ時間が同じ(でかつ短い)という部分だと思います。
FETのゲートはコンデンサと同じですから容量が少ない物が良いと思います。
で、あとやはり気にするのはオン抵抗です。やはり低発熱の物が良いですよね。
といっても、アナログ回路は聞きかじり程度ですから。


あと、MACHの方ですけど、[CLOSED LOOP]にチェックは入れましたよね?(確認まで)



> TRさん

秋月のやつは「ボリュームでPWM設定→モータ制御」という手動スピードコントローラです。

アマゾンのやつは、万能タイプです。
電源もAC100Vも入れれますし、コントロールも手動、MACHからのパルス入力の切り替えもできます。
駆動能力も数倍〜1桁程度違うと思います。
(FETは基板の真裏=放熱器の所にあるのでしょう。確認できません)
猛牛ロック   2019/06/08(Sat) 11:54 No.1609 記事編集
Re: 続7ーPWM
maboさん、猛牛ロックさんへ


>MACHからのパルス入力の切り替えもできます。

いずれにしても、DC電圧をPWM化できるわけですよね。
このコントローラーの目的は、DC電圧をPWM化することですよね。

そうなると、

SS〜SEC基板(PWM化)〜ローパスフィルター(アナログ化)〜アマゾンPWMコントローラー(PWM化)となるわけですね。
ここから、自分の場合

〜x9c(デジタル処理で平準化される電気エネルギー)〜ML4


上記の流れをmaboさんは、テストの上お勧めなんだろうか?

よくわからないのですが、、
自分の目的は、ML4についている可変抵抗をx9cに換装して、うまくいったらスピンドルモーターを制御できるデス。
この場合、
〜ローパスフィルター(アナログ化)〜アマゾンPWMコントローラー(PWM化)
この部分は不要に思いますが、如何でしょうか?

ここ数回のやり取りでは、そう言われている感じがしますけど。


無論、いきなりではなく、
既存の制御システムを使て、LEDの点灯を確認してから、ML4とx9cを繋ぎます。
テスト方法
SS〜SEC基板(PWM化)〜x9c(デジタル処理で平準化される電気エネルギー)〜LED



しかし、
猛牛ロックさんのプログラムを学習していますが、なぜ、x9cが、約8.5kΩまでしか上がらないんだろうか?
分かりません。
TR   2019/06/08(Sat) 12:49 No.1610 記事編集
Re: 続7ーPWM
猛牛ロックさんへ

プログラムについて教えてください。

1行目で、初期化関数を呼び出しているので、
1行目で、x9cの値を0としていますよね?

7行目
for文でtargetに、adc配列の値を0,1,2,3の計4回の合計値を代入させていますよね、

8行目
7行目により、4回分雪だるまにしたtargetを、ここで、40.93で割っているのですよね。

9行目は、またまた、難しい、
9行目は、x9c_up関数を呼び出し、
且つ、
初期値0で始まる,//外部変数 char x9c_valの値を
1づつtargetの直近下位の値まで引き上げているのでしょうか?

//初期化関数
01 x9c_init();
02 while (1) {
03 static unsigned int adc[4] = {0};
04 static char num = 0;
05 unsigned int target = 0;
06 adc[(++num)&3] = adconv();
07 for (char i = 0; i < 4; i++)target += adc[i];
08 target /=40.93;
09 if (target > x9c_val)x9c_up();
10 else if (target < x9c_val)x9c_dowm();
11 __delay_ms(1);
12 }


長くなってすみません。
宜しくお願いします。
TR   2019/06/08(Sat) 13:07 No.1611 記事編集
Re: 続7ーPWM
TRさんの場合=可変抵抗方式なら、関係ないと思います。

> 既存の制御システムを使て、LEDの点灯を確認

いやいや、そんなことをする必要ありません。
例えばその可変抵抗の元になっている3本の線(仮にL5、Lg、Loutとすると)、
@10kΩ程度の抵抗を、LgとLoutを繋いだ状態で動くか?
A10kΩの抵抗を、L5とLoutに繋いだ状態で動くか?
と言った事です。@で動かないで、AでMAXで回れば大丈夫です。
Aで、低速回転や動かないのなら駄目、という事になるかも。

LEDはPICプログラムの確認にしかなりません。


> x9cが、約8.5kΩまでしか上がらないんだろうか?
RH-RL間の抵抗はどのぐらいでしょうか?
実際にはその抵抗値は問題ではありません。問題はワイパー位置が0から99まで動いているか、です。

ML4は抵抗値を計測している訳では無いので、とにかく、電圧の方を計測してください。


if (target > x9c_val)x9c_up();
「目標値」が「現在のワイパー位置」よりも大きければ、ワイパー位置を1つあげる。
という意味です。数段階ずれていたら、whileのループを数回回って、目標値をワイパー位置を同じにします。


> 10 else if (target < x9c_val)x9c_dowm();
最期は、x9c_down();です。
猛牛ロック   2019/06/08(Sat) 14:20 No.1612 記事編集
Re: 続7ーPWM
計測は、新しいx9c102が来てからにしましょうよ、
実は、ブレットボードからx9c103外してしまいました。
どうしようもなくなったら、再度ブレットボードを組み立てますよ。

9行目は、
C言語不慣れな自分にとっては、見慣れない使い方でした。
どうしてかというと、
関数を呼び出して、かつ、if文が同時にあるからです。
今までは、if文の{}内は、せいぜい、変数でしたから。


x9c_up関数は、wiper upさせる3条件(CS(グランドへ),INK,UD)を実施させる関数ですよね?




//初期化関数
01 x9c_init();
02 while (1) {
03 static unsigned int adc[4] = {0};
04 static char num = 0;
05 unsigned int target = 0;
06 adc[(++num)&3] = adconv();
07 for (char i = 0; i < 4; i++)target += adc[i];
08 target /=40.93;
09 if (target > x9c_val)x9c_up();
10 else if (target < x9c_val)x9c_dowm();
11 __delay_ms(1);
12 }



>例えばその可変抵抗の元になっている3本の線(仮にL5、Lg、Loutとすると)、
@10kΩ程度の抵抗を、LgとLoutを繋いだ状態で動くか?


猛牛ロックさんのの言われている意味が想像つきません。
LEDの代わりに、10kオームをつないだ場合、既存制御システムでマッハが動作するかということでしょうか?

そうであれば、x9cの3端子をL5、Lg,Loutに繋ぐのかな?
TR   2019/06/08(Sat) 15:08 No.1613 記事編集
Re: 続7ーPWM
猛牛ロックさんの

プログラムですが、>です。
=を付けた方が良いのでは?

前 if (target > x9c_val)x9c_up();

変更後 if (target >= x9c_val)x9c_up();
TR   2019/06/08(Sat) 18:01 No.1614 記事編集
Re: 続7ーPWM
TRさん,猛牛ロックさん,こんにちは?

今日は,ちょっと,山仕事で疲れてます。


さて,TRさん,

>同時に,P I Dのそれぞれの数値も大きく変えてみました。
これですけど,

P I Dは,MACHにある設定です。

Config→Ports and Pins→Spindle Setup


概要は,下記にもでてます。

https://ja.wikipedia.org/wiki/PID%E5%88%B6%E5%BE%A1



紹介した◯mazonのPWMコントローラーですが,

アリにもより安い値段でありますね。MACH3 PWM でくぐるとかかります。

このコントローラー紹介したのは,

X9CとML4をいきなりつなぐのは,リスクあるかなと思ったからです。

ML4の回路がどうなってるかわかりませんし,いきなりより,
リスク減るかななんて思った次第で,他意はありません。


多分,動作の確認は,できると思います。

このコントローラーを使えば,二通りの確認ができます。

◯SEC(PWM出力) → ローパスフィルター(直流変換) →X9C → コントローラー(電圧制御)→適当なDCモーター
(コントローラーのボリュームとX9Cを置き換え。)

私は,これ,実機がきたら試してみようと思います。

電圧で制御する方が,DUTY比でコントロールするよに,

比例動作に近い動きになるかも,なんて気もしてきました。


◯SEC7(PWM出力)→ → コントローラー → 適当なDCモーター
(コントローラーにPWM信号を直接入れる。)

のふた通りの確認ができまると思います。

ただ,TRさんには,2番目の確認は,必要ないかもですね。


>〜ローパスフィルター(アナログ化)〜アマゾンPWMコントローラー(PWM化)
>この部分は不要に思いますが、如何でしょうか?

はい,Amazon,アリ,のコントローラは,あくまでも,テストのためで,X9Cと置き換えがうまくいけば,コントローラーは必要ありません。

SEC→→ローパスフィルター →→ PICのAD変換 →→ X9C →→ ML4

でいけるかもしれません。

それから,LEDでの確認は,猛牛ロックさんのおっしゃるように,

あくまでも,PICの動作の確認だと思います。

そのPICのプログラムを使って実機が動作するかどうかは,

その,次の段階のように思います。



猛牛ロックさん,いろいろありがとうございます。

もちろん,Closed loop にはチェックは入れました。

いろいろやってますが,ふと,SSを介さないで,パラレルポートだけだと,どうなのか,

気になり出しました。

パラレルでの確認となると,使ってないデスクトップ,
出さなきゃならないので,ちょっと面倒なのですが(笑)。

今日,別なFET,等部品が届きましたので,

ドライバー作成して,実験してみたいと思います。

mabo   2019/06/08(Sat) 18:31 No.1615 記事編集
Re: 続7ーPWM
TRさん,追記です。

猛牛ロックさんがおっしゃってるのは,

ML4のボリュームの部分にきている3本の線のところに,

抵抗をそれぞれつないで見るということだと思います。

半固定抵抗を固定抵抗に置き換えてみて,

下記のようにすれば,ということだと思います。

>いやいや、そんなことをする必要ありません。
>例えばその可変抵抗の元になっている3本の線(仮にL5、Lg、Loutとすると)、
>@10kΩ程度の抵抗を、LgとLoutを繋いだ状態で動くか?
>A10kΩの抵抗を、L5とLoutに繋いだ状態で動くか?
と言った事です。@で動かないで、AでMAXで回れば大丈夫です。
>Aで、低速回転や動かないのなら駄目、という事になるかも。

実機がきたら,これを,私は,これをPWMのコントローラーで,やってみます。
mabo   2019/06/08(Sat) 18:39 No.1616 記事編集
Re: 続7ーPWM
添付図のように、元々ついているボリュームから3本外して、
@のテストなら右の図のように接続して、(残りの1本は図のように開放)
スピンドルをオンにして下さい。
Aは青-赤間に抵抗です。

他には何もつけません。その外したボリュームがどういった使われ方なのかの確認作業です。


> if (target >= x9c_val)x9c_up();
駄目です。

> if (target > x9c_val)x9c_up();
> 「目標値」が「現在のワイパー位置」よりも大きければ、ワイパー位置を1つあげる。
> という意味です。

同じ値なのにワイパーの位置を上げたら、目標位置を行き過ぎますよね?
目標位置に達していたら、何もしません。

猛牛ロック   2019/06/08(Sat) 18:47 No.1617 記事編集
Re: 続6ーPWM
うわー、また引っかかってしまった―


そうです。大体アナログと同じです。
けれども出力は高くありません。

なので、TRさんの図のように直接X9Cからスピンドルへと繋ぐか、
或いは私の図のようにボルテージフォロワ回路を通してから入れるのか、
と思っていました。
※スピンドル部の可変抵抗の電圧が5Vなので、多分、そこでもADCで受けているような気がするので、
直接でもいけるような気がします。

それと、ローパスフィルターを通した波形はNo1543です。
フィルタを通さなければ当然、PWMのHIGHとLOWを繰り返す波形です。角は多少崩れるでしょうけど。

時定数を下げれば(22kΩ×10UF →15kΩ×0.1UF)当然充電時間が早くなる分、元の波形が残ります。
つまり、数倍、波が高くなります。
尚、重要なのは「カットオフ」周波数では無く、つまり「ハイカット」の方では無く「ローパス」の波形です。
今回の要件は、「ハイの部分(ノイズ)をカットして、どうやってロー信号をそのまま取り込むか?」という要件ではありません。
波は時定数を大きくすればするほど充電時間に時間がかかる分、平に近づきます。

※でも10uFの電解コンと0.1uFのセラコンを両方つけるとスパイクが無くなるかも?


あと、TRさんの図では、そもそもローパスフィルターが付いてませんけど?

猛牛ロック 2019/06/06(Thu) 09:37 No.1575  記事編集
Re: 続6ーPWM
猛牛ロックさん、
x9cの使い方ですが
ud やincにはad変換後の値を繋ぐのですか?
であればオペアンプは不用
ですか?
x9cのデータシートを和訳するとカウンターがとか出て来ます。

クロックとかデータ信号とか気になって来ました。
pic(ad値出力値)からのx9cへ渡されるのは8ビットのデータ信号ですか?

それから、自分とmaboさんは 、共にスピンドルモーターを回そうとしていますが、やり方が違います。
自分、ML4のスピンドルモーターのスピードコントロール用アナログ可変抵抗をデジタルポテンションメーターに換装し、結果的にスピンドルモーターを制御する。だから、うまくいったらと消極的表現をしています。

でも、maboさんは 、SEC基板からの信号をスピンドルモーター用インターフェースに繋ぐとカーネルスピードとPWM基本周波数の設定が上手く行かない。どうも、machの回転数と実際のスピンドルモーターの回転数に齟齬があるとか。
で、ローパスフィルターでPWMを均して、再度、PWM信号を出そうとしていると思います。

なので、自分の場合、ローパスフィルターは不用です。

>直接でもいけるような気がします。

この意味は 、オペアンプ無しでOKということですか?
TR   2019/06/06(Thu) 14:39 No.1576 記事編集
Re: 続6ーPWM
udやincに繋ぐのはPICの出力=操作用のピンです。

> pic(ad値出力値)からのx9cへ渡されるのは8ビットのデータ信号ですか?

いいえ、この間のx9c_up関数やx9c_down関数です。udピンを合わせて、1クロック=↓↑入れるだけです。

> machの回転数と実際のスピンドルモーターの回転数
PWMはあくまでも電源を○○パーセント繋ぐ、というだけですから、必ずしもモーターの回転数と比例関係にあるとは限りません。
もちろん+方向にもっていけばモータの速度は上がるでしょうけど。
正しく回転させるには、実際の回転速度を読み取ってフィードバックさせる必要があるでしょう。
つまり、MachからのPWMはあくまで目標値で、それに応じて、その速度に回転数を読み取りながら上下させる、という感じかと。
※MABOさんの実験は、「実際の回転数をMachに取り込めば、自動でMachからのPWM出力が変化してその速度にしてくれる」という機能だと思うのですけど、
そちらの方に期待しています。

ローパスを入れるか入れないか、つまり、デジタルで読み取るか、アナログにするかは好みの問題です。
私の好みはデジタルです。

※アナログフィルターを入れるのならPICに繋がずにそのままスピンドルの可変抵抗でもいけると思います。
というのは、参考サイトはPCからの出力で、TRさんやMABOさんはSSボードだからです。
PCのカーネルは25kHzとかですけど、多分SSボードは4MHzとかですよね?高めの周波数、例えば10kHzとかでLPFを入れれば
それなりになると思います。

どういったつなぎ方にするかはTRさんの問題ですから、私からは何とも言えません。


> この意味は 、オペアンプ無しでOKということですか?

そうです。無くても大丈夫な気はします。でも実際には試してみないと判りません。
猛牛ロック   2019/06/06(Thu) 15:21 No.1577 記事編集
Re: 続6ーPWM
猛牛ロックさん、
>いいえ、この間のx9c_up関数やx9c_down関数です。udピンを合わせて、1クロック=↓↑入れるだけです

1クロックとはadcon関数による値(10ビット)を送るクロック信号ですか?


>PICに繋がずにそのままスピンドルの可変抵抗でもいけると思います。

つなぎ方は
SEC基板からx9c〜ML4ですか?
TR   2019/06/06(Thu) 15:56 No.1578 記事編集
Re: 続6ーPWM
> 1クロックとはadcon関数による値(10ビット)を送るクロック信号ですか?

adconはPIC内部のレジスタの事ですよね?今更何を言ってるのでしょう?
adcon=○○;
とかで、操作出来ます。わざわざピンの上げ下げをする必要はありません。
1クロックはピンの「上げ下げ」もしくは「下げ上げ」です。
X9Cの場合は下げた時にストローブされます。

> つなぎ方は
> SEC基板からx9c〜ML4ですか?

いいえ、ローパスでアナログ化して、XL4です。
例の参考サイトは、そのままのPWM信号をスピンドルのドライバに入れようとした、のですけど、周波数の関係で、PICの周波数変換ボードを作りました。
ローパスでアナログ化もやはり、周波数の関係でPC(パラレルポート出力)ではきついですけど、SSボードならいけるのでは?
元々、ローパスでアナログ化して、PICに入れてX9Cですけど、PICの前とX9Cの後は同じ電位なんですよね?
それなら、そのままでもいけると思います。10kHzの微細な波が影響を及ぼすような気がしませんから。
まぁ、それもやってみないと判らない事ですけど。
猛牛ロック   2019/06/06(Thu) 16:25 No.1579 記事編集
Re: 続6ーPWM
猛牛ロックさん

>いいえ、ローパスでアナログ化して、XL4です。

よく分かりません

つなぎ方は
SEC基板からローパス〜ML4ですか?

それと、ssからSEC基板の場合、マッハのカーネルスピードやPWM基本周波数の設定は不用ですか?

上げ下げの元は何?
pic端子から出る信号の元です。
お聴きします。
TR   2019/06/06(Thu) 16:41 No.1581 記事編集
Re: 続6ーPWM
SEC基板の事を忘れていました。ちょっと回路が判らないので今現在、判断付きません。
SSボードからは信号は取れないのでしょうか?

> SEC基板からローパス〜ML4ですか?
私の中ではSSボード→ローパス→ML4です。抵抗とコンデンサを使うだけです。

> マッハのカーネルスピードやPWM基本周波数の設定は不用ですか?
設定は当然必要でしょう。肝ですから。
そもそも、元々はスピンドル用のPWM出力していないんですよね?

> 上げ下げの元は何?
> pic端子から出る信号の元です。
元とは何を聞いているのですか?incピンに繋ぐ端子?信号の「先」ですか?
元はX9Cを制御する為に繋いだPICの出力端子で、先がX9Cのincピンです。


<追記します>

いやいや、SSボードの方も判っているわけではありません。

実際の所、Mach出力される信号はSSボードとSEC基板だとどのように出力されるのでしょうか?
聞きたいのは5Vなのか、反転されるのか、といった部分です。
普通に、反転されずに5Vで出力されるのなら、SSボードでもSEC基板でもどちらでも良いです。
猛牛ロック   2019/06/06(Thu) 17:09 No.1582 記事編集
Re: 続6ーPWM
とりあえず、もう一度図面を起こします。
猛牛ロックさんの写真を見て、見やすく書き直します。
TR   2019/06/06(Thu) 19:18 No.1583 記事編集
Re: 続6ーPWM
猛牛ロックさん、maboさん、こんばんは。

今日、x9c103(10kΩ)が届きました。
早速、テスト、方法は写真を見て下さい。

予想と違う動作をしました。
最大で5Vとなるところ、4.5Vでした。
157mv(min)〜4.5V(max)

プログラムでしょうか?

TR   2019/06/06(Thu) 20:43 No.1584 記事編集
Re: 続6ーPWM
TRさん,猛牛ロックさん,こんばんは。

猛襲ロックさん,さんっぷりんぐのプログラム,

いろいろありがとうございます。

のんびり,確かめてみようと思います。




TRさん,すみません,思い違いがあるようなので,

再度記述します。

いろいろやってますが,ローパスフィルターと,

ブログの記事は,分けてお考えください。

PWM→ローパスフィルター経由→ADC変換→出力(XC_9)

PWM→サンプリング(基本周波数の変換)→出力(PWM)

の両方試しています。



>最大で5Vとなるところ、4.5Vでした。

もしかして,最大動かしても残る 40Ω?

にしては,大きいですかね。

この辺,ちょっと,不明です。




MACHへの入力と出力に乖離があるのは,

PWMコントローラーのFET?にに原因があるのかな,

なんで,邪推してます。

そこで,FETで,ドライバー作り始めました。

幸い,手元に,2SC1815 やら 2SA1015 等のトランジスタ

あるので,

http://srd.s43.xrea.com/Circuit_library.htm

参考に,プッシュプル回路等,勉強しながら始めました。
mabo   2019/06/06(Thu) 22:05 No.1585 記事編集
Re: 続6ーPWM
maboさんへ

>PWM→ローパスフィルター経由→ADC変換→出力(XC_9)


XC_9って、なんですか?


そして、PWMの前はないのでしょうか? 〇の部分を聞いています。

〇→PWM→ローパスフィルター経由→ADC変換→出力(XC_9)


XC_9って、なんですか?
TR   2019/06/06(Thu) 22:17 No.1586 記事編集
Re: 続6ーPWM
データシートに
End-to-End Resistance, ±20%
この20%が原因でしょうか?
専門書の英語は変換が難しい、意味不明な和訳が出てきます。。


後発で、本来、欲しい1kΩのx9c102が来るので
試してみます。
TR   2019/06/06(Thu) 22:43 No.1587 記事編集
Re: 続6ーPWM
TRさん,こんばんは。

すみません,XC_9は X9Cの間違いです。

◯の部分ですが,

私の環境では,

 SS(ポート2 14ピン)→PWM

 SEC(汎用出力 14ピン)→PWM

 PC(シリアルケーブル横取り 14ピン)→PWM

どれでも,PWMの信号確認できてます。SS,SEC,PCがそれぞれ,◯に当たると思います。

要は,PWM信号が取り出せれば大丈夫なので。

ここのところ,SSから取ることが多いです。


MACHにもSSにもカーネルと基本周波数の設定あります。

ただ,どのように,関連してるのかは,不明です。

−−追記−−

 X9Cで,ワイパー最端まで動かしても,抵抗が残るようなので,

 必要なら,外部に回路(短絡の)付け加えて,PICで

コントロールするようかなあ,なんて,当初考えてました。

 その抵抗が,最高回転数に,どのくらい影響するかでしょうね。
mabo   2019/06/06(Thu) 22:50 No.1588 記事編集
Re: 続6ーPWM
maboさんへ

な〜んだ、すでに、x9cお持ちだったんですね!!
プログラムはどうしていたのですか?
アルディーノでしたか?
アルディーノなら、先達者がプログラムがあるようですね。
ご参考になされたのでしょうか?


>その抵抗が,最高回転数に,どのくらい影響するかでしょうね。

いわれたら、その通りですね。
これで、とりあえず、ML4のスピンドルモーターは回せそうです。
TR   2019/06/06(Thu) 23:09 No.1589 記事編集
Re: 続6ーPWM
猛牛ロックさんへ

拙い自分と掲示板でのやり取りは難しいですね。
申し訳ないです。


今回のプログラムで、4回、若しくは8回で割っていますが、
SEC基板と繋ぎ場合、SEC基板からの信号には、
乱れはないでしょうから、ローパスフィルターは不要、
そうなると、
4回とかで割る必要は、本来ないのでしょうか?



プログラムを動作500μとなっているので、4回サンプリングに戻しました。
平均をとること自体、いいことだと思います。
TR   2019/06/07(Fri) 06:35 No.1590 記事編集
Re: 続6ーPWM
TRさん,おはようございます。

いえ。X9Cの実機は手元にまだありませんので,

LEDのシュミレーションしてましす。

発送の連絡はありましたが,まだ,届いていません。

それから,先達の arduino のプログラムもみましたが,

見たい部分が,ライブラリーになっていて,ちょっと分かりませんでした。


それから,TRさん,ローパスフィルターは,

信号に乱れがあるから入れるのではなく,

今回は,AD変換で受け取るためです。

ローパスフィルターを使わないのであれば,

猛牛ロックさんが,後で書いてくれたような,

サンプリングのプログラムで,PWMのDUTY比を調べる必要あると思います。

 PWM出力→→ローパスフィルター(PWMのDUTYの変化を直流電流の大小に変換)→→X9Cの抵抗に変換

 PWM出力→→サンプリング(PWMのDUTYの変化をサンプリングで受け取りDUTY比を計算)→→X9Cの抵抗に変換

みたいになると思います。ローパスフィルターなしのPWM信号を,AD変換で受けたことないので,

どうなるかは,わかりませんが,もしかして,DUTYの変化を受け取ることできないかもしれないと思います。
mabo   2019/06/07(Fri) 09:00 No.1591 記事編集
Re: 続6ーPWM
> SEC基板からの信号には、乱れはないでしょうから
乱れが無いの意味が違います。
添付図のようなデジタル波形で、角が綺麗、とかそういった意味です。
アナログ化したら↓のような波形になります。
Machからは↑の波形で、HIGHとLOWの割合で回転速度を知らせます。
MAXを10000回転で設定して、S8000とGコードにかけばHIGHが4に対してLOWが1の割合で出力されます。つまり、速度のMAX設定にした割合を知らせます。
それをどう料理するかは利用者の問題です。


PC(MACH)からのPWMはデジタルですから、アナログ変換しないのならデジタルで受けます。
アナログ変換したのならADCで受けます。
勿論、デジタル信号も、アナログで受けてサンプル数を増やして、平均を出せば出来ますけど、
デジタルでやった方が良いです。
(来る信号は1023付近か0付近なのと1か0になるかの違いで、数が膨れ上がるかどうかの違いです)



> 157mv(min)〜4.5V(max)

0.157Vなので、3.14%≒300Ω程度ですね。
データシートでは両端は40Ωでmax100Ωですから2ワイパー分位はおかしいですね。
Maxでは1kΩ程度ですね。

maxの方ですけど、上の画像でLEDを付けていますよね?
これは2重の意味で駄目です。
1つはX9Cの特性です。
X9Cの出力は弱いのでLEDを直接光らせる能力はありません。
つまり、それだけの電流を流した時点で出力端子の電圧は狂います。
光らせるつもりなら、ボルテージフォロアでも作ってその先で光らせてください。。
そして、もう一つは電気の特性(オームの法則)です。(添付図→参照)
※可変抵抗部は両側の抵抗値の割合で電圧値を出します。でもそれは同じ電流を両側流す時です。
 V=I*Rのオームの法則で、Iが一定だからR1:R2はV1:V2になるのです。
 なので、添付図で↓方向に電流を流したらいけません。というか、流せば分圧の関係が崩れますから
 (図で言えばI*R1:I2*R2の関係になる)、当然ボリューム位置の値にはなりません。



プログラム的に気になっているのは最初の初期化部分です。ここで1ワイパー分おかしくなる可能性があります。

> //デバイス初期化関数
> void x9c_init(void) {
> ud = 0;
> for (char i = 0; i < 99; i++) {
> inc = 0;
> __delay_us(1);
> inc = 1;
> __delay_us(500);
> }
> x9c_val = 0;
> }

for (char i = 0; i < 100; i++) {
と99→100に変更しておいてください。
※その前にピンの初期化でincピンをHIGHにしてあれば問題無いのですけど、LOWで初期化した場合は
最初の1回は動きません。
勿論関数の最初に
inc = 1;
__delay_us(2);
を付けても良いです。

猛牛ロック   2019/06/07(Fri) 09:53 No.1592 記事編集
Re: 続6ーPWM
maboさん、有り難うございます。
そうか、出力14番からはPWMか、ゴチャゴチャになってました。

ローパスフィルターのコンデンサーは電解コンデンサーで、10マイクロですか?
TR   2019/06/07(Fri) 10:06 No.1593 記事編集
Re: 続6ーPWM
猛牛ロックさん
自分には話が長すぎます。

>デジタルでやった方が良いです。
(来る信号は1023付近か0付近なのと1か0になるかの違いで、数が膨れ上がるかどうかの違いです)

SEC基板~pic~x9c~ML4
アナログ可変抵抗をx9cに換装したいです。 この繋ぎ方をお勧め?



>Maxでは1kΩ程度ですね。

どこがMaxでは1kΩ程度ですか?
TR   2019/06/07(Fri) 11:22 No.1594 記事編集
Re: 続6ーPWM
TRさん,そうです。

私は,諸兄のHPと同じ,

  22kΩ
  10μF

を使ってやりました。



猛牛ロックさん,別件なのですが,FETは,なんかシビアなんですね。


見方よく分からないのですが,ID-VGS特性 なる表をみると,

当たり前でしょうけど,いろんなものがあるんですね。

添付のような特性のFETの方が,PWM等でコントロールするには,

あっているんでしょうね。

mabo   2019/06/07(Fri) 11:24 No.1595 記事編集
Re: 続6ーPWM
猛牛ロックさんへ

計測方法を伝えます。

電圧は確かに間違いでした。
でも、抵抗値も計測していました。

300Ω〜8.51kΩでした。
茶色矢印の間です。

TR   2019/06/07(Fri) 12:46 No.1596 記事編集
Re: 続続続続続ーPWM
またいっぱいになりました。

> 21行目 次の上げ下げは500マイクロ

それは、次の「ワイパーの」上げ下げは500usあける、という事でクロックの事ではありません。その前の1usはそれでいいです。
つまり、命令が入って、実行される=次のワイパーを繋ぎ→前のワイパーを切る、のにそれぐらいかかるから開けてくれ、という事でしょう。

No.1542の図で、オペアンプの電源になぜかコンデンサが付いていますけど?
猛牛ロック 2019/06/04(Tue) 12:23 No.1551  記事編集
Re: 続続続続続ーPWM
デジタルでの取得も決して難しいものでは無いですよ。
MABOさんはちょっと難しく考えすぎでは?
下記程度でアナログよりもちゃんと読み取れると思います。



#include <xc.h>

#define inc LATB3
#define ud LATA3
#define mach RB4

// クロック周波数指定
// (__delay_ms()関数が必要としているため)
#define _XTAL_FREQ 16000000
// プロトタイプ宣言
unsigned int adconv(void); //ADC読み込み関数


//外部変数
char x9c_val;//ワイパ位置

//デバイス初期化関数
void x9c_init(void) {
ud = 0;
for (char i = 0; i < 99; i++) {
inc = 0;
__delay_us(1);
inc = 1;
__delay_us(500);
}
x9c_val = 0;
}

//U/D_up関数
void x9c_up(void) {
int ud = 1;
int inc = 0;
__delay_us(1);
int inc = 1;
if (x9c_val < 99)x9c_val++;
//次の上げ下げは500us空ける
}

//U/Ddown関数
void x9c_down(void) {
ud = 0;
inc = 0;
__delay_us(1);
inc = 1;
if (x9c_val > 0)x9c_val--;
//次の上げ下げは500us空ける
}

//メイン関数
void main() {
OPTION_REGbits.nWPUEN = 0;
OSCCON = 0b0111001;
PORTA = 0x00;
PORTB = 0x08;
ANSELA = 0b00000000;
ANSELB = 0b00000000;
// 入出力設定
TRISA = 0b00000000; // RA全て出力
TRISB = 0b00010000;

T1CON=0x31;//タイマー1を1/8で回す
※Mach周波数100~500Hz程度想定。→8000~40000カウント
x9c_init();
TMR1L=TMR1H=0;//タイマリセット

unsigned int p=0,d=0;
while(1) {
while(mach==0) {
if(TMR1H>250)<停止(x9c_down;)>;//250はテキトウ
}
p=(TMR1H<<8) | TMR1L;//周期記録
TMR1L=TMR1H=0;//タイマリセット
if(P>○○) { //100Hz@40000カウントなら39000とか。
target=100.0*d/p;
if(target>x9c_val)x9c_up();
else if(target<x9c_val) x9c_down();
}
}
while(RB4==1);
d=(TMR1H<<8) | TMR1L;//HIGHの時間記録
}
}


ちょっとNo.1543はスパイクが大きいような気もしますけど、
私の予定?では添付図のように周波数に合わせてwhileをまわして4点、もしくは8点を取得する、
という考えなので、多少の事はデジタルフィルタで誤魔化せます。

猛牛ロック   2019/06/04(Tue) 13:46 No.1553 記事編集
Re: 続続続続続ーPWM
猛牛ロックさん、レス有り難うございます。
オペアンプに付けたバイパスコンデンサーです。ローパスフィルターとは役目が異なります。
必要性は 、教科書的な配慮です。

今回はコーセルだったか?
ちゃんとした電源なので、パスコンデンサーが実際必要かわ知りません。
オペアンプを高周波ノイズから守るそうです。安全側に付けます。


この先、デジタル可変抵抗とつないで、スピンドルモーターを上手く回せるか、不安です。
念の為、オペアンプのゲインを5vまで上げられるようにした方が良いでしょうか?
やったことわないので不確かですが。


ローパスフィルターに戻ります。
maboさんが参考にしてローパスフィルターを付けた実験をしオシロの写真を見せてくれました。矩形波が三角になっていました。
波形が心配です。
-****
maboさん
先達者のように、リップル対応のプログラムを頑張って作って下さい。
TR   2019/06/04(Tue) 14:51 No.1554 記事編集
Re: 続続続続続ーPWM
猛牛ロックさん、自分の書き込みの差し換えました。。
すみません。

波形の乱れを4回のサンプルから平均値をとるから大丈夫と云いたいのですね?
理解
でも、プログラム変更するの?!
ジェジェ
前のプログラムで駄目?
TR   2019/06/04(Tue) 16:00 No.1555 記事編集
Re: 続続続続続ーPWM
フィルターを通して読み取る方法は、元々、
・4つのサンプルから平均を取る
・1つしかワイパーを上下させない、
という2つの対策をしています。
なので、多少の乱れは大丈夫だと思っています。
もう少し…と思ったらサンプルを8個にすれば大丈夫でしょう。
ほぼ平均化されて乱れは出ないと思います。

> 前のプログラムで駄目?
この3行です。

adc[(++num)&3] = adconv();
for (char i = 0; i < 4; i++)target += adc[i];
target /= 40.93;
猛牛ロック   2019/06/04(Tue) 16:48 No.1556 記事編集
Re: 続続続続続ーPWM
変更点を整理すると 下記の通りでしょうか?

   記
39 static unsigned int adc[8] = {0};



42 adc[(++num)&7] = adconv();

43for (char i = 0; i < 8; i++)target += adc[i];
44 target /= 81.84;
TR   2019/06/04(Tue) 19:14 No.1557 記事編集
Re: 続続続続続ーPWM
猛牛ロックさん,TRさん,こんばんは。

猛牛ロックさん,レスありがとうございます。

デジタルの読み取り難しく感じるの,割り込み等が,入って来るからだと思います。

未だに,設定が面倒なのです。

その都度,参考書と首っ引きです。

それから,デジタルの読み取りのプログラムありがとうございます。

後で,試してみます。

基本周波数を変換しても,思った結果が得られないので,
使ってるPWMのコントローラーの特性も関係あるのかな,
なんて思い始めました。

MACHからのPWMのDUTY比がRPMとどんな関係なのか,

興味がでてきましたので,のんびり,MACHのDUTY比でも計ってみようかなと思います。

TRさん,はかどりますね。

いろいろあっても,トータルとしてまとめ上げてしまうので,

TRさんもすごいな,と思います。
mabo   2019/06/04(Tue) 22:54 No.1558 記事編集
Re: 続続続続続ーPWM
> TRさん

そうです。8個ならそんな感じです。
でも重要な事はMACHのPWM周期とサンプリングレートの関係です。
その波形に対していいバランスでサンプルを取る事です。


> MABOさん

今現在、どんなプログラムで試しているのかは判りませんけど、
表の記事上の最新ではMACHの周波数1kHz=1000us周期にたいして、サンプリング周期は100usです。
なので、それだとサンプリング数が10でMACHからのPWMのDUTYを判断しています。
そして、サンプリング周期の整数倍が周波数になるので、うねりを持つような結果になると思います。
例えば、DUTY比が12%だとしたら、完全にPCとPICの周波数が動機すれば10%か20%のどちらかになるでしょうけど、
別のオシレータで動いていますから多少のずれが生じます。つまり、数十回?10%が続き、その後にその4倍の長さで
20%が続きます。
また、適当な割合で10%と20%が混ざるならMACHも対応してくれるかもしれないですけど、そうした動きでは難しいと思います。
せめて、30程度はサンプル数をとって、割合を算出する必要があると思います。
私がその方法を取るなら、MACHからのPWMは50Hz=200サンプルとかにすると思います。
なので、PWMの出力が来ないとの判断、つまり、タイマー0の周期はもっと遅くしてからMACHを試した方が良い、と言った次第です。
※テストの途中で停止命令が入り込むと結果の判断がより難しくなります。
猛牛ロック   2019/06/04(Tue) 23:30 No.1559 記事編集
Re: 続続続続続ーPWM
間違った場所に投降したので、削除し、新たに本来の場所に投降します。

**************
スンピンドル制御に必要なPWM基本周波数って、本来はどれほど必要なんだろうか?
まず、これをはっきりと、ですね。

カーネルスピードは、↓ を見て薄っすらと分かりました。
https://microsoftwindowsblogger.blogspot.com/2010/07/losing-steps-in-mach3-kernel-speed.html

分解能100とすれば(***欄より推測)、PWM基本周波数の100倍がカーネルスピードなんですね。
***
先達者のコメ抜粋
・例えば、カーネル周波数が35KHzの場合にPWM周波数を1KHzにすると階調は35段階だ。
****

で、
下の先達者は、PWM基本周波数が、15KHzと設定しようとした。
だが、MACHのカーネルスピードは、MAX100kHz
MAX100,000Hz<15000Hz×100倍=1500,000
となり、PWM信号を制御できなくなった。 そこで、
ローパスフィルターってことになったんですね。

先達は
題目:CNC3020のスピンドル制御
先達者のURL
http://www002.upp.so-net.ne.jp/hard-and-soft/Spindol_Control/Spindol_Control.html
抵抗:22k
コンデンサ:10μ

カットオフ周波数?
答え
0.7Hz

感想
こんなに低い周波数から、ゲインさせてしまって、良く上手くいったものだと思いました。




猛牛ロックさんへ
8個サンプリングにしたら、効果大です。
ほぼ、ちらつきなくなりました。
TR   2019/06/05(Wed) 08:28 No.1561 記事編集
Re: 続続続続続ーPWM
カーネル周波数とPWM周波数の考え方は合っていますけど、参考サイトの見方に関しては

・MACHからの出力(PICへの入力)
・モータへの出力
がごちゃ混ぜになっています。
また、都合のいいように話を持って行き過ぎです。

音の聞こえない15kHz(実際には15.6kHz)にしようとした(目的)のはモータへの出力の周波数です。
で、、目的の周波数(15kHz)でMACHから出力させて、モータに直接繋いだのでは2,3段階の諧調しか得られない。
なので直結での静音化(MACHから15kHz出力)は無理なので、「PICを使って周波数変換しよう」、という事です。
※この人のスピンドルのドライバはPWMの信号を入れるタイプ(=それが普通)です。

MACHからのPWMの周波数の記載はありませんから、参考サイトにある「250Hz」と「10mSの移動平均フィルタ」
から推測するしかありません。多分100〜250Hz程度だと思います。フィルタは、その周波数に応じて用意します。


**************


Machの周波数に対して、分割数で割ったものを最後の_delay_ms();の部分の周期にしてください。
Machから100HzのPWMが来て、分割数が8なら1.25msです。
その場合は,
__delay_us(1250);
になります。(けれどもデバイスの仕様上、500us以下は動作は保証されません。)
多分、現在の設定はPWMの周波数がもっと高くて、ランダムな場所になっているのだと思います。
それはそれで、8個ぐらい取れば平均値に近づきますから悪くないです。
※一番悪いのは同期して、波の同じ部分を取得してしまう事です。
猛牛ロック   2019/06/05(Wed) 11:23 No.1562 記事編集
Re: 続続続続続ーPWM
15kHzは、ローパス後の電圧をPWMに変換後の周波数でしたね。
了解、
でも、PWM基本周波数のローパスのカットオフ周波数が0.7Hzでいいものだろうか?

猛牛ロックさんの推測↓
多分100〜250Hz程度だ


PWM基本周波数100〜250Hzなのに、カットオフ0.7Hzが適正なのか気になります。
実際は。どうなのか?


>__delay_us(1250);

これは、
10 __delay_us(500);を(1250)に変更ですね。 了解しました。

でも、
>Machから100HzのPWMが来て、分割数が8なら1.25msです。

これの算出方法は、
100Hz/8回サンプリング で、OK?
デジタル可変抵抗のスタート位置を決める式でしたよね、
この辺の訳を教えてください。
お願いします。


でも、カーネルSpeedとPWM基本周波数の関係が分かってよかったです。



6/5 14:30追記
非反転オペアンプですが、
落とし穴が分かりました。
DC12Vをオペアンプの電源に印可しないと駄目です。
TR   2019/06/05(Wed) 12:30 No.1563 記事編集
Re: 続続続続続ーPWM
No.1553の添付図を見てください。(元はMABOさんの信号です。)

で、その図の縦線は読み取り点のことです。1つの波(周期)にたいして、4つサンプルを取っているものです。
MachのPWM周期を100Hz(=0.01s周期)に設定すれば、4サンプルなら2.5msですし、8サンプル(8分割)なら1.25msになります。
単純にPWM周期をサンプル個数で割っているだけです。

※その図で、ある1つの縦線の部分で8つサンプルを取ったら、全てがその縦線の値になってしまいますし、4つ分ずらした間隔で8サンプル習得しても
全て波の同じ部分を取得している事になるので良くないです。



> MABOさん

タイマー1を回さなくてもPWMは取得できます。主要部だけですけど

while(1){
unsigned long count_h=0,count_l=0;
while(mach);//HIGHの間、閉じ込める
while(!mach);//LOWの間、閉じ込める(次のHIGHの先頭を出すため)
while(mach){
count_h++;
if(count_h>@@@@)SetPWM(0);//ダミー?
}
while(!mach){
count_l++;
if(count_l>@@@@)SetPWM(0);
}
int duty=1023.0*count_h/(count_h+count_l);
SetPWM(duty);
// __delay_ms(1);
}

HIGH信号の時間を数えてLOW信号の時間を数えるだけです。
勿論、他に割り込みを使っていればカウント値が狂いますからその場合は
if(周期がこの間にあったら)・・・
といった処理が必要になります。この方法なら分母は数百や数千にはなるでしょうから、100usのサンプリングより正確なものが求まります。
猛牛ロック   2019/06/05(Wed) 15:26 No.1564 記事編集
Re: 続続続続続ーPWM
猛牛ロックさん 有難うございます。
了解です。
聞いて良かったです。
Kanel SppedとPWM基本周波数も分かったし、
これで応用が利くようになりました。

同じ電圧にしなくてもいいかもしれませんが、
念には念を。

**********
maboさんへ


若しよかったら、オシロをお持ちでしょうから、
ローパスフィルター有り無しで、波形を比べて頂けませんか?
すでにご存じなら、教えてください。
御手隙の時で結構です。



それから、
非反転オペアンプの電源は、PICの電源と分けました。
これによって、PICのUDやINK端子に掛かる電圧と同じにできるようになりました。


一応、DC12V電源なしでもデジタル可変抵抗が動作すれば、12Vは外します。

TR   2019/06/05(Wed) 16:34 No.1566 記事編集
Re: 続続続続続ーPWM
No.1566の添付図を見ましたけど、オペアンプは何のために使っているのでしょうか?

私はx9cのRwからオペアンプの+に入れて、outからスピンドルへと繋ぐのかと思っていました。
猛牛ロック   2019/06/05(Wed) 17:18 No.1567 記事編集
Re: 続続続続続ーPWM
ML4のスピンドルモーター制御基板は、資料も何もないので弄れません。
なので、素人には理解できないと思います。

そこで、期待を込めて
ML4のスピード制御には、可変抵抗(DC5V印可の1KΩ)が使われています。
モーターの大きさから、どうも、ACサーボモーターのようです。
推測ですが、三菱のACサーボモーターもアンプ側にスピードコントロール用にアナログの可変抵抗をつけます。
ML4のと同じだろうと思いました。
デジタル可変抵抗と置き換えたら、どうだろうかと思った次第です。

追記
x9cのデータシートに下記の説明がありました。
動作電圧でしょうか?
もしそうなら。



U/D input HIGH voltage min2V Mxa Vcc+1
TR   2019/06/05(Wed) 18:13 No.1568 記事編集
Re: 続続続続続ーPWM
猛牛ロックさん,TRさん,こんばんは。

なんかこの掲示板も内容がすごいことになってるな,

なんて,びっくりしてます。

なかなかついていけません。

猛牛ロックさん,サンプリング等のプログラムありがとう
ございます。

また,詳しい解説もすみません。

なんとなく理解できそうな気もしますが,難しいです。

TRさん,いろいろお疲れ様です。


ところで,今日は,ちょっと前に帰ってきたのですが,

MACHからのPWMのDUTY比をオシロで見てみました。

スケールで目視での確認ですので,おおざっぱです

下記の設定で,

 MACHカーネル 25000hz
 PWM基本周波数   100hz
 MaxSpeed  9000rpm

 設定rpm    DUTY比

 1000     10%
 2000     20%
 3000     32%
 4000     44%
 5000     54%
 6000     68%
 7000     78%
 8000     90%
 9000     98%

と,ほぼ比例でしたが,私が使ったPWMコントロールのドライバーは,

 入力DUTY比   RPM
  4%       1283
  6%       2256
  7%       3049
 11%       4061
 14%       5003
 19%       6125
 25%       7000
 36%       8015
 69%       9000

比例どころか,DUTY比 14% のPWMの入力で,

モーター能力のほぼ半分の回転数になってします。

他のPWM入力のコントローラーはわかりませんが,

こんなもんなんでしょうかね。使ってるFET等の性能

なんかも影響してるんでしょうかね。

別のものも試してみたくなりました。
mabo   2019/06/05(Wed) 21:34 No.1569 記事編集
Re: 続続続続続ーPWM
見落とししているかもしれないので再度の書きこです。

**********
maboさんへ


若しよかったら、オシロをお持ちでしょうから、
ローパスフィルター有り無しで、波形を比べて頂けませんか?
すでにご存じなら、教えてください。
御手隙の時で結構です。
TR   2019/06/05(Wed) 22:27 No.1570 記事編集
Re: 続続続続続ーPWM
私の言っているのは添付図のように繋ぐのかと思っていた、という事です。
スピンドルの中の事ではありません

猛牛ロック   2019/06/05(Wed) 22:30 No.1571 記事編集
Re: 続続続続続ーPWM
TRさん,済みませんでした。

今気がつきました。

>ローパスフィルター有り無しで、波形を比べて頂けませんか?
これ,MACHからの信号でいいですか?

No1533がローパスフィルター通したPWMの信号です。

外すと,きれいな,PWMの信号になります。
mabo   2019/06/05(Wed) 22:43 No.1572 記事編集
Re: 続続続続続ーPWM
maboさんへ、
仮にですが、
カットオフ周波数を変えるために、コンデンサとRを替えてみたらどうですか?
カットオフ15000Hzに。
自分は、手計算が面倒なので、↓のツールを使います。
15kHzなら、0.1マイク、15kΩ

sim.okawa-denshi.jp/CRtool.php
TR   2019/06/06(Thu) 07:15 No.1573 記事編集
Re: 続続続続続ーPWM
猛牛ロックさんへ
デジタル可変抵抗って、あくまで、
アナログの可変抵抗と同じ役割ですよね、
であれば、VH,VW、VLは、抵抗値を変えるものではないのでしょうか?

抵抗値を変えるものだと思ったので、No1566です。
TR   2019/06/06(Thu) 07:39 No.1574 記事編集

- JoyfulNote v6.02 -
++ Edited by Hamel ++