COUNTER



新BLOG
 
新BBS
MN-BBS
旧BBS
CALENDAR
S M T W T F S
          1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
<<  2024 - 11  >>
 
LOGIN
現在モード: ゲストモード
USER ID:
PASS:
CATEGORIES
ARCHIVES
PROFILE
OTHERS
    処理時間 0.300918秒
POWERED BY
POWERED BY
ぶろぐん
DESIGN BY
ブログンサポート
          
---「PIC」プログラミング再び (2)---
 PICのプログラムについて、少しずつ思い出してきました。

 とはいっても、完全にマスターなどしている訳ではないので、

 何年か前の水準にもどっただけです。

 今日は、PICで、ステッピングモーターのパルスを発生さて、

 中古のステッピングモーターを回してみました。

 UDK2120の取説には、必要なパルスの要件は、
 
 

 とありました。アセンブラでプログラムを組むと、命令に必要な

 クロック数から細かい設計もできるのでしょうが、Cからは、

 ちょと面倒で、私にはできません。ということで、実際にプログラム

 しては、動かしてみて、オシロデ確認して組みました。



 /******************************************
2014-10-15
PULSE SEISEI
********************************************/
#include <pic.h>

__CONFIG(UNPROTECT & LVPDIS & BOREN & MCLRDIS & PWRTEN & WDTDIS & INTIO);

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の早さで回るようです。

 

 これで、目的にまた一歩近づきました。Webはくしゅ

| mabo52 | 14:46 | comments (0) | trackback (0) | DIY::  -pic |

こんな物欲しいな
CLOCK
NEW ENTRIES
COMMENTS
    ---SPINDLEのPWM制御 (その2) (7)
  • TR >06.18
    ---番外編---
  • TR >06.02
    ---SPINDLEのPWM制御 (その2) (5)
  • mabo >05.30
保留中コメント:10件
LINKS
    相互リンクさせていただいてます。
  • The Rider
Search Box
名言集
メール
   
連絡は下記から
名前:

メールアドレス:

件名:

メッセージ(必須):


TOP PAGE