วันพุธที่ 21 พฤศจิกายน พ.ศ. 2561

ทฤษฎี สป.3

การใช้

Arduino เปิดปิดประตู 


ทฤษฎี​ สป.ที่3








       Servo เป็นมอเตอร์ทีสามารถ กำหนดองศาการหมุนได้อย่างแม่นยำ การใช้งานยกตัวอย่างเช่น
เครื่องบินบังคับ จะใช ้servo ในการควบคุมหลังเพื่อบังคับเลี้ยวหรือการเปลี่ยนเพดานบิน Servo มีทั้งแบบ หมุนได ้180 องศา และ 360 องศานั้นหมายถึง หมุนได ้1 รอบ Servo ใช ้สายไฟ 3 เส้นในการควบคุม สีนํ้าตาล เป็น สาย GND สีแดง เป็น VบCC และ สีเหลือง Signal Servo ขนาดเล็ก ใช้ไฟเลี้ยง 5 V สำหรับ สาย signal จะควบคุมดว้ ย PWM ﴾Pulse width modulation﴿ ใช้ความกว้างของสัญญาณนาฬิกา ในการสั่งงาน ให้หมุนไปในทิศทางองศา


ใน Arduino สังเกตที่ digital pin 0–13 ใน pin ที่ 9 10 และ 11 มีสัญลักษณ์ ~ หมายถึง pin นั้น สามารถ ส่งสัญญาณแบบ PWM ได ้ซึ่ง สามารถใช้ควบคุม servo ได ้
ใน Arduino มี library สำหรับควบคุม servo สำเร็จรูปอยู่แลว้ อยู่ใน Arduino IDE > File > Example > Servo
ขอยกตัวอย่างจาก Sweep ตัวไฟล์อยู่ใน Arduino IDE > File > Example > Servo > Sweep













#include <Servo.h>
Servo myservo; // create servo object to control a servo
// twelve servo objects can be created on most boards
int pos = 0; // variable to store the servo position
void setup() {
myservo.attach(9);
}
void loop() {
for (pos = 0; pos <= 180; pos += 1) { // goes from 0 degrees to 180 degrees
// in steps of 1 degree
myservo.write(pos); // tell servo to go to position in variable ‘pos’
delay(15); // waits 15ms for the servo to reach the position
}
for (pos = 180; pos >= 0; pos ‐= 1) { // goes from 180 degrees to 0 degrees
myservo.write(pos); // tell servo to go to position in variable ‘pos’
delay(15); // waits 15ms for the servo to reach the position
}
}
#include <Servo.h> คือการเรียกใช ้librarly เพื่อควบคุม servo ﴾การเขียนโค้ด ตัว พิมพ์เล็กกับพิมพ์ใหญ่ ไม่ใช่ตัวอักษรเดียวกัน﴿
Servo myservo; คือการประกาศตัวแปร ชื่อ myservo ซึ่งเป็นตัวแปรประเภท Servo จากใน librarly Servo.h
แค่ ตัว compiler ฉลาดพอทีจะเติมใหเ้ราอัตโนมัติ﴿
int pos = 0; ประกาศตัวแปรชื่อ pos มีค่าเท่ากับ 0 เป็นตัวแปรประเภท int
ในทีนี้การ setup สั่งใหตั้วแปร myservo attach pin 9 หรือก็คือ กำหนด pin ส่งสัญญาณ pwm เพื่อควบคุม servo เป็น pin 9 เมื่อ เราเรียกใช้myservo ครั้งต่อไป มันจะส่งสัญญาณออกไปที่ pin 9
อัตโนมัติ เราไม่จำเป็นต้อง attach ซ้ำๆถ้าในภาษา ของ network ก็คือการ binding
ใน loop มี for loop อยู่ รูปแบบของ for loop คือ ในทีนี้เรากำหนดให ้pos เป็น 0 เมื่อเริ่ม loop และ จะทำงานไปเรื่อยๆ เมื่อ pos มีค่าน้อยกว่า หรือเท่ากับ 180 ใน แต่ละครั้งทีทำงาน ค่าของ pos จะเพิ่มขึ้นทีละ 1 ใน loop
เราสั่งให้ myservo write ตัวแปร pos write คือการส่งสัญญาณ ออกไป ส่วนค่าทีสั่งออกไป คือ pos
มีค่าเป็น ตาม for loop ในครั้งแรก มีค่าเป็น 0 หมายถึง สั่งให้ servo หมุนไปตำแหน่ง 0 วนไปเรื่อยๆจนถึง 180
delay﴾15﴿; หมายถึงให้หยุดพัก 15 มิลลิ วินาที ก่อนทำงานต่อ ทีต้องมี delay เพราะบางครั้ง
โปรแกรมทำงานเร็วเกินไป จนอุปกรณ์ตัวอื่นตามไม่ทัน
for loop ที่ 2 คือการสั่ง ให้servo หมุนจาก 180 กลับไป ที่ 0 เหมือนเดิม

