วันอังคารที่ 28 มิถุนายน พ.ศ. 2565

IDEA#27 วิธีการวัดทรานซิสเตอร์ ด้วยมิเตอร์เข็ม ครบทุกเม็ด

 https://www.youtube.com/watch?v=ebahW2mOAMY


ศูนย์รวมอะไหล่เครื่องใช้ไฟฟ้า https://shp.ee/fr5e7rd


IDEA#27 วิธีการวัดทรานซิสเตอร์ ด้วยมิเตอร์เข็ม ครบทุกเม็ด

28/6/2565 SONGCHAI PRAPATRUNGSEE

 

 


วันอังคารที่ 21 มิถุนายน พ.ศ. 2565

IDEA#26 NCV3 วัดไฟไม่สัมผัสจากระยะไกล สนามไฟฟ้ามากวัดได้ไกล น้อยต้องวัดไกล้ น้อยมากวัดไม่ได้

 https://www.youtube.com/watch?v=LL1nmpKlK2E


ศูนย์รวมอะไหล่เครื่องใช้ไฟฟ้า https://shp.ee/fr5e7rd


IDEA#26 NCV3 วัดไฟไม่สัมผัสจากระยะไกล สนามไฟฟ้ามากวัดได้ไกล น้อยต้องวัดไกล้ น้อยมากวัดไม่ได้

21/6/2565 SONGCHAI PRAPATRUNGSEE

 

 


วันอาทิตย์ที่ 19 มิถุนายน พ.ศ. 2565

IDEA#25 สาเหตุ C คาปาซิเตอร์ระเบิด ต่อไฟกลับขั้ว ใช้ไฟเกินกว่าที่ระบุไว้ในตัวคาปาซิเตอร์ หรือ C

 https://www.youtube.com/watch?v=Gq_PG_Z-Ejc


แท่งหลักดินการไฟฟ้า240cm16mm https://shp.ee/j75gzvs


IDEA#25 สาเหตุ C คาปาซิเตอร์ระเบิด ต่อไฟกลับขั้ว ใช้ไฟเกินกว่าที่ระบุไว้ในตัวคาปาซิเตอร์ หรือ C

19/6/2565 SONGCHAI PRAPATRUNGSEE

 

 


วันเสาร์ที่ 18 มิถุนายน พ.ศ. 2565

IDEA#24 การต่อขนานคาปาซิเตอร์กับการต่ออนุกรมคาปาซิเตอร์เพื่อการใช้งาน ความต้านทานCมีผลต่อโวลท์

 https://www.youtube.com/watch?v=u8oU99d_R_0


ศูนย์รวมอะไหล่เครื่องใช้ไฟฟ้า https://shp.ee/fr5e7rd


IDEA#24 การต่อขนานคาปาซิเตอร์กับการต่ออนุกรมคาปาซิเตอร์เพื่อการใช้งาน ความต้านทานCมีผลต่อโวลท์

18/6/2565 SONGCHAI PRAPATRUNGSEE

 

 

 


วันพุธที่ 15 มิถุนายน พ.ศ. 2565

PJ#7 หุ่นยนต์ไม่ตกโตํะ+หลบสิ่งกีดขวาง 2ล้อ 2WD Smart Car Robot DIY Arduino Obstacle Avoiding Car At Home

 https://www.youtube.com/watch?v=6U1z-7IhzV0


Arduino https://shope.ee/flzWiiRYw


PJ#7 หุ่นยนต์ไม่ตกโตํะ+หลบสิ่งกีดขวาง 2ล้อ 2WD Smart Car Robot DIY Arduino Obstacle Avoiding Car At Home

15/6/2565 SONGCHAI PRAPATRUNGSEE

 

 

 #include <Servo.h> // 15/6/2022 songDIY


//ขา9ในProteus8 ทำPWMไม่ได้


#define maxSpeed 100 // sets speed of DC  motors

int speedSet = 90;//PWM speed of DC  motors 

int moveForwardL=0;

int moveBackwardL=0; 

int moveRightL=0; 

int moveLeftL=0; 


// Motor A

int motor1A = 5;

int motor1B = 4;

int speedMotor1 = 11; // ขา11ใช้ได้ ขา9ใช้ไม่ได้ในProteus8, PWM ควบคุมความเร็วมอเตอร์ 

// Motor B

int Motor2A = 3;

int Motor2B = 2;

int speedMotor2 = 6; // ขา6 PWM ควบคุมความเร็วมอเตอร์


Servo myservo; //ประกาศตัวแปรแทน Servo


//กำหนดขาและตัวแปร Ultrasonic

