私のブログ、「ワイパーモーターの電圧制御」を見た読者の方が
「私には作れないので是非、完成品を譲って欲しい・・・」と、依頼を受けました。
「途中で止まる様に間欠タイマーを入れて欲しい・・・」等の要望も有りました。
私は、この様な物を設計して作るのが好きなので、依頼を受ける事にしました。
勿論、使用する目的は、魚釣り用しゃくり機です。
写真を見て下さい。上側のプリント基板は、PIC マイコンを使用した、”間欠タイマー” です。
下側のプリント基板は、”DC/DC コンバータ”です。キット製品を組み立てた物です。
この2つの回路を組み合わせて、モーターの電圧制御(スピード・コントロール)、
動作を間欠タイマーに依って、制御します。
■ 間欠タイマーの仕様
■ PIC マイコン '10F222' を使用しました。米粒タイプ。
A/D コンバータ 2 チャンネル。
リレー・コントロール 1 チャンネル。
■ モーター・オン・タイマー
0.25 ~ 13.0(秒)ボリュームにて調整する。
■ モーター・オフ・タイマー
0.25 ~ 13.0(秒)ボリュームにて調整する。
■ モーターに掛かる電圧を ON/OFF するのにリレーでコントロールします。
又、モーターが惰性で回転するのを防止するために、回生ブレーキを掛けています。
基板上のショート・ピンを外し、特別に作製した電線を接続し、更に、
PIC マイコン・ライターに接続して、プログラミングします。
PIC マイコンは、基板の裏側にある為に見えません。
■ DC/DC コンバータ について
秋月電子で販売されていた物です。他の DC/DC コンバータと同様の物です。
出力電流が異なるだけで、基本的に同様の物です。
使い方は、通常の使い方では無く、変則的な使い方をしています。
この使い方に依って、電圧を 2V 程度まで絞る事が出来ます。
■ ワイパーモーターについて
私が所有しているワイパーモーターを調べた処、コネクターの配線の仕方が 2種類あるようです。
下記の画像がその内の1つです。このタイプが多かった。
(画像は、無料ソフト 'Google SketchUp 8' で作成。)
又、内部のロータリー接点は、次の様に動作します。
ワイパーモーターが定位置で止まる為の'原点位置検出'。'原点位置'に来た時に、
モーターが惰性で回転するのを防止する為に、回生ブレーキを掛ける事です。
試験結果
依頼を受けて製作しましたが、調整範囲が広いので使い慣れるまで時間が掛かりそうです?・・・
アナログ的に調整するタイプの'コントローラー'なので、自由度は高いと思います。
原点位置に停止する'間欠タイマー'を今回は採用しませんでした。
急いで作った為、完成後に気が付いたのですが、リレー、DC/DC コンバータ を使わずに
'ハーフ・ブリッジ・ドライバー’とPIC マイコンを使用してデジタル的にコントロールする方法を
思いつきました。
デジタル的にコントロールする為、設定した数値を記憶して、次回にそのまま使用する事が出来ます。
考えるたびに、色々なアイデアが頭に浮かんで来ます・・・。
その内に、これを製作して公開する機会があると思います。
[ 楽釣工房・ホームへ戻る ] [ ホーム・ページ 楽釣119 へ移動 ]
楽釣工房では、小魚用しゃくり機、わかさぎ用しゃくり機、Picマイコン制御による自動しゃくり機(しゃくりパターン制御)、赤外線リモコンの応用回路(電気機器のON/OFF、温度制御、リモコンに依る数値設定など)、電子回路について書いて行きます。
ブログの投稿記事に画像データを多く使用している為、他の投稿記事を読む事に不便をかけると思われます。
ホーム・ページ [ 楽釣119 ] では、今までの記事の内容を整理し、内容の不具合を修正し、又、記事の追加をして、ホーム・ページで公開しています。
[ 楽釣工房・ホームへ戻る ] [ ホーム・ページ 楽釣119 へ移動 ]
___________________________________________________________________________________________________________________
2011年12月25日日曜日
2011年12月16日金曜日
ワイパーモーターの電圧制御②
以前紹介した 'ワイパー・モータの電圧制御 / 定電圧インバータ制御'に使っていた秋月電子で発売していたDC/DC コンバータ・キットが発売を終了した模様なので、他に販売されている単体モジュールをテストして見ました。
ここで紹介する DC/DC コンバータ・ユニットを使う目的は、ワイパー・モータのスピードを可変するものです。
■ HRD05003E <5V 3A> 定電圧安定化電源 ( 通称 DC/DC コンバータ )
◇ 入力電圧(Vin) : 8 ~ 40 [V]
◇ 出力電圧(Vout) : 5 ~ (Vin-3V) [V]( 出力電圧可変可能 )
◇ 出力電流(Iout) : 0 ~ 3 [A]
※ 12V のバッテリーに於いて、出力電圧を 5V ~ 9V の範囲で可変します。
■ 部品表 ( 秋月電子にて部品調達 )
○ HRD05003E : 300円
○ 電解コンデンサー (470μF 25V)×2 : 20円 × 2 = 40円
○ セラミック・コンデンサ- (0.1μF 50V)×2 : 10円 × 2 = 20円
○ ターミナル・ブロック 2P × 2 : 20円 × 2 = 40円
○ ターミナル・ブロック 3P × 1 : 30円
○ ボリューム 100kΩ × 1 : 50円
○ ボリューム用ツマミ × 1 :20円
○ プリント基板(自作 or ユニバーサル基板を使う)
[合計 500円 + プリント基板]
■ プリント基板
ここで使用している基板は、生基板をPCカッターでプリント・パターンをカットして作成しました。
簡単なパターンなので、ポジ感光基板等を使うまでもありません。
[ テスト結果 ]
以前に紹介した物と同じ結果が出ました。
問題なくワイパー・モータのスピードをコントロールする事が出来ます。
作るのが面倒ですが、価格が安いので安心して使用できます。
[ 楽釣工房・ホームへ戻る ] [ ホーム・ページ 楽釣119 へ移動 ]
ここで紹介する DC/DC コンバータ・ユニットを使う目的は、ワイパー・モータのスピードを可変するものです。
■ HRD05003E <5V 3A> 定電圧安定化電源 ( 通称 DC/DC コンバータ )
◇ 入力電圧(Vin) : 8 ~ 40 [V]
◇ 出力電圧(Vout) : 5 ~ (Vin-3V) [V]( 出力電圧可変可能 )
◇ 出力電流(Iout) : 0 ~ 3 [A]
※ 12V のバッテリーに於いて、出力電圧を 5V ~ 9V の範囲で可変します。
■ 部品表 ( 秋月電子にて部品調達 )
○ HRD05003E : 300円
○ 電解コンデンサー (470μF 25V)×2 : 20円 × 2 = 40円
○ セラミック・コンデンサ- (0.1μF 50V)×2 : 10円 × 2 = 20円
○ ターミナル・ブロック 2P × 2 : 20円 × 2 = 40円
○ ターミナル・ブロック 3P × 1 : 30円
○ ボリューム 100kΩ × 1 : 50円
○ ボリューム用ツマミ × 1 :20円
○ プリント基板(自作 or ユニバーサル基板を使う)
[合計 500円 + プリント基板]
■ プリント基板
ここで使用している基板は、生基板をPCカッターでプリント・パターンをカットして作成しました。
簡単なパターンなので、ポジ感光基板等を使うまでもありません。
[ テスト結果 ]
以前に紹介した物と同じ結果が出ました。
問題なくワイパー・モータのスピードをコントロールする事が出来ます。
作るのが面倒ですが、価格が安いので安心して使用できます。
[ 楽釣工房・ホームへ戻る ] [ ホーム・ページ 楽釣119 へ移動 ]
2011年11月13日日曜日
PIC マイコンによる温度制御 / PIC16F886
低価格の”超小型アナログ温度センサーIC”を使って、温度監視装置を作って見ました。
秋月電子で,販売されている ’MCP9700-E/T0’ ( 8個で200円 ) を使って見ました。
この ICは、それ程、精度が良くありませんが、PICマイコンに直結して使う事が出来ます。
温度監視がどの程度働くかを、確かめる為の実験です。
主な特徴は、
■ 電源電圧 : 2.3V ~ 5.5V
■ 低消費電流 : 6μA
■ 測定温度範囲 : -40度 ~ +125度
■ 精度 : ±2度(最大)、0度 ~ +70度
■ 出力電圧 : -40度(100mV) ~ 0度(500mV) ~ +125度(1,750mV),(10mV / 度)
PIC マイコン16F886 を使って、温度制御をします。
■ アナログ・チャンネル : AN0(RA0)
■ レファレンス電圧 : Vref+(RA3),(2.048V :2mV / カウントに設定する。)
■ LCD表示器用出力 : B-PORT(8bit)
■ 温度監視出力、及び警報 : C-PORT
レファレンス電圧の為に、基準電圧IC等を使いません。又、このPIC マイコンのVref+ 電圧は、Free 設定である為、十分に安定化された電源を、VRなどで分圧して基準電圧を作ります。但しVref+ 電圧の最低電圧は、2.2Vと規定されていますが、実験の結果、Vref+ 電圧 2.048V でも問題有りませんでした。
PIC マイコンの種類に依っては、Vref+ 電圧 :1.024V 、Vref+ 電圧 :2.048V 固定で使える物が有ります。
温度監視するIC自体、精度が良くありませんが、VRで調整するだけでもおおまかな温度監視は、出来ます。
[ LCD 表示 ]
上段=測定温度
下段=左:下限温度(HEATER ON)、中:設定温度(HEATER OFF)、右:温度異常警報
[ ブレッドボード ]
左ボタン:下限温度設定(UP,DOWN)
中ボタン:設定温度(UP,DOWN)
右ボタン:温度異常警報(UP,DOWN)
[ 設定の仕方 ]
まず、温度センサーとVR2を交換します。
A点とアース間にテスターを接続します。
電圧値を 2.048V になるように、VR1で設定します。
テスターを B点に移動します。
電圧値が 0.5Vになるように、VR2で設定します。
この時の LCDの温度が '0度'と表示されるのを確認します。
テスターの精度が良く無いと、表示がばらつきますが、VR1を調整して、何度か繰り返して大体の値になるようにします。
次に、テスターの電圧値が 1.0Vになるように設定します。
この時の LCDの温度が '50.0度'を表示されれば調整完了です。
実際に使用してみると、+0.8度程度の誤差でした。(0度 ~ 50度の範囲に於いて)
[ 使用目的 ]
■ 熱帯魚水槽の水温制御。
■ 石油ストーブによる室内暖房の夜間室内温度を管理する。
ストーブの運転 ON/OFF (最小燃焼モードで運転)。
寒冷地に於いて、夜間ストーブの運転をOFFする事が無いのです。
ストーブに付いている機能で、'セーブ運転'が有りますが、省エネ・モードと言えるのか疑問です。そこで、この装置を使って室温をコントロールします。
[ 楽釣工房・ホームへ戻る ] [ ホーム・ページ 楽釣119 へ移動 ]
秋月電子で,販売されている ’MCP9700-E/T0’ ( 8個で200円 ) を使って見ました。
この ICは、それ程、精度が良くありませんが、PICマイコンに直結して使う事が出来ます。
温度監視がどの程度働くかを、確かめる為の実験です。
主な特徴は、
■ 電源電圧 : 2.3V ~ 5.5V
■ 低消費電流 : 6μA
■ 測定温度範囲 : -40度 ~ +125度
■ 精度 : ±2度(最大)、0度 ~ +70度
■ 出力電圧 : -40度(100mV) ~ 0度(500mV) ~ +125度(1,750mV),(10mV / 度)
PIC マイコン16F886 を使って、温度制御をします。
■ アナログ・チャンネル : AN0(RA0)
■ レファレンス電圧 : Vref+(RA3),(2.048V :2mV / カウントに設定する。)
■ LCD表示器用出力 : B-PORT(8bit)
■ 温度監視出力、及び警報 : C-PORT
レファレンス電圧の為に、基準電圧IC等を使いません。又、このPIC マイコンのVref+ 電圧は、Free 設定である為、十分に安定化された電源を、VRなどで分圧して基準電圧を作ります。但しVref+ 電圧の最低電圧は、2.2Vと規定されていますが、実験の結果、Vref+ 電圧 2.048V でも問題有りませんでした。
PIC マイコンの種類に依っては、Vref+ 電圧 :1.024V 、Vref+ 電圧 :2.048V 固定で使える物が有ります。
温度監視するIC自体、精度が良くありませんが、VRで調整するだけでもおおまかな温度監視は、出来ます。
[ LCD 表示 ]
上段=測定温度
下段=左:下限温度(HEATER ON)、中:設定温度(HEATER OFF)、右:温度異常警報
[ ブレッドボード ]
左ボタン:下限温度設定(UP,DOWN)
中ボタン:設定温度(UP,DOWN)
右ボタン:温度異常警報(UP,DOWN)
[ 設定の仕方 ]
まず、温度センサーとVR2を交換します。
A点とアース間にテスターを接続します。
電圧値を 2.048V になるように、VR1で設定します。
テスターを B点に移動します。
電圧値が 0.5Vになるように、VR2で設定します。
この時の LCDの温度が '0度'と表示されるのを確認します。
テスターの精度が良く無いと、表示がばらつきますが、VR1を調整して、何度か繰り返して大体の値になるようにします。
次に、テスターの電圧値が 1.0Vになるように設定します。
この時の LCDの温度が '50.0度'を表示されれば調整完了です。
実際に使用してみると、+0.8度程度の誤差でした。(0度 ~ 50度の範囲に於いて)
[ 使用目的 ]
■ 熱帯魚水槽の水温制御。
■ 石油ストーブによる室内暖房の夜間室内温度を管理する。
ストーブの運転 ON/OFF (最小燃焼モードで運転)。
寒冷地に於いて、夜間ストーブの運転をOFFする事が無いのです。
ストーブに付いている機能で、'セーブ運転'が有りますが、省エネ・モードと言えるのか疑問です。そこで、この装置を使って室温をコントロールします。
[ 楽釣工房・ホームへ戻る ] [ ホーム・ページ 楽釣119 へ移動 ]
2011年10月12日水曜日
HI-TECH C のバージョン切り替え
HI-TECH C プログラムの新しいバージョンが公開されてインストールする場合、
普通、旧バージョンを削除してから新しいバージョンをインストールすると思いますが、これに関する記事を探したところ、何処にもありませんでした。
赤い矢印のプログラムを最上段に移動するために、目的のプログラムをマウスでクリックして選択します。
コンパイルした結果を見て下さい。
普通、旧バージョンを削除してから新しいバージョンをインストールすると思いますが、これに関する記事を探したところ、何処にもありませんでした。
そこで、最新版の HI-TECH C プログラムを、そのままインストールすると、どうなるかを試してみる事にしました。
すると、新旧のプログラムが存在したままインストールされる事が分かりました。これは、一体どう云う事なのかを調べて見ました。
HI-TECH C PIC18 のインストール も参考にして下さい。
すると、新旧のプログラムが存在したままインストールされる事が分かりました。これは、一体どう云う事なのかを調べて見ました。
HI-TECH C PIC18 のインストール も参考にして下さい。
MPLAB IDE を起動して、各項目を調べてみると、分かりました。!
新旧のバージョンを切り替えてコンパイラー・プログラムを動作させる方法が有ります。
従って、旧バージョンを削除する必要が無いのです。
又、最新版をインストールすると、優先的に使用される様になります。
コンパイラー・プログラムにバグがあって信頼性が低い場合、この時は、旧バージョンを使うしか有りません。
この様な時に、バージョンの切り替えが必要になって来ます。
[ 切り替え方 ]
まず、作成済みのプロジェクトを開きます。
( PIC18F2420 を使用しています。 従って、PIC18 を例題にして話を進めます。)
( PIC18F2420 を使用しています。 従って、PIC18 を例題にして話を進めます。)
一旦、ウインドウを閉じて、コンパイルします。
コンパイルした結果を見て下さい。
赤枠の中に "HI-TECH C" プログラムのバージョンが表示されています。
又、先ほどのウインドウを開きます。
次に、旧バージョンに切り替えてみます。
次に、 ”Move up” 又は、"Move to top" ボタンを押して移動します。
目的のプログラムが最上段に移動しました。
”適用” ⇒ ”OK” ボタンを押して、このウインドウを閉じます。
次に、コンパイルします。赤枠の中に "HI-TECH C" プログラムのバージョンが表示されています。
旧バージョンでコンパイルされたのが、分かります。
新しいバージョンの方が、プログラム・メモリの消費が少ないようです?・・・
新しいバージョンの方が、プログラム・メモリの消費が少ないようです?・・・
この様にして、古いバージョンを削除すること無く、最新バージョンをインストールし、混在したままで必要に応じて
2011年10月11日火曜日
HI-TECH C PIC18 のインストール
最初、MPLAB IDE ( PIC10/12/16 MCUs ) をインストールしますが、その内にPIC18 も
必要になって来ます。
最初に表示したページに戻ります。
では、"HI-TECH C" をクリックします。ダウンロード・ページに移動します。
必要になって来ます。
そこで、PIC18 のダウンロードの方法と、インストールの方法を説明します。
まず、最初にマイクロチップ社のホーム・ページを開きます。
次に、右上にある言語ボタンの「日本語」を押して、日本語表記にします。
PIC18 をダウンロードする為に、ユーザー登録をしなければなりません。
そこで、① の”myMicrochip Login” をクリックしてログ・イン・ページに移動します。
ユーザー登録をする為に、③ ”register now" のリンクをクリックします。
ユーザー登録ページが表示されました。
各欄は必須項目です。
最初に表示したページに戻ります。
このページの ② の部分の "開発ツール" ⇒ ”コンパイラ” をクリックします。
ページが移動しました。
このページにある ”PIC18 MCUs の PRO" の ”HI-TECH C ” プログラムをダウンロードします。
後で説明しますが、どのモードをダウンロードしても構いません。
では、"HI-TECH C" をクリックします。ダウンロード・ページに移動します。
先程、ユーザー登録を完了したので、⑤ の処にユーザー名が表示されています。
⑥ を押してダウンロードします。
ダウンロードが終了して解凍すると、デスクトップにホルダーが作られて、その中に、 "PICC_18_9_80_WIN" と云うプログラムが有ります。( OS が Windows の場合 )
このプログラムのアイコンをダブル・クリックします。
すると、インストールが開始されます。
2011年9月28日水曜日
delay タイムの使い方 / MPLAB IDE
プログラムを作成する時、タイミング等を合わせる為に wait time を挿入する事は良くある事です。
又、アッセンブラーでプログラムを作成するとなると、タイミング時間を入れる為にステップ数を計算してプログラムしなければなりません。
しかし、手計算でする為、間違いが良くあります。
ところで、C 言語でプログラムする時は、delay time の関数が用意されているので、それを利用することができます。設定は、簡単です。
次の一文を書いて、delay time の関数を使えるように宣言します。
#define _XTAL_FREQ 4000000 // オシレータ周波数 4Mhzの場合又、アッセンブラーでプログラムを作成するとなると、タイミング時間を入れる為にステップ数を計算してプログラムしなければなりません。
しかし、手計算でする為、間違いが良くあります。
ところで、C 言語でプログラムする時は、delay time の関数が用意されているので、それを利用することができます。設定は、簡単です。
次の一文を書いて、delay time の関数を使えるように宣言します。
関数は、
__delay(1000); // 1000命令サイクル遅延する
__delay_us(400); // 400 μs( マイクロ秒 )遅延する
__delay_ms(10); // 10 ms ( ミリ秒 )遅延する
上記の3個があります。但し、制限が有ります。(上記の括弧内の数値は例です。)
それは、オシレータの周波数によって、ディレータイムに上限がある事です。
次の表を見て下さい。
動作周波数 | 最大時間 | __delay_ms(x) | __delay_us(x) |
20Mhz | 39,424μs | __delay_ms(39) | __delay_us(39424) |
16Mhz | 49,280μs | __delay_ms(49) | __delay_us(49280) |
10Mhz | 78,848μs | __delay_ms(78) | __delay_us(78848) |
8Mhz | 98,560μs | __delay_ms(98) | __delay_us(98560) |
4Mhz | 197,120μs | __delay_ms(197) | __delay_us(197120) |
それ以上のディレータイムが必要になる時は、 for 文、while文 などによるループ・プログラムを
作って実現するか、自分でループ・プログラムを作成してディレイ・タイマーを起動する等します。
又、 関数の括弧内に変数を使う事ができません。数値のみです。
次に、サンプル・プログラムを表示します。
又、 関数の括弧内に変数を使う事ができません。数値のみです。
次に、サンプル・プログラムを表示します。
このプログラムは、一定時間ごとにLEDランプなどを表示させる単純なプログラムです。
赤枠の中のプログラムを見て下さい。
10ms のディレイ・タイム遅延を行っています。これを while 文によって mt 回繰り返します。
wait_time(50); // wait time = 10 * 50 =500 ms
どちらも同じように動作します。
これらのプログラムをコンパイルすると、どうなるかを比べて見みます。赤枠の中のプログラムを見て下さい。
10ms のディレイ・タイム遅延を行っています。これを while 文によって mt 回繰り返します。
wait_time(50); // wait time = 10 * 50 =500 ms
又、for 文でプログラムする時は、 赤枠部分の文と、次の文を入れ替えて下さい。
どちらも同じように動作します。
while文の場合(プログラム・メモリー 59ワード)
for 文の場合( プログラム・メモリー 66 ワード )
unsigned int ・・・・; 4バイト幅のデータ型に宣言。実際は、1バイト幅のデータで済む・・・
unsigned char ・・・・; この、1バイト幅のデータ型に宣言するのが正しい。
for 文の場合( プログラム・メモリー 66 ワード )
と、なります。
プログラム・メモリーの消費の仕方が違います。
小規模のプログラムでは、問題になりませんが、複雑なプログラムを作成する時に、このような
サブルーチンを多用するとプログラム・メモリーが不足してきます。
効率良くプログラムを作成する為に、普段から心がける事が必要です。
[ 効率良くプログラミングする為のヒント ]
プログラムで使用する変数のデータ型について、普段、気にしないで使われていると思います。
PIC マイコンがプログラム内の変数を参照するために、1 バイト・データ形式の場合、1 バイト分の領域を確保します。
又、4 バイト・データ形式の場合、4 バイト分の領域を確保します。
ところが、1バイト・データを扱っているのに、4バイト分の領域を確保するとどうなるでしょうか?・・・
それは、マイコンが4 バイトのデータを参照する事になり、時間が掛かります。
こんな事では、高速動作をさせたりする事が難しくなります。
又、プログラム・サイズも大きくなってしまいます。
unsigned int ・・・・; 4バイト幅のデータ型に宣言。実際は、1バイト幅のデータで済む・・・
unsigned char ・・・・; この、1バイト幅のデータ型に宣言するのが正しい。
そこで、扱うデータのサイズを正しく把握して、データ型を正しく宣言してプログラミングすることが必要です。
2011年9月18日日曜日
CONFIG ワードを探す / MPLAB IDE v8.6
私のブログを訪問されている人達は、どんな情報を求めているのだろうかと思い、少し、調べてみました。
私のブログの統計情報を見てみると、MPLAB IDE 、CONFIG ワード 、等 PIC マイコンの
使い方の情報を求めているのが分かります。
又、PIC マイコンを使い始めたのだが、使い方が分からないと言う人達が情報を求めているのが
読み取れます。
そこで、以前、投稿した記事の MPLAB IDE V8.6 の使い方 / CONFIG ワードの設定 について
追加説明をします。
MPLAB IDE ( HI-TECH C ) プログラムがインストールされている事を前提に説明をします。
一番欲しい情報は、CONFIG ワードの設定の仕方だと思います。
[ サンプル・プログラム ]
MPLAB IDE に於いて C言語 でプログラミングする時、プロジェクトでデバイス( PIC )を
設定しますが、プログラムでは、
設定しますが、プログラムでは、
#INCLUDE で " pic.h " を宣言します。
このファイルに依って、 PIC の設定が自動的に行われます。
そこで、この " pic.h " ファイルの中身について、調べてみます。
MPLAB を普通にインストールすると、下記の画像の ① のルートに有ります。
次に、この ④ のファイルを探して下さい。このファイルをメモ帳で開いて見ます。
次に、この ④ のファイルを探して下さい。このファイルをメモ帳で開いて見ます。
このファイルは、PIC マイコンのデバイスを設定する為のファイルです。
ファイルの中身を 1 行ずつ見て確認しても良いのですが、検索機能を使ってサンプル・プログラムで使用しているデバイス "16F84A" を調べてみます。
検索結果は、次の通りです。
2011年9月16日金曜日
LED フルカラー 水中ライト / PIC 10F222
このライトは、豆電球方式の古いタイプの水中ライトです。水深 100m? 防水で使えるようですが、
このライトのケースはとても肉厚で頑丈な物です。
そこで、このライトの豆電球をフルカラー LED に置き換えて、「LED フルカラー 水中ライト」なる物を
作ってみました。
このライトは、時間経過とともに色が変化します。いわゆる、レインボー・カラーです。
この様なライトは、色々なメーカーから発売されていますが、価格が高価です。
豆電球部分をプリント基板に置き換えて換装する事が出来る構造になっています。偶然 ?・・・
豆電球部分が小さいので、PIC マイコンも小型の物を使う事にします。
LEDのR、G、B 端子をそれぞれの I/O 端子に対応させます。
プリント基板のパターン配置の都合に依って、次の様に対応させます。
R ( 赤 ) → GP1
G ( 緑 ) → GP2
B ( 青 ) → GP0
PIC 10F222( 6Pin 米粒タイプ ) を使用する。
回路図 |
AKI PIC V4 で書込み。専用ケーブルで基板の pin 端子に接続します。
基板の pin 端子を PIC kit2,3 に接続しても書込みできます。
PIC 、抵抗器は、放熱器付LEDランプの下に隠れています。
LED 基板
pin端子に乾電池を接続して、点灯試験をしているところ。
pin端子に乾電池を接続して、点灯試験をしているところ。
PC カッターとデザイン・ナイフでプリント基板のパターン・カットをしました。
豆電球とLED 基板を交換します。
完成!
単2アルカリ乾電池で連続 48 時間以上点灯可能です。
暗い場所で点灯すると、かなり、明るいです。
暗い場所で点灯すると、かなり、明るいです。
[ 楽釣工房・ホームへ戻る ] [ ホーム・ページ 楽釣119 へ移動 ]
2011年9月5日月曜日
LCD 表示機のデモ / SC1602BSLB
16文字×2行 液晶表示機のデモ・テストです。
以前、私は PIC マイコンのプログラムをアッセンブラーで書いていましたが、ページ設定などとても面倒な手続きが必要でした。雑誌などで公開されているプログラムは、殆んど、 C 言語で記述されているのが現状です。
C言語の利点は、昔の BASIC プログラムの感覚でプログラムを組む事が出来るからです。
C言語で記述すると、PICマイコンの設定は簡単な命令を記述するだけで、後は自動的にコンパイラーが適正に設定してくれます。
又、作製したプログラムを他の PIC マイコンに移植するのも、CONFIG ワード、I/O の設定など特定項目を変更するだけで簡単に出来ます。
ところで、 LCD表示機の説明書を一度見て理解できますか?・・・。
だいたい、こう言った説明書は細かい部分まで解説はしてくれません。
そこで、インター・ネットで探して、詳しく解説しているサイトが有ったので、その記事を参考にしました。
又、インター・ネットで検索して公開されているプログラムを探すと、殆んど、アッセンブラーで書かれたプログラムばかりでした。一応、参考にしました・・・。
仕方無く、MPLAB IDE をインストルすると、サンプル・プログラムが付録として付いてきます。
これを参考ににして、プログラムを組む事にしました。
但し、この手のプログラムは、まともに動作しないのが現状です。
色々、試行錯誤の結果、何とか完成しました。
完成したプログラムは、基本部分なので、本格的なプログラムを作るときは、メイン・プログラムからInclude file で定義した ” lcd.c ” の各種サブルーチンを呼び出すだけで、LCD をコントロールする事ができます。後は、応用するだけです。
サンプル・プログラムで使っている I/O ポートは、B ポート・オンリーなので、他の PIC マイコンに移植するのが簡単です。
[ LCD display 回路図 16F84A ]
[ プログラムの仕様 ]
● サンプル・プログラムは、 PIC 16F84A を使用しました。
● 他のPIC マイコンへの移植が簡単。
● LCD は、4bit モードで動作。
● PIC マイコンの I/O は、8bit ( B ポート)を使います。
● LCD の基本プログラムは、INCLUDE ファイルで定義をする。
メイン・プログラムからサブルーチンを呼び出す型式。
プログラム・ダウンロード ( PIC 16F84A ) ・・・ LCD 16F84A
プログラム・ダウンロード ( PIC 16F648A ) ・・・ LCD 16F648A
プログラム・ダウンロード ( PIC 16F886 ) ・・・ LCD 16F886
この記事の続きを読む・・・LCD 表示機のデモ
[ 楽釣工房・ホームへ戻る ] [ ホーム・ページ 楽釣119 へ移動 ]
以前、私は PIC マイコンのプログラムをアッセンブラーで書いていましたが、ページ設定などとても面倒な手続きが必要でした。雑誌などで公開されているプログラムは、殆んど、 C 言語で記述されているのが現状です。
C言語の利点は、昔の BASIC プログラムの感覚でプログラムを組む事が出来るからです。
C言語で記述すると、PICマイコンの設定は簡単な命令を記述するだけで、後は自動的にコンパイラーが適正に設定してくれます。
又、作製したプログラムを他の PIC マイコンに移植するのも、CONFIG ワード、I/O の設定など特定項目を変更するだけで簡単に出来ます。
ところで、 LCD表示機の説明書を一度見て理解できますか?・・・。
だいたい、こう言った説明書は細かい部分まで解説はしてくれません。
そこで、インター・ネットで探して、詳しく解説しているサイトが有ったので、その記事を参考にしました。
又、インター・ネットで検索して公開されているプログラムを探すと、殆んど、アッセンブラーで書かれたプログラムばかりでした。一応、参考にしました・・・。
仕方無く、MPLAB IDE をインストルすると、サンプル・プログラムが付録として付いてきます。
これを参考ににして、プログラムを組む事にしました。
但し、この手のプログラムは、まともに動作しないのが現状です。
色々、試行錯誤の結果、何とか完成しました。
完成したプログラムは、基本部分なので、本格的なプログラムを作るときは、メイン・プログラムからInclude file で定義した ” lcd.c ” の各種サブルーチンを呼び出すだけで、LCD をコントロールする事ができます。後は、応用するだけです。
サンプル・プログラムで使っている I/O ポートは、B ポート・オンリーなので、他の PIC マイコンに移植するのが簡単です。
[ LCD display 回路図 16F84A ]
[ プログラムの仕様 ]
● サンプル・プログラムは、 PIC 16F84A を使用しました。
● 他のPIC マイコンへの移植が簡単。
● LCD は、4bit モードで動作。
● PIC マイコンの I/O は、8bit ( B ポート)を使います。
● LCD の基本プログラムは、INCLUDE ファイルで定義をする。
メイン・プログラムからサブルーチンを呼び出す型式。
プログラム・ダウンロード ( PIC 16F84A ) ・・・ LCD 16F84A
プログラム・ダウンロード ( PIC 16F648A ) ・・・ LCD 16F648A
プログラム・ダウンロード ( PIC 16F886 ) ・・・ LCD 16F886
[ MPLAB IDE Project の作成 ]
複数のプログラムを使って作成した ”LCD 表示機のデモ”プログラムのMPLAB IDE Project を作成します。
サンプル・プログラムで使用した ”LCD 16F886” のプログラムは、
lcd.c
lcd-new.h
main-16F886.c
この3個のファイルに依って、構成されています。( 他のサンプル・プログラムも同様な構成です。 )
では、プロジェクトを作成します。
この記事の続きを読む・・・LCD 表示機のデモ
[ 楽釣工房・ホームへ戻る ] [ ホーム・ページ 楽釣119 へ移動 ]
2011年7月9日土曜日
A/D コンバータの使い方
PIC マイコンの種類に依って A/D コンバータの設定方法が異なりますが、基本的な部分については共通なので
設定方法を理解すると、他の PIC マイコンの使い方をマスターする事が出来きます。
ここでは、PIC 12F675 について説明をします。
説明文の中で、例題として数値を表示しています。
例題は、バッテリー等の電圧監視をする為のプログラムを前提にしていますが、
今回プログラムは、公開しません。
例題は、バッテリー等の電圧監視をする為のプログラムを前提にしていますが、
今回プログラムは、公開しません。
下記の図を見てください。
PIC 12F675 の A/D コンバータを操作する為の項目です。割り込み制御は使用しないので、
その部分の説明を省略します。
【 例 題 設定手順 】
1. CONFIG ワード を設定する。
2. PIC マイコンの動作周波数を 4Mhz にする。
3. CMCON で コンパレータを OFF にする。
4. TRISIO の入出力を設定する。
5. ANSEL を設定する。
■ 変換クロック を設定する。
■ I/O ポート を設定する。
● AN0 をアナログ・チャンネルに設定する。
● GP3 をデジタル入力にする。
● GP1、GP2、GP4、GP5 をデジタル出力にする。
6. ADCON0 の設定。
■ ADFM の設定。データを左詰めで8bit データを使う。
■ VCFG 基準電圧の設定。
■ アナログ・チャンネルの設定。設定したチャンネルの内の一つを選択する。
■ ADON A/D コンバータ・モジュールを使用する。
7. ADRESH をA/D 変換のデータとして扱う。
_______________________________________________
_______________________________________________
1.__CONFIG ( INTIO & WDTDIS & PWRTEN & MCLRDIS ) ;
2.#define _XTAL_FREQ 4000000 ;
delay タイムを使う場合、delay を使用する定義をする。動作周波数 4Mhz。
4.TRISIO = 0b00001001; // I/O ポート設定値
GPIO0 = 1; AN0 アナログ・チャンネル "0" A/D 変換入力
GPIO1 = 0; デジタル出力
GPIO2 = 0; デジタル出力
GPIO3 = 1; デジタル入力
GPIO4 = 0; デジタル出力
GPIO5 = 0; デジタル出力
【 5.ANSEL の設定 】
[ アナログ・チャンネル・セレクト・ビット ]
ANS0 = 1; // Analog ( Pin 7 : GP0/AN0 )
ANS1 = 0; // Digital ( Pin 6 : GP1/AN1 )
ANS2 = 0; // Digital ( Pin 5 : GP2/AN2 )
ANS3 = 0; // Digital ( Pin 3 : GP3/AN3 )
[ A/D 変換クロック周波数選択 ] 動作クロック周波数 : 4Mhz
8 Tosc を使用する。
ADCS0: 1
ADCS1: 0
ADCS2: 0
下記の図を参考にして、デバイスの周波数に依って A/D 変換の動作クロックを設定します。
赤く塗りつぶした部分の中から選びます。ここでは、2.0μs の 8 Tosc を選択します。
5.ANSEL = 0b00010001; // ANSEL = 0x11 設定値
【 ADCON0 の設定 】
ADFM = 0; // データを左詰めで使う。8bit データとして扱う。
VCFG = 0; // 基準電圧を VDD にする。
CHS0 = 0; // アナログ・チャンネル "0" を使う。
CHS1 = 0; // アナログ・チャンネル "0" を使う。
GO/DONE = 1; // 変換開始指令、変換終了ステータス。
ADON = 1; // A/D コンバータ・モジュールを使用する。
6.ADCON0 = 0b00000001; // ADCON0 = 0x01 設定値
[ 楽釣工房・ホームへ戻る ] [ ホーム・ページ 楽釣119 へ移動 ]
2011年6月28日火曜日
ワイパー・モーターのPWM制御 / PIC 16F88
以前投稿した記事の ワイパー・モーターの電圧制御 / 定電圧インバータ制御 では、モータに掛かる電圧をコントロールする事に依って、モーターのスピードをコントロールしていましたが( 一般的なしゃくり機のスピード・コントロール )、これは、アナログ的な制御方法です。
一方、デジタル的にコントロールする方法に、PWM コントロールと言う方式が有ります。これは、モータに掛かる電圧 12V は、そのままにして、モータに流れる電流を ON/OFF する事に依ってスピードをコントロールします。この、ON/OFF を制御するのが、 PIC 16F88 マイコンです。
この方式を、しゃくり機 V.6 / マイコン制御 に採用してきましたが、少々、問題が発生した為、改良する事にしました。
しゃくり機 V.6 / マイコン制御 に使っていたスピードをコントロールする Hブリッジ・ドライバーIC のドライブ能力が不足している為、破損する事が有りました。
一方、デジタル的にコントロールする方法に、PWM コントロールと言う方式が有ります。これは、モータに掛かる電圧 12V は、そのままにして、モータに流れる電流を ON/OFF する事に依ってスピードをコントロールします。この、ON/OFF を制御するのが、 PIC 16F88 マイコンです。
この方式を、しゃくり機 V.6 / マイコン制御 に採用してきましたが、少々、問題が発生した為、改良する事にしました。
しゃくり機 V.6 / マイコン制御 に使っていたスピードをコントロールする Hブリッジ・ドライバーIC のドライブ能力が不足している為、破損する事が有りました。
そこで、ドライブ能力を上げる為に、以前から パワー・MOS・FET を使って Hブリッジ・ドライバー を作る予定でいたのですが、実験をする機会がなくて・・・のびのびになっていました。やっと、部品を購入出来たので、試作機を製作しました。
電気回路的には標準的な物ですが、部品の値段と性能が満足出来るものを選定するのに時間がかかりました。
一応、モーターの正回転・逆回転・ブレーキ動作を使うので、Hブリッジ・ドライバー回路を採用しています。
一方向にモーターを回すのであれば、パワー・MOS・FET 1個で間に合います。
モーターの制御は、PIC 16F88 に VR を接続して VR の電圧を A/D変換 し、そのデーターをPWM の CCPR1Lに与えてデューティサイクルを連続可変する物です。
Hブリッジ を駆動する為に普通はECCP モジュールを使うのですが、PIC 16F88 には、ECCP モジュールが無いので、CCP モジュールにゲートIC 74HC08 のAND 回路を組み合わせ、ECCP と同等の機能を持たせています。
試作した回路図です。
PIC 16F88 によるコントロール基板です。
逆回転・ブレーキ動作は、今回使用していません。
連続正回転だけです。スムーズにスピードが可変します。
PWM 波に依ってモーターの動作を高速でスィッチイングする為、モーターコイルに流れる電流によって励磁音がします。約1kHz の音がします。
少々うるさいかもしれません・・・・
パワー・MOS・FET は、内部抵抗が小さく、大電流を流す事が出来ます。ここで使っている素子は 20A Maxです。ゆえに、それ程発熱しないので、放熱器を必要としないです。
但し、静電気にとても弱いので取り扱い注意です!。
登録:
投稿 (Atom)