電子工作etc


PIC

【PIC12F683】
温度データロガー
アナログデータロガー
簡易周波数カウンタ
タッチセンサーユニット
簡易信号発生ユニット(PWM)
電子ボリューム
人体(焦電型赤外線)検出ユニット
簡易信号発生ユニット(PWM)U
信号発生ユニット(PLL)
DC→DCコンバータ(最適周波数自動設定)
心拍検知ユニット
常夜灯(フルカラーLED)
受光&発光(1個のLED)
簡易周波数カウンタV2(校正機能搭載)
常夜灯V2(太陽電池+ニッカド電池)
電子サイコロ
温度データロガーV2
温度データロガーV3
ミニ湿度スイッチ
ミニ電圧低下検出ユニット
RS232Cテストデータ送信ユニット
簡易砂時計
赤外線リモコンリピータ
防犯アラーム(振動検知)
簡易静電容量スイッチ
音声スイッチ(BOX)
簡易モールス練習機
モーター速度(回転数)制御V2
DC→DCコンバータ(最適周波数自動設定)V2
温度データロガーV4
LED点灯(電池1本)
簡易メロディボックス(明るさ検知)
拡張ポート制御ライブラリ(8ビット出力)
3線式LCD制御ライブラリ
簡易レベルメータ(LED×12個)
簡易AC電力制御(波数調整)
簡易周波数感応スイッチ
簡易近接スイッチ(赤外線方式)
FPGAモドキ(PIC+C言語)
簡易小型電圧計(7セグLCD)
簡易ストロボフラッシャー(キセノン管)
簡易ストロボフラッシャーV2(キセノン管)
タッチ式電鍵

【PIC16F88】
LCDモニター
AC電力制御
周波数ロックユニット
周波数表示ユニット(真空管ラジオ用)
周波数表示ユニットU(真空管ラジオ用)
10キー変換ユニット
スッテッピングモーター制御
簡易レベルメーター
時計ユニット(RTC)
デジタル電圧計(真空管B電圧用)
VUメータ(デジタル処理+アナログ表示)
パルス周期測定ユニット
簡易信号発生ユニット(ALC装備)
温度計(温度制御機能付き)
周波数表示ユニットU(プログラム全面見直し)
周波数ロックユニットV3
ステレオレベルメータ(LCD)
超音波人体検出ユニットV1
ダイオード静特性測定ユニット
簡易歪率計アダプタ
周期&周波数測定ユニットV2(1Hz〜100Hz)
周波数カウンタV5(集大成版)
多機能交流電圧計
正弦波発振器(クロック可変方式)
簡易オシロV2(LCD:128×64)
動的半田ごてセラミックヒータ抵抗測定ユニット
ダイオード温度計
D/A変換(AD557)
ワットメータ(WattMeater)
AC電力制御V2
オシロ文字
電圧計&電流計アダプタ
人体(焦電型赤外線)検出ユニットV2
電池内部抵抗測定ユニット
簡易電卓(PS/2テンキー)
スピーカのインピーダンス測定アダプタ
hFEテスターV2
ストップウオッチ(8ビット版)
タコメーター(tachometer)
拍手スイッチ(パターン信号検知)
マップメータ(電子物差し)
周波数カウンタV7
簡易照度計(自動レンジ切り替え)
簡易紫外線計
簡易湿度計
簡易雷距離計
簡易緯度/経度表示ユニット(GPS-52D)
アナログデータロガーV2(携帯型)
温度計V2(温度制御機能付き)
簡易照度計V2(S9705)
LCDモニター(I2C対応)
拡張ポート(I2C対応:I/O EXPANDER)
7セグLED(3桁)表示ユニット(I2C対応)
KeyPad(4×4)
NightRiderV1(残像方式)
輝度可変型LED(10灯)ユニット(I2C対応)
KeyPad(4×4)ユニット(I2C対応)
ステッピングモータ制御ユニット(I2C対応)
GPS時計(調整不要)
CGRAM活用(キャラクタ表示LCD)
ステレオレベルメータV3(片チャンネル80ドット)
タコメーターV2(tachometer)
モーター回転数測定(周期測定の応用)
モーター速度(回転数)制御
簡易時計(PIC単体)
簡易RTC(Real Time Clock)(I2C対応)
ミニ周波数カウンタ(kHz表示)
ミニ電圧&電流計(7セグ表示)
ミニ温度計(7セグ表示)
超音波距離計V2
CWメモリキーヤ(memory-keyer)
CWメモリキーヤ(memory-keyer)V2
昇圧型DC/DCコンバータ(PWM方式)V3
カラーコード値表示ユニット
ビットスコープ(簡易デジアナ)
電子サイコロV2(GLCD版)
定電流ユニット(吸込型)
赤外線データ通信(USART)
XYZ加速度(ガル)表示ユニット
PWM発振ユニットV2
フルカラーLED(色設定ユニット)
カラー受光&カラー発光
簡易汎用タイマー
簡易低抵抗測定器
簡易高抵抗測定器
LCDモニター(3.3V駆動)
簡易静電気メーター
アナログデータロガー(複数PIC使用)
簡易パルス幅測定器
簡易GPS時計V3(自動時刻同期+低消費電力)
簡易気圧&温度計(SCP1000)
簡易電子メトロノーム
簡易時計(7セグ4桁)
簡易ストップウォッチ(7セグ4桁)
簡易電子ロック
LCD制御ライブラリ(mikroCコンパチブル)
ADCモジュール(SPI&PIC)
簡易ラジオ受信周波数表示ユニット(7セグ4桁)
簡易遠隔操作ユニット(携帯電話版)
簡易電源タイマー(切り忘れ防止)
ワイヤレスLCD(赤外線データ通信)
送受リモコンモジュール(赤外線データ通信)
ミニ温度計(7セグ表示)V2
簡易電圧計(高分解能22ビット)
バッテリー充電ユニット(簡易多段定電流充電方式)
電圧計&電流計アダプタV2(バー表示)
簡易電子ボリューム(LM1972)
簡易湿度計V3(オートレンジ)
簡易多チャネルロガー(複数PIC/35チャネル)
簡易温度計(LM74)
簡易可変型安定化電源
簡易パルスカウンタ
簡易シリアルバッファ
電圧&電流計アダプタV4(汎用型)

