体重と今日食べたもの

k1segawa.exblog.jp

ダイエット

ブログトップ

ポケコン PC-G850Vで電子回路工作(6/8)

I2Cでは出力ピンになるので、入力ピンをプルアップ抵抗に繋ぐように変更。
理由はちょっと難しいので後で書く。

【回路図】
a0034780_21352761.jpg


【配線図】
a0034780_214030100.jpg


【Cプログラム】
main() {
unsigned char a[34]={0,2,6,2,6,0,4,2,6,0,5,0,5,0,5,0,
5,0,5,0,5,0,5,0,5,0,5,0,5,0,5,8,12,99};
int c,d,i;
unsigned char r;
int x=-1;int w;

clrscr();
outport(0x60,1);
outport(0x61,1);

do {

c=10;d=0;i=-1;
do {
outport(0x62,(a[i] & 0xFE);
if((a[i] & 1)!=0) {
r=inport(0x62);
if(c!=10) {
if(r==1)
d+=(1<<c);
if(c==0) {
w=(int)(d/8);
if(x!=w) {
gotoxy(0,3);printf("%d\n",d);
line(x+(x<w),0,w+(x>w),15,2,0xFFFF,2);
x=w;
}
}
}
c--;
}
} while(a[i++]!=99);
} while(1);
}
CDSを隠すと、グラフィックの棒グラフが伸びる方向に逆転した。
値は200台から800台で変化するように変わった。あれ?
なぜか調べるのに文字を(0,3)から表示する。
いやいや信号が逆転すると思ってr==1→0に修正したんだけど元に戻した。それにwを表示してたし。
気のせいでした。
a0034780_22255829.jpg


【マイコンとの配線例】
マイコンにRC用サーボモーターを繋げる場合の電源投入時における挙動様の図が、一般的なプルダウン抵抗の説明の図がスイッチを使っているのと違って、今回の場合と似ていて分かり易い。
a0034780_22564363.jpg

左のPortがMCP3002のDoutで出力。右のSignalがポケコンの4ピンで入力に相当。
この時どうやってプルアップ抵抗を付けるのが正しいか、不安だったのだが、こちらのサイト様と偶然同じだった事でこれでよかったんだと一安心。

【蛇足】
ついでにサイト様の一瞬動くというのは、たぶんステッピングモーターであってもHI→LOWになるとモーターがコイルに残っている磁力で逆電流を起こすから、Signalに入力ピンであるにもかかわらず、出力のような電流が流れるのだと思う。つまりI2Cの懸念でプルアップ抵抗に変更した理由と同じ。そしてプルアップであってもPortがLOWになっているという事は、PortがGNDにmicro controller内部で繋がっているという事(ここが私も忘れてしまうところ:重要)なので、その逆電流がPortに流れ込んでしまい、一瞬動くのだと思う。(HIならVCCもHIでSignalから来たHIはどこにもいかず抑え込まれる)
しかしLOWにしないわけにもいかないから、モータサイドで対策する必要がある。
またPortが出力(入力モードならたぶん内部で抵抗がかまされているはず)ピンでLOWになっていると抵抗なしでGNDに繋がっているはずなので、一瞬でもmicro controllerには5Vが直結する事になるので、やはりSignalのピンの直前に1kΩ程度の抵抗をかませた方がいい。(マニュアルは大事)
結局モータの逆電流に関してはモータのユニットの方でダイオードやコンデンサで逆流しないようにするほか無いけど、こういう検討も必要かな。I2Cで入力ピンを出力にもするなら4ピンも1kΩの抵抗が必要。
[PR]
by k1segawa | 2015-06-08 22:04 | ポケコン | Comments(0)