วันจันทร์ที่ 19 พฤศจิกายน พ.ศ. 2561

ทฤษฎี สป.2


 ควบคุมมอเตอร์ให้หมุนได้ทั้งซ้าย-ขวา
 โดยไม่ต้องการคุมความเร็วรอบ

ทฤษฎี​ สป.ที่2

16   17

มอเตอร์หมุนขวา   มอเตอร์หมุนซ้าย 
          จากวงจรนี้ เราจะเห็นได้ว่าในการจะควบคุมให้มอเตอร์หมุนไปกลับ หรือ ซ้าย-ขวา นั้นจะต้องใช้ Relay 2 ตัวในการควบคุม วิธีการต่อวงจรเป็นดังนี้ 
• นำขั้ว + ของมอเตอร์ต่อเข้ากับขา COM ของรีเลย์ตัวที่ 1
• นำขั้ว – ของมอเตอร์ต่อเข้ากับขา COM ของรีเลย์ตัวที่ 2
• นำขา NC ของรีเลย์ทั้ง 2 ตัว ต่อเข้ากับไฟลบ (GND)
• นำขา NO ของรีเลย์ทั้ง 2 ตัว ต่อเข้ากับไฟบวก (+5VDC)
วิธีต่อใช้งานจริงตามภาพด้านล่างนี้ โดยมีอุปกรณ์ดังนี้ Arduino + Relay Module + DC Motor

18
ภาพแสดงการต่อใช้งาน Arduino + Relay Module + Motor

19

           หลักการการทำงานคือ มีบอร์ด Arduino UNO R3 ในการรับข้อมูลจากคอมพิวเตอร์สื่อสารผ่านพอร์ต Serial แล้วนำค่าที่ได้ไปตรวจสอบว่าตรงกับค่าที่กำหนดไว้หรือไม่ ถ้าตรงกันก็สั่งให้ Relay ทำงานตามที่เราต้องการ  