【PIC16F819】
昇圧型B電源ユニット

【PIC18F2320】
10チャンネルデータロガー

【PIC16F628】
CWキーヤー
簡易信号発生ユニット
UpDownカウンタ

【PIC16F876】
IFT測定ユニット
高速AD変換ユニット(AD7820)
簡易オシロ(グラフィック液晶表示)
温度計(LM35DZ直結)

【PIC18F1320】
8チャンネルデータロガー(MCP3208)
ガス検知器(TGS2450)
周波数カウンタV9(PIC18シリーズ最小)

【PIC16F874】
メモリユニット(PIC外付け128kbyte)

【PIC16F84】
マイクセレクター

【PIC16F877】
アナログデータ記録再生ユニット

【PIC24FJ64GA002】
周波数カウンタV6(16ビットPIC採用)
ストップウォッチ(16ビット版)

【PIC18F452】
アナログデータロガーV3(SDカード対応)

【PIC18F2550】
アナログデータロガーV4(SDカード対応)
周波数カウンタV8(ロガー機能搭載)
EEPROM/Reader&Writer(SDカード)
ミニ・シーケンサ(SDカード対応)
ミニ・オルガン(SDカード対応)
RS232Cテストデータ送信ユニットV2(SDカード対応)
RGBロガー
簡易トランジスタ判定ユニット
GPSロガー機能強化(エレキジャックNo.13)

【PIC18F4520】
SDカードReader&Writer(RS232C)

【PIC16F785】
電圧&電流計V3(7セグ表示)

【PIC18F2620】
簡易ワンショット・ロガー
簡易ワンショット・ロガーV2
簡易ターミナル(LCD&Keypad)
簡易レベルメータ(8チャネル×8ドット)
簡易WavePlayer
簡易スクロール・クロック
簡易可変型安定化電源(キーパッド入力)

