パルスを作るのにPICで、自分でプログラムを組みましたが、
自分でプログラム作らなくても、CCPモードというのがあって、
このなかにPWMモードという機能があって、パラメーター
さえ設定してやれば、パルスの生成ができるようです。
ただ、その設定のパラメーターの与え方は、私には複雑で、
まだ、よく理解できません。いずれ、マスターしたいと思いますが、
とりあえず、自作のプログラムでも動いたので、今日もあれこれ
やりました。
今日は、
の赤矢印(LOWの時間)の時間を変えることで、パルスの周波数を
変えてモーターの動きを試してみました。
2000HZのパルスで回転させていたときは、回転中にモーターの
軸を指で持つと、回転をストップすることができました。
このモーター壊れているのかのかなと思いましたが、
約1500HZぐらいに落とすと、手で止められないくらいのトルク
がでました。どうやら、設定があってなかったようです。
1500HZから200HZぐらいまで、段階的に変えてみましたが、
うまく動いたようです。
この間で、周波数を変更できれば、スピードのコントロール
ができそうです。
PICで可変抵抗を使うには、AD変換が必要なので、
次なる課題は、AD変換のプログラムです。
---「PIC」プログラミング再び (2)---
PICのプログラムについて、少しずつ思い出してきました。
とはいっても、完全にマスターなどしている訳ではないので、
何年か前の水準にもどっただけです。
今日は、PICで、ステッピングモーターのパルスを発生さて、
中古のステッピングモーターを回してみました。
UDK2120の取説には、必要なパルスの要件は、
とありました。アセンブラでプログラムを組むと、命令に必要な
クロック数から細かい設計もできるのでしょうが、Cからは、
ちょと面倒で、私にはできません。ということで、実際にプログラム
しては、動かしてみて、オシロデ確認して組みました。
/******************************************
2014-10-15
PULSE SEISEI
********************************************/
#include
void WaitTime1 (void);
void WaitTime2 (void);
int dummy;
void main(void){
PORTA=0x00;//PORTAをLOWに
PORTB=0x00;//PORTBをLOWに
TRISA=0x08;//0000 1000 PORTAを出力に(RA3は入力に)
TRISB=0x00;//0000 0000 PORTBを出力に
CMCON=0x07; //1,2,17,18コンパレーターオフ 汎用端子を入出力へ
//パルスの生成
for(;;){
RA1=1;
dummy=1;//待ち時間だけHIGHに
dummy=1;
RA1=0;
WaitTime2();//待ち時間だけLOWに
}
}
// 待ち時間関数の呼び出し
void WaitTime1 (void){
int cnt1=1;
while(cnt1 > 0){
cnt1--;}
}
void WaitTime2 (void){
int cnt2=20;
while(cnt2 > 0){
cnt2--;}
}
やってることは単純なことで、一つの端子の出力を、オン、オフ
をしているだけです。ただ、当初予定していた二つの待ち時間
の関数を使おうとしましたが、この関数を使うと、パルスの幅
が50μsぐらいになるので、dummy=1という数字を代入すると
いう意味のない命令を一つ実行するだけで、だいたい、取説
にあった5μsの幅になりました。
WaitTime2()の関数で、待ち時間のカウンターを20にすること
で、パルスの周波数が約2kHになりました。
2kHだと約240rpm/mの早さで回るようです。
これで、目的にまた一歩近づきました。
---Windows Live メール 2009をインストールする---
WINDOWS7にいてからも、Windows Live Mail 2009を使って
るが、新しいPCにしてから、保存していたファイルからインストール
したが、ファイルが壊れているらしくインストールできない。
いろいろ探したが、本家のマイクロソフトでは、DLできた
HPが削除されているようで、
「雛形倶楽部情報データベース」にのっていた、
http://g.live.com/1rewlive3/ja/wlsetup-all.exe
からDLできた。
めでたし、めでたし。
---時代は変わる? LAN内PCが見えない。WINDOWS7---
普段使ってるPCの調子が悪くなってきた。唯一仕事にも使ってる
ので、完全に立ち上がらなくならないうちに、新しいPC移行すべく
安いWINDOWS7のPCを某オクで購入した。
使えるようになるまで、あれこれ設定をしたが、まずネットワーク
の設定ではまった。
LAN内のHDがなかなか見えてこなかった。ネットでたぐってみた。
似たような症状があるので、試してみたが結局だめで、いろいろ
やってみた。
DHCPによるIPアドレスの振り分けがきらいなので、固定のI
Pアドレスを設定するのだが、このときに、自動構成のIPアドレス
と、固定のIPアドレスの2種類が割り振られてしまうようだ。
二つのセグメントの違うドレスは意味のあるのだろうが、
こうなると、インターネットには接続できるものの、LAN内のPC
が見れなくなってしまう。
あれこれやっているうちに解決。それは、2度か3度ほど、IPアドレス
を設定しなおすというもの。そうしているうちに、自動構成のアドレス
がなくなって、LAN内のPCもみえてるくようになった。
それから、プリンタのドライバーだが、なんと、IP4100のドライバー
自動更新からは消えてしまってる。しかたないので、XP用のドライバー
をキャノンからからDLして、無事インストール。IP4100は古いので、
しかたないのか。これも時代の流れか。
---分厚いカタログ (2)---
---「月食」の写真を撮りました。---
---「PIC」プログラミング再び (1)---
ちょっとした制御をPICでやろうとまた思いたちました。以前
ハンダゴテタイマーをPICで作りましたが,そのプログラムを
見てみると,全く忘れてしまいました。
そこで,また,最学習することに・・・・・・・・。
今回もプログラミング言語は「C」を使いますが,PICの細かい設定
とうについて,全く忘れてしまいましたので,備忘録代わりに,
メモ帳代わりに記録していきます。
以前使った16F627Aです。
PORTAレジスタ・・・・ポートAの出力端子の電力レベルの設定
ポートAの出力端子(RA7~RA0)
例 一括設定
PORTA=Ob00000000(RA7~RA0が0Vに設定)
0b・・・2進数
0・・・・・・8進数
0x・・・・・16進数
単独の設定
RA0=0(RA0を0Vに設定)
PORTBレジスタも同様の設定
TRISAレジスタ・・・・RA各端子の入出力の設定
0を書き込むと出力端子になる
1を書き込むと入力端子になる
例 一括設定
TRISA=0b00000000(RA7~RA0が出力端子に)
単独の設定
TRISA3=0 (RA3を出力端子に)
(16F627Aの場合RA5は入力専用なので,必ず入力に)
CMCONレジスタ・・・・・・汎用端子の役割設定
CMCOM=0x07 (下位3ビットを1に設定することで
1,2,17,18端子を入出力端子
に設定)
今日は,
この本で,ここまで復習。
プログラムを覚え初めの頃,
A=A+1
という表記が納得いきませんでした。数学や算数では,成り立ちません。
この場合,「=」はイコール(等しい)ではなくて,代入するという
意味です。ちなみに等しいかどうかの判別は,「==」イコール
を二つ並べます。プログラム覚え立ての頃,ここではまりました。
IF(A=1){処理1}
こんな風に書いて思った結果がでませんでした。これだと,Aに1が
代入されてしまいます。正しくは,
IF(A==1){処理1}
でした。
---ウッドデッキの修理 (4)---
---分厚いカタログ---
---「原点カメラ」---
手持ちの材料(真鍮)で、原点カメラのホルダーを作りました。
作ったといいいっても、心中の太さを整え、中心に10mmφ
の穴を開けて、コードの取り出し口を付けた部品をを一つと
チャックに加えられるようにした蓋に当たる部品の二つです。
中心に10mmφの穴を開けるのと、チャックに咥える部分
の作業が面倒でした。特に中心にあけた穴は、原因はわかり
ませんが、多少偏心してしまい、蓋をねじ入れてみると、
多少の段差ができました。
USBカメラを入れてみるとおさまりはいいようです。
中心に開けたあなが、多少大きくなったようで、当初からの予定
ですが、何カ所かイモネジで固定する予定です。
フライスに咥えて、動かしてみました。
もうちょっと長さが短いとよかったのですが。
PCの画面もいいようです。
カメラの光学軸の補正の方法がいまいちなので、もう一度、
確認してみようと思います。
また道具が増えました。