const int trigPin = 10;

const int echoPin = 8;

long duration;

int distance;


int irLeft=12;

int irRight=9;

int irL,irR;


void setup(){

  Serial.begin(9600);


  //กำหนดขาควบคุมการทำงานของ Motor ผ่านทาง L298N

  pinMode(motor1A,OUTPUT);

  pinMode(motor1B,OUTPUT);

  pinMode(speedMotor1,OUTPUT);

  pinMode(Motor2A,OUTPUT);

  pinMode(Motor2B,OUTPUT);

  pinMode(speedMotor2,OUTPUT);


  myservo.attach(7); // กำหนดขา7 ควบคุมServo

  myservo.write(40); 


  //กำหนดการทำงานของขา Ultrasonic 

  pinMode(trigPin, OUTPUT);

  pinMode(echoPin, INPUT);


  //กำหนดการทำงานของขา IR Infrared

  pinMode(irLeft, INPUT_PULLUP);

  pinMode(irRight, INPUT_PULLUP);

}


void loop (){

  int distanceR = 0;

 int distanceL =  0;

 delay(40);// ถ้าไม่delay40 จะไม่สามารถทำงานได้ในProteus8

  

 irL=digitalRead(irLeft);

 irR= digitalRead(irRight);

 

 if(irL==LOW&&irR==LOW){

   distance = readUltra();

 if(distance<=15){

  moveStop();

  delay(100);

  moveBackward();

  delay(900);

  moveStop();

  delay(100);

  distanceR = lookRight();

  distanceL = lookLeft();


  if(distanceR>=distanceL){

    moveRight();

    delay(900);

    moveStop();

  }else{

    moveLeft();

    delay(900);

    moveStop();

  }

 }else{

  moveForward();} 

 }

  

  if(irL==HIGH&&irR==HIGH){

  moveBackward();

  delay(900);

  moveRight();

  delay(900);

  moveForward();

  //delay(70000);

  

 }


  if(irL==HIGH&&irR==LOW){

  moveBackward();

  delay(900);

  moveLeft();

  delay(900);

  moveForward();

 }


  if(irL==LOW&&irR==HIGH){

  moveBackward();

  delay(900);

  moveRight();

  delay(900);

  moveForward();

 }    

}


//////////// Functinon //////////////////////////////////////////////////////////////////////////////////////////////////////////////

