Kです。今日は、いろいろテストしてみました。
1. 手持ちのフォトカプラTLP521の周波数特性を実測。5kHzくらいから使い物にならなかった。回路を工夫すれば解消されると思われる。
2. 先輩の作ったモータードライバーの解析。Hブリッジの電源部分をFETでPWM駆動していて、その部分にふぉとかぷらが1つ、またゲートにフォトカプラ2つが使われていた。PWMの入力部分と制御しているマイコンは同電位だった。
3. 同調回路の実験。手持ちのマイクロインダクターで同調回路を作った。555で矩形波を作って同調させたところ、15kHz (1mH, 1μF)では同調された。ただし、500Hzではできなかった。
4. ステッピングモーターを2相励磁式で動かしてみました。PICから4ポートで制御します。各端子を2SC1825(小信号用だけど使ってしまった)
のベースに1kΩを介して接続。エミッタはGNDにして、コレクタとステッピングモーターのφ1, 2, _1, _2と接続。φ1, φ2, φ_1, φ_2の順番で動かす1相励磁式及びφ1φ2, φ2φ_1, φ_1φ_2, φ_2φ1と動かす2相励磁式を試した。以下ソースだがただタイマで回しているだけ。
初めPR2 = 128でやってみたら、1.35Hzだったので、PR2 * 1.35して172にしたところ1Hz=60rpmで回転するようになった。実験したところPR2 = 64では回転できなかった。
トランジスタに小信号用を使っていたり、電源はMAX1Aのレギュレータだったりとひどいので実用を考えると改良が必要。オシロスコープでトランジスタのベースを調べると、-26Vくらいの瞬間的な電圧がかかっていた。(コイルだからな……)当然、逆起電力を短絡するためのダイオードで除去できた。
#include <xc.h>
#define _XTAL_FREQ 16000000
#pragma config WDTE = OFF
#pragma config FOSC = 4
#pragma config MCLRE = 1
#pragma config LVP = OFF
#pragma config PLLEN = OFF
void main(void){
OSCCON = 0b01101000;
PORTA = 0x00;
LATA = 0x00;
TRISA = 0b00000000;
ANSELA = 0b00000000;
PORTB = 0x00;
LATB = 0x00;
TRISB = 0b00000000;
ANSELB = 0b00000000;
T2CON = 0b00000110;
PR2 = 172;
TMR2IE = 1;
PEIE = 1;
GIE = 1;
while(1){
__delay_ms(1000);
LATA7 ^= 1;
}
}
void interrupt INTERRUPT(){
static char n1 = 0, n2 = 1, bn1, bn2;
if(TMR2IF){
LATA &= ~(0x01 << bn1); // bn1ビット目をクリア
LATA &= ~(0x01 << bn2); // bn2ビット目をクリア
LATA |= 0x01 << n1; // n1ビット目をセット
LATA |= 0x01 << n2; // n2ビット目をセット
bn1 = n1;
bn2 = n2;
n1++;
n2++;
if(n1 >= 4) {
n1 = 0;
}
if(n2 >= 4) {
n2 = 0;
}
TMR2IF = 0;
}
}
5. 初代ポケモンの「じてんしゃ」の曲が完成した。PICで作った矩形波によって再生される。
0 件のコメント:
コメントを投稿