自己紹介:1964年生、O型、海老名市出身、目黒区在住、既婚、趣味 アニメ/回路設計/リフォーム、最終学歴 東京都立大学マンガ研究会、現職業 不動産賃貸/アルバイト、社歴 ソニーマグネスケール/日本HP/ソニー、2010年末失業、好きなアニメ 未来少年コナン/チェンソー/四月は君の嘘/WA2/冴えカノ、異常に器用、スポーツ/虫/キュウリが苦手、よろぴくね~ リンクはご自由にどうぞ.https://twitter.com/MuskeyNorm https://www.pixiv.net/users/83487768
早速ソースをダウンロードさせて頂きました。例の3chADCは1chは時々読むか、或いはDIPSWの半固定でも出来ます。このデータを元に演算を掛けて2ch分の電流ベクトルデータを作り、これでGPIOを制御します。この場合2chのアナログウオッチドッグがいるのですが、説明書を読んでいると1chしかできないような気がしました。また2ch分のADCを順繰りに回すには終わったことを検出してスタートするかタイマーでスタートするのでしょうか?STM8SのADC説明によるとクロックはハッキリ書かれていませんが、どっかでくろっくれーとのせいげんがあったようにおぼえてしまってさがしているところです。
見たのは次でした。CD00270741ES0110STM8S105xx device limitations.pdf10.3.11 10-bit ADC characteristicsSymbol Parameter Conditions Min Typ Max UnitfADC ADC clock frequency VDDA =4.5 to 5.5 V 1.0 6.0MHz
アナログウォッチドッグは1chしかできませんね.おっしゃるとおりです.ADCの周波数についてですが、指摘は正しいですね.わたしのサンプルプログラムがfADC=8MHzで動作させているのはスペックオーバーで本来ダメな使い方です.つまり、電源電圧5Vなら1~6MHzMAX、3.3Vなら1~4MHzMAXと制限されています.にもかかわらずサンプルプログラムでは8MHzで動作させています.指摘していただいてありがとうございました.
>1ch終わるごとに次の起動と同時に切り換えて、なんて使い方も有るのでしょうか?
レスが遅くなりました.原理的にはできます.けれど、切り替えている間に見逃す可能性もあるので、せっかくhardwareでウォッチする価値が薄れます.なので、割り込みでウォッチするならば起動直後にhardwareを設定して、その後はhardwareまかせで突っ走るのがウォッチドック機能を使うセオリーと思います.なので、ウォッチドッグ機能を使わずに、ソフトウエアでif()文で判断するのが多ch監視するには現実的なところだと思います.
こんにちは、>なので、ウォッチドッグ機能を使わずに今回は2chが常時監視ですのでその方式にしたいと思います。(A/Dを8ビットして使うのも有りでしょうか)このMPUは内部発振が20MHzで使えるのが魅力です。これらはモーターの駆動を目的としていますが、以前はシーケンサと言われるICがありましたが、もう廃版で無くなってしまいました。駆動用パワー素子を含んだICなら有るのですが最大3Aで実質2.5Aしか流せません。今回は4Aや5Aのモーターを回したいので、そのコントローラが必要になった訳です。3A用のICをモータに接続せず、ゲートドライバを駆動するのみにして別付けパワー素子でその駆動をすることもできますが、なんだか無駄なことをするように感じてMPUでシーケンサを作りたいと思っています。元の回路では内部にD/Aコン(8bit)を2個持ちコンパレータで判断するので、コンパレータ基準電圧をVRで可変すれば電流設定が変えられます。今回の考えでは内部に基準ベクトル表(60進と64進があり切り替えて使います )を持ち1chの基準値を測定取り込んで、実質ベクトル電流を計算しながら、あるいは先に計算して置いてEEPROMやRAM領域に置き換えて、測定A/Dと比較して出力コントロールをしようかと思っています。本当はベクトル情報をパルスで受けるのが1番重要で(数え間違えは許されない)その次ぎにモーター電流コントロールですが、電流を間違えると燃えてしまうのでどちらも重要です。(これらはどんなMPUを使っても同じです)ほかのモード設定などは、暇なときに出来るので重要ではありません。出来ますれば、C言語は苦手でアセンブラは頭がパンクするので、C言語を少しずつ、目的に添ってお教え下さい。>モータ制御回路におけるデッドタイムの意味に関しまして、コイル駆動のページをアップしました。den-nekonoko.blog.so-net.ne.jp/2012-01-08
>TIM1はロータリエンコーダを受信するにつきまして、割り込みなどを使えば、取りこぼしなどはないのでしょうか?小生の使用目的ではA,B総モードと方向パルスモードがあり、できればsw入力で切り替えたいのですが、方向パルスモードはパルスを検出した時の方向を見て加算か減算を決めます。1巡が60とすると0から59で1めぐり、0の時はゼロフラグが必要です。このようなこともできますでしょうか?
割り込みを使うと取りこぼしを防げるかというご質問ですが、残念ながら取りこぼしはありえます.mainルーチンが忙しくても取りこぼしはしませんけど、問題なのは、割り込みルーチン自身の処理量が多すぎて、割り込み処理が終わらないうちに次の割り込みよ事象が発生したときはとりこぼしになります.多重割り込みを許すとか、割り込みキューでお待ちいただくとかという回避方法もあるとは思いますが、そういうのはリアルタイムOSを搭載しないと実装できないと思います.
早坂さんへここで猫村と名乗っている者は"ノンノ"と呼ばれている電子工作者の間では有名な掲示板・ブログ荒らしなので絶対に相手をしてはいけませんhttp://unkar.org/r/denki/1315024355少しでも相手をしたら的が外れた意味不明な文章を一方的に書き殴り延々と絡んできたり、すぐ調べればわかるプログラミング言語の基本的なことをしつこく何度も聞いてきたりと非常に悪質な荒らしを何年もの間行い続けています
>残念ながら取りこぼしはありえます.・・割り込みが有ればさっさと処理をして、直ぐ抜けると言う風に工夫すればいいのですね。電流値監視制御というのは大手メーカーが専用ICを作っているのと、マイコンで実現した人は抱え込んで、販売されておられるようです。実現できるというのは判っても、実現はおぼつかないでいます。大手海外のメーカはフルブリッジのタイプは発表されていますが、プッシュプルタイプは、何だかハッキリ書いてありません。それと国内のモータはプッシュプルタイプが多く、海外はフルブリッジが多いのも、何とも致し方がないです。
早速ソースをダウンロードさせて頂きました。
返信削除例の3chADCは1chは時々読むか、或いはDIPSWの半固定でも出来ます。
このデータを元に演算を掛けて2ch分の電流ベクトルデータを作り、
これでGPIOを制御します。
この場合2chのアナログウオッチドッグがいるのですが、
説明書を読んでいると1chしかできないような気がしました。
また2ch分のADCを順繰りに回すには終わったことを検出してスタートするかタイマーでスタートするのでしょうか?
STM8SのADC説明によるとクロックはハッキリ書かれていませんが、どっかでくろっくれーとのせいげんがあったようにおぼえてしまってさがしているところです。
見たのは次でした。
返信削除CD00270741ES0110STM8S105xx device limitations.pdf
10.3.11 10-bit ADC characteristics
Symbol Parameter Conditions Min Typ Max Unit
fADC ADC clock frequency VDDA =4.5 to 5.5 V 1.0 6.0MHz
アナログウォッチドッグは1chしかできませんね.おっしゃるとおりです.
返信削除ADCの周波数についてですが、指摘は正しいですね.わたしのサンプルプログラムがfADC=8MHzで動作させているのはスペックオーバーで本来ダメな使い方です.つまり、電源電圧5Vなら1~6MHzMAX、3.3Vなら1~4MHzMAXと制限されています.にもかかわらずサンプルプログラムでは8MHzで動作させています.
指摘していただいてありがとうございました.
>1ch終わるごとに
返信削除次の起動と同時に切り換えて、なんて使い方も有るのでしょうか?
レスが遅くなりました.
返信削除原理的にはできます.
けれど、切り替えている間に見逃す可能性もあるので、せっかくhardwareでウォッチする価値が薄れます.なので、割り込みでウォッチするならば起動直後にhardwareを設定して、その後はhardwareまかせで突っ走るのがウォッチドック機能を使うセオリーと思います.
なので、ウォッチドッグ機能を使わずに、ソフトウエアでif()文で判断するのが多ch監視するには現実的なところだと思います.
こんにちは、
返信削除>なので、ウォッチドッグ機能を使わずに
今回は2chが常時監視ですのでその方式にしたいと思います。
(A/Dを8ビットして使うのも有りでしょうか)
このMPUは内部発振が20MHzで使えるのが魅力です。
これらはモーターの駆動を目的としていますが、
以前はシーケンサと言われるICがありましたが、
もう廃版で無くなってしまいました。
駆動用パワー素子を含んだICなら有るのですが最大3Aで実質2.5Aしか流せません。
今回は4Aや5Aのモーターを回したいので、そのコントローラが必要になった訳です。
3A用のICをモータに接続せず、ゲートドライバを駆動するのみにして別付けパワー素子でその駆動をすることもできますが、
なんだか無駄なことをするように感じてMPUでシーケンサを作りたいと思っています。
元の回路では内部にD/Aコン(8bit)を2個持ちコンパレータで判断するので、コンパレータ基準電圧をVRで可変すれば電流設定が変えられます。
今回の考えでは内部に基準ベクトル表(60進と64進があり切り替えて使います )を持ち
1chの基準値を測定取り込んで、実質ベクトル電流を計算しながら、あるいは先に計算して置いてEEPROMやRAM領域に置き換えて、測定A/Dと比較して出力コントロールをしようかと思っています。
本当はベクトル情報をパルスで受けるのが1番重要で(数え間違えは許されない)その次ぎにモーター電流コントロールですが、電流を間違えると燃えてしまうのでどちらも重要です。
(これらはどんなMPUを使っても同じです)
ほかのモード設定などは、暇なときに出来るので重要ではありません。
出来ますれば、
C言語は苦手でアセンブラは頭がパンクするので、C言語を少しずつ、目的に添ってお教え下さい。
>モータ制御回路におけるデッドタイムの意味
に関しまして、コイル駆動のページをアップしました。
den-nekonoko.blog.so-net.ne.jp/2012-01-08
>TIM1はロータリエンコーダを受信する
返信削除につきまして、
割り込みなどを使えば、取りこぼしなどはないのでしょうか?
小生の使用目的ではA,B総モードと方向パルスモードがあり、
できればsw入力で切り替えたいのですが、
方向パルスモードはパルスを検出した時の方向を見て加算か減算を決めます。
1巡が60とすると0から59で1めぐり、0の時はゼロフラグが必要です。
このようなこともできますでしょうか?
割り込みを使うと取りこぼしを防げるかというご質問ですが、残念ながら取りこぼしはありえます.mainルーチンが忙しくても取りこぼしはしませんけど、問題なのは、割り込みルーチン自身の処理量が多すぎて、割り込み処理が終わらないうちに次の割り込みよ事象が発生したときはとりこぼしになります.多重割り込みを許すとか、割り込みキューでお待ちいただくとかという回避方法もあるとは思いますが、そういうのはリアルタイムOSを搭載しないと実装できないと思います.
返信削除早坂さんへ
返信削除ここで猫村と名乗っている者は"ノンノ"と呼ばれている電子工作者の
間では有名な掲示板・ブログ荒らしなので絶対に相手をしてはいけません
http://unkar.org/r/denki/1315024355
少しでも相手をしたら的が外れた意味不明な文章を一方的に書き殴り
延々と絡んできたり、すぐ調べればわかるプログラミング言語の基本的なことを
しつこく何度も聞いてきたりと非常に悪質な荒らしを何年もの間行い
続けています
>残念ながら取りこぼしはありえます.・・
返信削除割り込みが有ればさっさと処理をして、直ぐ抜けると言う風に工夫すればいいのですね。
電流値監視制御というのは大手メーカーが専用ICを作っているのと、マイコンで実現した人は抱え込んで、販売されておられるようです。
実現できるというのは判っても、実現はおぼつかないでいます。
大手海外のメーカはフルブリッジのタイプは発表されていますが、プッシュプルタイプは、
何だかハッキリ書いてありません。
それと国内のモータはプッシュプルタイプが多く、海外はフルブリッジが多いのも、何とも致し方がないです。