【PIC18F14K50】
簡易温度&照度ミニロガー(SDC)

【PIC12F1822】
簡易ADロガー(高速シリアル出力)

【PIC18F2523】
簡易ADロガー(FAT32対応)

【PIC18F4585】
ADロガー(FAT32対応)



【PIC12F683】

 ■温度データロガー
  ★概要
    温度センサーからのデータを一定周期で読み取り、RS232C(TTLレベル)として出力
    します。周期は、1秒間隔、1分間隔、5分間隔、10分間隔の4モードから選ぶ事が出来
    ます。
    また、PIC12F683内部に温度データを蓄積(EEPROMに記録)する機能も備えています。
    その記憶容量は、128データ(1データは10ビットなので2バイトを使用)となります。

  ★温度センサーについて
    温度センサーには、高精度温度センサーS8100B (SEIKO)を使用しました。
    このセンサーの主な特長は、
     :センサ・定電流回路・オペアンプを内蔵
     :電源:5V10μAtype(低消費)
     :測定温度範囲:-40〜+100℃
     :リニア出力電圧:-8.1mV/K(-8.1mV/℃) →今回は8mVで計算しています。
       Ta=-20℃:1.900V
       Ta=+30℃:1.497V
       Ta=+80℃:1.085V
     :リニアリティ(直接性):1.0(-20℃〜+80℃)
     :再現性:±0.3%
     :Vssを寒準とした温度電圧出力
     :低消費電流:10μA(25℃)typ
    となっています。

  ★ハードウエア構成
    @S8100Bによって温度を電圧に変換します。
    Aこの出力電圧をオペアンプ(LMC662CN)を利用して2倍に増幅します。
    BPICでは、A/D変換機能を使ってデータを取り込みます。
      PICのA/D変換(10ビット=1024)で使用する、基準電圧(TL431)を、
        1024×4=4096 → 4.096V
      にして、1ビットあたりの精度を、4mVとします。
    CPICで補正されたデータをRS232C(TTLレベル)として出力します。
    D記録SW(REC)と読出SW(READ)を設けています。
     

  ★回路図
     

  ★処理説明
    @周期的に、A/D変換して温度データを得ます。
      ・周期設定 (立ち上げ時...GPIO.F4、GPIO.F3)
        :4通りの設定ができる。
        :1秒間隔【GPIO.F4="1"、GPIO.F3="1"】  128秒(約2分)
        :1分間隔【GPIO.F4="0"、GPIO.F3="1"】  128分(約2時間)
        :5分間隔【GPIO.F4="1"、GPIO.F3="0"】  640分(約10時間)
        :10分間隔【GPIO.F4="0"、GPIO.F3="0"】  1280分(約20時間)
    A得られたデータに4mVを掛けます。
    B最も電圧が高くなる、-40℃では、4.120mVとなります。
       (1.900mV×2倍)+(8mV×2倍×(40℃−20℃)) → 4.120mV
    C補正します。(小数点第1の位まで求めます)
       (((4120 - temp) * 10) / 16) - 400
    D結果をRS232C出力します。
    E記録と読出
      ・記録モード(GPIO.F4)
        :データをEEPROMに記録します。
        :記憶容量は128データ(1データは2バイト)
      ・読生モード (GPIO.F3)
        : EEPROMより読出してUSARTに出力します。

  ★ソースリスト
    mikroCで作成しました。ソースリストはここです。

  ★動作確認
    PCのハイパータミナルを使って動作確認をしました。
      ※PCとの接続は、レベル変換が必要となります。
        別途作成しましたRS232Cレベル変換ユニットを利用してPCと接続します。
     



