3.1 とりあえず使ってみる(DigitalIO)

Digital IOを使用する勉強をしてみましょう

mbedの不明な点が多い Digital IOはシュミットトリガなのか? Pullup抵抗は? などなど。。。

で、やっとhttp://ics.nxp.com/products/lpc1000/datasheet/lpc1763.lpc1764.lpc1765.lpc1766.lpc1767.lpc1768.lpc1769.pdfの45ページに下記のような一覧があった。

/media/uploads/yueee_yt/digitalio_1.jpg

これによると、ONになるのが0.7xVddでOFFになるのが0.3xVddなのでシュミットトリガで PullUPカレント(5V時で50μA)から プルアップ抵抗は100kΩと予測される。

これで、普通のタクトスイッチを使用したら、どれくらいチャタリングが起こるのだろうか、調べてみる。
プルアップモードにして接続すると回路が楽になる。なお1kΩの抵抗は設定を間違った時のためのものです

回路は、
/media/uploads/yueee_yt/digitalio_2.jpg

(実際には☆Board Orageにmbedが付いているのでこんな感じ)
/media/uploads/yueee_yt/imgp0351.jpg

回路図は
/media/uploads/yueee_yt/digitalio_3.jpg

プログラムはこちらからImportできます。http://mbed.org/users/yueee_yt/programs/chatte_test/lr0qh4

#include "mbed.h"
#include "TextLCD.h"

DigitalOut led(LED1);
DigitalIn  sw(p20);
TextLCD lcd(p24, p26, p27, p28, p29, p30);
Ticker timer;
int i=0;

void tick(void)
{
    lcd.cls();
    lcd.printf(" %d ",i);
    if(sw.read()==0)led=1; else led=0;
}

int main() {
    int ssw=1;
    sw.mode(PullUp);
    timer.attach(&tick, 0.1);
   
    while(1) {
        if(sw.read()==1){
            if(ssw==0){
                ssw=1;
            }
        }else{
            if(ssw==1){
                i++;
                ssw=0;
            }
        }
    }
}

結果は、多少チャタがあるみたいで、業務用としては厳しいみたいです。

誤接続用の抵抗と0.1μFのコンデンサで積分回路(時定数0.1ms)にする。
/media/uploads/yueee_yt/digitalio_4.jpg
/media/uploads/yueee_yt/digitalio_5.jpg
/media/uploads/yueee_yt/imgp0350.jpg

まともになりました。

ps.回路図はFritzingを用いて書いています。便利です。http://fritzing.org/


Please log in to post comments.