PICマイコンを使ってやりたい事はACモータの回転数をフィードバックしつつ可変抵抗で可変する事です。

前回までのおさらい→ミニ人工心肺の制作

picマイコンについておさらいはこちら

そうミニマム人工心肺装置を作成して遊ぶ事なんです。

 

それには透析装置を分解して搾取したポンプをPID制御しなければなりません。

 

自分なりに調べて夢を実現するには次のステップを踏まなければならない事が判明しました。

①PICマイコンを実際にうごかす
②PICマイコンでサーボモータを動かす(PWM制御を学ぶ)
③PICマイコンでLCDモニタを表示してみる(文字や制御値の確認の為必須)
④ミニ人工心肺装置を作成し遊ぶ→たのしい→ワインで乾杯

 

道のりは長いですが・・・まずはことを始める事から行います。

 

はじめはPICマイコンを実際に動かしてみる事が先決です。

 

使用するマイコンは入門者書籍によく登場するPIC16f84Aというマイコンです。

そしてプログラミングする言語はC言語

プログラミングするソフトはmplab x コンパイラはXC8

マイコンに書き込むハードは秋月電子のAKIプログラマーver4です。

 

回路図はこんな感じ

randamled

 

プログラムを載せておきます。

// PIC16F84A

// #include <xc.h>

// // // CONFIG // // // 

#pragma config FOSC = HS // 高周波発振 セラミック振動子をつかいますよー
#pragma config WDTE = OFF // ウォッチドックタイマはつかいませんよー
#pragma config PWRTE = OFF // パワーアップタイマーはつかいませんよー
#pragma config CP = OFF // こーどプロテクトもしませんよーというおまじない
#define _XTAL_FREQ 10000000 //マイコンが動くクロックを10mhzに設定しますよー

 

void main(void) {

スポンサードリンク

TRISB = 0; //RBポートをすべて出力としてつかいますよー
PORTB = 0; //とりあえず0を入れてクリアしときますよー

 

while(1){
//wile(x)はxが1なら永遠{ }でかこんだ処理をくりかえしますよ。
//wile(1)なんで有無を言わさず無限ループ

PORTB = 0b10000000; //RBはRB0-RB7まで8ポートあり、右はしからRB0-RB7とならんでます
//んでまずRB7を出力して
__delay_ms(20); //20msec待ちます
PORTB = 0b01000000; //順番に点灯させていきます。20msec毎にLEDが順番に光る
__delay_ms(20);
PORTB = 0b00100000;
__delay_ms(20);
PORTB = 0b00010000;
__delay_ms(20);
PORTB = 0b00001000;
__delay_ms(20);
PORTB = 0b00000100;
__delay_ms(20);
PORTB = 0b00000010;
__delay_ms(20);
PORTB = 0b00000001;
__delay_ms(20);
PORTB = 0b00000010;
__delay_ms(20);
PORTB = 0b00000100;
__delay_ms(20);
PORTB = 0b00001000;
__delay_ms(20);
PORTB = 0b00010000;
__delay_ms(20);
PORTB = 0b00100000;
__delay_ms(20);
PORTB = 0b01000000;
__delay_ms(20);
PORTB = 0b10000000;
__delay_ms(20);

}

return; //returnはお決まり文法

}

 

 

 

実際にはこんな感じでうごきました。

このあといろいろ点灯スピードや順番を変えて光らせるとすごく楽しい事に気がつきLEDピカピカもかなりおもろい印象をうけました。

 

 

これでLEDのかわりにAC電源のスイッチングに使える半導体リレー(SSRとか)なんかを使うと、センサーが反応すればAC電源で稼働する装置を動かせたりと夢が膨らみますね。

まぁあくまで私の目標・夢はACモーターのスピードコントロールを行いミニ人工心肺装置の作成する事です。

 

 

次回はサーボモータを動かすです。

乞うご期待。

スポンサードリンク