【PIC12F683】

 ■アナログデータロガー
  ★概要
    とても簡易(ハードウエアもソフトウエアも共に)なデータロガーです。
    アナログデータ(2チャンネル)を約1秒周期で収集しRS232C経由ででPCに送るものです。
    アナログデータは、10ビット(1024)の精度でA/D変換されます。
    尚、1ビットあたりは約5mVの精度となります。(5V÷1024)
    PCに送る際には、バー表示で送るモードと数値表示で送るモードの選択がSWで出来ます。
    バー表示はちょっとしたレベルメータ代わりに使えるのではと考えました。
     

  ★回路図
     

  ★ソースリスト
    ソースリストはここです。

  ★動作確認
    PCのハイパータミナルを使って動作確認をしました。
    <数値表示>
     
    <バー表示>
     


【PIC16F88】

 ■LCDモニター
  ★概要
    RS232C(±12V)経由でデータを受信しLCDに表示します。
    TTLレベルでも可能ですので、PICと直接接続することが出来ます。
    以下の制御コードを受け付けます。
      % : ブザーを100msec間だけ鳴らせる。
      & : 画面をオールクリアする。
      < : 1行目にカーソルを移動させる。
      > : 2行目にカーソルを移動させる。
     
     
     

  ★回路図
     

  ★ソースリスト
    ソースリストはここです。

  ★動作確認
    PCのハイパータミナルよりデータを入力し動作確認をしました。
     



【PIC16F88】

 ■AC電力制御
  ★概要
    単純なAC電力の制御は、トライアックを使って簡単に実現できます。
    今回は、PIC16F88を使用して、制御を行います。そして電力量をバーグラフおよび%表示でLCDに表示させる
    ようにしました。
    こうすることにより、今まではボリュームの回転角度または感のみで制御していたものがデジタル的に制御でき
    るようになりました。

  ★制御方法
    トライアックはゲートを、ONにすると後はゲートをOFFにしても電流が流れ続けます。
    そして交流のサイクルで0Vになったところで電流がOFFになります。

    非ゼロクロス型では、電源の位相にあわせて短いパルスでONにします。
    すると次にくる0Vの時間まで電流が流れます。
    この短いパルス(トリガ)を半サイクルの立ち上がり直後にすると100%近い時間電流が流れます。
    逆に半サイクルの終わり近くでトリガすると0%に近い時間だけ電流が流れます。
    つまり半サイクルごとに通電時間を決めることにより電力を制御できることになります。

     
      30°分カット
      90°分カット
      150°分カット

  ★ハードウエア構成
    主要な機能は
      ▽正弦波の正(+)の開始および負(−)の開始を検出するために全波整流した直後に電圧でフォトカプラ
        を駆動する部分。これにより60Hzの2倍での120のパルスを得ることが出来る。
      ▽東芝のTLP560Gというフォトトライアック(非ゼロクロス)とトライアックにより電力を最終的に制御する。
        フォトトライアックへのトリガ信号は、PICよる出力される。
      ▽設定する制御値は、VRおよび二つのプッシュSWによりUP/DOWNされる。
      ▽VR設定するか、SWで設定するかの切り替えはトグルSWにより行う。
      ▽PIC16F88では、全体制御(フォトトライアックの制御やLCDへの表示等)を行う。

       

  ★回路図
     

  ★処理説明
    処理は以下のブロックより構成されます。
      ▽ポート、クロック、タイマー、PWM、LCD等を初期化する。
      ▽LCDへタイトルを表示する。
      ▽制御をVRで設定するかSWで設定するかをチェックする。
      ▽VRであれば、AD変換した値を制御値(sleepTime)とする。
      ▽SWであれば、更にUP/DOWNをチェックし、制御値をUP/DWONする。
      ▽電力をバー(12個)で表示する。
      ▽電力を%で表示する。
      ▽割り込み処理では、以下の3つの処理をする。
        ・TIMER1割り込み(約200msec周期)では、LEDをON/OFFさせる。(パイロットランプ)
        ・60Hzのトリガ信号割り込み(全波整流なので秒あたり120回)では、制御値を一時変数にセットする。
        ・TIMER0割り込み(約60usec周期 )では、制御値経過後にトライアックをONする。

  ★ソースリスト
    ソースリストはここです。

  ★ケース加工
    ドリル、リーマ、ニブリングツール等を利用してケース加工をしました。一番苦手な作業です。
       

  ★動作確認
    本装置を使用して、豆電灯を制御してみました。
    バーグラフと%表示が出来るので直感的でとてもわかりやすいです。
    LEDの穴は、後で気がついてハンドドリルで急遽穴あけしました。
     上面 背面

     10%点灯 30%点灯