ตัวอย่างโค้ดโปรแกรม
#define R 13 //กำหนดขาที่นำไปต่อกับรีเลย์
#define L 12
char test ; //สร้างตัวแปรไว้สำหรับรอรับข้อมูล
void setup() 
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
pinMode(R, OUTPUT); // กำหนดโหมดให้เป็น Output
pinMode(L, OUTPUT);
}
void loop() // run over and over
{
if (Serial.available()) // ตรวจสอบว่ามีข้อมูลเข้ามาหรือไม่
test = Serial.read();
else if (test == '1') // ถ้าข้อมูลที่เข้ามาคือ 1, 2, 3 ให้ทำงานตามที่กำหนด
{
digitalWrite(R, HIGH);
digitalWrite(L, LOW);
else if (test == '2')
{
digitalWrite(L, HIGH);
digitalWrite(R, LOW);
}
else if (test == '3')
{
digitalWrite(L, LOW);
digitalWrite(R, LOW);
}
}


ขั้นตอนการทดสอบ
1. ดาวน์โหลดโปรแกรมสำหรับส่งข้อมูลผ่าน Serial (ในบทความนี้ใช้โปรแกรม Terminal.exe
2. เปิดโปรแกรม Arduino นำโค้ดตัวอย่างด้านบน ไปรันและอัพโหลดไปยัง Arduino UNO R3
3. เปิดโปรแกรม Terminal.exe เลือก Com Port และกำหนดความเร็วในการรับส่งข้อมูล จากนั้นกดปุ่ม Connect 

20

4. ทำการส่งข้อมูลให้ Arduino โดยพิมพ์ข้อความลงในช่องด้านล่างของโปรแกรม
a. ข้อมูลที่กำหนดไว้คือ 1 = หมุนขวา, 2 = หมุนซ้าย, 3 = หยุดหมุน

อ้างอิง


ทฤษฎี สป.1



ควบคุมการปิด-เปิด
เครื่องใช้ไฟฟ้ากระแสสลับ 220 VAC 


ทฤษฎี​ สป.ที่1



วิธีการเชื่อมต่อ
สำหรับอุปกรณ์ที่ใช้ไฟฟ้ากระแสสลับ (AC)
• ต่อไฟเส้นที่ 1 จากแหล่งจ่ายไฟไปยังอุปกรณ์ที่ขั้วลบ (ถ้ามีแจ้งไว้ ถ้าไม่มีก็ใช้ขั้วใดก็ได้)
• ต่อไฟเส้นที่ 2 จากแหล่งจ่ายไฟเข้าขา NO ของรีเลย์
• ต่อสายจากขา COM ของรีเลย์ไปยังอุปกรณ์ไฟฟ้าขั้วที่เหลือ
สำหรับอุปกรณ์ที่ใช้ไฟฟ้ากระแสตรง (DC)
• ต่อไฟลบหรือ GND ไปยังอุปกณ์ไฟฟ้าเข้าที่ขั้วลบหรือ GND
• ต่อไฟบวกหรือ VCC ไปยังขา NO ของรีเลย์
• ต่อสายจากขา COM ของรีเลย์ไฟยังอุปกรณ์ไฟฟ้าที่ขั้วบวก


         ในการทดสอบนี้ เราจะใช้บอร์ดคอนโทรลเลอร์ Arduino UNO R3 หลักการการทำงานมีดังนี้ รับข้อมูลจากคอมพิวเตอร์สื่อสารผ่านพอร์ต Serial แล้วนำข้อมูลที่ได้ไปตรวจสอบว่าตรงกับค่าที่กำหนดไว้หรือไม่ ถ้าตรงก็สั่งให้รีเลย์ทำงานตามที่เราต้องการ

ตัวอย่างโค้ดโปรแกรม

#define Lamp1 12 //กำหนดขาที่นำไปต่อกับรีเลย์
char test ; //สร้างตัวแปรไว้สำหรับรองรับ
void setup() 
{
// Open serial communications and wait for port to open:
Serial.begin(9600);
pinMode(Lamp1, OUTPUT); //กำหนดโหมดให้เป็น Output
}
void loop() // run over and over
{
if (Serial.available()) // ตรวจสอบว่ามีข้อมูลเข้ามาหรือไม่
test = Serial.read();
else if (test == '1') //ถ้าข้อมูลที่เข้ามาคือ 1 , 3 ให้ทำงานตามที่กำหนด
{
digitalWrite(Lamp1, HIGH);
}
else if (test == '3')
{
digitalWrite(Lamp1, LOW);
}
}
ขั้นตอนการทดสอบ
1. ดาวน์โหลดโปรแกรมสำหรับส่งข้อมูลผ่าน Serial (ในบทความนี้ใช้โปรแกรม Terminal.exe
2. เปิดโปรแกรม Arduino นำโค้ดตัวอย่างด้านบนไปรันและอัพโหลดไปยัง Arduino UNO R3
3. เปิดโปรแกรม Terminal.exe เลือก Com Port และกำหนดความเร็วในการรับส่งข้อมูล จากนั้นกดปุ่ม Connect

24

4. ทำการส่งข้อมูลให้ Arduino โดยพิมพ์ข้อความลงในช่องด้านล่างของโปรแกรม
a. ข้อมูลที่กำหนดไว้คือ 1 = เปิดไฟ, 3 = ปิดไฟ

25

เเหล่งอ้างอิง

มินิโปรเจค

โปรเจค Arduino เปิด ปิดไฟ AC 220V ด้วยเสียง เปิดปิดไฟ AC 220V ด้วยเสียง          เรียนรู้วิธีควบคุม  Arduino  ด้วยเซ็นเซอร์เส...