)「シェル」というのは,ケースなのでしょうかね。◯zonは不親切です。ステッピングモータドライバPCF8574を使ったI2C-1602ですけど、あまり好きじゃないです。表示にえらい時間を喰います。秋月の本来のI2C-1602と比べると3倍位は送信回数が必要なのではないでしょうか。速度が1/4なので、(秋月のは400kHz)10倍以上、作業時間がかかります。私もそのモジュールは所有していますけど、使う気にはならないですね。74HC595の方が、よりシンプルで速いと思います。1ピン増えてしまいますけど。1602(通常サイズ)は、ほぼそのまま使っています。LCDはケースに固定して、そのピンヘッダにマイコン基板を差し込む形で固定して...、というのがケーブルを使わずに済むので楽です。PILL(STM32F1ボード)に載ってる3.3Vの電圧レギュレータって、入力は5.5V以下なんですよね。PILLは、外からは5.0Vを入れて3.3Vを出力するように設計されています。その点も方針変更で、ACアダプタ?から5Vを基板に入れて、それを利用することにしました。カレントダウン的には良くなったかもしれません。※私もこの間、方針が決まらないばかりに、無駄な買い物をしてしましました。LGT8F328PボードはニセATMEGA328Pなのですけど、倍の32MHzまで出て、チョコチョコ高性能になっています。これにしようかとも思ったのですけど、データシートが中国語のみのようなので、今回は見送りました。ステッピングモータドライバ取り敢えず、基板切削→取り付けまでしました。電気は流していません。X9Cが見えなかったので、右下画像も入れました。PILLの下に隠れる形です。幾つかの小さな失敗がありましたけど、今の所、おおむね順調です。(とはいえ、電気を流したわけでは無いので、基板パターンが正しいかも未確認ですけど)でも、問題はこれからです。LCDのメニューを作るのが一番面倒なんですよね。今回は初のARMマイコンなので、その点もデータシートとにらめっこです。IDEでどのように記述すればいいのか?マイコン&レジスタの理解と、コンパイラの問題と2段階あるので大変です。ステッピングモータドライバ猛牛ロックさん,こんばんは。亀レスになって,すみません。このところ,実家の草刈りやらなんやらで,ばてぎみで,工作?していませんでした。猛牛ロックさんのドライバー基盤,いいですね。CNCで削れれば余分な配線しなくてもいいかなと思いますが,なかなか,実行できないでいます。私の方もやっと部材がそろってきたので,暇見てあれこれやろうかな,と思います。キーボードですが,ダイオードとバッファプログラム等のついているしなぷすさんのと,単なるマトリックスの中華製のものと二つ買ってしまいました。中華製のものは,キーセンスのプログラムくまないとなので,ちょっと面倒かなと思います。=======74HC595の情報もありがとうございます。この辺,私は,無知で,表示スピードのことは,考えずに選んでしまいました。私の場合は,実用面もさることながら,とりあえず,試せれば満足な気持ちなれるかなと思います。No.1756疑似抵抗ー1TRさん,猛牛ロックさん,おはようございます。adconv();>駄目だと分かりました。>32にしないと駄目!ですが,32にしてしまうと,0〜31が全部0になると思います。30みたいに全部30になり,思った結果にはならないと思います。ためかな,思ってました。思った結果になるような気がしてますが,この辺,ちょっと,私自身あいまいなところです。次のようにすれば,混乱しないかなと思います。読んだ結果を過去の一つと入れ替えて配列に保存する。今までに保存した合計を出して平均する。↓アップdダウンの処理をするこれを繰り返すという考え方の処理です。//down関数呼び出し}__delay_ms(1);}の処理では,64回測定し,それを配列に保存する。↓64回の合計を出し平均する。↓アップダウンの処理をする。みたいな流れになると思います。64回ごとに新しい平均値を使って計算してますので,もしかして,そのために,なめらかな変化にならないのかな,という気もしてます。ように,過去のデータに付け加える形で計算した方がなめらかかもしれないと思いました。後で,比較してみようと思います。>for文に来た時、継続条件式をすべて実施した後、やっと、for文を抜けることができるのでしょうか????これは,そうだと思います。文を入れることで強制的にも抜けることができたように思います。====エクセルで添付の写真のように,いくつか入力すると設定値を計算できるもの作りました。よかったら,使ってみてください。シートには保護かけてあります。PR2が256以上になるとエラーになるようにしてあります。疑似抵抗ー1maboさんこんにちは。>この辺もよく分からないところなのですが,no1728にある__delay_ms(1);これが、サンプリング間隔です。__delay_ms(1)でサンプリングをとりつつ、upとdownにも対応していますので、テスターの動きがスムースでわないと思いました。サンプリング回数を当初4から増やした理由は、電圧を拾いきれない感じで、電圧の幅が狭かったからです。平均なので、そうなると思いました。後、エクセルは、帰宅後に見させて頂きます。疑似抵抗ー1maboさんこんにちは。サンプリングはとらないと駄目という話でした。理由はPWM基本周波数により、信号が送られて来るからだそうです。no1728にある__delay_ms(1);これが、サンプリング間隔です。__delay_ms(1)でサンプリングを今は、マッハのPWM基本周波数を250ヘルツから実験するつもりなので250usにしています。実験なのでスタートはマッハの基本周波数を100ヘルツから様子を見ます。疑似抵抗ー1maboさんこんにちは。>読んだ結果を過去の一つと入れ替えて配列に保存する。//U/Ddown関数呼び出し}}}ですよ。この場合、whileの中で2集目は、配列やAD値は、全て初期化されますよ。maboの下記プログラムはエラーを起こしました。すみませんが、話の筋は素晴らしいので、成功したら、全て教えて下さい。実際とはずれている感じがします。某サイトでこの質問を見て、私は下記の回答をしました。ように設定して、コンパイラはその周波数から、delayの相当する時間分、何もしない命令を算出します。※実際に動く速度はCONFIG等で設定した速度です。その速度と_XTAL_FREQの値が違っているとおかしくなります。場合、○倍(1/○倍)時間がおかしくなります。一つは、delay命令を実行中に割り込みが入ると、割り込みの時間分、遅くなることになります。内蔵オシレータは性能が悪いので、時間を算出するような用途だと結構ずれていくと思います。このあたりは、大抵、ちょっとの時間のずれですから、分単位でみないとわからないでしょう。その後、ここを訪問して、下記の書き込みを見て、質問者がTRさんだったのをすぐに気づきました。実際とはずれている感じがします。XXXXXがおかしいのだろうと思ったわけです。データシートをみて、どの部分を弄れば周波数が決まるのかをチェックして、プログラムと1つずつ突き合わせました。おかしい部分を発見したので、下記の回答を追加しました。初心者にも丁寧な説明をお願いします。丁寧な説明によりストレスが少なくなります。返信して、その質問は終わりました。意味が判らなければ、更に聞けばいい事です。今まで返信していた大抵の人は間違えた箇所を教えてあげれば自分で気づいて直していました。TRさん、甘え過ぎですよ。いつまでも初心者とか言っていますけど、PICで言えば、TRさんが始めたので私も始めたように記憶しています。(それ自体は記憶が定かではありませんけど、初めてPICを秋月で注文したのが2015.11.3です。)会社でもたまにマイコンを使っていますけど、全てAVRで、PICはドットマトリクスで正月の挨拶のやつをやって以来、多分、使っていません。話がそれましたけど、プログラムは自分で責任をもって改変すべきです。maboさん、いつも丁寧な説明に感謝します。気が合いますね!!!これをみて、下劣な人だと、と感じました。私が丁寧な説明をしていない、という書きぶりですよね。私がこの類の心配が無い、Arduinoを薦めていたのを忘れているのでしょうか?CONFIGやレジスタの使い方も決して初めてではありません。データシートをみるのはPICでは必須です。これまで幾度となく説明しましたし、重要性も説きました。調べて値を教えるのは簡単な事です。TRさん自身がデータシートを見て設定する事が重要なんです。※さもなければ、信頼できるものを入手して、決して変えない事、という趣旨を話しました。それを自分で出来ないのならもうやめた方が良いです。//クロック周波数を16MHzに設定で、全く直っていませんね。TRさんは、あなたが私のプログラムを何度改悪して、私のストレスになったかお判りでしょうか?その度に悪い箇所を指摘するのに、何もストレスが無いと思っているのでしょうか?指摘しても直してもらえず、また指摘するのもストレスなんですよ。プログラムは基本的に、他人に直してもらうものでは無いのです。自分で作り上げるものだと思います。PICが初めてなら私もその値を教えます。私がマイコン(AVR)を初めてから約6年弱です。PICに手を出してからは3年半。その3年半はTRさんとも重なっていますよね?いつまで初心者とか、甘ったれているつもりなのでしょうか?私はその6年弱の間に、マイコンの事を他人に聞いた事は無い???と思います。(記憶の上では)勿論、判らない事だらけでしたから、データシートやWEB上の役に立ちそうなものを調べまくりました。3年半は、専門学校でも卒業するような年月です。一体何年で初心者を卒業するつもりですか?そして、初心者を卒業する気はあるのでしょうか?※私は「初心者」と言えるのは半年程度だと思っています。「初心者」と「初級」は違います。ここでPICを始めた当初、AVRの方は2年半程度でしたけど、「初級の終わりあたり」だと自分で認識していました。私が作ったプログラムを改悪されるのも、それが一因でなにかおかしな事になっていくのも私にとってストレスです。今後一切、私が作ったプログラムは改変=使わないで下さい。疑似抵抗ー1猛牛ロックさんへ言い合いをする気はありません。猛牛ロックさんに色々と教えて頂いて感謝しています。分からないことは分からないんですよ。今回ご教示頂いたプログラムは、つい最近までうまく動作しなかったのです。教えて頂いたプログラムなので、内容を理解し、動作したいと思いました。改悪するつもりはありません。上手く動作するプログラムにしたいと思っています。悪くはとらえないで下さい。疑似抵抗ー1maboさんへ理由はどうであれ、脇で見ていて気分を害されたと思います。自分は、もうこの場所に来ません。うまくいかないと思うからです。これまで、色々と教えていただき感謝申し上げます。本当に残念ですが、失礼します。言い合いをする気はありません。私は言い争いも厭いませんよ。それでいい方向に向くなら。分からないことは分からないんですよ。//クロック周波数を16MHzに設定とした理由は説明できますか?私は、何もしていない「教えて君」だと判断しました。何も確認せずに、努力もせずに、答えだけを聞いたという判断です。「でも、分からないことは分からないんですよ。」なんていうのはその為の努力をした人が言う言葉です。見苦しい言い訳は止めてもらいたいです。本当に見て(努力して)わからなかったのならはっきりと言ってください。私はTRさんに完成したプログラムを教えるのが目的ではありません。TRさんがマイコンが使えるように、プログラムが書けるようになるために協力してきたつもりですよ。礼の一つも言わずに、「何故丁寧に説明しないんだ」という類の事を言ったのですよ!私にはその尊大な態度の理由が判りません。そこまでする義務は負っていませんから。それだけなら流していました。(そういったストレスは私にもこれまでにも幾度もありますよ)で、今朝の投稿(No.1727)です。maboさん、いつも丁寧な説明に感謝します。気が合いますね!!!これはどう見ても、私への文句が含まれていますよね。言わない、何とも、いやらしい表現だと思います。//クロック周波数を16MHzに設定これだけ文句を言いながら自分では何もしていない!!!と、まぁ、こんな感じで私は捉えたのですが、それについては何か反論はありますか?「悪くはとらえないで下さい。疑似抵抗ー1MABOさん、こんな事になってしまい、申し訳ありません。私の接し方が悪かったのでしょうか?元々、バイタリティーがあって、どんどん突き進むイメージがある人でした。今とは違って、勝手にどんどん進んでいくイメージでした。目が離せないというかでも最近は、なんとなく寄生しているようなイメージを持っていました。自分の両足で立っていないような...遅かれ早かれ、こうなったような気がします。このままでは何も成長しないのは目に見えていましたから。「私のプログラムを一切つかうな」というのは、「1行ずつちゃんと自分で責任をもって書いていかないと身に付かない」、という考えから来ています。実の所、そんなに怒っている訳ではありません。このまま居なくなるのでしょうかね?原因を作った身ですけど、寂しく感じます。そんな時に、AD5220が来ました。テストしましたから報告します。初期化のシーケンスは一度、一番上までワイパーを上げて、一番下まで下げます。HIGH);}としたらこの後は完動しました。(10回程度確認)でワイパーは0〜127です。その間はぼちぼち綺麗(多少のゆがみあり)に動きます。電圧は0V(B側)〜4.96V(A側)でした。片側はちゃんと付くのに逆は付きません。逆に繋ぐと0.04V(A側)〜5.0V(B側)となります。(添付図はこっちの接続です)つまり、A側は抵抗1つ分、存在しているようです。→128ポジションで、ワイパー1つで1/128動きます。A側には1ワイパー分残ります。ワイパー抵抗は24Ω程度。疑似抵抗ー1TRさん,猛牛ロックさん,こんばんは。猛牛ロックさん,詳しい実験結果のありがとうございます。>つまり、A側は抵抗1つ分、存在しているようです。これは,どうんなんでしょうかね。仕様なのか,それとも,ワイパーの移動に使ってる半導体が,製造時に不具合起こしたのか,ちょっと?でしょうか。実際に使用するには,安定して動作するための条件等,いろいろ調べる必要ありですね。トランジスタかフォットカプラーと秋月の安いロータリーエンコーダーとエンコーダーを使って,自作のデジタルポテンショメーター作ってみようかな,なんて思ってます。疑似抵抗ー1データシートにはその辺の所は書かれていないようです。動端子に接続されています。B端子の接触点がこれに追加されます。この説明やその上の図は理解できませんでしたけど、端子A、端子Bにはちょっとした違いがあるようには読み取れます。(その上の図38なんて、Ax端子とWx端子が繋がっているので、全く意味が解りませんなので、このデータシート自体、「REV.0」となっているように、信頼性は低いです。全て当てはまるかは不明です。※最初は、初期化で、一番下までワイパーを下げてから、ループ関数で、「1つずつ上まで上げていき、一番上まで行ったら一番下まで下げる、」の繰り返し、というスケッチで試していました。ここで上がっていたようなスケッチです。(ループ部は一段毎に全てモニタ表示)で、数回の結果としては、全て、初期化は不十分でした。上に上げていく段階(ループ関数)で、スタート位置はいずれもバラバラで、ゆったりとフロートしているような感じです。感覚的にはhi-zピンを調べているようなかんじでしょうかけれども、ある時から正常に動いていました。ある時とは、一度上がって下がるときから同期していました。さっきもう一度試してみたのですけど、必ずしも、前回いったスケッチで初期化がうまくいく、という訳ではありませんでした。いっても、ループ部の最初の上げ下げで、必ず同期しました。=2回目で同期した、という事です。同期する瞬間は、ワイパーを下げていく(A→B)ときにその電圧を通りすぎる時に付いていくような感じです。不思議と、ワイパーを上げる(Aに近づける)時には同期しません。いずれにしても、ワイパー操作自体はdelayは要りません。電源と同時投入なら、ピン初期化→1ms程度delay→2往復位ワイパーを↑↓させれば大丈夫だと感じました。ワイパーAに、1ワイパー分の抵抗が残る、というのは、抵抗値は偶然なのかもしれません。この個体的には、必ずそうなっています。Aを5V側にすると、ADC値は990,997,1006,1014,1014,1014,...と1014(もしくは1015)でピタっと止まります。下げる方は15,7,0,0,0,...です。(7の部分は7か8です。)逆にAを0V側にすると、23,15,7,7,7のように、それ以上なりません。B側は1007,1015,1023のように、ぴたっと最上まで来ます。数値は1ワイパー分の8(7〜9)です。ワイパーをA側にいっぱいにしてA-W抵抗値を計測すると97.5Ω程度です。97.5-24.5(ワイパー抵抗)=73ΩAB間の抵抗値は9.15kΩ程度なので、9150/128=71.5Ωと、ほぼ一致します。※数値は千円以下のおもちゃテスターなので、正確性には欠けます。この個体に関しては、やはり前回の添付図のような構成になっていると考えて間違いないと思います。あと、抵抗値は16ポジションごとに低いものがあります。(添付図右)(本来、差が8になるはずがそこだけ5になります)<追記>テスト中、チョコチョコ変えますけど、下記がテストスケッチです。これで、おかしい動きを見つけるのが面倒な位、正常に動きます。※最初はdigitalWriteで、検証していたのですけど、digitalWriteは50クロックほどかかりますから、bitSet/bitClear(2クロック?)に変えました。疑似抵抗ー1猛牛ロックさん,こんばんは。AD5220の細かい検証の資料ありがとうございます。いつもながら,猛牛ロックさんのくださる資料の緻密さにびっくりしてます。私は,おおざっぱな検証しかしてないので,なんともいえないのですが,PWMコントローラーのボリュームと,AD5220を入れ替えて,モーターを回したところ,抵抗を小さくしていくと,モーターの回転は,順次上がっていくのですが,ある場所で,上がらないで,むしろ下がるような印象を受けた箇所が何カ所かありました。>あと、抵抗値は16ポジションごとに低いものがあります。(添付図右)>(本来、差が8になるはずがそこだけ5になります)もしかして,これが原因なのかなと思いました。私の持ってるものは,100kΩのものなので,もし同じような傾向があるのなら,単純計算の10倍で,30Ω程度でしょうか,低い物が混在してるのでしょうかね,検証の必要はあると思いますが。この30Ω程度の抵抗が果たして,私か感じた回転数の低下にどの程度関係してるのかは,自信はありませんが・・・・・。MACHのPIDの検証もやりたいなと思っているのですが,グレイコードで頭抱えています。なんとなく理解はできてきたのですが,通常のコードへの変換等,ビット操作のオンパレードみたいなので,頭いたいです。疑似抵抗ー1MABOさんのは100kΩだったんですか。100kΩの方がデータシート的には誤差(の割合)が少なく書いてあります。添付図では、どちらが50kΩか100kΩかは判りませんけど、10kΩよりはバラつきが少ないのが見て取れます。私の通常8毎のはずが16ワイパーおきに5になっている、というのは添付図(グラフ)の黄線部分だと思います。そこだけ-0.3LSB=30%程度、抵抗が低いので、8→5の変化は納得いく数字です。見ると、その半分の所で、+1の9になっています。それはグラフのちょこっと山になっている部分(水色)のせいだと思います。訳が分からない説明がありながらも、納得できる部分もある感じですね。電流の流れすぎによる、電圧低下なのではないかと予想します。疑似抵抗ー1猛牛ロックさん,こんばんは。詳しい資料ありがとうございます。マニュアルに載っているんですよね。グラフ見ただけで,毛嫌いして,解釈するのあきらめてました。>多分、電流の流れすぎによる、電圧低下なのではないかと予想します。いうこともあるんですね。この辺も私の理解の及ばないところかな,なんて思います。AD5220にを使って,モーターを回したときには,回転数等,詳しくみてないので,感覚で,回転数がさがった,と判断してるところもあるので,回転数の表示させて,後日,みてみようと思います。今,部材をいろいろあたってます。疑似抵抗ー1X9C(10kΩ)も一応試したので、載せておきます。こちらの方は0〜5.0Vまで動きました。(正確にはADCで0〜1023という事です)ワイパー抵抗は45Ω程度、A-B間の抵抗は9.0kΩでした。break」は並列になるので、抵抗値が下がるのかと思っていたのですけど図を描いてみたら、過渡期は両抵抗の間になるのですね。理論的には安全性が高くて、良いデバイスと言えると思います。AD5220と同じもので試したのですけど、1usの間隔では駄目でした。2usにしたら動きました。バラつきはAD5220と同じ程度ありました。16ワイパー毎というわけでは無く、何となくばらついています。break」の時間はデータシートでは平均100us、MAXで500usとなっていますけど、5V側(ワイパー位置99)から1つ下げて観測してみたのですけど、20us後には安定した電圧になっているようです。理論的にはmakeで並列状態になった時は「ワイパー抵抗45Ω×2の直列」と「抵抗1つ分の90Ω」の並列なので、この部分の合成抵抗は45Ωです。添付図下のようになり、電圧値で4.9875V、adc値では1020.4に相当します。表の2us後の部分で既に並列状態になっていると思います。(何故かその後、一段階下がってから安定します)※表中の時間はアバウトです。1,2割は異なっている可能性はあります。今回はワイパー位置が同じ部分(99→98)しかやりませんでしたから、もしかしたら違う位置だと動作時間(並列時間)が大きく変わるのかもしれません。データシートの時間100usや500usは、苦情が来ないように、だいぶ大きく見積もっている、という印象です。この程度の時間&変動なら、待ち時間無しにワイパーを動かしても良さそうです。※不揮発性メモリの方は試していません。CSはLOW(GND接続)固定です。疑似抵抗ー1手作りの件ですけど、参考サイトの構成が良いと思います。低on抵抗のフォトMOSリレーを使う、ってやつです。回路も知る必要があると思います。抵抗はX2で付けていって、ワイパー位置の上げ下げでは無く、「不必要な抵抗の短絡」といった感じにすれば、10個(組み)で1024段階になります。添付図で、負論理でGPIOに繋いでいますから、そのまま抵抗値として表現出来ます。抵抗は固定抵抗で賄えない部分は半固定抵抗を使うしかないと思います。参考サイトのTLP3100の方オン抵抗最大50mΩとが高性能ですけど、TLP241Aあたりでも全然問題無いと思います。(オン抵抗最大150mΩ)AQV251Gも良さそうだったのですけど、特に薦めるほどでも無かったみたい。https://www.aliexpress.com/item/32834495736.htmlhttps://www.aliexpress.com/item/33008121998.html※TLP3100はSMDタイプしか無いようです。あと、これらはターンオン時間が数msかかります。頻繁にオン/オフしないようにした方が良いです。プログラムでまったり動かすようにします。※オフなら電流が流れないので発熱しない。onでも低on抵抗なので発熱は少ない。切り替えのときは多くの発熱をするので、1msとかで更新すると、殆どの時間が「切り替え状態」になる可能性があります。疑似抵抗ー1猛牛ロックさん,こんばんは。細かい検証の資料ありがとうございます。ワイパーの移動で,切り替えが追いつかない時間があるというか,これ,もしかして,意図的なのかもですね。現在の接続を切断してから,隣の接続をする,というのではなくて,隣を接続してから,現在を切断,こんな手順なのでしょうか。プログラム組むときは,その辺も考慮しないと,思った結果にならないのでしょうが,私の場合,厳密な処理する訳ではないので,それほど気にならないと思います。それから,部材のご紹介もありがとうございます。値段が高いんですよね。それに,SMDだと,老眼の目には厳しいかななんてね。(笑)とりあえず動けばいいかな,なんて思ってるので,秋月のhttp://akizukidenshi.com/catalog/g/gI-08029/あたり使おうかなと思ってますが,お恥ずかしい話,ON抵抗について,高いのか低いのか判別がつかないでいます。疑似抵抗ー11カ所繋ぐだけの方式なら、特別良いものは要らないと思います。低抵抗部(特に抵抗0の位置)はそれなりの電流が流せるものが良いです。TLP291は最大絶対定格で50mAでした。それで充分かどうかは?です。最大絶対定格で20mAのAD5220で、最高速近くいったのなら大丈夫なのかもしれません。そこだけ並列にしちゃうのも、手かもしれませんね。フォトカプラ(出力部がフォトトランジスタ)だと、特性として、オン時に一定の電圧がエミッタ-コレクタ間に残ると思います。(0.2Vとか0.3Vとか。ダイオードに近い感じだと思います)で、例えば、10個使って、複数接続する方式だと電圧値として2.5V前後は落ちますから、用途的に合いません。最高速は出ないという結果になりますし、中間部の計算も出来ません。フォトMOSリレーなら、オン抵抗で表せるように、無視できるほどの低オン抵抗なら多接続(短絡方式)でも上手く行くと思います。フォトカプラが通常、数十〜数百mA出力に対して、フォトMOSリレーは数百mA〜数Aまで流せます。スイッチング時間は圧倒的にフォトカプラの方が早いです。単位がusとmsの違いがあります。私もフォトカプラ(PC817)なら沢山持っていますけど(ALIで100個で200円程度で売っています)数を並べるのも面倒です。74HC595も1個5円程度でありますから、作れないわけでは無いと思うのですけど、多くのピンに配線しなくてはならない、という部分で作るのが大変でしょうね。分解能を出すならフォトMOSリレーに分があると思います。16以下の分解能で良いなら、フォトカプラで、といった感じでしょうか。※分解能16でもhttp://akizukidenshi.com/catalog/g/gI-12192/あたりを4つ使って、4ピンで制御する方が楽です。MABOさんの場合は、抵抗値が高い可変抵抗ですし、それほど高機能(低オン抵抗)のフォトMOSリレーは必要ないと思います。疑似抵抗ー1猛牛ロックさん,こんばんは。アドバイスありがあとうございます。本日,部材を◯月に注文しました。送料ただいするべく,奮発してしまいました。これで,しばらくおとなしくするようです。エンコーダーは安いのにしようと思いましたが,チャタリング対策等,手間取りそうなので,マルツのこう光学式にする予定です。ネットでくぐったのですが,102タイプの抵抗アレイは,マルツとデジキーあたりしか取り扱いないんですよね。マルツはもうちょっと検討してから,注文します。それと,アナログスイッチなるICもあるのですね。あさっていて,目にとまりました。http://akizukidenshi.com/catalog/g/gI-05673/アナログでも,デジタルでも高速スイッチングが可能,とマニュアルには記載あります。状況にもよるのでしょうが,これが高いのか,低いのか,私にはちょっと判断できません。あさっていて,PIDの制御にも興味が向いてきました。プログラムもそれほど難しくないようなので,http://akiracing.com/2017/12/19/arduino_drone_pid/後日,挑戦してみようかなと思います。手始めに回転数取得のプログラムあれこれやってます。疑似抵抗ー1良いですねぇ、光学式。私はおもちゃエンコーダばっかりです。秋月で売ってるLED付きも使いました。アナログスイッチICは電気はあまり流せませんよ。20mA程度まで流せますけど、流せば出力電圧は変わります。この辺りは、マイコンの出力と同じです。オン抵抗50Ωは9V駆動時の標準値です。4.5V駆動だと、70Ω標準で、最大100Ωです。100Ωだとしたら20mA流せば100x0.02=2Vも電圧が下降します。電圧値が重要な場合は電流を流してはいけません。手始めに回転数取得のプログラムあれこれやってます。○○時○○分まであるので、ロータリーエンコーダといえども加速させないとなかなか目的値まで達しません。早く回した時は+8/クリック位?までさせると思うのですけど、いい塩梅を見つけるのが面白い所かもしれません。No.1747疑似可変抵抗maboさんおはようございます。デジタルポテンションに代えて、maboさんの疑似可変抵抗を制御するプログラムを始めようと思います。思いましたが、Trはシンク駆動ですよね駆動するもののがないから電流が流れない最上段のTr返事は急ぎません。追記ワイパと電源端子間の抵抗を計測する場合、TRを通じるようになるのでは。疑似可変抵抗TRさん,猛牛ロックさん,こんばんは。TRさん,ごめんなさい,回路のことよくわからないので,明確な答えは,?です。端がうまくいかない場合は,添付のようにしてもいいかな,と考えていました。すると,ワイパー最端に移動しても,抵抗残りますが。この方が最悪のこと考えてもいいような気もします。全部の抵抗やら,電流は,トランジスタを通したものになると思いますので,減衰はあると思います。それから,トランジスタの破損等考えると,フォトカプラーをはさんで,絶縁した方がいいかなと思いました。それから,プログラムですが,今までのもの改変すれば使えると思います。1023で平均取ったものを,8段階にする。up・downのサブ関数を変更する,等で可能だと思います。関数で,デコーダーに信号を送るようになると思いますが,レジスタ3個に送るので多少手間かかると思います。送る場合)RA0=5RA1=5>>1RA2=5>>2みたいに,シフトするか,マスクかけてそれぞれ送るようでしょうかね。7;RA0=1;//10進数7を送るRA1=1;RA2=1;それと,使えそうな抵抗アレイ見てみましたけど,マルツで102と表記のあるものでしょうかね。残念ながら,秋月には,使えそうなタイプは,ないようでした。疑似可変抵抗maboさん、おはようございます。自分も、投降した後に、フォトカプラを使った方法を思いつきました。ワイパーと電源側間の抵抗値のラインを電流が流れる形ですよね。いった、使い方は適当なんだろうかという疑問が残ります。先達者の実例があればいいのですが。当初のTrはいらないと思います。このままだと、ダーリントン接続の形です。右上に設けた抵抗は不要ですよ。簡単だったので、実験しました。想像していたとおりで、Tr内を通じた場合、抵抗値が大きく変わります。被計測抵抗値680Ωが写真の様に約0.9kになりました。片側0.2kΩ程度残ります。AD5220の電源の入れ方で,コントロールできなくなる場合があるようです。疑似可変抵抗TRさん,猛牛ロックさん,こんばんは。TRさん,いろいろありがとうございます。======>そういった、使い方は適当なんだろうかという疑問が残ります。私も,自分で考えておきながら,いつも,TRさんがお書きいただいたようなこと考えてしまいます。その点,いろんな意味で,理論的な背景のある諸兄がうらやましいです。======>当初のTrはいらないと思います。デコーダICのドライブ能力のデータシートみてないので,まあ,いれとけば,問題ないかな,位の気持ちでいれました。入れなくても,ドライブ能力はだいじょうでしょうね。目的が違うのですが,7セグのダイナミック表示では,トランジスタ入れてる回路もみかけますので,それも,頭にあったのかもですね。=====>右上に設けた抵抗は不要ですよ。これも深い意味はありません。当初,X9C等の取説見たとき,最端でも40Ω程度の抵抗がある,の表記で,1701のような構造かな,と,早とちりしました。万が一,使ってるカプラーやトランジスターが,ショートする方向で,パンクしたとき,多少の安全弁になるかな,位の意識で,いれましたので,大きな意味ないです。ソースか,なんてことも,考えていませんでした。片側0.2kΩ程度残ります。これ確かめたの,タクトスイッチを使った割り込みを使った自分のプログラムです。======>電源の入れ方で、問題があったようですが、問題解消のために>No1693のプログラムでは、どのようにしたのでしょうか?一般的な,PC等の電源の入れ方でしていました。ノイズが大きいと想定されるモーターは,一番最初にいれて,次のようにしてました。PICやはりこれだとだめでした。PCの電源の入れ方は,周辺機器の認識の問題もあるので,周辺機器からONするのが一般的だと思いますが,これがだめでした。PICの電源を後にすると,PIC起動時の影響か,AD5220がコントロールできなくなる,と前回に記述したところです。それで,逆にし,PICを先にONにしてみたのですが,D5220の電源を入れる時には,PIC側での,初期化が終わってしまうので,最初うまくいきませんでした。それで,PICのプログラムで,初期化の前にいろいろウエイトを入れてためしました。感じとして,初期化の開始は,ウエイトをれても,変化ないような感じでしたでした。そんなこんなで,いろいろやってみて,PICのポートの初期化の前に1回,AD5220の前に1回,それぞれ,ウエイトいれて,PICの起動後,約一秒以内にAD5220をONにした時がほぼ100%コントロールできた,という状態です。>この時の実験の際、PICのプログラムは、猛牛ロックさんのですか?>それとも、maboさんのNo1693ですか??>maboさんのと比べて、差があったのでしょうか??猛牛ロックさんのプログラムは,AD変換で,ワイパーで『動かしていますので,自分ので確認しただけですので,違いは,分かりません。====実際にAD5220等を使うには,PIC側の操作で,AD5220の電源ONの時間を遅らせる等のード的な処置も必要なのかなと思いました。残念ながら,いままで,いろんなHPを見てきましたが,周辺機器の起動をハードで遅らせてる,ものは,なかったように思います。手法的には,それほど手間かからないようなきがします。疑似可変抵抗maboさん、おはようございます。>いろいろやってみて,PICのポートの初期化の前に1回,AD5220の前に1回,それぞれ,ウエイトいれて,PICの起動後,約一秒以内にAD5220をONにした時がほぼ100%コントロールできた,という状態です。・maboさんのプログラムNo1693と上記説明を見比べて分かりました。自分も、参考にします。疑似可変抵抗に使ったフォトカプラーですが、実験結果により固定抵抗の代わりになるのは間違いないと思います。Trの内部抵抗と順電流の関係がどうかなといったところがあって、制御に使うのはコツがいるかもしれませんね。今まで、DC5V〜VR〜PIC(AD変換してX9c駆動プログラム)〜x9c〜LED(抵抗付加)でした。今回は、DC5V〜VR〜PIC(PWM240Hz発生)〜ローパス(ローカット200Hz)〜PIC(AD変換内蔵のX9c駆動プログラム)〜5220(単に、ワイパと下方のRl端子間の状況を見る)の方法もプラスして、としました。*AD変換内蔵の5220駆動プログラムは、猛牛ロックさんにmaboさんのをプラスします。PIC(PWM240Hz発生)の部分を追加したので、MACH(PWM基本周波数240Hz)に似せた状況にしました。まっ、適当かどうか不明ですが。実際、PIC(PWM240Hz発生)にLEDを付けると、光方に斑が出るのが分かりました。目視で確認できるのかとも驚きました!今回は、OSCCONの設定とかまじめに考えました。算出方法を乗せた写真ですが、あっていますか?見てやってください。疑似可変抵抗maboさんへ、5220が本日到着しました。午後から、粘っていましたが、まったく動作しません。プログラムは、No1671です。テスト用プログラムがないので、使いました。テスト方法は写真のつなぎ方です。今回は、壊れないように2kオームの抵抗です。疑似可変抵抗TRさん,猛牛ロックさん,こんばんは。TRさん,いろいろやられていますね。不明な点なのですが,TRさんが今日,やられたのは,SECさんの基盤と切り離して,MACHからのPWMの信号の代わりに,ボリュームで,電圧調整して,PICに入れての実験でしたか。それと,電圧計られたのは,入力に使ったボリュームでしょうか。それとも,X9Cで計られたのですか。