【PIC12F683】

 ■簡易周波数カウンタ
  ★概要
    とても簡易(ハードウエアもソフトウエアも共に)な周波数カウンタを作成しました。
    最高2.5Mhzまで1Hz単位で、または最高20Mhzまで8Hz単位で計測できる周波数カウンタです。
    ゲートタイムは、1秒と0.1秒の切り替えが出来るようにしました。
    基準となるクロックは、手持ちの16.0000Mhz(京セラ製)を使用しました。
    これは以前にジャンク袋で大量に購入したものです。
    先ずは、ブレッドボードで実験(HWもSWも)してから蛇の目基板に実装しました。
      
      

  ★処理説明
    先ず、入力信号は、トランジスタ(2SC1815)で構成されたアンプで増幅されます。
    増幅された信号は、GP2(T0CKI)端子に接続されTIMER0でカウントされます。
    TIMER1とCCP1を使って正確な0.1秒または1秒を得ます。
      ・TIMER1を内部クロックで1/8プリスケーラで動作させます。
      ・するとTIMER1のクロックは、16MHz÷4÷8=500kHzとなります。
      ・CCP1をTIMER1とのコンペアモードで使い、一致する値を50000とします。
      ・すると10Hz周期で一致割り込みが発生し、正確な0.1秒を得ることが出来ます。
      ・更にこれを10回カウントすると、正確な1秒を得ることが出来ます。
    プリスケール値は1/1、1/8を選択できるようにしました。
    最終的にカウントした値を文字列に変換して、RS232Cで送信します。

  ★回路図
     

  ★ソースリスト
    ソースリストはここです。

  ★動作確認
    PCのハイパータミナルを使って動作確認をしました。
     



