2012年1月6日金曜日

STM8Sの多チャンネル温度ロガーの製作記事をupしました

STM8Sのページに、多チャンネル温度ロガーの製作記事upしました.

金魚の水槽の温度をモニタするために使ってたのをRaisonance Cコンパイラ用に変更したものです.

夏になると水温が37度にもなり、お風呂の温度みたくなっていることがわかりました.

あんなお湯でよく生きていられるもんです.
PCのファンで水面を空冷すると35度ぐらいになりました.

熱帯魚であるグッピーは水温が12度を下回ると全滅することもわかりました.


10 件のコメント:

  1. 早速ソースをダウンロードさせて頂きました。
    例の3chADCは1chは時々読むか、或いはDIPSWの半固定でも出来ます。
    このデータを元に演算を掛けて2ch分の電流ベクトルデータを作り、
    これでGPIOを制御します。
    この場合2chのアナログウオッチドッグがいるのですが、
    説明書を読んでいると1chしかできないような気がしました。
    また2ch分のADCを順繰りに回すには終わったことを検出してスタートするかタイマーでスタートするのでしょうか?

    STM8SのADC説明によるとクロックはハッキリ書かれていませんが、どっかでくろっくれーとのせいげんがあったようにおぼえてしまってさがしているところです。

    返信削除
  2. 見たのは次でした。
    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

    返信削除
  3. アナログウォッチドッグは1chしかできませんね.おっしゃるとおりです.

    ADCの周波数についてですが、指摘は正しいですね.わたしのサンプルプログラムがfADC=8MHzで動作させているのはスペックオーバーで本来ダメな使い方です.つまり、電源電圧5Vなら1~6MHzMAX、3.3Vなら1~4MHzMAXと制限されています.にもかかわらずサンプルプログラムでは8MHzで動作させています.

    指摘していただいてありがとうございました.

    返信削除
  4. >1ch終わるごとに
    次の起動と同時に切り換えて、なんて使い方も有るのでしょうか?

    返信削除
  5. レスが遅くなりました.
    原理的にはできます.
    けれど、切り替えている間に見逃す可能性もあるので、せっかくhardwareでウォッチする価値が薄れます.なので、割り込みでウォッチするならば起動直後にhardwareを設定して、その後はhardwareまかせで突っ走るのがウォッチドック機能を使うセオリーと思います.
    なので、ウォッチドッグ機能を使わずに、ソフトウエアでif()文で判断するのが多ch監視するには現実的なところだと思います.

    返信削除
  6. こんにちは、
    >なので、ウォッチドッグ機能を使わずに
    今回は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

    返信削除
  7. >TIM1はロータリエンコーダを受信する
    につきまして、
    割り込みなどを使えば、取りこぼしなどはないのでしょうか?
    小生の使用目的ではA,B総モードと方向パルスモードがあり、
    できればsw入力で切り替えたいのですが、
    方向パルスモードはパルスを検出した時の方向を見て加算か減算を決めます。
    1巡が60とすると0から59で1めぐり、0の時はゼロフラグが必要です。
    このようなこともできますでしょうか?

    返信削除
  8. 割り込みを使うと取りこぼしを防げるかというご質問ですが、残念ながら取りこぼしはありえます.mainルーチンが忙しくても取りこぼしはしませんけど、問題なのは、割り込みルーチン自身の処理量が多すぎて、割り込み処理が終わらないうちに次の割り込みよ事象が発生したときはとりこぼしになります.多重割り込みを許すとか、割り込みキューでお待ちいただくとかという回避方法もあるとは思いますが、そういうのはリアルタイムOSを搭載しないと実装できないと思います.

    返信削除
  9. 早坂さんへ
    ここで猫村と名乗っている者は"ノンノ"と呼ばれている電子工作者の
    間では有名な掲示板・ブログ荒らしなので絶対に相手をしてはいけません
    http://unkar.org/r/denki/1315024355

    少しでも相手をしたら的が外れた意味不明な文章を一方的に書き殴り
    延々と絡んできたり、すぐ調べればわかるプログラミング言語の基本的なことを
    しつこく何度も聞いてきたりと非常に悪質な荒らしを何年もの間行い
    続けています

    返信削除
  10. >残念ながら取りこぼしはありえます.・・
    割り込みが有ればさっさと処理をして、直ぐ抜けると言う風に工夫すればいいのですね。
    電流値監視制御というのは大手メーカーが専用ICを作っているのと、マイコンで実現した人は抱え込んで、販売されておられるようです。
    実現できるというのは判っても、実現はおぼつかないでいます。

    大手海外のメーカはフルブリッジのタイプは発表されていますが、プッシュプルタイプは、
    何だかハッキリ書いてありません。
    それと国内のモータはプッシュプルタイプが多く、海外はフルブリッジが多いのも、何とも致し方がないです。

    返信削除