คำอธิบาย
EV Car BLDC Motor System learning Kit เป็น ชุดเรียนรู้ สำหรับแนวคิดทางวิศวกรรมผ่านการปฏิบัติแบบจำลอง ระบบขับเคลื่อนรถไฟฟ้าขนาดเล็ก เหมาะสำหรับนักเรียนในทุกระดับ ตั้งแต่ มัธยมศึกษา อาชีวศึกษาไปจนถึงระดับวิทยาลัย
- เรียนรู้และทำความเข้าใจแบบจำลองยานยนต์ไฟฟ้าการเพิ่มประสิทธิภาพของรถสมัยใหม่ด้วย มอเตอร์บีแอลดีซี
- เรียนรู้และทำความเข้าใจเทคโนโลยีขับเคลื่อน มอเตอร์บีแอลดีซี BLDC Motor
- เรียนรู้การหาเฟสของฮอลเซ็นเตอร์
- เรียนรู้การขับแบบ Six Step
- เรียนรู้การขับแบบ Sine Wave
- การคำนวณหาความเร็วรอบต่อนาที rpm
- การควบคุมความเร็วด้วย PI control
รายละเอียด BLDC Motor
- มอเตอร์ความเร็วสูงขนาดเล็ก BLDC micro DC brushless speed regulating motor 12V
- เส้นผ่าศูนย์กลางเพลา 3.175 mm
- แรงดันไฟฟ้า DC 12V
- ความยาวสายไฟ 270 mm
- ไดรฟ์โหมด ไดรฟ์ภายนอก Drive Mode External Drive
รายละเอียด Model Car
- Model Car Scale 1/10
- ระบบควบคุม Arduino + Kidbright
- ระบบขับเคลื่อน BLDC Motor
- ระบบควบคุมบังคับเลี้ยวล้อหน้า PWM RC Servo motor
มีอะไรเตรียมไว้ให้ในชุด
- แบบจำลองยานยนต์ไฟฟ้า EV จำนวน 1 ชุด
- บอร์ดพัฒนาการควบคุมมอเตอร์ไร้แปรงถ่าน จำนวน 1 ชุด
- บอร์ด Arduino Uno R3 จำนวน 1 ชุด
- แผงวงจรตรวจจับระยะทางด้วย อัลตร้าโซนิค Ultrasonic Sensor จำนวน 1 ชุด
- แบตเตอรี่ 1 ชุด
- ที่ชาร์จแบตเตอรี่ 1 ชุด
- กล่องเครื่องมือ 1 ชุด
- คู่มือการใช้งาน 1 ชุด
* ในชุดไม่รวมอุปกรณ์บอร์ด Kidbright
Source Code
- https://drive.google.com/drive/folders/161dWwvTeKdTd24P_D7QmXmPHeJEFYkCf?usp=sharing
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 |
const int Hall_A = 2; //PD2 อ่าน ฮอลล์เซนเซอร์ const int Hall_B = 3; //PD3 อ่าน ฮอลล์เซนเซอร์ const int Hall_C = 4; //PD4 อ่าน ฮอลล์เซนเซอร์ const int analogInPin = A5; // อ่านเป็น อนาลอก 0-1023 const int Direction_Pin = A4; // อ่านเป็น ดิจิตอล 0 , 1 int PWM_A =9; // PWMA pin 9 int PWM_B =5; // PWMA pin 5 int PWM_C =6; // PWMA pin 6 int EN_A = 8; // EN_A pin 9 int EN_B = 10; // EN_B pin 5 int EN_C = 11; // EN_C pin 6 byte HallPosition = 0; int outputValue = 0; int Hi = 255; int Lo = 0; //https://simple-circuit.com/arduino-cd-rom-brushless-motor-control/ void Forword(int PWM); void Backword(int PWM); // the setup function runs once when you press reset or power the board void setup() { // initialize digital pin 13 as an output. Serial.begin(9600); pinMode(13, OUTPUT); pinMode(Hall_A, INPUT); pinMode(Hall_B, INPUT); pinMode(Hall_C, INPUT); pinMode(EN_A, OUTPUT); pinMode(EN_B, OUTPUT); pinMode(EN_C, OUTPUT); digitalWrite(EN_A, LOW); //Disable digitalWrite(EN_B, LOW); //Disable digitalWrite(EN_C, LOW); //Disable //----------- Set PWM frequency for D9 TCCR1B = TCCR1B & B11111000 | B00000010; // set timer 1 divisor to 8 for PWM frequency of 3921.16 Hz //----------- Set PWM frequency for D5 & D6 TCCR0B = TCCR0B & B11111000 | B00000010; // set timer 0 divisor to 8 for PWM frequency of 7812.50 Hz } // the loop function runs over and over again forever void loop() { //CW 1-->3-->2-->6-->4-->5 Forword //CCW 5-->4-->6-->2-->3-->1 Backword HallPosition = digitalRead(Hall_A); HallPosition += digitalRead(Hall_B)<<1; HallPosition += digitalRead(Hall_C)<<2; //Serial.print("Hall = " ); //Serial.println(HallPosition); outputValue = map(analogRead(analogInPin), 0, 1023, 0, 200); //Serial.print("outputValue = " ); //Serial.println(outputValue); //delay(500); //outputValue = 60; if(analogRead(Direction_Pin) <= 512) { Forword(outputValue); } else { Backword(outputValue); } } void Forword(int PWM) { HallPosition = digitalRead(Hall_A); HallPosition += digitalRead(Hall_B)<<1; HallPosition += digitalRead(Hall_C)<<2; switch(HallPosition) { case 1: analogWrite(PWM_A, 0); //Low side ON digitalWrite(EN_A, HIGH); //Enable analogWrite(PWM_B, PWM); //High side PWM digitalWrite(EN_B, HIGH); //Enable analogWrite(PWM_C, 0); //***floting phase digitalWrite(EN_C, LOW); //***Disable break; case 3: analogWrite(PWM_A, 0); //Low side ON digitalWrite(EN_A, HIGH); //Enable analogWrite(PWM_B, 0); //***floting phase digitalWrite(EN_B, LOW); //***Disable analogWrite(PWM_C, PWM); //High side PWM digitalWrite(EN_C, HIGH); //Enable break; case 2: analogWrite(PWM_A, 0); //***floting phase digitalWrite(EN_A, LOW); //***Disable analogWrite(PWM_B, 0); //Low side ON digitalWrite(EN_B, HIGH); //Enable analogWrite(PWM_C, PWM); //High side PWM digitalWrite(EN_C, HIGH); //Enable break; case 6: analogWrite(PWM_A, PWM); //High side PWM digitalWrite(EN_A, HIGH); //Enable analogWrite(PWM_B, 0); //Low side ON digitalWrite(EN_B, HIGH); //Enable analogWrite(PWM_C, 0); //***floting phase digitalWrite(EN_C, LOW); //***Disable break; case 4: analogWrite(PWM_A, PWM); //High side PWM digitalWrite(EN_A, HIGH); //Enable analogWrite(PWM_B, 0); //***floting phase digitalWrite(EN_B, LOW); //***Disable analogWrite(PWM_C, 0); //Low side ON digitalWrite(EN_C, HIGH); //Enable break; case 5: analogWrite(PWM_A, 0); //***floting phase digitalWrite(EN_A, LOW); //***Disable analogWrite(PWM_B, PWM); //+++ High side PWM digitalWrite(EN_B, HIGH); //+++Enable analogWrite(PWM_C, 0); //---Low side ON digitalWrite(EN_C, HIGH); //---Enable break; } } void Backword(int PWM) { HallPosition = digitalRead(Hall_A); HallPosition += digitalRead(Hall_B)<<1; HallPosition += digitalRead(Hall_C)<<2; switch(HallPosition) { case 1: analogWrite(PWM_A, PWM); //Low side ON digitalWrite(EN_A, HIGH); //Enable analogWrite(PWM_B, 0); //High side PWM digitalWrite(EN_B, HIGH); //Enable analogWrite(PWM_C, 0); //***floting phase digitalWrite(EN_C, LOW); //***Disable break; case 3: analogWrite(PWM_A, PWM); //Low side ON digitalWrite(EN_A, HIGH); //Enable analogWrite(PWM_B, 0); //***floting phase digitalWrite(EN_B, LOW); //***Disable analogWrite(PWM_C, 0); //High side PWM digitalWrite(EN_C, HIGH); //Enable break; case 2: analogWrite(PWM_A, 0); //***floting phase digitalWrite(EN_A, LOW); //***Disable analogWrite(PWM_B, PWM); //Low side ON digitalWrite(EN_B, HIGH); //Enable analogWrite(PWM_C, 0); //High side PWM digitalWrite(EN_C, HIGH); //Enable break; case 6: analogWrite(PWM_A, 0); //High side PWM digitalWrite(EN_A, HIGH); //Enable analogWrite(PWM_B, PWM); //Low side ON digitalWrite(EN_B, HIGH); //Enable analogWrite(PWM_C, 0); //***floting phase digitalWrite(EN_C, LOW); //***Disable break; case 4: analogWrite(PWM_A, 0); //High side PWM digitalWrite(EN_A, HIGH); //Enable analogWrite(PWM_B, 0); //***floting phase digitalWrite(EN_B, LOW); //***Disable analogWrite(PWM_C, PWM); //Low side ON digitalWrite(EN_C, HIGH); //Enable break; case 5: analogWrite(PWM_A, 0); //***floting phase digitalWrite(EN_A, LOW); //***Disable analogWrite(PWM_B, 0); //+++ High side PWM digitalWrite(EN_B, HIGH); //+++Enable analogWrite(PWM_C, PWM); //---Low side ON digitalWrite(EN_C, HIGH); //---Enable break; } } |
รีวิว
ยังไม่มีบทวิจารณ์