【PIC16F88】

 ■周波数ロックユニット(じっとしてなさい君V2)
  ★概要
    ラジオの周波数(局部発振周波数)をロック(固定)するためのものです。
    真空管ラジオなどの時間の経過と共に周波数が変動するような場合に便利です。

  ★周波数ロックユニットの構造原理
     
    ・CCPモジュールを2個使用するためPICを2個使用しました。
    ・PIC12F683では、正確なクロック(0.1秒)を出力します。
    ・PIC16F88では、周波数をカウントし、その値によって出力電圧を制御します。
    ・出力電圧は、可変容量ダイオード(バリキャップ (variable capacitance diode)、バラクタ (varactor diode))
     1S2683によって、コンデンサ(容量)へと変換されます。
    ・カウントした周波数は、USART(RS232C)経由で送信可能です。(9600,8,N)
      ※SW1とSW2を同時に押しながら起動すると送信モードになります。
    ・周波数の精度は、最大2.5Mhz(1Hz単位)、最大20Mhz(8Hz単位)が可能です。
    ・ゲートタイムは、1秒、0.1秒が可能です。
    ・ロック精度は、±100Hzとします。(プログラム上で変更可能です)
    ・出力電圧は、0V〜5Vで精度は約5mV(5÷1024)になります。
    ・この電圧をバリキャップに加えます。
    ・使用するバリキャップによって可変可能な容量(キャパシタンス)は異なってきます。(要注意)

  ★実験
    PIC12F683とPIC16F88を使用した、基本的な周波数カウンタとしての機能は確認できました。
    これに後は、ロック機能を付加するだけです。
     
     

  ★回路図
     

     
      ・LOCK_LED(緑色)
      ・UPPER_LED(橙色)
      ・LOWER_LED(赤色)

  ★処理説明
    <PIC12F683の処理>
     0.1sec(10Hz)の正確なクロックを出力するだけの単純な機能です。
     CCPをコンペアモードで使用して、0.1秒周期で割り込みを発生させ、短いパルスを出力します。
      :クッロクを16Mhzとする。プリスケーラを8とする。CCPの設定値を50000とする。
      :0.1 = (1÷16000000)*4*8*50000

    <PIC16F88の処理>
     @内臓モジュールやポート等の初期化をします。
     APWMのdutyを50%(1024/2)にします。
     BLOCK_SWとUNLOCK_SWが共に押されていたらRS232C送信モードとします。
     CLEDを点滅させます。(特に意味のある処理ではありません)
     DRS232C送信モードであれば、タイトルを送信します。
     E割り込みを許可します。
     Fプリスケーラの設定を行います。
     GGate Timeの設定を行います。
     Hタイマ値や周波数値をクリアします。
     I設定されたGate Timeの間だけ計測を行います。
     J計測された周波数を補正します。
     KRS232C送信モードであれば、周波数を文字列に変換して送信します。
     LLOCKするかUNLOCKするかをチェックします。
     Mもしもロックモードなら、
      :現在の周波数の値を基準値(f1)として保存します。
      :計測した周波数(f2)と基準値(f1)を比較し許容範囲ならロックと判断します。
      :(f2)<(f1)であれば、PWMのdutyをプラスして電圧を上げます。
      :(f2)>(f1)であれば、PWMのdutyをマイナスして電圧を下げます。
     Nもしもアンロックモードなら、
      :PWMのdutyをデフォルト値(50%(1024/2))に設定します。
     O少しディレイ(10msec)してからFへ戻ります。

  ★ソースリスト
    PIC12F683のソースリストはここです。
    PIC16F88のソースリストはここです。

  ★動作確認
     確認用に急遽作成したFETを使用した簡易発信器です。
     
     
     全体の接続の様子です。
     
     ロックした状態です。右上の黄色い小さなLEDはクロックのモニター用です。
     
     周波数が高くなった状態です。
     
     周波数が低くなった状態です。
       

  ★取り扱い説明
     
     <接続>
       茶色:全てGNDです。
       黄色:周波数を入力します。
       白色:周波数を制御します。
       橙色:+5V(安定化電圧)を入力します。
     <スイッチ>
       左のスライドSW:GateTime切り替え:上側[0.1SEC]、下側[1SEC]
       右のスライドSW:Prescale切り替え:上側[1/1]、下側[1/8]
       赤色プッシュSW:ロック
       黄色プッシュSW:アンロック
     <LED>
       黄色(小)LED:クロックのモニター用(0.1SEC点灯、0.1SEC消灯を繰り返す)
       赤色LED:周波数が低い
       橙色LED:周波数が高い
       緑色LED:ロック状態
     <その他>
       電源を投入すると、緑色LED→橙色LED→赤色LEDの順に点灯します。
       赤色プッシュSWと黄色プッシュSWを同時に押しながら電源を投入すると、
       以降の処理で計測した周波数をUSARTへ出力します。



