If you want to use BLDC with FUTABA without going backward, use it

Dependencies:   mbed Servo Pulse1

Committer:
kyucheol
Date:
Sat Dec 21 08:32:27 2019 +0000
Revision:
2:4e3761881124
Parent:
1:1e4ebe0da2ea
Child:
3:c47e538f3aec
Bldc adding

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kyucheol 0:b806d9855f21 1 #include "mbed.h"
kyucheol 0:b806d9855f21 2 #include "Servo.h"
kyucheol 0:b806d9855f21 3 #include "Map.h"
kyucheol 2:4e3761881124 4 #include "Pulse1.h"
kyucheol 0:b806d9855f21 5
kyucheol 0:b806d9855f21 6
kyucheol 0:b806d9855f21 7 PwmOut led_left(LED1); //확인용 LED1
kyucheol 0:b806d9855f21 8 PwmOut led_right(LED2); //확인용 LED2
kyucheol 0:b806d9855f21 9
kyucheol 0:b806d9855f21 10 Servo bldc_left(D12); // 왼쪽 BLDC
kyucheol 0:b806d9855f21 11 Servo bldc_right(PC_7); // 오른쪽 BLDC
kyucheol 0:b806d9855f21 12
kyucheol 2:4e3761881124 13 PulseInOut Channel1(A0); //채널1, futaba기준 좌우방향(오른쪽 조이스틱)
kyucheol 2:4e3761881124 14 PulseInOut Channel2(A1); //채널2, futaba기준 상하방향(오른쪽 조이스틱)
kyucheol 2:4e3761881124 15 PulseInOut Channel3(A2); //채널3, futaba기준 상하방향(왼쪽 조이스틱)
kyucheol 0:b806d9855f21 16
kyucheol 0:b806d9855f21 17 int main() {
kyucheol 0:b806d9855f21 18 bldc_left.write(0); // BLDC 초기 설정
kyucheol 0:b806d9855f21 19 bldc_right.write(0);
kyucheol 0:b806d9855f21 20
kyucheol 0:b806d9855f21 21 led_left = 1;
kyucheol 0:b806d9855f21 22 led_right=1;
kyucheol 0:b806d9855f21 23
kyucheol 0:b806d9855f21 24 wait(0.5);
kyucheol 0:b806d9855f21 25
kyucheol 0:b806d9855f21 26 bldc_left.write(1);
kyucheol 0:b806d9855f21 27 bldc_right.write(1);
kyucheol 0:b806d9855f21 28
kyucheol 0:b806d9855f21 29 led_left =0;
kyucheol 0:b806d9855f21 30 led_right=0;
kyucheol 0:b806d9855f21 31 wait(2);
kyucheol 0:b806d9855f21 32
kyucheol 0:b806d9855f21 33 bldc_left.write(0);
kyucheol 0:b806d9855f21 34 bldc_right.write(0);
kyucheol 0:b806d9855f21 35 wait(2);
kyucheol 0:b806d9855f21 36
kyucheol 2:4e3761881124 37 float raw1,raw2,raw3;
kyucheol 2:4e3761881124 38 float mod1,mod2,mod3,mod4,mod5;
kyucheol 0:b806d9855f21 39 printf("\nBLDC Setup & end\n");
kyucheol 0:b806d9855f21 40
kyucheol 0:b806d9855f21 41 while (1) {
kyucheol 0:b806d9855f21 42
kyucheol 2:4e3761881124 43
kyucheol 2:4e3761881124 44 raw1 = Channel1.read_high_us(30000);
kyucheol 2:4e3761881124 45 raw2 = Channel2.read_high_us(30000);
kyucheol 2:4e3761881124 46 raw3 = Channel3.read_high_us(30000);
kyucheol 0:b806d9855f21 47
kyucheol 0:b806d9855f21 48
kyucheol 2:4e3761881124 49 printf("raw1=%.0f mV\t", raw1);
kyucheol 2:4e3761881124 50 mod1 = map(raw1, 1450, 1000, 0, 100); // 후진
kyucheol 2:4e3761881124 51 mod2 = map(raw1, 1550, 2000, 0, 100); // 전진
kyucheol 0:b806d9855f21 52
kyucheol 0:b806d9855f21 53
kyucheol 0:b806d9855f21 54
kyucheol 2:4e3761881124 55 printf("raw2=%.0f mV\t", raw2);
kyucheol 2:4e3761881124 56 mod3 = map(raw2, 1450, 1000, 0, 100); // 좌회전
kyucheol 2:4e3761881124 57 mod4 = map(raw2, 1550, 2000, 0, 100); // 우회전
kyucheol 2:4e3761881124 58
kyucheol 2:4e3761881124 59 printf("raw3=%.0f mV\t", raw3);
kyucheol 2:4e3761881124 60 mod5 = map(raw3, 920, 2080, 0, 100);
kyucheol 2:4e3761881124 61
kyucheol 2:4e3761881124 62
kyucheol 2:4e3761881124 63 printf("mod1=%.0f mV\t", mod1);
kyucheol 2:4e3761881124 64 printf("mod2=%.0f mV\t", mod2);
kyucheol 2:4e3761881124 65 printf("mod3=%.0f mV\t", mod3);
kyucheol 2:4e3761881124 66 printf("mod4=%.0f mV\t", mod4);
kyucheol 2:4e3761881124 67 printf("mod5=%.0f mV\t", mod5);
kyucheol 0:b806d9855f21 68
kyucheol 0:b806d9855f21 69 mod1 = mod1/100;
kyucheol 0:b806d9855f21 70 mod2 = mod2/100;
kyucheol 2:4e3761881124 71 mod3 = mod3/100;
kyucheol 2:4e3761881124 72 mod4 = mod4/100;
kyucheol 2:4e3761881124 73 mod5 = mod5/100;
kyucheol 2:4e3761881124 74
kyucheol 2:4e3761881124 75 printf("measure1 = %f mV\t", mod1);
kyucheol 0:b806d9855f21 76 printf("measure2 = %f mV\t", mod2);
kyucheol 2:4e3761881124 77 printf("measure3 = %f mV\n", mod3);
kyucheol 2:4e3761881124 78 printf("measure4 = %f mV\n", mod4);
kyucheol 2:4e3761881124 79 printf("measure5 = %f mV\n", mod5);
kyucheol 2:4e3761881124 80
kyucheol 2:4e3761881124 81
kyucheol 2:4e3761881124 82 if(mod3 > 2) {
kyucheol 2:4e3761881124 83 mod4 = 0;
kyucheol 2:4e3761881124 84 }
kyucheol 2:4e3761881124 85
kyucheol 2:4e3761881124 86 if(mod4 > 2) {
kyucheol 2:4e3761881124 87 mod3 = 0;
kyucheol 2:4e3761881124 88 }
kyucheol 2:4e3761881124 89
kyucheol 2:4e3761881124 90
kyucheol 2:4e3761881124 91 float bldc_l, bldc_r;
kyucheol 2:4e3761881124 92 bldc_l = mod1 - mod3 + mod4;
kyucheol 2:4e3761881124 93 bldc_r = mod1 + mod3 - mod4;
kyucheol 2:4e3761881124 94
kyucheol 0:b806d9855f21 95
kyucheol 0:b806d9855f21 96 bldc_left.write(mod1);
kyucheol 0:b806d9855f21 97 bldc_right.write(mod2);
kyucheol 0:b806d9855f21 98
kyucheol 0:b806d9855f21 99
kyucheol 0:b806d9855f21 100 led_left.write(mod1);
kyucheol 0:b806d9855f21 101 led_right.write(mod2);
kyucheol 0:b806d9855f21 102 }
kyucheol 2:4e3761881124 103 }
kyucheol 2:4e3761881124 104