48時間以内の記事は
で表示されます

続続ーPWM
TRさん,こんにちは。また,スレ深くなったの,新しくします。
今日は,PWMの基本周波数の変更のプログラムいじってました。
以前掲載したときは,HITECHのコンパイラ用でしたので,
XC8用に変更してました。
正直面倒くさいですね,新しいコンパイラ用に書き換えるのは。
さて,前掲のデジタルポテンショメータの使い方ですが,
使い方をのせていた諸兄は,Arduinoでプログラム組んでいるようですね。
多分,直接,SECさんの基板等との接続は難しいでしょうね。
でも,PWMの出力を使えば,コントロールはできそうに思います。
いくつか方法あると思いますけど,
MACHのPWM出力→→フィルターで直流変換→→
PICでAD変換→→PICで抵抗のUP・DOWN
と,できないことないかとは思いますけど,ちょっと時間かかりるかなあ。
PWMを直流で受けてAD変換したものを使ってる諸兄は,
下記です。
http://www002.upp.so-net.ne.jp/hard-and-soft/Spindol_Control/Spindol_Control.html
操作的には,2本の線のそれぞれをHIGHT LOWにするだけですから,PICでもそれほ難しくないと思います。
ただ,それよりも,AD変換した数値と設定抵抗等の関係,
いち調べるのに時間かかるかもですね。
今日は,PWMの基本周波数の変更のプログラムいじってました。
以前掲載したときは,HITECHのコンパイラ用でしたので,
XC8用に変更してました。
正直面倒くさいですね,新しいコンパイラ用に書き換えるのは。
さて,前掲のデジタルポテンショメータの使い方ですが,
使い方をのせていた諸兄は,Arduinoでプログラム組んでいるようですね。
多分,直接,SECさんの基板等との接続は難しいでしょうね。
でも,PWMの出力を使えば,コントロールはできそうに思います。
いくつか方法あると思いますけど,
MACHのPWM出力→→フィルターで直流変換→→
PICでAD変換→→PICで抵抗のUP・DOWN
と,できないことないかとは思いますけど,ちょっと時間かかりるかなあ。
PWMを直流で受けてAD変換したものを使ってる諸兄は,
下記です。
http://www002.upp.so-net.ne.jp/hard-and-soft/Spindol_Control/Spindol_Control.html
操作的には,2本の線のそれぞれをHIGHT LOWにするだけですから,PICでもそれほ難しくないと思います。
ただ,それよりも,AD変換した数値と設定抵抗等の関係,
いち調べるのに時間かかるかもですね。
Re: 続続ーPWM
maboさんこんばんは。
今日は仕事でした。 再雇用ですね。
>PWMの基本周波数の変更のプログラムいじってました。
弄っていたプログラムは、ご紹介くださった以下URLのプログラム(PWM周波数変換プログラムと呼ぶかな?)
ですか?
素早いですね!
このプログラムは、smoothsutepperから出るPWMの周波数を変えるというものですよね?
違いますか?
で、maboさんが、
>MACHのPWM出力→→フィルターで直流変換→→
PICでAD変換→→PICで抵抗のUP・DOWN
と,できないことないかとは思いますけど,ちょっと時間かかりるかなあ。
と言っているのは、
PWM変換プログラムの変換後のPWMのところを、→ PICでAD変換→→PICで抵抗のUP・DOWN
ということですか?
考えもつきませんでした。
PWMという、波形をRCフィルターを通すとアナログに戻るなんてびっくりでした。
>PWMを直流で受けてAD変換したものを使ってる諸兄は,
RCフィルターでアナログの電圧に戻し、アナログ電圧をPICのAD変換機能を使って更にPWM化するとは!!
でもでも、
>PICでAD変換→→PICで抵抗のUP・DOWN
こんなことって、PICで出来るのですか??
ワクワクしてきました。
キットで遊ぼうのレベルです。 本にそういった方法はありましたか?
今日は仕事でした。 再雇用ですね。
>PWMの基本周波数の変更のプログラムいじってました。
弄っていたプログラムは、ご紹介くださった以下URLのプログラム(PWM周波数変換プログラムと呼ぶかな?)
ですか?
素早いですね!
このプログラムは、smoothsutepperから出るPWMの周波数を変えるというものですよね?
違いますか?
で、maboさんが、
>MACHのPWM出力→→フィルターで直流変換→→
PICでAD変換→→PICで抵抗のUP・DOWN
と,できないことないかとは思いますけど,ちょっと時間かかりるかなあ。
と言っているのは、
PWM変換プログラムの変換後のPWMのところを、→ PICでAD変換→→PICで抵抗のUP・DOWN
ということですか?
考えもつきませんでした。
PWMという、波形をRCフィルターを通すとアナログに戻るなんてびっくりでした。
>PWMを直流で受けてAD変換したものを使ってる諸兄は,
RCフィルターでアナログの電圧に戻し、アナログ電圧をPICのAD変換機能を使って更にPWM化するとは!!
でもでも、
>PICでAD変換→→PICで抵抗のUP・DOWN
こんなことって、PICで出来るのですか??
ワクワクしてきました。
キットで遊ぼうのレベルです。 本にそういった方法はありましたか?
Re: 続続ーPWM
TRさん,こんばんは。
>>PICでAD変換→→PICで抵抗のUP・DOWN
>こんなことって、PICで出来るのですか??
紹介したデジタルポテンショメータがつかえるのであれば,
2本の線をHIGHT・LOWにするだけですから,
キットで遊ぼうのLチカとそれほど変わらないと思います。
やることは,
(1)AD変換の数値をPICで受け取る
↓
(2)数値を保存
↓
(3)AD変換の数値をPICで再び受け取る
↓
(4)前回保存した数値と比較する
↓
(5)数値が変化or変化しない
↓ ↓
↓ (1)へ
二つの端子の操作
↓
(1)
みたいな感じですかね。
これと同じようなことやるのに,
デジタルポテンショメーターの代わりに,LEDを二つ使って,
疑似の回路とプログラム作れると思います。
具体的には,
https://keitetsu.blogspot.com/2014/11/16f88-xc8-led.html
と同じプログラムと同じ回路で,LEDを一つ増やして,
読み込んだ,AD変換の数値で,保存した数値の比較して,
数値が多くなったら,AのLEDをつけて消す,
数値が少なくなったら,BのLEDをつけて消す。
ということができれば,大丈夫でしょうね。
このプログラムで使ってるPWMはつかいませんので,もっと簡単になると思います。
実際の運用では,もうちょっと,考慮しなければいけないことあると思いますが,
ボリュームの部分をMACHからのアナログ変換したPWM信号へ,LEDの部分をデジタルポテンショメーターのアップダウンの端子へ,
ということで,キットで遊ぼうと同じよようなレベルで可能だと思います。
TRさんのお手持ちの材料でできますよ。
PICはAD変換の機能があるのならなんでもいいかな。
>>PICでAD変換→→PICで抵抗のUP・DOWN
>こんなことって、PICで出来るのですか??
紹介したデジタルポテンショメータがつかえるのであれば,
2本の線をHIGHT・LOWにするだけですから,
キットで遊ぼうのLチカとそれほど変わらないと思います。
やることは,
(1)AD変換の数値をPICで受け取る
↓
(2)数値を保存
↓
(3)AD変換の数値をPICで再び受け取る
↓
(4)前回保存した数値と比較する
↓
(5)数値が変化or変化しない
↓ ↓
↓ (1)へ
二つの端子の操作
↓
(1)
みたいな感じですかね。
これと同じようなことやるのに,
デジタルポテンショメーターの代わりに,LEDを二つ使って,
疑似の回路とプログラム作れると思います。
具体的には,
https://keitetsu.blogspot.com/2014/11/16f88-xc8-led.html
と同じプログラムと同じ回路で,LEDを一つ増やして,
読み込んだ,AD変換の数値で,保存した数値の比較して,
数値が多くなったら,AのLEDをつけて消す,
数値が少なくなったら,BのLEDをつけて消す。
ということができれば,大丈夫でしょうね。
このプログラムで使ってるPWMはつかいませんので,もっと簡単になると思います。
実際の運用では,もうちょっと,考慮しなければいけないことあると思いますが,
ボリュームの部分をMACHからのアナログ変換したPWM信号へ,LEDの部分をデジタルポテンショメーターのアップダウンの端子へ,
ということで,キットで遊ぼうと同じよようなレベルで可能だと思います。
TRさんのお手持ちの材料でできますよ。
PICはAD変換の機能があるのならなんでもいいかな。
Re: 続続ーPWM
maboさん、おはようございます。
いいですね、グットアイディアですね。
> (2)数値を保存
↓
(3)AD変換の数値をPICで再び受け取る
↓
(4)前回保存した数値と比較する
●●●・・・
この肝となる部分をどうプログラムするのでしょうか?
幸いにも、以前、ここで、クーラントポンプを可変VRで制御するC言語を教えていただいたので、
これを基礎に頑張りたいと思います。
どうか、ご教授願います。
いいですね、グットアイディアですね。
> (2)数値を保存
↓
(3)AD変換の数値をPICで再び受け取る
↓
(4)前回保存した数値と比較する
●●●・・・
この肝となる部分をどうプログラムするのでしょうか?
幸いにも、以前、ここで、クーラントポンプを可変VRで制御するC言語を教えていただいたので、
これを基礎に頑張りたいと思います。
どうか、ご教授願います。
Re: 続続ーPWM
TRさん,おはようございます。
今日の夜から泊まりがけで,ちょっと遠出しますので,
レス時間空くと思います。
具体的なプログラムですが,
https://keitetsu.blogspot.com/2014/11/16f88-xc8-led.html
のプログラムの
while(1){
setADCChannel(0);
__delay_us(50);
duty1 = readADCValue();
setPWM1Duty(duty1);
}
コメントは外してありますが,ここを次のようにいじれば,
とりあえずは形になると思います。
具体的には,
int hozon=1024;
int newhozon=1024;
while(1){
setADCChannel(0);
__delay_us(50);
if(hozon ≠ readADCValue()){
newhozon=readADCValue();
RB2=0;//CSピンコマンド待ち
for(i=0;i<abs((hozon-newhozon)/100));i++){
if((hozon-newhozon)>0)
RB3=1;//U/Dピンをアップに設定
increse();
}
if((hozon-newhozon)<0)
RB3=0;//U/Dピンをダウンに設定
increse();
}
RB2=1;//メモリー書き込み
}
}
increse{
RB1=0;
__delay_us(10);//調整の必要ありそう
RB1=1;
}
AD変換で受け取る数値は,多分0〜1024ぐらいでしょうから,
これを10段階ぐらいに分けて,それに応じて,アップダウン
するという感じです。
実装するには,いろいろ考えないとだめだと思います。
AD変換の受け取り方は,
http://www002.upp.so-net.ne.jp/hard-and-soft/Spindol_Control/Spindol_Control.html
の方のように平均をとる必要があるかもしれません。
それから,デジタルポテンショメーターの操作で,
どのくらいの信号を送ればいいのか,
一回の操作で抵抗はどの程度変化するのか,
実験かデータシート等で確認する必要があると思います。
===追伸===
諸兄のデータ見たら,3本の線のコントロール必要ですね。
LEDは,二つ増やす必要ありですね。
今日の夜から泊まりがけで,ちょっと遠出しますので,
レス時間空くと思います。
具体的なプログラムですが,
https://keitetsu.blogspot.com/2014/11/16f88-xc8-led.html
のプログラムの
while(1){
setADCChannel(0);
__delay_us(50);
duty1 = readADCValue();
setPWM1Duty(duty1);
}
コメントは外してありますが,ここを次のようにいじれば,
とりあえずは形になると思います。
具体的には,
int hozon=1024;
int newhozon=1024;
while(1){
setADCChannel(0);
__delay_us(50);
if(hozon ≠ readADCValue()){
newhozon=readADCValue();
RB2=0;//CSピンコマンド待ち
for(i=0;i<abs((hozon-newhozon)/100));i++){
if((hozon-newhozon)>0)
RB3=1;//U/Dピンをアップに設定
increse();
}
if((hozon-newhozon)<0)
RB3=0;//U/Dピンをダウンに設定
increse();
}
RB2=1;//メモリー書き込み
}
}
increse{
RB1=0;
__delay_us(10);//調整の必要ありそう
RB1=1;
}
AD変換で受け取る数値は,多分0〜1024ぐらいでしょうから,
これを10段階ぐらいに分けて,それに応じて,アップダウン
するという感じです。
実装するには,いろいろ考えないとだめだと思います。
AD変換の受け取り方は,
http://www002.upp.so-net.ne.jp/hard-and-soft/Spindol_Control/Spindol_Control.html
の方のように平均をとる必要があるかもしれません。
それから,デジタルポテンショメーターの操作で,
どのくらいの信号を送ればいいのか,
一回の操作で抵抗はどの程度変化するのか,
実験かデータシート等で確認する必要があると思います。
===追伸===
諸兄のデータ見たら,3本の線のコントロール必要ですね。
LEDは,二つ増やす必要ありですね。
Re: 続続ーPWM
maboさん、ありがとうございます。
お出かけということですね。
よく読んでみます。分からない点が多々出てくると思います。
その節は勘弁してください。
気をつけてお出かけください。
追記
ところで、このプログラムに使っているPICは16F88ですか?
教えてください。
お出かけということですね。
よく読んでみます。分からない点が多々出てくると思います。
その節は勘弁してください。
気をつけてお出かけください。
追記
ところで、このプログラムに使っているPICは16F88ですか?
教えてください。
Re: 続続ーPWM
TRさん,こんばんは。
レス遅くなりました。
はい,使ってるのは,16F88です。
でも,AD変換のあるものなら,
何でもいいと思います。
できれば,新しいのがいいかも。
16F88では,PICKIT 4は使えません。
もう,サポートの対象からはずれたんでしょうね。
いろいろ部品が届いてるので,
また,ぼちぼちやります。
レス遅くなりました。
はい,使ってるのは,16F88です。
でも,AD変換のあるものなら,
何でもいいと思います。
できれば,新しいのがいいかも。
16F88では,PICKIT 4は使えません。
もう,サポートの対象からはずれたんでしょうね。
いろいろ部品が届いてるので,
また,ぼちぼちやります。
Re: 続続ーPWM
maboさんこんにちは。
鉄ちゃん
https://keitetsu.blogspot.com/2014/11/16f88-xc8-led.html?m=1
プログラム中程にある
次の事の意味分かりますか?
duty1 = readADCValue();
空のカッコ、こういった使い方は、初めてです?
お願いします。
鉄ちゃん
https://keitetsu.blogspot.com/2014/11/16f88-xc8-led.html?m=1
プログラム中程にある
次の事の意味分かりますか?
duty1 = readADCValue();
空のカッコ、こういった使い方は、初めてです?
お願いします。
Re: 続続ーPWM
TRさん,こんばんは。
サブ関数に以下のようにあります。
unsigned int readADCValue(void)
{
GO_nDONE = 0b1;
while(GO_nDONE);
return ((ADRESH << 8) + ADRESL);
}
括弧のなかが void になっていますので,
因数に何も渡さないの意味になります。
何も書かないのと同じ意味です。
unsigned int readADCValue(void)
を,
unsigned int readADCValue( )
と書いてもも同じです。
duty1 = readADCValue();
ですが,
これは,AD変換で,抵抗値を読みとった値を,
duty1
に代入の意味です。
サブ関数に以下のようにあります。
unsigned int readADCValue(void)
{
GO_nDONE = 0b1;
while(GO_nDONE);
return ((ADRESH << 8) + ADRESL);
}
括弧のなかが void になっていますので,
因数に何も渡さないの意味になります。
何も書かないのと同じ意味です。
unsigned int readADCValue(void)
を,
unsigned int readADCValue( )
と書いてもも同じです。
duty1 = readADCValue();
ですが,
これは,AD変換で,抵抗値を読みとった値を,
duty1
に代入の意味です。
Re: 続続ーPWM
鉄ちゃんおプログラムは何をしようとしているのでしょうか?
題目には、
可変抵抗(RA0)でLEDの輝度(RB3)を制御する
とありますが、
AD変換をした値(duty1)をPWMを発生させていますが、
duty1 = 0;
として、初期化をしたのち、
duty1 = readADCValue(); // A/D変換値を取得
とか、 setPWM1Duty(0);
とか、関数を作って複雑化しているように思えます。
自分も、以前、可変抵抗の電圧を読み取って、読んだ値を
ADRESに格納し、ADRESの値を使って、PWMを発生させましたが、
もっと単純だったはずなのにです。
デジタル抵抗と何か関係がるのでしょうか?
題目には、
可変抵抗(RA0)でLEDの輝度(RB3)を制御する
とありますが、
AD変換をした値(duty1)をPWMを発生させていますが、
duty1 = 0;
として、初期化をしたのち、
duty1 = readADCValue(); // A/D変換値を取得
とか、 setPWM1Duty(0);
とか、関数を作って複雑化しているように思えます。
自分も、以前、可変抵抗の電圧を読み取って、読んだ値を
ADRESに格納し、ADRESの値を使って、PWMを発生させましたが、
もっと単純だったはずなのにです。
デジタル抵抗と何か関係がるのでしょうか?
Re: 続続ーPWM
TRさん,こんばんは。
>デジタル抵抗と何か関係がるのでしょうか?
ですが,鉄ちゃんさんのプログラム,
一部分を改変すれば,デジタルポテンショメータのコントロール
に使えそうだ,
ということで,ご紹介しました。
使うのは,AD変換の部分で,PWMの部分はつかいませんが。
考え方として,鉄ちゃんさんの main() の
while(1)の部分を,1489のスレのように書き換えれば,
LEDを合計3つ使って,デジタルポテンショメータの実機がなくても,
シュミレートできそうです,ということでの紹介でした。
同じ,一つのことをするプログラムにも,多分,いくつかの書き方があるように思います。
>デジタル抵抗と何か関係がるのでしょうか?
ですが,鉄ちゃんさんのプログラム,
一部分を改変すれば,デジタルポテンショメータのコントロール
に使えそうだ,
ということで,ご紹介しました。
使うのは,AD変換の部分で,PWMの部分はつかいませんが。
考え方として,鉄ちゃんさんの main() の
while(1)の部分を,1489のスレのように書き換えれば,
LEDを合計3つ使って,デジタルポテンショメータの実機がなくても,
シュミレートできそうです,ということでの紹介でした。
同じ,一つのことをするプログラムにも,多分,いくつかの書き方があるように思います。
Re: 続続ーPWM
maboさん、おはようございます。
No1487の以下の内容は、鉄ちゃんのプログラムでいうとどの部分になりますか?
******
(1)AD変換の数値をPICで受け取る
↓
(2)数値を保存
↓
(3)AD変換の数値をPICで再び受け取る
↓
(4)前回保存した数値と比較する
↓
(5)数値が変化or変化しない
******
追記
今回は、
電圧読み取りの変化の確認は、タイマー0割込みですかね〜?
No1487の以下の内容は、鉄ちゃんのプログラムでいうとどの部分になりますか?
******
(1)AD変換の数値をPICで受け取る
↓
(2)数値を保存
↓
(3)AD変換の数値をPICで再び受け取る
↓
(4)前回保存した数値と比較する
↓
(5)数値が変化or変化しない
******
追記
今回は、
電圧読み取りの変化の確認は、タイマー0割込みですかね〜?
Re: 続続ーPWM
maboさんすみません。
次の意味を教えてください。
void setADCChannel(unsigned char channel)
{
ADCON0 &= 0b11000111; // bit5~3,CHS<2:0>を初期化(電圧読み取りピンRA0設定だが&=により000)
ADCON0 |= (channel << 3);//上で初期化後、3bit左にシフト?
次の意味を教えてください。
void setADCChannel(unsigned char channel)
{
ADCON0 &= 0b11000111; // bit5~3,CHS<2:0>を初期化(電圧読み取りピンRA0設定だが&=により000)
ADCON0 |= (channel << 3);//上で初期化後、3bit左にシフト?
Re: 続続ーPWM
TRさんこんにちは。
おたずねの件ですが,次のような感じです。
間違いあるかもしれませんが。
コメントみてください。
int hozon=1024;
int newhozon=1024;
while(1){
setADCChannel(0);//読み込みチャンネルの設定
__delay_us(50);
if(hozon ≠ readADCValue()){//データを読み込んで保存データと読み込みデータの比較
newhozon=readADCValue();//保存したデータと違ったら保存
RB2=0;//CSピンコマンド待ち
for(i=0;i<abs((hozon-newhozon)/100));i++){
//以下の部分で,変化に応じた処理
if((hozon-newhozon)>0)
RB3=1;//U/Dピンをアップに設定
increse();//ボリュームを移動
}
if((hozon-newhozon)<0)
RB3=0;//U/Dピンをダウンに設定
increse();//ボリュームを移動
}
RB2=1;//メモリー書き込み
}
}
increse{
RB1=0;
__delay_us(10);//調整の必要ありそう
RB1=1;
みたいな感じで,while(1)の中で,読み取り,比較,処理
をしてます。
それから,
void setADCChannel(unsigned char channel)
{
ADCON0 &= 0b11000111; // bit5~3,CHS<2:0>を初期化(電圧読み取りピンRA0設定だが&=により000)
ADCON0 |= (channel << 3);//上で初期化後、3bit左にシフト?
ですが,ADCON0 の4ビット目から6ビットで,読み取りチャンネルの設定をするために,
&をとって,4〜6ビット目をにしてます。
ADCON0 |= (channel << 3)
は,読み取りチャンネルを channel で受けとって,
ADCON0 の4〜6ビット目にセットするために,
左に,3つシフトさせてます。
それから,AD変換では,割り込みを使う方法もあるようですが,
鉄ちゃんさんのプログラムで,AD変換では,割り込みは使ってないようです。
おたずねの件ですが,次のような感じです。
間違いあるかもしれませんが。
コメントみてください。
int hozon=1024;
int newhozon=1024;
while(1){
setADCChannel(0);//読み込みチャンネルの設定
__delay_us(50);
if(hozon ≠ readADCValue()){//データを読み込んで保存データと読み込みデータの比較
newhozon=readADCValue();//保存したデータと違ったら保存
RB2=0;//CSピンコマンド待ち
for(i=0;i<abs((hozon-newhozon)/100));i++){
//以下の部分で,変化に応じた処理
if((hozon-newhozon)>0)
RB3=1;//U/Dピンをアップに設定
increse();//ボリュームを移動
}
if((hozon-newhozon)<0)
RB3=0;//U/Dピンをダウンに設定
increse();//ボリュームを移動
}
RB2=1;//メモリー書き込み
}
}
increse{
RB1=0;
__delay_us(10);//調整の必要ありそう
RB1=1;
みたいな感じで,while(1)の中で,読み取り,比較,処理
をしてます。
それから,
void setADCChannel(unsigned char channel)
{
ADCON0 &= 0b11000111; // bit5~3,CHS<2:0>を初期化(電圧読み取りピンRA0設定だが&=により000)
ADCON0 |= (channel << 3);//上で初期化後、3bit左にシフト?
ですが,ADCON0 の4ビット目から6ビットで,読み取りチャンネルの設定をするために,
&をとって,4〜6ビット目をにしてます。
ADCON0 |= (channel << 3)
は,読み取りチャンネルを channel で受けとって,
ADCON0 の4〜6ビット目にセットするために,
左に,3つシフトさせてます。
それから,AD変換では,割り込みを使う方法もあるようですが,
鉄ちゃんさんのプログラムで,AD変換では,割り込みは使ってないようです。
Re: 続続ーPWM
Re: 続続ーPWM
setADCChannel(0);
この関数は、ADコンバーターの設定をすれば、不用?
理由
読み取り端子は固定なので。
for(i=0;i<abs((hozon-newhozon)/100));i++){
100で割る意味?
increse();
この関数の使い方?スケッチの書き方?
この関数は、ADコンバーターの設定をすれば、不用?
理由
読み取り端子は固定なので。
for(i=0;i<abs((hozon-newhozon)/100));i++){
100で割る意味?
increse();
この関数の使い方?スケッチの書き方?
Re: 続続ーPWM
increas();この関数は、ボリュームということですから、
ひょっとして、No1487中 ↓
数値が多くなったら,AのLEDをつけて消す,
数値が少なくなったら,BのLEDをつけて消す。
この内容を示しているのでしょうか?
追記 ↓ですね?(英訳したら増大という意味だったので、電圧が増えるときの関数だと思っていました。
increse{
RB1=0;
__delay_us(10);//調整の必要ありそう
RB1=1;
ひょっとして、No1487中 ↓
数値が多くなったら,AのLEDをつけて消す,
数値が少なくなったら,BのLEDをつけて消す。
この内容を示しているのでしょうか?
追記 ↓ですね?(英訳したら増大という意味だったので、電圧が増えるときの関数だと思っていました。
increse{
RB1=0;
__delay_us(10);//調整の必要ありそう
RB1=1;
Re: 続続ーPWM
まねて、ちょっと変えて、以下の通りやってみましたが
ダメでした。
if分の書き方を変えています。
16F1827です。
/*RB4で電圧読み取り*/
//RB7が汎用出力14番_SEC基板ポート2のSL-18の1番ピン(出力端子)を入力端子として受ける
//RA1が電圧UPのモニターLED緑で点滅させる
//RA0は電圧DownのモニターLED黄で点滅させる
//RA2はデジタル抵抗のCSピンへ
//RA3はデジタル抵抗のU/Dピンへ
//RA4はINCピンはプルアップで常時HIにする
//PIC16F1827 Configuration Bit Settings
// CONFIG1
#pragma config FOSC = INTOSC // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin)
#pragma config WDTE = OFF // Watchdog Timer Enable (WDT disabled)
#pragma config PWRTE = ON // Power-up Timer Enable (PWRT enabled)
#pragma config MCLRE = OFF // MCLR Pin Function Select (MCLR/VPP pin function is digital input)
#pragma config CP = OFF // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config CPD = OFF // Data Memory Code Protection (Data memory code protection is disabled)
#pragma config BOREN = ON // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config CLKOUTEN = OFF // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
#pragma config IESO = ON // Internal/External Switchover (Internal/External Switchover mode is enabled)
#pragma config FCMEN = ON // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled)
// CONFIG2
#pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection off)
#pragma config PLLEN = OFF // PLL Enable (4x PLL disabled)
#pragma config STVREN = OFF // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will not cause a Reset)
#pragma config BORV = LO // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LVP = OFF // Low-Voltage Programming Enable (High-voltage on MCLR/VPP must be used for programming)
// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
#include <xc.h>
// クロック周波数指定
// (__delay_ms()関数が必要としているため)
#define _XTAL_FREQ 16000000
// プロトタイプ宣言
unsigned int adconv(void); //ADC読み込み関数
// メイン関数
void main(void) {
OPTION_REGbits.nWPUEN = 0; //内部プルアップ有効
OSCCON = 0b0111001; //クロック周波数を16MHzに設定
PORTA = 0x00; //全てLo
PORTB = 0x00; //全てLo
ANSELA = 0b00000000; //全てデジタルI/Oとする
ANSELB = 0b00010000; // 可変抵抗の電圧読み込み用にRB4のみアナログ
// 入出力設定
TRISA = 0b00000000; // RA全て出力
TRISB = 0b10010000; //RB4 可変抵抗用ADC用入力端子
// ADコンバータ設定
ADCON0 = 0b00100001; // アナログ変換情報(RB4から読込む)
ADCON1 = 0b11010000; // 読取値は右寄せ、A/D変換クロックはFOSC/16、VDDをリファレンスとする
//変数宣言
int i;
int hozon=1024;
int newhozon=1024;
while (1) {
adconv();//adc 読み込み関数呼び出し
__delay_us(50); // アクィジション時間(50マイクロ秒)
if(hozon!= adoconv()){
newhozon=adconv();
RA2=0;//CSピンコマンド待ち
for(i=0;i<abs((hozon-newhozon)/100));i++){
if((hozon-newhozon)>0){
RA3=1;//U/Dピンをアップに設定
LATA1=!LATA1;
__delay_us(100);//調整の必要ありそう
LATA1=0;
else if((hozon-newhozon)<0){
RA3=0;//U/Dピンをダウンに設定
LATA0=!LATA0;
__delay_us(100);//調整の必要ありそう
LATA0=0;
}
else{
RA2 = 1; //CSピン_メモリー書き込み(ワイパー姿勢を保存します。)
}
}
}
}
// アナログ値の変換と読込み処理関数
unsigned int adconv() {
GO_nDONE = 1; // アナログ値読取り開始指示
while (GO_nDONE); // 読取り完了まで待つ
return ADRES;
}
ダメでした。
if分の書き方を変えています。
16F1827です。
/*RB4で電圧読み取り*/
//RB7が汎用出力14番_SEC基板ポート2のSL-18の1番ピン(出力端子)を入力端子として受ける
//RA1が電圧UPのモニターLED緑で点滅させる
//RA0は電圧DownのモニターLED黄で点滅させる
//RA2はデジタル抵抗のCSピンへ
//RA3はデジタル抵抗のU/Dピンへ
//RA4はINCピンはプルアップで常時HIにする
//PIC16F1827 Configuration Bit Settings
// CONFIG1
#pragma config FOSC = INTOSC // Oscillator Selection (INTOSC oscillator: I/O function on CLKIN pin)
#pragma config WDTE = OFF // Watchdog Timer Enable (WDT disabled)
#pragma config PWRTE = ON // Power-up Timer Enable (PWRT enabled)
#pragma config MCLRE = OFF // MCLR Pin Function Select (MCLR/VPP pin function is digital input)
#pragma config CP = OFF // Flash Program Memory Code Protection (Program memory code protection is disabled)
#pragma config CPD = OFF // Data Memory Code Protection (Data memory code protection is disabled)
#pragma config BOREN = ON // Brown-out Reset Enable (Brown-out Reset enabled)
#pragma config CLKOUTEN = OFF // Clock Out Enable (CLKOUT function is disabled. I/O or oscillator function on the CLKOUT pin)
#pragma config IESO = ON // Internal/External Switchover (Internal/External Switchover mode is enabled)
#pragma config FCMEN = ON // Fail-Safe Clock Monitor Enable (Fail-Safe Clock Monitor is enabled)
// CONFIG2
#pragma config WRT = OFF // Flash Memory Self-Write Protection (Write protection off)
#pragma config PLLEN = OFF // PLL Enable (4x PLL disabled)
#pragma config STVREN = OFF // Stack Overflow/Underflow Reset Enable (Stack Overflow or Underflow will not cause a Reset)
#pragma config BORV = LO // Brown-out Reset Voltage Selection (Brown-out Reset Voltage (Vbor), low trip point selected.)
#pragma config LVP = OFF // Low-Voltage Programming Enable (High-voltage on MCLR/VPP must be used for programming)
// #pragma config statements should precede project file includes.
// Use project enums instead of #define for ON and OFF.
#include <xc.h>
// クロック周波数指定
// (__delay_ms()関数が必要としているため)
#define _XTAL_FREQ 16000000
// プロトタイプ宣言
unsigned int adconv(void); //ADC読み込み関数
// メイン関数
void main(void) {
OPTION_REGbits.nWPUEN = 0; //内部プルアップ有効
OSCCON = 0b0111001; //クロック周波数を16MHzに設定
PORTA = 0x00; //全てLo
PORTB = 0x00; //全てLo
ANSELA = 0b00000000; //全てデジタルI/Oとする
ANSELB = 0b00010000; // 可変抵抗の電圧読み込み用にRB4のみアナログ
// 入出力設定
TRISA = 0b00000000; // RA全て出力
TRISB = 0b10010000; //RB4 可変抵抗用ADC用入力端子
// ADコンバータ設定
ADCON0 = 0b00100001; // アナログ変換情報(RB4から読込む)
ADCON1 = 0b11010000; // 読取値は右寄せ、A/D変換クロックはFOSC/16、VDDをリファレンスとする
//変数宣言
int i;
int hozon=1024;
int newhozon=1024;
while (1) {
adconv();//adc 読み込み関数呼び出し
__delay_us(50); // アクィジション時間(50マイクロ秒)
if(hozon!= adoconv()){
newhozon=adconv();
RA2=0;//CSピンコマンド待ち
for(i=0;i<abs((hozon-newhozon)/100));i++){
if((hozon-newhozon)>0){
RA3=1;//U/Dピンをアップに設定
LATA1=!LATA1;
__delay_us(100);//調整の必要ありそう
LATA1=0;
else if((hozon-newhozon)<0){
RA3=0;//U/Dピンをダウンに設定
LATA0=!LATA0;
__delay_us(100);//調整の必要ありそう
LATA0=0;
}
else{
RA2 = 1; //CSピン_メモリー書き込み(ワイパー姿勢を保存します。)
}
}
}
}
// アナログ値の変換と読込み処理関数
unsigned int adconv() {
GO_nDONE = 1; // アナログ値読取り開始指示
while (GO_nDONE); // 読取り完了まで待つ
return ADRES;
}
Re: 続続ーPWM
TRさん,こんばんは。
いろいろやっておられますね。
亀レスですみません。
>setADCChannel(0);
ですけど,これ while ループの中で設定してますよね。
意図があるのか分かりませんが,
一度設定したら,OKかもしれませんね。
それから,
>for(i=0;i<abs((hozon-newhozon)/100));i++){
100で割る意味?
の100で÷意味ですが AD 変換で読み取った数値
で,抵抗を10段階で調整しては,ということで,
100でわりました。
AD変換の読み取りの数値は,0〜1024までの数値という
ことでやりましたが,この上の読み取りだと,
変更ですね。
それから,
increse{
RB1=0;
__delay_us(10);//調整の必要ありそう
RB1=1;
}
かっこが抜けてましたね。
誤 increse{
正 increse(){
1827プログラムはちょっと,みてみますね。
PWMの基本周波数変更
100Hz→10kHz
のプログラムでもがいていました。
原因は,PWM発生機のようで,
DUTY比0にしても,パルスが出たりでなかったりです。
いろいろやっておられますね。
亀レスですみません。
>setADCChannel(0);
ですけど,これ while ループの中で設定してますよね。
意図があるのか分かりませんが,
一度設定したら,OKかもしれませんね。
それから,
>for(i=0;i<abs((hozon-newhozon)/100));i++){
100で割る意味?
の100で÷意味ですが AD 変換で読み取った数値
で,抵抗を10段階で調整しては,ということで,
100でわりました。
AD変換の読み取りの数値は,0〜1024までの数値という
ことでやりましたが,この上の読み取りだと,
変更ですね。
それから,
increse{
RB1=0;
__delay_us(10);//調整の必要ありそう
RB1=1;
}
かっこが抜けてましたね。
誤 increse{
正 increse(){
1827プログラムはちょっと,みてみますね。
PWMの基本周波数変更
100Hz→10kHz
のプログラムでもがいていました。
原因は,PWM発生機のようで,
DUTY比0にしても,パルスが出たりでなかったりです。
Re: 続続ーPWM
>原因は,PWM発生機のようで,
DUTY比0にしても,パルスが出たりでなかったりです。
不良品でしたね。
原因が分かってよかったですね。
ADチャンネルは、電圧読み取り端子の設定だと思うので、
プロトタイプ宣言はせずに、簡単にします。
方法
// ADコンバータ設定
ADCON0 = 0b00100001; // アナログ変換情報(RB4から読込む)
ADCON1 = 0b11010000; // 読取値は右寄せ、A/D変換クロックはFOSC/16、VDDをリファレンスとする
プログラムのエラーは、
多分、AD変換後の比較方法にあるような気がします。
その部分が、赤くなっています。
何度かえてみてもうまくいきません。
お知恵拝借します。
どうぞ、宜しくお願いします。
DUTY比0にしても,パルスが出たりでなかったりです。
不良品でしたね。
原因が分かってよかったですね。
ADチャンネルは、電圧読み取り端子の設定だと思うので、
プロトタイプ宣言はせずに、簡単にします。
方法
// ADコンバータ設定
ADCON0 = 0b00100001; // アナログ変換情報(RB4から読込む)
ADCON1 = 0b11010000; // 読取値は右寄せ、A/D変換クロックはFOSC/16、VDDをリファレンスとする
プログラムのエラーは、
多分、AD変換後の比較方法にあるような気がします。
その部分が、赤くなっています。
何度かえてみてもうまくいきません。
お知恵拝借します。
どうぞ、宜しくお願いします。
続ーPWM信号
TRさん,階層が深くなってしまったので,新スレ立てます。
私が SSR BY SS で使ったのは,
SN54HC02 と書きましたが,
実際に作った回路では 74HC02 でした。
http://akizukidenshi.com/catalog/g/gI-11489/
にあります。
それから,これ,PWMの出力で使うとなると,
ちょっと問題があるかもです。
というのは,信号を反転して使ってますので,
PWMの信号が反転します。
すると多分,30%の出力のはずが,70%になるようになると思います。
ですから,PWMでこれ使うとなると,さらに論理回路いれて,
さらに反転させないとだめかもですね。
(−)
→(+)→(ー)
(−)
ということで,
NOR回路→NOT回路(74HC04等?)
なんてことにするようでしょうか。
それと,PWMの基本周波数が100位と低いと大丈夫のようなきもしますが,
論理ICの応答速度等も勘案しないとだめかもですね。
この辺はちょっと,私の力量こえてるかな。
ということでは,後で,この辺も,オシロ等で見てみたいと
思います。
私が SSR BY SS で使ったのは,
SN54HC02 と書きましたが,
実際に作った回路では 74HC02 でした。
http://akizukidenshi.com/catalog/g/gI-11489/
にあります。
それから,これ,PWMの出力で使うとなると,
ちょっと問題があるかもです。
というのは,信号を反転して使ってますので,
PWMの信号が反転します。
すると多分,30%の出力のはずが,70%になるようになると思います。
ですから,PWMでこれ使うとなると,さらに論理回路いれて,
さらに反転させないとだめかもですね。
(−)
→(+)→(ー)
(−)
ということで,
NOR回路→NOT回路(74HC04等?)
なんてことにするようでしょうか。
それと,PWMの基本周波数が100位と低いと大丈夫のようなきもしますが,
論理ICの応答速度等も勘案しないとだめかもですね。
この辺はちょっと,私の力量こえてるかな。
ということでは,後で,この辺も,オシロ等で見てみたいと
思います。
Re: 続ーPWM信号

表の記事見ています。
自動録画の仕掛け凄いですね!!
犯人が見つかるといいですね。
警察に証拠を提出すればいいと思います。
>ということでは,後で,この辺も,オシロ等で見てみたいと
思います。
オシロがあっていいですね。
結果が分かったら教えてください。
論理回路の方、難しくなってきましたね。
やはり、抵抗の一端を基板から切り離して、GNDにつなぎなおした方が早いですかね〜。(;^ω^)
自分のML4ですが、モーターを見ました。
モーターの大きさから言って、ACサーボモーターのようです。
こうなると、サーボアンプとサーボモーターを買うようになる。
金銭的に無理かな〜。ヤフオクかな(笑
でも、ついでに、三菱のサーボアンプ技術解説書を見ました。
多分、このページでいいと思います。
これによると
作動ラインドライバなら ↓
SEC基板〜フォトカプラ〜Sm26LS31〜サーボアンプのPP/PG に接続
オープンコレクタ方式なら
SEC基板〜フォトカプラ〜サーボアンプのPP/PG に接続
上記でいいのかな〜?
で、そこで今回の最大の疑問なのですが、
MACH3のソフトで、SEC基板の信号をPWM信号を出すということになるのでしょうか??
さっそくヤフオクのオークションアラートを設定しました。
Re: 続ーPWM信号
Re: 続ーPWM信号
maboさん論理ICの件有り難うございます。
換装したいモーターは、切削に使うモーターです。
PWMは、やはり、マッハ3のソフトがSEC基板から出力するのでしょうか??
換装したいモーターは、切削に使うモーターです。
PWMは、やはり、マッハ3のソフトがSEC基板から出力するのでしょうか??
Re: 続ーPWM信号

確認するのに手間取ってしまいました。
64ビットのWINDOWS10のノートで確認してましたが、
思った動作をしなかったので、
以前使ってた、32ビットのWINDOWS7のノートで確認しました。
>PWMは、やはり、マッハ3のソフトがSEC基板から出力するのでしょうか??
私は、SECさんの基板の汎用出力14で確認してみました。
オシロで波形をみると、かなりゆがんでます。
それでも、
http://mabo52.sakura.ne.jp/index.php?e=1062
の記事で使ったPWMのコントローラーに入れてみると、
モーターをコントロールすることができました。
SmoothStepperから直接波形を見てみると、
以前、パラレルポートで確認したときのように、
きれいな波形が確認できました。
確認したのは、
ポート2 ピン 1 →○
ポート2 ピン 14 →○
ポート2 ピン 16 →×
ポート2 ピン 17 →○(以前の確認)
です。SmoothStepperのポート2の出力は
1 14 16 17
ですが、ピン16がだめだった原因が不明です。
今回は、間に論理IC入れませんでしたが、
直接 SmoothStepper につげば、ソフトの終了等で、
影響はなかったようです。
ただ、SECさんの基板を通すと、ソフトの開始、終了、
等で、一瞬(1秒程度)、モーターが回転することがありましたが、
直接つないでも、大丈夫かもしれません。
実際の運用では、SmoothStepperに直接つないだ方がいいと思います。
>換装したいモーターは、切削に使うモーターです。
現在のML4のモーターを使わないで、換装でしたか。
それなら、いろいろ、選択の余地は広がりますね。
3相モーターのインバーター制御でしょうかね。
詳細は調べたことはないのですが、
インバーターだと、PWMでの制御も、電圧変化での制御、等
出来る物もあるようですね。
Re: 続ーPWM信号

>直接つないでも、大丈夫かもしれません。
SEC基板に繋ぐということですよね。
具体には、
SmoothSteperポート2 〜 SEC基板の以下の端子〜フォトカプラーやSSR〜サーボアンプのPPとかPG
SEC基板の端子
ポート2の1番・14番・16番(今回の実験結果は?だが一応出力端子)・17番
>実際の運用では、SmoothStepperに直接つないだ方がいいと思います。
この話を聞いてびっくりしました。
なぜかといえば、今まで以下の通り繋ぐ理由は分かりませんでしたが、当然だと思っていました。
PC→SS基板→CNC基板→サーボパック
↑
手パ
直接SmoothSteperにつなげるということは、SEC基板は要らないということなのでしょうか?
直接投げるのは、SmoothStepperのポート2の1・14・16・17ばんですか??
それと、これも今更ですが、パソコンのUSB端子から、ポート1・2・3もの端子を使えるって、
SmoothStepperって、本当に凄いんだなとも思うようになれました。でも、仕掛けの理屈は不明です(笑)
インバーターですか、この場合、欠点があると思います。
モーターの大きさです。 仮に、今と同じ2.2Kwの3相モーターだと今より重くなってしまい、
頭でっかちになると思います。
この先迷っていますが、2.2kwは不要かなとも思います。
実は、
自分は、今日、ML4のX軸のバックラッシュがY軸より大きいので、X軸のボールネジを与圧のボールネジナットに交換しようとしました、、、。
なんと、テーブルの一部を5o深く削らないと与圧ボールネジナットと交換不可なことが
分かりました。 ナットが長くなると当たってしまうんですよね。
もうがっかりで、元に戻しました。くたびれもうけでした。
写真は、アリの激安与圧ボールネジナットです。
一応、組みなおしたので、ひょっとしたら、バックラッシュが改善されるかもしれません。
Re: 続ーPWM信号
TRさん、こんばんは。
ボールナットの換装ですか。
私には未知の分野ですね。
ナットを外すと、中のボールが出てしまうので、
難しいのかなと思ってました。
うまくバッククラッシュ少なくなるといいですね。
夜にまたあれこれやってました。
>直接つないでも、大丈夫かもしれません。
ですが、PWMのコントローラーとSECさんの基板や、
SmoothStepperとの間に論理回路等いれなくても大丈夫かも、
ということです。
PWMのコントローラーにもよるのかもしれませんが、
SECさんの基板の電源等を落としても、モーターが回り続けることはなかった、ということです。
ただ、別な機器、別な環境では、PCの電源を落としたりすると、
モーターが回り続けました。
MACHからの信号で直接FET等をドライブする場合等は、
影響あるかもしれませんせんね。
結局は、実際の環境で、実際に動かして見て、対策するようかな
と思います。
通常は、TRさんの環境のように
PC→SS基板→CNC基板→サーボパック
↑
手パ
みたいになるかと思いますけど、直接SSにつないでも、
大丈夫そうです。
私は、SSへの入力に関しては、自作の中継ボードを介して、
念のためにプルアップしてありますが、
出力(1,14,16,17)に関しては、直接つないでます。
特に、PWM信号のようなを使う場合、SECさんの基板等を経由すると、
信号が経過するところのICの影響で、きれいな波形でなくなる等の影響があるようです。
PWM等の信号を扱う場合は、余計な物を通さない方が、
うまくいくのかなと思いました。
SECさんの汎用出力14番等を使う場合でも、SECさんの基板からとるのではなく、
パラレル信号を横取りする形でとる方が、きっと、きれいな信号を取り出せると思います。
本当に、
>SmoothStepperって、本当に凄いんだなとも思うようになれました。
この通りだと思います。
今回は、ついでにいろいろ調べてみましたが、
私の環境では、MACHに入力する数値とモーターの回転数は、
ちょっと、乖離がありました。
これ、きっと、PWMの基本周波数とカーネルの周波数の
関係かなと思ってます。
基本周波数の変換をしたものを使うとどうなるのか、
そのうち確かめてみようと思ってます。
ボールナットの換装ですか。
私には未知の分野ですね。
ナットを外すと、中のボールが出てしまうので、
難しいのかなと思ってました。
うまくバッククラッシュ少なくなるといいですね。
夜にまたあれこれやってました。
>直接つないでも、大丈夫かもしれません。
ですが、PWMのコントローラーとSECさんの基板や、
SmoothStepperとの間に論理回路等いれなくても大丈夫かも、
ということです。
PWMのコントローラーにもよるのかもしれませんが、
SECさんの基板の電源等を落としても、モーターが回り続けることはなかった、ということです。
ただ、別な機器、別な環境では、PCの電源を落としたりすると、
モーターが回り続けました。
MACHからの信号で直接FET等をドライブする場合等は、
影響あるかもしれませんせんね。
結局は、実際の環境で、実際に動かして見て、対策するようかな
と思います。
通常は、TRさんの環境のように
PC→SS基板→CNC基板→サーボパック
↑
手パ
みたいになるかと思いますけど、直接SSにつないでも、
大丈夫そうです。
私は、SSへの入力に関しては、自作の中継ボードを介して、
念のためにプルアップしてありますが、
出力(1,14,16,17)に関しては、直接つないでます。
特に、PWM信号のようなを使う場合、SECさんの基板等を経由すると、
信号が経過するところのICの影響で、きれいな波形でなくなる等の影響があるようです。
PWM等の信号を扱う場合は、余計な物を通さない方が、
うまくいくのかなと思いました。
SECさんの汎用出力14番等を使う場合でも、SECさんの基板からとるのではなく、
パラレル信号を横取りする形でとる方が、きっと、きれいな信号を取り出せると思います。
本当に、
>SmoothStepperって、本当に凄いんだなとも思うようになれました。
この通りだと思います。
今回は、ついでにいろいろ調べてみましたが、
私の環境では、MACHに入力する数値とモーターの回転数は、
ちょっと、乖離がありました。
これ、きっと、PWMの基本周波数とカーネルの周波数の
関係かなと思ってます。
基本周波数の変換をしたものを使うとどうなるのか、
そのうち確かめてみようと思ってます。
Re: 続ーPWM信号

>PWMのコントローラーとSECさんの基板や、
SmoothStepperとの間に論理回路等いれなくても大丈夫かも、
ということです。
これは条件付きですよね?
SEC基板をプルダウンにしない場合は、※(論理IC)がきっと必要でしょうという事ですね?
繋ぎ方
PC〜SmoothStepper〜SEC基板〜※〜FETやフォトカプラ〜、SSR
>みたいになるかと思いますけど、直接SSにつないでも、
大丈夫そうです
これは便利!
PC〜SmoothStepper〜FETやフォトカプラ〜、SSR
このつなぎ方ですよね?
>SECさんの汎用出力14番等を使う場合でも、SECさんの基板からとるのではなく、
パラレル信号を横取りする形でとる方が、きっと、きれいな信号を取り出せると思います。
Simple IS Best!
改造となると、14番が隅にあるので、14番にリード線をはんだ付けする方法が簡単でしょうか?
それと、PWMコントローラーから、信号を確認しているように思えますが、PWMをつけずに、
MACH3のGコードでも、PWM信号を可変できますよね?
具体には、GコードのS記号(例 S1000)でPWMを変える。
ボールねじを組みなおしたら、XY軸共にバックラッシュが0.01となりました。
原因は、ボールネジの軸受けマウントボルトのゆるみ!!
それと、ボールネジの心出しと思います。
ボールネジが飛び出しても、簡単に治ります。 動画 ↓ 他にもありますよ。
https://www.youtube.com/watch?v=d0HDM8TYLjM
昨日も3個落として組付けなおしました(笑い
写真は、交換作業中のがっかりした場面です。
追記
SEC基板を見ると、出力信号は、論理ICにつながっているだけ
しかし、入力、論理ICのほかにAM26LS31CNがつながっている。何かありそう。
Re: 続ーPWM信号
TRさん,おはようございます。
バッククラッシュ,改善よかったですね。
それと,ボールネジのボールの詰め込み?の情報ありがとうございます。
回転数確認したのは,MACHからの信号を,PWMのコントローラーに入れました。
PWMのコントローラというか,機能的には,モーターのドライバーですね。
外部からのPWM信号で,電圧(電流?)変えて,モーターに送るものです。
FETの役割をはたすものかな。
Gコード書くの面倒だったので,ジョグモードでいれました。
http://mabo52.sakura.ne.jp/index.php?e=802
に書いた手順です。
それと,信号の横取りですが,この記事にあるようなもの使うと,
基盤本体には手をつけづにできます。
これ,秋月です。
http://akizukidenshi.com/catalog/g/gC-00042/
私はこれを使いましたが,これだけだと,メスメスなので,
http://akizukidenshi.com/catalog/g/gC-00046/
もいるかと思います。
PWMのコントロールについては,
もちょっと,いろろやってみるつもりです。
以前にやったPWMの基本周波数を変更するPIC又作成しようと思います。
新しい環境に移植するのに,また,時間かかるかなあ。
そのために,自分でも作ってもよかったのですが,
PWM発生機ポチりました。
https://www.amazon.co.jp/gp/product/B077Z3TD8B/ref=ppx_yo_dt_b_asin_image_o01_s00?ie=UTF8&psc=1
バッククラッシュ,改善よかったですね。
それと,ボールネジのボールの詰め込み?の情報ありがとうございます。
回転数確認したのは,MACHからの信号を,PWMのコントローラーに入れました。
PWMのコントローラというか,機能的には,モーターのドライバーですね。
外部からのPWM信号で,電圧(電流?)変えて,モーターに送るものです。
FETの役割をはたすものかな。
Gコード書くの面倒だったので,ジョグモードでいれました。
http://mabo52.sakura.ne.jp/index.php?e=802
に書いた手順です。
それと,信号の横取りですが,この記事にあるようなもの使うと,
基盤本体には手をつけづにできます。
これ,秋月です。
http://akizukidenshi.com/catalog/g/gC-00042/
私はこれを使いましたが,これだけだと,メスメスなので,
http://akizukidenshi.com/catalog/g/gC-00046/
もいるかと思います。
PWMのコントロールについては,
もちょっと,いろろやってみるつもりです。
以前にやったPWMの基本周波数を変更するPIC又作成しようと思います。
新しい環境に移植するのに,また,時間かかるかなあ。
そのために,自分でも作ってもよかったのですが,
PWM発生機ポチりました。
https://www.amazon.co.jp/gp/product/B077Z3TD8B/ref=ppx_yo_dt_b_asin_image_o01_s00?ie=UTF8&psc=1
Re: 続ーPWM信号
>外部からのPWM信号で,電圧(電流?)変えて,モーターに送るものです。
変えられ電圧は、機種により種類は有りますか?
0v~24vとか、ないですか?
変えられ電圧は、機種により種類は有りますか?
0v~24vとか、ないですか?
Re: 続ーPWM信号
TRさん,こんにちは。
私の使ったのは,24V仕様のDCモーターで,
このPWMコントローラーも24V入れてます。
https://www.amazon.co.jp/12V-24V-110V-DC%E3%83%A2%E3%83%BC%E3%82%BF%E9%80%9F%E5%BA%A6%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%9C%E3%83%BC%E3%83%89PWM-MACH3%E3%82%B9%E3%83%94%E3%83%B3%E3%83%89%E3%83%AB/dp/B01MS47O1H/ref=sr_1_12?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=PWM+MACH3&qid=1558412025&s=gateway&sr=8-12
と同じだと思います。
アリで買ったかな。
黄色のジャンパーの切り替えで,
MACHからの入力でのコントロール(外部PWM信号)と
付属のボリュームでの速度調節の両方ができます。
私の使ったのは,24V仕様のDCモーターで,
このPWMコントローラーも24V入れてます。
https://www.amazon.co.jp/12V-24V-110V-DC%E3%83%A2%E3%83%BC%E3%82%BF%E9%80%9F%E5%BA%A6%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%A9%E3%83%9C%E3%83%BC%E3%83%89PWM-MACH3%E3%82%B9%E3%83%94%E3%83%B3%E3%83%89%E3%83%AB/dp/B01MS47O1H/ref=sr_1_12?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&keywords=PWM+MACH3&qid=1558412025&s=gateway&sr=8-12
と同じだと思います。
アリで買ったかな。
黄色のジャンパーの切り替えで,
MACHからの入力でのコントロール(外部PWM信号)と
付属のボリュームでの速度調節の両方ができます。
Re: 続ーPWM信号
>黄色のジャンパーの切り替えで,
MACHからの入力でのコントロール(外部PWM信号)と
付属のボリュームでの速度調節の両方ができます。
maboさんビンゴかも!
ML4はsw付VRでスピンドルモーターの回転数を制御しています。
なので、mLのsw付VRの分圧させる端子に紹介下さったPWM to DC変換器を繋げてOKかも!
MACHからの入力でのコントロール(外部PWM信号)と
付属のボリュームでの速度調節の両方ができます。
maboさんビンゴかも!
ML4はsw付VRでスピンドルモーターの回転数を制御しています。
なので、mLのsw付VRの分圧させる端子に紹介下さったPWM to DC変換器を繋げてOKかも!
Re: 続ーPWM信号

先程、ML4のVRの電圧を調べました。
その前にちょっと、
当初SW付きVRを記載しましたが、SWはないVRでした。
しみませんでした。
で、電圧ですが、DC5Vの電圧がかかっていました。
そうなると、次の品ですかね??
以前ご紹介くださったものです。
このボードは、ボードの電源にDC24Vが必要なのでしょうか?
https://www.amazon.co.jp/Mach3-Board-Spindle速度制御-Control-CM-112/dp/B00LMY3BIQ/ref=sr_1_cc_1?s=aps&ie=UTF8&qid=1423792029&sr=1-1-catcorr&keywords=PWM%E3%80%80MACH
Re: 続ーPWM信号
TRさん,おはようござます。
ML4のモーターを直接ドライブするのではなく,
「ポテンショメータ(ボリューム)の代替え」
ということだったんですね。
回路のことになると,よくわからないのですが,
私の使ったPWMコントローラーは,難しいと思います。
下手すると,基板壊しそうな気がします。
使えるとしたら,デジタルポテンショメータあたりでしょうか。
ネットでくぐりましたけど,
https://denshikousakusenka.jimdo.com/%E9%9B%BB%E5%AD%90%E9%83%A8%E5%93%81/%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB%E3%83%9D%E3%83%86%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%A1%E3%83%BC%E3%82%BF-x9cxxx/
位しかヒットしませんでした。
ML4のモーターを直接ドライブするのではなく,
「ポテンショメータ(ボリューム)の代替え」
ということだったんですね。
回路のことになると,よくわからないのですが,
私の使ったPWMコントローラーは,難しいと思います。
下手すると,基板壊しそうな気がします。
使えるとしたら,デジタルポテンショメータあたりでしょうか。
ネットでくぐりましたけど,
https://denshikousakusenka.jimdo.com/%E9%9B%BB%E5%AD%90%E9%83%A8%E5%93%81/%E3%83%87%E3%82%B8%E3%82%BF%E3%83%AB%E3%83%9D%E3%83%86%E3%83%B3%E3%82%B7%E3%83%A7%E3%83%A1%E3%83%BC%E3%82%BF-x9cxxx/
位しかヒットしませんでした。
新年号おめでとう
演習

自分は、本日は休みでしたので、
一応完成した、集塵装置と冷却装置の演習をやりました。
演習の方法は、ジュラルミンの板をエンドミルで突っ切って切断するというものです。
切断の方法は、2つあって、
切削油を使わないドライ切削と切削油を使う切断があるとおもいます。
今回は、切削油を使う切断です。
やってみて分かりました。
ドバっと切削油をかけているCNCフライスの動画を見ましたが、
その理由は、切子を噛まないように切削油で流す為にドバっと流していたわけです。
切削油は、ぽたぽた程度で足りますが、切子を流すには、それなりに切削油を流す必要があります。
そうしないと、切子が溜まります。
廃油ラインは、最初からテーブルに穴があったので、
その穴から廃油を流しました。 そして、
テーブルから落ちる廃油は、自分の場合、フライス盤の台座自体が大きな皿になっているので、テーブルから落ちた廃油は、大きな皿の廃油孔から流れ出る仕掛けです。
補足すると、フライス盤を大きなバーベキュー鉄板の上に乗せてあるのです。
でも、今回は、テーブルの下にオイルパンを置いてそのオイルパンで受けました。
切削油のポンプは快調でした。
切子を流す量は可能な感じです。
作業を終えて思いましたが、作業後の清掃が面倒です。
でもま〜、集塵装置が大活躍でした。
やはり、集塵装置と冷却装置は必要だな〜とも感じました。
流量計算無しで

切子ガードの次の懸案事項である集塵装置に着手しました。
流量計算とかなしで始まっています。
凡その外郭がまとまったので、
今回の肝である一挙両得ともいえるような思い付き部分を作りました。
何が一挙両得かというと
集塵機は1つですが、ノズルが2つ欲しい。
一つは、切削中に吸い取るため、
もう一つは、
切子ガード内の集塵用
2回路のホースを設けるとかあるのだろうけど
自分は、
伸縮ホースを用いることにした。
切削中のノズルを、外して、切子ガード内を清掃できるように、伸縮ホースを畳み込めるように、
さや管にしました。
Re: 流量計算無しで

今日も帰宅後、いそいそとガレージに直行。
アフター5の時間は好きなことをやっています。
今夜は、集塵装置が完成したので、
つまり、配管した管と管との繋目に接着剤やシーリングをました。
ま〜、購入後5年の集塵機本体がだいぶくたびれているようですが(笑
結果、満足できました。
自分の場合、3重で切子対策をしています。
つまり、
フライス盤本体の囲み
切子ガード
そして今回の集塵装置
欲を言えば、もう2p位切子ガードの壁の高さを上げれば良かったかと思います。
残す課題は、排油ラインです。
これが難しい。
写真は、集塵機で吸い込んだ様子です。
この形態のため、集塵機で全ての切子は吸い込めません。
ただ、一挙両得でして、
伸縮ホースを仕込んだので、
ホースを伸ばして、周りのごみも吸い取れるようにしました。
Re: 流量計算無しで
TRさん,今晩。
いろいろ,充実してきましたね。
木工では,あれこれ,集塵対策して,いろいろやりましたが,
金工では,集塵は,手つかずです。
どうるすのがいいのでしょうかね。
金属の切り子,吸い取るのは,結構,力がようなんでしょうね。
へたすると,ホース内で,詰まったりするのかなあ。
これに,切削油等がからんでくると,複雑ですね。
乾湿両用の集塵機でも使う必要があるんでしょうかね。
https://www.kyocera-industrialtools.co.jp/powertools/products/item_detail.php?pid=1138
DIY三昧,ちょっとうらやましいかなあ。
私は,このところ,親戚の山の後始末。
伐採した木を薪にするための,玉切りををしています。
おかげで運動不足は,解消ですが,腰がいたい。
いろいろ,充実してきましたね。
木工では,あれこれ,集塵対策して,いろいろやりましたが,
金工では,集塵は,手つかずです。
どうるすのがいいのでしょうかね。
金属の切り子,吸い取るのは,結構,力がようなんでしょうね。
へたすると,ホース内で,詰まったりするのかなあ。
これに,切削油等がからんでくると,複雑ですね。
乾湿両用の集塵機でも使う必要があるんでしょうかね。
https://www.kyocera-industrialtools.co.jp/powertools/products/item_detail.php?pid=1138
DIY三昧,ちょっとうらやましいかなあ。
私は,このところ,親戚の山の後始末。
伐採した木を薪にするための,玉切りををしています。
おかげで運動不足は,解消ですが,腰がいたい。
Re: 流量計算無しで

>切削油等がからんでくると,複雑ですね。
その通りです。
今までの経験ですと、管内は、べとべとになってしまうので、交換しました。
もちろんフィルターも一緒に交換しましたよ。
自分も、現集塵機がくたびれてきたので、先程ぽちっと行きました。
RyobiのVC1150です。
買い替えの目安は、吸い込み仕事率です。
吸込仕事率=0.01666×風量(立方メートル/min)×真空度(Pa)
風量3.0立法メートル/min
真空度 25kpa
計算を当てはめると、VC1150が、安価で一番「吸い込み仕事率」が良かったと思いました。
>おかげで運動不足は,解消ですが,腰がいたい。
晴耕雨読のような感じでいいじゃないですか。
自分も、退職後は、あまり金がかからないようにしています。
VC1150もポイントを使って買いました。
もちろん、ポイントは、なるべくつくように購入していますよ。
新集塵機が来て、試して、いい感じだったら、自分のHPにアップします。
今のところ、1つの集塵機で、カッターの吸い込みと、テーブル周りの吸い込みができるので、大変便利です。
写真の吸い込み口部分も、自由に角度が変えられるので、便利です。
集塵機ですが、アマゾンで中華製サイクロンを買って、手持ちの掃除機と合体で集塵対策をしている人もいるようですね。
実は、自分、バイクのメンテにサンドブラスターを使っていまして、その集塵対策にサイクロンを使っています。
確かに、サイクロンによって、チリを分別できます。
したがって、掃除機から出る廃棄によって、自身の肺にチリを吸い込むなんてない感じですよ。
- JoyfulNote v6.02 -
++ Edited by Hamel ++