int readUltra(){

  digitalWrite(trigPin, LOW);

  delay(10);

  digitalWrite(trigPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(trigPin, LOW);

  duration = pulseIn(echoPin, HIGH);

  distance = duration * 0.0346 / 2;

  return distance;

  Serial.print("Distance: ");

  Serial.println(distance);

  delay(100);

}

int lookRight(){

    //myservo.write(40); 

    myservo.write(10); 

    delay(500);

    int distance = readUltra();

    //myservo.write(100); 

    myservo.write(40);

    delay(500);

    return distance;

}


int lookLeft(){

    //myservo.write(160); 

    myservo.write(70); 

    delay(500);

    int distance = readUltra();

    //myservo.write(100); 

    myservo.write(40); 

    delay(500);

    return distance;

}


void moveStop() {

// Motor 1

  analogWrite(speedMotor1, 0); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(motor1A, LOW);

  digitalWrite(motor1B, LOW);

// Motor 2

  analogWrite(speedMotor2, 0); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(Motor2A, LOW);

  digitalWrite(Motor2B, LOW);

  } 

  

void moveForward() {

//   moveBackwardL=0; 

//   moveRightL=0; 

//   moveLeftL=0; 

//   if(moveForwardL==0){

//   for (speedSet = 0; speedSet < maxSpeed; speedSet +=2) // slowly bring the speed up to avoid loading down the batteries too quickly

//   { 

// Motor 1

  analogWrite(speedMotor1, speedSet); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(motor1A, HIGH);

  digitalWrite(motor1B, LOW);

// Motor 2

  analogWrite(speedMotor2, speedSet); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(Motor2A, HIGH);

  digitalWrite(Motor2B, LOW);  

//   }

//   moveForwardL=1;

//}

}


void moveBackward() {

//   moveForwardL=0; 

//   moveRightL=0; 

//   moveLeftL=0; 

//   if(moveBackwardL==0){

//   for (speedSet = 0; speedSet < maxSpeed; speedSet +=2) // slowly bring the speed up to avoid loading down the batteries too quickly

//   { 

 // Motor 1

  analogWrite(speedMotor1, speedSet); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(motor1A, LOW);

  digitalWrite(motor1B, HIGH);

// Motor 2

  analogWrite(speedMotor2, speedSet); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(Motor2A, LOW);

  digitalWrite(Motor2B, HIGH); 

    //delay(5);

//   }

//   moveBackwardL=1;

 //}

}

  


void moveRight() {

//   moveForwardL=0; 

//   moveBackwardL=0;

//   moveLeftL=0; 

//   if(moveRightL==0){

//   for (speedSet = 0; speedSet < maxSpeed; speedSet +=2) // slowly bring the speed up to avoid loading down the batteries too quickly

//   { 

  // Motor 1

  analogWrite(speedMotor1, speedSet); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(motor1A, HIGH);

  digitalWrite(motor1B, LOW);

// Motor 2

  analogWrite(speedMotor2, speedSet); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(Motor2A, LOW);

  digitalWrite(Motor2B, HIGH);  

//   }

//   moveRightL=1;

//} 

 

void moveLeft() {

//   moveForwardL=0; 

//   moveBackwardL=0; 

//   moveRightL=0; 

//   if(moveLeftL==0){

//   for (speedSet = 0; speedSet < maxSpeed; speedSet +=2) // slowly bring the speed up to avoid loading down the batteries too quickly

//   { 

 // Motor 1

  analogWrite(speedMotor1, speedSet); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(motor1A, LOW);

  digitalWrite(motor1B, HIGH);

// Motor 2

  analogWrite(speedMotor2, speedSet); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(Motor2A, HIGH);

  digitalWrite(Motor2B, LOW);

//   }

//   moveLeftL=1;

//}

}  


วันอาทิตย์ที่ 12 มิถุนายน พ.ศ. 2565

วันพฤหัสบดีที่ 9 มิถุนายน พ.ศ. 2565

PJ#5 หุ่นยนต์หลบสิ่งกีดขวาง 2ล้อ 2WD Smart Car Robot DIY Arduino Obstacle Avoiding Car At Home

https://www.youtube.com/watch?v=-jQ1rAnhA88


Arduino https://shope.ee/flzWiiRYw


PJ#5 หุ่นยนต์หลบสิ่งกีดขวาง 2ล้อ 2WD Smart Car Robot DIY Arduino Obstacle Avoiding Car At Home

9/6/2565 SONGCHAI PRAPATRUNGSEE

 

 #include <Servo.h>


//ขา9ในProteus8 ทำPWMไม่ได้


#define maxSpeed 100 // sets speed of DC  motors

int speedSet = 0;//PWM speed of DC  motors 

int moveForwardL=0;

int moveBackwardL=0; 

int turnRightL=0; 

int turnLeftL=0; 


// Motor A

int motor1A = 5;

int motor1B = 4;

int speedMotor1 = 11; // ขา11ใช้ได้ ขา9ใช้ไม่ได้ในProteus8, PWM ควบคุมความเร็วมอเตอร์ 

// Motor B

int Motor2A = 3;

int Motor2B = 2;

int speedMotor2 = 6; // ขา6 PWM ควบคุมความเร็วมอเตอร์


Servo myservo; //ประกาศตัวแปรแทน Servo


//กำหนดขาและตัวแปร Ultrasonic

const int trigPin = 10;

const int echoPin = 8;

long duration;

int distance;


void setup(){

  Serial.begin(9600);


  //กำหนดขาควบคุมการทำงานของ Motor ผ่านทาง L298N

  pinMode(motor1A,OUTPUT);

  pinMode(motor1B,OUTPUT);

  pinMode(speedMotor1,OUTPUT);

  pinMode(Motor2A,OUTPUT);

  pinMode(Motor2B,OUTPUT);

  pinMode(speedMotor2,OUTPUT);


  myservo.attach(7); // กำหนดขา7 ควบคุมServo


  //กำหนดการทำงานของขา Ultrasonic 

  pinMode(trigPin, OUTPUT);

  pinMode(echoPin, INPUT);

}


void loop (){

 int distanceR = 0;

 int distanceL =  0;

 delay(40);// ถ้าไม่delay40 จะไม่สามารถทำงานได้ในProteus8


 distance = readUltra();

 if(distance<=15){

  moveStop();

  delay(100);

  moveBackward();

  delay(700);

  moveStop();

  delay(100);

  distanceR = lookRight();

  distanceL = lookLeft();


  if(distanceR>=distanceL){

    turnRight();

    delay(700);

    moveStop();

  }else{

    turnLeft();

    delay(700);

    moveStop();

  }

 }else{

  moveForward();}

}


//////////// Functinon //////////////////////////////////////////////////////////////////////////////////////////////////////////////

int readUltra(){

  digitalWrite(trigPin, LOW);

  delay(10);

  digitalWrite(trigPin, HIGH);

  delayMicroseconds(10);

  digitalWrite(trigPin, LOW);

  duration = pulseIn(echoPin, HIGH);

  distance = duration * 0.0346 / 2;

  return distance;

//  Serial.print("Distance: ");

//  Serial.println(distance);

//  delay(100);

}

int lookRight(){

    myservo.write(40); 

    delay(500);

    int distance = readUltra();

    myservo.write(100); 

    delay(500);

    return distance;

}


int lookLeft(){

    myservo.write(160); 

    delay(500);

    int distance = readUltra();

    myservo.write(100); 

    delay(500);

    return distance;

}


void moveStop() {

// Motor 1

  analogWrite(speedMotor1, 0); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(motor1A, LOW);

  digitalWrite(motor1B, LOW);

// Motor 2

  analogWrite(speedMotor2, 0); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(Motor2A, LOW);

  digitalWrite(Motor2B, LOW);

  } 

  

void moveForward() {

   moveBackwardL=0; 

   turnRightL=0; 

   turnLeftL=0; 

   if(moveForwardL==0){

   for (speedSet = 0; speedSet < maxSpeed; speedSet +=2) // slowly bring the speed up to avoid loading down the batteries too quickly

   { 

// Motor 1

  analogWrite(speedMotor1, speedSet); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(motor1A, HIGH);

  digitalWrite(motor1B, LOW);

// Motor 2

  analogWrite(speedMotor2, speedSet); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(Motor2A, HIGH);

  digitalWrite(Motor2B, LOW);  

   }

   moveForwardL=1;

}

}


void moveBackward() {

   moveForwardL=0; 

   turnRightL=0; 

   turnLeftL=0; 

   if(moveBackwardL==0){

   for (speedSet = 0; speedSet < maxSpeed; speedSet +=2) // slowly bring the speed up to avoid loading down the batteries too quickly

   { 

 // Motor 1

  analogWrite(speedMotor1, speedSet); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(motor1A, LOW);

  digitalWrite(motor1B, HIGH);

// Motor 2

  analogWrite(speedMotor2, speedSet); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(Motor2A, LOW);

  digitalWrite(Motor2B, HIGH); 

    delay(5);

   }

   moveBackwardL=1;

 }

}

  


void turnRight() {

   moveForwardL=0; 

   moveBackwardL=0;

   turnLeftL=0; 

   if(turnRightL==0){

   for (speedSet = 0; speedSet < maxSpeed; speedSet +=2) // slowly bring the speed up to avoid loading down the batteries too quickly

   { 

  // Motor 1

  analogWrite(speedMotor1, speedSet); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(motor1A, HIGH);

  digitalWrite(motor1B, LOW);

// Motor 2

  analogWrite(speedMotor2, speedSet); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(Motor2A, LOW);

  digitalWrite(Motor2B, HIGH);  

   }

   turnRightL=1;

 

void turnLeft() {

   moveForwardL=0; 

   moveBackwardL=0; 

   turnRightL=0; 

   if(turnLeftL==0){

   for (speedSet = 0; speedSet < maxSpeed; speedSet +=2) // slowly bring the speed up to avoid loading down the batteries too quickly

   { 

 // Motor 1

  analogWrite(speedMotor1, speedSet); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(motor1A, LOW);

  digitalWrite(motor1B, HIGH);

// Motor 2

  analogWrite(speedMotor2, speedSet); //ตั้งค่าความเร็ว PWM ผ่านตัวแปร ค่าต่ำลง มอเตอร์จะหมุนช้าลง

  digitalWrite(Motor2A, HIGH);

  digitalWrite(Motor2B, LOW);

   }

   turnLeftL=1;

}

}  

วันศุกร์ที่ 3 มิถุนายน พ.ศ. 2565

PJ#4 Gear Motor 3-6v ความลับที่หลายคนยังไม่รู้ การกินกระแส ถ้าโหลดหนักมากเท่าไร ก็ยิ่งกินกระแสมากขึ้้นเท่านััน

 https://www.youtube.com/watch?v=y4rkNSQn8w0


โค้ดส่งฟรีShopee https://shope.ee/2AZNXQLS68


PJ#4 Gear Motor 3-6v ความลับที่หลายคนยังไม่รู้  การกินกระแส ถ้าโหลดหนักมากเท่าไร ก็ยิ่งกินกระแสมากขึ้้นเท่านััน

3/6/2565 SONGCHAI PRAPATRUNGSEE