2019.09.16 Open / 2019.09.23 Bug fix Ver. | |||||
1.ステッピングモータ制御用ファームウェアと出力波形 |
|||||
こんな波形の出力になります。 前回からの変更点は、ループの回数と遅延時間の改変だけです。ファームウェアは一番下にあります。良く解らないけど、こんな感じで組むと1/4回転するようです。が、再度チェックして最適化していかなければです。ソースコードは下のDown Loadにあります。どいう言う訳か、下記のコードで上手く1/4回転筒回ってくれます…有難いけど仕掛けが判らないのがどうも納得ゆきません。 |
|||||
Down Load | |||||
2.ステッピングモーターを駆動するための回路 |
|||||
16分割して制御しようとしましたが、どうも上手くないのでこの機能は使わないことにしました。なのでM51~M53ピンはGNDに落とします。 HR4989のモーターへの出力とモーター側のコードの接続を間違えていたので書き改めました。これでいい筈 |
|||||
回路を組んでの実験。ロジックアナライザに繋いで稼働実験しているところの画像 モーターはDC-DCでモバイルバッテリの5Vを昇圧し9Vで駆動している。 モバイルバッテリからは1.2Aの電流が流れ、2A対応のDC-DCとモーターは結構暑くなる |
|||||
|
|||||
1 /* 2 * File: main.c 3 * Author: M_shi@Lab of Voynich Code 4 * 5 * Createdon 2019/08/24, Modified 2019/09/22 6 */ 7 8 #include <pic.h> 9 #include <xc.h> 10 #include <stdlib.h> 11 #include <stdio.h> 12 13 #pragma config WDTE = OFF 14 #pragma config PWRTE = ON 15 #pragma config MCLRE = OFF 16 #pragma config CP = OFF 17 #pragma config CPD = OFF 18 #pragma config BOREN = OFF 19 #pragma config IESO = OFF 20 #pragma config FCMEN = OFF 21 #pragma config FOSC = INTOSCIO 22 #define _XTAL_FREQ 4000000 23 24 void main(void) { 25 26 staticint i, j, k; 27 28 TRISIO = 0b00001000; 29 ANSEL = 0b01100000; 30 WPU = 0b00001100; 31 CMCON0 = 0x07; 32 33 for(i = 13; i>= 1; i-=1) 34 { 35 for(k = 1; k <= 2; k++) 36 { 37 GP2 = 1; 38 for(j=0; j<i; j++){ 39 __delay_us(750); 40 } 41 __delay_ms(5); 42 GP2 = 0; 43 for(j=0; j<i; j++){ 44 __delay_us(750); 45 } 46 __delay_ms(5); 47 } 48 } 49 50 for(i = 12; i>= 1; i-=1) 51 { 52 for(k=1; k<=2;k++) 53 { 54 GP2 = 1; 55 for(j=0; j<13-i; j++){ 56 __delay_us(750); 57 } 58 __delay_ms(5); 59 GP2 = 0; 60 for(j=0; j<13-i; j++){ 61 __delay_us(750); 62 } 63 __delay_ms(5); 64 } 65 } 66 __delay_ms(500); 67 68 return; 69 } |
|||||