【PIC16F819】

 ■昇圧型B電源ユニット
  ★概要
    私はよく、PICやオペアンプやトランジスタや真空管等をハイブリッド 【hybrid】 的に使うことが多いです。
    そんな時に、真空管を使って何かを作ると、どうしても高価で重たい電源トランスが必要となるのですが、
    そこで、これが何とかならないものかといろいろと思案していました。

    理想的には、ヒーター電源(普通は6.3V)くらいの電圧のみでラジオが動作してくれれば良いのになあ...
    そこで今回は、DC6.3V(1A以内)のみを供給して、真空管のラジオを動作可能な電源に挑戦してみました。
    5球スーパーはちょっと無理ですが、再生式の1球ラジオくらいなら何とか出来そうです。
     

  ★動作原理
    基本的な回路で説明します。
     
    ・最初にスイッチ(SW)がON状態になるとコイル(L)にエネルギーが蓄えられます。
    ・このとき、コイル(L)の入力側はプラス、出力側はマイナスの電位になります。
    ・次にスイッチ(SW)がOFF状態になるとコイル(L)は電流を流し続けようとして
     (レンツの法則)、蓄えたエネルギーを放出します。
    ・この時コイル(L)の出力側がプラス、入力側がマイナスになります。
    ・スイッチ(SW)はOFFなので電流はダイオード(D)を通してコンデンサ(C)および負荷(R)に流れます。
    ※レンツの法則
      電磁誘導の起電力の向きに関する法則です。
        「誘導起電力はそれを生ずる原因をさまたげる向きに生じるという法則」
      1834年にドイツのレンツが発見しました。

  ★回路図
     
    コイル(L)には、TOKINのSN8D-500を使用しました。
    FETには、FAIRCHILDセミコンダクタのIRFW540A(秋月電子で4個200円でした)を2個並列にして使用しました。

  ★処理説明
    PWM方式によって、FETをON/OFFさせます。
    PWMの周波数は約10Khzとし、デューテイは1024ステップで設定します。
    制御には、次の2つのモードを持たせました。
     【固定モード】
       :コイルに流れる電流値を400mA固定にする。
       :抵抗が0.3Ω、ADコンバータの精度が約5mVなので、0.3×400mA=120mV
       :120mV÷5mV=24
       :つまり、AD変換した値が24になるように制御します。
     【可変モード】
       :UP/DOWNのスイッチによってデューテイの幅を増減させる。
    尚、モードの切り替えは回路図のSW1によって行います。

  ★ソースリスト
    ソースリストはここです。

  ★動作確認
    以下の画像は、本ユニットを利用して、6.3Vの電圧を昇圧し、負荷をかけている所です。
    出力電圧は、約100Vで18kΩの負荷(5.5mA)をかけています。
       
     制御部です。0.3Ωは電流検出用です。
       
     昇圧部です。FETは2個並列にして使いました。
       
     負荷をかけます。
       
     出力電圧は約100Vです。
       
     FETの制御信号です。デューティ(duty)比によって出力される電圧を制御できます。
       



【PIC12F683】

 ■タッチセンサーユニット
  ★概要
    私の場合には、このユニットをどんな用途に使っているかと言いますと...
    朝が早いので、その時に暗い玄関で靴を履くときに使います。
    先ず、センサーにタッチするとLEDが点灯します。
    その間に玄関の蛍光灯を消灯して靴を素早く履いて鍵をかけます。
    暫くすると自動的にLEDが消灯します。
    如何ですか? 省エネ用に...
    応用としては、無線機のPTT(送信)スイッチの代わりにも使えると思いますよ。
    用途はいろいろ考えられると思います。{^_^}!
     

  ★動作原理
    我々の周りにはノイズ(主には商用電源のノイズ)が一杯です。
    人体もこのノイズを通す媒体となりますので、これを検出してLEDをコントロールしようというものです。
    指でセンサー(1cm角の銅板)に触った時のノイズをアンプで増幅します。
    そしてタッチ前のノイズ量とタッチ後のノイズ量の差によりタッチしたか否かを判断します。

  ★回路図
     

  ★処理説明
    ・センサーにタッチする前のノイズ(主には商用電源のノイズ)を検出する。(これを基準値(offset)とする)
      :感度を上げるためにPICの前段に2SK241によるアンプを入れる。
      :ノイズの量は、10回サンプリングしてその間の最大値と最小値の差としています。
    ・タッチした時の値(ad0)と基準値(offset)を比較する。
    ・もしもoffset値よりもad0の値が大幅に大きければタッチしたものとみなす。
    ・タッチしていれば一定時間(10秒程度)LEDをONする。
    ・タッチしたことをブザー音で知らせる。

    ※夜だけ動作させるために光センサーも追加したいのですが、現時点では考慮していません。

  ★ソースリスト
    ソースリストはここです。

  ★動作確認
    タッチする箇所です。銅板(1cm×1cm)に線を半田付けしただけです。
     
    とても簡単な回路なので部品数も少ないですね。写真の緑のLEDは単なるパイロットランプ代わりです。
     
    タッチ前は高輝度LEDが消灯しています。
     
    タッチすると高輝度LEDが一定時間点灯します。
     



【PIC16F88】

 ■周波数表示ユニット(真空管ラジオ用)
  ★概要
    標準的な真空管ラジオ(5球スーパー)に接続して、受信周波数および受信レベルを表示するものです。
    受信周波数は、局部発振(前段の7極管のカソードより)の周波数より、中間周波数分(455Khz)をマイナス(-)
    したものを表示します。
    受信レベルは、検波後のAGC電圧(マイナス)を反転(プラス)変換したものを表示します。
    最大25Mhzくらいまでカウントできますので短波帯でも十分使えると思います。
      

  ★動作原理
     標準的な5球スーパーラジオでは、前段の7極管で局部発振と混合を行っています。
     局部発振ではラジオ放送の周波数よりも中間周波数(455Khz)分だけ高い周波数で発振しています。
     そこでこの周波数をカウントし、その値から455Khzだけ引いてやればよいことになります。
     受信レベルはAGCに利用されるのでこれを使用します。
     参考までに、標準的な5球スーパーへの本ユニットの接続例を回路図上に示します。
     

  ★回路図
     

  ★処理説明
    先ず、入力信号は、FET(2SK241)およびトランジスタ(2SC1815)で構成されたアンプで増幅されます。
    増幅された信号は、T0CKI端子に接続されTIMER0でカウントされます。
    TIMER1とCCP1を使って正確な0.1秒を得ます。(この間だけゲートを開けてカウントします)
      ・TIMER1を内部クロックで1/8プリスケーラで動作させます。
      ・するとTIMER1のクロックは、16MHz÷4÷8=500kHzとなります。
      ・CCP1をTIMER1とのコンペアモードで使い、一致する値を50000とします。
      ・すると10Hz周期で一致割り込みが発生し、正確な0.1秒を得ることが出来ます。
    プリスケール値は1/8に設定してあります。これで最大約25Mhzまでカウントできますので短波を含む2バンド
    ラジオへも対応可能となります。
    カウントした値から中間周波数(455Khz)分だけを差し引いた値を文字列に変換して、LCDへ表示します。
    受信レベルは、AGC電圧を利用しますが、これはマイナス(-)電圧なので倍率は変えずに反転します。
      ・最初のオペアンプは、ボルテージフォロアで高い入力インピーダンスで変換します。(増幅はしない)
      ・次のオペアンプでは反転増幅します。但し増幅率は1倍とします。
    この電圧をA/D変換で取り込んでバー表示します。

  ★ソースリスト
    ソースリストはここです。

  ★動作確認
     今回、動作確認用に使用したラジオです。多分ビクター製だと思います。
     
     NHK第1放送(666Khz)を受信してみました。
     
     こんな感じでLCD液晶表示部に表示されます。感度が上がると”*”が多く表示されます。
     



【PIC18F2320】

 ■10チャンネルデータロガー
  ★概要
    初めてPIC18シリーズを使用しました。PIC18F2320を使用して、単純にAD変換したデータをRS232C経由でPC
    に送るだけのものを作成しました。
    尚、計測モードは次の2種類としました。
      :1秒間に1回、AD変換(10チャンネル分)してPCにデータを送る。
      :1秒間に15回、AD変換(10チャンネル分)してPCにデータを送る。
    AD変換の精度は10ビットです。なので最小単位は約5mvとなります。
    精度を高めるには、電源電圧VCCを1023*5mv=5115mvと安定化する必要があります。

  ★回路図
     

  ★ソースリスト
    ソースリストはここです。

  ★動作確認
    今回は部品点数がとても少ないのでブレッドボードに組んで確認しました。
    PCとの接続には以前に作成したRS232Cレベル変換ユニットを使用しています。
      
      
    Windowsに標準で付いているターミナルソフト(ハイパーターミナル)を使用してデータを表示します。
    一番左のデータは、単なるカウント値です。その右からCH1〜CH10の順番です。
     
    取り込んだデータをExcelを使用してグラフ表示させてみました。
    入力端子をオープン状態にして計測しましたのでノイズ(商用の60Hz)が乗っています。
    入力端子を100kΩ位の抵抗でプルダウンすると良いと思います。
     



戻る


電子工作etc